Contents
- Warum QEMU-VMs sichern?
- Sicherungsmethoden für QEMU
- Vollständige Sicherung
- Inkrementelle Sicherung
- Differenzielle Sicherung
- Wie richtet man in QEMU inkrementelle Backups ein?
- Erstellen des ersten Backup-Jobs
- Verwenden von Libvirt zur Verwaltung von Sicherungsvorgängen
- Schritt-für-Schritt-Anleitung zum Erstellen einer neuen inkrementellen Sicherung
- Was sind QMP-Befehle für inkrementelle Sicherungen?
- Einführung in grundlegende QMP-Befehle
- So erstellen Sie eine neue inkrementelle Sicherung mit QMP
- Backing-Images und Bitmaps verstehen
- Häufige Probleme und Fehlerbehebung bei inkrementellen QEMU-Sicherungen
- „Bitmap nicht gefunden“
- „Berechtigung verweigert“
- „Gerät ist gesperrt“
- Beschädigte Sicherungsketten
- Inkonsistente Anwendungszustände
- Speicherplatzmangel
- „Image not in qcow2 format“
- Sicherungsmethoden für laufende QEMU-VMs
- QEMU-Backup-APIs und Integrationswerkzeuge
- Wesentliche Funktionen einer QEMU-Backup-Lösung
- Wie sichert man QEMU mit Bacula?
- Häufig gestellte Fragen
- Welche verschiedenen Methoden gibt es zum Sichern einer virtuellen QEMU-Maschine?
- Ist es möglich, eine laufende virtuelle QEMU-Maschine ohne Ausfallzeiten zu sichern?
- Welche Rolle spielt die QEMU-Snapshot-Funktion in Backup-Lösungen?
Warum QEMU-VMs sichern?
Virtuelle Maschinen sind das Rückgrat fast jeder modernen IT-Infrastruktur, und QEMU-basierte VMs sind eine beliebte Wahl in virtuellen Umgebungen. Die Erstellung ordnungsgemäßer Sicherungen dieser virtuellen Umgebungen ist nicht nur eine Empfehlung, sondern in der Regel ein erforderlicher Bestandteil jedes ordnungsgemäßen Plans zur Geschäftskontinuität und Notfallwiederherstellung. Ordnungsgemäß gepflegte Sicherungen werden zum Sicherheitsnetz eines Unternehmens, wenn dessen Hardware ausfällt (und es gibt keine unfehlbare Hardware).
Virtuelle Umgebungen bieten gegenüber physischer Hardware einzigartige Vorteile bei der Erstellung effizienter und konsistenter Sicherungen. QEMU selbst ist ein kostenloser Open-Source-Emulator, der dynamische Binärübersetzung verwendet, um den Prozessor eines Computers zu emulieren. QEMU kann eine Vielzahl von Computerarchitekturen emulieren, Gastbetriebssysteme ausführen und sogar viele verschiedene Hardwareoptionen unterstützen. Darüber hinaus lässt sich QEMU problemlos als Geräteemulations-Backend oder Hypervisor für VMs einsetzen, was es für eine Vielzahl von Anwendern sehr attraktiv macht.
QEMU-VMs enthalten angepasste Betriebssysteme, kritische Anwendungsdaten und wertvolle Konfigurationen. Der Verlust einer solchen Umgebung bedeutet in der Regel den Verlust von Stunden oder Tagen an Einrichtungs- und Konfigurationsarbeit und kann darüber hinaus zu Störungen des Geschäftsbetriebs, des Kundendienstes und möglicherweise noch schlimmeren Folgen führen. Daher sollten diese Informationen geschützt werden, und Sicherungen gelten oft als eine der zuverlässigsten und vielseitigsten Möglichkeiten, dies zu erreichen.
Die meisten Rahmenwerke zur Einhaltung gesetzlicher Vorschriften verlangen mittlerweile Sicherungen, einschließlich spezifischer Aufbewahrungsvorschriften. Hinzu kommt, dass Sicherungen auch vor Ransomware-Angriffen schützen können, sodass die Bedeutung dieses Themas leicht zu erkennen ist.
Die Investition in geeignete VM-Sicherungsstrategien zahlt sich in vielerlei Hinsicht aus: reduzierte Ausfallzeiten, verbesserte Geschäftskontinuität und die allgemeine Gewissheit, dass Ihre Daten nach praktisch jedem möglichen Ausfall wiederhergestellt werden können. Die offene Architektur von QEMU macht Sicherungsstrategien außerdem flexibler, sodass sowohl einfache dateibasierte Ansätze als auch komplexe inkrementelle Lösungen verwendet werden können. In diesem Artikel werden QEMU-Sicherungen untersucht und verschiedene Methoden, Einrichtungsprozesse und potenzielle Best Practices vorgestellt.
Sicherungsmethoden für QEMU
Es gibt verschiedene Arten von Sicherungen, die zum Schutz virtueller QEMU-Maschinen verwendet werden können, wobei jeder Ansatz seine eigenen Vor- und Nachteile hat. Die effektivste Sicherungs- und Wiederherstellungslösung für eine bestimmte Situation hängt unter anderem von den Leistungs- und Sicherheitsanforderungen, den Richtlinien und den Speicherbeschränkungen des Unternehmens ab, sodass es unrealistisch ist, eine Sicherungslösung zu finden, die in jeder Situation die beste ist.
Im Folgenden werden die wichtigsten Sicherungsstrategien vorgestellt, die sich in QEMU-Umgebungen bewährt haben.
Vollständige Sicherung
Vollständige Sicherungen sollten alle Informationen an einem bestimmten Ort auf einmal erfassen, d. h. die gesamte virtuelle Festplatte mit allen Konfigurationsdateien und anderen damit verbundenen VM-Informationen. Mit anderen Worten: Eine vollständige Sicherung erstellt eine vollständige und in sich geschlossene Kopie einer VM, die sich ohne weitere Sicherungsdatensätze leicht wiederherstellen lässt.
Die Kombination aus Einfachheit und Wiederherstellungsgeschwindigkeit ist zweifellos der größte Vorteil von vollständigen Sicherungen. Eine vollständige Sicherung macht es überflüssig, mehrere Sicherungskomponenten zusammenzufügen, um Informationen im Katastrophenfall wiederherzustellen: Sie können einfach die vollständige Sicherung wiederherstellen und Ihre Geschäftsaufgaben fortsetzen. Diese Methode eignet sich besonders zum Schutz der kritischsten VMs in der Umgebung, in der die Kosten für Ausfallzeiten deutlich höher sind als die Kosten für die Speicherung.
Allerdings erfordern vollständige Backups einen erheblichen Speicherplatz und eine hohe Netzwerkbandbreite. Außerdem besteht die Gefahr, dass Informationen aufgrund der mangelnden Granularität vollständiger Backups mehrfach dupliziert werden, was sie noch speichereffizienter macht. Daher sind vollständige Backups als einzige Strategie für Umgebungen mit begrenzter Speicherkapazität und generell für große VMs ungeeignet.
Inkrementelle Sicherung
Inkrementelle Backups können als „Mittelweg“ der Backup-Methodik betrachtet werden. Nach Abschluss eines vollständigen Backups erfassen alle nachfolgenden inkrementellen Backups nur die Informationen, die seit dem letzten Backup (unabhängig vom Typ) geändert wurden. Auf diese Weise werden Backups sowohl deutlich speichereffizienter als auch exponentiell schneller als vollständige Backups.
Der inkrementelle Sicherungsansatz von QEMU verwendet „Block Device Dirty Tracking“ über Bitmaps, um zu überwachen, welche Blöcke seit der letzten Sicherung geändert wurden. Dieser Mechanismus trägt dazu bei, die Auswirkungen der Sicherung auf die Systemleistung zu minimieren und gleichzeitig eine Kette von verwaltbaren Sicherungsdateien zu erstellen, die den vollständigen Zustand der VM darstellen.
Allerdings werden die Vorteile inkrementeller Sicherungen bei der Wiederherstellung etwas weniger deutlich. Bei jedem Wiederherstellungsprozess müssen sowohl die ursprüngliche vollständige Sicherung als auch jede einzelne inkrementelle Datei in einer bestimmten Reihenfolge verarbeitet werden. Diese Ketten müssen sorgfältig verwaltet werden, um sicherzustellen, dass keine Dateien beschädigt werden oder Links fehlen, die die gesamte Sicherungsstrategie gefährden könnten.
Inkrementelle Sicherungen sind nach wie vor in den meisten Umgebungen beliebt, in denen Speichereffizienz und kleinere Sicherungsfenster Priorität haben.
Differenzielle Sicherung
Differenzielle Sicherungen hingegen bieten einen Kompromiss zwischen vollständigen und inkrementellen Sicherungsmethoden. Nach der Erstellung der ersten vollständigen Sicherung erfasst jeder nachfolgende differenzielle Vorgang alle seit der ursprünglichen Sicherung vorgenommenen Änderungen.
Im Vergleich zu inkrementellen Sicherungen bieten differenzielle Sicherungen einen wesentlich einfacheren Wiederherstellungsprozess, da nur die vollständige Sicherung und die letzte differenzielle Sicherung benötigt werden. Dadurch sind Wiederherstellungsprozesse mit differentiellen Sicherungen schneller und besser vorhersehbar, im Gegensatz zum langsamen Prozess der Wiederherstellung langer inkrementeller Ketten. Differenziale Sicherungen sind ein guter Kompromiss für mittelgroße Umgebungen, die sowohl eine einfache Wiederherstellung als auch Speichereffizienz benötigen.
Das größte Problem bei differentiellen Backups ist einfach der Zeitablauf. Mit jeder weiteren differentiellen Sicherung wächst die Datei, bis sie schließlich die Größe der ursprünglichen Sicherung erreicht. Daher sind differentielle Backups in der Regel am effektivsten, wenn regelmäßig vollständige Backups durchgeführt werden, die die Basis für die differentiellen Backups zurücksetzen und die Betriebseffizienz aufrechterhalten.
Wie richtet man in QEMU inkrementelle Backups ein?
Die Implementierung inkrementeller Backups in QEMU ist besonders interessant, da sie oft die bevorzugte Methode für diese Art der Virtualisierung ist. Auch hier erfordern die richtige Konfiguration und Implementierung ein gründliches Verständnis der verschiedenen zugrunde liegenden Mechanismen, die in diesem Artikel als Nächstes behandelt werden. Hier werden drei wichtige Schritte des Prozesses behandelt: die Erstellung der anfänglichen Backup-Infrastruktur, die Nutzung von libvirt für das Backup-Management und die Einrichtung konsistenter Verfahren für den regulären Betrieb in der Zukunft.
Erstellen des ersten Backup-Jobs
Die Einrichtung der ersten vollständigen Sicherung mit Bitmap-Verfolgung ist die Grundlage jeder zukünftigen inkrementellen Sicherungsstrategie in QEMU. Dies ist ein sehr wichtiger Schritt, der einen Punkt erstellt, auf den alle zukünftigen Sicherungen verweisen können.
Der betreffende Prozess ist nicht besonders schwierig, kann aber in manchen Situationen eine Herausforderung darstellen. Der erste Schritt besteht darin, eine persistente Bitmap zu erstellen, um geänderte Blöcke auf einer virtuellen Festplatte zu verfolgen. Diese Bitmap kann als Speicher von QEMU behandelt werden, sodass QEMU weiß, welche Festplattensektoren seit dem letzten Sicherungsvorgang geändert wurden.
Ein ausführbarer Befehl zum Aktivieren der Bitmap (im QEMU-Monitor) sollte wie folgt aussehen: block-dirty-bitmap-add drive0 backup-bitmap persistent=on
Nachdem die Bitmap eingerichtet wurde, ist es an der Zeit, die erste vollständige Sicherung unter Berücksichtigung der laufenden VM durchzuführen. Dieser spezielle Befehl sollte nur die absolut notwendigen Konfigurationen enthalten: Zielspeicherort, Format usw.
Verwenden von Libvirt zur Verwaltung von Sicherungsvorgängen
Libvirt ist eine Open-Source-Sammlung von Bibliotheken und Software, die eine zentralisierte Verwaltung für eine Vielzahl verschiedener Hypervisoren bietet, darunter QEMU, Xen, KVM, LXC, VMware und andere. Libvert besteht aus einem Daemon, einer API und Befehlszeilen-Dienstprogrammen zum Ausführen dieser API.
Libvirt verbessert die QEMU-Sicherungsverwaltung durch eine konsistente API-Schicht, die die vielen verschiedenen Komplexitäten in der Umgebung abstrahiert. Libvirt ist ein leistungsstarkes Toolkit, das Hypervisor-Aufgaben durch Automatisierungsfunktionen und eine flexible Struktur verbessert, die andernfalls manuell über Befehlssequenzen ausgeführt werden müssten.
Nach dem Versuch, libvirt-Backups in QEMU einzurichten, müssen Sie zunächst überprüfen, ob die aktuelle Installation inkrementelle Backup-Funktionen unterstützt (alle Versionen ab 6.0.0 sollten dies unterstützen). Der richtige Befehl zum Überprüfen der libvirt-Version lautet wie folgt:
…
<backup>
<disks>
<disk name=’vda‘ backup=’yes‘ type=’file‘>
<target file=’/backup/path/incremental1.qcow2’/>
</disk>
</disks>
</backup>
…
</domain>
Schritt-für-Schritt-Anleitung zum Erstellen einer neuen inkrementellen Sicherung
Nachdem alle grundlegenden Konfigurationsprozesse abgeschlossen sind, können regelmäßige inkrementelle Sicherungen mit der folgenden Befehlsfolge ausgeführt werden:
- So frieren Sie das Gastdateisystem ein (wenn der Gastagent bereits konfiguriert ist):
- So erstellen Sie eine neue inkrementelle Sicherung und geben dabei die Tracking-Bitmap an:
target=/path/to/backup/vm-incremental-$(date +%Y%m%d).qcow2 format=qcow2
- So heben Sie das Einfrieren des Gastdateisystems auf, um den normalen Betrieb wieder aufzunehmen:
- So setzen Sie die Bitmap zur Änderungsverfolgung zurück, um den nächsten Sicherungszyklus vorzubereiten:
- So überprüfen Sie den Abschluss und die Dokumentation der Sicherung:
- Um die Integrität der Sicherung regelmäßig zu testen und die Wiederherstellbarkeit sicherzustellen:
Dieser spezielle Workflow schafft einen Ausgleich zwischen Effizienz und Gründlichkeit, minimiert die Auswirkungen auf laufende Workloads und gewährleistet eine zuverlässige Sicherungskette für potenzielle Notfallwiederherstellungsszenarien.
Was sind QMP-Befehle für inkrementelle Sicherungen?
Das QEMU Machine Protocol, oft als QMP bezeichnet, bietet eine JSON-basierte Schnittstelle zur programmgesteuerten Überwachung und Steuerung verschiedener QEMU-Instanzen. Speziell für Sicherungsvorgänge bietet QMP eine präzise Steuerung, die insbesondere für die Automatisierung oder die Integration in benutzerdefinierte Sicherungslösungen von Vorteil ist. Die folgenden Befehle können entweder direkt über den QEMU-Monitor oder mithilfe von Skripten zur Erstellung geplanter Vorgänge ausgeführt werden:
Einführung in grundlegende QMP-Befehle
QMP-Befehle verwenden eine einheitliche JSON-Struktur, um Aufgaben wie Skripterstellung und Automatisierung zu vereinfachen. Skripterstellung und Automatisierung ermöglichen eine detaillierte Steuerung der internen Mechanismen von QEMU, ohne direkt auf die Konsolenoberfläche eines Hypervisors zugreifen zu müssen.
Um den QMP-Modus während der Ausführung von QEMU aufzurufen, stellen Sie eine Verbindung zum QEMU-Monitor-Socket her und initialisieren Sie die Verbindung wie folgt:
{„execute“: „qmp_capabilities“}
Zu den nützlichsten Befehlen für Sicherungsvorgänge gehören:
- block-dirty-bitmap-add für die Änderungsverfolgung;
- drive-backup für die Ausführung von Sicherungen; und
- transaction für verschiedene Gruppierungsaufgaben usw.
Jeder dieser Befehle akzeptiert auch eine Reihe spezifischer Parameter in JSON:
„arguments“: {„node“: „drive0“, „name“: „backup-bitmap“, „persistent“: true}}
So erstellen Sie eine neue inkrementelle Sicherung mit QMP
Die Erstellung inkrementeller Sicherungen mit QMP ist eine logische Abfolge von Vorgängen, bei der nur die geänderten Blöcke erfasst werden, während die Datenkonsistenz erhalten bleibt. Außerdem wird Bitmap-Tracking verwendet, um die Dauer und Größe der Sicherung zu minimieren, genau wie in den verschiedenen Beispielen oben.
Das Einrichten einer Tracking-Bitmap, falls noch keine vorhanden ist, sollte nur einmal vor einer vollständigen Sicherung durchgeführt werden. So geht’s:
„arguments“: {„node“: „drive0“, „name“: „backup-bitmap“, „persistent“: true}}
„arguments“: {„device“: „drive0“, „sync“: „full“,
„target“: „/path/to/vm-base.qcow2“, „format“: „qcow2“}}
„arguments“: {„device“: „drive0“, „sync“: „incremental“, „bitmap“: „backup-bitmap“,
„target“: „/path/to/vm-incr-20250407.qcow2“, „format“: „qcow2“}}
Backing-Images und Bitmaps verstehen
Die Beziehung zwischen Backing-Images und Dirty-Bitmaps bildet die technische Grundlage für effiziente inkrementelle Sicherungen in QEMU. Nur wenn Sie diese Beziehungen richtig verstehen, können Sie saubere Sicherungsketten aufrechterhalten.
Backing-Images erstellen Eltern-Kind-Beziehungen zwischen qcow2-Dateien, sodass jede inkrementelle Sicherung auf ihre Vorgängerin verweisen kann. Mit dem folgenden QMP-Befehl können Sie die Backing-Kette eines beliebigen qcow2-Images abfragen:
„arguments“: {„query-backing-chain“: true}}
Mit demselben Befehl können Sie auch vorhandene Bitmaps auf einem bestimmten Laufwerk anzeigen, indem Sie eines der Argumente ändern:
„arguments“: {„filter-node-name“: „drive0“}}
„arguments“: {„node“: „drive0“, „name“: „backup-bitmap“}}
Ein solcher Reset-Vorgang markiert den Abschluss eines einzelnen Sicherungszyklus und bereitet das System auch für die Ausführung des folgenden Zyklus vor.
Häufige Probleme und Fehlerbehebung bei inkrementellen QEMU-Sicherungen
Selbst die beste Planung kann nicht verhindern, dass bei QEMU-Sicherungsvorgängen Hindernisse oder Probleme auftreten. Das Wissen, wie diese effizient diagnostiziert und behoben werden können, ist entscheidend, um zwischen geringfügigen Unannehmlichkeiten und erheblichen Datenverlusten zu unterscheiden. In diesem Abschnitt werden einige der häufigsten Herausforderungen behandelt, denen Administratoren im Zusammenhang mit inkrementellen Sicherungslösungen gegenüberstehen.
„Bitmap nicht gefunden“
Der Fehler „Bitmap nicht gefunden“ wird in der Regel durch Probleme mit der Persistenz von Bitmaps verursacht. Damit die inkrementelle Verfolgung mit QEMU konsistent ist, müssen Bitmaps auch nach einem Neustart der VM erhalten bleiben. Bei der Erstellung jeder neuen Bitmap sollte das Flag „persistent=on“ verwendet werden, da die Persistenz-Einstellung einer bestehenden Bitmap nur durch eine Neuanlage geändert werden kann.
„Berechtigung verweigert“
Berechtigung Fehler treten bei Sicherungsvorgängen recht häufig auf, insbesondere in Umgebungen mit komplexen Sicherheitsregeln. Es gibt einen bestimmten Testbefehl, mit dem Sie sicherstellen können, dass der QEMU-Prozess über die Berechtigung zum Schreiben in Ihr Sicherungsziel verfügt:
$ rm /path/to/backup/test-write.tmp
„Gerät ist gesperrt“
Wenn bestimmte Vorgänge exklusive Sperren für das Zielgerät haben, können Sicherungsvorgänge mit der Meldung „Gerät ist gesperrt“ fehlschlagen. Solche Sperren können während Snapshots oder gleichzeitigen Sicherungsaufträgen auftreten. Die einzige Möglichkeit, sie zu vermeiden, besteht darin, zuvor die aktiven Sicherungsaufträge aufzulisten, um potenzielle Konflikte manuell zu finden:
Bei Bedarf können bestimmte Vorgänge auch mit dem folgenden Befehl abgebrochen werden:
Beschädigte Sicherungsketten
Eine Beschädigung der Sicherungskette ist in diesem Zusammenhang besonders problematisch, da dadurch alle nachfolgenden inkrementellen Sicherungen sofort unbrauchbar werden. Die beste Vorgehensweise in solchen Situationen ist die Erstellung einer neuen vollständigen Sicherung und die Einrichtung einer neuen Kette, um neu zu beginnen:
Inkonsistente Anwendungszustände
Die Inkonsistenz kann den Sicherungsprozess stören und zu unvollständigen oder anderweitig beschädigten Sicherungen führen. In diesem Fall hängt die genaue Lösung vom Kern des Problems ab, sodass es keine einheitliche Lösung für jedes Problem gibt.
Wenn beispielsweise eine Anwendung während der Sicherung Schreibvorgänge ausgeführt hat, kann dies zu Sicherungen mit nur teilweise geschriebenen Daten führen. Dies kann nur behoben werden, indem alle zugehörigen VMs vor der Durchführung von Sicherungsvorgängen angehalten und anschließend mit den folgenden Befehlen wieder freigegeben werden:
# Sicherungsvorgänge durchführen
$ virsh qemu-agent-command vm-name ‚{„execute“:“guest-fsfreeze-thaw“}‘
Speicherplatzmangel
Eine Erschöpfung des Festplattenspeichers kann Sicherungsvorgänge unterbrechen und unvollständige Sicherungsdateien hinterlassen. Solche Dateien belegen nur Speicherplatz: In ihrer unvollständigen Form haben sie keinen Wiederherstellungswert. Die Überwachung des Speicherplatzes ist eine weitere Ebene von Befehlen, die in Sicherungs-Skripten implementiert werden sollte, um zu verhindern, dass Vorgänge gestartet werden, wenn der verfügbare Speicherplatz unter einen bestimmten Schwellenwert fällt.
Die Implementierung regelmäßiger Bereinigungsprozesse zum Entfernen unvollständiger Sicherungsdateien sollte in Betracht gezogen werden.
„Image not in qcow2 format“
Sicherungsvorgänge können mit der Fehlermeldung „Image not in qcow2 format“ fehlschlagen, selbst wenn zuvor das richtige Format angegeben wurde. Solche Probleme treten häufig bei inkrementellen Sicherungen auf, wenn die Basisimages in einem inkompatiblen Format gespeichert sind.
Dies kann behoben werden, indem zunächst das Format des Basisimages überprüft wird:
Sobald das Format überprüft wurde, kann das betreffende Image in qcow2 konvertiert werden, während eine neue Sicherungskette mit dem folgenden Befehl gestartet wird:
Sicherungsmethoden für laufende QEMU-VMs
Es gibt einige bemerkenswerte Unterschiede zwischen den beiden hier behandelten Ansätzen zur QEMU-Sicherungsverwaltung.
Der erste Ansatz erfolgt mithilfe von QEMU-Monitorbefehlen: Diese werden direkt über die QEMU-Monitor-Konsole mit einer textbasierten Syntax ausgeführt und in der Regel zur manuellen Ausführung verschiedener Aufgaben verwendet. Zwar bietet libvirt bestimmte Funktionen zur Automatisierung, doch entspricht sein Grundkonzept eher den direkten QEMU-Monitorbefehlen.
Der zweite Ansatz nutzt QMP (QEMU Machine Protocol), ein System für programmatische Interaktionen, auf das über eine Socket-Verbindung zugegriffen werden kann. Mit seinen JSON-formatierten Befehlen und Antworten eignet es sich perfekt für Skripterstellung, Automatisierung und Sicherungssequenzierung.
Die Funktionalität ist im Kern im Wesentlichen dieselbe; es handelt sich lediglich um unterschiedliche Schnittstellen für den Zugriff auf dieselben Funktionen von QEMU.
Beide Ansätze bieten verschiedene Möglichkeiten, eine Sicherung einer laufenden VM in QEMU zu erstellen. Einige dieser Möglichkeiten wurden bereits untersucht, beispielsweise die dirty block tracking, die freezing/thawing-Funktionen des QEMU-Gastagenten und die checkpoint-Funktion von libvirt.
Eine Alternative, die noch nicht erwähnt wurde, ist die Funktion „externer Snapshot“. Sie wird oft als einer der einfachsten Ansätze für die Arbeit mit laufenden VMs angesehen, da eine neue Overlay-Datei erstellt wird, an die alle Schreibvorgänge umgeleitet werden, während das ursprüngliche Disk-Image für den Sicherungsprozess unverändert erhalten bleibt. Ein Befehl zur Verwendung dieser Methode sieht wie folgt aus:
Alle diese Sicherungsmethoden haben ihre eigenen Vorteile und Produktionskontexte, in denen sie die anderen übertreffen, wie zum Beispiel:
- Dirty Block Tracking mit inkrementellen Sicherungen: einer der ausgewogensten Ansätze, der minimale Auswirkungen auf die Leistung und hohe Effizienz bietet; eine großartige Option für Produktionsumgebungen mit eingeschränkten Sicherungsfenstern und relativ großen VMs.
- Gastagenten-Integration (Freezing/Thawing): Eine gängige Option für transaktionsintensive Anwendungen und Datenbankserver, die vollständige Datenkonsistenz erfordern, selbst wenn dies kurze Ausfallzeiten während der Backups mit sich bringt.
- Checkpoint-Funktionen: Bieten die umfassendste Wiederherstellung, jedoch auf Kosten einer hohen Ressourcenauslastung, was sie zur bevorzugten Option in Entwicklungsumgebungen und kritischen Systemen macht, in denen zusätzlicher Aufwand durch die Erhaltung des Anwendungszustands gerechtfertigt ist.
- Externe Snapshots: Ideal für Umgebungen, in denen Sicherungen mit wenig bis gar keinem Einrichtungsaufwand erforderlich sind, sodass sie sich perfekt für kleine und mittlere VMs mit ausreichender Toleranz für kurze Verlangsamungen eignen.
- Backup-Lösungen von Drittanbietern: Bieten die beste Erfahrung für Unternehmen mit einer Vielzahl von VMs und Hosts und zeichnen sich durch eine zentralisierte Verwaltung und erweiterte Funktionen aus, die ihre hohen Lizenzkosten rechtfertigen.
QEMU-Backup-APIs und Integrationswerkzeuge
Das umfangreiche API-Ökosystem von QEMU bietet Entwicklern und Administratoren tiefgreifenden programmatischen Zugriff auf vielseitige Virtualisierungsfunktionen. Solche APIs bilden die Grundlage für Sicherungsvorgänge, bieten konsistente Schnittstellen und abstrahieren die Komplexität der Verwaltung mehrerer virtueller Maschinenumgebungen.
Die Block Device Interface ist das Herzstück der Sicherungsfunktionen von QEMU. Sie ermöglicht Vorgänge zur Verwaltung virtueller Festplatten, darunter unter anderem die oben erläuterten Sicherungs- und Snapshot-Funktionen. Diese Schnittstelle unterstützt Vorgänge wie Bitmap-Verwaltung, blockdev-backup und drive-backup sowohl über QMP als auch über den QEMU-Monitor. Diese Low-Level-Funktionen eignen sich auch ideal für Entwickler, die benutzerdefinierte Sicherungslösungen erstellen, da sie eine detaillierte Kontrolle über praktisch jeden Aspekt des Sicherungsprozesses bieten.
Die libvirt-API ist eine weitere beliebte Option in diesem Zusammenhang. Sie umschließt die nativen Schnittstellen von QEMU mit einer standardisierten Abstraktionsschicht, die sogar über verschiedene Hypervisoren hinweg funktionieren kann. Wie bereits erwähnt, vereinfacht libvirt Sicherungsvorgänge durch hochentwickelte Funktionen, die verschiedene zugrunde liegende Details automatisch verarbeiten können. Die Funktion virDomainBackupBegin() kann beispielsweise alle Aspekte der Initiierung einer inkrementellen Sicherung verwalten, von der Bitmap-Verfolgung bis hin zu temporären Snapshots.
Für Python-Entwickler bieten die libvirt-python Bindings einen relativ bequemen Einstieg in die Backup-Tools von QEMU. Die Bindings stellen die komplette libvirt-API in Python-Syntax bereit, wodurch Automatisierungsskripte wesentlich lesbarer und einfacher zu warten sind. So würde ein einfaches Backup-Skript in Python aussehen:
conn = libvirt.open(‚qemu:///system‘)
dom = conn.lookupByName(‚vm-name‘)
dom.backupBegin(backup_xml, None)
Wesentliche Funktionen einer QEMU-Backup-Lösung
Bestimmte Schlüsselmerkmale unterscheiden robuste Backup-Lösungen von einfachen Ansätzen für Backup-Prozesse. Wesentliche Funktionen wie die unten aufgeführten sollten sicherstellen, dass eine QEMU-Backup-Strategie in einer Vielzahl von Virtualisierungsumgebungen zuverlässig, effizient und wiederherstellbar bleibt.
Mechanismen zur Datenkonsistenz sind in diesem Zusammenhang das wichtigste Merkmal jeder kompetenten Backup-Lösung. Eine Backup-Lösung sollte sich leicht in die Guest Agent API von QEMU integrieren lassen oder eigene anwendungsbezogene Plugins bieten, um die Konsistenz der Datenbank zu gewährleisten. Die Fähigkeit zur Koordination mit laufenden Anwendungen kann dazu beitragen, Backups in einem sauberen, wiederherstellbaren Zustand ohne Beschädigungen während der Transaktion zu erstellen. Fortschrittliche Lösungen für speicherspezifische Anwendungsfälle, die über Freeze-Thaw-Zyklen hinausgehen, sollten ebenfalls in Betracht gezogen werden, da sie die separate Verwaltung der Transaktionszustände bestimmter Anwendungen ermöglichen.
Effizientes Speichermanagement ist ein weiterer wichtiger Punkt für umfassende Sicherungslösungen, zu deren gängigen Funktionen Deduplizierung, Komprimierung, automatische Aufbewahrung und vieles mehr gehören. Inkrementelle Ansätze bieten minimale Sicherungsfenster und geringen Speicherverbrauch durch intelligente Änderungsverfolgung. In diesem Zusammenhang ist eine regelmäßige automatische Überprüfung praktisch unerlässlich, um die Integrität und Wiederherstellbarkeit der Sicherungen zu testen und sicherzustellen, dass die Sicherungen jederzeit funktionsfähig und vollständig sind.
Orchestrierung und Planung sind für komplexere Umgebungen von entscheidender Bedeutung, da sie manuelle Sicherungsvorgänge in zuverlässige, automatisierte Prozesse umwandeln, ohne dass komplexe Skripte erstellt werden müssen. Intelligente Ressourcenbegrenzung, Abhängigkeitsmanagement und flexible Planungsoptionen sind hier praktisch unverzichtbar. Über diese Grundfunktionen hinaus sollte jede leistungsfähige Sicherungslösung für QEMU umfassende Berichts- und Warnmechanismen, die Integration in bestehende Überwachungssysteme und RBAC-Unterstützung für eine bessere Zugriffskontrolle bieten.
All diese Funktionen werden immer wichtiger, da virtuelle Geschäftsinfrastrukturen sowohl an Größe als auch an Komplexität zunehmen und die Sicherung von einem technischen Prozess zu einer Geschäftsanwendung mit spezifischen Governance-Anforderungen und definierten Verantwortlichkeiten wird.
Wie sichert man QEMU mit Bacula?
Bacula Enterprise bietet unter anderem mit seinem Virtualisierungsmodul umfassende Unterstützung für QEMU-Umgebungen. Bacula kombiniert die Open-Source-Natur der Umgebung mit zentraler Verwaltung, Premium-Support und detaillierter Kontrolle über praktisch jeden Prozess. Diese unglaubliche Kombination von Parametern macht es zu einer bevorzugten Lösung für große Unternehmen mit vielfältigen Anforderungen an die virtuelle Infrastruktur.
Die Konfiguration von Bacula für QEMU-Backups beginnt mit der Installation des Bacula File Daemon auf Hypervisor-Hosts. Der Daemon sollte so konfiguriert werden, dass er mit Hilfe von libvirt auf Ihre QEMU-Instanzen zugreifen kann, sodass sowohl vollständige als auch inkrementelle Backups ohne potenzielle Datenkorruption möglich sind.
Eine Kernkonfiguration für diese Sicherungen wird in der Konfigurationsdatei von Bacula Director gespeichert, wo Benutzer Sicherungsaufträge für bestimmte VMs definieren können:
Name = „QEMU-VM-Backup“
JobDefs = „DefaultJob“
Client = qemu-host-fd
Pool = VMPool
FileSet = „QEMU-VMs“
}
FileSet {
Name = „QEMU-VMs“
Include {
Options {
signature = MD5
compression = GZIP
}
Plugin = „qemu: VM=vm-name“
}
}
Eine der größten Stärken von Bacula ist der katalogbasierte Ansatz für die Wiederherstellung mehrerer VMs. Bacula kann bei Bedarf detaillierte Metadaten zu jeder Sicherung und allen Beziehungen zwischen ihnen speichern. Auf diese Weise ist eine präzise Wiederherstellung zu einem bestimmten Zeitpunkt möglich, ohne dass Sicherungsketten oder Wiederherstellungsabhängigkeiten manuell nachverfolgt werden müssen.
Für die Notfallwiederherstellung nutzt Bacula seine Bare-Metal-Wiederherstellungsfunktionen, um ganze Hypervisoren und alle ihre VM-Konfigurationen und Disk-Images wiederherzustellen. Die umfassenden Audit-Trails und Aufbewahrungsvorschriften von Bacula sind besonders nützlich in Unternehmen mit strengen Compliance-Anforderungen.
Die zahlreichen Unternehmensfunktionen von Bacula in Kombination mit seiner offenen Architektur machen es zu einer interessanten Option für Unternehmen, die robuste QEMU-Sicherungsfunktionen benötigen, die von Einzel-Server-Bereitstellungen bis hin zu umfangreichen Multi-Rechenzentrumsumgebungen skalierbar sind.
Häufig gestellte Fragen
Welche verschiedenen Methoden gibt es zum Sichern einer virtuellen QEMU-Maschine?
Für virtuelle QEMU-Maschinen gibt es mehrere Möglichkeiten, Sicherungen zu erstellen, darunter vollständige Sicherungen, inkrementelle Sicherungen, differenzielle Sicherungen und externe Snapshots.
- Vollständige Sicherungen erfassen die gesamte VM, benötigen jedoch viel Speicherplatz.
- Inkrementelle Sicherungen verwenden die Verfolgung schmutziger Blöcke, um geänderte Blöcke effizient zu überwachen, sind jedoch schwer wiederherzustellen.
- Differenzielle Sicherungen sind ein Mittelweg zwischen den beiden, sind jedoch ebenfalls nicht besonders universell einsetzbar.
- Externe Snapshots leiten Schreibvorgänge vorübergehend in Overlay-Dateien um, während das Basisimage gesichert wird.
Ist es möglich, eine laufende virtuelle QEMU-Maschine ohne Ausfallzeiten zu sichern?
Ja, QEMU unterstützt Live-Backups laufender VMs mithilfe eigener Mechanismen wie Dirty-Block-Tracking oder externen Snapshots. Für optimale Konsistenz verwenden Administratoren häufig Gastagenten, um das Dateisystem für kritische Backups kurzzeitig einzufrieren, wodurch die Integrität der Anwendungsdaten gewährleistet wird, solche Backups jedoch für bestimmte Geschäftstypen inakzeptabel sind.
Welche Rolle spielt die QEMU-Snapshot-Funktion in Backup-Lösungen?
QEMU-Snapshots erstellen Momentaufnahmen des aktuellen VM-Zustands, die als Grundlage für verschiedene Sicherungsstrategien dienen. Der Zustand interner Snapshots wird in der Originaldatei gespeichert, während externe Snapshots Schreibvorgänge in separate Overlay-Dateien umleiten. Snapshots ermöglichen auch verschiedene nützliche Funktionen wie Rollback, Klonen, Migration und mehr.
Die Verwendung einer hochsicheren Sicherungs- und Wiederherstellungslösung zum Schutz von QEMU-Umgebungen bietet in der Regel auch einen zentralen Schutz für die gesamte IT-Umgebung eines Unternehmens, was ebenfalls von Vorteil ist. Darüber hinaus bietet sie weitaus mehr Funktionen für Überwachung, Berichterstellung, Compliance, Sicherheit und Komfort, die häufig für den Betrieb mittlerer und großer Unternehmen erforderlich sind. Wir hoffen, dass diese Informationen für Sie hilfreich waren. Weitere Informationen finden Sie unter www.baculasystems.com.