Software Raid Howto

Andreas Stricker


Inhaltsverzeichnis

Grundlagen
Wie unterscheidet sich ein Software-Raid von einem Hardware-Raid?
Raid-Fähigkeiten von Linux
Swap und Software-Raid
Raid-Konfigurationen
Ein Softwareraid einrichten
Kernel vorbereiten
Partitionierung
User-Space Tools für die Verwaltung
Filesystem anlegen
Fehlerbehebung beim Ausfall einer Festplatte
Grundlagen
Festplatte wechseln
Tools
raidtools
mdadm
raidreconf
Enterprise Volume Management System EVMS
Anwendungs-Szenarien
System auf Raid booten
LVM
A. Fehler und Lösungen
B. Autoren
C. Changelog
D. GNU Free Documentation License
Literatur zu Software Raid

Zusammenfassung

Dieses Dokument sieht sich als Ergänzung zu den praktisch orientierten, offiziellen HOWTOs und nicht als Konkurrenz. Es wird hier speziell auf Probleme eingegangen, welche bei mir aufgetreten sind, oder im meinem bevorzugten Linux-Forum [1] zur Diskussion standen.

Die Erkenntnisse der wichtigsten Quellen sind in diesem Dokument zusammengefasst. Eine ausführliche Literatur-Liste ist im Anhang A zu finden. Ich empfehle das dort angegebene HOWTO SRaidHTde, SRaidHTen, faqSRaidHT nach diesem Text durchzulesen.

Grundlagen

Wie unterscheidet sich ein Software-Raid von einem Hardware-Raid?

Während SCSI-Raid-Controller ein halbes Vermögen kosten, gibt es mittlerweile einige IDE-Raid-Adapter für viel weniger Geld. Zum Teil kosten diese nur unwesentlich mehr als ein zusätzlicher PCI-IDE-Adapter. Auch auf vielen Mainboards finden sich solche billig-Raids RaidTHG1 IdeTHG1 IdeTHG2.

Die IDE-Raid-Adapter unter ca. 200 Euro kommen in der Regel ohne eigenen Prozessor, so dass die CPU die Arbeit übernehmen muss, die Datenströme zusammenzufügen oder zu teilen. Dazu brauchen diese Software welche diese Aufgabe übernimmt. Das können Bios-Erweiterungen sein, oder Treiber für das jeweilige Betriebsystem.

Wie bei anderer Hardware auch, gibt es nicht für alle Adapter Linux-Treiber. In diesem Fall ist ein Parallel-Betrieb von Linux und Windows auf dem Raid nicht möglich.

Wenn das Budget sowieso nicht für einen guten Adapter reicht, stellt sich die Frage: Wieso nicht gleich Software-Raid?

Selbst Windows™ (NT™, 2000™ und XP™) beherrschen Software-Raid (natürlich völlig inkompatibel mit Linux). Windows NT/2000/XP™ beherrschen nur Raid-0, die Serverversionen beherrschen auch Raid-1 und Raid-5 [2]. Die Installation auf einem solchen Raid ist nicht möglich.

Wie die Vergleichsmessungen in c't 1/03 ctRaid zeigen, muss sich das im Kernel integrierte Software-Raid nicht vor den günstigen IDE-Raid-Adaptern verstecken.

Wichtig

Raid ersetzt keinen Backup!

Eines soll nicht vergessen werden: Die Raid-Level für Datensicherheit sichern die Daten nur vor Ausfällen einzelner Festplatten. Diese stellen angesichts heutiger IDE-Festplatten eine grosse Gefahr dar, dennoch ist ein "rm -rf /tmp /*" nicht zu unterschätzen: In diesem Fall hilft auch kein Raid. Allenfalls ein regelmässiges dd-Image auf eine normalerweise nicht gemountete Partition. Doch was passiert dann bei einem Blitzeinschlag?

Generell gilt: Je mehr Kopien der Daten je weiter physikalisch voneinander entfernt sind, um so sicherer sind die Daten.

Raid-Fähigkeiten von Linux

Linux beherrscht die Raid-Level 0,1,4,5 und kombinierte Varianten wie Raid-10 (1+0). Mit einem Patch beherrscht Linux ab Version 2.6 auch Raid-Level 6 mit mehrfacher Redundanz iXRaid6.

Um ein solches Raid aufzubauen, sind nur zwei gleich grosse Partitionen notwendig (Raid-0 und Raid-1), die sinnvollerweise auf unterschiedlichen Festplatten liegen (aber nicht müssen). Raid-4 und Raid-5 setzen im Minimum 3 Partitionen voraus. Auf solche Raid-Partitionen kann nur mit Linux zugegriffen werden.

Swap und Software-Raid

Schnell kommt die Idee, die Swap-Partition auf einem Raid-0 einzurichten um so eine höhere Performance zu erhalten. Das funktioniert zwar, aber es ist gar nicht notwendig, da Linux von Haus aus in der Lage ist, den Swap-Space auf verschiedenen Partitionen zu verteilen. Wenn zwei Swap-Partition die gleiche Priorität erhalten, erhält man automatisch ein Raid-0 über die Swap Partitionen.

Raid-Konfigurationen

Raid-Level

Raid-0

Geschwindigkeit ohne Datensicherheit.

