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.