Motivation
RAID5 und seine Probleme
- Bei einer kleineren Anzahl von Platten ist der Verschnitt entsprechend hoch, z.B. bleiben 25% der Kapazität eines 4-Bay-NAS ungenutzt. Und das, obwohl die Ausfallsicherheit dadurch keineswegs garantiert ist (siehe nächster Punkt).
-
RAID5 schützt - theoretisch - vor einem Ausfall einer einzelnen Festplatte, ohne, dass Daten verloren gehen.
Warum nur theoretisch?Das ist auf die Funktionsweise eines RAIDs zurückzuführen: Ein auftretender Fehler wird nämlich nur dann erkannt, wenn eine Festplatte diesen Fehler selbst meldet, z.B. bei einem defekten Datenblock oder durch eine Rückmeldung, dass die Platte nicht angesprochen werden kann. Es gibt aber Fehlerarten, bei denen eine solche Meldung unterbleibt, nämlich, wenn die Elektronik versagt (z.B: RAM-Puffer defekt) oder auch einfach, weil ein Lesefehler unentdeckt bleibt.Letzteres tritt leider häufiger auf als gedacht: Da Festplatten heute mit Speicherdichten nahe der Rauschgrenze betrieben werden, arbeiten sie ständig mit Korrekturcodes, die gewisse Fehlerwahrscheinlichkeiten aufweisen. Sogar bei Enterprise-Modellen von Festplatten werden z.B. Fehlerraten von 1 Fehler auf 10^15 Bits angegeben, was einem falschen Byte in 125 TByte entspricht. Bei Desktop-Modellen liegt die Rate sogar um den Faktor 10 höher. Das bedeutet im Endeffekt, dass beim Lesen einer 18-TByte-Festplatte (solche liegen zur Zeit im "Sweet Spot" beim Preis pro Terabyte) im Mittel 1,5 fehlerhafte Bits geliefert werden.Das wirklich Schlimme dabei ist, dass solche Fehler durch RAID überhaupt nicht entdeckt werden! Es würde interessanterweise aber auch nichts helfen: Nehmen wir an, dass beim Lesen immer alle 4 RAID5-Platten gelesen würden. Selbst, wenn jetzt beim Vergleich auffiele wird, dass die Daten der drei "Daten"-Festplatten nicht zu den Daten von der vierten, "Redundanz"-Festplatte passen: Was sollte man jetzt tun? Da keine der beteiligten Festplatten einen Datenfehler anzeigt, kann man keine Korrektur vornehmen, weil man ja nicht weiß, welche der vier Platten fehlerhafte Daten geliefert hat. Tatsächlich wird aus diesem Grund auf das Lesen aller Festplatten verzichtet, wie Tests von Level1Techs (sehr sehenswert!) bewiesen haben.Man muss sich das einmal klarmachen: Wenn man einfach auf einer der RAID5-Festplatten direkt beliebige Daten schreibt, werden diese ohne Abwehr durch das RAID-System zurückgeliefert und man merkt nicht, dass dies nicht mehr die ursprünglichen Daten sind!Erschwerend kommt noch eines hinzu: Wenn eine Festplatte ausgefallen ist, wird man sie normalerweise schnellstmöglich durch ein neues Exemplar ersetzen. Dann muss jedoch die Redundanz neu hergestellt werden, wozu alle Platten einmal komplett gelesen werden müssen. Das bedeutet, es werden beispielsweise bei 18-TByte-Festplatten 54 TByte gelesen und 18 TByte geschrieben. Einerseits ist das Risiko hoch, dass bei dieser großen Beanspruchung eine weitere Festplatte versagt, andererseits treten dabei wiederum statistisch 5 Bitfehler auf, die dann ggf. für die Zukunft erhalten bleiben, weil dann entsprechend fehlerbehaftete Redundanzinformationen geschrieben werden - beim Schreiben treten noch 1,5 weitere Bitfehler auf.
Aber RAID6 rettet uns doch?
Was nun? ZFS!
- ZFS integriert RAID5/6/7, dort heißt dies raid-z1/z2/z3 für jeweils eine, zwei oder drei redundante Festplatten.
- ZFS betreibt konsequente Prüfsummen auf allen Ebenen (Datei, Block und Metadaten). Es ist praktisch unmöglich, dass ein Datenfehler unbemerkt bleint, da ZFS eigene, von der Festplatten-Hardware unabhängige Prüfsummenverfahren nutzt. Es kann also durchaus vorkommen, dass Lesefehler auftreten - diese werden aber immer bemerkt und gemeldet und im Fall von raid-z eben auch korrigiert.
-
Ein weiterer Vorteil von ZFS liegt darin, dass es ein Copy-On-Write (COW) Dateisystem ist: Jede Änderung wird zunächst geschrieben,
bevor ggf. alte Daten gelöscht werden. Dadurch ist ZFS transaktionssicher und es kann vor allem Snapshots anlegen - indem
man die alten Daten nicht sofort freigibt, sondern nur markiert, kann man den vorherigen Zustand wieder herstellen.
So kann man z.B. regelmäßige Aufgaben erstellen, bei der z.B. alle 15 Minuten ein Snapshot erzeugt wird. Diese Snapshots belegen
nur Speicherplatz, wenn etwas geändert wurde. Durch Angabe einer gestaffelten Haltedauer kann der Speicherplatz dann nach Ablauf wieder
freigegeben werden.
Diese Snapshots können per Samba als "Vorgängerversionen" sichtbar gemacht werden. Vorbei also die Zeiten von "Oh, ich habe aus Versehen dieses Dokument überschrieben!"
- ZFS raid-z hat einen etwas größeren Verschnitt als das entsprechende RAID-Verfahren, gleich dies allerdings durch eine im Dateisystem selbst vorgenommene Komprimierung aus (wirkt natürlich nur bei Daten, die nicht bereits vorab komprimiert sind wie Videos oder MP3). Es wird auch häufig empfohlen, die freie Kapazität nur bis zu 80% auszunutzen, wodurch die zur Verfügung stehende Kapazität weiter sinkt. Tatsächlich ist es dann nur schwerer, zusammenhängenden freien Platz zu finden, d.h. Dateien werden dann eventuell stärker fragmentiert und das Lesen wird entsprechend langsamer. Das gilt allerdings nur im Verhältnis zum Gesamtspeicher große Dateien, was bei heutigen Dateisystemgrößen von vielen Terabyte kaum ins Gewicht fallen dürfte, denn selbst große Videodateien haben maximal einige Gigabyte.
- Ein oft genanntes Problem von ZFS ist, dass viel RAM für ein effizientes Arbeiten benötigt wird. Dies Rede ist oft von 1 GByte RAM für jeweils 1 TByte Festplattenkapazität. Richtig ist, dass ZFS geschwindigkeitsmäßig von RAM profitiert, notwendig ist dies jedoch nicht.
- Ein weiteres angebliches Problem ist, dass für absolute Sicherheit auch ECC-RAM bentigt wird. Natürlich kann ZFS nicht verhindern, dass durch Umkippen eines Bits im RAM der gelesene Inhalt verfälscht wird, bevor er verarbeitet werden kann, jedoch ist die Wahrscheinlichkeit hierfür sehr viel geringer als ein Festplattenfehler.
- Eine Kapazitätserweitertung ist bei ZFS raid-z ebenso möglich wie bei RAID - wenn man noch freie Einschübe hat! Auch hier irrt übrigens der oben verlinkte Artikel von Ugreen: Inzwischen ist das auch ohne Verdopplung der Anzahl von Festplatten möglich, dieses Feature ist noch relativ jung. Es gibt subtile Unterschiede beim anfänglichen Verschnitt nach einer erfolgten Erweiterung, bei raid-z bleibt er anfangs für vorhandene Dateien beim alten Wert, beim Hinzufügen einer 5. Festplatte zu einem RAID5 sinkt der Verschnitt z.B. von 25% auf 20%, bei raid-z1 bleibt er für die alten Dateien erst bei 25%. Aufgrund COW würde der Wert beim Umkopieren von Dateien (genau wie für neue Dateien) aber sinken.
Was also nutzen?
Fazit
- RAID5 ist nicht wirklich verläßlich, man "will" eigentlich doppelte Redundanz, also mindestens RAID6.
- Ein 4-Bay-NAS wie das DXP4800 ist für RAID6 bzw. ZFS raid-z2 wegen hohen Verschnitts ungeeignet, man sollte mindesten 6 oder 8 Bays nehmen.
- Die noch sehr frische Ugreen UPRO Software ist für uns ungeeignet, wir würden TrueNAS (Scale) oder Proxmox VE verwenden.
- Kapazitätserweiterung ist auch mit ZFS möglich - natürlich nur mit freien Festplatten-Slots.
- Falls Virtualisierung angepeilt wird: Mehr RAM ist Pflicht - angeblich gehen im DXP6800 und DXP8800 96 GByte.
Wichtiger Zusatz: Redundanz ist kein Backup!