Wo es auf die Datenübertragungsrate ankommt, ist Raid-0 richtig: Die Daten werden auf die Datenträger verteilt, so dass die Übertragungsrate ca. der Summe der Datenträger entspricht. Daher eignet sich Raid-0 für temporäre Dateien (/tmp) und ein Hardware-Raid-0 auch für den Swap-Space [3] Auch die Videobearbeitung profitiert davon. Raid-0 auf der Systempartition beschleunigt das Laden von Programmen. Leider hat Raid-0 einen grossen Nachteil: Fällt eine Festplatte im Array aus, sind alle Daten verloren. Das ist mitunter noch schlimmer als eine einzelne Festplatte: Die Wahrscheinlichkeit, dass im Array ein Defekt auftritt nimmt mit jeder zusätzlichen Festplatte zu!

Raid-1

Hohe Datensicherheit und Speicherbedarf durch Spiegelung.

Im Gegensatz zu Raid-0 ist bei Raid-1 allenfalls der Lesevorgang schneller: Die Daten werden auf beide Partitionen verteilt (gespiegelt, daher auch Mirroring). Damit ist für ein Raid-1 der doppelte Speicherplatz notwendig (50% Redundanz).

Raid-4

Datensicherheit mit geringem Speicherbedarf.

Die Daten werden auf alle Partitionen verteilt geschrieben, wobei eine Partition nur die Parität speichert. Da bei jedem Schreibvorgang die Parität-Partition beansprucht wird, wird diese schnell zum Flaschenhals des gesammten Systems. Aus diesem Grund sollte Raid-5 anstelle von Raid-4 eingesetzt werden.

Raid-5

Datensicherheit mit geringem Speicherbedarf.

Auch hier werden die Daten auf alle Partitionen verteilt geschrieben, wobei auch die Parität über alle Partitionen verteilt wird. Wir haben also genau eine Partition Redundant pro Array, was preislich sehr attraktiv ist.

Der nutzbare Speicherplatz Stot eines Raid-5 mit n Partitionen der Grösse S errechnet sich wie folgt: Stot = S (n - 1)

Raid-6

Mehrfache Redundanz

Raid-6 ermöglicht es ein System mit mehr als einfacher Redundanz optimal aufzubauen (z.B. im Gegensatz zu einem Raid-10). Die dazugehörigen Algorithmen sind komplex und haben Verwandschaft mit der RSA-Verschlüsselung. Dadurch wird die CPU bei Software-Raid stark beansprucht.

Funktionsweise von Raid-4 und Raid-5

Vereinfacht kann der Algorithmus von Raid-4 und Raid-5 so erklärt werden:

Tabelle 1. Sample Table

WertDisk 0Disk 1Disk 2
0000
1011
2101
3110

Wir haben ein vereinfachtes System mit einer Word-Breite von 2 Bits. Auf Disk 0 wird das höherwertige Bit (21) gespeichert und auf Disk 1 das niederwertige (20). Disk 2 speichert die Parität.

Die Parität ist eine Art Quersumme: Wenn die Parität even ist, muss die Anzahl der logischen Einsen "1" gerade sein, wenn sie odd ist, ist die Anzahl der logischen Nullen "0" ungerade. In userem Beispiel arbeiten wir mit Parität even.

Das Verfahren mit der Parität wird auch bei der seriellen Schnittstelle verwendet, allerdings kann es dort nur genutzt werden um Fehler zu erkennen. Da bei Raid-4 und Raid-5 durch die Zuordung der Festplatten auch die Position gegeben ist, können hier Fehler mit einem Bit auch korrigiert werden.

Wenn bei unserem Beispiel die Disk 1 ausfällt, so weiss ich, dass das höherwertige Bit nicht mehr vorhanden ist. Beim Wert 2 kann ich anhand der Parität feststellen, dass eine "0" gespeichert war, da nur so die Anzahl der Einsen "1" gerade ist. Würde die Disk 2 mit der Paritäts-Information ausfallen, so müsste überhaupt nichts ausgerechnet werden, da so nur die redundate Information fehlt.

Unser Beispiel entspricht einem Raid-4. Bei einem Raid-5 liegt die Parität verteilt über alle drei Disks.

Ein Softwareraid einrichten

Kernel vorbereiten

Bevor Softwareraid verwendet werden kann, muss der Kernel dieses Feature unterstützten.

  • Version 2.2 unterstützt nur Raid-Level 0 und 1.
  • Version 2.4 unterstützt Raid-Level 0, 1 und 5.
  • Version 2.6 unterstützt Raid-Level 0, 1 und 5. Für Level 6 existiert ein Patch

Alle gängigen Distributionen haben in ihren Standard-Kernel Raid-Unterstützung aktiviert. Meistens als Modul.

Kernel 2.4 Optionen

Folgende Optionen kommen im zusammenhang mit Raid in Frage:

CONFIG_MD = yes          # Multiple device driver support (raid, lvm)  
CONFIG_BLK_DEV_MD = yes  # RAID support  
CONFIG_MD_LINEAR = m     # Linear (append) mode  
CONFIG_MD_RAID0 = m      # RAID-0 (striping) mode  
CONFIG_MD_RAID1 = m      # RAID-1 (mirroring) mode  
CONFIG_MD_RAID5 = m      # RAID-4/RAID-5 mode  
CONFIG_MD_MULTIPATH = m  # Multipath I/O support  
CONFIG_BLK_DEV_LVM = m   # Logical volume manager (LVM) support

Soll von einem Raid gebootet werden, empfiehlt sich die Treiber direkt einzukompilieren. Als Alternative währe eine initrd möglich. LVM ist gerade in Verbindung mit Raid sehr nützlich, darum wird er hier ebenfalls ausgewählt.

