シングルドライブをソフトウェアRAID1に移行する
データはそのままでミラーリングに移行する簡単な方法です、シングルドライブで運用中のHDDをソフトウェアRAID1を使って冗長化してみます。
(はじめに)
必ずバックアップをとってから作業してください。動作を確認した環境はCentOS5.5で、160GBのHDDを2つ使用しています。
(シングルドライブの状態確認)
シングルドライブで運用中のドライブをdfコマンドで確認しておきます。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/hdc1 157566568 198632 149363956 1% /mnt/mdtest
/mnt/mdtestにhdc1をマウントしています。
(HDDのシステムタイプ変更)
hdc1をアンマウントし、fdiskでHDDのシステムタイプを変更します。
# umount /dev/hdc1
# fdisk /dev/hdc
コマンド (m でヘルプ): p
Disk /dev/hdc: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hdc1 1 19929 160079661 83 Linux
コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): p
Disk /dev/hdc: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hdc1 1 19929 160079661 fd Linux raid 自動検出
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
fdiskの「t」コマンドでHDDのシステムタイプを0x83のLinuxから0xfdのLinux raidに変更します。
(ミラーリング用ディスクを用意する)
別のディスクを用意し、fdiskで同じ容量、タイプに設定します。# fdisk /dev/hdd
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-19929, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-19929, default 19929):
Using default value 19929
コマンド (m でヘルプ): p
Disk /dev/hdd: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hdd1 1 19929 160079661 83 Linux
コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): p
Disk /dev/hdd: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hdd1 1 19929 160079661 fd Linux raid 自動検出
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
(RAIDデバイスの作成)
mdadmコマンドでRAIDデバイスを作成します。
# /sbin/mdadm -C -l1 /dev/md0 -n2 /dev/hdc1 /dev/hdd1
mdadm: /dev/hdc1 appears to contain an ext2fs file system
size=160079660K mtime=Tue Dec 14 16:20:36 2010
mdadm: /dev/hdd1 appears to contain an ext2fs file system
size=156248064K mtime=Tue Dec 14 15:36:42 2010
mdadm: /dev/hdd1 appears to be part of a raid array:
level=raid1 devices=2 ctime=Tue Dec 14 16:00:25 2010
Continue creating array? y
mdadm: array /dev/md0 started.
コマンドオプション-Cは作成、-l1はRAIDレベル1、-n2はHDD2台という意味です。
作成した/dev/md0の状態を確認します。
cat /proc/mdstat かmdadm -D /dev/md0で確認できます。
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[1] hdc1[0]
160079552 blocks [2/2] [UU]
[>....................] resync = 1.1% (1878784/160079552) finish=44.9min speed=58712K/sec
unused devices:
(ミラーリング完成)
しばらく時間がかかりますが、リビルド完了後の状態です。
# /sbin/mdadm -D /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Tue Dec 14 16:36:29 2010
Raid Level : raid1
Array Size : 160079552 (152.66 GiB 163.92 GB)
Used Dev Size : 160079552 (152.66 GiB 163.92 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Tue Dec 14 17:35:09 2010
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 92dfa8c5:111c80f7:62e79e1e:90e57eb8
Events : 0.2
Number Major Minor RaidDevice State
0 22 1 0 active sync /dev/hdc1
1 22 65 1 active sync /dev/hdd1
マウントしてdfコマンドで状態を見てみると、最初の/dev/hdc1と同じ容量になっていることが確認できます。ちなみに中身のファイルも問題ありません
でした。
# mount /dev/md0 /mnt/mdtest/
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/md0 157566568 198632 149363956 1% /mnt/mdtest
(障害発生時の確認)
障害が発生したと仮定して、元々のディスクを抜いてみます。
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[1]
160079552 blocks [2/1] [_U]
unused devices:
1台で動いていることが確認できます。
抜いていたHDDを元に戻してリビルドして完了です。
# mdadm /dev/md0 -a /dev/hdc1
mdadm: re-added /dev/hdc1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdc1[0] hdd1[1]
160079552 blocks [2/1] [_U]
[>....................] recovery = 0.2% (458496/160079552) finish=46.4min speed=57312K/sec
unused devices:
Dec. 2010
Linux,POSIX,BSD,UNIX,gcc,gdb,コマンド,プログラミング,サーバー,ネットワーク,ソースコード,デバッグ,パケットキャプチャ