2006年02月10日

障害時リビルド方法(RAID再構築)

ディスクの障害が発生した場合は主に以下の3点の作業で回復します。

@新しいハードディスク上でパーティションを元の構成に合わせて分割する
Aパーティション・タイプをLinux(0x83)からLinux raid 自動検出(0xfd)に変更する
Bmdadm -aコマンドでデバイスごとに再構築する

以下は検証としてサーバシャットダウン後、DISK(sda)を一本抜いてからbootする。
bootが正常に出来たことを確認したら再度シャットダウンし、DISKを繋げ直してまたboot。
bootする際にDISK(sda)はフォーマットをかける。
(自分の場合、Adaptec RAID Configurationでファーマットを実行)
以降はRAIDの再構築方法です。

1.先ずは/proc/mdstatでステータスを確認する
#cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[1]
1574272 blocks [2/1] [_U]

md2 : active raid1 sda3[1]
76469312 blocks [2/1] [_U]

md0 : active raid1 sda1[1]
104320 blocks [2/1] [_U]

unused devices:

※[_U]と表示されていることを確認します。これはDISKが一本死んでいることを表しています。

2.mdadmを確認します。
#mdadm --misc --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Feb 6 09:15:08 2006
Raid Level : raid1
Array Size : 104320 (101.88 MiB 106.82 MB)
Device Size : 104320 (101.88 MiB 106.82 MB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Feb 6 01:01:31 2006
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0


Number Major Minor RaidDevice State
0 0 0 -1 removed
1 8 1 1 active sync /dev/sda1
UUID : 0087c162:858fa438:7691c7fb:32263feb
Events : 0.19

※一本目のDISKが「removed」になっていることを確認します。
※これをmd0〜2までを確認します。

3.交換したDISKにパーティションを前のパーティションに合わせて構成します。
# fdisk /dev/sda

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

コマンド (m でヘルプ): p ←パーティション情報を表示

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

デバイス Boot Start End Blocks Id System ←パーティションが何もないことを確認
コマンド (m でヘルプ): n ←パーティションを作成
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1 ←パーティションの番号(/bootパーティションを作成)
最初 シリンダ (1-9729, default 1): 1 ←パーティションサイズの最初のシリンダ数
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-9729, default 9729): 13 ←パーティションサイズの最後のシリンダ数

コマンド (m でヘルプ): p ←最初のパーティションが作成されたことを確認

Disk /dev/sda: 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/sda1 1 13 104391 83 Linux

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

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

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

Disk /dev/sda: 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/sda1 1 13 104391 83 Linux
/dev/sda2 14 209 1574370 83 Linux
/dev/sda3 210 9729 76469400 83 Linux


4.作成したパーティションのタイプをLinux raid 自動検出(0xfd)に変更します
コマンド (m でヘルプ): t ←パーティションタイプを変更
領域番号 (1-4): 1
16進数コード (L コマンドでコードリスト表示): fd ←「fd」=Linux raid 自動検出に変更
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

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

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

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

Disk /dev/sda: 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/sda1 1 13 104391 fd Linux raid 自動検出
/dev/sda2 14 209 1574370 fd Linux raid 自動検出
/dev/sda3 210 9729 76469400 fd Linux raid 自動検出

コマンド (m でヘルプ): w ←パーティション情報を保存
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。


5.mdadmでデバイス毎にミラーを再構築する
#mdadm /dev/md0 -a /dev/sda1
#mdadm /dev/md1 -a /dev/sda2
#mdadm /dev/md2 -a /dev/sda3


6.ステータスを確認する
#cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb2[0] sda2[1]
1574272 blocks [2/2] [UU]

md2 : active raid1 sda3[2] sdb3[1]
76469312 blocks [2/1] [_U]
[>....................] recovery = 0.1% (94528/76469312) finish=1253.3min speed=1014K/sec
md0 : active raid1 sdb1[0] sda1[1]
104320 blocks [2/2] [UU]

unused devices:

※RAIDの構築状況を確認できます。


Related Posts Plugin for WordPress, Blogger...
posted by ペー at 20:30 | 東京 ☀ | Comment(0) | TrackBack(1) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック

LILO
Excerpt: LILOLInux LOaderの略。日本語ではライロウ、リロなどと読む。Linux標準のブートローダとして昔から使用されている。Microsoft Windows|Windowsなど別のオペレーティ..
Weblog: ソフトウェア辞典
Tracked: 2006-03-07 14:34
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。