また新しくハードディスクを買ってきて、交換、RAIDの再構築を行った。
ハードディスクの購入は最近一週間で3台。
データが消えるよりいい。

一週間前に同じ作業を行ったばかりだが、やり方を忘れてしまった。
また調べ直して構築することに…。

そこで、ここにも手順を記しておくことにした。



まず、無事な方のハードディスクのパーテーション状況を調べておく。

# fdisk /dev/hda


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

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

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

デバイス ブート 始点 終点 ブロック ID システム
/dev/hda1 * 1 13 104391 fd Linux raid 自動検出
/dev/hda2 14 2624 20972857+ fd Linux raid 自動検出
/dev/hda3 2625 3929 10482412+ fd Linux raid 自動検出
/dev/hda4 3930 14946 88494052+ 5 拡張領域
/dev/hda5 3930 4125 1574338+ fd Linux raid 自動検出
/dev/hda6 4126 14946 86919651 fd Linux raid 自動検出


これに合わせて、新しいハードディスクにパーテーションを作成する。

# fdisk /dev/hdd

デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 19457 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-19457, 初期値 1):
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-19457, 初期値 19
457): 13

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

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (2625-19457, 初期値 2625):
初期値 2625 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (2625-19457, 初期値
19457): 3929

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
e
Selected partition 4
最初 シリンダ (3930-19457, 初期値 3930):
初期値 3930 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (3930-19457, 初期値
19457):
初期値 19457 を使います

コマンド (m でヘルプ): n
最初 シリンダ (3930-19457, 初期値 3930):
初期値 3930 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (3930-19457, 初期値
19457): 4125

コマンド (m でヘルプ): n
最初 シリンダ (4126-19457, 初期値 4126):
初期値 4126 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (4126-19457, 初期値
19457): 14946



作成したパーテーションの確認
コマンド (m でヘルプ): p


Disk /dev/hdd: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdd1 1 13 104391 83 Linux
/dev/hdd2 14 2624 20972857+ 83 Linux
/dev/hdd3 2625 3929 10482412+ 83 Linux
/dev/hdd4 3930 19457 124728660 5 拡張領域
/dev/hdd5 3930 4125 1574338+ 83 Linux
/dev/hdd6 4126 14946 86919651 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/hdd: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdd1 1 13 104391 fd Linux raid 自動検出
/dev/hdd2 14 2624 20972857+ fd Linux raid 自動検出
/dev/hdd3 2625 3929 10482412+ fd Linux raid 自動検出
/dev/hdd4 3930 19457 124728660 5 拡張領域
/dev/hdd5 3930 4125 1574338+ fd Linux raid 自動検出
/dev/hdd6 4126 14946 86919651 fd Linux raid 自動検出


プライマリパーテーションにブートフラグを付ける
コマンド (m でヘルプ): a
領域番号 (1-6): 1



ディスクに書き込み
コマンド (m でヘルプ): w

領域テーブルは交換されました!

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


RAIDの状況を確認
# cat /proc/mdstat

Personalities : [raid1]
read_ahead 1024 sectors
md3 : active raid1 hda6[0]
86919552 blocks [2/1] [U_]

md1 : active raid1 hda5[0]
1574272 blocks [2/1] [U_]

md4 : active raid1 hda3[0]
10482304 blocks [2/1] [U_]

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

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

unused devices:


作成したパーテーションをRAIDに追加
# mdadm /dev/md0 -a /dev/hdd1

mdadm: hot added /dev/hdd1
# mdadm /dev/md1 -a /dev/hdd5
mdadm: hot added /dev/hdd5
# mdadm /dev/md2 -a /dev/hdd2
mdadm: hot added /dev/hdd2
# mdadm /dev/md3 -a /dev/hdd6
mdadm: hot added /dev/hdd6
# mdadm /dev/md4 -a /dev/hdd3
mdadm: hot added /dev/hdd3


RAIDの状況を確認
# cat /proc/mdstat

Personalities : [raid1]
read_ahead 1024 sectors
md3 : active raid1 hdd6[2] hda6[0]
86919552 blocks [2/1] [U_]
[>....................] recovery = 0.0% (18816/86919552) finish=842.9min
speed=1710K/sec
md1 : active raid1 hdd5[2] hda5[0]
1574272 blocks [2/1] [U_]

md4 : active raid1 hdd3[2] hda3[0]
10482304 blocks [2/1] [U_]

md2 : active raid1 hdd2[2] hda2[0]
20972736 blocks [2/1] [U_]

md0 : active raid1 hdd1[1] hda1[0]
104320 blocks [2/2] [UU]

unused devices:


あとは放っておけばデータの同期が完了する。