|
|
|
 |
|
Linux RAID
bedeutet soviel wie "ein Bündel Platten das Eure Informationen
sicher verwahrt" oder, weniger blumig im Original - Redundant
Array of Independent Disks. Das besagt nichts anderes, als das Eure
Daten zielsicher auf mehreren Festplatten verwahrt werden. Nicht immer
bedeutet RAID erhöhte Datensicherheit. In einigen Fällen wird
es einfach zur Performancesteigerung verwendet. Der ursprüngliche Sinn
ist allerdings Datensicherheit beim Ausfall einer Festplatte.
Im Normalfall wird ein RAID System Hardwaretechnisch realisiert, indem
man mehrere zueinander passende Festplatten an einen speziellen RAID
fähigen Controller anbindet. Bekanntere Vertreter Ihrer Art sind
die Auto-RAID Systeme von HP und SUN, der Serve-RAID von IBM etc. Diese
Systeme sind allesamt ganz Klasse, haben jedoch den Nachteil auch ziemlich
teuer zu sein. Was aber macht man wenn man selbst ein RAID System braucht
oder einfach eines haben will ( Spieltrieb befriedigen, Performance
steigern, Datensicherheit.. ) ? Man benutzt die Mechanismen des Linux-Kernel
und einige Zusatztools. Das ganze nennt sich dann Software-RAID, ist rel.
performant, sehr zuverlässig und liegt preislich im Bereich 0,-- Euro
Klären wir erstmal die Frage der verfügaren RAID Level.
- RAID linear
- ist ein einfacher Mechanismus der mehrere Platten
zu einer einzigen verschmilzt. Der Vorteil hier ist, das Ihr jede Platte
einfach in das Array einhängen könnt ohne Euch Gedanken um
Ihre Grösse machen zu müssen. So könnt Ihr Euren Platz
beliebig und leicht erweitern. Nachteil : Geht eine Platte kaputt, sind
sämtliche Daten weg. Performancevorteil gleich 0.
- RAID Level 0
- beschreibt das Zusammenfassen mehrerer Platten in ein sog. "
Stripe Set". Dabei werden Schreib und Lesezugriffe auf mehrere
Platten verteilt, was vorallem wenn Ihr mit Datenbanken arbeitet einen
Geschwindigkeitsvorteil mit sich bringt. Schliesslich könnt Ihr
damit mehr Daten in der gleichen Zeit einlesen oder wegschreiben. Der
Nachteil ist auch hier, das keinerlei Datenredundanz vorliegt. Geht
eine Festplatte den Bach runter, sind alle Daten verschwunden. Diese
Variante ist die im Heimbereich übliche. Dabei solltet Ihr beachten
das die Platten im Optimalfall identisch sind.
- RAID Level 1 *wird unten behandelt*
- ist der erste Mechanismus der auch für den semiprofessionellen
Bereich geeignet ist. Hier wird die Festplatte gespiegelt, deswegen redet
man hier auch häfig von "Mirroring". Die Festplatten sollten
identisch sein, da die Größe des zur Verfügung stehenden
Speichers von der kleineren Platte vorgegeben wird. Fällt eine Platte
aus ist das kein Problem, da Ihr die Daten von der anderen nehmen könnt.
Quasi ein Backup zur Laufzeit.
- RAID Level 4
- ist schon sehr interessant für den Einsatz in mittelständischen
Unternehmen mit kleinen Netzen. RAID 4 beschreibt ein Strping Set, wie in Level 1,
mit dem Vorteil einer eigenen "Parity Partition". Anhand der Daten die
hier gespeichert werden, lassen sich bei einem ev. Plattenausfall die Daten des
Stripe Sets wieder rekontruieren. Der Nachteil liegt hier in der Performance.
Durch die eigene Parity Partition, erfolgen Schreibzugriffe doppelt da Daten
auch hier geschrieben werden müssen. Auch hier müssen die Platten
die gleiche größe haben.
- RAID 5
- stellt den Gipfel an Rednudanz dar. Hier werden die Informationen auf alle
Platten verteilt, incl. der Parity Informationen, so das ein doppelter Schreibzugriff
entfällt. Wenn eine Platte ausfällt, können auch anhand der
Parity Informationen auf den beiden verbleibenden, die Informationen wieder
hergestellt werden. Auch RAID 5 hat einen Nachteil. Der Platz : Wenn man z.B.
3 Platten a 18 GigaByte in ein RAID Set steckt, erhält man nur 2 x 18 GigaByte
"Nettospeicherplatz". Die restlichen 18 GB gehen für die Parity
Informationen drauf. Wie bei RAID 1 und 4 müssen auch hier die Platten
die gleiche Größe haben.
Am besten ist ohnehin man kauft identische Platten. Soweit ein kurzer Überblick
über die RAID Level. Kommen wir zur Praxis. Erklärt wird am Beispiel
von RAID Level 1. Das hat 2 Gründe. Erstens ist er der, für den Heimeinsatz,
geeignetste und zweitens habe ich zufällig sowas bei mir eingerichtet. Guck
an ;)
Let there be light... und das Paket ap
ap liegt im Paket RAID Tools und beinhaltet alle
Zusatzprogramme, die benötigt werden um ein RAID System aufzubauen und
zu handhaben. Als erstes solltet Ihr aber noch den Kernel-Patch einspielen,
der es möglich macht von einer RAID Platte zu booten. Download unter
www.kernel.org. Die genaue
Adresse will ich hier wegem ständigen Wechsel nicht angeben. Der Patch
wird eingespielt indem Ihr ihn in das Verzeichnis /usr/src
kopiert und dann mit
- patch=p0<raid0145-19990724-2.2.10
installiert. Nach dem entsprechenden Neukompilieren des Kernels und einem
Reboot seit Ihr fertig. Wenn alles entsprechend funktioniert hat, habt Ihr
im Verzeichnis : /proc die Datei mdstat, die in etwa
so aussehen sollte :
Personalities : [1 linear]
read_ahead not set
md0 : inactive
md1 : inactive
md2 : inactive
Logisch das hier noch nichts drinstehen kann. Den RAID 1 definieren wir jetzt
erst. Normalerweise zeigt die Datei Informationen über den Zustand des
RAID und der Platten an. Kommen wir zum erstellen des RAID :
1. Anlegen der Datei /etc/raidtab
Die Datei raidtab übernimmt im wesentlichen die Funktion dem Kernel
zu verklickern welche Platten für das RAID verwendet werden und legt
einige Grundfunktionen fest. Das Gegenstück zur Datei /etc/fstab
aus der sich Linux die bnötigten Informationen holt, auf welcher Platte
welche Dateisysteme gemounted sind etc.. Die Datei sieht bei mir so aus :
#Anfang RAID Einstellungen
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 1
chunk-size 4
persistent superblock 1
#Platte 1
device /dev/hda1
raid-disk 0
# Platte 2
device /dev/hdb1
raid-disk 1
Definiert die Platten 1 und 2 (IDE) als RAID Platten. Wobei
die physikalische Reihenfolge ( Master, Slave oder Second Master )
mit der im RAID übereinstimmen muß. Die Definitionen
im Einzelnen sind schnell erklärt :
- raiddev /dev/dev/md0
- Hier wird der erste RAID definiert (md0). Dieser wird
dann bei Bedarf in die Datei /etc/fstab eingetragen
- raid-level
- Legt den RAID Level fest
- nr-raid-disks
- Die Anzahl der Festplatten in diesem RAID Set
- nr-spare-disks
- Anzahl der eventuell verfügbaren Reserveplatten. Bei
mir eine, kann auch 0 sein
- chunk-size
- definiert die Mindestmenge an Daten die auf eine Platte
geschrieben werden muss. Wenn Ihr also 16 KByte an Daten schreibt,
dann landen die ersten und dritten 4 KByte auf Platte 1 und die
zweiten und letzten 4 KByte auf Platte 2. Ein chunk wird in KB
gemessen. Die Größe des chunk sollte von der Art der
Daten abhängen die Ihr wegschreibt. Es kann durchaus nützlich
sein diese Zahl zu varieren um einen schnelleren Datendurchsatz zu
erreichen.
- persistent superblock
- Wichtig nur bei RAID von denen Ihr boote wollt oder müsst. Hier
wird ein Superblock definiert
- device
- Gibt an welche Festplatte verwendet werden soll
- raid-disk
- Zeigt an welcher Stelle die Platte im RAID stehen soll
Die Reihenfolge der Platten ist nicht beliebig ! So wie sie im System
liegen, so müssen sie auch in der Datei eingetragen sein. Wechselt
man also die physikalische Reihenfolge, muss auch der Eintrag hier
geändert werden. Mit
wird das RAID jetzt installiert. Was sich in der Datei /proc/mdstat
etwa so auswirkt :
Personalities : [1 linear]
read_ahead not set
md0 : active
- Das Starten und Stoppen eines RAIDS ist immer mit raidstart bzw.
raidstop möglich.VORHER muß man das RAID
allerdings unmounten.
So einfach ist es im Grunde ein funktionsfähiges Mirroring aufzubauen.
Das Verfahren für das Striping, also RAID Lebel 0 ist identisch, nur
das man eben eine 0 statt der 1 bei raidlevel einträgt. Bei 4 und 5,
gibt man einfach die 4 und 5, nebst entsprechend mehr Platten ein. Näheres
zu den Zusatzprogrammen entnehmt bitte den manpages und den entsprechenden
HowTo's.
|