ZFS

ZFS-Snapshot-Tutorial

ZFS-Snapshot-Tutorial

Snapshots sind wichtig, egal ob Sie eine einfache virtuelle Maschine auf Ihrem Heimcomputer ausführen oder ob es sich um eine Unternehmensdatenbank handelt, die ständig aktualisiert und modifiziert wird. Es ist wichtig, Snapshots zu haben, d. h. eine Kopie des gesamten Dateisystems, wie es zu einem bestimmten Zeitpunkt war.

Die Leute verlieren oft den Überblick, wo etwas schief gelaufen ist, eine Datei wurde gelöscht und niemand hat bemerkt, dass sie weg war. Mehrere Backups sind vergangen und jetzt stellen Sie fest, dass in allen verfügbaren Backups der letzten 5 Wochen eine wichtige Datei fehlt. In diesem Tutorial werden wir sehen, wie Sie ZFS-Snapshots verwenden und verschiedene Snapshot-Richtlinien ansprechen, die sowohl in Bezug auf Ressourcenauslastung als auch auf Wiederherstellbarkeit optimal funktionieren würden.

Copy-On-Write-Mechanismus

ZFS hat sowohl den Überblick über Dateien und Verzeichnisse auf hoher Ebene als auch versteht, wie Daten auf die Festplatte geschrieben werden. Wenn Daten physisch auf eine Festplatte geschrieben werden, geschieht dies in diskreten Blöcken. Normalerweise kann die Blockgröße bis zu 1 MB betragen, aber der Standard ist normalerweise 128 KB. Dies bedeutet nun, dass jede Änderung (Lesen, Schreiben oder Löschen) in den diskreten Blöcken stattfindet.

Der Copy-on-Write-Mechanismus stellt sicher, dass bei jeder Änderung eines Blocks, anstatt den Block direkt zu ändern, eine Kopie des Blocks mit den erforderlichen Änderungen am neuen Block erstellt wird.

Dies ist besonders hilfreich in Fällen, in denen beispielsweise ein Stromausfall auftritt und Ihr System abstürzt, während neue Daten auf die Festplatte geschrieben werden. Wenn dies in einem traditionellen Dateisystem passiert, werden Ihre Dateien beschädigt oder hinterlassen Löcher in ihnen. Wenn Sie jedoch ZFS verwenden, verlieren Sie möglicherweise die laufende Transaktion, aber der letzte gültige Status Ihrer Dateien bleibt unberührt.

Snapshots verlassen sich ebenfalls auf diese Funktionalität, und zwar ziemlich stark. Wenn Sie einen Snapshot eines bestimmten Datensatzes erstellen ('dataset' ist der ZFS-Begriff für ein Dateisystem), zeichnet ZFS nur den Zeitstempel auf, als der Snapshot erstellt wurde. Das ist es! Es werden keine Daten kopiert und kein zusätzlicher Speicherplatz verbraucht.

Erst wenn sich das Dateisystem ändert und die darin enthaltenen Daten vom Snapshot abweichen, verbraucht der Snapshot zusätzlichen Speicherplatz. Was unter der Haube passiert, ist Folgendes: Anstatt die alten Blöcke im Laufe der Zeit zu recyceln, hält ZFS sie in der Nähe. Dies verbessert auch die Speicherauslastung. Wenn Sie einen 20-GB-Datensatz erstellen und hier und da nur wenige Textdateien ändern, kann der Snapshot nur wenige MB Speicherplatz beanspruchen.


Schnappschüsse erstellen

Um die Verwendung von Snapshots zu demonstrieren, beginnen wir mit einem Datensatz, der viele Textdateien enthält, nur um die Sache einfach zu halten. Auf der virtuellen Maschine, die ich für die Demo verwenden werde, läuft FreeBSD 11.1-RELEASE-p3, die neueste stabile Version, die zum Zeitpunkt des Schreibens dieses Artikels verfügbar ist. Das Root-Dateisystem wird auf dem zroot Pool standardmäßig und viele der bekannten Verzeichnisse wie /usr/src, /home, /etc sind alle ihre eigenen Datensätze eingehängt zroot. Wenn Sie nicht wissen, was ein Pool (oder ein Zpool) in der ZFS-Sprache bedeutet, lohnt es sich, es zu lesen, bevor Sie fortfahren.

