Datensicherung mit ZFS und syncoid

Veröffentlicht von

Heute zeige ich euch, wie man ganz einfach Backups von ZFS Dateisystemen macht, die auf der Snapshot Funktion von ZFS basieren. ZFS nutze ich mit der Virtualiserungsumgebung Proxmox.

ZFS kurz erklärt


Bild ZFS on Linux von Lawrence Livermore National Laboratory Lizenz: GPL

ZFS ist ein Dateisystem, Volume- und Raidmanager in einem. Es gibt Pools, die eine oder mehrere Datenträger als Volume vereinen. Also den Pool als RAID0 (stripped) aufbauen oder mit anderen RAID Funktionalitäten wie RAID1 (mirrored), RAID10 (stripped und mirrored) usw. erstellen. Eine Partition auf dem Pool heißen Dataset.

Vorteile von ZFS sind in meinen Augen drei Dinge, die die fFexibilität deutlich machen:

  1. Die Datasets verbrauchen nur soviel physischen Platz auf dem Laufwerk, wie sie grade mit Nutzdaten belegt sind. Das Dataset wächst also mit den Nutzdaten mit. Wird der Platz eng, hängt man einfach weitere Datenträger in den Pool und und es kann weitergehen.
  2. Bei den einzelnen Datasets kann man on-the-fly Komprimierung einschalten, um den physischen notwendigen Platz noch weiter zu verringern; ohne wirklich spürbare Performanceeinbußen.
  3. Mit der Snapshotfunktion von ZFS kann man eine regelmäßige Datensicherung basierend auf inkrementellen Snapshots durchführen.

Datensicherung mit syncoid

Genau diese snapshotbasierte Datensicherung kann man mit syncoid` wirklich sehr einfach durchführen. Das Tool `syncoid`findet ihr zusammen mit der "Mutterapplikation" `sanoid auf GitHub. Dort ist auch die Installation beschrieben. Die Anwendung ist sehr einfach. Ich beschreibe sie anhand des folgenden Szenarios:

Szenario

Es gibt bei mir zwei Pools mit Daten, wie virtuellen Maschinen (VM) oder Linux-Containern (LXC), sowie den Daten meines Fileservers. Das sind die Pools raidpool`und `ssdpool`. Darauf sind mehrere Datasets. Passend dazu gibt es zwei Festplatten, die als Backuppools fungieren: `backuphdd`und `backupssd.

Sicherung ausführen

Um den raidpool (hier mit Ausnahme eines bestimmten Datasets) zu sichern reicht der Befehl:

syncoid -r --exclude=vmstore/backup raidpool backuphdd

Die SSD kann komplett gesichert werden mit

syncoid -r ssdpool backupssd

Beim ersten Mal hat das bei mir mit einem zu gut zwei Dritteln gefüllten 6TB Pool und einer 1TB SSD etwa 3 Stunden gedauert. Die inkrementellen Snapshots funktionieren dann in wenigen Sekunden. Inkrementelle Backups werden mit den selben Kommandos aufgerufen.

Übrigens: Das Backupmedium muss nicht im selben Computer verbaut sein. Das funktioniert auch verschlüsselt über SSH z.B. mit einem NAS oder mit einem externen Medium wie einer USB Festplatte. Einzig ZFS auf dem Zielmedium ist Voraussetzung.

Und der Ernstfall?

Den habe ich kürzlich gehabt: Ich habe mir versehentlich ein Dataset gelöscht, weil ich in Proxmox auf move statt remove geklickt habe. Mit

syncoid backuphdd/vmstore/vm/vm-160-cloudinit ssdpool/vm/vm-160-cloudinit

den gesicherten Snapshot an die neue, richtige Stelle zurückgespielt und schon ging es wieder los. Hat wirklich nur ein paar Sekunden gedauert.

Bild Screenshot von Ulrich Ivens

Ich freue mich über eure Kommentare und eure Erfahrungen mit ZFS und Proxmox.


Der Beitrag "Datensicherung mit ZFS und syncoid" von Ulrich Ivens steht unter der Lizenz CC BY-SA 4.0, sofern an integrierten Medien nichts anderes angegeben ist.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.