Amazon EC2: как преобразовать существующий PV AMI в HVM

Вопрос:

Как мне использовать новые классы AWS EC2 (r3, i2) с моим существующим AMI без воссоздания всей системы?

Новые классы EC2 поддерживают только виртуализацию на основе HVM, но у меня есть только образы AMI PVM.

1 ответ

Ответ:

  1. Запустите Ubuntu HVM linux, любую версию, новую

  2. Запустите Ubuntu / с моим существующим AMI / PVM linux и установите на них пакеты grub: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists

  3. Стоп PVM Linux

  4. Отключить корневой раздел (/dev/sda1) в Linux PVM

  5. Присоедините корневой раздел PVM linux к запуску HVM linux, например: /dev/sdf

  6. На HVM Linux: mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf

  7. rsync -avzXA /boot/ /mnt/xvdf/boot/

  8. mount -o bind /dev /mnt/xvdf/dev && mount -o bind /dev/pts /mnt/xvdf/dev/pts && mount -o bind /proc /mnt/xvdf/proc && mount -o bind /sys /mnt/xvdf/sys

  9. chroot /mnt/xvdf

  10. grub-install --no-floppy --recheck --force /dev/xvdf

  11. update-grub2

  12. выходной chroot: CTRL+D

  13. остановить HVM Linux

  14. отсоединить / dev / sda1 исходный корень И отсоединить / dev / sdf корень PVM

  15. присоединить корень PVM к HVM linux как / dev / sda1

  16. Запустите HVM Linux, вуаля!

  17. Создайте новый образ AMI из запущенного Linux HVM, он будет виртуализирован HVM.

Ответ от @divyenduz работает, но требует некоторой очистки и разъяснения для современного (примерно 2019 г.) AWS EC2. Важно отметить, что современные классы экземпляров по-разному переводят имя устройства.

Вот мои измененные шаги.

Для наглядности узлами являются:

  • Исходный узел PVM, который вы хотите обновить до HVM, - "PVM01".
  • Новый узел HVM, на который вы перенесете корневой диск PVM01, будет "HVM01".

ПЕРЕД ПРОДОЛЖЕНИЕМ: сделайте резервную копию исходного узла PVM01

  1. Установите необходимые компоненты на узле PVM01

    • установить пакеты grub на PVM01

      apt-get install  grub-pc  grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
      
  2. Остановить узел PVM01

    • Создать снимок / dev / sda1
    • ИЛИ создать AMI всего узла
  3. Создайте снимок исходного корневого тома на PVM01 и создайте новый том из этого снимка
    • Создайте привязку / dev / sda1 на PVM01
    • Создать объем из этой оснастки
    • Обозначьте каждый ресурс соответствующим образом
      • Название тэга; Значение: pvm01:/dev/sda1: снимок-для-преобразования-в-hvm:2019-07-01
      • Так далее
  4. create-instance: новый экземпляр Ubuntu HVM "HVM01". Любой экземплярный класс должен работать; однако имя устройства может быть другим, см. примечания ниже
    • Я использовал Bionic Ubuntu 18.04 HVM AMI ID ami-0a313d6098716f372 и класс экземпляра C5.XLARGE
  5. Подключите корневой раздел PVM01 (новый том с предыдущего шага) к новому HVM01 /dev/sdf

    • ПРИМЕЧАНИЕ. Более старые классы экземпляров, такие как C3, преобразуют имя тома в /dev/xvdf.
    • ПРИМЕЧАНИЕ. Новые классы экземпляров, такие как C5, преобразуют имя тома в / dev / nvme1.
      • В более новых классах экземпляров корневой том будет / dev / nvme0 - ZERO
      • В более новых классах экземпляров прикрепленный вторичный том будет / dev / nvme1 - ONE
    • Запишите имя подключенного тома.

    ssh PVM01 sudo fdisk -l

  6. На HVM01:

    # For xvdf, e.g. on C3.XLARGE
    DEVNAME=xvdf1
    # For nvme, e.g. on C5.XLARGE
    DEVNAME=nvme1n1
    mkdir -p /mnt/${DEVNAME} && mount /dev/${DEVNAME} /mnt/${DEVNAME}
    rsync -avzXA /boot/ /mnt/${DEVNAME}/boot/
    mount -o bind /dev /mnt/${DEVNAME}/dev && mount -o bind /dev/pts /mnt/${DEVNAME}/dev/pts && mount -o bind /proc /mnt/${DEVNAME}/proc && mount -o bind /sys /mnt/${DEVNAME}/sys
    chroot /mnt/${DEVNAME}
    grub-install --no-floppy --recheck --force /dev/${DEVNAME}
    update-grub2
    
  7. Выйдите из chroot с помощью CTRL+D

  8. Остановить HVM01
  9. Отсоедините оба тома
    • отсоединить / dev / nvme0 корень PVM01
      • ПРИМЕЧАНИЕ. Это будет / dev / sda1 в классе экземпляра C3.
    • отсоединить /dev/${DEVNAME} (DEVNAME из приведенного выше скрипта)
  10. прикрепите корневой том PVM01 к HVM01 как / dev / sda1
    • И снова имя / dev / sda1 находится в консоли; это имя будет переведено в / dev / nvme0 или /dev/xvda1 в зависимости от того, насколько современен класс экземпляра
  11. Запустить HVM01
  12. ДОПОЛНИТЕЛЬНО: Создайте новый образ AMI из уже запущенного HVM01, он будет виртуализирован HVM.
Другие вопросы по тегам