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


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

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

6 52

6 ответов:

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

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

dd bs=65536 if=/dev / sda1 of=/dev / sdd

  • Проверьте объем EBS на согласованность:

fsck / dev / sdd

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

гора /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 (они должны быть такими же, как и те, которые используются в вашем текущем экземпляре):

ЕС2-зарегистрироваться -с кнопк-12345 -это для i386 -д "описание АМИ" -Н "имя-образ" -к аки-12345 -Р Ари-12345

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

ec2-run-экземпляры ami-54321-t m1.малое-N 1 -г по умолчанию --в наличии-зоны=ЕС-Запад-1а -к ЕС2-ключ1 -Б на /dev/sda1, поскольку=оснастку 12345:20:ложь

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

resize2fs/dev / sda1

Это можно сделать без создания нового AMI и без запуска нового экземпляра. Когда это сделано, исходный корневой том остается прикрепленным к /dev / sda1 (или там, где он был первоначально установлен. /dev / sda1 является значением по умолчанию для многих масс). Исходный корневой том не будет подключен к файловой системе - вам нужно будет сделать это самостоятельно с помощью команды "mount".

метод требует последних ядер Ubuntu, те, которые работают в их выпусках 10.04 и 10.10. Проверять alestic.com для самых последних идентификаторов AMI для этих выпусков Ubuntu. Эти последние ядра настроены для загрузки с любого подключенного устройства, метка тома которого является "uec-rootfs". Если вы используете одно из этих ядер, все, что вам нужно сделать, это изменить метку тома текущего (instance-store) корневого Тома на что-то другое, изменить метку тома нового корня на uec-rootfs, а затем перезагрузить компьютер. Если вы не используете одно из этих ядер, вы не можете использовать это метод.

вот код. Поместите это в файл (reroot.sh) на примере:

#! /bin/bash
device=
# change the filesystem labels
e2label /dev/sda1 old-uec-rootfs
e2label $device uec-rootfs

сначала вы должны прикрепить том EBS, который вы хотите использовать в качестве нового корня, к одному из доступных устройств /dev/sdf../разработки/СДП. Это можно сделать либо с помощью прямых вызовов API EC2, либо с помощью инструменты API командной строки EC2 (ec2-attach-volume), или с библиотекой, такой как boto, или через интерфейс консоли управления AWS.

затем запустите reroot.sh сценарий как root и укажите устройство, на которое вы прикрепили новый корневой том, следующим образом:

sudo reroot.sh /dev/sdp

это будет делать грязную работу. Затем вы просто перезагрузитесь:

sudo shutdown -r now

Виола.

чтобы проверить это, вы должны создать том EBS, который, как вы знаете, будет загружаться правильно. Я хотел бы сделать это путем snapshotting корневой том EBS-backed AMIs из вышеупомянутых Ubuntu AMIs. На основе этого снимка можно создать новый загрузочный том EBS в любой зоне доступности. Убедитесь, что вы можете определить разницу между исходным корневым Томом запущенного экземпляра и новым корневым Томом EBS-перед запуском процедуры reroot выше вы можете поместить файл "маркер" на старый корневой том:

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

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

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

Я не уверен, насколько легко было бы конвертировать существующий экземпляр, но Amazon теперь предлагает возможность загрузки непосредственно с Тома EBS при создании нового экземпляра.

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

ec2-register --snapshot snap-9eb4ecf6 --architecture i386 --name " Zenoss Enterprise 3.0 beta 2 on centOS "--description " это из установки zenoss core beta 1 и zenoss enterprise beta 2, обе версии 3.0 (или внутренне 2.5.70 217). Было подключено устройство блока ebs, и файловая система rsynced, затем ebs была привязана, и это основано на этом."--root-device-name /dev / sda1 --ядро aki-9b00e5f2