OPNsense – Backup Boot-Environment unter ZFS

Diese Anleitung ist Teil der Reihe OPNsense Backups – Übersicht.


[BOOT-ENVIRONMENTS UNTER ZFS]
Mit der 22.1 habe ich direkt die Chance ergriffen und meine Sense komplett neu aufgesetzt, natürlich direkt mit dem ZFS-Dateisystem. Dies verschafft mir eine weitere „Ebene des Backups“, womit ich etwaigen Problemen mit Updates oder größerer Fehlkonfiguration vorbeugen kann. Die Anwendung ist recht simpel: Vor dem Einspielen eines Updates oder vor „größeren“ Änderungen an der Konfiguration wird ein Boot-Environment (BE) erstellt, mit dem ich jederzeit den Zustand beim Erstellen innerhalb weniger Minuten wiederherstellen kann. Gesteuert wird dies über die Konsole mit dem Tool „bectl“ und folgenden Parametern:

bectl list ## listet sämtliche vorhandenen BE auf
bectl create [NAME] ## erstellt ein BE mit dem Namen [NAME]
bectl rename [NAME] [NAME NEW] ## Benennt ein BE von [NAME] nach [NAME NEW] um
bectl activate [NAME] ## aktiviert das BE [NAME] nach einem Reboot
bectl destroy [NAME] ## löscht das BE mit dem Namen [NAME]

In der Praxis sieht das dann so aus, im Beispiel vor dem Update von 22.1 auf 22.1.1:

root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
default NR / 1.02G 2022-01-13 06:34

NR bedeutet, dass dieses BE jetzt (N) und nach Reboot (R) aktiv ist. „default“ ist nur der Name des BE, wenn noch nie mit BE gearbeitet wurde.

Nun wird das BE für die alte Version (22.1) erstellt, zu der man ggf. zurückkehren möchte.

root@RC100-G3-Failover:~ # bectl create 22.1
root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1 - - 160K 2022-02-17 08:32
default NR / 1.02G 2022-01-13 06:34

 
Da das bald folgende Update im aktuell aktiven BE erfolgt, nenne ich es beim Namen der zukünftigen Version (22.1.1).

root@RC100-G3-Failover:~ # bectl rename default 22.1.1
root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1 - - 1.25M 2022-02-17 08:32
22.1.1 NR / 1.03G 2022-01-13 06:34

 
Nun erfolgt das Update auf die neue Version, wie gehabt mache ich das über das GUI. Anschließend nochmal ein informativer Blick auf die BE der mir verrät, dass sich einiges getan hat.

root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1 - - 441M 2022-02-17 08:32
22.1.1 NR / 1.46G 2022-01-13 06:34

 
Nachdem ich nun festgestellt habe, dass ich die neue Version erstmal nicht haben möchte, kehre ich einfach zur vorherigen Version zurück indem ich das 22.1 BE aktiviere.

root@RC100-G3-Failover:~ # bectl activate 22.1
Successfully activated boot environment 22.1

root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1 R - 1.02G 2022-02-17 08:32
22.1.1 N / 458M 2022-01-13 06:34
root@RC100-G3-Failover:~ # reboot

Das 22.1 BE wird nach dem Reboot aktiv sein (R), bis dahin ist das 22.1.1 BE aktiv (N).

Der Reboot bringt mich nun zurück zur vorherigen Version, was mir bei den BE auch angezeigt wird.

root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1 NR / 1.04G 2022-02-17 08:32
22.2.1 - - 477M 2022-01-13 06:34

Das 22.1 BE ist jetzt aktiv (N) und wird es auch nach einem Reboot noch sein (R).

Nachdem ich zwischenzeitlich doch wieder zur neuen Version „zurückgegangen“ bin...

root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1 - - 475M 2022-02-17 08:32
22.1.1 NR / 1.47G 2022-01-13 06:34

 
...brauche ich das Backup-BE der 22.1 nicht mehr und lösche es, Ordnung muss sein...

root@RC100-G3-Failover:~ # bectl destroy 22.1
root@RC100-G3-Failover:~ # bectl list
BE Active Mountpoint Space Created
22.1.1 NR / 1.03G 2022-01-13 06:34

 

Das klingt soweit zwar recht einfach, in der Praxis habe ich aber dennoch immer wieder meine Problemchen mit dem „Umdenken“. Vor dem nächsten Update muss das aktuelle BE 22.1.1 nämlich in die neue Version umbenannt werden, bevor das BE für die „alte“ Version 22.1.1 erstellt wird. Das sorgt irgendwie jedes Mal für eine kleine Blockade in meinem Kopf, aber ich weiß ja, wo ich nachschauen kann… 😊

---

Vielen Dank an den User tiermutter für diese Anleitung!

Wenn Du Fragen zu dieser Anleitung hast, dann schau doch einfach mal bei uns im vorbei!