Festplatten im Raid1 auswechseln

Wenn man im Logfile folgende Nachricht findet

SMART Health Status: LOGICAL UNIT FAILURE PREDICTION THRESHOLD EXCEEDED [asc=5d, ascq=2]

dann will einem die Festplatte wohl mitteilen das sie glaubt bald kaput zu gehen. Es ist  wohl Zeit die Festplatte zu wechseln. Unter Verwendung eines Softwareraids hat man noch Zeit eine neue Festplatte zu kaufen aber dann sollte es schon bald losgehen.

In Anlehnung an diese Anleitung war ich bei mir mit folgenden Schritten erfolgreich. Das Szenario sind zwei Festplatten in einem Raidsystem.

Wie sieht das Raid denn heute aus?

# more /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
      136721024 blocks [2/2] [UU]
     
unused devices: <none>

Zuerst markieren wir die defekte Platte:

# mdadm --manage /dev/md0 --fail /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md0

Dann wird die defekte Festplatte aus dem Raid genommen

# mdadm --manage /dev/md0 --remove /dev/sda1
mdadm: hot removed /dev/sda1

So, was sagt das Raid jetzt?

# more /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1]
      136721024 blocks [2/1] [_U]
     
unused devices: <none>

Nur noch eine Platte aktiv. Da in meinem Fall die erste Festplatte ausgetauscht wird müssen wir den Bootloader grub noch auf der zweiten Platten installieren.  Den entscheidene hinweis fand ich hier . Wir installieren den Bootloader auf der zweiten Platte als ob es die erste wäre. (es könnte sein das man noch ein  grub-install /dev/sdb  braucht. Ich hatte das zuerst probiert aber es reichte noch nicht)

#grub
grub>device (hd0) /dev/sdb
grub>root (hd0,0)   
grub>setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  17 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.

Wichtig ist hierbei die erste Zeile. Hiermit wird grub die zweite Festplatte als erste vorgegaukelt. Wenn ich nämlich die Erste rausziehe ist die Zweite die Erste.  Dann wird neugestarted und die defekte Festplatte ausgetauscht. Ich habe die zweite Festplatte an die Stelle der ersten gesetzt und die neue an die stelle der alten zweite Festplatte.  Nach dem Neustarten muss die Partitionierung auf die neue Festplatte übertragen werden.

sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 17849 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
 /dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdb1            63 273442364  273442302  fd  Linux raid autodetect
/dev/sdb2     273442365 281249954    7807590  82  Linux swap / Solaris
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table


(wegen solch genialen kurzen aber mächtigen Befehlen liebe ich die kommandozeile. Mach das mal mit einem Grafischen Frontend)

Jetzt wieder die Partition dem Raid hinzuügen

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

Und warten. Und warten. Denn jetzt werden die Partitionen wieder synchronisiert. Die Ungeduldigen können so den Fortschritt beobachten

#watch more /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdb1[2] sda1[1]
      136721024 blocks [2/1] [_U]
      [>....................]  recovery =  2.3% (3163136/136721024) finish=41.2min speed=53982K/sec
     
unused devices: <none>

Alles zusammen könnte man in 15 Minuten fertig sein.