lochkartenstanzer
Goto Top

Mdadm Raid1 - Platte tauschen ohne kritische Phase der Resynchronisation.

Manchmal muß man eine Platte in einem RAID1-Verbund tauschen, sei es, weil man größere, schnellere oder buntere Platten drin haben will oder sei es, weil die smart-Werte es anraten, einen Plattentausch vorzunehmen. Wenn man nun einfach die eine Platte herausnimmt und durch eine andere ersetzt, hat man eine kritische Phase während der Synchronisation, während der ein Plattendefekt fatal sein könnte. Die folgende Methode vermeidet dieses Risiko.

Hallo Kollegen,

Bisher habe ich, wie die meisten vermutlich auch, beim Ersetzen einer Platte im mdadm-Raid1-Verbund,

  • das Raid angehalten,
  • die Platte ersetzt,
  • Raid wieder gestartet und
  • die Resynchronisation abgewartet (oder auch nicht, wegen downtime)

funktioniert wunderbar, aber bei heutigen Plattengrößen dauert die Resynchronisation manchmal Stunden. Wenn man während dieser Zeit das Raid weiterenutzt (oder benutzen muß), weil das Wartungsfenster nciht große genug ist, besteht die Gefahr eines Datenverlustes, wenn die noch aktive Platte ausgerechnet da die Grätsche machen sollte. um das zu vermeiden kann man wie folgt vorgehen:

Die Gründe für das Austauschen können verschiedene sein, bei mir ist es meistens Ersatz der alten Platte, weil die smart-Werte schlechter werden. Manchmal aber auch, weil ich größere Platten brauche.

Voraussetzungen:

  • Vorhandes synchrones mdadm-RAID1
  • Platz für weitere Platte

Bezeichnungen:

RAID1: /dev/md0
RAID-Partitionen: /dev/sda1 /dev/sdb1
Neue Partition: /dev/sdc1

Vorgehensweise:

  • Backup machen, wenn noch keines gemacht wurde.

  • Backup prüfe, wenn es noch nicht geprüft wurde.
Die meisten (Kunden) machen zwar regelmäßig Backups, aber prüfen zu selten, ob die Backups auch was taugen.

Ein "cat /proc/mdstat" soltle erstmal folgendes liefern:
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb1[1] sda1
      130944 blocks super 1.2 [2/2] [UU]



  • Zusätzliche Platte einbauen und partitionieren. Dabei drauf achten, daß die für das RAID1 vorgesehene Partition nicht zu klein ist. Zu groß darf sie ohne weiteres sein.

  • Neue Partition ins Raid aufnehmen mit

# mdadm --add /dev/md0 /dev/sdc1
mdadm: added /dev/sdc1

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[2](S) sdb1[1] sda1
      130944 blocks super 1.2 [2/2] [UU]
d.h. die neue Partition wurde als Spare eingefügt.

  • RAID auf alle drei Partitionen erweitern

# mdadm --grow /dev/md0 -n 3 ; cat /proc/mdstat 
raid_disks for /dev/md0 set to 3
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md20 : active raid1 sdc1[2] sdb1[1] sda1
      130944 blocks super 1.2 [3/2] [UU_]
      [>....................]  recovery =  0.0% (0/130944) finish=136.4min speed=0K/sec
      

d.h. sda1 und sdb1 werden auch auf sdc1 synchronisiert.

  • Synchronisation abwarten

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[2] sdb1[1] sda1
      130944 blocks super 1.2 [3/3] [UUU]

  • Zu ersetzende Platte (sdb1) aus dem RAID nehmen.

# mdadm --fail  /dev/md0 /dev/sdb1 ; cat /proc/mdstat 
mdadm: set /dev/sdb1 faulty in /dev/md0
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[2] sdb1[1](F) sda1
      130944 blocks super 1.2 [3/2] [U_U]

# mdadm --remove  /dev/md0 /dev/sdb1 ; cat /proc/mdstat 
mdadm: hot removed /dev/sdb1 from /dev/md0
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[2] sda1
      130944 blocks super 1.2 [3/2] [U_U]
     

  • Raid wieder auf 2 devices verkleinern

# mdadm --grow /dev/md0 -n 2 ; cat /proc/mdstat 
raid_disks for /dev/md0 set to 2
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[2] sda1
      130944 blocks super 1.2 [2/2] [UU]



  • (Richtige) Platte wieder ausbauen.

Fertig!

Prinzipiell sollte dieses Vorgehen auch mit Hardware-Raids möglich sein, ich habe das aber noch nie probiert. Mit mdadm funktioniert es jedenfalls zuverlässig und hält das Risiko des Datenverlustes während dem "weiterarbeiten" gering.

Warnung:

Das sollten nur erfahrene Admins machen. Tippfehler können fatale Folgen haben. Auch ein Vertauschen der Platten beim Ein-/Ausbau wird ggf mit Datenverlust mit mindestens 1TB bestraft. Übt das notfalls vorher mit einem Testsystem!

Viel Spaß beim Ausprobieren.

lks

Content-Key: 196920

Url: https://administrator.de/contentid/196920

Printed on: April 25, 2024 at 17:04 o'clock