Подтвердить что ты не робот

Amazon EC2 - устройство хранения экземпляров корневого каталога с устройством EBS

У меня есть экземпляр EC2 с устройством хранения экземпляра в качестве корневого устройства. Теперь я хотел бы добавить том EBS к тому же экземпляру, только чтобы я хотел это быть корневым устройством. Это возможно? Что произойдет с устройством хранения экземпляра в таком случае?

Заранее спасибо

4b9b3361

Ответ 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

  • Отключить громкость EBS:

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

Ответ 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