Не удается подключиться к экземпляру EC2 после преобразования Ubuntu 16 PV в Ubuntu 16 HVM
Прошло несколько дней, и я до сих пор не могу подключиться к моему новому экземпляру HVM с EC2 под управлением Ubuntu 16. Для справки я пытаюсь обновить наш сервер с экземпляра m3, на котором работает Ubuntu 16, до экземпляра C5, на котором работает Ubuntu 16. Для Почти каждый метод, который я попробовал, позволяет мне остановить мой новый экземпляр C5, отсоединить все тома и присоединить только что обновленный исходный том как /dev/sda1
, но потом, когда я иду, чтобы подключиться к экземпляру, я всегда заканчиваю тайм-аут. Проверка состояния Amazon также не проходит, так как он говорит, что экземпляр недоступен. Тем не менее, системный журнал не показывает проблем при запуске.
Я пытался сделать все в этом посте. Я тоже попробовал этот пост. Я посмотрел на других сайтах, и дал это и это попробовать. Я даже попробовал как метод инструментов командной строки ec2, так и преобразование AMI из консоли ec2 (онлайн), однако я либо не могу запустить экземпляр C5 с преобразованным AMI, либо экземпляр остановится и завершится ошибкой (в случае преобразование через командную строку).
Единственное, о чем я могу подумать - это соглашение об именах разделов в экземпляре C5. Каждый гид, который я видел, использует xvda/xvdf/xvdg
, Я могу ошибаться, но у меня нет этих разделов или дисков, а вместо этого nvme0n1
, nvme0n1p1
(новый корень HVM), nvme1n1
, а также nvme1n1p1
, Когда я попробовал метод HVM / исходный / целевой диск, у меня было nvme0n1/nvme0n1p1
, nvme1n1
(цель - где все должно закончиться), и nvme2n1/nvme2n1p1
(источник - откуда все, на м3). Я нашел этот пост Amazon о nvme, так что я не думаю, что это должно быть проблемой, так как я просто использую правильный диск / раздел при использовании /mnt/
т.е. Я звоню mkdir -p /mnt/target && mount /dev/nvme1n1 /mnt/target
вместо mkdir -p /mnt/target && mount /dev/xvdf /mnt/target
, но пока ничего не получалось. Мой экземпляр становится недоступным, когда я прикрепляю target
как /dev/sda1
,
Итак, есть ли что-то, что я упускаю при выполнении этого с диском с именем nvme*
? Могу ли я предоставить какую-либо другую информацию или информацию для отладки, чтобы помочь понять проблему?
2 ответа
Я понимаю, что этот вопрос не был замечен очень, но на всякий случай, я надеюсь, что мои результаты могут помочь кому-то в будущем (возможно, даже мне, в следующий раз, когда я попытаюсь это сделать). Я хотел бы поблагодарить Стива Э. из службы поддержки Amazon за помощь в переносе моего экземпляра <3
В любом случае при переносе экземпляра Ubuntu 16.04 M3 (PV) на экземпляр Ubuntu 16.04 C5 (HVM) возникли 2 проблемы. Первая проблема заключалась в том, что новые экземпляры C5 действительно используют новые соглашения об именах, поэтому другие учебные пособия по миграции PV на HVM работают не совсем так. Другая проблема заключалась в том, что мой экземпляр M3 (PV) был обновлен до Ubuntu. Я действительно ушел из Ubuntu 12 -> Ubuntu 14 -> Ubuntu 16 в прошлом году или около того. Это вызвало проблему, при которой не создавались файлы облачной сети, и поэтому мой экземпляр не был доступен.
В любом случае для переноса экземпляра Ubuntu 16.04 PV в экземпляр HVM с использованием нового соглашения об именах nvme выполните следующие действия:
Предварительные условия Резюме:
Перед началом убедитесь, что на вашем экземпляре PV установлено следующее:
$ sudo apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists $ sudo apt-get install linux-aws
- Остановите экземпляр PV и создайте снимок его корневого тома, восстановите этот снимок как новый том EBS в той же зоне доступности источника (запустите экземпляр PV сразу после создания снимка)
- Запустите новый экземпляр C5 HVM (пункт назначения), выбрав Ubuntu Server 16.04 LTS (HVM) в той же зоне доступности исходного экземпляра (оставьте размер нового тома EBS нового экземпляра на уровне 8 ГБ, поскольку этот корневой том будет использоваться только временно)
- После запуска экземпляра присоедините том, который вы восстановили на шаге 1 (это корневой том из экземпляра PV), как
/dev/sdf
(в системе Ubuntu имя будетnvme1n1
). - Создайте новый (пустой) том EBS (такого же размера, как ваш "исходный" корневой том PV) и присоедините его к экземпляру HVM как
/dev/sdg
(в системе Ubuntu имя будетnvme2n1
)
Миграция:
Зайдя в свой экземпляр, используйте sudo su
выполнить все команды от имени пользователя root.
Покажите ваши объемы
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 8G 0 disk └─nvme0n1p1 259:1 0 8G 0 part / nvme1n1 259:2 0 100G 0 disk nvme2n1 259:3 0 100G 0 disk
nvme0n1
это корень HVM, который вы только что создали (просто для загрузки на этот раз)nvme1n1
восстановлен корень PV (будет преобразован в HVM)nvme2n1
пустой том (получит преобразование из корня PV какnvme1n1
)Создать новый раздел на
nvme2n1
(nvme2n1p1
будет создан)# parted /dev/nvme2n1 --script 'mklabel msdos mkpart primary 1M -1s print quit' # partprobe /dev/nvme2n1 # udevadm settle
Проверьте объем "источника" и уменьшите размер исходной файловой системы, чтобы ускорить процесс. Мы не хотим копировать свободное место на следующем шаге.
# e2fsck -f /dev/nvme1n1 ; resize2fs -M /dev/nvme1n1
Дублируйте том "источник" в том "место назначения"
# dd if=/dev/nvme1n1 of=/dev/nvme2n1p1 bs=$(blockdev --getbsz /dev/nvme1n1) conv=sparse count=$(dumpe2fs /dev/nvme1n1 | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")
Измените громкость "назначения" до максимума:
# e2fsck -f /dev/nvme2n1p1 && resize2fs /dev/nvme2n1p1
Подготовьте целевой объем:
# mount /dev/nvme2n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
chroot
на новый том# chroot /mnt/
Переустановите grub на томе chroot:
# grub-install --recheck /dev/nvme2n1 # update-grub
Выход из
chroot
# exit
Выключите экземпляр
# shutdown -h now
После конвертации вам теперь нужно сделать это:
Отсоедините 3 тома, которые у вас были ранее в экземпляре HVM. Прикрепите последний созданный вами том (пустой) как
/dev/sda1
на консоли (он был ранее прикреплен как/dev/nvme2n1
) в экземпляре HVM. Запустите экземпляр HVM.
Новый экземпляр HVM должен теперь успешно загрузиться и будет точной копией старого исходного экземпляра PV (если вы использовали правильный исходный том). Как только вы подтвердите, что все работает, исходный экземпляр может быть прерван.
Обновление конфигурации сети (необязательно)
Теперь вышеперечисленные шаги будут работать для большинства людей здесь. Однако, мой статус экземпляра все еще не был достигнут. Причина в том, что я обновил Ubuntu в своем экземпляре, вместо того, чтобы начинать с нового образа. Это оставило eth0
конфиг активирован, нет 50-cloud-init.cfg
Конфигурационный файл
Если у вас уже есть файл /etc/network/interfaces.d/50-cloud-init.cfg
, затем вы можете следить за обновлениями и обновлять файл, а не создавать новый. Также предположим, что все команды выполняются через sudo su
,
Завершите работу экземпляра, отсоедините тома и введите ту же конфигурацию, что и раньше. Прикрепите том 8 ГБ как
/dev/sda1/
и ваш конечный объем назначения как/dev/sdf/
, Запустите экземпляр и войдите в систему.гора
/dev/sdf
, который теперь должен бытьnvme1n1p1
сделав следующее:# mount /dev/nvme1n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
Либо создайте или обновите файл:
/etc/network/interfaces.d/50-cloud-init.cfg
Со следующим:
# This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} auto lo iface lo inet loopback auto ens5 iface ens5 inet dhcp
Выход
chroot
(exit
), закройте экземпляр (shutdown -h now
).Выполните шаг 9 из ранее!
Вы должны быть сделаны!
Спасибо, подсказка для конфигурации сети сработала в случае обновления ( Ubuntu 14.04 PV до Ubuntu 18.04 PV) . Преобразован модернизированный Ubuntu 18.04 PV в Ubuntu 18.04 HVM с небольшим изменением конфигурации сети. Создан новый /etc/netplan/50-cloud-init.config со следующей конфигурацией
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
all-eth:
match:
name: "eth*"
dhcp4: true