ソフトウェアRAID1の障害対応〜リビルド
2011年3月28日Table of Contents
3〜4年前ほどに購入してた、DellサーバのHDDがH/Wエラー。
換装からリビルドまでのメモ。
- 作業前のログ、設定準備
- fdisk -l /dev/sda
- fdisk -l /dev/sdb
- cat /proc/mdstat
- cat /proc/partitions
- cat /boot/grub/grub.conf
- 障害発生の確認
- cat /proc/mdstat
- mdadm –misc –detail/dev/md0
- 障害発生HDDの換装
- 今回は、MBRの保存先のHDDではない方の障害だった
- MBR保存先のHDD障害時は、grub.confのメモが必要
- 再起動すると今度は起きてこない・・なんてこともあるかも
- fdiskを利用してフォーマット、パーティション分け
- 換装前(=相方のHDD)と同じ構成にする
- fdisk /dev/sdb(新HDD)
- mdadmを利用して、リビルド
- /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>