Linux.raid

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

"md" ist ein Kernel Bestandteil von Linux mit dem man per Software ein RAID-System aufbauen kann. md stellt dem Linux System eine Partition zur Verfügung (in der Regel "/dev/md0") die es "so" gar nicht real auf der/den Festplatte(n) gibt. Je nach RAID Level werden Schreib- Lesezugriff auf /dev/md0 durch die md-Software auf die realen Partitionen weitergegeben. RAID kann für mehr Datensicherheit sorgen (der Preis dafür ist geringe Geschwindigkeit sowie geringere Nettonutzinhalt der Partition), oder für höhere Zugriffsgeschwindigkeit (der Preis dafür die eine höhere Ausfallwahrscheinlichkeit), das alles jedoch unterhalb der Dateisystem-Ebene.

Ich finde diese RAID-Software-Lösung optimal, da das ganze Array von einem Mainboard auf ein anderes umgezogen werden kann. Auch von einem Kernel zu einem neueren. Es ist kein spezieller Controller nötig, der 2fach vorgehalten werden muss. Hier einige ausgesuchte Details - Infos ...

Vorwort

Also hier die Messergebnisse mit einem per 1GBit-LAN angebundenen Windows 7 Client. Das Netzwerk ist hier wohl das Limitierende Element.

Konzepte

  1. Erstelle maximale Partitionen auf den Platten, Typ "fd", Linux raid autodetect
  2. Erstelle eine raid-Partition aus den Einzelnen
    mdadm --create --verbose /dev/md0 --level=6 --raid-devices=5 /dev/sd[bcdef]1
  3. Erstelle ein Filesystem auf der raid-Partition

raib25, Versuchsaufbau

  • Hier 4x 1 Terrabyte Festplatten von 2 unterschiedlichen Herstellern (2x ST1000NM0011, 2x WD1003FBYX) im Software RAID 5 Verbund
  • Zum Booten und für das openSuSe 11.4 System verwende ich eine Intel SSD
  • Man sieht im Versuchsaufbau die 4 Festplatten auf übergrosse Kühlkörper geschraubt

Infos

  • Sich am besten mal im Wiki über RAID Level informiern
  • Das Tool unter Linux heisst mdadm, und es ist überall gut dokumentiert
http://www.ducea.com/2009/03/08/mdadm-cheat-sheet/
  • Nicht erschrecken, direkt nach dem erstellen eines RAID 5 Verbundes ist da einige Zeit ein "Spare" Drive, das verschwindet aber wenn das Array vollständig erzeugt ist. Schon in dieser Phase kann das Array benutzt also beschrieben werden.
http://www.spinics.net/lists/raid/msg34976.html

Betrieb

Tipps

  • Benutze Level 5 oder 6
  • Benutze ein Bitmap, aber kein externes (dadurch schwächst Du die Datensicherheit, Stichwort Mobilität des RAID)
  • Benutze Platten mit nahezu gleicher Grösse und Datenrate
  • Wenn eine Platte leicht oder sehr viel grösser ist als die anderen im Verbund. Erstelle dennoch eine maximal grosse Partition. Wenn die kleinen Platten in Zukunft alle ausgefallen / ausgetauscht sind kannst Du mit --grow die RAID Partition auch vergrössern und so den zunächst ungenutzen Platz dennoch nutzen.
  • Benutze Platten verschiedener Hersteller, oder verschiedene Modelle / Serien, oder verschiedene Chargen Nummern. Dies erhöht die Diversität des Ausfallmomentes.
  • Mache Firmware-Updates auf einem Windows PC vor dem Einbau
  • Lese die Serien Nummern der Platten mit smartctl aus und lege Dir eine Lageplan-Skizze der Platten in eingebauter Position an, damit Du defekte Platten anhand ihrer Seriennummer lokalisieren kannst.

Vollständiger Lesecheck

echo check > /sys/block/mdX/md/sync_action

Montoring

watch -n.4 'cat /proc/mdstat'
mdadm --detail /dev/md0

Umzug

  • Das ganze Array einfach abklemmen, aber die SATA Kanal Reihenfolge auf dem neuen System wieder einhalten. Neu starten, die neue Partition mit dem richtigen FIlesystem mounten fertig.
  • 3.0.101-95 nach 3.4.63-2.44 ist ohne Probleme gelungen

Vergrössern

  1. Für jede einzelne Platte gilt:
    1. alte Partition mit -f, -r aushängen
    2. bei neuer Platte eine maximale partition anlegen
    3. neue Platte mit maximal grosser Partition zum Array hinzuaddieren
  2. Dateisystem aushängen
  3. mdadm --grow ausführen, um das Array wachsen zu lassen
  4. Das Dateisystem auf die neue grösse Partition wachsen lassen
  5. Dateisystem einhängen

Autostart

  • mit systemd.mount
  • joe /etc/systemd/system/srv-smb-ra6.mount
[Unit]
Description=srv-smb-ra6

[Mount]
What=/dev/md0
Where=/srv/smb/ra6

[Install]
WantedBy=local-fs.target