Ansichten eines Informatikers

ZFS und Western Digital SMR-Platten

Hadmut
20.9.2022 23:11

Mal was Technisches.

Ich verwende für verschiedene Datenspeicher seit ungefähr 10 Jahren, so ganz genau kann ich es nicht mehr sagen, das Dateisystem ZFS.

Und ich bin damit sehr zufrieden. Es ist zwar nicht sehr schnell und auch nicht so unbedingt für das Root-Dateisystem geeignet, aber als große Datenhalde wirklich gut, und ich hatte in der Zeit auch nie ein ernstliches Problem damit. Im Gegensatz etwa zu BTRFS, bei dem es mir vor vielen Jahren einige Male Dateisysteme zerlegt hat (weshalb ich es nicht gerne und ohne triftigen Grund gar nicht mehr verwende).

Und die Fähigkeiten, gleichzeitig Plattenverwaltung für mehrere Dateisysteme zu sein, Snapshots, und die diversen Optionen, Prüfsummen, wahlweise Kompression oder Mehrfachspeicherung von Daten sind einfach sehr, sehr nützlich. Größter Nachteil ist eigentlich, dass das mitunter schnarchlangsam ist, wenn man beispielsweise eine Platte in einem Array ersetzt.

Dafür ist es nicht auf eine bestimmte Anzahl von Festplatten festgelegt wie RAID, sondern gibt dem Ding einfach so viele Platten, wie man einsetzen will und in den Rechner passen. Und man kann frei wählen, ob man ein, zwei oder drei redundante Platten haben möchte, also das System ein, zwei oder drei Plattenverluste verkraften können soll.

Das ist übrigens ein wichtiger Punkt, den man nicht unterschätzen sollte: Mindestens zwei redundanten Platten. Warum? Wenn man sich die Spezifikation und die Größen heutiger Festplatten anschaut, dann ist das praktisch nicht möglich, die Daten einer Festplatte zuverlässig fehlerfrei zu speichern. Irgendwo gibt es immer einen Fehler. Manchmal merkt das die Festplatte selbst und meldet einen Lesefehler, wenn die Daten noch richtig geschrieben wurden und dann beim Lesen deren interne Prüfsumme nicht stimmt. Und wenn die Platte „Lesefehler!“ sagt, dann weiß man wenigstens, dass da was nicht geht. Wurden die Daten aber schon falsch geschrieben (und die SATA-Schnittstelle ist leider auch nicht so völlig sicher fehlerausschließend), dann passt die Platten-Prüfsumme zu den falschen Daten auf der Platte und die Platte merkt es nicht. Und manchmal (selten) kommt es sogar vor, dass die Prüfsumme zu falschen und richtigen Daten passt. Wie ein 6er im Lotto, aber kommt bei den Datenmengen eben vor.

Deshalb ist es erforderlich, ein Dateisystem zu verwenden, das eigene Prüfsummen für die Daten hat, damit es Fehler erkennen kann, die die Platte selbst nicht erkennen kann, und Daten von redudanten Platten lesen kann, wenn die Prüfsumme nicht stimmt (d.h. von da, wo die Prüfsumme stimmt), und nicht etwa nur von da, wo man sie ohne Lesefehlermeldung von der Platte lesen kann, wie bei gewöhnlichen RAID-Systemen. Ein normales RAID-System glaubt der Festplatte nämlich alles, solange die Festplatte beim Lesen ein positives Ergebnis und keine Fehlermeldung abgibt. Und wenn das Dateisystem selbst das dann nicht erkennt, sind die Daten falsch.

Und deshalb braucht man mindestens zwei redundante Platten: Man braucht nämlich immer mindestens eine redundante Platte, um mit vertretbarer Wahrscheinlichkeit die seltenen, aber vorkommenden Lesefehler bei normaler Plattenfunktion korrigieren zu können. Geht aber eine Platte kaputt, braucht man aus eben diesem Grumd auch dann noch mindestens eine redundanten Platte, muss somit also mindestens zwei gehabt haben. Und eine Spare Disk hilft da nicht, weil man die Daten ja erst einmal zuverlässig und richtig lesen können muss, um die Spare Disk befüllen zu können.

Vielen Leuten, die RAID verwenden, ist das nicht klar. Die meistverwendeten RAID-Konfigurationen RAID-1 und RAID-5 haben nur eine redundante Platte. Wenn also eine Platte als Defekt ausfällt, hat der verbleibende Rest keine Redundanz mehr und kann statistische Lesefehler nicht nur nicht ausgleichen, sondern mit gewisser Wahrscheinlichkeit nicht mal erkennen.

