Это может быть сделано без создания нового 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 вы хотите, чтобы действовать в качестве нового корня к одному из доступных устройств /dev/sdf../dev/SDP. Это можно сделать либо с прямыми вызовами EC2 API, либо с помощью EC2 Command Line API tools (ec2-attach-volume), либо с библиотекой, такой как boto или с помощью интерфейса AWS Management Console.
Затем запустите скрипт reroot.sh как корень, и обеспечить устройство, которое придает новый объем корневой, следующим образом:
sudo reroot.sh /dev/sdp
Это будет делать грязную работу.Затем вы просто перезагружаетесь:
sudo shutdown -r now
Viola.
Чтобы проверить это, вы должны создать том EBS, который, как вы знаете, будет загружаться должным образом. Мне нравится делать это путем моментального снимка корневого объема поддерживаемых EBS AMI из вышеупомянутых AMI Ubuntu. Из этого моментального снимка вы можете создать новый загрузочный том EBS в любой зоне доступности. Убедитесь, что вы можете сказать, разницу между исходным объемом корневого запущенного экземпляром и новым корневым тома EBS - прежде чем запустить процедуру reroot выше вы можете поместить в файл «маркер» на старом корневого тома:
cd
touch this-is-the-original-root-volume
Затем, когда вы перезагружаетесь и перезагружаетесь, если этот файл существует в вашем домашнем каталоге, вы все еще работаете с исходным томом root. Если его там нет, то перезагрузка и перезагрузка работали.
Вот два случая пример использование этого метода, с тщательным объяснением:
http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html
+1 хорошие инструкции, хотя я не думаю, что это то, что ОП хочет. – kdgregory
Большое спасибо за исчерпывающий ответ. Это замечательно – Sug
Мы в основном сделали то же самое, но использовали rsync с исключениями вместо dd, работали как обаяние. Еще одна вещь, о которой нужно заботиться (я знаю, что это очевидно, но это происходит снова и снова): при создании своего тома EBS убедитесь, что он дважды проверяет, что он находится в том же регионе, что и экземпляр, к которому вы хотите привязать его; -) –