Navigation:
Konfigurationsdatei Beispiele
RAID1 Array erstellen
Bootsector schreiben
zweite Platte ins RAID1 aufnehmen
Vorbereitung für ein RAID5
RAID ändern / löschen
Hot-Replace
RAID Fehlersuche
sonstiges
Links:
Pakete raidtools oder raidtools2, mdadm
dmraid ist in der lage RAID 0 und 1 anzulegen, es legt mit Hilfe des im Linux Kernel enthaltenen Device Mapper virtuelle Geräte an, über die man
auf den RAID Verbund zugreifen kann.
dmraid ist unter anderen auch in der Lage ein RAID wiederherzustellen, das man mit einem Chipsatz oder RAID-Adapter angelegt hat, aber dieser wegen eines defektes nicht mehr zur verfügung
steht.
- löscht RAID-Konfigurationsdaten von den beteiligten RAID Laufwerken
dmraid -E
mdadm kann mit RAID 0,1,5 und 6 umgehen.
Als erstes muß auf den Festplatten die im Raid laufen sollen, mit fdisk eine Partition vom Typ "Linux Raid autodetect (FD) " anlegen werden.
Das erste RAID Array ist dann unter /dev/md0 das zweite unter /dev/md1 usw. zu erreichen.
Die Raidtools erwarten die Konfigurationsdatei unter /etc/raidtab, für das Paket mdadm ist die Konfiguration unter /etc/mdadm/mdadm.conf.
Die Konfigurationsdatei ist eigentlich nicht so wichtig, da die Verwaltungsinformationen am Ende jeder RAID-Partition im RAID-Superblock gespeichert werden.
# /etc/mdadm/mdadm.conf DEVICE partitions ARRAY /dev/md0 level=raid1 num-devices=2 UUID=57b53db2:b76961f1:56e4dd95:859fd30 devices=/dev/hda1,/dev/hdb1
# /etc/fstab /dev/md0 / ext3 defaults,errors=remount-ro 0 1
- denn Raid Zustand kann man in der /proc/mdstat überprüfen.
cat /proc/mdstat Personalities : [raid1] md0 : active raid1 hda1[0] hdb1[1] 4095360 blocks [2/2] [UU] unused devices: <none>
cfdisk /dev/sdb modprobe raid1 mdadm --create /dev/md0 --level=1 --raid-device=2 missing /dev/sdb5legt das SoftwareRAID Device /dev/md0 an, als RAID1 mit zwei Device von den eins fehlt (missing). Die Konfiguration wird im RAID Superblock am Anfang der RAID Partition gespeichert.
# mdadm -D /dev/md0 /dev/md0: Version : 00.90 Creation Time : Fri Nov 21 22:27:41 2008 Raid Level : raid1 Array Size : 7411968 (7.07 GiB 7.59 GB) Used Dev Size : 7411968 (7.07 GiB 7.59 GB) Raid Devices : 2 Total Devices : 1 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Fri Nov 21 22:35:49 2008 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 UUID : d69f8c02:c26b9a15:87b1bf6d:3d278009 Events : 0.40 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 21 1 active sync /dev/sdb5
mkfs.ext3 /dev/sdb1 mke2fs /dev/sdb2 mkfs.ext3 /dev/md0
mkdir /raid mount /dev/md0 /raid mkdir /raid/boot mount /dev/sdb1 /raid/boot
mkdir /org mount /dev/sda1 /org cd /org tar cf - . | ( cd/org ;tar xfp - )
grub --config-file=/raid/boot/grub/menu.lst device (hd0) /dev/sdb root (hd0,0) setup (hd0) quit
Beispiel für eine Grub-Installation mit chroot
- von einer LiveCD starten
mkdir /raid mdadm --assemble --run /dev/md0 /dev/hda5 mount /dev/md0 /raid mount /dev/hda1 /raid/boot mount --bind /dev /raid/dev mount --bind /proc /raid/proc mount --bind /sys /raid/sys chroot /raid
- Änderungen der menu.lst von Grub.
# /boot/grub/menu.lst title Debian GNU/Linux, kernel 2.6.18-6-686 root (hd0,0) kernel /vmlinuz-2.6.18-6-686 root=/dev/md0 ro initrd /initrd.img-2.6.18-6-686
- Symlink auf dem Kernel und die RAMDisk erstellen
ln -s /boot/vmlinuz-2.6.18-6-686 vmlinuz-2.6.18-6-686 ln -s /boot/initrd.img-2.6.18-6-686 initrd.img-2.6.18-6-686
- Grub in den MBR installieren
grub --config-file=/boot/grub/menu.lst root (hd0,0) setup (hd0) quit
- RAMDisk aktualisieren, damit md0 als ROOT Partition auch eingebunden werden kann, sonst kommt beim booten die Fehlermeldung "waiting for root file system".
mkinitramfs -o /boot/initrd.img-2.6.18-6-686
sfdisk -d /dev/sda | sfdisk /dev/sdb
mdadm /dev/md0 --add /dev/sdb5
# mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Fri Nov 21 23:27:41 2008 Raid Level : raid1 Array Size : 7411968 (7.07 GiB 7.59 GB) Device Size : 7411968 (7.07 GiB 7.59 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Mon Jan 12 16:25:01 2009 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : d69f8c02:c26b9a15:87b1bf6d:3d278009 Events : 0.2020 Number Major Minor RaidDevice State 0 3 69 0 active sync /dev/sdb5 1 3 5 1 active sync /dev/sda5
sync mdadm /dev/md0 --fail /dev/sdb5 --remove /dev/sdb5
- Inhalt der Backup Platte kontrollieren, Platte wird als zweites unvollständiges RAID hinzugefügt
mdadm --assemble --run /dev/md1 /dev/sdb5 mount /dev/md1 /media/md1
- zweites RAID wieder entfernen
mdadm --stop /dev/md1
- Partitionierungsdaten in eine Datei sichern
fdisk /dev/sda -l > /partition
- Grub in den MBR der ersten Festplatte mithilfe einer LiveCD installieren.
grub --config-file=/media/sda1/boot/grub/menu.lst root (hd0,0) setup (hd0) quit
mdadm --create /dev/md0 --level=1 --raid-device=2 missing /dev/hdb5 mdadm -Cva /dev/md0 -l1 -n2 missing /dev/hdb5
- /dev/md0 Device manuell anlegen
mknod /dev/md0 b 9 0 ; mknod /dev/md1 b 9 1
Für ein RAID5 das aus mind. drei Platten besteht, ist es empfehlenswert, das auf den Platten noch ein RAID1 mit 500MB für die Boot-Partition eingerichtet wird und das RAID5 als Daten-Partition im Anschluss. Mit Grub ist es nicht möglich von einem RAID5 zu booten.
z.B.
sda1, sdb1 und sdc1 werden zu einem RAID1 für die Boot-Partition eingerichtet (ca. 500MB),
sda2, sdb2 und sdc2 werden zu einem RAID5 eingerichtet für Root, Daten und einer SWAP-Datei. Im MBR der Platten wird der Urloader installiert sda1, sdb1 und sdc1 werden als aktive Partitionen mit fdisk
markiert und Grub wird in die Boot-Partition installiert.
cfdisk /dev/sda modprobe raid1 mdadm --create /dev/md0 --level=1 --raid-device=3 /dev/sda1 missing missing
mke2fs -j -L boot /dev/md0 mount /dev/md0 /boot cp -a /mnt/boot/* /boot
LABEL=boot /boot ext3 errors=remount-ro 0 1
#/boot/grub/menu.lst title Debian GNU/Linux, kernel 2.6.18-6-686 root (hd0,0) kernel /vmlinuz-2.6.18-6-686 root=/dev/md1 ro initrd /initrd.img-2.6.18-6-686 savedefault
umount /dev/md0 mdadm --stop /dev/md0 mount /dev/sda1 /boot grub --config-file=/media/sda1/boot/grub/menu.lst root (hd0,0) setup (hd0,0) quit
mdadm --assemble --run /dev/md0 /dev/sda1
sfdisk -d /dev/sda | sfdisk /dev/sdc mdadm /dev/md0 --add /dev/sdc1RAID5 einrichten und Daten kopieren.
mdadm --create /dev/md1 --level=5 --raid-device=3 /dev/sda2 missing /dev/sdc2 mke2fs -j -L raid5 /dev/md1 mount /dev/md1 /media mount /dev/sdb5 /mnt cp -a /mnt/* /media
cfdisk /dev/sdb mdadm --add /dev/md0 /dev/sdb1 mdadm --add /dev/md1 /dev/sdb2
#/etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 LABEL=boot /boot ext3 errors=remount-ro 0 1 /dev/md1 / ext3 defaults,errors=remount-ro 0 1
- Partition aus einem RAID Verbund entfernen und den Superblock löschen.
mdadm /dev/md0 --fail /dev/sda1 mdadm /dev/md0 --remove /dev/sda1 mdadm --zero-superblock /dev/sda1
- RAID komplett löschen
umount /dev/md0 /dev/md1 mdadm --stop /dev/md0 /dev/md1 mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sda2 /dev/sdb2 /dev/sdc2
- RAID5 mit HotSpare Device einrichten
mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2 \ --spare-devices=1 /dev/sdd2
- HotSpare Device einem RAID5 aus drei Festplatten hinzufügen
mdadm /dev/md1 --add /dev/sdd2 mdadm /dev/md1 --grow --raid-devices=4
die vierte Festplatte muß genauso partitioniert werden wie die anderen drei.
- wenn man die RAID5 Partition vergrößern möchte, müssen neue Festplatten mit einer gleichgroßen Boot-Partition und einer größeren Daten-Partition dem RAID Verband einzeln hinzugefügt werden, so lange bis alle Laufwerke durch welche mit größerer Partition ersetzt wurden. Danach kann man das RAID-Device vergrößern.
alte Platte entfernen
mdadm /dev/md0 --fail /dev/sdc1 mdadm /dev/md0 --remove /dev/sdc1 mdadm --zero-superblock /dev/sdc1 mdadm /dev/md1 --fail /dev/sdc2 mdadm /dev/md1 --remove /dev/sdc2 mdadm --zero-superblock /dev/sdc2
neue Platte einbinden, und warten bis RAID wiederhergestellt wurde.
mdadm /dev/md0 --add /dev/sdc1 mdadm /dev/md1 --add /dev/sdc2 mdadm -D /dev/md0 mdadm -D /dev/md1
mdadm /dev/md1 --grow --size=max
Device auf Fehler prüfen, Dateisystem auf maximale Größe erweitern.
e2fsck -f /dev/md1 resize2fs -p /dev/md1
dem RAID Verbund wird eine Platte hinzugefügt, auf der ein Rebuild einer noch exisierenden Platte (nicht defekten Platte) gespielt wird, um diese danach auszutauschen.
Das RAID bleibt dabei intakt.
- Datenträger /dev/sdd3 wird dem RAID-Verbund als Spare hinzugefügt. Mit den zweiten Befehl werden die Daten der /dev/sdc3 auf die Spare Platte kopiert.
mdadm /dev/md1 --add /dev/sdd3 mdadm /dev/md1 --replace /dev/sdc3
- Status des Kopiervorganges anzeigen
cat /proc/mdstat
- Platte als fehlerhalft markieren
mdadm --manage /dev/md1 --fail /dev/sdc3 oder mdadm --manage --set-faulty /dev/md1 /dev/sdc3
- Platte aus RAID entfernen
mdadm /dev/md1 -r /dev/sdc3
Fehlermeldung beim starten, System bleibt in der initramfs hängen.
Failure: failed to assemble all arrays.
wenn die RAID Arrays beim starten nicht eingebunden werden, versuchen das RAID5 Array von Hand zu initialisieren
mdadm --assemble /dev/md1 --run /dev/sda2 /dev/sdb2 /dev/sdc2
wenn das Device /dev/md1 nicht existiert
mknod /dev/md1 b 9 1
eine neue initrd mit RAID Unterstützung erstellen
mkdir /raid mount /dev/md1 /raid mount --bind /dev /raid/dev mount --bind /proc /raid/proc mount --bind /sys /raid/sys mount -n -o remount,rw /dev/md0 mount --bind /root /mnt/boot chroot /raid /usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.23 2.6.23