Amazon EC2 - устройство хранения экземпляров корневого каталога с устройством EBS
У меня есть экземпляр EC2 с устройством хранения экземпляра в качестве корневого устройства.
Теперь я хотел бы добавить том EBS к тому же экземпляру,
только чтобы я хотел это быть корневым устройством.
Это возможно?
Что произойдет с устройством хранения экземпляра в таком случае?
Заранее спасибо
Ответы
Ответ 1
Вы можете перенести свой исполняемый экземпляр в AMI с поддержкой EBS. Вот как я это сделал:
- Загрузите обычный экземпляр с поддержкой S3 AMI (или, поскольку у вас уже есть экземпляр, которым вы довольны, используйте это)
- Сделайте том EBS того же размера, что и ваш корневой раздел sda1 (в настоящее время по умолчанию 10G для m1.small и, возможно, других)
- Прикрепите этот том EBS к свободному блочному устройству в экземпляре с помощью инструментов веб-консоли или командной строки (например,/dev/sdd)
- Остановить службы в экземпляре (например,/etc/init.d/mysql stop и т.д.).
- Скопируйте эфемерный корневой том в том EBS:
dd bs = 65536 if =/dev/sda1 of =/dev/sdd
- Проверьте объем EBS для согласованности:
fsck/dev/sdd
- Установите том EBS в экземпляр:
mount/dev/sdd/root/ebs-vol
- Удалите запись /mnt из fstab в вашем EBS vol:
vim/root/ebs-vol/etc/fstab
umount/dev/sdd
- Создайте снимок тома EBS с помощью консоли управления AWS (или инструментов API командной строки).
- Обратите внимание на идентификатор моментального снимка
- Зарегистрируйте изображение моментального снимка с помощью AWS и обратите внимание на созданный идентификатор AMI, при регистрации не забудьте указать изображение ядра и ramdisk (они должны быть такими же, как и в вашем текущем экземпляре):
ec2-register -s snap-12345 -a i386 -d "Описание AMI" -n "имя-изображение" -k aki-12345 -r ari-12345
- Чтобы создать экземпляр с более чем 10G постоянным хранилищем, вы должны использовать инструменты cli. например для 20G
ec2-run-экземпляры ami-54321 -t m1.small -n 1 -g default --availability-zone = eu-west-1a -k ec2-key1 -b/dev/sda1 = snap-12345: 20 ложь
- Если вы загрузите экземпляр на основе одного из этих AMI s > размером тома по умолчанию, после его запуска вы можете выполнить онлайн-изменение файловой системы:
resize2fs/dev/sda1
Ответ 2
Это можно сделать без создания нового AMI и без запуска нового экземпляра. Когда это было сделано, исходный корневой том остается прикрепленным на /dev/sda 1 (или там, где он был первоначально смонтирован. /Dev/sda 1 по умолчанию используется для многих 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. Это можно сделать либо с помощью прямых вызовов API EC2, с помощью инструментов API командной строки EC2 (ec2-attach-volume), либо с помощью библиотеки, такой как boto или через пользовательский интерфейс консоли управления AWS.
Затем запустите reroot.sh script как пользователь 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
Ответ 3
Вы также можете попробовать следующий инструмент для преобразования AMI экземпляра-хранилища в AMI-загрузку ebs:
https://cloudyscripts.com/tool/show/2
Ответ 4
AlexM
придумал хорошие шаги.
Вам также будет интересно проверить эту ссылку:
http://coderslike.us/2009/12/07/amazon-ec2-boot-from-ebs-and-ami-conversion/
EDIT: Еще одна ссылка: http://www.elastician.com/2009/12/creating-ebs-backed-ami-from-s3-backed.html
Ответ 5
Я не уверен, насколько легко было бы преобразовать существующий экземпляр, но Amazon теперь предлагает возможность загрузки непосредственно из тома EBS при создании нового экземпляра.
Ответ 6
Вместо другого длинного комментария здесь я использовал следующую команду:
ec2-register --snapshot snap-9eb4ecf6 --architecture i386 - имя "Zenoss Enterprise 3.0 beta 2 on centOS" - описание "Это от установки бета-версии zenoss бета-1 и zenoss-бета-2, как из версия 3.0 (или внутренне 2.5.70 217). Было подключено блочное устройство ebs, и файловая система rsynced over, затем ebs была снята, и это основано на этом". --root-device-name/dev/sda1 --kernel aki-9b00e5f2