Unraid (und Raid-5-Systeme) versprechen: Eine einzige Parityplatte soll beliebig viele Datenplatten absichern können. Doch funktioniert das wirklich? c’t 3003 hat es ausprobiert und zeigt, was konkret passiert, wenn eine NAS-Festplatte während des Betriebs ausfällt.
Transkript des Videos
(Hinweis: Dieses Transkript ist für Menschen gedacht, die das Video oben nicht schauen können oder wollen. Der Text gibt nicht alle Informationen der Bildspur wieder.)
Guckt mal hier, das bin ich, wie ich eine Festplatte aus meinem laufenden Homeserver-Platten-Verbund abziehe. Einfach, weil ich wissen wollte, was dann eigentlich genau passiert. Da läuft nämlich Unraid drauf, und das verspricht, dass eine einzige Sicherheitsplatte oder genauer Parityplatte beliebig viele andere Platten absichern kann. Hä, wie soll das denn gehen? Also nochmal ganz konkret: Ich habe vier Datenplatten in meinem NAS, jeweils 5 TB groß, also 20 TB Daten passen da drauf. Und dann habe ich eine 6 TB große Paritätsplatte. Laut Unraid kann hier jetzt bei mir eine beliebige Datenplatte ausfallen, und die kann dann mithilfe dieser Paritätsfestplatte rekonstruiert werden. Das heißt, die Daten sind nicht verloren. Also was weiß ich, 50 TB, die von einer einzigen 6-TB-Paritätsplatte geschützt werden. Okay, sagt ihr jetzt vielleicht? Ja, wie das funktioniert, wie das konkret aussieht, wenn so eine Datenplatte ausfällt, ob es einen Haken gibt – das seht ihr alles in diesem Video. Und über normales RAID sprechen wir natürlich auch, nicht nur über Unraid.
Liebe Hackerinnen, liebe Internetsurfer, herzlich willkommen hier bei…
Ich habe mich neulich beim Mittagessen in der Heise-Kantine mit Kollegen unterhalten, die sich ziemlich gut mit Netzwerkspeichern und Co. auskennen. Als das Thema dann auf Unraid kam und ich erzählt habe, dass Unraid ja verspricht, dass damit beliebig viele Datenplatten auch nachträglich einfach mit einer einzelnen Parityplatte abgesichert werden können – ja, da war mindestens ein Experte dabei, der meinte: „Das kann doch gar nicht sein.“ Ich muss zugeben, dass ich mir das irgendwie auch nicht wirklich vorstellen konnte, weil es sich einfach unlogisch anhört. Aber klar, das ist ja ein zentrales Feature von Unraid beziehungsweise auch von RAID. Deshalb wird das natürlich schon stimmen. Sonst wäre es längst im Netz debunkt worden. Und bestimmt haben auch welche von euch da draußen schon Platten über normales RAID oder Unraid wiederhergestellt. Aber ich wollte das jetzt einfach mal mit eigenen Augen sehen, was da eigentlich passiert, wenn da eine Platte wegbröselt. Fand ich superinteressant.
Ganz kurz hier nochmal eingeschoben: Was ist eigentlich Unraid? Das ist ein Homeserver-Betriebssystem, mit dem man sich mit einem beliebigen x86-Rechner ein NAS, Homeserver oder Virtualisierungsserver aufbauen kann. Unraid fußt auf Slackware Linux, baut da aber proprietäre, also nicht-freie Funktionen obendrauf. Unraid muss man kaufen, und seit Anfang letzten Jahres muss man bei den günstigeren Lizenzen jährlich für Updates blechen – und zwar 36 US-Dollar pro Jahr. Will man lebenslange Updates ohne Zusatzkosten, wird eine Einmalzahlung von ziemlich happigen 249 US-Dollar fällig. Diese Preispolitik wird von vielen kritisiert. Und ja, es gibt Open-Source-Alternativen wie TrueNAS oder Open Media Vault, für die man nicht zahlen muss und die viele von euch deshalb bevorzugen.
So, und jetzt aber Butter bei die Fische. Ich wollte ja wissen, was genau passiert, wenn hier bei mir im Unraid-Verbund eine Platte crasht, beziehungsweise einfach abgezogen wird. Das Abziehen geht bei meinem Unraid-NAS ziemlich einfach, da hängen nämlich 2,5”-USB-Platten dran. Ich weiß, davon wird normalerweise abgeraten, aber für mein Nutzungsszenario passt das so. Ich will nämlich keine Lüfter haben. Und weil ich das NAS oft tagelang nicht benutze, will ich, dass die Platten sich bei Nichtstun komplett herunterfahren. Das klappt hier mit meinem lüfterlosen Thinclient und den USB-2,5”-Platten seit ungefähr anderthalb Jahren super. Ich hatte bislang aber keine sogenannte Parityplatte. Das heißt, bei einem Plattendefekt wären die Daten dieser Datenplatte futsch. Den Gedanken fand ich ein bisschen unangenehm, weshalb ich dann endlich mal eine Parityplatte gekauft habe – übrigens eine 6-TB-WD-MyPassport.
Ja, und als das Parity-Ding dann hier bei mir lief, habe ich mich wirklich getraut, eine Platte während der Laufzeit abzuziehen. Puh. Gruselig. Und ja, Unraid hat da dann auch so ein Kreuz angezeigt – da steht dann „Platte deaktiviert, Inhalt emuliert.“ Und tatsächlich: Alles, was da drauf ist, konnte ich noch lesen. Sehr langsam zwar, aber es ging. Ganz cool, finde ich. Wenn jetzt allerdings mit einer anderen Platte was passieren sollte, dann sind die Daten von beiden Platten futsch – es sei denn, ihr habt zwei Parityplatten. Das geht auch in Unraid. Dann dürfen zwei Datenplatten ausfallen. Kurz mal eingeschoben: Unraid oder RAID ist kein Backup! Das solltet ihr auf jeden Fall zusätzlich einrichten.
Also eine neue Platte reingehängt, diesmal auch eine 6-TB-Platte, und dann die 5-TB-Platte, die da nicht mehr dranhängt, auf der 6-TB-Platte rekonstruieren lassen. Auch das dauert wieder lange, auch wieder ein ganzer Tag. Was aber cool ist: Als das fertig war, hat Unraid nicht einfach mit den 5 TB wie auf der alten Platte weitergearbeitet, sondern vollautomatisch das zusätzliche Terabyte im Array zur Verfügung gestellt. Und das ist halt einer der großen Vorteile von Unraid gegenüber normalen RAIDs. Dass man sehr flexibel mit den Platten sein kann. Das heißt, man kann zum Beispiel einfach Platten hinzufügen, ohne das ganze Array auf allen Platten neu schreiben zu lassen. Und wenn doch mal irgendwas nicht klappt, dann sind die Daten einfach noch ganz normal auf den heilen Platten lesbar. Bei den klassischen RAIDs ist das in vielen Fällen anders. Das klassische RAID5 arbeitet zum Beispiel zwar auch mit Parity und kann den Ausfall einer Platte kompensieren, aber RAID5 verteilt die Daten über alle Platten. Sollten also mal zwei Platten ausfallen, dann ist auch auf den restlichen heilen Platten alles weg.
Allerdings hat klassisches RAID Geschwindigkeitsvorteile gegenüber Unraid, eben weil es die Daten striped, also verteilt. Unraid ist im Grundzustand sehr langsam beim Schreiben, weil jeder Schreibvorgang vier I/O-Vorgänge verursacht: Lesen und Schreiben auf der Parityplatte, Lesen und Schreiben auf der Datenplatte. Dafür können aber auch alle anderen Platten weiterschlafen, wenn auf eine andere Platte was draufgeschrieben wird. Bei RAID5 sind beim Schreiben und Lesen immer alle Platten aktiv. Obwohl ich hier ein 2,5-Gigabit-Netzwerk habe und die Platten alle schon so ungefähr 100 Megabyte pro Sekunde können, habe ich beim Schreiben mit Parity bei Unraid so ungefähr 30 Megabyte pro Sekunde. Aber man kann sich da helfen: Ich habe nämlich eine kleine SSD in meinem Homeserver, die habe ich als Cache in Unraid konfiguriert. Und da wird dann standardmäßig immer alles erstmal draufgeschrieben, und dann kriege ich in der Praxis immer stabile über 110 Megabyte pro Sekunde. Das reicht mir total. Die Daten werden dann immer nachts vom sogenannten Mover automatisch auf das Array geschoben. Allerdings sind die auch dann erst mit Parity ausfallgeschützt, wenn die auf dem Array sind. Wenn sich vorher die SSD verabschiedet, sind die Daten leider weg. Aber wie gesagt, Unraid oder RAID ist halt kein Backup. Auf der Cache-Partition liegt übrigens auch meine Homeserver-Software, also sowas wie Adguard Home oder Plex.
Fazit
So, jetzt kommt mein Fazit, und danach erkläre ich den ganz Wissbegierigen unter euch, wie das genau mit dieser Parity funktioniert und warum ein Paritylaufwerk tatsächlich nahezu beliebig viele Datenplatten absichern kann. Tatsächlich ist das sogar für mich mathematisch einleuchtend, obwohl ich mal so gar nicht gut in Mathe bin. Aber wie gesagt, erstmal das Fazit: Ich muss echt sagen, dass ich seit diesem Experiment hier definitiv ein bisschen ruhiger schlafe, weil sich das einfach gut anfühlt, dass hier mal eine Platte abrauchen kann und die Daten dann nicht futsch sind. Und ich auch einfach ohne viel Hassle zusätzliche Platten ins Array hängen kann, wenn ich mehr Platz brauche. Mit konventionellem RAID würde das nicht so einfach gehen, und deshalb ist Unraid für meine Zwecke super geeignet, weil mich auch dank meiner Cache-Lösung das langsame Schreiben überhaupt nicht stört.
Und dieses On-the-Fly-Rekonstruieren der nicht vorhandenen Platte fühlt sich tatsächlich zuerst ein bisschen wie Zauberei an, aber sobald man das zugrunde liegende Prinzip verstanden hat, nicht mehr. Das geht nämlich so: Hier mal ein Beispiel von drei Datenplatten. Daten sind ja bekanntlich – also bei heutigen Computern – Nullen und Einsen, binär. Also viele Nullen und Einsen. Der Datenstrom auf der ersten Platte zum Beispiel beginnt mit 001101 und so weiter. Ohne Parityplatten wären die Daten einfach weg, wenn eine Platte kaputt geht. Mit Paritykorrektur wird nun einfach immer geguckt, ob die Summe der Bits aller Platten an einer Stelle gerade oder ungerade ist. Also hier ist das erste Bit aller drei Platten 0, also gerade – Parity speichert also 0. Das zweite Bit ist hier zweimal 0 und bei der dritten Platte 1 – ungerade. Deshalb speichert Parity 1. Beim dritten Bit ist die Summe auch ungerade, also auch 1 und so weiter.
Jetzt nehmen wir mal an, dass Platte 2 wegbröselt. Nullen und Einsen sind alle nicht mehr da. Aber mit den Informationen auf der Parityplatte und den restlichen Datenplatten kann das rekonstruiert werden. Hier das erste Bit zum Beispiel: 0 sagt Parity, die anderen beiden Platten haben auch 0, also alles gerade. Dann muss der Inhalt auf der abgerauchten Platte also auch 0 sein. Hier beim zweiten Bit zeigt Parity 1, Disk 1 zeigt 0 und Disk 3 zeigt 1. Dann muss das fehlende Bit auf Platte 2 0 sein. Denn wäre es 1, würde ja die Summe aller Datenplatten-Bits 2 ergeben. Und das wäre ja gerade. Habt ihr gecheckt?
Ich hoffe, ich habe das verständlich erklärt. Also, Mathelehrer wird nicht mehr aus mir, glaube ich. Aber ich hoffe, es hat trotzdem geklappt. Und ja, was sagt ihr? Findet ihr Unraid eine gute Sache, oder sagt ihr: „Nee, nee, nee, nee, nee, ich will Open Source und da dann Hardware-RAID5 oder halt das ZFS-Dateisystem nutzen, was ja die meisten Linuxer out of the box können.“ Das hat auch solche Funktionen. Ja, gerne in die Kommentare schreiben und natürlich abonnieren. Tschüss!
c't 3003 ist der YouTube-Channel von c't. Die Videos auf c’t 3003 sind eigenständige Inhalte und unabhängig von den Artikeln im c’t Magazin. Die Redakteure Jan-Keno Janssen, Lukas Rumpler, Sahin Erengil und Pascal Schewe veröffentlichen jede Woche ein Video.
(jkj)