Amazon EC2: как преобразовать существующий PV AMI в HVM
Вопрос:
Как я должен использовать новые классы AW2 EC2 (r3, i2) с моим существующим AMI без воссоздания всей системы?
Новые классы EC2 поддерживают только виртуализацию на основе HVM, но у меня есть только изображения PMM AMI.
Ответы
Ответ 1
Ответ:
-
Запустите Ubuntu HVM linux, любую версию, новую
-
Запустите Ubuntu/с моим существующим потоком AMI/PVM и установите на них пакеты grub: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
-
Остановить PVM linux
-
Отсоедините раздел root (/dev/sda1) в PVM linux
-
Прикрепите корневой раздел Linux PVM к запуску HVM-Linux где-нибудь, например:/dev/sdf
-
В HVM linux: mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf
-
rsync -avzXA /boot/ /mnt/xvdf/boot/
-
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
-
chroot /mnt/xvdf
-
grub-install --no-floppy --recheck --force /dev/xvdf
-
update-grub2
-
exit chroot: CTRL + D
-
остановить HVM Linux
-
отсоединить/dev/sda1 исходный корень И отсоединить /dev/sdf корень PVM
-
присоединить PVM root к HVM linux как /dev/sda 1
-
Запустите HVM linux, voilà!
-
Создайте новый образ AMI из работающего HVM-Linux, он будет виртуализирован с использованием HVM.
Ответ 2
Ответ от @divyenduz работает, но нуждается в некоторой очистке и уточнении для современного (около 2019 года) AWS EC2. Важно отметить, что современные классы экземпляров переводят имя устройства по-разному.
Вот мои измененные шаги.
Для наглядности узлами являются:
- Исходный узел PVM, который вы хотите обновить до HVM - это "PVM01"
- Новый узел HVM, на который вы будете мигрировать корневой диск PVM01, называется "HVM01".
ПЕРЕД ОБРАБОТКОЙ: Резервное копирование оригинального узла PVM01
-
Установите необходимые компоненты на узле PVM01
-
Остановить узел PVM01
- Создать снимок /dev/sda1
- ИЛИ создать AMI всего узла
- Создайте снимок исходного корневого тома на PVM01 и создайте новый том из этого снимка
- Создать оснастку /dev/sda1 на PVM01
- Создать том из этой оснастки
- Маркируйте каждый ресурс соответственно
- Название тэга; Значение: pvm01: /dev/sda1: снимок для преобразования в hvm: 2019-07-01
- Так далее
- create-instance: новый экземпляр Ubuntu HVM "HVM01". Любой экземпляр класса должен работать; однако имя устройства может быть другим, см. примечания ниже
- Я использовал Bionic Ubuntu 18.04 HVM AMI ID ami-0a313d6098716f372 и экземпляр класса C5.XLARGE
-
Подключите корневой раздел PVM01 (новый том из предыдущего шага) к новому HVM01/dev/sdf
- ПРИМЕЧАНИЕ. Старые классы экземпляров, такие как C3, преобразуют имя тома в /dev/xvdf.
- ПРИМЕЧАНИЕ. Новые классы экземпляров, такие как C5, преобразуют имя тома в /dev/nvme1.
- В более новых классах экземпляров корневым томом будет /dev/nvme0 - ZERO
- В более новых классах экземпляров присоединенный вторичный том будет /dev/nvme1 - ONE
- Запишите имя подключенного тома устройства
ssh PVM01 sudo fdisk -l
-
На 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
-
Выход из chroot с помощью CTRL + D
- Стоп HVM01
- Отсоедините оба тома
- отключить /dev/nvme0 PVM01 root
- ПРИМЕЧАНИЕ. Это будет /dev/sda1 в классе экземпляра C3
- detach/dev/$ {DEVNAME} (скрипт DEVNAME из приведенного выше)
- присоедините корневой том PVM01 к HVM01 как /dev/sda1
- Еще раз, имя /dev/sda1 находится в консоли; это имя будет переведено в /dev/nvme0 или /dev/xvda1 в зависимости от того, насколько современным является класс экземпляра.
- Запустить HVM01
- ДОПОЛНИТЕЛЬНО: Создайте новый образ AMI из ныне работающего HVM01, он будет виртуализирован HVM.