Inhaltsverzeichnis
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.
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.
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.
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.
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-Level
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!
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).
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.
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)
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.
Vereinfacht kann der Algorithmus von Raid-4 und Raid-5 so erklärt werden:
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.
Bevor Softwareraid verwendet werden kann, muss der Kernel dieses Feature unterstützten.
Alle gängigen Distributionen haben in ihren Standard-Kernel Raid-Unterstützung aktiviert. Meistens als Modul.
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.
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.
Diese Überlegungen sind nicht ganz einfach. Darum hier ein paar Gedankenanstösse:
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.
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.
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.
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.
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
Für das Filesystem kommen alle "üblichen Verdächtigen" in Frage:
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
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
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.
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.
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.
Zu den raidtools gehören folgende Befehle:
raidtools Befehle
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.
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.
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
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.
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.
Nach dem Umbau sollte das System wie folgt aussehen:
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
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.
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:
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)
$ chroot /mnt/ /usr/sbin/grub grub> root (hd1,0) grub> setup (hd1) grub> root (hd0,0) grub> setup (hd0) grub> quit
Vorgehen bei Lilo:
# chroot /mnt/ /sbin/lilo
# 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
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.
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 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
Mithilfe: Herzlichen Dank an:
Tabelle C.1. Sample Table
Datum | Wer | Änderungen |
---|---|---|
2004-05-31 | ast | FAQ, LVM, Footnotes gefixt, Querverweise hinzugefügt |
2004-05-21 | ast | mdadm, Szenarien, komplette Überarbeitung, Wechsel zu DocBook |
2003-01-24 | ast | Überarbeitung, Formate: Text, ps, html, dvi, pdf |
2003-01-19 | ast | Überarbeitung, Recovery-Teil ergänzt |
2003-01-10 | ast | Erste Version |
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.
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.
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.
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.
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.
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
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.
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".
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.
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 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.
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.
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.
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.
[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. http://www.linux-magazin.de/Artikel/ausgabe/2000/08/SoftRAID/SoftRAID.html .
[SRaidHTde] Deutsches Software-RAID-HOWTO. Deutsches Linux HOWTO Projekt. http://www.kernelnotes.de/dlhp/DE-Software-RAID-HOWTO.html .
[SRaidHTen] Englisches Software-RAID-HOWTO. The Linux Documentation Project. http://www.ibiblio.org/pub/Linux/docs/HOWTO/Software-RAID-HOWTO .
[faqSRaidHT] Weiteres Software-RAID-HOWTO. 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. http://linux.oreillynet.com/lpt/a/2776 .
[lvmHT] LVM Howto. The Linux Documentation Project. 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