ソフトウェアRAID1の障害対応〜リビルド

3〜4年前ほどに購入してた、DellサーバのHDDがH/Wエラー。
換装からリビルドまでのメモ。

  1. 作業前のログ、設定準備
    1. fdisk -l /dev/sda
    2. fdisk -l /dev/sdb
    3. cat /proc/mdstat
    4. cat /proc/partitions
    5. cat /boot/grub/grub.conf
  2. 障害発生の確認
    1. cat /proc/mdstat
    2. mdadm –misc –detail/dev/md0
  3. 障害発生HDDの換装
    1. 今回は、MBRの保存先のHDDではない方の障害だった
    2. MBR保存先のHDD障害時は、grub.confのメモが必要
    3. 再起動すると今度は起きてこない・・なんてこともあるかも
  4. fdiskを利用してフォーマット、パーティション分け
    1. 換装前(=相方のHDD)と同じ構成にする
    2. fdisk /dev/sdb(新HDD)
  5. mdadmを利用して、リビルド
  6. /proc/mdstatで、すべてのパーティションで[UU]表示になればOK

参考(換装直後のfdisk):

 [root@ns1 ~]# fdisk -l /dev/sda

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          33      265041   fd  Linux raid 自動検出
/dev/sda2              34        5255    41945715   fd  Linux raid 自動検出
/dev/sda3            5256        9171    31455270   fd  Linux raid 自動検出
/dev/sda4            9172       30401   170529975    5  拡張領域
/dev/sda5            9172       10215     8385898+  fd  Linux raid 自動検出
/dev/sda6           10216       30401   162144013+  fd  Linux raid 自動検出
[root@ns1 ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System

 

参考(fdiskでのパーティション設定):

 [root@ns1 ~]# fdisk /dev/sdb

このディスクのシリンダ数は 38913 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-38913, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-38913, default 38913): 33

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (34-38913, default 34):
Using default value 34
終点 シリンダ または +サイズ または +サイズM または +サイズK (34-38913, default 38913): 5255

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (5256-38913, default 5256):
Using default value 5256
終点 シリンダ または +サイズ または +サイズM または +サイズK (5256-38913, default 38913): 9171

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
e
Selected partition 4
最初 シリンダ (9172-38913, default 9172):
Using default value 9172
終点 シリンダ または +サイズ または +サイズM または +サイズK (9172-38913, default 38913): 30401

コマンド (m でヘルプ): n
最初 シリンダ (9172-30401, default 9172):
Using default value 9172
終点 シリンダ または +サイズ または +サイズM または +サイズK (9172-30401, default 30401): 10215

コマンド (m でヘルプ): n
最初 シリンダ (10216-30401, default 10216):
Using default value 10216
終点 シリンダ または +サイズ または +サイズM または +サイズK (10216-30401, default 30401):
Using default value 30401

コマンド (m でヘルプ): p

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          33      265041   83  Linux
/dev/sdb2              34        5255    41945715   83  Linux
/dev/sdb3            5256        9171    31455270   83  Linux
/dev/sdb4            9172       30401   170529975    5  拡張領域
/dev/sdb5            9172       10215     8385898+  83  Linux
/dev/sdb6           10216       30401   162144013+  83  Linux

コマンド (m でヘルプ): t
領域番号 (1-6): 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 2
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 2 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 3
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 3 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 5
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 5 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 6
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 6 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): p

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          33      265041   fd  Linux raid 自動検出
/dev/sdb2              34        5255    41945715   fd  Linux raid 自動検出
/dev/sdb3            5256        9171    31455270   fd  Linux raid 自動検出
/dev/sdb4            9172       30401   170529975    5  拡張領域
/dev/sdb5            9172       10215     8385898+  fd  Linux raid 自動検出
/dev/sdb6           10216       30401   162144013+  fd  Linux raid 自動検出

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

 

参考(mdadmでのリビルド):

 [root@ns1 ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/md2               39G  5.6G   32G  16% /
/dev/md4              150G  119G   24G  84% /home
/dev/md3               30G  1.4G   27G   5% /var
/dev/md0              251M   36M  203M  15% /boot
tmpfs                 1.9G     0  1.9G   0% /dev/shm

[root@ns1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
      264960 blocks [2/1] [U_]
      
md3 : active raid1 sda3[0]
      31455168 blocks [2/1] [U_]
      
md1 : active raid1 sda5[0]
      8385792 blocks [2/1] [U_]
      
md4 : active raid1 sda6[0]
      162143936 blocks [2/1] [U_]
      
md2 : active raid1 sda2[0]
      41945600 blocks [2/1] [U_]
      
unused devices: <none>
[root@ns1 ~]# mdadm /dev/md4 --add /dev/sdb6
mdadm: added /dev/sdb6
[root@ns1 ~]# mdadm /dev/md2 --add /dev/sdb2
mdadm: added /dev/sdb2
[root@ns1 ~]# mdadm /dev/md3 --add /dev/sdb3
mdadm: added /dev/sdb3
[root@ns1 ~]# mdadm /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

 

参考(リビルド中のmdstat出力):

[root@ns1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sda1[0]
      264960 blocks [2/1] [U_]
        resync=DELAYED
     
md3 : active raid1 sdb3[2] sda3[0]
      31455168 blocks [2/1] [U_]
        resync=DELAYED
     
md1 : active raid1 sda5[0]
      8385792 blocks [2/1] [U_]
     
md4 : active raid1 sdb6[2] sda6[0]
      162143936 blocks [2/1] [U_]
      [=>...................]  recovery =  5.6% (9198016/162143936) finish=40.1min speed=63470K/sec
     
md2 : active raid1 sdb2[2] sda2[0]
      41945600 blocks [2/1] [U_]
        resync=DELAYED
     
unused devices: <none>