Ein blksnap-Mechanismus zur Erstellung von Snapshots von Blockgeräten in Linux wurde vorgeschlagen.

Das Unternehmen Veeam, das Software für Backup und Notfallwiederherstellung entwickelt, hat einen blksnap-Modul zur Integration in den Linux-Kernel vorgeschlagen, der den Mechanismus zur Erstellung von Snapshots von Blockgeräten und zur Änderungsverfolgung in Blockgeräten implementiert. Für die Arbeit mit Snapshots wurde das Kommandozeilentool blksnap und die Bibliothek blksnap.so vorbereitet, die es ermöglichen, aus dem Benutzerspeicherraum über ioctl-Aufrufe mit dem Kernelmodul zu interagieren.

Ziel der Erstellung des Moduls ist die Organisation von Backups von Speichermedien und virtuellen Festplatten ohne Unterbrechung des Betriebs – das Modul ermöglicht es, den aktuellen Zustand des gesamten Blockgeräts in einem Snapshot zu fixieren und für Backups einen isolierten Schnitt bereitzustellen, der unabhängig von fortlaufenden Änderungen ist. Ein wichtiges Merkmal von blksnap ist die Möglichkeit, gleichzeitig Snapshots für mehrere Blockgeräte zu erstellen, was nicht nur die Integrität der Daten auf Blockgeräteeebene gewährleistet, sondern auch die Konsistenz des Zustands verschiedener Blockgeräte im Backup erreicht.

Um Änderungen nachzuverfolgen, wurde der Blockgerät-Subsystem (bdev) die Möglichkeit hinzugefügt, Filter anzuhängen, die es ermöglichen, Eingabe-/Ausgabewrequests abzufangen. In blksnap wurde ein Filter implementiert, der Schreibanforderungen abfängt, den alten Wert liest und ihn in einer separaten Änderungsanmeldeliste speichert, die den Zustand des Snapshots definiert. Bei diesem Ansatz bleibt die Logik der Arbeit mit dem Blockgerät unverändert, das Schreiben im originalen Blockgerät erfolgt wie gehabt, unabhängig von den Snapshots, was die Möglichkeit von Datenbeschädigungen ausschließt und Probleme sogar im Falle unvorhersehbarer kritischer Fehler in blksnap und der Überlauf des für Änderungen reservierten Speicherplatzes vermeidet.

Das Modul ermöglicht unter anderem die Feststellung, welche Blöcke im Zeitraum zwischen dem letzten und einem beliebigen vorherigen Snapshot geändert wurden, was nützlich für die Implementierung von inkrementellen Sicherungen sein kann. Um Änderungen im Verhältnis zum Zustand des Snapshots zu speichern, kann ein beliebiger Bereich von Sektoren auf jedem Blockgerät zugewiesen werden, was es ermöglicht, Änderungen in einzelnen Dateien innerhalb des Dateisystems auf Blockgeräten zu speichern. Die Größe des Bereichs zur Speicherung von Änderungen kann jederzeit erhöht werden, sogar nach der Erstellung des Snapshots.

Blksnap basiert auf dem Code des Moduls veeamsnap, das Teil des Produkts Veeam Agent für Linux ist, wurde jedoch unter Berücksichtigung der Spezifikationen für die Bereitstellung im Hauptteil des Linux-Kernels überarbeitet. Ein konzeptueller Unterschied zwischen blksnap und veeamsnap ist die Verwendung eines Filtersystems, das an das Blockgerät angehängt wird, anstelle einer separaten Komponente bdevfilter, die Eingaben/Ausgaben abfängt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4