Hallo allerseits,
ich habe vor kurzem 2 identische NAS-Systeme gebaut. Darauf kommt ein RAID 5 (mittels mdadm) zum Einsatz, das per LUKS verschlüsselt ist.
Hinweis: Verschlüsselung wurde gewählt, da das NAS auch mal physisch von A nach B transportiert wird. ☺
Wenn das NAS jedoch an seinem Platz steht, soll die Ent-/Verschlüsselung automatisch passieren (ohne Passwort-Eingabe), weshalb LUKS mit einem Keyfile auf einem USB-Stick arbeitet.
Soweit der Plan ☺
Zunächst habe ich den USB-Stick und das LUKS-Device in der fstab angegeben und das RAID-Device entsprechend in der crypttab.
Bei dem NAS 1 funktioniert das bisher einwandfrei.
Bei NAS 2 kommt es aber öfter vor, dass das LUKS-Device nach dem Booten nicht gemountet ist. Bzw. das NAS bleibt beim Booten hängen (ganz schlecht für ein NAS ohne Bildschirm 😛 ) und meint, dass das LUKS-Device noch nicht bereit ist oder nicht gefunden wurde. Ich nehme an, dass der USB-Stick evtl. länger zum Initialisieren braucht o.Ä. und währenddessen versucht wird das LUKS-Device zu öffnen, was aufgrund des fehlenden Keyfiles dann fehlschlägt.
Im Internet habe ich auch mehrfach die Aussage gefunden, dass man sich auf die Reihenfolge in der fstab etc. nicht unbedingt verlassen kann.
Deswegen kam die neue Idee das Ganze per udev zu machen, da ich damals bereits einen ähnlichen Fall hatte, wo das alles prima funktioniert hat.
Per udev wird also der USB-Stick erkannt und dafür ein Script gestartet, welches zunächst den Stick mountet, dann das LUKS-Device öffnet und anschließend das Dateisystem mountet.
Das funktioniert auf beiden NAS-System wie gewünscht: USB-Stick rein und zack, das verschlüsselte RAID ist da.
Leider gibt es ein kleines Problem:
Es kam jetzt schon 1-2 Mal vor, dass direkt nach dem Booten der Stick nicht erkannt wurde. Bzw., dass die udev-Regel für den Stick nicht sofort gegriffen hat und somit mein Script zum Öffnen/Mounten nicht aufgerufen wurde. Ziehe ich den Stick einmal ab und stecke ihn wieder an, greift die Regel und das Laufwerk ist gemountet.
Ich nehme mal an, dass der udev-Kram erst passiert, nachdem der Stick bereits im System bekannt ist und deswegen kein udev-Event ausgelöst wird. Das ist aber eine reine Vermutung.
Hat evtl. jemand eine Idee, wie ich das Problem des Nicht-Auto-Mounts beim Starten gelöst bekomme? Manuelles abziehen und ranstecken des Sticks ist leider keine Wahl 😛
Alternativ-Vorschläge sind ebenfalls willkommen ☺ Ziel: Boot –> mount USB-Device –> luksOpen mit keyfile von USB –> mount LUKS-Device (das Raid /dev/md0)
PS: Bisherige udev-Regel (80-usb-storage-custom.rules):
1 | KERNEL=="sd*1", ATTRS{idVendor}=="0ABC", SYMLINK+="meinusb", RUN+="/usr/local/bin/meinskript" |
fstab:
1 2 3 | ... /dev/meinusb /media/meinusb vfat noauto,ro 0 0 /dev/mapper/raid /media/raid xfs noauto,rw,noatime,nouser,sunit=256,swidth=512 0 0 |
Die crypttab ist leer, da das luksOpen ja per meinskript passiert.
Gruss,
MKay