Назад | Перейти на главную страницу

Не удается подключиться к экземпляру 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 / 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, выполните следующие действия:

Резюме предварительных требований:

  1. Перед началом убедитесь, что на вашем экземпляре PV установлено следующее:

    $ sudo apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
    $ sudo apt-get install linux-aws
    
  2. Остановите экземпляр PV и Создать снимок его корневого объема, восстановить этот снимок в качестве нового тома EBS в той же зоне доступности источника (запустите экземпляр PV сразу после создания моментального снимка)
  3. Запустить новый экземпляр C5 HVM (пункт назначения) выбор Ubuntu Server 16.04 LTS (HVM) в той же зоне доступности исходного экземпляра (оставьте размер корневого тома EBS нового экземпляра равным 8 ГБ, так как этот корневой том будет использоваться только временно)
  4. После запуска экземпляра прикрепить том вы восстановили на шаге 1 (это корневой том из экземпляра PV) как /dev/sdf (в системе Ubuntu имя будет nvme1n1).
  5. Создайте новый (пустой) том EBS (того же размера, что и ваш корневой том PV «источника») и присоедините к экземпляру HVM как /dev/sdg (в системе Ubuntu имя будет nvme2n1)

Миграция:

После входа в свой экземпляр используйте sudo su для выполнения всех команд от имени пользователя root.

  1. Покажите свои объемы

    # 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)

  2. Создать новый раздел на nvme2n1 (nvme2n1p1 будет создан)

    # parted /dev/nvme2n1 --script 'mklabel msdos mkpart primary 1M -1s print quit'
    # partprobe /dev/nvme2n1
    # udevadm settle
    
  3. Проверьте «исходный» том и минимизируйте размер исходной файловой системы, чтобы ускорить процесс. Мы не хотим копировать свободное дисковое пространство на следующем этапе.

    # e2fsck -f /dev/nvme1n1 ; resize2fs -M /dev/nvme1n1
    
  4. Дубликат тома из источника в целевой

    # 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 "\\ ")
    
  5. Измените размер «целевого» тома на максимум:

    # e2fsck -f /dev/nvme2n1p1 && resize2fs /dev/nvme2n1p1
    
  6. Подготовьте целевой том:

    # mount /dev/nvme2n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
    
  7. chroot к новому тому

    # chroot /mnt/
    
  8. Переустановите grub на chrooted томе:

    # grub-install --recheck /dev/nvme2n1
    # update-grub
    

    Выйти из chroot

    # exit
    

    Выключите экземпляр

    # shutdown -h now
    
  9. После конвертации вам необходимо сделать следующее:

    Отсоедините 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.

  1. Выключите экземпляр, отсоедините тома и введите ту же конфигурацию, что и раньше. Присоедините том 8 ГБ как /dev/sda1/, и объем вашего конечного пункта назначения как /dev/sdf/. Запустите экземпляр и войдите в систему.

  2. 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
    
  3. Либо создайте, либо обновите файл:

    /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
    
  4. Выход chroot (exit), выключите экземпляр (shutdown -h now).

  5. Выполните шаг 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