Windows をホスト OS とした仮想環境上に構築する。具体的な環境としては下記。
- CentOS 5.7
- 仮想 HDD 3台
- うち 1 台、OS などシステムファイルをインストール
- 残りの 2 台で RAID1 によるミラーリングを実現
- /raid にミラーリング環境を実現
- VMWare Workstation
以下のように、/raid
以下に RAID1 によるミラーリング環境を構築する。用いる仮想 HDD は何れも容量は 8GB である。
- 「仮想マシン設定の編集」
- →「追加(A)...」→「次へ(N) >」→「次へ(N) >」→「次へ(N) >」→「次へ(N) >」→「完了」×2
- →「OK」→「この仮想マシンを起動」
RAID 1 を構成する, HDDを2台追加してRAID 1を構成するには を参考に進めてます。
/dev/sd{b,c}
が存在することを確認/dev/sd{b,c}
に対して以下を行うfdisk
を実行- パーティションを1つ作成
- フォーマットを「fd (Linux raid 自動検出)」に設定
# ls /dev/sd{b,c}
/dev/sdb /dev/sdc
# fdisk /dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
このディスクのシリンダ数は 1044 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-1044, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-1044, default 1044):
Using default value 1044
コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ fd Linux raid 自動検出
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
# fdisk /dev/sdc
(略
# ls /dev/sd{b,c}*
/dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1
/dev/sd{b,c}
で RAID1 を構築し、仮想デバイス(?) /dev/md0
を作成する。
# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sd{b,c}1
mdadm: array /dev/md0 started.
# vi /etc/mdadm.conf # <= これなに?
# cat /etc/mdadm.conf
DEVICE /dev/sd[a-z]*
ARRAY /dev/md0 level=raid1 devices=/dev/sdb1,/dev/sdc1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
8385792 blocks [2/2] [UU]
[============>........] resync = 63.0% (5286208/8385792) finish=0.5min speed=87357K/sec
# --->8--- (しばし待つ) --->8---
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
8385792 blocks [2/2] [UU]
unused devices: <none>
今回は ext3 でフォーマットする。
# mkfs.ext3 /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2096448 blocks
104822 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
8385792 blocks [2/2] [UU]
unused devices: <none>
/raid
に /dev/md0
をマウントする。
# mount /dev/md0 /raid
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
7.2G 2.4G 4.5G 35% /
/dev/sda1 99M 19M 76M 20% /boot
tmpfs 125M 0 125M 0% /dev/shm
/dev/md0 7.9G 147M 7.4G 2% /raid # <= 新しく追加される!!
起動時にマウントされている必要があれば /etc/fstab
に設定を追記
# cat >> /etc/fstab
/dev/md0 /raid ext3 defaults 0 0
#
大き目のファイル作って確認
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
7.2G 2.4G 4.5G 35% /
/dev/sda1 99M 19M 76M 20% /boot
tmpfs 125M 0 125M 0% /dev/shm
/dev/md0 7.9G 147M 7.4G 2% /raid
# head -c 100m /dev/zero > /raid/foo
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
7.2G 2.4G 4.5G 35% /
/dev/sda1 99M 19M 76M 20% /boot
tmpfs 125M 0 125M 0% /dev/shm
/dev/md0 7.9G 247M 7.3G 4% /raid
# ls -hl /raid
合計 101M
-rw-r--r-- 1 root root 100M 11月 21 09:20 foo
/dev/sdc1
を故障させた例を示す
# mdadm --manage /dev/md0 --fail /dev/sdc1
# man mdadm
(略...
-f, --fail
mark listed devices as faulty. As well as the name of a device
file, the word detached can be given. This will cause any
device that has been detached from the system to be marked as
failed. It can then be removed.
(略...
RAID1 などに組み込んだデバイスがアクセスできなくなった際に、メール通知するような設定。
# echo 'MAILADDR root@localhost' >> /etc/mdadm.conf
# /etc/init.d/mdmonitor start
# mdadm --manage /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[2](F) sdb1[0]
8385792 blocks [2/1] [U_]
unused devices: <none>
# mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 [email protected] Mon Nov 21 08:12 31/1096 "Fail event on /dev/md"
&
Message 1:
From [email protected] Mon Nov 21 08:12:50 2011
Date: Mon, 21 Nov 2011 08:12:50 +0900
From: mdadm monitoring <[email protected]>
To: [email protected]
Subject: Fail event on /dev/md0:localhost.localdomain
This is an automatically generated mail message from mdadm
running on localhost.localdomain
A Fail event had been detected on md device /dev/md0.
It could be related to component device /dev/sdc1.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1]
md0 : active raid1 sdc1[2](F) sdb1[0]
8385792 blocks [2/1] [U_]
unused devices: <none>
& q
/dev/sdc1
がアクセスできなくなったときに、ハードウエアの換装、フォーマット、RAID1 に組み込む。
# ls -R /raid
/raid:
bar baz foo hoge
/raid/hoge:
fuga
/raid/hoge/fuga:
piyo
# mdadm --manage /dev/md0 --fail /dev/sdc1 # 意図的に切り離す!!
mdadm: set /dev/sdc1 faulty in /dev/md0
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[2](F) sdb1[0]
8385792 blocks [2/1] [U_]
unused devices: <none>
# mdadm --manage /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0]
8385792 blocks [2/1] [U_]
unused devices: <none>
# ls -R /raid
/raid:
bar baz foo hoge
/raid/hoge:
fuga
/raid/hoge/fuga:
piyo
# -- >8 -- 電源を切って、HDDを換装し、システムを起動 -- >8 --
# fdisk /div/sdc1
(略
# mdadm --manage /dev/md0 --add /dev/sdc1
mdadm: re-added /dev/sdc1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
8385792 blocks [2/2] [UU]
unused devices: <none>
# ls -R /raid
/raid:
bar baz foo hoge
/raid/hoge:
fuga
/raid/hoge/fuga:
piyo