Falls Raid als Modul aktiviert wurde, können mit modeprobe bzw. insmod die Module raid0, raid1 und raid5 geladen werden. Diese sind auch als raid[015].o unter /lib/modules/2.4.26/kernel/drivers/md/ zu finden.

Partitionierung

Während die Partitionierung einfach ist, sind die Überlegungen zum "wie" nicht ganz trivial. Es geht hier um verschiedene Philosophien. Zudem ist meistens mehr als eine Lösung möglich. Und die hängt stark von der Verwendung des Systems ab.

  • Will ich die Partitionen x nun mit Raid-0 beschleunigen oder nicht?
  • Sind mir die Daten in /einem/verzeichnis so wichtig, dass ich ihnen den doppelten Platz gönne und ein Raid-1 erstelle?
  • Soll vom Raid gebootet werden?
  • Will ich LVM verwenden?
  • Soll ich die Partition x nun mit Raid spiegeln, oder reicht ein regelmässiges dd?

Diese Überlegungen sind nicht ganz einfach. Darum hier ein paar Gedankenanstösse:

  • Auf meinem Desktop lagere ich wichtige Daten (eigens erstellte Dokumente und Sourcecode, Digitalfotos und anderes Erhaltenswertes) auf einem Raid-1 (Rechner hat 2 Festplatten). Da die eine Festplatte langsamer als die andere ist, habe ich davon abgesehen, zwei Swap-Partitionen zu erstellen oder das Verzeichnis /tmp auf ein Raid-0 auszulagern um die Geschwindikeit zu optimieren. Einen Plattenausfall hat das System ohne Probleme und ohne Datenverlust bereits überstanden.
  • Auf dem alten Mailserver im Keller habe ich ein Raid-5 über vier 1GB SCSI-Festplatten gelegt. In dieser 3GB-Partition betreibe ich ein LVM, da ich so die Partitionsgrösse dynamisch ändern kann. Schlussendlich lagern die Maildirs in einem LVM-Volume. Ein Plattenausfall hat das System ohne längere Ausfallzeit und ohne Datenverlust bereits überstanden.
  • Auf dem neuen Mail- und Datenserver im Keller habe ich aufgrund der schlechten Skalierbarkeit von Raid-5 mich für ein Raid-1 entschieden. Zwei 160GB Festplatten laufen als Raid-1 an einem Promise Ultra133 IDE-Kontroller. Das System selbst ist in den unteren 2GB der Festplatte in getrennten Partitionen für /, /var, /tmp, /boot installiert. Diese Partitionen werden einmal pro Tag von der primären Festplatte auf die sekundäre Harddisk gespiegelt. Die restlichen 158GB sind als Raid-1 zusammengefasst und wieder wurde ein LVM darüber gelegt. Die Home-Partition und weitere Partitionen sind dann als LVM-Volumes eingebunden.
  • Für ein Leitsystem sollte eine günstige, ausfallsichere Lösung her. Da das System leistungsmässig nicht sehr anspruchsvoll ist, wurde auf einen Hardware-Raid-Controller verzichtet und ein bootbares Softwareraid eingerichtet. Das System verträgt kleinere Ausfallzeiten, so dass bei einem Defekt einer Festplatte diese kurz ausgetauscht werden kann.

