ZFS Verschlüsselung

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

ZFS Verschlüsselung

Beitrag von king-crash » 08.03.2024 09:55:22

Hallo,

Ich wollte gerade auf meinem ZFS Pool ein verschlüsseltes Dateisystem anlegen:

Code: Alles auswählen

zfs create -o encryption=on -o keylocation=prompt -o keyformat=passphrase zfstest/encrypted
cannot create 'zfstest/encrypted': invalid property 'encryption'

modinfo zfs | grep version
version:        2.2.2-1
srcversion:     64DFECF22645F1BD34FFBB0
Ich habe den Treiber direkt in die Kernelsourcen einkompiliert (copy-builtin). Hat jemand eine Idee, warum ZFS encryption nicht kennt? Fehlt dem Kernel eine Funktion?

Grüße

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 09.03.2024 07:36:36

In wie weit weicht dein Kernel denn von den Debian Standard Kerneln ab?

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: ZFS Verschlüsselung

Beitrag von chrbr » 09.03.2024 21:33:04

king-crash hat geschrieben: ↑ zum Beitrag ↑
08.03.2024 09:55:22
Hat jemand eine Idee, warum ZFS encryption nicht kennt?
Bitte entschuldige die späte Antwort. Ich habe das nun auf einer externen USB Festplatte ausprobiert.

Code: Alles auswählen

root@lenovo:~# zfs create -o encryption=on -o keylocation=prompt -o keyformat=passphrase debian-pool/encrypted
Enter new passphrase:
Re-enter new passphrase:
Der Pool existiert und ist gemounted.

Code: Alles auswählen

root@lenovo:~# mount|grep debian-pool
debian-pool on /media/debian-pool type zfs (rw,xattr,noacl)
debian-pool/encrypted on /media/debian-pool/encrypted type zfs (rw,xattr,noacl)
Zur Diagnose die Version, mit der ich wohl etwas hinten dran bin. Ich verwende hier den Bookworm und nach apt-get update/upgrade/dist-upgrade aktuell.

Code: Alles auswählen

root@lenovo:~# modinfo zfs|grep version
version:        2.1.11-1
srcversion:     2A67DD2E7E0EEB32D97C879
vermagic:       6.1.0-18-amd64 SMP preempt mod_unload modversions 

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 11.03.2024 11:14:40

Mein Kernel weicht von der Konfiguration her deutlich vom Standardkernel ab. Daher die Frage was fehlen könnte. Oder wie ich das herausfinden könnte.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 11.03.2024 11:37:29

king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 11:14:40
Mein Kernel weicht von der Konfiguration her deutlich vom Standardkernel ab. Daher die Frage was fehlen könnte. Oder wie ich das herausfinden könnte.
Also so wie es für mich aussieht hast du ZFS mit Encryption Support gebaut, da es keine Option gibt ZFS ohne Encryption zu compilieren, siehe https://github.com/openzfs/zfs/blob/master/copy-builtin

Jetzt kommen noch weitere Fragen:
1) hast du das Feature encryption für deinen Pool aktiviert zpool get feature@encryption
2) Passen deine ZFS Userspace Tools (zpool, zfs, etc.) von der Version her, zu dem ZFS Source, die du in den Kernel einkompilierst?

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: ZFS Verschlüsselung

Beitrag von chrbr » 11.03.2024 11:40:41

Du könntest versuchen,
  • mit strace oder ähnlichem herauszufinden, wo es hängt
  • vom der Original-Kernel-Konfiguration stückweise deine Änderungen einzubauen, um zu sehen, ab wo es nicht mehr funktioniert.
Vielleicht kann jemand einen Tipp geben, wenn Du wie von bluestar angeregt die Änderungen zur Original-Kernel-Konfiguration postest. Ich kann da mangels Erfahrung allerdings kaum helfen.

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 11.03.2024 15:29:45

Ich habe das normale Debian Paket zfsutils-linux (2.2.3-1~bpo12+). Das ist älter als die Version im Kernel, Verschlüsselung gibt es allerdings schon viel länger und alles Andere funktioniert. Als Problemkandidat daher eher unwahrscheinlich.

- "zpool get all | grep -i encryption" liefert:
"pool unsupported@com.datto:encryption incative local"

- "zpool get feature@encryption" gibt nichts zurück.
mit strace oder ähnlichem herauszufinden, wo es hängt
Wie genau würdest du da vorgehen?

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: ZFS Verschlüsselung

Beitrag von chrbr » 11.03.2024 17:03:16

