daily zfs snapshots
In (Open)Solaris gab es eine Funktion mit dem Namen TimeMachine. Das sind einzelne Scripte, welche in regelmaessigen Abstaenden laufen und Snapshots der Dateisysteme erstellen.
Da es diese Funktion unter FreeBSD so noch nicht gibt, hatte ich mir gedacht, so ein Script selbst zu bauen. Wie ich dann feststellen durfte, gibt es bereits eine handvoll Scripte, die genaue diese Aufgabe auf verschiedene Art und Weise vollbringen.
Da ich aber ohnehin Uebung in Shellscripten brauchte, habe ich es einfach mal weiter geschrieben und dabei herausgekommen ist ein Script, welches taegliche, woechentliche, monatliche und jaehrliche Snapshots erstellen kann. Die Konfiguration wird nicht in ein Config file geschrieben sondern in Form von Properties direkt auf die ZFS-Partition geschrieben.
Einzig in der /etc/periodic.conf muss ein Eintrag
snapshot_zfs_enable="YES"
hinterlegt werden.
Das Script koennt ihr euch hier
runterladen. Dieses koennt ihr nach
/usr/local/etc/periodic/daily/900.snapshot_zfs
oder nach
/etc/periodic/daily/900.snapshot_zfs
entpacken. Wenn in der
/etc/periodic.conf
der Eintrag fuer snapshots drin ist, dann laeuft
das Script von nun an jeden Tag.
Jetzt koennen wir fuer eine ZFS Partition mal das Snapshot einschalten:
source:shell
# zfs set org.snap:auto-snapshot=on tank/storage
# zfs get org.snap:auto-snapshot
NAME PROPERTY VALUE SOURCE
tank/storage org.snap:auto-snapshot on local
tank/storage/foo org.snap:auto-snapshot on inherited from tank/storage
Mit diesen Einstellungen jeden Tag ein Snapshot erstellt, wobei 10
taegliche, 3 woechentliche und 3 monatliche Snapshots aufgehoben werden.
Zusaetzlich gibt es noch die Option fuer jaehrliche Snapshots. Die Zahl
der aufzuhebenden Snapshots laesst sich mit den Properties
org.snap:keep-daily
, org.snap:keep-weekly
, org.snap:keep-monthly
und org.snap:keep-yearly
festlegen.