Это можно сделать без создания нового AMI и без запуска нового экземпляра. Когда это сделано, исходный корневой том остается подключенным к / dev / sda1 (или там, где он был первоначально подключен. / Dev / sda1 является значением по умолчанию для многих AMI). Исходный корневой том не будет подключен к файловой системе - вам придется сделать это самостоятельно с помощью команды «mount».
Для этой технологии требуются последние версии ядер Ubuntu, которые работают в своих выпусках 10.04 и 10.10. Проверьте alestic.com для самых последних идентификаторов AMI для этих выпусков Ubuntu. Эти последние ядра настроены для загрузки с любого подключенного устройства с меткой тома «uec-rootfs». Если вы используете одно из этих ядер, все, что вам нужно сделать, это изменить метку тома текущего корневого тома (хранилища экземпляров) на что-то другое, изменить метку тома нового корня на uec-rootfs, а затем перезагрузиться. Если вы не используете одно из этих ядер, вы не можете использовать эту технику.
Вот код. Поместите это в файл (reroot.sh) в экземпляре:
#! /bin/bash
device=$1
# change the filesystem labels
e2label /dev/sda1 old-uec-rootfs
e2label $device uec-rootfs
Сначала вы должны подключить том EBS, который вы хотите использовать в качестве нового root, к одному из доступных устройств /dev/sdf../dev/sdp. Это можно сделать либо с помощью прямых вызовов API EC2, с помощью инструментов API командной строки EC2 (ec2-attach-volume), либо с помощью библиотеки, такой как boto , либо через AWS Интерфейс консоли управления.
Затем запустите сценарий reroot.sh от имени пользователя root и укажите устройство, к которому вы подключили новый корневой том, следующим образом:
sudo reroot.sh /dev/sdp
Это сделает грязную работу. Затем вы просто перезагружаетесь:
sudo shutdown -r now
Viola.
Чтобы проверить это, вы должны создать том EBS, который, как вы знаете, будет загружаться правильно. Мне нравится делать это, делая снимок корневого тома поддерживаемых EBS AMI из вышеупомянутых AMI Ubuntu. Из этого снимка вы можете создать новый загрузочный том EBS в любой зоне доступности. Убедитесь, что вы можете определить разницу между исходным корневым томом работающего экземпляра и новым корневым томом EBS. Перед запуском описанной выше процедуры перезагрузки вы можете поместить файл «маркера» на старый корневой том:
cd
touch this-is-the-original-root-volume
Затем, когда вы перезагружаетесь и перезагружаетесь, если этот файл существует в вашем домашнем каталоге, вы все еще используете исходный корневой том. Если его там нет, то перезагрузка и перезагрузка сработали.
Вот два примера использования этого метода с подробными объяснениями:
http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html