Eines der vielen Dateisysteme oder Datensätze, die standardmäßig in FreeBSD enthalten sind, ist: zroot/usr/src

Um sich die Eigenschaften anzusehen, führen Sie den folgenden Befehl aus.

[email protected]:~$ zfs list zroot/usr/src

Wie Sie sehen können, verwendet es 633 MB Speicherplatz. Es enthält den gesamten Quellbaum für das Betriebssystem.

Machen wir einen Schnappschuss von zroot/usr/src

[email protected]:~$ zfs Snapshot zroot/usr/[email protected]

Das @-Symbol dient als Trennzeichen zwischen dem Datensatz und dem Snapshot-Namen, der in unserem Fall case ist Schnappschuss1.

Schauen wir uns nun den Status des Snapshots an, während er erstellt wird.

Durch Ausführen des Befehls:

zfs list -rt all zroot/usr/src

Sie können sehen, dass der Schnappschuss bei der Geburt keinen zusätzlichen Platz benötigt. Es ist auch kein Speicherplatz verfügbar, da es sich um einen strikt schreibgeschützten Datensatz handelt, der Snapshot selbst kann nicht wachsen, ändern oder verkleinern. Schließlich wird es nirgendwo gemountet, was es vollständig von der gegebenen Dateisystemhierarchie isoliert.

Jetzt entfernen wir die sbin Verzeichnis in /usr/src/

[email protected]:$ rm /usr/src/sbin

Wenn Sie sich den Schnappschuss ansehen, werden Sie jetzt sehen, dass er gewachsen ist,

Dies wird erwartet, da hier der Copy-on-Write-Mechanismus am Werk ist und das Löschen (oder Ändern) der Dateien dazu geführt hat, dass mehr Daten nur dem Snapshot und nicht dem tatsächlich verwendeten Dataset zugeordnet werden.

Beachten Sie die Spalte REFER in der obigen Ausgabe. Sie gibt Ihnen die Menge an zugänglichen Daten im Datensatz an, während die Spalte VERWENDET nur anzeigt, wie viel Speicherplatz auf der physischen Festplatte belegt ist.

Der Copy-On-Write-Mechanismus von ZFS liefert oft diese kontraintuitiven Ergebnisse, bei denen das Löschen einer Datei den Anschein erwecken würde, als würde jetzt mehr Speicherplatz als zuvor verwendet. Wenn Sie jedoch bis jetzt gelesen haben, wissen Sie, was tatsächlich passiert!

Bevor wir fertig sind, stellen wir die wieder her sbin von Schnappschuss1. Führen Sie dazu einfach Folgendes aus:

[email protected]:/usr/src$ zfs rollback zroot/usr/[email protected]

Snapshot-Richtlinie

Die nächste Frage ist: Wie oft möchten Sie die Schnappschüsse machen?? Auch wenn dies von Unternehmen zu Unternehmen unterschiedlich sein kann, nehmen wir das Beispiel einer sehr dynamischen Datenbank, die sich von Zeit zu Zeit ändert.

Anfangs würden Sie etwa alle 6 Stunden Snapshots machen, aber da sich die Datenbank so stark ändert, ist es bald unmöglich, all die zahlreichen Snapshots zu speichern, die erstellt wurden store. Der nächste Schritt wäre also, Snapshots zu löschen, die älter als beispielsweise 48 Stunden sind 48.

Jetzt wäre das Problem, etwas wiederherzustellen, das vor 49 Stunden verloren gegangen ist. Um dieses Problem zu umgehen, können Sie ein oder zwei Schnappschüsse aus diesem 48-Stunden-Verlauf aufbewahren und sie eine Woche lang aufbewahren. Entferne sie, wenn sie älter werden.

Und wenn Sie so weitermachen können, könnten Sie Schnappschüsse bis zur Entstehung des Systems stopfen, nur in absteigender Häufigkeit. Abschließend möchte ich darauf hinweisen, dass diese Snapshots schreibgeschützt sind, d. h. wenn Sie mit einer Ransomware infiziert werden und alle Ihre Daten verschlüsselt (modifiziert) werden. Diese Schnappschüsse wären höchstwahrscheinlich noch intakt.

Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...
Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...