Vorgeschlagener Blksnap-Mechanismus zum Erstellen von Snapshots von Blockgeräten unter Linux

Das Unternehmen Veeam, das Software für Backup und Disaster Recovery herstellt, schlug das blksnap-Modul zur Aufnahme in den Linux-Kernel mit der Implementierung des Mechanismus zum Erstellen von Snapshots von Blockgeräten und zum Verfolgen von Änderungen in Blockgeräten vor. Für die Arbeit mit Snapshots wurden das Befehlszeilendienstprogramm blksnap und die Bibliothek blksnap.so vorbereitet, die Ihnen die Interaktion mit dem Kernelmodul über ioctl-Aufrufe aus dem Benutzerbereich ermöglichen.

Der Zweck der Erstellung des Moduls besteht darin, die Sicherung von Laufwerken und virtuellen Festplatten zu organisieren, ohne die Arbeit zu unterbrechen. Mit dem Modul können Sie den aktuellen Status des gesamten Blockgeräts in einem Snapshot erfassen und so einen isolierten Bereich für die Sicherung bereitstellen, der nicht von laufenden Änderungen abhängt . Eine wichtige Funktion von blksnap ist die Möglichkeit, gleichzeitig Snapshots für mehrere Blockgeräte zu erstellen, wodurch nicht nur die Datenintegrität auf Blockgeräteebene sichergestellt, sondern auch eine Konsistenz des Zustands verschiedener Blockgeräte im Backup erreicht werden kann.

Um Änderungen am Blockgeräte-Subsystem (bdev) zu verfolgen, wurde die Möglichkeit hinzugefügt, Filter anzuhängen, mit denen Sie E/A-Anfragen abfangen können. blksnap implementiert einen Filter, der Schreibanfragen abfängt, den alten Wert liest und ihn in einer separaten Änderungsliste speichert, die den Status des Snapshots bestimmt. Bei diesem Ansatz ändert sich die Logik der Arbeit mit einem Blockgerät nicht, die Aufzeichnung im ursprünglichen Blockgerät erfolgt unverändert, unabhängig von Snapshots, was die Möglichkeit einer Datenbeschädigung ausschließt und Probleme auch bei unvorhersehbaren kritischen Fehlern vermeidet in blksnap und Überlauf des für Änderungen zugewiesenen Speicherplatzes.

Mit dem Modul können Sie außerdem feststellen, welche Blöcke zwischen dem letzten und einem vorherigen Snapshot geändert wurden, was für die Implementierung inkrementeller Backups nützlich sein kann. Um Änderungen relativ zum Status des Snapshots zu speichern, kann jedem Blockgerät ein beliebiger Bereich von Sektoren zugewiesen werden, sodass Sie Änderungen in separaten Dateien innerhalb des FS auf Blockgeräten speichern können. Der Bereich zum Speichern von Änderungen kann jederzeit, auch nach der Erstellung des Snapshots, vergrößert werden.

Blksnap basiert auf dem Code des Veeamsnap-Moduls, das Teil des Veeam Agent for Linux-Produkts ist, wurde jedoch für die Besonderheiten der Bereitstellung im Hauptteil des Linux-Kernels neu gestaltet. Der konzeptionelle Unterschied zwischen blksnap und veeamsnap besteht in der Verwendung eines Filtersystems, das an ein Blockgerät angeschlossen ist, anstelle einer separaten bdevfilter-Komponente, die E/A abfängt.

Source: opennet.ru

Kommentar hinzufügen