Dies ist eine alte Version des Dokuments!
ZFS Autosnapshot auf zvol und Datasets mounten
Mit ZFS-Autosnapshot kann man die verschiedenen Abständen von Datasets und Zvol's Snapshots anfertigen lassen. Das verhindert das z.B. Verschlüsselungstrojaner auf Windows größeren Schaden anrichten können. Eben max. das Snapshotalter, z.B. 10 Minuten.
Installation und Konfiguration
Annahme hier ist ein Proxmox 7.3 System mit Kernel 5.19. Für Installation benutzen wir wie immer „apt“.
apt install zfs-auto-snapshot
Nach der Installation ist Autosnapshot bereits für alle Zvol's und Datasets aktiviert. Viel wichtiger ist die Frage ob ich die Autosnapshots überall haben möchte. Ich mach das genau umgekehrt. Ich deaktiviere global und aktiviere dann einzelne Disks wo ich das für sinnvoll halte.
Um das ganze manuell unter Kontrolle zu haben musst gleich nach der Installation die Autosnapshotfunktion für alle Pool's deaktivieren. Damit kannst du danach einzelen Disks aktivieren.
zfs set com.sun:auto-snapshot=false rpool zfs set com.sun:auto-snapshot=false Poolname-was-auch-immer
rpool com.sun:auto-snapshot false local rpool/ROOT com.sun:auto-snapshot false inherited from rpool rpool/ROOT/pve-1 com.sun:auto-snapshot false inherited from rpool rpool/data com.sun:auto-snapshot false inherited from rpool
Enzellene Disks aktivierst du so:
zfs set com.sun:auto-snapshot=true pool/data/vm-110-disk-0
Umgekehrt gehts auch mit zfs inherit
Zeiten für die Snapshots kannst du hier konfigurieren:
/etc/cron.d/zfs-auto-snapshot # hier stelle ich gerne 10 Minuten ein /etc/cron.daily/zfs-auto-snapshot # nach blieben anpassen /etc/cron.hourly/zfs-auto-snapshot # nach blieben anpassen /etc/cron.monthly/zfs-auto-snapshot # nach blieben anpassen /etc/cron.weekly/zfs-auto-snapshot # nach blieben anpassen
Die Files sind selbsterklärend.
Achtung: Snapshot Zeit ist immer UTC damit man bei Zeitumstellungen nicht durcheinander kommt.
Snapshots mounten (vdev)
Natürlich möchtest du auch wieder Daten aus den Snapshots herausholen. Hierfür muss Snapshots als DEV sichtbar machen. Du kannst das auf ganze Pools oder auf einzellne Disks anwenden.
zfs set snapdev=visible pool/data/vm-110-disk-0
Danach kannst du das DEV read only mounten. z.B.
mount -o noload /dev/zvol/rpool/data/vm-110-disk-0@zfs-auto-snap-2022-12-31-0638-part1 /mnt/snapshots
Snapshots mounten (datasets)
Bei Datasets ist es einfacher, kann mit z.B.
mount -t zfs rpool/data/home@rep_home_2022-07-05_00:36:48 /mnt/snapshots
eingebunden werden.
Um das ganze automatisch und elegant mit ZFS zu gestalten machten den Ordner .zfs
in Datasets sichtbar. Z.B.
zfs set snapdir=visible rpool/data/home
Danach wird das gewünschte Snapshot automatisch beim Zugriff auf .zfs/snapshot/rep_home_2022-07-16_00:01:25
gemountet.