Вопрос:
Как мне использовать новые классы AWS EC2 (r3, i2) с существующим AMI, не воссоздавая всю настройку системы?
Новые классы EC2 поддерживают только виртуализацию на основе HVM, но у меня есть только образы PVM AMI.
Как мне использовать новые классы AWS EC2 (r3, i2) с существующим AMI, не воссоздавая всю настройку системы?
Новые классы EC2 поддерживают только виртуализацию на основе HVM, но у меня есть только образы PVM AMI.
Ответы:
Запустите Ubuntu HVM linux, любую версию, новую
Запустите Ubuntu / с моим существующим AMI / PVM linux и установите на них пакеты grub: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
Остановить PVM linux
Отсоединить корневой раздел (/ dev / sda1) в PVM linux
Прикрепите корневой раздел PVM linux к где-нибудь запущенному 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
выйти из chroot: CTRL + D
остановить HVM Linux
отсоединить / dev / sda1 оригинальный корень И отсоединить / dev / sdf корень PVM
прикрепите корень PVM к HVM linux как / dev / sda1
Запустите HVM linux, вуаля!
Создайте новый образ AMI из запущенного HVM linux, он будет виртуализирован HVM.
warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. /usr/sbin/grub-bios-setup: error: will not proceed with blocklists.
Тогда все выглядит хорошо, но не загружается и не дает мне никаких подсказок, почему не загружается.
xvd*
на этих экземплярах, есть только nvme*
наименования. Замена xvd
на правильный nvme
не работает. :(
Ответ от @divyenduz работает, но требует некоторой очистки и разъяснения для современного (примерно 2019 г.) AWS EC2. Важно отметить, что современные классы экземпляров по-разному переводят имя устройства.
Вот мои измененные шаги.
Для наглядности узлами являются:
ПЕРЕД ПРОДОЛЖЕНИЕМ: сделайте резервную копию исходного узла PVM01
Установите необходимые компоненты на узле PVM01
установить пакеты grub на PVM01
apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
Остановить узел PVM01
Подключите корневой раздел PVM01 (новый том с предыдущего шага) к новому HVM01 / dev / sdf
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
DEVNAME
переменную после chroot
команды.