Могу ли я изменить корневое устройство EBS моего экземпляра amazon EC2?

107

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

Я нахожу документацию только по изменению нескольких атрибутов блочных устройств, но, похоже, они не включают установку его в качестве корневого устройства.

конус
источник

Ответы:

191

Ага, это очень просто:

  1. Остановите экземпляр.
  2. Отсоедините корневой том EBS.
  3. Подключите альтернативный том EBS в качестве корневого: /dev/sda1
  4. Запустите экземпляр.

Это, конечно, предполагает, что ваш альтернативный том EBS является загрузочным - он должен содержать загрузочный образ ОС.

Восьмибитный гуру
источник
50
Ключ /dev/sda1действительно "как корень" !
Aseem Kishore
6
Спасибо, это здорово. Одна из проблем заключается в том, что DNS / IP может измениться, когда это произойдет, поэтому обязательно обновите все DNS / эластичные IP-адреса и так далее. Я потратил некоторое время, пытаясь понять, почему я больше не могу подключиться к нему по ssh, и это было причиной.
mrooney
14
Ни то, /dev/sdaни другое /dev/sda1у меня не работало, но работало /dev/xvda.
bhspencer
9
Блин, это было страшно. /dev/sda- не сработало. /dev/sda1, dev/sdf- сработало, но экземпляр не загрузился. /dev/xvdaработал.
Alex Fortuna
13
Имя, которое вы должны использовать, является результатом этой команды: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNameв моем случае/dev/xvda
Neoecos
44

У меня недостаточно репутации, чтобы добавить комментарий к выбранному ответу, но я хочу указать, что для меня /dev/sda1это не сработало (не было подключено как root), но с использованием /dev/xvdaсработало (прикреплено как root). Это один из новых экземпляров t2.micro, использующих HVM.

byl83
источник
Я думаю, что машины, которые находятся в VPC, сами по себе имена устройств формата / dev / xv * работают и вам не нужно давать имена в формате / dev / sd *. Это наблюдение - я не специалист, чтобы сказать это с уверенностью.
Mayank Jaiswal
У меня есть экземпляр, соответствующий этому описанию, который не может загрузиться («Невозможно найти корневое устройство») после отсоединения и повторного подключения корневого устройства. Я хочу попробовать этот ответ, но если я его не прикреплю, /dev/sda1AWS откажется запустить мой экземпляр. Есть ли какой-то другой параметр, который мне нужно настроить для использования альтернативного имени корневого устройства?
Джек О'Коннор,
/ dev / sda1 для Linux / dev / xvda для Windows
Луис
whoopse, убедитесь , чтобы определить раздел, / DEV / SDA 1 , /dev/sdaявляется недействительным , но /dev/sda1это нормально.
ThorSummoner
16

Чтобы подробнее рассказать о комментарии Диомидиса Спинеллиса в ветке комментариев принятого ответа, важно проверить метку файловой системы устройства, которое вы пытаетесь использовать в качестве нового корневого устройства. При устранении неполадок при миграции моего собственного сервера мне пришлось сделать следующее, прежде чем мой экземпляр загрузится:

Используйте e2labelкоманду, чтобы изменить метку файловой системы ext2 / ext3 / ext4, которую вы создали для своего нового корневого устройства.

Сначала проверьте метку файловой системы для вашего текущего корневого устройства.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Установите для нового устройства такую ​​же метку файловой системы.

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

В моем случае этикетка была cloudimg-rootfs. Иногда просто будет /.

Важно понимать, как работает e2label; проверьте man e2labelна своей машине или посетите http://linux.die.net/man/8/e2label для получения дополнительной информации.

Джоуи
источник
1
Это настолько невероятно важно, что я не могу понять, почему этот ответ не встречается чаще всего.
ays0110,
3

Это предлагаемое AWS решение. Вы можете отсоединить корневой том от исходного экземпляра после его остановки. Корневой том прикреплен к / dev / sda1. Как только он будет отсоединен, прикрепите его к новому экземпляру. После подключения тома его, возможно, придется смонтировать из ОС. После того, как он смонтирован, вы должны увидеть данные внутри него.

После того, как вы добавили новый ключ, вы можете отсоединить его и присоединить к исходному экземпляру в / dev / sda1.

Я предлагаю создать снимок корневого тома, прежде чем вносить какие-либо изменения.

Перед тем, как пробовать какие-либо решения, просто попробуйте в неважных случаях или в отдельных случаях

Юнус
источник
1

Если вы хотите сделать это через CloudFormation, вам нужно будет сделать следующее:

  1. Создать снимок из существующего корневого тома (через консоль или интерфейс командной строки)
  2. Создайте новый AMI из этого снимка - увеличьте здесь размер корневого тома, убедитесь, что вы выбрали правильное время виртуализации (паравиртуальный или HVM).
  3. На ресурсе AWS :: EC2 :: Instance установите параметр ImageId на новый AMI, который вы только что создали.

Разверните свой стек. Это воссоздает ваш экземпляр, поэтому убедитесь, что вы используете эластичный IP-адрес или имеете доступ к DNS.

Причина, по которой вы должны использовать этот обходной путь, заключается в том, что CF не позволяет вам настраивать размер корневого тома на EC2 BlockDeviceMappings или настраивать SnapshotId корневого тома.

Джо Аламо
источник
0

Когда ваш том смонтирован, он получает пост-исправление с номерами, например: когда /dev/sdaсмонтирован, он монтируется в /dev/sda1, /dev/sda2зависимости от созданных вами разделов. Поскольку мы монтируем само корневое устройство, предполагается, что устройство уже смонтировано, поэтому нам нужно указать/dev/sda1 для монтирования тома как корневое устройство. Примечание. Не должен быть прикреплен корневой том.

Выполните следующие действия: 1) Перейдите к своим томам, выберите присоединить тома из «Действие». 2) Выберите свой экземпляр 3) Для монтирования от имени пользователя root /dev/sda1 укажите имя устройства как 4) Запустите свой экземпляр.

Прашант
источник