Podmiana dysków na większe – programowy raid1 – migracja

Mamy macierz raid1 na dwóch dyskach. Chcemy wymienić bezpoleśnie te dyski na większe, powiększając partycję.
Wyciągamy jeden z dysków, wkładamy w jego miejsce większy. Bootujemy system ze starego. Mamy:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
292977280 blocks [2/1] [U_]

md0 : active raid1 sda2[0]
29294400 blocks [2/1] [U_]

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0004ccb1

Device Boot Start End Blocks Id System
/dev/sda1 1 123 987966 82 Linux swap / Solaris
/dev/sda2 124 3771 29302560 fd Linux raid autodetect
/dev/sda3 3772 40245 292977405 fd Linux raid autodetect

Na nowym dysku tworzymy partycje. Takie same, poza ostatnią, która ma być większa:
Disk identifier: 0x0416460b

Device Boot Start End Blocks Id System
/dev/sdb1 1 123 987966 83 Linux
/dev/sdb2 124 3771 29302560 fd Linux raid autodetect
/dev/sdb3 3772 72949 555664253 fd Linux raid autodetect

Dodajemy partycje na nowym dysku do macierzy:
# mdadm –manage –add /dev/md0 /dev/sdb2

md0 : active raid1 sdb2[2] sda2[0]
29294400 blocks [2/1] [U_]
[=============>…….] recovery = 69.4% (20351232/29294400) finish=2.0min speed=73232K/sec

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
292977280 blocks [2/1] [U_]

md0 : active raid1 sdb2[1] sda2[0]
29294400 blocks [2/2] [UU]

unused devices:

# mdadm –manage –add /dev/md1 /dev/sdb3
mdadm: added /dev/sdb3

Czekamy na odbudowanie macierzy:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[2] sda3[0]
292977280 blocks [2/1] [U_]
[>………………..] recovery = 0.1% (296704/292977280) finish=49.3min speed=98901K/sec

md0 : active raid1 sdb2[1] sda2[0]
29294400 blocks [2/2] [UU]

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[2] sda3[0]
292977280 blocks [2/1] [U_]
[====>…………….] recovery = 20.6% (60453248/292977280) finish=44.1min speed=87699K/sec

md0 : active raid1 sdb2[1] sda2[0]
29294400 blocks [2/2] [UU]

unused devices:

Teraz jeszcze zapisać GRUB na nowym dysku:
# grub-install /dev/sdb
# reboot
Wyciągamy drugi mały dysk, zamieniamy na pierwszy, bootujemy z drugiego.
Mamy teraz:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[0] sda3[1]
292977280 blocks [2/2] [UU]

md0 : active raid1 sdb2[0] sda2[1]
29294400 blocks [2/2] [UU]
Zwiększamy macierz do wielkości partycji:
# mdadm –grow /dev/md1 –size=max
Odbudowuje się:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[0] sda3[1]
555664128 blocks [2/2] [UU]
[==========>……….] resync = 52.7% (293091200/555664128) finish=115.1min speed=37973K/sec

md0 : active raid1 sdb2[0] sda2[1]
29294400 blocks [2/2] [UU]
Gdy skończy, powiększamy system plików. Do tego nie trzeba nawet odmontowywać partycji.
Jest:
# df
/dev/md1 310411136 271870964 22777468 93% /home
Robimy:
# resize2fs /dev/md1
resize2fs 1.41.3 (12-Oct-2008)
System plików /dev/md1 jest zamontowany pod /home; wymagana zmiana rozmiaru w locie
old desc_blocks = 18, new_desc_blocks = 34
Wykonywanie zmiany rozmiaru w locie /dev/md1 na 138916032 (4k) bloków.
System plików na /dev/md1 ma teraz 138916032 bloków.

Patrzymy jak rośnie wielkość partycji:
/dev/md1 321248412 271870896 33064444 90% /home
/dev/md1 342535984 271870828 53271004 84% /home
/dev/md1 450521784 271874336 155769272 64% /home
Po kilku minutach:
/dev/md1 546944168 271873912 247295240 53% /home
Gotowe.