GNU/Linux >> LINUX-Kenntnisse >  >> Linux

ZFS-RAID- und LUKS-Verschlüsselung unter Linux

Lösung 1:

Einer der von mir administrierten Server führt die von Ihnen beschriebene Konfiguration aus. Es verfügt über sechs 1-TB-Festplatten mit einem LUKS-verschlüsselten RAIDZ-Pool darauf. Ich habe auch zwei 3-TB-Festplatten in einem LUKS-verschlüsselten ZFS-Spiegel, die jede Woche ausgetauscht werden, um sie an einen anderen Ort zu bringen. Der Server verwendet diese Konfiguration seit ungefähr drei Jahren, und ich hatte noch nie ein Problem damit.

Wenn Sie ZFS mit Verschlüsselung unter Linux benötigen, empfehle ich dieses Setup. Ich verwende ZFS-Fuse, nicht ZFS unter Linux. Ich glaube jedoch, dass dies keinen Einfluss auf das Ergebnis hat, außer dass ZFS unter Linux wahrscheinlich eine bessere Leistung hat als das Setup, das ich verwende.

In diesem Setup werden redundante Daten mehrfach verschlüsselt, da LUKS Z-RAID nicht „kennt“. In der LUKS-on-mdadm-Lösung werden Daten einmal verschlüsselt und lediglich mehrmals auf die Festplatte geschrieben.

Denken Sie daran, dass LUKS RAID nicht kennt. Es weiß nur, dass es auf einem Blockgerät sitzt. Wenn Sie mdadm verwenden, um ein RAID-Gerät zu erstellen, und dann luksformat it, ist es mdadm, das die verschlüsselten Daten auf die zugrunde liegenden Speichergeräte repliziert, nicht LUKS.

Frage 2.8 der LUKS-FAQ befasst sich mit der Frage, ob die Verschlüsselung über RAID erfolgen sollte oder umgekehrt. Es bietet das folgende Diagramm.

Filesystem     <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks      <- bottom

Da ZFS die RAID- und Dateisystemfunktionalität kombiniert, muss Ihre Lösung wie folgt aussehen.

RAID-Z and ZFS Filesystem  <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks                  <- bottom

Ich habe die Rohpartitionen als optional aufgeführt, da ZFS erwartet, dass es Rohblockspeicher anstelle einer Partition verwendet. Während Sie Ihren Zpool mit Partitionen erstellen könnten, wird dies nicht empfohlen, da dies eine nutzlose Verwaltungsebene hinzufügt und bei der Berechnung Ihres Offsets für die Ausrichtung von Partitionsblöcken berücksichtigt werden muss.

Würde es die Schreibleistung nicht erheblich beeinträchtigen? [...] Meine CPU unterstützt Intel AES-NI.

Es sollte kein Leistungsproblem geben, solange Sie eine Verschlüsselungsmethode wählen, die von Ihrem AES-NI-Treiber unterstützt wird. Wenn Sie cryptsetup 1.6.0 oder neuer haben, können Sie cryptsetup benchmark ausführen und sehen Sie, welcher Algorithmus die beste Leistung liefert.

Diese Frage zu empfohlenen Optionen für LUKS kann ebenfalls von Wert sein.

Da Sie über Hardwareverschlüsselungsunterstützung verfügen, ist es wahrscheinlicher, dass Leistungsprobleme aufgrund von Partitionsfehlausrichtungen auftreten.

ZFS unter Linux hat den ashift hinzugefügt Eigenschaft zu zfs Befehl, mit dem Sie die Sektorgröße für Ihre Festplatten festlegen können. Laut der verlinkten FAQ, ashift=12 würde ihm mitteilen, dass Sie Laufwerke mit einer Blockgröße von 4K verwenden.

Die LUKS-FAQ besagt, dass eine LUKS-Partition eine Ausrichtung von 1 MB hat. Die Fragen 6.12 und 6.13 diskutieren dies im Detail und geben auch Ratschläge, wie man den Header der LUKS-Partition vergrößert. Ich bin mir jedoch nicht sicher, ob es möglich ist, es groß genug zu machen, um sicherzustellen, dass Ihr ZFS-Dateisystem auf einer 4K-Grenze erstellt wird. Ich würde gerne hören, wie das für Sie funktioniert, wenn dies ein Problem ist, das Sie lösen müssen. Da Sie 2-TB-Laufwerke verwenden, tritt dieses Problem möglicherweise nicht auf.

