Auf einem der von mir verwalteten Server wird die von Ihnen beschriebene Art der Konfiguration ausgeführt. Es verfügt über sechs 1-TB-Festplatten mit einem LUKS-verschlüsselten RAIDZ-Pool. Ich habe auch zwei 3-TB-Festplatten in einem LUKS-verschlüsselten ZFS-Spiegel, die wöchentlich ausgetauscht werden, um vom Standort entfernt zu werden. Der Server verwendet diese Konfiguration seit ungefähr drei Jahren und ich hatte nie ein Problem damit.
Wenn Sie unter Linux ZFS mit Verschlüsselung benötigen, empfehle ich dieses Setup. Ich verwende ZFS-Fuse, nicht ZFS unter Linux. Ich glaube jedoch, dass dies keinen Einfluss auf das Ergebnis haben würde, außer dass ZFS unter Linux wahrscheinlich eine bessere Leistung als das von mir verwendete Setup hat.
In diesem Setup werden redundante Daten mehrmals verschlüsselt, da LUKS Z-RAID nicht "kennt". In der LUKS-on-mdadm-Lösung werden Daten einmal verschlüsselt und lediglich mehrmals auf Festplatten geschrieben.
Beachten Sie, dass LUKS RAID nicht kennt. Es weiß nur, dass es auf einem Blockgerät sitzt. Wenn Sie mit mdadm ein RAID-Gerät erstellen und dieses dann luksformat
, repliziert mdadm die verschlüsselten Daten auf die zugrunde liegenden Speichergeräte, nicht auf LUKS.
Frage 2.8 der LUKS-FAQ befasst sich mit der Frage, ob die Verschlüsselung über RAID erfolgen soll oder umgekehrt . Es enthält das folgende Diagramm.
Filesystem <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks <- bottom
Da ZFS die RAID- und Dateisystemfunktionen kombiniert, muss Ihre Lösung wie folgt aussehen.
RAID-Z and ZFS Filesystem <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks <- bottom
Ich habe die unformatierten Partitionen als optional aufgeführt, da ZFS davon ausgeht, dass statt einer Partition ein unformatierter Blockspeicher verwendet wird. Sie können Ihren Zpool zwar mithilfe von Partitionen erstellen, dies wird jedoch nicht empfohlen, da hierdurch eine unnötige Verwaltungsebene hinzugefügt wird, und dies muss bei der Berechnung des Offsets für die Ausrichtung der Partitionsblöcke berücksichtigt werden.
Würde es die Schreibleistung nicht erheblich beeinträchtigen? [...] Meine CPU unterstützt Intel AES-NI.
Solange Sie eine Verschlüsselungsmethode wählen, die von Ihrem AES-NI-Treiber unterstützt wird, sollte kein Leistungsproblem vorliegen. Wenn Sie Cryptsetup 1.6.0 oder neuer haben, können Sie feststellen, cryptsetup benchmark
welcher Algorithmus die beste Leistung erbringt .
Diese Frage zu den empfohlenen Optionen für LUKS kann ebenfalls von Wert sein.
Angesichts der Tatsache, dass Sie Hardware-Verschlüsselungsunterstützung haben, sind Leistungsprobleme aufgrund von Partitionsfehlausrichtungen wahrscheinlicher.
ZFS unter Linux hat dem Befehl die ashift
Eigenschaft hinzugefügt, mit derzfs
Sie die Sektorgröße für Ihre Festplatten angeben können. ashift=12
Sagen Sie gemäß der verknüpften FAQ, dass Sie Laufwerke mit einer Blockgröße von 4 KB verwenden.
Die LUKS-FAQ besagen, dass eine LUKS-Partition eine Ausrichtung von 1 MB hat. In den Fragen 6.12 und 6.13 wird dies ausführlich erörtert. Außerdem erhalten Sie Hinweise, wie Sie den LUKS-Partitionsheader vergrößern können. Ich bin mir jedoch nicht sicher, ob es möglich ist, es groß genug zu machen, um sicherzustellen, dass Ihr ZFS-Dateisystem an einer 4K-Grenze erstellt wird. Ich würde gerne hören, wie das für Sie funktioniert, wenn Sie dieses Problem lösen müssen. Da Sie 2-TB-Laufwerke verwenden, tritt dieses Problem möglicherweise nicht auf.
Wird ZFS bei der Ausführung von Device-Mapper-LUKS-Containern im Gegensatz zu physischen Geräten auf Festplattenfehler aufmerksam?
ZFS ist über Festplattenfehler informiert, sofern es diese problemlos lesen und beschreiben kann. ZFS erfordert Blockspeicher und kennt die Besonderheiten dieses Speichers und dessen Herkunft nicht. Es werden nur die Lese-, Schreib- oder Prüfsummenfehler protokolliert, die aufgetreten sind. Es liegt an Ihnen, den Zustand der zugrunde liegenden Speichergeräte zu überwachen.
Die ZFS-Dokumentation enthält einen Abschnitt zur Fehlerbehebung, der es wert ist, gelesen zu werden. Der Abschnitt zum Ersetzen oder Reparieren eines beschädigten Geräts beschreibt, was während eines Fehlerszenarios auftreten kann und wie Sie es möglicherweise beheben können. Sie würden hier dasselbe tun wie bei Geräten ohne ZFS. Überprüfen Sie das Syslog auf Nachrichten von Ihrem SCSI-Treiber, HBA- oder HD-Controller und / oder der SMART-Überwachungssoftware und verfahren Sie dann entsprechend.
Wie wäre es mit Deduplizierung und anderen ZFS-Funktionen?
Alle ZFS-Funktionen funktionieren unabhängig davon, ob der zugrunde liegende Blockspeicher verschlüsselt ist oder nicht.
Zusammenfassung
- ZFS auf LUKS-verschlüsselten Geräten funktioniert gut.
- Wenn Sie über eine Hardwareverschlüsselung verfügen, wird die Leistung nicht beeinträchtigt, solange Sie eine von Ihrer Hardware unterstützte Verschlüsselungsmethode verwenden. Verwenden Sie
cryptsetup benchmark
diese Option , um festzustellen , was auf Ihrer Hardware am besten funktioniert.
- Stellen Sie sich ZFS als RAID und Dateisystem vor, die zu einer Einheit zusammengefasst sind. Im obigen ASCII-Diagramm ist dargestellt, wo es in den Speicherstapel passt.
- Sie müssen jedes LUKS-verschlüsselte Blockgerät entsperren, das das ZFS-Dateisystem verwendet.
- Überwachen Sie den Zustand der Speicherhardware auf die gleiche Weise wie jetzt.
- Beachten Sie 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.