2010-01-17 2 views
52

У меня есть экземпляр EC2 с устройством «хранилище экземпляров» в качестве корневого устройства. Теперь я хотел бы добавить том EBS к тому же экземпляру, , только то, что я хочу, чтобы было корневым устройством. Возможно ли это? Что произойдет с устройством хранения экземпляра в таком случае?Amazon EC2 - Хранилище экземпляров экземпляра экземпляра Swap с устройством EBS

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

ответ

78

Вы можете перенести свой исполняемый экземпляр в AMI с поддержкой EBS. Вот как я это сделал:

  • загрузки до регулярного S3 AMI резервная копия экземпляра (или так как вы уже получили экземпляр вы будете довольны, что использовать)
  • Сделать объем EBS одного и того же размера как ваш корневой раздел sda1 (в настоящее время по умолчанию 10G для m1.small и, возможно, других)
  • Прикрепите этот том EBS к свободному блочному устройству в экземпляре с помощью инструментов веб-консоли или командной строки (например,/dev/sdd)
  • Остановите службы на экземпляре (например, /etc/init.d/mysql stop и т. Д.)
  • Копирования эфемерного объема корневого к объему EBS:

дд шса = 65536, если =/DEV/sda1 из =/DEV/SDD

  • Проверьте громкость EBS для последовательности:

Fsck/DEV/SDD

  • Установите объем EBS на экземпляре:

монтирования/DEV/SDD/корень/ЕСБ-по объему

  • Удалить запись/MNT из Fstab на ваш номер EBS:

ВИМ/корень/EBS-т/и т.д./Fstab

  • Unmout объема EBS:

размонтировать/DEV/SDD

  • Создать снимок том EBS с использованием консоли управления AWS (или инструментов API командной строки)
  • Обратите внимание на t он снимок идентификатор
  • Зарегистрируйте изображение снимка с АМС и принять к сведению AMI ид производства, при регистрации не забудьте указать ядро ​​и RAMдиск изображение (они должны быть такими же, как те, которые используются в вашем текущем экземпляре):

ec2 регистра -s оснастке 12345 -a i386 -d "Описание АМИ" -n "имя-образа" -k аки-12345 -r ари-12345

  • Для создайте экземпляр с более чем 10G постоянным хранилищем, вы должны использовать инструменты cli. например для 20G

EC2-Заурядный экземпляры AMI-54321 -t m1.маленький -n 1 -g по умолчанию --availability-зона = ес-запад-1a -k ec2-key1 -b/DEV/sda1 = оснастке 12345: 20: ложные

  • Если при загрузке например, на основе одного из этих МАСС> размер тома по умолчанию, как только он запускается вы можете сделать онлайн изменение размера файловой системы:

resize2fs/Dev/sda1

+2

+1 хорошие инструкции, хотя я не думаю, что это то, что ОП хочет. – kdgregory

+1

Большое спасибо за исчерпывающий ответ. Это замечательно – Sug

+3

Мы в основном сделали то же самое, но использовали rsync с исключениями вместо dd, работали как обаяние. Еще одна вещь, о которой нужно заботиться (я знаю, что это очевидно, но это происходит снова и снова): при создании своего тома EBS убедитесь, что он дважды проверяет, что он находится в том же регионе, что и экземпляр, к которому вы хотите привязать его; -) –

0

Я не знаю, как легко было бы преобразовать существующий экземпляр, но Amazon теперь предлагает the ability to boot directly from an EBS volume при создании нового экземпляра.

6

вы можете также попробовать следующий инструмент для преобразования AMI экземпляра-хранилища в EBS-ботинки AMI: https://cloudyscripts.com/tool/show/2

+0

отличная работа над этим инструментом! – Andy

+0

согласился ... устрашающий инструмент – dbyrne

0

На месте другого длинного комментария здесь, я использовал следующую команду, чтобы сделать это:

ec2 регистром --snapshot оснастки 9eb4ecf6 --Парковую i386 - имя «Zenoss Enterprise 3.0 beta 2 on centOS» - описание «Это от установки бета-версии zenoss бета-1 и бета-версии zenoss Enterprise 2, как версии 3.0 (или внутренне 2.5.70 217). Блокированное устройство ebs было подключено, и файловая система была перечеркнута, затем была удалена ebs, и это было основано на этом ». --root-device-name/dev/sda1 --kernel aki-9b00e5f2

13

Это может быть сделано без создания нового 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

+1, и спасибо за то, что вы записали мой ответ ... он теперь удален. – kdgregory

Смежные вопросы