Erkennt ZFS Festplattenausfälle beim Betrieb auf Device-Mapper-LUKS-Containern im Gegensatz zu physischen Geräten?

ZFS erkennt Festplattenausfälle, sofern diese problemlos gelesen und beschrieben werden können. ZFS erfordert Blockspeicher und kümmert sich nicht um die Besonderheiten dieses Speichers und weiß nicht, woher er kommt. Es verfolgt nur alle Lese-, Schreib- oder Prüfsummenfehler, auf die es stößt. Es liegt an Ihnen, den Zustand der zugrunde liegenden Speichergeräte zu überwachen.

In der ZFS-Dokumentation gibt es einen lesenswerten Abschnitt zur Fehlerbehebung. Der Abschnitt zum Ersetzen oder Reparieren eines beschädigten Geräts beschreibt, was während eines Fehlerszenarios passieren kann und wie Sie es beheben können. Sie würden hier dasselbe tun wie bei Geräten ohne ZFS. Überprüfen Sie das Syslog auf Meldungen von Ihrem SCSI-Treiber, HBA- oder HD-Controller und/oder der SMART-Überwachungssoftware und handeln Sie dann entsprechend.

Wie sieht es mit der Deduplizierung und anderen ZFS-Funktionen aus?

Alle ZFS-Funktionen funktionieren gleich, unabhängig davon, ob der zugrunde liegende Blockspeicher verschlüsselt ist oder nicht.

Zusammenfassung

  1. ZFS auf LUKS-verschlüsselten Geräten funktioniert gut.
  2. Wenn Sie über Hardwareverschlüsselung verfügen, werden Sie keine Leistungseinbußen feststellen, solange Sie eine Verschlüsselungsmethode verwenden, die von Ihrer Hardware unterstützt wird. Verwenden Sie cryptsetup benchmark um zu sehen, was auf Ihrer Hardware am besten funktioniert.
  3. Stellen Sie sich ZFS als RAID und Dateisystem in einer Einheit vor. Sehen Sie sich das obige ASCII-Diagramm an, wo es in den Speicherstapel passt.
  4. Sie müssen jedes LUKS-verschlüsselte Blockgerät entsperren, das das ZFS-Dateisystem verwendet.
  5. Überwachen Sie den Zustand der Speicherhardware auf die gleiche Weise wie jetzt.
  6. Achten Sie auf die Blockausrichtung des Dateisystems, wenn Sie Laufwerke mit 4K-Blöcken verwenden. Möglicherweise müssen Sie mit luksformat-Optionen oder anderen Einstellungen experimentieren, um die Ausrichtung zu erhalten, die Sie für eine akzeptable Geschwindigkeit benötigen.

Update vom Februar 2020

Es ist sechs Jahre her, seit ich diese Antwort geschrieben habe. ZFS unter Linux v0.8.0 unterstützt native Verschlüsselung, die Sie in Betracht ziehen sollten, wenn Sie LUKS nicht unbedingt benötigen.

Lösung 2:

Eine alternative Implementierung besteht darin, ein ZVOL-Blockgerät zu erstellen (http://zfsonlinux.org/example-zvol.html), LUKS zu verwenden, um das neu erstellte ZVOL zu verschlüsseln, und dann ein ext4-Dateisystem (oder ein anderes) über dem verschlüsselten Block zu erstellen Gerät.


Linux
  1. Erstellen Sie einen verschlüsselten Dateitresor unter Linux

  2. Was Stratis von ZFS, Btrfs und Linux Volume Manager gelernt hat

  3. So verwenden Sie Snapshots, Klone und Replikation in ZFS unter Linux

  4. So installieren und konfigurieren Sie ZFS unter Linux mit Debian Jessie 8.1

  5. Linux – Sysfs und Devtmpfs?

Linux-Kernel und seine Funktionen

Installieren und konfigurieren Sie Ansible unter Linux

Installieren und Konfigurieren von Jenkins unter Linux

Linux-RAID

Überblick über RAMFS und TMPFS unter Linux

20 beste Festplatten- und Dateiverschlüsselungssoftware für Linux-Desktops