Die Partitionierung erfolgt mit dem Werkzeug deiner Wahl (fdisk, cfdisk, parted, usw. Wichtig ist, dass die Partitionen, die später zu dem Softwareraid gehören den Partitionstyp 0xfd erhalten. Das ist wichtig, damit der Kernel diese Partitionen mit dem autodetect-Mechanismus erkennen kann.

Wichtig

Selbstverständlich sind alle Daten auf diesen Partitionen nach dem erstellen des Raid verlohren!

Anmerkung

Bei unterschiedlichen Festplatten kann es vorkommen, dass die Partitionen nicht aufs Byte genau gleich gross sind. Das spielt keine grosse Rolle; die kleinste Partition ist ausschlaggebend für die Grösse, der Rest ist dann halt verlohren (nur ein paar MByte). Wichtig ist, dass die kleinste Festplatte dem Raid zuerst hinzugefügt wird.

User-Space Tools für die Verwaltung

Mit dem Raid-Support im Kernel ist es noch nicht getan: Für die Administration brauchen wir User-Space Tools.

Die originalen, offiziellen Tools gehören zum Paket raidtools. Dieses Paket ist unter dem Namen raidtools (SuSE) bzw. raidtools2 (Debian) [4] zu finden.

Neben den raidtools existiert auch das konfortablere mdadm welches meist und diesem Namen als Paket zu finden ist (SuSE, Debian). Dieses vereint die Funktionalität in einem Kommando mdadm und bringt weitere Features mit.

Einrichten mit den raidtools

Die raidtools verlangen die raidtab Konfigurationsdatei in /etc/raittab.

In diese kommt die Struktur der zu erzeugenden Raid-Arrays. Im Software-RAID-HOWTO SRaidHTde sind für alle Arten von Raid gute Beispiele enthalten.

Im Folgenden zeige ich anhand eines Raid-1 wie das aussehen könnte (Die Kommentare hinter dem "#" gehören nicht dazu!):

raiddev /dev/md0                # Das Device, für das Raid
        raid-level 1            # Raid-Level, hier 1 für mirror
        nr-raid-disks 2         # Zwei beteiligte Disks
        nr-spare-disks 0        # keine Reserve-Disks
        chunk-size 32           # Blockgrösse
        persistent-superblock 1 # Block mit Informationenüber das Raid für die autodetection
        device /dev/hda10       # erste Partition
        raid-disk 0             # Zählt von 0 an
        device /dev/hdb5        # zweite Partition
        raid-disk 1             # zweite Disk

Wichtig ist die Einrückung nach der Definition des Device (raiddev). Eingerückte Zeilen sind optionen für vorangehende Raid-Devices.

Anmerkung

Es können auch mehrere Device nacheinander aufgeführt werden.

Nun kann endlich das Raid in Betrieb genommen werden. Mit dem Befehlt mkraid /dev/md0 wird das Raid anhand der /etc/raidtab erstellt.

Dieser Vorgang läuft im Hintergrund ab, so dass es bereits möglich ist, das Filesystem zu erstellen. Es könnte auch andersweitig am System gearbeitet werden, wobei ich das nicht empfehle.

Mit cat /proc/mdstat sieht man den Status des Raid-System wie des Fortschritts der Erstellung.

Diese Datei ist auch später noch nützlich um den Zustand des Raid abzufragen.

Den Vorgang mit mkraid kann nun für alle Raids wiederholt werden.

Einrichten mit mdadm

Mit mdadm kann ein Raid ohne raidtab eingerichtet werden, wobei natürlich auch eine raidtab auf Wunsch verwendet werden kann. Ich bevorzuge mittlerweile die Variante ohne raidtab, da man hier nicht in Gefahr läuft die Konsistenz mit der raidtab zu verlieren.

Wichtig ist, dass alle Partitionen mit dem Linux Raid Autodetect Type 0xfd ausgestattet wurden, damit diese erkannt werden.

Das erstellen eines Raid-1 erweist sich als extrem einfach:

mdadm --build /dev/md0 --level=1 --raid-devices=2 /dev/hda10 /dev/hdb5

Und falls noch nicht gestartet [5]:

mdadm --run /dev/md0

Filesystem anlegen

Anmerkung

Statt eines Filesystems kann an diesem Punkt auch ein LVM erstellt werden.

Für das Filesystem kommen alle "üblichen Verdächtigen" in Frage:

  • ext2/ext3
  • reiserfs
  • xfs
  • ...

ext2/ext3 bieten extra Optionen für ein Raid an, die es ermöglichen die Blockgrösse auf das Raid abzustimmen um optimale Performance zu erreichen. Dazu dient die Option "-R" bei "mke2fs" bzw. "mkfs.ext?". Dabei gibt es bis jetzt nur die Option stride=stripe-size.

Das so angelegte Filesystem kann nun wie gewohnt gemountet werden:

$ mount /dev/md0 /mnt/safe

oder in der fstab:

/dev/md0 /mnt/safe ext3 defaults 1 2

Fehlerbehebung beim Ausfall einer Festplatte

Grundlagen

Ein Ausfall einer Festplatte kann sich auf verschiedene Arten zeigen. Falls der Rechner noch läuft, ist dies in /proc/mdstat zu erkennen.

Bevor eine Festplatte als tot erklärt wird, sollte abgeklärt werden, ob nicht einfach die Disk-Synchronisation verlohren gegangen ist.

Ist die Festplatte ansprechbar und hat keine Merkmale, die auf einen Defekt hindeuten, so braucht sie vermutlich nur eine Neusynchronisation. Jeder am Raid beteiligte Partition enthält einen Event-Counter, welcher bei jedem Start und bei jedem Stop um eins erhöht wird. Falls das System nicht sauber heruntergefahren wurde, oder eine Festplatte abgehängt wurde, während von die andere gestartet wurde, stimmen diese Even-Counter nicht mehr überein. In diesem Fall muss die fehlende Festplatte dem Raid hinzugefügt werden, wie beim erstmaligen Initialisieren.

Ausfall-Szenarien

Komplettausfall
Die Festplatte rührt sich nicht mehr. Der Rechner hängt oder läuft weiter, aber von der Festplatte ist nichts mehr zu sehen. Mit dmesg oder in den Logfiles sind Fehlermeldungen zu entdecken, welche auf einen Ausfall der Festplatte hindeuten.
Teilausfall
Die Festplatte blockiert sporadisch das System mehrere Sekunden lang. Möglichweise gibt sie dabei unschöne Töne von sich, wie z.B. metallisches Klicken. Das tritt meist bei den stellen (Dateien) auf, wobei diese ev. nicht mehr ohne Fehler gelesen werden können. Diese Anzeichen deuten auf einen nahenden Totalausfall hin.
Nahes Ende der Lebenszeit
Die Festplatte läuft zwar noch ohne Probleme, aber der S.M.A.R.T- Status (z.B. mit ide-smart) zeigt einzelne Tests mit failed an.

Die Betroffene Festplatte muss schnellstmöglich ausgewechselt werden, da ab jetzt keine Redundanz mehr vorhanden ist und ein weiterer Ausfall einer Festplate zu Datenverlust führen würde. Sinnvollerweise führt man jetzt gleich einen Backup durch.

Am besten wird die defekte Festplatte durch eine gleiche Ersetzt. Wenn diese nicht mehr erhältlich ist, besorgt man sich eine ähnliche. wichtig ist vorallem, dass die Kapazität gleich oder grösser ist.

In den seltensten Fällen ist Hot-Pluggable Hardware im Einsatz, so das der Wechsel einer Festplatte mit abgeschaltetem System erfolgen soll. Zudem sollte das System ausgesteckt werden, da bei heutigen ATX-Systemen immer eine Standby-Spannung vorhanden ist, welche in seltenen Fällen zu Defekten führen kann. Aus ESD-Gründen sollte das Gehäuse geerdet sein und im dauernden Kontakt mit einem stehen um statische Entladungen zu vermeiden.

Festplatte wechseln

Wechsel mit den raidtools

Nach dem Systemstart muss die neue Harddisk partitioniert werden. Dazu wird die alte partitionierung möglichst genau übernommen. Nun muss das Raid mit raidstop /dev/mdX gestoppt werden.

Nachdem die neue Festplatte korrekt eingerichtet ist, wird das Raid mit raidstart /dev/mdX wieder hochgefahren.

Falls das nicht funktioniert, kann es sein, dass sich die Devices durch den Einbau der neuen Harddisk verschoben haben. Dieses Problem kann durch eine Änderung der /etc/raidtab behoben werden. Ebenfalls kann es vorkommen, dass die neue Harddisk der ersten Disk in der /etc/raidtab entspricht und dadurch der Superblock nicht gelesen werden kann. Hier schafft das Verschieben der neuen Disk ans Ende der /etc/raidtab Abhilfe.

Wenn nun das Array gestartet wurde, kann mit dmesg und cat /proc/mdstat überprüft werden, ob es funktioniert hat. dmesg zeigt eine Meldung, dass das Raid gestartet wurde und der Synchronisationsprozess läuft. /proc/mdstat zeigt eine Fortschrittsanzeige des Synchronisationsprozess an.

Ein Raid im Normalzustand sieht so aus:

$ cat /proc/mdstat  
Personalities : [raid5]  
read_ahead 1024 sectors  
md0 : active raid5 sda1[2] sdd1[3] sdc1[1] sdb1[0]  
      3175296 blocks level 5, 32k chunk, algorithm 2 [4/4] [UUUU]  
  
unused devices: <none>

Während ein Raid mit einer ausgefallenen Harddisk so aussieht:

$ cat /proc/mdstat  
Personalities : [raid5]  
read_ahead 1024 sectors  
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]  
      3175296 blocks level 5, 32k chunk, algorithm 2 [4/3] [UU_U]  
  
