User Tools

Site Tools


linux:storage:mdadm

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]
...
...
linux/storage/mdadm.txt · Last modified: by stone