Login
Newsletter
Werbung

Do, 13. April 2000, 00:00

RAID-Array unter Linux

Was ist RAID?

Ein RAID (Redundant Array of Independent/Inexpensive Disks) ist eine logische Zusammenfassung von mehreren Festplatten. Dies kann aus Gründen der Datensicherheit, der Geschwindigkeit oder einfach zur Erstellung einer einzigen zusammenhängenden Platte geschehen.

Der Typ eines RAID-Arrays wird in mehrere Levels eingeteilt:

Level Erklärung
Linear Alle Partitionen bzw. Platten werden einfach aneinandergehängt. Ist die erste Platte voll, wird auf der zweiten, der dritten usw. weitergeschrieben. Verfügbarer Plattenplatz: 100%
0 Auch als Striping bezeichnet. Baut auf dem Linear-Mode auf. Die Daten werden aber auf allen Platten gleichmäßig verteilt. Dadurch wird der Datendurchsatz, besonders bei großen Datenmengen, erheblich erhöht.
Vorsicht! Fällt eine Platte aus, ist das gesamte RAID unbrauchbar! Verfügbarer Plattenplatz: 100%
1 Auch Mirroring oder Duplexing genannt. Jede einzelne Platte wird komplett gespiegelt. Quittiert eine Platte den Dienst, springt automatisch die zweite Platte (Spiegel) ein. Der Vorteil von Level 1, liegt klar in der hohen Datensicherheit. Man sollte aber nicht den finanziellen Aufwand dieser Methode vergessen. Verfügbarer Plattenplatz: 50%
2 Verwendet einen ECC-Algorithmus ("Error Correction Code"). Hierbei werden aus den vorhandenen Daten Prüfsummen erstellt. Fällt eine Platte aus, können so trotzdem die Daten restauriert werden. Es gibt zu den »normalen« Platten zusätzlich (mehrere) ECC-Platten. Der Vorteil ist eine sehr hohe Ausfallsicherheit, da hier sogar mehrere Platten ausfallen dürfen.
3 Im Gegensatz zu RAID 2 werden die Prüfsummen nicht auf zusätzliche ECC-Platten geschrieben, sondern auf eine sogenannte Paritydisk. Nachteil: Geringere Sicherheit bzw. langsam. Um Daten auf das Datenlaufwerk zu schreiben, müssen sie erst ausgelesen werden, dann in die Datenstruktur eingebaut werden, daraufhin werden die Parity-Informationen erstellt und letztendlich können die neuen Daten gespeichert werden.
4 Die High-Speed Variante von Level 3. Die Daten werden nicht fein säuberlich in kleinen Blöcken verteilt, sondern in größeren. Vorteil: Höhere Lese- und Schreibperformance.
5 Logische Weiterentwicklung von RAID 3 und 4; verteilt die Parity- Informationen einfach intelligent über alle Platten. Beste Lösung hinsichtlich Performance und Sicherheit!

Neben RAID 0 und 1 ist RAID 5 die verbreitetste RAID-Lösung. Die Levels 2 bis 4 werden dagegen in der Praxis nur sehr selten eingesetzt.

Arten

Grundsätzlich gibt es zwei Arten von RAIDs: Hard- bzw. Software-Lösungen. Die Hardware-Lösungen sind für den professionellen Einsatz ausgelegt und kosten im allgemeinen viel Geld. Sie übernehmen die Verwaltung eines Arrays. Das Betriebssystem ist im Grunde völlig unbeteiligt.

Unter Linux gibt es nun die Möglichkeit, diese Verwaltung per Software zu steuern und einen normalen Festplatten-Controller dafür zu benutzen. Der Festplattentyp ist im allgemeinen egal (IDE, EIDE, SCSI, ATA, Firewire,...) und kann bei einem Linear-, Level 0-, und Level 1-RAID sogar gemischt werden. Bei RAID 4 und 5 sollte man jedoch eher ein Sorte und eventuell sogar identische Harddisks benutzen (diese beiden Levels kommen sowieso meist nur in Servern vor, die noch andere Goodies - UPS, Hotswap/-plug - besitzen).

Warum? Anhand von RAID 0

Man kann so recht einfach aus einige kleinere Platten (billiger bzw. sind vom letzten Upgrade über und man weiss nicht, was man mit ihnen anstellen soll), kann man damit eine größere Partition anlegen. Ausserdem ist der Datendurchsatz einiges höher, so daß man mit einigen langsameren Modellen eventuell sogar schneller ist als mit einer einzigen (teureren und heißeren) Serverplatte. Man kann also statt folgender Partitionierung:

