In diesem Blogpost wird die Einrichtung eines verschlüsselten Datasets auf RAIDZ unter Verwendung von Linux, Proxmox, Ubuntu, Debian und dem ZFS-Dateisystem dargestellt, um maximale Datensicherheit und Ausfallsicherheit zu gewährleisten.

Informationen zu RAIDZ

Die Zahl hinter der Bezeichnung RAIDZ steht für die Fehlertoleranz des RAID-Verbundes, also wie viele Festplatten ausfallen können, ohne dass der ganze RAID-Verbund ausfällt. Bei RAIDZ1 wäre dies eine Festplatte, die problemlos ausfallen und ersetzt werden kann.

Der Speicherplatz, der einem zur Verfügung steht, kann man anhand folgender Formel berechnen

(Anzahl der Festplatten minus Fehlertoleranz) * Kapazität der kleinsten Festplatte

Beispiel Einrichtung RAIDZ1 mit 4 x 18TB Festplatten

Mein Beispiel, wie man Raidz1 einrichtet, habe ich anhand eines Setups mit vier 18 TB-Festplatten von Toshiba erstellt. Nach der Einrichtung stehen mir dann effektiv 54TB Speicherplatz zur Verfügung.

ZPool RAIDZ1 mit vier Festplatten erstellen

Zum Erstellen verwende ich folgenden Befehl

/sbin/zpool create -f \
    -o 'ashift=12' \
    -O 'mountpoint=none' tank1-raidz1 raidz1 \
	ata-TOSHIBA_MG09ACA18TE_123456789aba \
	ata-TOSHIBA_MG09ACA18TE_123456789abb \
	ata-TOSHIBA_MG09ACA18TE_123456789abc \
	ata-TOSHIBA_MG09ACA18TE_123456789abd
  • -f ist notwendig um ein ZPool mit Festplatten unterschiedlicher Größe zu erstellen
  • mountpoint=none um das Root Dataset nicht ins System einzuhängen, da dieses nicht verschlüsselt ist
  • tank1-raidz1 ist hierbei der Name des ZPools
  • raidz1 gibt hier die Fehlertoleranz an (kann ausgetauscht werden durch raidz1, raidz2, raidz3 um eine höhere Fehlertoleranz zu erreichen)

Status des ZPools überprüfen

Mit dem nachfolgenden Befehl kann man sich alle ZPools und einen kurzen Status der Pools anzeigen lassen

zpool list

Der nächste Befehl zeigt dann einen detaillieren Status des ZPools an, so sieht man die verwendeten Festplatten, ob im Pool Fehler aufgetreten sind oder Aufgaben anstehen.

# Status aller Pools
zpool status

# Status eines Pool
zpool status tank1-raidz1

Verschlüsseltes ZFS Dataset erstellen

Zum Erstellen meines ZFS Datasets habe ich nachfolgenden Befehl verwendet

zfs create \
	-o mountpoint=/tank1-raidz1/tank1-encrypted \
	-o encryption=aes-256-gcm \
	-o keyformat=passphrase tank1-raidz1/tank1-encrypted
  • -o mountpoint=/tank1-raidz1/tank1-encrypted (spezifiziert den mount-point des Datasets im Host System
  • -o keyformat=passphrase (Passworteingabe im Terminal)

Status des ZFS Datasets überprüfen

Mit nachfolgendem Befehl kann man sich alle ZFS Datasets anzeigen lassen und erhält einen kurzen Status dazu

zfs list

Möchte man wissen, ob das Dataset verschlüsselt ist und ob die die Keys zum Entschlüsseln geladen ist, kann man dies mit nachfolgendem Befehl überprüfen.

zfs get -p encryption,keystatus

Dataset im verschlüsselten Dataset

Erstellt man ein neues Dataset im verschlüsselten Dataset ist dies automatisch verschlüsselt, solange man nichts anderes beim Erstellen angibt.

zfs create tank1-raidz1/tank1-encrypted/junk

Mit ZFS und RAIDZ erhält man eine effiziente Speicherlösung, die einen höheren Grad an Datensicherheit durch Verschlüsselung und Ausfallsicherheit gewährt. Mit den genannten Befehlen und Schritten kann jeder sein ZFS-Pool/Dataset erstellen und überwachen. Die Überwachung steht dabei besonders im Vordergrund, da Hardwarefehler trotzdem jederzeit auftreten können und die fehlerhafte Hardware so schnell wie möglich ersetzt werden muss.

Festplatten für RAIDZ kaufen

Anbei meine Kaufempfehlungen für Festplatten für RAIDZ von den drei großen Herstellern.

*Affiliate Links: Mit einem Kauf bei Amazon unterstützt du uns um zum Beispiel neue Spiele, Lenkräder oder ähnliches zu Testen. Für euch entstehen beim Kauf keinerlei Mehrkosten ❤️