Aktualisieren
AWS hat diese Funktion in der EC2-API aktiviert. Es ist als --virtualization-type
Option für aws ec2 register-image
die neue Boto-basierte awscli verfügbar.
Ursprüngliche Antwort
Ja! Leider gibt es dafür keinen direkten Weg. Einige PV-Instanzen benötigen möglicherweise auch Änderungen am Kernel und am Bootloader.
- Erstellen Sie ein Volume aus Ihrem vorhandenen PV AMI. Wenn es Ihr eigener PV-AMI war, können Sie aus dem Schnappschuss ein Volume erstellen. Wenn es sich um ein AMI eines Drittanbieters handelt, müssen Sie eine Instanz starten und einen Snapshot erstellen.
- Starten Sie eine HVM-Instanz mit einem beliebigen AMI.
- Stoppen Sie diese HVM-Instanz.
- Trennen Sie das Root-Volume von dieser Instanz.
- Hängen Sie das PV-Volume als Root-Volume (/ dev / sda1 oder / dev / sda, falls es partitioniert wurde) an die HVM-Instanz an.
- Führen Sie
ec2-create-image
die HVM-Instanz aus.
- Starten Sie andere Instanzen mit Ihrem neuen HVM AMI.
Wenn dies nicht funktioniert, müssen Sie vor Schritt 5 dieses Volume an eine laufende Instanz anhängen, eine Chroot-Instanz einrichten und einen Kernel und einen Bootloader für Ihre Distribution installieren. Möglicherweise möchten Sie auch die Protokolle und den Cloud-Init-Cache löschen.
aws ec2 register-image
im Snapshot des PV-Images das Flag --virtualization-type ausführen. Sieheaws ec2 register-image help
für weitere Einzelheiten.aws ec2 register-image
. Dann habe ich eine neue HVM-Instanz von diesem Image gestartet. Das System bootet jedoch nicht.In meinem Fall musste ich die Konvertierung manuell durchführen, da die von mir erstellte Instanz
aws ec2 register-image
nicht gebootet wurde. Meine Lösung basiert auf diesem Beitrag im AWS EC2-Forum .Vorbereitung
SSH auf Ihre PV-Maschine, von der Sie migrieren möchten, und Anwenden aller Updates. Melden Sie sich dann ab.
Rufen Sie die AWS-Konsole auf und starten Sie eine neue HVM-Instanz, indem Sie dieselbe Basis-AMI auswählen, mit der die PV-Anlage erstellt wurde (in meinem Fall die 64-Bit-Linux-AMI von Amazon).
Stellen Sie für diese neue Instanz eine SSH-Verbindung her, und wenden Sie alle Updates an. Melden Sie sich dann ab.
Gehen Sie zur AWS-Konsole und stoppen Sie die PV-Instanz. Erstellen Sie einen Snapshot des Root-Geräts und erstellen Sie
SOURCE VOLUME
aus diesem Snapshot ein neues Volume ( ).Stoppen Sie die HVM-Instanz. Erstellen Sie einen Snapshot des Root-Geräts auf der neuen Instanz und erstellen Sie
TARGET VOLUME
aus diesem Snapshot ein neues Volume ( ).Verwenden der AWS-Konsole:
SOURCE VOLUME
An die neue Instanz anhängen als/dev/xvdf
.TARGET VOLUME
An die neue Instanz anhängen als/dev/xvdg
.Umwandlungsprozess
SSH auf die neue Instanz und Root-Zugriff erhalten:
Hängen Sie die Quell- und Ziellaufwerke ein.
Backup
/lib/modules/*
(Wenn der Kernel des PV ami vom neuen HVM-Rechner abweicht. Dieses Modul wird von einigen Diensten von AWS verwendet.)Löschen Sie alles außer
/boot
auf dem Zieldatenträger:Löschen Sie
/boot
auf dem Quellvolume:Kopieren Sie die Daten des Quellvolumes auf das Zielvolume, wobei alle Attribute erhalten bleiben:
Bearbeiten
/mnt/target/etc/fstab
für die/
Partition, so dass es die Referenzen ,TARGET VOLUME
wenn auf seinem endgültigen Standort in Schritt (8) montiert. Entweder mit einem Etikett oder einfach so:Dann wieder herstellen ,
/lib/modules/
die in Schritt 3 wurde gesichert (Wenn der Kern des PV ami unterscheidet sich von der neuen HVM - Maschine.)Stoppen Sie das System und trennen Sie alle Volumes über die AWS-Konsole. Hängen Sie die
TARGET VOLUME
auf der neuen Instanz als/dev/xvda
.Starten Sie Ihre HVM-Instanz. Es sollte nun eine exakte Kopie Ihrer PV-Anlage sein. Wenn alles in Ordnung ist, können Sie jetzt Ihre PV-Instanz und auch löschen
SOURCE VOLUME
.quelle
rm -f /boot
undcp -a /mnt/source/boot /mnt/target
?TLDR:
Detaillierte Schritte:
Weitere Antworten auf der Grundlage von Jeff Strunks Antwort zur Vereinfachung der Schritte und ein paar Details zum Bild des ec2-Registers:
Instanz mit PV Image erstellen. Nehmen Sie die gewünschten Änderungen vor bzw. aktualisieren Sie sie.
Erstellen Sie ein Image aus der obigen Instanz.
Suchen Sie unter EC2> Elastic Block Store> Snapshot in EC2 Console nach der von der obigen AMI verwendeten Snapshot-ID.
oder wenn du das ec2 api tools setup hast:
ec2-describe-images ami-id_of_above_created_ami
und finde die Schnappschuss-ID für den Ami
.. Annahmen für weitere Schritte: Ihre ec2-Schlüssel und API-Tools sind festgelegt und einsatzbereit:
Registrieren Sie eine neue HVM-AMI mithilfe des obigen Schnappschusses: Beispiel:
woher
Für mehr Informationen:
quelle
Sie können dies über die AWS-Weboberfläche tun. Navigieren Sie zu Schnappschüssen , klicken Sie auf den gewünschten Schnappschuss, den Sie in hvm konvertieren möchten, klicken Sie auf Aktionen und erstellen Sie dann ein Bild . Wählen Sie im Dropdown-Menü des Assistenten zum Erstellen von Images die Option HVM aus .
quelle
Nachdem ich alle Vorschläge ausprobiert hatte, von denen keiner für mich funktionierte, fand ich unter https://www.opswat.com/blog/aws-2015-why-you-need-switch- einen ausgezeichneten Blogeintrag zu diesem Thema. pv-hvm .
Die Elemente (Details) des Verfahrens sind:
Installation
grub
auf der zu migrierenden PV-Instanz (Quellinstanz).Erstellen Sie vorsorglich einen Snapshot des Root-Volumes auf der Quellinstanz (Quell-Volume, SV).
Erstellen Sie eine temporäre HVM-Instanz, die das Volume migriert.
Erstellen Sie ein Zielvolume (DV) und hängen Sie dieses und das SV an die temporäre Instanz an.
Der DV sollte mindestens so groß sein wie der SV.
Schließen Sie den SV als
/dev/{sd,xvd}f
und den DV als an/dev/{sd,xvd}g
.Partitionieren Sie die DV:
parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'
partprobe /dev/xvdg
udevadm settle
Ändern Sie die Größe des SV-FS
dd
auf die Mindestgröße und übertragen Sie das Bild auf den DV.Reinigen Sie den FS des Quellvolumes:
e2fsck -f /dev/xvdf
Minimieren Sie dasselbe:
resize2fs -M /dev/xvdf
Beobachten Sie die Ausgabe von resize2fs (z. B.
Resizing the file system on /dev/xvdf to 269020 (4k) blocks
) und notieren Sie sie für den nächsten Schritt.Dupliziere SV nach DV:
dd if=/dev/xvdf of=/dev/xvdg1 bs=<block size from previous step, here 4k> count=<use block count from last step, here 269020>
Erweitern Sie den FS auf der neuen Partition:
resize2fs /dev/xvdg1
grub
In den Bootblock des DV installierenErstellen Sie vorübergehend Gerätedateien auf dem DV:
mount /dev/xvdg1 /mnt; cp -a /dev/xvdg /dev/xvdg1 /mnt/dev/
Installieren Sie Grub-Dateien:
rm -f /mnt/boot/grub/*stage*
cp /mnt/usr/*/grub/*/*stage* /mnt/boot/grub/
rm -f /mnt/boot/grub/device.map
cat << ARNIE | chroot /mnt grub --batch
device (hd0) /dev/xvdg
root (hd0,0)
setup (hd0)
ARNIE
Nachdem Sie weitere geringfügige Änderungen am Zieldatenträger vorgenommen haben, rasten Sie den Datenträger ein und erstellen Sie daraus einen AMI.
Bereinigen Sie die temporären Gerätedateien:
rm -f /mnt/dev/xvdg /mnt/dev/xvdg1
In
/mnt/boot/grub/grub.conf
, ändernroot (hd0)
zuroot (hd0,0)
, fügen Sie (oder ersetzenconsole=*
)console=ttyS0
auf Kernel - Zeile und bei Bedarf ersetzenroot=*
mitroot=LABEL=/
der Kernel - ZeileStellen Sie
/mnt/etc/fstab
sicher, dass die Zeile des Root-FS eine beschriftete Referenz enthält, zLABEL=/ / ext4 defaults,noatime 1 1
Beschriften Sie den neuen Root-FS mit
e2label /dev/xvdg1 /
Hängen Sie DV von der temporären Instanz aus, und trennen Sie sowohl SV als auch DV von der temporären Instanz.
Schnapp die DV und erstelle daraus ein AMI-Image.
Starten Sie eine HVM-Instanz von diesem HMI aus. Das ist Ihre migrierte Instanz.
quelle