Backup auf externes Laufwerk mit vollständiger Festplattenbeschriftung und Bit-Rot-Schutz

4

Ich habe eine neue externe USB-2-TB-Festplatte und möchte sie als Backup für meinen Heimserver verwenden.

Meine Wünsche sind:

  • vollständige Festplattenverschlüsselung (die Festplatte wird außerhalb des Standorts gespeichert)
  • Bit-Rot-Prävention

Derzeit verwende ich eine ältere externe 320-GB-Festplatte mit TrueCrypt-Verschlüsselung auf Partitionsebene. Da dies jedoch keinen Bit-Rot-Schutz bietet und TrueCrypt veraltet ist, möchte ich etwas anderes ausprobieren.

Mein Server läuft mit Ubuntu Server 14.04.3 LTS und hat einen ECC-Speicher mit 2x 3 TB Festplatten in RAID 1.

Für den Verschlüsselungsteil ist die Verwendung von LUKS wahrscheinlich die beste Wahl, oder?

Aber wenn es um den Umgang mit Fäulnis geht, wird es ein bisschen kompliziert. Zumindest für Single-Disk-Konfigurationen. Eine Möglichkeit wäre, zwei identische Partitionen zu erstellen und ein RAID 1 mit regelmäßigem Scrubbing zu erstellen. Aber diese Lösung scheint auf dem gleichen Laufwerk etwas seltsam.

Wäre BTRFS eine Option? Ist es möglich, Redundanz für einzelne Laufwerkskonfigurationen hinzuzufügen?

Es macht mir nichts aus, die Hälfte des Speichers für Redundanz zu opfern. Leistungseinbußen sind für mich auch kein Thema.

alesc
quelle

Antworten:

4

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=2im 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.

ein CVn
quelle
1
Gute Antwort, hier ist ein weiterer Link zum Austausch von Stacks mit weiteren Informationen zum Setup: serverfault.com/questions/586973/… .
StackAbstraction
Danke für die wirklich ausführliche Antwort. Wenn ich das richtig verstanden habe, ziehen Sie ZFS wegen der Stabilität der Implementierung btrfs vor? Was ist mit der Lösung mit RAID1 auf zwei Partitionen? Wenn Sie regelmäßig schrubben, sollte es auch gut gegen Bit-Rot sein, oder?
alesc
2
ZFS-Fragen neigen dazu, Serverfehlern mehr Aufmerksamkeit zu schenken . @alesc, ich bevorzuge ZFS gegenüber Btrfs, da ZFS außerhalb von Versuchsaufbauten häufig in der Praxis eingesetzt wird (und Fehler aufweist) und insbesondere in dem Szenario, in dem Sie nach vergleichbaren Funktionssätzen fragen, oder in dem ZFS besser ist. Ich persönlich bevorzuge eine einzelne Partition mit copies=2und ü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.)
CVn
Das einzige wichtige Merkmal, das ich bei Btrfs feststellen kann, das ZFS nicht hat, ist die Möglichkeit, die Redundanzstufen von nicht gespiegelten Gerätesätzen ohne Neuerstellung zu ändern. Mit ZFS bleiben Sie bei der Redundanzstufe, die Sie ursprünglich ausgewählt haben. Dies ist der Unterschied zwischen dem schrittweisen Anbau von Heim-Setups und dem Aufbau von Unternehmens-Setups in großen Farbfeldern mit Vorausplanung. Bei Sicherungen sollte dieser Funktionsunterschied keine große Rolle spielen. In beiden Fällen können Sie Ihr Setup genauso einfach erweitern.
ein CVn
1
@alesc Es gibt keine zpool unmount; du meinst wahrscheinlich zfs unmount. Es ist der Unterschied zwischen Dateisystemen und Pools. Die einfache Antwort (ich empfehle Ihnen, eine separate Frage zu stellen, um weitere Einzelheiten zu zpool exporterfahren ) lautet immer, bevor Sie das einzelne Laufwerk, aus dem sich Ihr Pool zusammensetzt, physisch ausschalten oder trennen. (Es ist auch zpool offlineerforderlich, 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 exportStellen Sie sicher, dass alle Puffer geleert werden und der Pool als nicht verwendet markiert ist.
ein Lebenslauf vom
0

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:

par2 c -r30 file-to-protect

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

StackAbstraction
quelle