Antonio Castro Bemerkung:
Inhalt:
|
Zusammenfassung:
RAID (Redundant Array
of Inexpensive Disks) besteht aus einer Reihe von Systemen für
die Organisation mehrerer Festplatten zu einer Einheit, die sich wie
ein einziges Laufwerk verhält und dabei die Festplatten
parallel betreibt, wodurch sich die Zugriffswerte verbessern lassen
und sich glecihzeitig ein Backup-system realisieren läßt.
Desweiteren sind RAID Realisierungen zu finden, die auf Karten mit einem einfachen Z80 Chip und integrierter Software fußen, und so mehrere identische Festplatten zu einem RAID System zusammenfassen. Verglichen mit diesen Systemen kann man nicht behaupten, daß diese Lösung effizienter als ein Linux basiertes System sei.
Realisierungen, basierend auf Kontrollerkarten sind teuer und zwingen den
Benutzer ebenfalls, identische Festplatten zu verwenden. Linux wäre in
der Lage, entsprechende Gerätetreiber vorausgesetzt, solche Karten
zu nutzen. Allerdings ist dies nicht wirklich von Interesse, da es durchaus
eine Lösung gibt (natürlich basierend auf freier Software) die ebenso
effizient ist und durch die eine teure Hardwarelösung vermieden werden
kann.
|
Das betrachtete RAID System für Linux ist auf Kernelebene realisiert und erlaubt den Einsatz von verschiedenen Festplatten. Es können auch IDE und SCSI Platten zusammen verwendet werden. Sogar Platten von verschiedener Kapazität können zum Einsatz kommen, allerdings müssen dann den Platten Partitionen der gleichen Grösse zugewiesen werden. Häufig werden mehrere Platten der gleichen Größe verwendet, allerdings sollte halt nochmals darauf hingewiesen werden, daß Linux hier viel flexibler ist. Zum Beispiel können Teile einer Festplatte für ein RAID System verwendet und andere als eigenständige Partition betrieben werden. Dies ist meist keine gute Idee, da eine eigenständige Partition innerhlab eines RAID Systemes die Zugriffsgeschwindigkeit des selbigen reduziert. Anders ausgedrückt: obwohl es möglich ist, beliebige Arten von Festplatten zu verwenden, ist es immer besser (wenn möglich), Platten der selben Kapazität und gleicher Eigenschaften zu verwenden. Ein weiterer Aspekt, der zu überlegen ist, ist der Einsatz von SCSI, wo auf mehrere Geräte, die an den Bus angeschlossen sind, zugegriffen werden kann.
Im Gegensatz dazu kann niemals auf mehrere Geräte, die an dem gleichen IDE Kontroller hängen, gleichzeitig zugegriffen werden. Leider sind SCSI Festplatten immernoch viel teurer, als ihre IDE Gegenstücke. Die Softwarelösung eines Linux RAID Systemes ist genauso effizient (wenn nicht gar effizienter), wie Lösungen, die auf speziellen Karten basieren. Zugleich ist die Softwarelösung natürlich wesentlich günstiger und flexibler, besonders wenn man sich die Platten anschaut, die eingesetzt werden können.
Während ein Gerät an einem SCSI Bus Daten auf diesen legen und
parallel dazu ein anderes Gerät Daten empfangen kann, läuft der Zugriff
auf IDE Festplatten seriell ab, eine nach der anderen.
Wichtig ist, daß das Linux System von einer Platte starten muß,
die nicht zum RAID Verband gehört und möglichst klein sein sollte,
damit das Wurzelverzeichnis relativ leer ist.
Name | Busbreite in Bits | Anzahl von Geräten | MB/s | Anschluß | Max. Kabellänge |
---|---|---|---|---|---|
SCSI-1 | 8 | 7 | 5 | 50 polig LowDens | 6 m |
SCSI-2
(alias) Fast SCSI, Narrow SCSI |
8 | 7 | 10 | 50 Pins HighDens | 3 m |
SCSI-3
(alias) Ultra SCSI, Fast20 |
8 | 7 | 20 | 50 polig HighDens | 3 m |
Ultra Wide
(alias) Fast SCSI-3 |
16 | 15 | 40 | 68 polig HighDens | 1.5 m |
Ultra2 | 16 | 15 | 80 | 68 polig HighDens | 12 m |
Ein RAID System wird von mehreren verschiedenen Festplattenpartitionen gebildet, als Ergebnis erhält man aber eine einzelne logische Partition einer einzelnen Platte, auf denen man keine weiteren Partitionen anlegen kann. Der Name dieses logischen Gerätes ist "Metadisk".
IDE Platten haben unter Linux Gerätedateien mit den Namen /dev/hd..., während die zu den SCSI Geräten gehörenden auf die Namen /dev/sd... hören. Für Metadisks sind das entsprechend /dev/md..., sobald später der Kernel mit den entsprechenden Optionen erzeugt worden ist. Für diese Geräte sollten dann folgende Einträge da sein:
brw-rw---- 1 root disk 9, 0 may 28 1997 md0 brw-rw---- 1 root disk 9, 1 may 28 1997 md1 brw-rw---- 1 root disk 9, 2 may 28 1997 md2 brw-rw---- 1 root disk 9, 3 may 28 1997 md3Das erste Ziel sollte sein, die Zugriffszeiten für das Swapping so klein wie möglich zu machen. Am besten verwendet man dafür eine kleine Metadisk im RAID System oder man verteilt den Swapspeicher (wie sonst üblich) auf alle physikalischen Platten. Werden mehrere Swap Partitionen verwendet, jede auf einer anderen Platte, so wird das Swap Management von Linux die Last gleichmäß auf ihnen verteilen. Ein RAID System ist in diesem Falle unnötig.
|
Sollte man nicht identische Platten verwenden wollen, so sollte man nicht
vergessen, daß RAID Systeme immer mit identischen Blöcken aon
Informationen arbeiten. Es ist richtig, daß die langsameren Platten
mehr beansprucht werden, in jedem Fall weist das RAID System aber immer noch
ein besseres Leistungsverhalten auf als eine einzelne Platte.
Der Leistungszuwachs durch ein richtig
konfiguriertes RAID System ist wirklich spektakulär. Die Leistung steigt
fast linear mit der Anzahl der Platten der RAID Anordnung.
RAID0 ist nicht redundant, jedoch ist Redundanz in einem System mit einer großen Zahl von Platten angebracht, da hier nicht allzu viel Festplattenkapazität verschwendet wird. Eine einzelne Platten für Redundanz einzusetzen, wenn nur drei Platten zu Verfügung stehen, ist reine Verschwendung. Auch wird durch Redundanz ja nur der Verlust von Informationen abgedeckt, welcher durch physikalische Fehler der Platten bedingt ist, ein eher selteneres Ereignis. Stehen hingegen zum Beispiel zehn Platten bereit, fällt der Einsatz einer Platte für Paritätszwecke nicht so ins Gewicht. Bei einem RAID0 System bedeutet ein Festplattenfehler auf einer Platte den Verlust aller Informationen aller physikalischen Geräte, ordentliche Backup-Maßnahmen sind deshalb angebracht.
Der erste Schritt besteht darin, die entsprechenden Treiber in den Kernel einzubinden. Für RAID unter Linux 2.0.xx sind bestehen die folgenden Möglichkeiten:
Multiple devices driver support (CONFIG_BLK_DEV_MD) [Y/n/?] Y Linear (append) mode (CONFIG_MD_LINEAR) [Y/m/n/?] Y RAID-0 (striping) mode (CONFIG_MD_STRIPED) [Y/m/n/?] YNach dem Booten des Systemes mit dem neuen Kernel wird im /proc Verzeichnis ein Eintrag mdstat zu finden sein, der den Status der vier (Standardwert) Geräte, die als md0, md1, md2 und md3 angelegt worden sind, beinhaltet. Da noch keines von ihnen initialisiert wurde, sollten sie als inaktiv gekennzeichnet und noch nicht verwendbar sein.
Für Kernel 2.1.62 und höher existiert ein anderes Paket namens RAIDtools, das RAID0, RAID4 oder RAID5 erlaubt.
Im folgenden Beispiel wird gezeigt, wie eine RAID0 Metadisk unter Einsatz von
zwei Festplatten, genauer /dev/sdb1 and /dev/sdc1, realisiert wird.
Metagerät | RAID Modus | Disk Partition 1 | Disk Partition 1 |
---|---|---|---|
/dev/md0 | linear | /dev/sdb1 | /dev/sdc1 |
Weitere Partitionen könnten hinzugefülgt werden.
Ist die Metadisk erstmal formatiert, sollte sie unter keinen Umständen mehr verändert werden oder alle Informationen gingen verloren.
mdadd -a mdrun -aNun sollte md0 schon initialisiert sein. Um sie zu formatieren:
mke2fs /dev/md0und gemountet wird sie:
mkdir /mount/md0 mount /dev/md0 /mount/md0
Sollte bis hierhin alles funktioniert haben, kann der Leser diese Befehle in eines der Bootskripte einfügen, sodaß beim nächsten Neustart die RAID0 Metadisk automatisch gemountet wird. Vor dem automatischen Einbinden ist es aber notwendig einen Eintrag in der Datei /etc/fstab anzulegen, sowie die Kommandos mdadd -a und mdrun -a von einem Skript aus vor dem Mounten auszuführen. Bei einer Debian Distribution wäre die Datei /etc/init.d/checkroot.sh ein guter Ort, um die Befehle ausführen zu lassen, direkt vor dem Remounten des Wurzelverzeichnisses im Lese/Schreibmodus, was durch die Zeile mount -n -o remount,rw / realisiert wird.
HD 6.3Gb IDE
/ | /bigTemp + /incoming | swap | 2Gb(RAID) hda4 |
HD 4.2Gb SCSI
C: | D: | swap | 2Gb(RAID) sda4 |
HD 2Gb SCSI
swap | 2Gb(RAID) sdb2 |
#######</etc/fstab>################################################ # <file system> <mount point> <type> <options> <dump> <pass> /dev/hda1 / ext2 defaults 0 1 /dev/hda2 /mnt/hda2 ext2 defaults 0 2 /dev/md0 /mnt/md0 ext2 defaults 0 2 proc /proc proc defaults 0 2 /dev/hda3 none swap sw,pri=10 /dev/sdb1 none swap sw,pri=10 /dev/sda3 none swap sw,pri=10
#########</etc/mdtab>####################################### # <meta-device> <RAID-mode> <DskPart1> <DskPart1> <DskPart1> /dev/md0 RAID0,8k /dev/hda4 /dev/sda4 /dev/sdb2
Das Wurzelverzeichnis ist auf der 6 GB Platte, unter hda1 zu finden. Desweiteren ist auf der Platte eine große Partition für downloads aus dem Internet, CD Images, usw. Diese Partition hat nicht allzuviel Last, da sie nicht gar so häufig genutzt wird. Die 4 GB Platte hat keine Partitionen, das die Effizienz des RAID Systemes negativ beeinflußen könnten, da es nur MS-DOS Partitionen sind, welche kaum unter Linux verwendet werden. Die 2 GB Platte wird fast komplett für das RAID System verwendet. Auf jeder Platte ist ein kleiner Berreich, der als Swapspeicher verwendet wird.
Es sollte versucht werden alle Platten (Partitionen) der RAID Anordnung ungefähr die gleiche Größe zu geben, da große Unterschiede die Effizienz beeinträchtigen. Kleinere Differenzen sind dagegen nicht weiter tragisch. Der ganze Speicher wird genutzt, sodaß alle Daten der Partitionen, die eingebunden werden können, genutzt werden, und die anderen frei bleiben.
Das Verwenden von mehreren IDE Platten für ein einzige RAID System ist nicht so effizient, da IDE Platten keinen parallelen Zugriff erlauben. Im Verbund mit mit mehreren SCSI Platten arbeiten IDE aber ganz gut (SCSI Platten können ja parallel verwendet werden).
Webpage mantained
by Miguel Ángel Sepúlveda
© Antonio Castro 1998 LinuxFocus 1999 |