unused devices: <none>

In diesem Zustand wird nun die neue Harddisk mit raidhotadd /dev/md0 /dev/sda1 hinzugefügt.

$ cat /proc/mdstat  
Personalities : [raid5] read_ahead 1024 sectors  
md0 : active raid5 sda1[4] sdd1[3] sdc1[1] sdb1[0]  
      3175296 blocks level 5, 32k chunk, algorithm 2 [4/3] [UU_U]  
      [=============>.......] recovery = 67.4% (714248/1058432) finish=10.0min speed=568K/sec  
unused devices: <none>

Wie hier zu sehen ist, fängt der Synchronisationsthread sofort an die Disks auf identischen Zustand zurückzubringen. Damit ist die Wiederherstellung abgeschlossen.

Im Linux-Magazin 08/2000 LinMag und in der FAQ SRaidFaq wird der Vorgang ebenfalls gut erklärt.

Wechsel mit mdadm

mdadm vereinfacht den Wechsel einer Festplatte geringfügig, da hier die Spezialitäten mit der /etc/raidtab entfallen.

Das Raid stoppen:

$ mdadm --stop /dev/md0

Dem Raid die neue Partition hinzufügen:

$ mdadm --add /dev/md0 /dev/sda1

Das Raid wieder starten:

$ mdadm --run /dev/md0

Die Ausgaben von dmesg und /proc/mdstat sehen gleich aus wie bei den raidtools.

Tools

raidtools

Zu den raidtools gehören folgende Befehle:

raidtools Befehle

mkraid
Anlegen und einmaliges Starten einer Raid-Konfiguration
raidhotadd
Anlegen und einmaliges Starten einer Raid-Konfiguration
raidhotremove
Defekte Festplatte aus dem Verbund lösen
raidstart
Raid-Device starten
raidstop
Raid-Device stoppen

mdadm

mdadm fasst die Funktionen der raidtools zusammen und bietet eine einzige, konsistente Schnittstelle. mdadm kann auch als Deamon laufen und ständig die Raid-Arrays überprüfen und so bei Fehler den Administrator benachrichtigen.

Neben der man-page mdadm und mdadm.conf ist insbesondere das Kurz-Howto mdadmHT lesenswert.

Versionen von mdadm> vor 1.0 wie sie z.B. bei Debian Woody installiert werden, bieten deutlich weniger Funktionen wie aktuelle Version grösser als 1.0. Für die Administration reichen auch die Funktionen der älteren Versionen, allerdings gibt es für die Überwachung Einschränkungen.

Einrichten von mdadm als Daemon

mdadm wird am besten über ein rc-Script gestartet. Die meisten Distributionen installieren mit mdadm ein solches Script. Ein Symlink in den gewünschten Runlevel [6] aktiviert mdadm bereits beim Start des System.

Damit mdadm weiss, welche Geräte zu überwachen sind, müssen die gewünschten Geräte in /etc/mdadm/mdadm.conf konfiguriert werden.

Zuerst brauchen wir noch Informationen über das Array. Uns interessiert die eindeutige ID des Arrays UUID. Diese ermitteln wir mit mdadm, indem wir den Superblock einer dazugehörigen Partition untersuchen.