king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 15:29:45
Ich habe das normale Debian Paket zfsutils-linux (2.2.3-1~bpo12+). Das ist älter als die Version im Kernel, Verschlüsselung gibt es allerdings schon viel länger und alles Andere funktioniert. Als Problemkandidat daher eher unwahrscheinlich.
In "bookworm" ist 2.1.11-1 aktuell. Du bist also mit der Debian Version mindestens auf "bookworm+backports" oder hast selbst etwas zusammengestellt.
king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 15:29:45
"zpool get all | grep -i encryption" liefert:
"pool unsupported@com.datto:encryption incative local"
Eine seltsame Meldung ist das.
king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 15:29:45
mit strace oder ähnlichem herauszufinden, wo es hängt

Wie genau würdest du da vorgehen?
Da müsste ich mich mittels Anleitungen selbst einarbeiten.

Aber ich habe eine Gegenfrage: Besteht für dich die Möglichkeit, ZFS mit Encryption auf dem "normalen" Bookworm mit dem älteren ZFS zu verwenden? Ich meine gelesen zu haben, dass aktuell auf den Debian Entwicklerversionen sehr viel in Bewegung ist.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 11.03.2024 18:47:06

king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 15:29:45

- "zpool get all | grep -i encryption" liefert:
"pool unsupported@com.datto:encryption incative local"
Dein pool braucht wohl mal ein zpool upgrade.

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: ZFS Verschlüsselung

Beitrag von chrbr » 11.03.2024 19:22:07

Nur zur Vollständigkeit:
chrbr hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 17:03:16
king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 15:29:45
"zpool get all | grep -i encryption" liefert:
"pool unsupported@com.datto:encryption incative local"

Eine seltsame Meldung ist das.
In https://openzfs.github.io/openzfs-docs/ ... res.7.html ist beschrieben, wie die Fehlermeldungen aufgebaut sind. Bei einer Suche nach "zpool unsupported" bin ich auch auf "com.dephix" gestossen. Das liest sich, als hätte es mit Rechnernamen oder ähnlichem zu tun. Das sind aber Teile der GUID, die in der Seite oben beschrieben werden. Mir ist das noch nicht untergekommen, deshalb diese Ergänzung.

Ansonsten hat bluestar offensichtlich mehr Fundiertes beizutragen als ich. Darum halte ich mich nun zurück und verfolge die Diskussion aber mit. Es gibt immer etwas zu lernen.

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 11.03.2024 19:25:38

"Pool 'pool' already has all supported features enabled."

Ist encryption evtl nicht mitkompiliert worden? Gibt es da im configure script eine enable Option?

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 11.03.2024 19:35:48

king-crash hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 19:25:38
"Pool 'pool' already has all supported features enabled."

Ist encryption evtl nicht mitkompiliert worden? Gibt es da im configure script eine enable Option?
Dann sind deine Userspace Tools zu alt/inkompatibel mit dem Kernel.

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 12.03.2024 10:13:16

Tatsächlich scheinen die Userspace Tools das Problem zu sein.
Ich habe das Debian Package zfsutils-linux aus den Backports (2.2.3-1~bpo12+) nativ installiert, mit dem es bekanntermaßen nicht funktioniert.
Nehme ich jetzt das "zpool" aus dem manuell kompilierten Zweig (2.2.3) zeigt er mir:
pool feature@encryption enabled local
und
Some supported and requested features are not enabled on the pool.
Sollte das nicht eigentlich die gleiche Version sein?
Wie kann ich aus meiner eigenen Version der Utils am Besten ein Debian Paket erzeugen?

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 12.03.2024 12:04:17

king-crash hat geschrieben: ↑ zum Beitrag ↑
12.03.2024 10:13:16
Tatsächlich scheinen die Userspace Tools das Problem zu sein.
Ich habe das Debian Package zfsutils-linux aus den Backports (2.2.3-1~bpo12+) nativ installiert, mit dem es bekanntermaßen nicht funktioniert.
Warum verwendest mischst du die ZFS Versionen, laut deinem ersten Post hast du den Source 2.2.2-1 des Moduls in deinen Kernel eingebaut. Wenn ich mir das Paket "zfslinux-utils" anschaue, dann existiert im Paket sogar die Option

Code: Alles auswählen

Breaks: openrc, spl (<< 0.7.9-2), spl-dkms (<< 0.8.0~rc1), zfs-dkms (>> 2.1.11-1...), zfs-dkms (<< 2.1.11-1)
Aus den letzten beiden zfs-dkms Versions-Einschränkungen leite ich ab, dass Kernel-Modul (oder builtin) und Userspace Utilities von der Version her immer exakt übereinstimmen müssen.

Am Rande sei mal gefragt, warum brauchst du ZFS 2.2 oder 2.3 gibt's da Features die in ZFS 2.1 nicht enthalten sind, die du unbedingt benötigst?

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 12.03.2024 14:51:49

