
Ich habe mehrere KVM-VMs mit QCOW2-Images erstellt.
Jede VM hat ihre eigene qcow2-Datei und basiert nicht auf einer Sicherungsdatei.
Meine Frage bezieht sich speziell auf Snapshots von QCow2-Images auf diesen laufenden VMs.
Wenn ich den folgenden Befehl auf einer laufenden VM ausführe:
qemu-img snapshot -c backup /vms/vm10001.qcow2
Wird der obige Befehl das Dateisystem der laufenden VM beschädigen?
Meine Absicht ist es, den Snapshot dann mit dem Folgenden in ein qcow2-Image zu konvertieren:
qemu-img convert -s backup /vms/vm10001.qcow2 /vms/output.qcow2
Ich kann die "virsh"-Befehle nicht verwenden und versuche daher, einen Weg zu finden, meine Aufgabe mit qemu-img zu erledigen
Antwort / Update 1:
Ok, ich habe dies also auf mehreren meiner Test-VMs getestet und das oben genannte ist nicht möglich. Sie können es nicht qemu-img snapshot
auf einer Live-VM ausführen, ohne es anzuhalten.
Die einzige Möglichkeit, dies auf RHEL-Basisknoten zu tun, ist die Verwendung von:
virsh snapshot-create <dom>
Das Obige speichert den VM-Status und ruft dann intern auf qemu-img snapshot -c
. Dies kann jedoch einige Zeit dauern, was mich zu meiner zweiten Frage bringt
Frage 2 :
virsh snapshot-create <dom> --disk-only --atomic
wird auf Basisknoten vom Typ RHEL (einschließlich RHEL 7) nicht unterstützt, da qemu-kvm sehr alt ist.
Die einzige Option ist also die Verwendung von virsh snapshot-create <dom>
, was ziemlich langsam ist.
Ist es möglich, Folgendes zu tun:
virsh suspend <dom>
qemu-img snapshot -c backup /vms/<dom>.qcow2
virsh resume <dom>
Der obige Vorgang scheint viel schneller zu sein als Snapshot-Erstellen
Antwort / Update 2:
Auch die obige Frage 2 ist nicht möglich. Nach vielen Recherchen bin ich zu dem gleichen Schluss gekommen.
Frage 3 :
Gibt es eine Methode zum Erstellen eines Snapshots für eine Online-VM mit einer Qcow2-Festplatte auf einem RHEL 6/7-Basisknoten und zum anschließenden Sichern des Snapshots zur späteren Wiederherstellung?
Antwort1
Dies ist keine genaue Antwort, aber es zeigt Ihnen den Weg.
Wir verwenden Linux KVM schon seit langem. Früher unterstützte qcow2 keine Snapshots. In unserem ersten KVM-Host wollten wir keine LVM-Snapshots verwenden und konnten deshalb keine Live-Backups erstellen.
Dann fanden wirLinux Hot Copy Tools.
Mit diesem Tool konnten wir das gesamte Host-Dateisystem einfrieren und qcows mit einem benutzerdefinierten Backup-Skript auf externe Festplatten kopieren.
Unser Backup-Skript sah ungefähr so aus:
# Mount Usb
mount /dev/sdb1 /USBDISK
# Mount file system as ro to temp folder
hcp --read-only --mount-point /SNAPSHOT /dev/md1
# Copy files out
cp /SNAPSHOT/*.qcow2 /USBDISK
# Stop Hot Copy
hcp --remove /dev/hcp1
# Remove Usb
umount /USBDISK
Antwort2
meine Erfahrung mit KVM ist eigentlich ziemlich begrenzt, aber da ich in einer sehr ähnlichen Situation war, hat das hier bei mir funktioniert:
zuerst mache ich ein Backup der Konfiguration für die VM mit dem Namen MACHINE:
# virsh dumpxml MACHINE > /path/to/configfile.xml
Dann halte ich die VM mit dem Namen MACHINE an, um eine Beschädigung der neu erstellten Maschine zu verhindern:
# virsh suspend MACHINE
Als nächstes erstelle ich einen Snapshot namens MACHINE-BAK.qcow2 von der VM namens MACHINE mit dem Befehl qemu-img, auch wenn dieser normalerweise zur Konvertierung zwischen Formaten verwendet wird:
# qemu-img convert -O qcow2 /path/to/MACHINE.qcow2 /path/to/MACHINE-BAK.qcow2
Als nächstes nehme ich den normalen Betrieb für die ursprüngliche VM mit dem Namen MACHINE wieder auf:
# virsh resume MACHINE
Durch Anwenden dieser einfachen Schritte in einem Skript, das über die Crontab-Automatisierung ausgeführt wird, kann ich regelmäßig ein vollständiges Backup einer laufenden VM mit minimalen Ausfallzeiten erstellen (abhängig von der Größe der ursprünglichen VM, da es, wie oben erwähnt, besser ist, die ursprüngliche VM während der Duplizierung anzuhalten).