Angesichts der Tatsache, dass Sie über alle Grundvoraussetzungen verfügen, insbesondere über ECC-RAM, ist ZFS (über die Implementierung von ZFS On Linux ) möglicherweise eine verwendbare Option.
Im Gegensatz zu btrfs, das viele Designideen von ZFS entlehnt, ist ZFS ein bewährtes (Volume Manager und) Dateisystem. Sicher, der Linux-Port weist einige raue Kanten auf, die im Laufe der Zeit ausgeglichen werden, aber der Code und das Design wurden in einer Reihe von realen Fehlerszenarien getestet.
Sie können ZFS entweder mit zwei separaten Partitionen in einer Spiegelkonfiguration oder mit einer Partition und Einstellung copies=2
im Root-Dateisystem des Pools verwenden. Der Speicherplatz und der Aufwand für die E / A-Leistung wären ähnlich. Entweder können Sie auf größere Festplatten oder auf Konfigurationen mit mehreren Festplatten migrieren, wenn sich Ihre Anforderungen mit der Zeit ändern. Sie können raidz vdevs verwenden (mit unterschiedlichen Redundanzstufen: eine, zwei oder drei Festplatten), dies ist jedoch problematisch, falls Sie jemals die Redundanzstufe ändern möchten.
Ich würde vorschlagen, ernsthaft in Betracht zu ziehen, ZFS über LUKS auszuführen.
Das Gegenteil (Ausführen von LUKS auf ZFS) ist ebenfalls möglich, jedoch wesentlich aufwändiger. Sie könnten auch so etwas wie ecryptfs auf unverschlüsseltem ZFS ausführen, aber dadurch gehen möglicherweise erhebliche Mengen an Dateisystem-Metadaten verloren.
Mit anderen Worten, erstellen Sie LUKS-Container (einen für jedes Laufwerk oder jede Partition) und verwenden Sie diese Container dann, um einen ZFS-Pool zu erstellen. Das Ausführen von ZFS auf LUKS sollte in den meisten Szenarien ausreichen, um einen Offline-Angreifer zu verhindern, obwohl dies für einen Online-Angreifer kein Hindernis darstellt. Ob dies ein Problem ist, hängt von Ihrem Bedrohungsmodell ab. Bei Offsite-Sicherungen ist jedoch der Offline-Zugriff häufig der wichtigere Aspekt.
Das Ausführen von zwei separaten Partitionen als separate LUKS-Container sollte helfen, den LUKS-Header nicht zu beschädigen, sodass auf beide Kopien nicht zugegriffen werden kann. Andere Methoden können dies jedoch ebenfalls tun (z. B. eine sicher gespeicherte LUKS-Header-Sicherung). Durch das Ausführen eines LUKS-Containers mit einer Partition für jedes Laufwerk kann ZFS Entscheidungen über das Speichern von Dateisystem-Metadaten an verschiedenen, redundanten Speicherorten treffen.
Wenn Sie mitmachen copies=2
, stellen Sie sicher, dass Sie dies sofort beim Erstellen des Pools einstellen. Mit anderen Worten, Sie möchten etwas wie:
cryptsetup luksFormat /dev/sdx
cryptsetup luksOpen /dev/sdx sdx-crypt
zpool create -O copies=2 tank /dev/mapper/sdx-crypt
und nicht
cryptsetup luksFormat /dev/sdx
cryptsetup luksOpen /dev/sdx sdx-crypt
zpool create tank /dev/mapper/sdx-crypt
zfs set copies=2 tank
da letztere die Metadaten des Root-Dateisystems erst dann vollständig replizieren, wenn diese Metadaten neu geschrieben werden.
Beachten Sie, dass ZFS wie bei jedem schreibgeschützten Dateisystem am besten funktioniert, wenn die Festplattenauslastung unter 75-80% liegt und Sie mit einer Fragmentierung im Laufe der Zeit rechnen müssen. Für Sicherungen sollte dies kein großes Problem sein.
copies=2
und überlasse ZFS die Redundanz, aber zwei Partitionen sollten auch funktionieren und in bestimmten Fehlermodi möglicherweise zuverlässiger sein, wie in meiner Antwort angegeben. (Wenn Sie Ihre Backups regelmäßig testen, wie Sie sollten, sollte dies kein wichtiger Entscheidungspunkt sein.)zpool unmount
; du meinst wahrscheinlichzfs unmount
. Es ist der Unterschied zwischen Dateisystemen und Pools. Die einfache Antwort (ich empfehle Ihnen, eine separate Frage zu stellen, um weitere Einzelheiten zuzpool export
erfahren ) lautet immer, bevor Sie das einzelne Laufwerk, aus dem sich Ihr Pool zusammensetzt, physisch ausschalten oder trennen. (Es ist auchzpool offline
erforderlich, ein bestimmtes Speichergerät offline zu schalten, während der Pool verfügbar bleibt, z. B. um ein Laufwerk zu ersetzen. Dies ist jedoch ein ganz anderer Vorgang.)zpool export
Stellen Sie sicher, dass alle Puffer geleert werden und der Pool als nicht verwendet markiert ist.Par2 ist eine ausgereifte Softwareoption zum Erstellen von Paritätsdateien. Sie können es so konfigurieren, dass ein Prozentsatz der Datei verloren geht, aber dennoch wiederhergestellt werden kann. [1] [2] Zum Beispiel 30% Redundanz:
Für die Sicherheit benötigt LUKS eine gute Konfiguration. aes-xts-plain64: sha256 oder etwas besseres PBKDF2-sha512 mit einem zufälligen 256/512-Bit-Qualitätsschlüssel ist die Standardempfehlung [3]
[1] https://en.wikipedia.org/wiki/Parchive
[2] https://github.com/Parchive/par2cmdline
[3] https://security.stackexchange.com/questions/40208/recommended-options-for-luks-cryptsetup
[4] Wie sicher ist Ubuntus Standard-Festplattenverschlüsselung?
https://security.stackexchange.com/questions/39306/how-secure-is-ubuntus-default-full-disk-encryption
PS Encrypted ZFS, das von SUN für Enterprise Data entwickelt wurde, ist großartig, aber nur unter Solaris. ZFS unter Linux unterstützt nur ZFS + LUKS, keine native Verschlüsselung. ZFS Scrub prüft auf Bitrot und wird häufig täglich für Consumer-Laufwerke konfiguriert. Sie können sogar einen ZFS-Drei-Wege-Spiegel für extreme Datensicherheit verwenden. https://help.ubuntu.com/community/encryptedZfs
quelle