Filesystem Total kbytes kbytes %
device kbytes used free used Mounted on
/dev/sda1 15823 9537 4704 67% /
/dev/sda3 1829309 1264873 381506 77% /usr
/dev/sdb1 191958 9 172754 0% /small1
/dev/sdc1 191958 9 172754 0% /small2
/dev/sdd1 1909325 29 1718364 0% /big2
/dev/sde1 1025542 9 922979 0% /big3

Eher etwas wie:

Filesystem Total kbytes kbytes %
device kbytes used free used Mounted on
/dev/sda1 15823 9537 4704 67% /
/dev/sda3 1829309 1264873 381506 77% /usr
/dev/md0 3318783 9 3318774 0% /array

aufbauen (wobei /dev/md0 das RAID-Device ist)

Und wie geht so etwas...?

Als erstes besorgt man sich die Software (SuSE Linux hat das im Packet ap: mdutils). Siehe auch Infos vom Autor. und installiert diese nach Anweisung.

Jetzt muss man (falls nicht im Standardkernel) einen neuen Kernel übersetzen, der über die Fähigkeit verfügt, mit Multiple Devices umgehen zu können. Dies befindet sich (im make (x/menu)config) unter Floppy, IDE and other Block Devices. Nun den neuen Kernel kompilieren, dann installieren und rebooten.

Nun legt man zum ersten Mal (zur Konfiguration) ein RAID an. (Ich gehe im folgenden von einem RAID 0 aus)

/sbin/mdadd /dev/md0 /dev/sdc1 /dev/sdd1 /dev/sde1

Dies ist der Befehl, der die Devices zu einer logischen Einheit zusammenfasst. Damit sind sie noch nicht lauffähig! Das macht man mit

/sbin/mdrun -p0 /dev/md0

Jetzt ist der RAID 0 zugreifbar, hat aber noch kein Dateisystem. Also mit mke2fs /dev/md0 noch schnell ein Dateisystem anlegen und fertig. Jetzt kann es ganz normal mit mount -t ext2 /dev/md0 /wo_auch_immer in das bestehende Dateisystem eingehängt werden.

Fertig?

Nein, nicht ganz. Wir wollen ja, daß bei jedem Start das RAID in unser Dateisystem eingehängt wird. Dazu müssen wir beim Systemstart die RAID-Software starten, das RAID logisch anmelden und dann mounten. Also (fast) alle Schritte vo oben müssen automatisiert werden.

Im Moment haben wir (hoffentlich) noch nicht rebootet, der RAID läuft und ist im System eingebunden. Als erstes lassen wir mal den Befehl /sbin/mdcreate raid0 /dev/md0 /dev/sdc1 /dev/sdd1 /dev/sde1 laufen. Dieser kreiert uns eine Datei /etc/mdtab. Diese Datei hat für den RAID 0 ungefähr die gleiche Aufgabe wie /etc/fstab für den Rest. Mit dieser Datei weiss RAID, was Sache ist und wir müssen nicht immer so viel tippen. Nun können wir mdadd und mdrun, bzw mdstop (auch den gibt es) mit der Option -a ohne weitere Angaben laufen lassen. Sie holen sich dann die Angaben aus der Datei /etc/mdtab.

Es gibt nun zwei Möglichkeiten:

  1. Diese Distribution unterstützt schon Multiple Devices (z.B. SuSE). Dann müssen wir nur noch einen Eintrag in /etc/fstab machen, dann sind wir fertig. Dazu muß man nur die Kommandoprozeduren /etc/init.d/boot und /etc/init.d/halt überprüfen.
  2. Diese Distribution unterstützt noch keine Multiple Devices. Dann müssen wir von Hand nachbessern. Das beste ist ein Eintrag in /etc/init.d/boot mit dem Befehl /sbin/mdadd -ar (bevor mount ausgeführt wird) und in /etc/init.d/halt das Kommando /sbin/mdstop -a (nachdem umount ausgeführt wird).

Zuletzt noch ein Eintrag in /etc/fstab:

/dev/md0 /wo_auch_immer ext2 defaults 1 2

Jetzt noch einen Reboot und wir sind fertig!

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung