Einleitung

Ich habe regelmässig den Fall das ich mich grossen Virtuellen Maschienen (200GB) hantiere und diese zwischen unterschiedlichen UNIX-Systemen (Mac, FreeBSD, FreeNAS, Ubuntu Linux) hin und her bewegen muss. Dazu habe ich rund ein 1 TB an Archivdaten die ich gern "bei mir" haben möchte falls ich eine ältere VM, ISO-Images, Programme oder alten Quelltext benötige. Weiterhin kommen noch Disk-Images (RAW oder Mac-Sparse) dazu welche als Backups oder zur Forensischen Analyse dienen.

Wärend meiner Lehre als ich noch zuhause war hatte ich einen OpenSolaris Server welcher das iSCSI Target für meinen ESXi-Server war und alle Daten verwaltet hat. In dieser Zeit hatte ich nie Probleme mit Datenkonsistenz.

Leider musste ich vor ca zwei Jahren feststellen das viele Backups, Images und Zip-Archive aus dieser Zeit korrupt waren und sich nicht mehr öffnen liessen. Der Ärger darüber liess mich OpenZFS für Mac installieren und dann ist mir das Problem schnell klar geworden. Meine 8TB WesternDigital Platte ist nicht in der Lage 4 TB zu schrieben oden mindestens einen Fehler zu machen. Heisst jede Bewegung von oder zu der WD-Platte führt zu mindestens einer korrupten Datei.

Die kleinen 2.5 Zoll 1,2 oder 4 TB Platte sind besser, dort treten Prüfsummenfehler nicht immer gleich beim Kopieren sondern oft erst nach 3-6 Monaten auf.

Ich will mich auf die Integrität meiner Daten verlassen können. Deshalb habe ich wiider angefangen ZFS als Format für all meine externen Festplatten einzusetzten.

Stolpersteine

Ein Stolperstein auf den ich schnell gekommen bin ist, dass wenn man eine externe Festplatte zum Speichern vor Daten mit ZFS verwendet wird man zwar auf Fehler hingewiesen, aber ein Datenset mit einem Fehler zu korrigieren erfordert ein ganzes Datenset mit korrekten Daten.

Hesst wenn mann in einem 1TB ZFS-Datenset eine korrupte Datei hat… dann muss man das ganze TB wieder von einer anderen Platte kopieren…. seeeeehr nerfig.

Deshalb mein erster Tipp:

zfs set copies=2 bradly

Hinweis: Ich benenn meine externen Festplatten nach Charakteren von "The Commonwealth Saga" von Peter F. Hamilton. In diesem Fall ist bradly das Root-Datenset meiner externen Festplatte.

Mit dieser Einstellung werden alle Datei 2x auf der externen Festplatte gespeichert und, solarge die externe Festplatte nicht ganz den Geist aufgibt kann man disese einfach ganz normal verwenden und wenn irgendo ein Block korrupt ist nimmt ZFS einfach den anderen und korrigiert den ersten wieder.

Vorteiler von ZFS für externe Festplatten

  • Portabilität Es gibt ZFS für FreeBSD, Linux und Mac. So ist der Dateitransfer sehr einfach und ist hatte noch nie Probleme.
  • Komprimierung ZFS hat eine integriere Datenkomprimierung welche den 2x Faktor der Datenspeicherung nicht so tragisch macht. Ich komme oft mit 1.5x dem normalen Platzbedarf aus.
  • Deduplizierung Wenn man viele identische VMs hat kann man die Deduplizierung verwenden um aus 90GB Ubuntu VMs noch 10GB zu machen. 2x eine SAP-Installation zahlt sich mit der Komprimierung schnell auf 120 GB statt 500 GB für zwei SAP-Installation aus.
  • Fehlerkorrektur Keine kaputten ZIP-Dateien mehr mit VMs die viele Stunden Arbeit gekostet haben! Yey! (Natürlich gilt das auch für Word-Dokument die oft noch mehr Arbeit gekostet haben.
  • Snapshots Ich habe auf meiner externen Festplatte nicht nur meine Daten, sondern auch Snapshots bis zu 2 Jahre in die Vergangenheit die ich sogar auf andere Festplatte weitergeben kann! Ich kann also Daten + Geschichte zusammen auf andere Festplatten kopieren und so die Snapshots immer weiter tragen.

Nachteile

  • Kein Windows Es gibt leider (noch) keinen Support für ZFS auf Windows. Es gibt Projekte die daran Arbeiten, aber es ist noch nicht so weit. Im moment ist diese Lösung nur für Leute die auf Mac und Linux arbeiten. (Wobei im Notfall auch eine Linux VM unter Windows gut geht)