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 md3
Das 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.
RAID Arten
- RAID0 (Stripping mode)
- In diesem Modus werden die Platten alternativ abwechselnd verwendet, jeder Block kann sich auf irgendeiner Platte befinden, wodurch eine höhere Effizienz erreicht wird. Da die Wahrscheinlichkeit für das Auffinden eines Blockes einer Datei für alle Platten gleich ist, werden alle Platten simultan verwendet, wodurch die Leistung der Metadisk fast n-mal höher, als die einer einzelnen ist.
- RAID1
- Dieser Modus zielt auf die höchste Sicherheit der Daten ab. Datenblöcke werden auf allen physikalischen Platten dupliziert (jeder Block der virtuellen Platte hat einen identischen Block auf jedem physikalischen Gerät). Durch diese Konfiguration ist die Leseoperation n-mal schneller (bei n Geräten), verglichen mit der Operation einer einzelnen Platte, die Schreiboperation jedoch recht langsam. Eine Leseoperation kann n Blöcke parallel einlesen, von jedem Gerät ein Block. Bei einer Schreiboperation wird ein Block n mal dupliziert, für jede physikalische Platte.
Die Speicherkapazität betreffend wird bei dieser Anordnung kein Vorteil erzielt.
- RAID4
- (RAID2 und RAID3 werden nicht mehr verwendet).
- Hier wird versucht, die Vorteile von RAID0 und RAID1 zu verbinden. Daten werden organisiert, indem die Methoden beider Modi kombiniert werden. Die physikalischen Platten 1 bis n-1 werden im Modus RAID0 organisiert, während die n-te Platte die Parität der einzelnen Bits der korrespondierenden Blöcke auf den Platten 1 bis n-1 sichert. Sollte eine der Platten ausfallen, so können die Daten über die Paritätsinformationen der n.ten Platte wiedergewonnen werden. Die Effizienz einer Leseoperation ist n-1, die einer Schreiboperation 1/2 (da nun das Schreiben eines Datenblockes auch bedeutet, auf die n-te Platte zu schreiben) - verglichen mit einer einzelnen Platte. Um die Daten einer zerstörten Platte wiederherzustellen, muß man lediglich die Informationen einlesen und wieder abspeichern (gelesen wird dann nämlich von der Paritätsplatte, beschrieben aber nun das neu installierte Gerät).
- RAID5
- Ähnlich zu RAID4, außer daß nun die Informationen der Paritätsplatte über alle Festplatten verteilt ist (es existiert keine dedizierte Paritätsplatte mehr). Dadurch wird die Last der Paritätsplatte verteilt, auf die ja unter RAID4 bei jeder Schreiboperation zugegriffen wurde (nun liegen die Paritätsinformationen auf verschiedenen Platten).
... Es wird RAID0 wegen seiner Effizienz betrachtet, auch wenn hier die Redundanz fehlt, ...
|
Es gibt noch andere RAID Kombinationen, die RAID1 und einen anderen Modus kombinieren. Es gibt auch Versuche, Festplattenkompression für die physikalischen Geräte zu ermöglichen, wobei dies nicht unumstritten ist, da der Nutzen der Kompression nicht so ganz klar ist. Sicherlich werden in Zukunft noch weitere Vorschläge auftauchen. Doch erstmal wird nun RAID0 wegen seiner Effizienz betrachtet, auch wenn hier die Redundanz fehlt, die im Falle eines Plattendefektes die Daten erhält. Besteht das RAID System nur aus ein paar Platten (3 oder 4), so ist der Preis der Redundanz recht hoch (ein drittel bzw. ein viertel an Plattenkapazität geht verloren). Redundanz schützt zwar die Daten vor Plattenfehlern, aber nicht vor dem ungewollten Löschen. Deswegen entbindet ein redundantes RAID System nicht von der Verpflichtung, Backups zu machen. Bei einer großen Zahl von Platten (5 oder mehr) fällt die Verschwendung von Festplattenplatz nicht mehr so stark ins Gewicht. Einige 16-Bit SCSI Karten können bis zu 15 Geräte verwalten. In diesem Fall kann man nur zu RAID5 raten.
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.
Installation eines RAID0 Systemes
Als nächstes wird die Installation eines RAID0 Systemes beschrieben. Sollte der Leser ein RAID System anders, als das hier beschriebene, unter einem 2.0.xx Kernel aufbauen wollen, so muß er sich einen speziellen Patch besorgen.
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/?] Y
Nach 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.
Die neuen Geräte werden über die folgenden mdutils Werkzeuge verwaltet:
Zu finden sind sie unter sweet-smoke.ufr-info-p7.ibp.fr /pub/Linux, sind aber auch oft Teil der Distributionen.
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 -a
Nun sollte md0 schon initialisiert sein. Um sie zu formatieren:
mke2fs /dev/md0
und 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.
Beispiel:
Dies ist die Konfiguration, die ich im Augenblick verwende. Ich habe eine 6.3 GB IDE , eine 4.2 GB und 2 GB SCSI Festplatte.
HD 6.3Gb IDE
/ |
/bigTemp + /incoming |
swap |
2Gb(RAID) hda4 |
HD 4.2Gb SCSI
C: |
D: |
swap |
2Gb(RAID) sda4 |
HD 2Gb SCSI
#######</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).
Literaturverweise
- mdutils liefert entsprechende Dokumentation mit
- Mini-HOWTO Multiple-Disk
- Die Multiple Disk Layout Mini-HOWTO Homepage www.nyx.net/~sgjoen/disk.html
Übersetzung:
Webpage mantained by Miguel Ángel Sepúlveda
© Antonio Castro 1998
LinuxFocus 1999 |