Tatsache, da habe ich wohl Chaos angerichtet.
Die Kernelmodule 2.2 laufen schon eine Weile. Damals hatte ich die für meine damals neuere als Standard Kernelversion gebraucht, die ich wiederum für irgend einen Treiber gebraucht hatte. Die ältere ZFS Version wollte mit dem neuen Kernel damals nicht kompilieren.
Ich werde jetzt versuchen den Kernel auf ZFS Version 2.2.3 zu heben.

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 13.03.2024 00:31:17

1.
So jetzt habe ich Kernel 6.6.13 mit ZFS Modul "version: 2.2.3-1" und original Debian zfsutils-linux "Version: 2.2.3-1~bpo12+1". Das Problem besteht hier weiterhin.

2.
Ah ich glaube ich komme der Sache näher.
# which zpool
/usr/local/sbin/zpool
Vermutlich tummeln sich noch Relikte eines versehentlichen "make installs".

3.
Ja sieht gut aus, jetzt lassen sich verschlüsselte Volumes anlegen.

Vielen Dank für die Hilfe!

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 13.03.2024 08:32:12

Nachtrag:
Der Auf dem Pool ist auch mein Rootdateisystem, das das vom Grub direkt gebootet wird. Mit einem Verschlüsselten Volume darauf funktioniert das allerdings nicht mehr. Ich lande im Grub Rescue und ein "ls (hd0,gpt2)/" bringt invalid filesystem.
Mit diesem Live System https://github.com/leahneukirchen/hrmpf ließ sich mittels "zfs destroy pool/encrypted" das Volume wieder löschen und Grub bootet wieder. Falls jemandem die Gründe dazu bekannt sind, bitte gerne melden.

Daher Achtung:
Grub bootet scheinbar nicht von einem Pool auf dem ein verschlüsseltes Volume ist.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 13.03.2024 08:56:49

king-crash hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 08:32:12
Daher Achtung:
Grub bootet scheinbar nicht von einem Pool auf dem ein verschlüsseltes Volume ist.
Das stimmt so leider nicht, grub bootet problemlos, wenn ein verschlüsseltes Dateisystem in dem Root-Pool enthalten ist.

Vielleicht räumst du dein System einfach mal auf, bringst es in einen konsistenten Zustand bevor du hier solche Falschaussagen kundtust.

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 13.03.2024 14:19:23

Ich hatte überlegt zpool upgrade auszuführen, habe aber bedenken, dass dann grub wieder streikt und es nicht wieder rücksetzbar ist. Wenn du relativ sicher bist dass grub "2.06-13+deb12u1" mit dem Pool klarkommen sollte, werde ich das auf einer separaten Platte mit dem upgrade nocheinmal probieren.

Mit einem inkonsistenten Pool hat das nichts zu tun, wenn ZFS ihn Problemlos mouten kann, grub aber nicht. Offensichtlich ist der FS Treiber in grub unvollständig. Das soll kein Vorwurf an die Entwickler sein, ZFS hat unglaublich viele Features und Änderungen in den letzten Jahren gesehen. Ich möchte nur davor warnen, dass man sich hier unter Umständen Bootloaderseitig aussperren kann während der normale ZFS Treiber noch funktioniert.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 13.03.2024 14:34:18

