Frage:
Wie soll ich die neuen AWS EC2-Klassen (r3, i2) mit meinem vorhandenen AMI verwenden, ohne das gesamte System-Setup neu zu erstellen?
Die neuen EC2-Klassen unterstützen nur HVM-basierte Virtualisierung, aber ich habe nur PVM-AMI-Images.
Wie soll ich die neuen AWS EC2-Klassen (r3, i2) mit meinem vorhandenen AMI verwenden, ohne das gesamte System-Setup neu zu erstellen?
Die neuen EC2-Klassen unterstützen nur HVM-basierte Virtualisierung, aber ich habe nur PVM-AMI-Images.
Antworten:
Starten Sie ein Ubuntu HVM Linux, jede Version, neu
Starten Sie ein Ubuntu / mit meinem vorhandenen AMI / PVM-Linux und installieren Sie Grub-Pakete darauf: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
Stoppen Sie PVM Linux
Trennen Sie die Root-Partition (/ dev / sda1) unter PVM Linux
Hängen Sie die PVM-Linux-Root-Partition irgendwo an die Ausführung von HVM-Linux an, z. B.: / Dev / sdf
Unter 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 verlassen: STRG + D.
Stoppen Sie HVM Linux
Trennen Sie die ursprüngliche Wurzel von / dev / sda1 UND trennen Sie die PVM-Wurzel von / dev / sdf
Hängen Sie den PVM-Stamm als / dev / sda1 an HVM Linux an
Starten Sie HVM Linux, voilà!
Erstellen Sie ein neues AMI-Image unter dem laufenden HVM-Linux. Es wird HVM-virtualisiert.
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.
Dann sieht alles gut aus, aber es bootet nicht oder gibt mir keinen Hinweis, warum es nicht bootet.
xvd*
diesen Fällen gibt es keine , es gibt nur nvme*
Namenskonventionen. Das Ersetzen xvd
durch das richtige nvme
funktioniert nicht. :(
Die Antwort von @divyenduz funktioniert, muss jedoch für das moderne (ca. 2019) AWS EC2 bereinigt und geklärt werden. Wichtig ist, dass moderne Instanzklassen den Gerätenamen unterschiedlich übersetzen.
Hier sind meine geänderten Schritte.
Aus Gründen der Übersichtlichkeit sind die Knoten:
VOR DEM VERFAHREN: Sichern Sie den Originalknoten PVM01
Installieren Sie die Voraussetzungen auf dem Knoten PVM01
Installieren Sie Madenpakete auf PVM01
apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
Stoppen Sie den Knoten PVM01
Hängen Sie die PVM01-Root-Partition (neues Volume aus dem vorherigen Schritt) an die neue HVM01 / dev / sdf an
ssh PVM01 sudo fdisk -l
Auf 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
Beenden Sie chroot mit STRG + D.
DEVNAME
Variable nach dem chroot
Befehl neu zu erstellen .