Vor größeren Updates von OPNsense kann mit Hilfe von ZFS eine einfache und komplette Sicherung des aktuellen Zustands als Snapshot angelegt werden.

Diese Snapshots ermöglichen es uns, ähnlich den Snapshots in virtuellen Maschinen, zu einem exakten Zeitpunkt zurückzukehren. Dies funktioniert nur unter ZFS und nicht mit einer UFS-Installation von OPNsense.

Um den aktuellen Stand unseres Systems als Snapshot anzulegen, gehen wir wie folgt vor:

zfs snapshot -r zroot@working-23-1-6

Hierbei ist der zroot-Teil das Root-System, welches wir unter zfs list identifiziert haben und working-23-1-6 mein beliebiger Name, den ich für den Snapshot verwenden möchte. Die Option -r sorgt dafür, dass alle untergeordneten Dateisysteme ebenfalls einen Snapshot erhalten.

Eine Liste aller aktuellen Snapshots können wir nun über den folgenden Befehl machen:

zfs list -t snapshot

# NAME                                USED  AVAIL     REFER  MOUNTPOINT
# zroot@working-23-1-6                  0B      -       96K  -
# zroot/ROOT@working-23-1-6             0B      -       96K  -
# zroot/ROOT/default@working-23-1-6  2.39M      -     1.18G  -
# zroot/tmp@working-23-1-6              0B      -      236K  -
# zroot/usr@working-23-1-6              0B      -       96K  -
# zroot/usr/home@working-23-1-6         0B      -       96K  -
# zroot/usr/ports@working-23-1-6        0B      -     1.37G  -
# zroot/usr/src@working-23-1-6          0B      -     2.22G  -
# zroot/var@working-23-1-6              0B      -       96K  -
# zroot/var/audit@working-23-1-6        0B      -       96K  -
# zroot/var/crash@working-23-1-6        0B      -       96K  -
# zroot/var/log@working-23-1-6        148K      -     1.28M  -
# zroot/var/mail@working-23-1-6         0B      -      128K  -
# zroot/var/tmp@working-23-1-6          0B      -      100K  -

Sollten wir einen Snapshot nicht mehr benötigen, können wir diesen wie folgt entfernen:

zfs destroy -r zroot@working-23-1-6

Um automatischen Vorgängen oder ungewollten Löschvorgängen vorzugreifen, können wir die Snapshots auch auf hold setzen:

zfs hold -r keep zroot@working-23-1-6

Zum Überprüfen der Sperre führen wir den folgenden Befehl aus:

zfs holds -r zroot@working-23-1-6

Um die Sperre aufzuheben, z.B. um den Snapshot nach einem Upgrade zu entfernen:

zfs release -r keep zroot@working-23-1-6