Table of Contents
Raid mit mdadm
- Raid 5 erstellen
- Raid 5 erweitern
- Raid 5 auf Raid6 mit zwei zusätzlichen Platten konvertieren vor Kernel 2.6.30
- Raid 5 auf Raid6 mit einer zusätzlichen Platten konvertieren ab Kernel 2.6.30
- Defekte Platte im Raid ersetzten
- Löschen eines Raids
Raid 5 erstellen
1.) MDADM installieren
apt-get install mdadm
2.) Platten richtig partitionieren mit fdisk oder cfdisk
Man benötigt nicht umbedingt eine Partion. Es ist jedoch möglich eine zu machen.
cfdisk <device>
3.) Raid 5 erstellen:
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
Dies wird eine Zeit dauern. Man kann dies aber auch beschleunigen mit
echo 100000 >/proc/sys/dev/raid/speed_limit_min
4.) Abfrage ob das Raid schon fertig erstellt wurde
mdadm -D /dev/md0 cat /proc/mdstat
5.) Formatieren des Raids
mkfs.ext4 /dev/md0
6.) Erstellen einer mdadm.conf
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf
7.) Mountpoint erstellen
mkdir -p /mnt/raid
8.) Fstab editieren
/dev/md0 /mnt/raid ext3 defaults 1 2
9.) Mounten
mount /dev/md0 /mnt/raid
oder über fstab
mount -a
Raid5 erweitern
WICHTIG! Bei einem hinzufügen einer weitern Platte in einem Raid5 das verschlüsselt ist sollte man bevor man mit mdadm eine weitere Platte hinzufügt das Raid natürlich unmounten und mit cryptsetup auch schließen. Beim vergrößern vom Filesystem muss man das Device dann mit cryptsetup wieder öffnen.
1. Neue Platte partitionieren (Linux raid autodetect code "fd")
cfdisk <device>
2. Dateisystem auf dem RAID unmounten
umount /dev/mdX
3. Neue Platte dem RAID hinzufügen (als Spare):
mdadm --add /dev/md0 /dev/sdb1
4. Nachdem die Platte als Spare hinzugefügt wurde, kann das RAID um die neue Partition erweitert werden
mdadm --grow /dev/md0 -n 5
Wenn es sich hier große Partitionen handelt (ab 500Gb) würde ich umbedingt sofort ein
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf
empfehlen denn im Falle eines Stromausfalles würde es hier zu einem Verlust ALLER Daten kommen.
5. Um die Geschwindigkeit des Reshape zu erhöhen (theoretisch 100 MB/s), folgendes ausführen
echo 100000 >/proc/sys/dev/raid/speed_limit_min
6. Nach dem Reshape kann das Dateisystem vergrößert werden, um den neuen Platz zu nutzen
e2fsck -f /dev/md0 resize2fs /dev/md0 e2fsck -f /dev/md0
7. WICHTIG: Jetzt noch die Änderungen am RAID in die mdadm.conf eintragen, damit sie beim Neustart des Systems erhalten bleiben
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf
Ansonsten wird versucht das RAID mit einer Platte weniger zu starten, ein Rebuild beginnt und die Daten sind verloren. Nun das Dateisystem wie gewohnt einhängen
Raid5 auf Raid6 konfertieren mit zwei zusätzlichen Platten vor Kernel 2.6.30
Dieser Weg sollte nur angewendet werden wenn es umbedingt sein muss. Ab Kernel 2.6.30 geht dies um einiges leichter.
Es handelt sich um ein Raid5 mit drei Platten (SDA1, SDB1, SDC1)
Dieses soll auf ein Raid6 mit zwei zusätzlichen Platten (SDD1, SDE1) konvertiert werden.
1.) Eine Platte aus dem Raid 5 lösen
mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
2.) Raid 6 erstellen mit der einen Platte vom Raid 5 plus zwei neuen.
Es wird eine Warnung kommen das sdc1 ein Teil vom Raid5 ist aber das wissen wir und können wir ignorieren.
mdadm --create /dev/md1 --level=6 --raid-devices=5 missing missing /dev/sdc1 /dev/sdd1 /dev/sde1
3.) Das Raid 5 stoppen
mdadm --stop /dev/md0
4.) Das Raid 6 vervollständigen
mdadm /dev/md1 --add /dev/sda1 /dev/sdb1
5.) Auch hier sollte man natürlich die Geschwindigkeit erhöhen
echo 100000 >/proc/sys/dev/raid/speed_limit_min
6.) Anpassen der mdadm.conf WICHTIG!
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf
Nach einigen Stunden sollte wir dann fertig sein.
Raid5 auf Raid6 konfertieren mit einer zusätzlichen Platten vor Kernel 2.6.30
Dieser Weg ist seit Kernel 2.6.30 möglich!
Ich gehe hier von 4 Platten in einem Raid5 aus das auf ein Raid6 mit einer weiteren Platten konvertiert werden soll.
Die 4 Platten im Raid5 sind SDA1, SDB1, SDC1, SDD1
Die eine Platte die für das Raid6 dazu kommt ist SDE1
1.) Unmount vom Raid-Device
umount /dev/md0
2.) Eine Weiter Platte zu einem Raid5 hinzufügen
mdadm --add /dev/md0 /dev/sde1
3.) Umstellung auf Raid6 erzwingen
echo raid6 > /sys/block/md0/md/level
4.) Anpassen der mdadm.conf WICHTIG!
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf
Ausfall einer defekten Platte
Ersetzten einer defekten Platten (Raid1/10/5/6)
Hier gehen wir davon aus das /dev/sdb defekt ist.
1.) Defekte Festplatte aus dem Raid nehmen
mdadm --manage /dev/md0 --fail /dev/sdb1 mdadm /dev/md0 --remove /dev/sdb1
2.) Festplatte tauschen
Die Festplatte die defekt ist aus dem Server ausbauen und gegen eine neue ersetzten mit dem gleichen Speicherplatz bzw. einer größeren.
Bei Geräten die nicht Hotplug fähig sein muss der Server runtergefahren werden.
3.) Neue Platte partitionieren (Funktioniert bei msdos Partions)
Neue Platte so partitionieren das sie zum Rest der Platten im Raid passt.
Es könnte sein das man dem Kernel die Platte danach neu einlesen muss.
sda = bestehende Platte im Raid
sdb = defekte, jetzt neue Platte
dd if=/dev/sda of=/dev/sdb bs=512 count=1 sfdisk -d /dev/sda > /dev/sdb partprobe
4.) Neue Platte ins Raid hinzufügen
Danach werden die Daten im Raid neu synchronisiert.
mdadm /dev/md0 --add /dev/sdb1
5.) Anpassen der mdadm.conf (Muss nicht gemacht werden)
Dies ist nur nötig wenn sich die Laufwerks-benennung ändert.
Also wenn zB. sdb1 ausgefallen ist und gegen sdn1 ersetzt wird.
Es kann aber nicht schaden wenn dies einmal ausgeführt wird.
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf
Löschen eines Raids
1.) Unmount
Entfernen des Mounts LVM usw…
2.) Stoppen des Arrays
mdadm --stop /dev/md[X] mdadm --zero-superblock /dev/sd[X] mdadm --zero-superblock /dev/sd[Y] mdadm --zero-superblock /dev/sd[Z] ... ...