# mdadm --examine /dev/hdb5
/dev/hdb5:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : f002ebb7:70c5f42c:ad802d36:f6c3cfb5
  Creation Time : Mon Dec 30 16:32:44 2002
     Raid Level : raid1
    Device Size : 10482304 (9.100 GiB 10.78 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0

    Update Time : Thu May 20 17:02:15 2004
          State : dirty, no-errors
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 2d956684 - correct
         Events : 0.988


      Number   Major   Minor   RaidDevice State
this     1       3       69        1      active sync   /dev/hdb5
   0     0       3       10        0      active sync   /dev/hda10
   1     1       3       69        1      active sync   /dev/hdb5 

Die UUID dieses Arrays hat den Wert f002ebb7:70c5f42c:ad802d36:f6c3cfb5.

Als nächstes editieren wird die Datei /etc/mdadm/mdadm.conf wie folgt:

# MD raid device information for mdadm
DEVICE /dev/hda10
DEVICE /dev/hdb5
ARRAY /dev/md0 uuid=f002ebb7:70c5f42c:ad802d36:f6c3cfb5
PROGRAM /etc/mdadm/md_eventhandler.sh

Darin sind die Device und die UUID des Array aufgeführt, zusammen mit einem Programm, welches die Ereignisse verarbeitet.

Hier ein Beispiel für das Script md_eventhandler.sh:

#!/bin/sh
EMAIL='admin@domain.tld'
TAG='mdhandler'
LOG_CRIT='syslog.crit'
LOG_INFO="syslog.info'
HOSTNAME=`hostname -f`
case "$1" in
    DeviceDisappeared|Fail*)
        logger -p "$LOG_CRIT" -t "$TAG" -- "Error md device: " "$@"
        cat <<EOF | mail -s "Error md device $2" "$EMAIL"
Dear Admin

Your $HOSTNAME md device is *dead*.
Reason: $1
Device: $2
Subdevice: $3

Yours sincerely
$0
EOF
#        shutdown -h "+20" -- "Critical raid error forced system halt"
    ;;
    Rebuild*)
        logger -p "$LOG_INFO" -t "$TAG" -- "Rebuild md device: " "$@"
    ;;
    *)
        # Ignore
#        logger -p "$LOG_INFO" -t "$TAG" -- "Other event: " "$@"
    ;;
esac            

Das versenden von Mails kann mdadm natürlich auch schon von sich aus.

raidreconf

Dieses Tool ermöglicht das Erweitern/Verkleinern von Raids.

Man beachte dass es sich um eine frühe Beta-Version handelt. Datenverluste sind also zu erwarten, was ein Backup obligatorisch macht!

Dieses Tool ist erhältlich unter der Adresse: http://unthought.net/raidreconf/index.shtml

Enterprise Volume Management System EVMS

Dieses System ist ein Volume Manager der kommerziellen Systemen in nichts nachsteht. Er vereint Raid und LVM-Funktionen und bietet konfortable Konfigurations-Interface sowohl Text- als auch Grafik- basiert. Selbstverständlich ist die Konfiguration auch über das Netzwerk möglich.

EVMS besteht aus einem Kernel-Modul [7] und zahlreichen User-Space Werkzeugen.

EVMS ist unter http://evms.sourceforge.net/ erhältlich.

Anwendungs-Szenarien

System auf Raid booten

Linux lässt sich auf einem Software-Raid-1 installieren und von dort booten.

Das folgende Beispiel zeigt, welche Schritte notwendig sind um ein bestehendes System auf ein Raid-1 zu überführen. Eine Neuinstallation sieht fast identisch aus.

Eine neue Workstation mit vorinstalliertem SuSE 9.0 sollte als kostengünstiges, aber ausfallsicheres System eingerichtet werden. Das System wurde mit zwei 80GB Festplatten ausgestattet ausgeliefert wobei das System auf der ersten Festplatte vorinstalliert war.

/dev/hda1
System
/dev/hda2
Swap

Nach dem Umbau sollte das System wie folgt aussehen:

/dev/hda1
System Raid-1 Partition 0
/dev/hda2
Swap
/dev/hdb1
System Raid-1 Partition 1
/dev/hdb2
Swap
/dev/md0
System Raid-1 device

Degraded Array einrichten

Der eigentliche Trick besteht darin, ein „degraded“ Array einzurichten, d.h. ein Array, bei dem eine Partition als fehlend markiert ist. Darauf wird dann das System kopiert und dann erst die zweite Partition eingehängt.

Zuerst wird /dev/hdb gleich partitioniert wie /dev/hda. Wichtig ist, dass die später zum Raid-1 zugewiesenen Partitionen den Typ „Linux Raid Autodetect“ zugewiesen bekommen. Im diesem Fall wird /dev/hdb1 als 0xfd und /dev/hdb2 als 0x82 konfiguriert.

Nun wird das sogenannte „degraded“ Array mit Hilfe von mdadm aufgesetzt:

# mdadm --build /dev/md0 --level=1 --raid-devices=2 missing /dev/hdb1

Man beachte das missing.

Falls das Raid nicht automatisch gestarted wurde, so erledigt das der folgende Befehl:

# mdadm --run /dev/md0

System auf Raid spiegeln

Als erstes muss ein Filesystem auf /dev/md0 erstellt werden:

# mkfs.prefered [--raid-options] /dev/md0

Danach kann die neue Ziel-Partition eingehängt werden:

# mount /dev/md0 /mnt

