Swap-Space auf einer RAID Partition
Wozu brauche ich eigentlich Swap-Space auf einem RAID. Eigentlich könnte man doch mehrere Swap-Partitionen anlegen und sie mit gleicher Priorität dem Kernel bekanntgeben. Damit erreicht man praktisch auch Striping (RAID0). Der Kernel wird die Partitionen parallel benutzen.
Problematisch wird es erst, wenn eine Platte ausfällt. Das führt mit Striping wahrscheinlich zum System-Crash mit eventuellem Datenverlust auch in nicht betroffenen Partitionen.
Daher liegt mein Swap-Space auf einem RAID1.
Partitionierung
Während der Installation hatte ich schon einige RAID Partitionen angelegt, so dass
die neue Partition /dev/md4 heißen wird. RAID1 kann mit 2 Platten
starten. Da alle meine Platten gleich partitioniert sind, entschloß ich mich, für
/boot und swap ein RAID1 mit je 3 Platten zu benutzen.
Voraussetzung dafür sind 3 (mindestens 2) gleich große Partitionen auf
unterschiedlichen Platten. Der Partitionstyp sollte auf 0xfd gesetzt
werden, damit der Kernel beim Booten versucht, aus diesen Partitionen ein RAID
zu bilden. Gemeinsam mit dem persistenten Superblock kann man so
praktisch auf Konfigurationsdateien verzichten. Meine 3 Platten sind alle gleich
partitioniert. Hier /dev/sdb:
pelmen:/ # fdisk -l /dev/sdb
Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 392 3148708+ fd Linux raid autodetect
/dev/sdb2 720 19456 150504952+ f W95 Ext'd (LBA)
/dev/sdb3 393 719 2626627+ fd Linux raid autodetect
/dev/sdb5 720 1306 4715046 fd Linux raid autodetect
/dev/sdb6 1307 3265 15735636 fd Linux raid autodetect
/dev/sdb7 3266 19456 130054176 fd Linux raid autodetect
Partition table entries are not in disk order
RAID Partition erzeugen
Zum Anlegen eines RAIDs benutzt man am besten mdadm aus dem Paket
mdadm-1.9.0-3. Alternativ kann mkraid aus
raidtools-1.00.3-231 benutzt werden. Die man-page zu mdadm
pries es aber als den Raidtools überlegen an und ich habe ihr geglaubt.
Der Befehl
mdadm -C /dev/md4 -l raid1 -n 3 /dev/sd{a,b,c}5
erzeugt eine RAID-Partition aus den physikalischen Partitionen
/dev/sda5, /dev/sda5 und /dev/sda5.
Zur Kontrolle schaut man am Besten nochmal nach, was dabei heraus kam:
pelmen:/ # mdadm -D /dev/md4
/dev/md4:
Version : 00.90.01
Creation Time : Wed Apr 13 12:10:54 2005
Raid Level : raid1
Array Size : 4714944 (4.50 GiB 4.83 GB)
Device Size : 4714944 (4.50 GiB 4.83 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 4
Persistence : Superblock is persistent
Update Time : Wed Apr 13 12:23:32 2005
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
UUID : b52abcf7:ab77beb4:a182a40f:60b0e5ab
Events : 0.12
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 8 21 1 active sync /dev/sdb5
2 8 37 2 active sync /dev/sdc5
Gut, er hat alle 3 Partitionen benutzt. Wichtig ist weiterhin die Zeile Superblock is persistent. Damit steht am Ende jeder Partition nochmal der RAID-Superblock. So erkennt der Kernel ohne weitere Konfigurationsdateien das RAID während des Starts.
Swap-Space erzeugen und einbinden
Zuerst muss die RAID-Partition nun als Swap-Space formatiert werden.
mkswap /dev/md4
Linux kennt 2 Swap-Space-Formate. Man sollte unbedingt Version 1 nehmen. Das ist
das jüngere Format. Das ältere kann nicht mehr als die ersten 128 MByte einer
als Swap-Space benutzen. Dieses Format wird allerdings als Standard automatisch
erzeugt. Auch von den anderen Parametern zu mkswap lässt man besser
die Finger. Auf modernen Systemen ist mkswap in der Lage sich die nötigen
Informationen selbst zusammen zu klauben.
Jetzt binden wir den neuen Swap-Space testweise ein:
swapon /dev/md4
und kontrollieren das Ergebnis:
pelmen:/ # free
total used free shared buffers cached
Mem: 2055660 1281180 774480 0 2196 849444
-/+ buffers/cache: 429540 1626120
Swap: 4714936 0 4714936
Hinter Swap: standen vorher nur Nullen, also hat der Kernel den
neuen Swap-Space verstanden. Jetzt muss noch eine Zeile in /etc/fstab
eingefügt werden, damit es beim nächsten Reboot automatisch erkannt wird. Also
schalten wir den Swap-Space erstmal wieder aus:
swapoff /dev/md4
und fügen folgende Zeile zur Fstab hinzu:
/dev/md4 swap swap pri=42 0 0
Die Priorität (42) wird von Suse als Standard benutzt. Wahrscheinlich hat dort einer Per Anhalter durch die Galaxis gelesen.
So nun sollte der Swap-Space auf dem RAID auch einen Reboot überstehen.
Letzte Aktualisierung: 03.08.2008


