Inhaltsverzeichnis

NAS/RAID

NAS und RAID

NAS-Systeme haben viele Vorteile - insbesondere wenn es sich um reine Softwarelösungen auf einem 0-8-15-PC handeln. Da kann man z.b. auch einen ausgemusterten alten PC nutzen.

Da es bei NAS-Systemen ja um viel und zudem ausfallsicheren Speicher geht, bieten sich natürlich RAIDs an. Da o.g. genannte ausgemusterte PCs meist aber keinen Hardware-RAID-Controller haben (wenn überhaupt dann einen sehr eingeschränkten Fake-RAID), bietet sich Software-RAID an.

Zudem bietet dieses eine gewisse Ausfallsicherheit bei RAIDs die auf Striping setzen, also prinzipiell alle außer RAID-1. Alle anderen (z.B. RAID-0 und RAID-5, RAID-6). RAID-5 und 6 sind zwar (eingeschränkt) gegen den Ausfall von Festplatten abgesichert, jedoch nicht gegen den Ausfall des RAID-Controllers. In diesem Fall sind häufig die gesamten Daten verloren.

Anders bei Software-RAIDs. Fällt hier Hardware aus, lassen sich die noch funktionsfähigen Festplatten einfach in ein anderes System einbauen und man ist wieder betriebsbereit, da der Controller in Software realisiert ist. Das geht soweit, dass sogar bei zerstörter Software einfach mittels Live-CDs die Daten wieder nutzbar gemacht werden können.

Open-Source Lösungen

Es gibt eine Reihe an Open-Source NAS-Lösungen, im besonderen wollte ich hier FreeNAS, NAS4free und OpenMediaVault testen. Die Tests wurden der Einfachheit halber in einer virtuellen Maschine (VirtualBox) durchgeführt, da man hier mit wenigen klicks viele Festplatten erzeugen, kaputt machen und verändern kann.

Doch an Virtualbox liegt leider auch das Problem. So konnten die beiden BSD-basierten Systeme FreeNAS und NAS4free nicht getestet werden, da es sich hier nicht starten ließ. Das liegt (lt. diverser Foren) möglicherweise daran, dass ich Intel VT nicht aktivieren kann, da mein Core2Duo das noch nicht unterstützt.

OpenMediaVault

Installation

Das letzte System - OpenMediaVault basiert auf Debian Linux und läuft auf Anhieb. Allerdings kann man in der Standardeinstellung die Partitionen nicht manuell wählen. Um das zu ändern kann man die Datei preseed.cfg auf dem Installationsmedium im Ordner install mit einem Texteditor ändern. Die Zeilen, die mit „partman“ starten müssen auskommentiert werden, dann kann man per Hand partitionieren. Leider funktioniert dann Grub bei meiner Konfiguration nicht auf Anhieb.

Die Behebung erfordert etwas Fleißarbeit. Am einfachsten startet man das System zunächst normal. Dabei kommt es kurz nach dem Start zum fehler und man fällt in eine Not-Konsole zurück. Mit dieser kann dann z.B. über den Abruf von /proc/mdstat der name des System-Raids herausgefunden werden, in meinem Fall md126. Nach dem Reboot muss das System „manuell“ gestartet werden. Hierzu muss beim booten die Grub-Konfiguration mit einem Druck auf „e“ geändert werden. dann muss in der Kernel-Zeile der Teil root=/dev/md0 auf den zuvor herausgesuchten Wert (bei mir root=/dev/md126) angepasst werden. Dann sollte der Start funktionieren. Damit das auch so bleibt, kann direkt nach dem erfolgreichen Start einmal update-grub ausgeführt werden, um die Konfigurations- dateien neu (und nun auch richtig) zu schreiben.

Aktuelles System

Für RAID-Systeme müssen die Platten - oder zumindest die verwendeten Partitionen - gleich groß sein.