Jetzt kann das System auf das neue Zuhause gespiegelt werden. Für diese Aufgabe kommen cpio und rsync in Frage. dd würde zuviel kopieren und ev. wegen der durch den Superblock kleineren Partition Probleme machen.

cpio: cpio kopiert keine Dateien die grösser als 2Gb sind. Dateien dieser Grösse müssen nachher von Hand kopiert werden.

# cd /
# find . -xdev \
    | cpio -p --preserve-modification-time --verbose /mnt

rsync: rsync synchronisiert ziemlich alles über fast jeden Kanal.

# rsync -axHpogtD / /mnt

Nach der Kopieraktion sollte unbedingt festgestellt werden, ob auch alles kopiert wurde. Ich konnte mit df und du feststellen, dass noch eine Datei, die grösser als 2GB war nicht kopiert wurde. Besser eignen sich aber Programme wie cmp oder md5sum für diese Aufgabe.

System auf Raid bootbar machen

Falls noch nicht geschehen, sollte /dev/md0 ins Dateisystem gehängt werden:

# mount /dev/md0 /mnt

Nun muss der Bootmanager angepasst werden. In diesem Fall ist das grub, für lilo bringe ich der Vollständigkeit's halber auch noch die Vorgehens- Weise.

Vorgehen bei Grub:

  1. /mnt/grub/menu.lst editieren.
    • bestehenden Eintrag stehen lassen (Backup!)
    • Default-Eintrag und Recover-Eintrag hinzufügen:
      timeout 30
      default 0
      fallback 1
      title Linux
          kernel (hd0,0)/boot/vmlinuz root=/dev/md0 [more options]
          initrd (hd0,0)/boot/initrd (falls raid1 als Modul)
      title Linux Rescue hdb
          kernel (hd1,0)/boot/vmlinuz root=/dev/md0 [more options]
          initrd (hd1,0)/boot/initrd (falls raid1 asl Modul)
  2. Grub installieren
    $ chroot /mnt/ /usr/sbin/grub
    grub> root (hd1,0)
    grub> setup (hd1)
    grub> root (hd0,0)
    grub> setup (hd0)
    grub> quit

Vorgehen bei Lilo:

  1. /mnt/etc/lilo.conf editieren.
    • Bestehender Eintrag lassen (Backup!)
    • in mbr von hdb schreiben
    • Haupteintrag für Booten ab hda
    • Recovery-Eintrag für Booten ab hdb
  2. Lilo schreiben:
    # chroot /mnt/ /sbin/lilo
  3. /mnt/etc/lilo.conf editieren.
    • In mbr von hda schreiben
  4. Lilo schreiben:
    # chroot /mnt/ /sbin/lilo

Nun muss die /etc/fstab entsprechend angepasst werden. Man sollte tunlichst darauf achten, welche Datei man editiert.

Die folgenden Zeilen

/dev/hda1    /    preferedfs    defaults     1 1
/dev/hda2    swap swap          defaults     1 1

sind durch diese Zeilen zu ersetzen und zu ergänzen:

/dev/md0     /    preferedfs    defaults     1 1
/dev/hda2    swap swap          pri=42       1 1
/dev/hdb2    swap swap          pri=42       1 1

Damit laufen die beiden Swap-Partitionen mit gleicher Priorität, so dass wir eine Art Raid-0 über den Partitionen haben. Beim Ausfall einer Festplatte wird das zwar zu einem Absturz führen, aber wird nehmen das in Kauf. Wo das nicht möglich ist, müsste man den Swap-Space einfach auch auf ein Software-Raid-1 legen.

Als letztes muss nun die Swap-Partition aktiviert werden:

# mkswap /dev/hdb2

System ab Raid booten

Das System wird neu gestartet. Beim erscheinen des Bootmanagers wird die Rescue-Boot-Option ab hdb gewählt. Das ist wichtig!

Nach dem erfolgreichen Booten des Systems wird überprüft, ob ab der richtigen Partition gebootet wurde:

# mount

Wenn jetzt keine Partition gemountet ist, welche später zum Raid hinzugefügt werden sollte (hda1), dann kann jetzt fortgesetzt werden. Sonst muss der Fehler gesucht und behoben werden.

Hinzufügen der zweiten Partition zum Array

Bevor nun /dev/hda1 zum Array hinzugefügt werden kann, muss der Partitions-Typ auf 0xfd geändert werden.

# fdisk /dev/hda
m t 1 fd w q

Nun bemühen wir nocheinmal mdadm um diese Partition dem Raid-Array zuzufügen:

# mdadm --add /dev/md0 /dev/hda1

Jetzt sollte in /proc/mdstat wieder die übliche Anzeige des Synchronisations-Prozesses erscheinen.

Sobald die Synchronisation abgeschlossen ist, wird nochmals getestet, ob das System ordnungsgemäss bootet. Dazu starten wir das System neu und überprüfen die gemounteten Partitionen (mount) und den Status des Raid (/proc/mdstat).

LVM

LVM eigent sich sehr gut die physikalische, vorgegebene Partitions- Struktur in logische Partitionen aufzubrechen. Damit es es möglich Partitionen über mehrere Disks zu verteilen um so grössere Partitionen zu erhalten, als die Festplattengrösse vorgibt. Zudem können Partitionen vergrössert und verkleinert werden. Weiter erlaubt LVM auch das anlegen eines Snapshot während dem Betrieb.