RAID war gut bei kleinen Platten, bei denen die Fehlerquote so niedrig und die Kapazität so klein war, dass sie im Verhältnis zueinander kaum eine Rolle spielten. Das ist bei heutigen Platten im TByte-Bereich aber eben nicht mehr der Fall. 1 Megabyte ist ungefähr (die Unterscheidung zwischen Zweier- und Zehnerpotenzen ist zum Verständnis nicht hilfreich, deshalb lasse ich die hier weg) 106, 1 Gigabyte 109, 1 Terabyte bei 1012 Byte. Eine 10 Terabyte-Platte hat also 1013 Byte oder (großzügig gerundet, es geht um die Größenordnung) 1014 Bit. Und dann haben wir ein Problem. Denn schaut man mal in die Specs von Festplatten, etwa der oft verwendeten WD RED von Western Digital, die als Fehlerrate <10 in 1014 angeben. Und das ist schon gut, früher lagen die Angaben bei verschiedenen Festplatten so bei 1013, vor allem bei normalen Desktop- und nicht teuren Serverplatten.

Im Klartext heißt das, dass man eine solche Festplatte nach der zulässigen Fehlerrate nicht einziges Mal befüllen und zuverlässig wieder auslesen kann.

Deshalb braucht man solche Dateisysteme.

Und auch da sind die Daten futsch, wenn der Blitz einschlägt, der Räuber kommt oder die Bude abbrennt.

Man braucht also zusätzlich nochmal Kopien.

Nun hatte ich etwas Neues ausprobiert, nämlich vier externe USB-2,5 Zoll Festplatten mit 5 TB als ZFS mit raidz2 zu befüllen, also zwei redundante Platten, effektiv bleiben als Speicherplatz 9 TB übrig. Die Wahl fiel auf Western Digital WD Elements mit USB 3.0-Schnittstelle.

Aber, ach.

Es funktioniert zwar genau so, wie es soll, aber *scharchlangsam*.

Während der Datenbestand auf normale, eingebaute, per SATA verbundene WD RED innerhalb etwa eines Tages kopiert werden können, lief das Kopieren auf diese externen Platten unglaublich langsam, obwohl es aus Softwaresicht genau dasselbe sein sollte und (Anzeige mit lsusb -t) alle Platten auch tatsächlich per USB 3 mit 5 GB/s angebunden sind (hatte ich neulich schon mal beschrieben, dass man das prüfen sollte), dauert das Kopieren rund zehnmal so lange, nämlich etwa 10 Tage.

Nun war zwar nicht zu erwarten, dass das genauso schnell geht, weil das über einen USB-Controller muss, aber da der Engpass die Platte selbst sein sollte, sollte das nicht so sehr ins Gewicht fallen.

Woher kommt dieser enorme Geschwindigkeitsunterschie?

Weiß ich selbst nicht, weil man von außen und über USB auch nicht erkennen kann, welche Festplatten WD da in ihre externen USB-Gehäuse verbaut, ohne sie aufzubrechen.

Die Diskussion mit den Maintainern hat aber die Ursache gefunden: WD verwendet seit einiger Zeit für manche Platten ein Aufzeichnungsverfahren namens SMR (Shingled Magnetic Recording), das viel langsamer ist und zu erheblichen Nachteilen führt, weil dabei nicht mehr einzelne Sektoren geschrieben werden können, sondern immer ganze Spuren. Es gibt noch die Aussage, dass eine Spur immer auch einen Teil der Nachbarspur überschreibt, deshalb für jede Änderung eines Bits immer gleich mehrere Spuren neu geschrieben werden müssen. Es empfiehlt sich beispielsweise, atime auf off zu stellen.

Und weil ZFS versucht, die Daten immer konsistent und absturzfest zu halten, ist es wohl mit SMR maximal inkompatibel. Da wird mal da und mal hier geschrieben, und die Platten müssen dafür jedesmal mehrere Spuren neu schreiben. Dazu kommt, dass es tatsächlich – innerhalb der spezifizierten Fehlerquote – zu zwei Schreibfehlern kam, was dazu führte, dass ZFS automatisch einen Prüfungs- und Reinigungsprozess anstößt, um alle Daten zu prüfen und falsche Stellen nochmal neu zu schreiben. Damit geht es dann auch noch durcheinander.

Mit herkömmlicher Aufzeichnungstechnik bekommt man aber auf 2,5 Zoll-Platten so viele Daten nicht.

Zwar gibt es inzwischen auch 8TB-2.5Zoll-SSDs im dreistelligen Euro-Bereich, aber SSDs eignen sich nicht zur Archivierung, weil sie immer wieder mal Strom für den Refresh brauchen (und noch immer teuer sind).

Wir kommen langsam an den Punkt, an dem die Datenhaltung schwierig wird, weil die Technik mit der Datenmenge nicht gerade so flüssig mithält. So einfach, wie das früher mal war, als man einfach eine Platte dranhängte, und fertig, oder auf CD brannte, und fertig, oder ein Bandlaufwerk dranhängte, und fertig, ist das da auch nicht mehr. Da müsste man schon auf LTO-7 oder LTO-8, und die Laufwerke und Bandkassetten sind jetzt auch nicht gerade so billig.