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

Предварительные условия Резюме:

  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 на томе chroot:

    # 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 конфиг активирован, нет 50-cloud-init.cfg Конфигурационный файл

Если у вас уже есть файл /etc/network/interfaces.d/50-cloud-init.cfg, затем вы можете следить за обновлениями и обновлять файл, а не создавать новый. Также предположим, что все команды выполняются через sudo su,

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

  2. гора /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
Другие вопросы по тегам