Итак, прошло несколько дней, а я все еще не могу подключиться к моему новому экземпляру 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 / source / target disk, у меня был 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*
? Могу ли я предоставить какую-либо другую информацию или средства отладки, чтобы помочь разобраться в проблеме?
Я понимаю, что этот вопрос мало кто видел, но на всякий случай надеюсь, что мои результаты помогут кому-то в будущем (возможно, даже мне, когда я попытаюсь это сделать в следующий раз). Я хотел бы поблагодарить Стива Э. из службы поддержки 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
/dev/sdf
(в системе Ubuntu имя будет nvme1n1
)./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 на chrooted томе:
# grub-install --recheck /dev/nvme2n1
# update-grub
Выйти из chroot
# exit
Выключите экземпляр
# shutdown -h now
После конвертации вам необходимо сделать следующее:
Отсоедините 3 тома, которые у вас были ранее от экземпляра HVM. Прикрепите последний созданный том (пустой) как /dev/sda1
на консоли (ранее он был прикреплен как /dev/nvme2n1
) на экземпляре HVM. Запустите экземпляр HVM.
Теперь новый экземпляр HVM должен успешно загрузиться и будет точной копией старого исходного экземпляра PV (если вы использовали правильный исходный том). После того, как вы убедились, что все работает, исходный экземпляр можно закрыть.
Теперь описанные выше шаги будут работать для большинства людей здесь. Однако статус моего экземпляра все еще не был достигнут. Причина в том, что я обновил Ubuntu на своем экземпляре вместо того, чтобы начинать со свежего образа. Это оставило eth0
config активирован, нет 50-cloud-init.cfg
файл конфигурации.
Если у вас уже есть файл /etc/network/interfaces.d/50-cloud-init.cfg
, то вы можете следить и обновлять файл, а не создавать новый. Также предположим, что все команды запускаются через sudo su
.
Выключите экземпляр, отсоедините тома и введите ту же конфигурацию, что и раньше. Присоедините том 8 ГБ как /dev/sda1/
, и объем вашего конечного пункта назначения как /dev/sdf/
. Запустите экземпляр и войдите в систему.
Mount /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