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:
- 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.
- 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.
- 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
auf GitHub. Dort ist auch die Installation beschrieben. Die Anwendung ist sehr einfach. Ich beschreibe sie anhand des folgenden Szenarios:syncoid
` wirklich sehr einfach durchführen. Das Tool
`syncoid
`findet ihr zusammen mit der "Mutterapplikation"
`sanoid
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
(hier mit Ausnahme eines bestimmten Datasets) zu sichern reicht der Befehl: raidpool
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.