CentOS4のソフトウェアRAID1を修復

投稿日:

外部設置サーバがHDDのエラーを訴えて来たので、HDDを交換する事にしました。

まずサーバの電源を切って/dev/hdb=UATAのIDE1スレーブ側HDDを取外し、新品に交換します。

今回はここで「呪われたディスプレイ」に接続したため、再起動しなくなって往生しました。サムスンの中古21インチCRTなんだけど、何故かこのディスプレイをサーバに接続すると、GRUBがカーネルを読み込んだ後展開せず、固まってしまう。

ディスプレイさえ呪われてなければそのままOSが立ち上がるので、/dev/hdaの構成を調べて同様に/dev/hdbにパーティションを切ります。

# fdisk /dev/hda

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 64 514048+ fd Linux raid 自動検出
/dev/hda2 65 5163 40957717+ fd Linux raid 自動検出
/dev/hda3 5164 5294 1052257+ fd Linux raid 自動検出
/dev/hda4 5295 9729 35624137+ fd Linux raid 自動検出

ということで、起動フラグも含めて同様に。

# fdisk /dev/hdb

Disk /dev/hdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/hdb1 * 1 64 514048+ fd Linux raid 自動検出
/dev/hdb2 65 5163 40957717+ fd Linux raid 自動検出
/dev/hdb3 5164 5294 1052257+ fd Linux raid 自動検出
/dev/hdb4 5295 9729 35624137+ fd Linux raid 自動検出

RAIDの状態を確認すると

# cat /proc/mdstat

Personalities : [raid1]
md2 : active raid1 hda2[0]
40957632 blocks [2/1] [U_]

md1 : active raid1 hda3[0]
1052160 blocks [2/1] [U_]

md3 : active raid1 hda4[0]
35624064 blocks [2/1] [U_]

md0 : active raid1 hda1[0]
513984 blocks [2/1] [U_]

unused devices: <none>

となり「片肺飛行」である旨が表示されるので、構成に併せてhdbのパーティションをRAIDに参加させます。

# mdadm --add /dev/md0 /dev/hdb1

mdadm: hot added /dev/hdb1

# mdadm --add /dev/md1 /dev/hdb3

mdadm: hot added /dev/hdb3

# mdadm --add /dev/md2 /dev/hdb2

mdadm: hot added /dev/hdb2

# mdadm --add /dev/md3 /dev/hdb4

mdadm: hot added /dev/hdb4

すると、こんな感じの再構築過程を経て片肺[U_]が通常[UU]に戻って来ます。

# cat /proc/mdstat

Personalities : [raid1]
md2 : active raid1 hdb2[2] hda2[0]
40957632 blocks [2/1] [U_]
[>....................] recovery = 4.7% (1960256/40957632) finish=22.4min speed=28971K/sec
md1 : active raid1 hdb3[1] hda3[0]
1052160 blocks [2/2] [UU]

md3 : active raid1 hdb4[2] hda4[0]
35624064 blocks [2/1] [U_]
resync=DELAYED
md0 : active raid1 hdb1[1] hda1[0]
513984 blocks [2/2] [UU]

ディスプレイが呪われていなければ非常に簡単(^_^)