Festplattenaustausch (RAID)

Aus ConfigWiki
Wechseln zu: Navigation, Suche

Nachdem z.B. der mdadm-checkarray-Cronjob eine Fehlermeldung versandt hat oder der Fehler anderweitig festgestellt wurde, sollte die Festplatte zeitnah ausgetauscht werden. Beim Austausch von defekten Festplatten, die in einem RAID-Verbund verwendet werden, sind vorher einige Vorbereitungen zu treffen.

Der Status zeigt, daß hier /dev/sda defekt ist:

~# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sda3[2](F) sdb3[1]
      1451496768 blocks [2/1] [_U]
      
md1 : active raid1 sda2[2](F) sdb2[1]
      12586816 blocks [2/1] [_U]
      
md0 : active raid1 sda1[2](F) sdb1[1]
      1052160 blocks [2/1] [_U]

Zu erkennen ist dies an dem [_U], bei einem fehlerfreien Array [UU] und an dem (F) hinter sda*.

Sollte eine Partition in einem der Arrays noch nicht als fehlerhaft markiert sein sein, ist dies nachzuholen:

~# mdadm --manage /dev/md1 --fail /dev/sda2

Danach können die fehlerhaften Partitionen aus den Arrays entfernt werden:

~# mdadm /dev/md0 -r /dev/sda1
~# mdadm /dev/md1 -r /dev/sda2
~# mdadm /dev/md2 -r /dev/sda3

Zur Sicherheit sollte noch herausgefunden werden welche Seriennummer die Festplatte hat, damit auch die Richtige gewechselt wird. Am einfachsten wäre ein:

~# smartctl -i /dev/sda
Model Family:     Seagate Barracuda 7200.11 family
Device Model:     ST31500341AS
Serial Number:    9VS3THWF

Falls die Festplatte jedoch nicht mehr ansprechbar ist, hilft

  • das Ausschlußverfahren, indem die Informationen über die intakten Festplatten gesammelt werden
  • im noch laufenden System verbliebene Informationen:
~# ls -l /dev/disk/by-id | grep sda
lrwxrwxrwx 1 root root  9 Jun  2 08:34 ata-ST31500341AS_9VS3THWF -> ../../sda
lrwxrwxrwx 1 root root  9 Jun  2 08:34 scsi-SATA_ST31500341AS_9VS3THWF -> ../../sda

Aus diesen Zeilen ist das Modell und die Seriennummer ablesbar.

  • früher, z.B. durch backupninja, gesammelte Informationen
~# grep sda /var/backups/hardware.txt
SysFS ID: /class/block/sda
Device File: /dev/sda
Device Files: /dev/sda, /dev/block/8:0, /dev/disk/by-id/scsi-SATA_ST31500341AS_9VS3THWF, \
  /dev/disk/by-id/ata-ST31500341AS_9VS3THWF, /dev/disk/by-id/wwn-0x5000c500200d70bb, \
  /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0

Die gesammelten Fehlermeldungen, relevante Informationen aus z.B. /var/log/kern.log und die Hardwareinformationen können nun an den Support des Providers gesendet werden und ein Hardwaretausch eingeleitet werden.

Nachdem die Festplatte getauscht wurde und der Server wieder läuft, muß diese wieder in das System eingebunden werden.

Achtung! Nicht den falschen Bootsektor überschreiben. /dev/sdb ist in diesem Fall die Quelle, /dev/sda das Ziel (die getauschte Platte)

~# dd if=/dev/sdb of=/dev/sda count=1 bs=512
~# sfdisk -R /dev/sda

Jetzt wieder beim RAID anmelden:

~# mdadm /dev/md0 -a /dev/sda1
~# mdadm /dev/md1 -a /dev/sda2
~# mdadm /dev/md2 -a /dev/sda3

Dabei ist es sinnvoll, kleine Partitionen zuerst einzubinden, da diese innerhalb von wenigen Minuten abgeschlossen sind, md2 (1,5TB) benötigt hier 6-8h. Es können alle Befehle nacheinander aufgerufen werden, sie werden jedoch nacheinander im Hintergrund synchronisiert. Der Fortschritt kann beobachtet werden:

~# cat /proc/mdstat 

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md2 : active raid1 sda3[2] sdb3[1]
      1451496768 blocks [2/1] [_U]
        resync=DELAYED
     
md1 : active raid1 sda2[2] sdb2[1]
      12586816 blocks [2/1] [_U]
      [==========>..........]  recovery = 50.0% (6297856/12586816) finish=1.3min speed=76595K/sec
     
md0 : active raid1 sda1[0] sdb1[1]
      1052160 blocks [2/2] [UU]

md0 ist schon fertig, md1 in Arbeit, md2 wartet noch.


~# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sda3[2] sdb3[1]
      1451496768 blocks [2/1] [_U]
      [>....................]  recovery =  0.0% (1058176/1451496768) finish=411.1min speed=58787K/sec
     
md1 : active raid1 sda2[0] sdb2[1]
      12586816 blocks [2/2] [UU]
     
md0 : active raid1 sda1[0] sdb1[1]
      1052160 blocks [2/2] [UU]

und jetzt der große Brocken (fast 7h)

Die CPU-Last von md2_resync beträgt 1-2%, iotop zeigt nichts diesbezüglich, der Loadwert bewegt sich dauerhaft bei ca. 1,00, das System läuft jedoch ohne spürbare Verzögerungen.

Meine Werkzeuge