Was LVM hingegen nicht bietet ist Redundanz. Und genau hier setzen wir an: LVM lässt sich problemlos über ein Raid-Device legen. Damit bietet das Gespann LVM+Raid ein redundantes, logisches Volume-Management. Der Enterprise Volume Manager (EVMS) „Enterprise Volume Management System EVMS“ setzt genau hier an.

Das hier soll kein LVM-Howto werden. Ich verweise desshalb an das sehr gute LVM-Howto [lvmHT].

FIXME

A. Fehler und Lösungen

F: Bootmanager bootet nicht mehr
F: System bootet immernoch ab hdXY anstatt ab mdZ
F: Eine Parition ist trotz erfolgreichem Hot-add mit folgender Synchronisation immer als failed in der /proc/mdstat eingetragen
F:

Bootmanager bootet nicht mehr

A:

Ursache: Bootmanager findet stage2 nicht (dh. der mbr Teil bootet)

Lösung: Rettungsystem booten und Bootmanager neu schreiben, nachdem alle Pfade überprüft wurden.

F:

System bootet immernoch ab hdXY anstatt ab mdZ

A:

Ursache: Bootprompt enthält root=/dev/hdXY anstatt root=/dev/mdZ oder fstab enthält noch Verweis auf /dev/hdXY anstatt /dev/mdZ.

Lösung: Änderung des Bootpromt in der Konfiguration des Bootmanager oder Änderung der fstab. Vorsicht: Gut darauf achten welche Datei man editiert!

F:

Eine Parition ist trotz erfolgreichem Hot-add mit folgender Synchronisation immer als failed in der /proc/mdstat eingetragen

A:

Ursache: Vermutlich wurde vergessen, den Partitionstyp auf „Linux Raid autodetect“ (0xFD) zu setzen.

Lösung: Partitionstyp mit fdisk oder cfdisk auf 0xFD setzen.

B. Autoren

Andreas Stricker
rapidmax@gmx.net

Mithilfe: Herzlichen Dank an:

Michael Dunsky
Korrekturen, Anregungen
Christoph Gysin
Anregungen

C. Changelog

Tabelle C.1. Sample Table

DatumWerÄnderungen
2004-05-31astFAQ, LVM, Footnotes gefixt, Querverweise hinzugefügt
2004-05-21astmdadm, Szenarien, komplette Überarbeitung, Wechsel zu DocBook
2003-01-24astÜberarbeitung, Formate: Text, ps, html, dvi, pdf
2003-01-19astÜberarbeitung, Recovery-Teil ergänzt
2003-01-10astErste Version

D. GNU Free Documentation License

FSF Copyright note

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

GNU FDL Modification Conditions

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
  4. Preserve all the copyright notices of the Document.
  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
  8. Include an unaltered copy of this License.
  9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
  11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
  13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
  14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
  15. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Samle Invariant Sections list

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:

Sample Invariant Sections list

with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Literatur zu Software Raid

[RaidTHG1] Raid Grundlagen. Tom's Hardware Guide. http://www.tomshardware.de/storage/99q3/990705/index.html .

[IdeTHG1] IDE-Kurs, Teil 2: Performance und Datensicherheit mit RAID. Tom's Hardware Guide. http://www.tomshardware.de/storage/02q3/020803/index.html .

[IdeTHG2] IDE-Kurs, Teil 3: RAID in der Praxis. Tom's Hardware Guide. http://www.tomshardware.de/storage/02q3/020807/index.html .

[LinMag] Software-Raid. Linux-Magazin. Bernhard Kuhn. http://www.linux-magazin.de/Artikel/ausgabe/2000/08/SoftRAID/SoftRAID.html .

[SRaidHTde] Deutsches Software-RAID-HOWTO. Niels Happel. Deutsches Linux HOWTO Projekt. http://www.kernelnotes.de/dlhp/DE-Software-RAID-HOWTO.html .

[SRaidHTen] Englisches Software-RAID-HOWTO. The Linux Documentation Project. Jakob Østergaard und Emilio Bueso. http://www.ibiblio.org/pub/Linux/docs/HOWTO/Software-RAID-HOWTO .

[faqSRaidHT] Weiteres Software-RAID-HOWTO. Linas Vepstas. http://linas.org/linux/Software-RAID/Software-RAID.html .

[SRaidFaq] Linux Raid FAQ. The Linux Documentation Project. http://www.tldp.org/FAQ/Linux-RAID-FAQ/ .

[mdadmHT] mdadmin Howto. O'Reilly Network. Derek Vadala. http://linux.oreillynet.com/lpt/a/2776 .

[WStall4] Operating Systems. William Stallings. 4. FIXME. Page 493: Übersicht der Raid-Level.

[ctRaid] RAID-Adapter im Test. Heise. c't 1/03.

[iXRaid6] Raid6 with Linux. Heise. Oliver Tennert. iX 5/2004 S.106.

[lvmHT] LVM Howto. The Linux Documentation Project. AJ Lewis. http://tldp.org/HOWTO/LVM-HOWTO/ .



[1] www.linuxforen.de, das deutschsprachige Linuxforum

[2] Mit einem Hexeditor können auch die Nicht-Server Versionen die letzten beiden Raid-Level.

[3] Siehe dazu Bemerkungen in Swap und Software-Raid

[4] Unter Debian ist auch ein Paket names raidtools zu finden. Dieses enthält noch die alte Version < 0.5, welche nicht mehr zu empfehlen ist, gerade bei neueren Kernel.

[5] Siehe unter /proc/mdstat

[6] Ich empfehle allgemeinen Runlevel rcS falls vorhanden

[7] Der Kernel muss gepached werden