Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/elline.de/modules/wbstats/class.count.php on line 115 www.elline.de - Elektronik Linux Netzwerk
www.elline.de - Elektronik Linux Netzwerk

Software-RAID unter Linux reparieren

Wenn man ein Software-RAID 1 unter Linux betreibt, wird es über kurz oder lang dazu kommen, das ein Mitglied des RAID Arrays ausfällt. In so einem Fall ist das System der Meinung, dass die Festplatte oder eine bestimmte Partition ausgefallen ist und  sich weigert, das ausgefallene Mitglied wieder in den Verbund aufzunehmen. Dies ist aber keine Grund zur Panik: in dem Software-Paket von mdadm sind viele nützliche Tools mit mit dem man den Fehler korrigieren kann. Im Notfall kann die fehlerhaften Partitionen bzw. die defekte Festplatte ersetzt werden und diese zum Teil auch während des laufenden Betriebs (hot remove, hot add).

Variante 1)
Hier beschreibe ich eine mögliche Möglichkeit das RAID wieder zum Laufen zu bekommen, wenn kein physikalischer Ausfall einer Festplatte vorliegt sondern es lediglich Probleme gab:

Erkennen eines RAID-Ausfalles mittels cat /proc/mdstat

wetzel@pandrador:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md3 : active raid1 sdc7[3] sdb7[2]
      1660155908 blocks super 1.2 [2/1] [_U]
      
md1 : active raid1 sdc5[3] sdb5[2]
      97658007 blocks super 1.2 [2/2] [UU]
      
md2 : active raid1 sdc6[2] sdb6[1]
      48828440 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sdc1[2] sdb1[1]
      97658007 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
wetzel@pandrador:~$

Hier ist zum Beispiel bei dem RAID md3 die eine Partiton ausgefallen, nun versuchen wir diese wieder einzubinden:

mdadm --manage /dev/md3 --add /dev/sdc7

nun prüfen wir ob wir Erfolg hatten:

wetzel@pandrador:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md3 : active raid1 sdc7[3] sdb7[2]
      1660155908 blocks super 1.2 [2/1] [_U]
      [==>..................]  recovery = 10.6% (177112512/1660155908) finish=506.0min speed=48838K/sec
      
md1 : active raid1 sdc5[3] sdb5[2]
      97658007 blocks super 1.2 [2/2] [UU]
      
md2 : active raid1 sdc6[2] sdb6[1]
      48828440 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sdc1[2] sdb1[1]
      97658007 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
wetzel@pandrador:~$ 

Dies war von Erfolg, denn das RAID md3 wir nun wieder synchronisiert.

Variante 2)
Ist allerdings eine Festplatte physikalisch ausgefallen, so muß diese ersetzt werden.
Wir führen wieder cat /proc/mdstat aus

wetzel@pandrador:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md3 : active raid1 sdc7[3](F) sdb7[2]
      1660155908 blocks super 1.2 [2/1] [_U]
      
md1 : active raid1 sdc5[3](F) sdb5[2]
      97658007 blocks super 1.2 [2/2] [_U]
      
md2 : active raid1 sdc6[2](F) sdb6[1]
      48828440 blocks super 1.2 [2/2] [_U]
      
md0 : active raid1 sdc1[2](F) sdb1[1]
      97658007 blocks super 1.2 [2/2] [_U]
      
unused devices: <none>
wetzel@pandrador:~$ 

An der Markierung (F) hinter dem Partitionsnamen erkennen wir das etwas ernsthaft failed ist.
Nun muß die fehlerhafte Festplatte (sdc) ausgetauscht werden.
1.) /dev/sdc als fail markieren

mdadm --manage /dev/md3 --fail /dev/sdc7 
mdadm --manage /dev/md1 --fail /dev/sdc5 
mdadm --manage /dev/md2 --fail /dev/sdc6 
mdadm --manage /dev/md0 --fail /dev/sdc1

2.) /dev/sdc entfernen

mdadm --manage /dev/md3 --remove /dev/sdc7 
mdadm --manage /dev/md1 --remove /dev/sdc5 
mdadm --manage /dev/md2 --remove /dev/sdc6 
mdadm --manage /dev/md0 --remove /dev/sdc1

3.) Austausch der defekten Festplatte

4.) Partitionierung von bestehender Festplatte auf die neue kopieren

sfdisk -d /dev/sdb | sfdisk /dev/sdc

5.) Bootloader (MBR) von bestehender Festplatte kopieren

dd if=/dev/sdb of=/dev/sdc bs=512 count=1 

6.) /dev/sdc zum Raid hinzufügen

mdadm --manage /dev/md3 --add /dev/sdc7 
mdadm --manage /dev/md1 --add /dev/sdc5 
mdadm --manage /dev/md2 --add /dev/sdc6 
mdadm --manage /dev/md0 --add /dev/sdc1