Mein aktuelles (virtuelles) Testsystem sieht nun so aus: 3×6 GB Festplatten (SATA)

Festplatte A:

Festplatte B und C:

Raid1:

Raid2:

Raid3:

Die (Software-)RAID-partitionen wurden mit dem Partitionsmanager der Installation erstellt, welcher unter der Haube einfach das in Linux-Kreisen bekannte mdadm verwendet.

Hier muss beachtet werden, dass OpenMediaVault die Daten nicht auf der Systempartition ablegen kann - deshalb muss zwischen o.g. Raid1 und Raid2 unterschieden werden.

Es scheint sinnvoll, die Partition 1 auf Festplatte A zu sichern (z.b. auf Raid1 oder Raid2) oder sie gleich als RAID-1 auf die Platten B und C, die im Moment ja als Swap verwendet werden, zu spiegeln, denn sie ist im Moment nicht gegen Ausfall gesichert. Zwar hätte ein Ausfall von Platte A keinen Einfluss auf wichtige Daten, die Wiederherstellung des NAS-Systems würde aber durch die zerstörte Boot-Partition unnötig verkompliziert.

Aktueller Stand und Ausfallsicherheit

Alles funktioniert bisher perfekt, das Webinterface von Openmediavault wirkt aufgeräumt und ist mit etwas technischem Verständnis recht intuitiv zu bedienen - einzige Ausnahme der Intuition: bevor man eine neue Freigabe einrichten kann, muss das entsprechende Laufwerk (hier Raid2) im Menüpunkt Dateisysteme eingebunden werden. Der Rest geht wie von selbst und funktioniert reibungslos.

Wie oben schon geschrieben, ist natürlich auch die Ausfallsicherheit wichtig. Was lag also näher, als einfach mal eine Platte zu „schrotten“, oder einfacher gesagt abzuklemmen. Also: Platte C gelöscht und eine neue, leere Platte reingehängt.

Leider hat Grub aus bisher unbekanntem Grund nicht mehr funktioniert (Partition 1 auf Platte A mit dem /boot-Verzeichnis ist ja unbeschädigt), aber die Wiederherstellung war trotzdem kein großes Problem: Start von einer Live-CD (ich habe das bekannte Knoppix verwendet), dann Partitionierung der neuen Platte genau wie die Alte. Bei meinem Beispiel läuft die Reparatur dann wie folgt ab: Raid3 wird neu erstellt, es enthielt ja keine Daten (nur SWAP): mdadm –create /dev/md0 -l0 -n2 /dev/sdb1 /dev/sdc1

Die noch vorhandenen aber angeschlagenen RAID-5 Systeme werden mit mdadm –assemble –scan gesucht und zusammengesetzt und anschließend repariert: mdadm /dev/md1 –add /dev/sdc2 mdadm /dev/md2 –add /dev/sdc3

Die Reparatur (auch Rekonstruktion genannt) dauert eine ganze Zeit lang, der Status kann in /proc/mdstat mitverfolgt werden. Während der Reparatur kann auf die Daten zugegriffen werden - sie sind unversehrt.

Wenn die Reparatur abgeschlossen ist, kann das System wie gewohnt gestartet werden - auch Grub funktioniert von selbst wieder.

Update von 2017

Das NAS läuft zwischenzeitlich auch in Hardware mit 4x3TB im RAID5-Verbund unter einem out-of-the-box Ubuntu LTS und verrichtet hier klaglos seinen Dienst - egal ob in Zusammenarbeit mit Windows oder Linux, beides mal kommt man auf knapp 120mb/s Lese- und Schreibgeschwindigkeit (mehr gibt das Gigabit-LAN nicht her).

Wichtig für die Performance ist allerdings ein kleiner Eingriff in die RAID-Steuerung, namentlich muss /sys/block/md*/md/stripe_cache_size hochgesetzt werden (z.B.8192), sonst bricht die Schreibleistung stark ein.