king-crash hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 14:19:23
Ich hatte überlegt zpool upgrade auszuführen, habe aber bedenken, dass dann grub wieder streikt und es nicht wieder rücksetzbar ist. Wenn du relativ sicher bist dass grub "2.06-13+deb12u1" mit dem Pool klarkommen sollte, werde ich das auf einer separaten Platte mit dem upgrade nocheinmal probieren.
Wenn du vorhast den Kernel und die Intrd auf's ZFS zu legen, dann solltest du die Anleitung dementsprechend beachten und den Pool mit der Option -o compatibility=grub2 erzeugen.
king-crash hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 14:19:23
Mit einem inkonsistenten Pool hat das nichts zu tun, wenn ZFS ihn Problemlos mouten kann, grub aber nicht.
Ich sprach von einem konsistenten System ohne Versionschaos bei ZFS, dann hast du auch keine Probleme mit Grub.
king-crash hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 14:19:23
Ich möchte nur davor warnen, dass man sich hier unter Umständen Bootloaderseitig aussperren kann während der normale ZFS Treiber noch funktioniert.
Wenn du dich bei der Erzeugung des Pools an die Anleitung (https://openzfs.github.io/openzfs-docs/ ... stallation) hälst, dann passiert dies nicht.

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 13.03.2024 16:11:30

Ich sprach von einem konsistenten System ohne Versionschaos bei ZFS, dann hast du auch keine Probleme mit Grub.
Meine Befürchtung wäre, dass Grub nach einem sauberen Upgrade mit einem der neuen Features nicht mehr zurecht kommt.
Wenn du vorhast den Kernel und die Intrd auf's ZFS zu legen, dann solltest du die Anleitung dementsprechend beachten und den Pool mit der Option -o compatibility=grub2 erzeugen.
Genau das ist bereits seit langer Zeit der Fall. Es gibt 2 SSDs mit je einer Partition als ZFS RAID Mirror und auf einer der Platten ist noch eine kleine EFI Partition. Kann ich das compatibility Flag noch nachträglich setzen?

nvme0n1 259:0 0 1,8T 0 disk
├─nvme0n1p1 259:1 0 1G 0 part
└─nvme0n1p2 259:2 0 1,8T 0 part
nvme1n1 259:3 0 1,8T 0 disk
├─nvme1n1p1 259:4 0 1G 0 part /boot/efi
└─nvme1n1p2 259:5 0 1,8T 0 part
Kann ich eine der SSDs mit dd duplizieren und der Kopie eine andere "ID" zuweisen, dass diese nicht mehr dem ursprünglichen Pool zugehörig ist.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 13.03.2024 21:39:14

king-crash hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 16:11:30
Wenn du vorhast den Kernel und die Intrd auf's ZFS zu legen, dann solltest du die Anleitung dementsprechend beachten und den Pool mit der Option -o compatibility=grub2 erzeugen.
Genau das ist bereits seit langer Zeit der Fall. Es gibt 2 SSDs mit je einer Partition als ZFS RAID Mirror und auf einer der Platten ist noch eine kleine EFI Partition. Kann ich das compatibility Flag noch nachträglich setzen?
Nein, einmal aktivierte Features können nicht wieder abgeschaltet werden. Genau aus dem Grund empfiehlt die Installations-Doku mit zwei Pools zu arbeiten. der bpool wird explizit für die /boot Partition angelegt (mit entsprechender Größe, bei mir 1GB) und dieser Pool bekommt nur das Feature-Set aktiviert mit dem Grub keine Probleme hat. Den Rest deiner SSD/HDD wird zu dem rpool und da können sämtliche Features aktiv sein ohne das sich Grub daran stört.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 13.03.2024 21:39:46

king-crash hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 16:11:30
Kann ich eine der SSDs mit dd duplizieren und der Kopie eine andere "ID" zuweisen, dass diese nicht mehr dem ursprünglichen Pool zugehörig ist.
Welchen Sinn soll das haben?

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: ZFS Verschlüsselung

Beitrag von king-crash » 14.03.2024 08:06:28

Welchen Sinn soll das haben?
Dann kann ich den kopierten Pool upgraden und in einer VM testen ob grub ihn lesen kann.
... mit zwei Pools zu arbeiten ...
Eine separate Bootpartition kann ich aber auch ext4 Formatieren. Da bringt mir ZFS wenig Vorteile und ext hat keine Kompatibilitätsrisiken.
Eine 1G Partition ist noch da, dann wird das wohl der Weg sein. Die "compatibility=grub2" Option hatte ich überhaupt nicht auf dem Schirm. Ich glaube ich hatte damals die Anleitung von Arch Linux als Vorlage https://wiki.archlinux.org/title/Instal ... nux_on_ZFS. Dort steht mittlerweile auch explizit, dass Grub mit der Verschlüsselung ein Problem hat.

Die Bootpartition auf dem gespiegelten ZFS zu haben hatte den Vorteil, dass ich sie bei einem Defekt nicht verliere und das System noch schneller wiederherzustellen ist. Fällt dir eine einfache Lösung ein, wie ich diese automatisiert bei jeder Änderung sichern könnte?

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: ZFS Verschlüsselung

Beitrag von bluestar » 14.03.2024 11:05:16

king-crash hat geschrieben: ↑ zum Beitrag ↑
14.03.2024 08:06:28
Eine separate Bootpartition kann ich aber auch ext4 Formatieren. Da bringt mir ZFS wenig Vorteile und ext hat keine Kompatibilitätsrisiken.
Du kannst bei ZFS den Boot-Pool aber auch als mirror auslegen und Features wie Kompression und Snapshots für den Boot-Pool nutzen.
king-crash hat geschrieben: ↑ zum Beitrag ↑
14.03.2024 08:06:28
Fällt dir eine einfache Lösung ein, wie ich diese automatisiert bei jeder Änderung sichern könnte?
Ja einfach den Boot-Pool als Mirror auf beiden SSDs anlegen.

Antworten