ディスクを増設してRAIDを組んでみたよ

80GBのディスクにCentOSインストールしてからディスクを増設してRAIDを組んでみたくなりました。
と、いうことで1TBのハードディスクを3個を増設して、RAID5で組んでみました。
マシンはNEC Express5800

ハードディスクのマウント先を確認する

# fdisk -l

以下の記述を確認し、ハードディスクのマウント先を確認する。

ディスク/dev/sdb1は正常な領域テーブルを含んでいません。
ディスク/dev/sdc1は正常な領域テーブルを含んでいません。
ディスク/dev/sdd1は正常な領域テーブルを含んでいません。

パーティッションの作成、領域のシステム指定

# fdisk /dev/sdb1
# fdisk /dev/sdc1
# fdisk /dev/sdd1

このコマンドでパーティションを作成して、領域のシステムを『Linux raid 自動検出』にする。

RAIDバイスがユニークな名前になるように確認

# cat /proc/partitions
major minor  #blocks  name

   8     0   78125040 sda
   8     1     104391 sda1
   8     2   78019672 sda2
   8    16  976762584 sdb
   8    17  976760001 sdb1
   8    32  976762584 sdc
   8    33  976760001 sdc1
   8    48  976762584 sdd
   8    49  976760001 sdd1
 253     0   72450048 dm-0
 253     1    5537792 dm-1

RAIDのデバイス名を/dev/md*のように指定する必要があるが、
これがユニークでないと困るので確認する。



mdadmコマンドでRAIDバイスの構築

# mdadm -C /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
    size=1953519872K  mtime=Fri Jul 24 20:36:23 2009
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Mon Jul 20 23:10:09 2009
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Mon Jul 20 23:10:09 2009
mdadm: /dev/sdd1 appears to contain an ext2fs file system
    size=2066766084K  mtime=Wed Jul 16 11:51:53 1975
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Mon Jul 20 23:10:09 2009
Continue creating array? y
mdadm: array /dev/md0 started.
オプション 説明
-C Createモード(RAID作成)
/dev/md0 RAIDバイス
-l5 RAID5
-n3 RAID構成に用いるパーティション数の指定.スペアパーティションを含める場合はその数を含めずに指定
-x スペアパーティションの数の指定

最後にRAID構築に用いるパーティションをスペースで区切って順に記述
"-x" でスペアパーティションの使用を指示した場合は、後に記述したものがスペアパーティションとみなされる

今回は、スペアパーティッションを使わないので、以上のようなコマンドになる。
Continue creating array?に対して『y』を入力すれば、RAIDの構築が始まる。

RAID構築状態を確認する

構築中は以下のような出力。

 # cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      1953519872 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [=>...................]  recovery =  6.0% (58882048/976759936) finish=144.8min speed=105595K/sec

構築が終了すると以下の出力。

 # cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
      1953519872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>

この "/proc/mdstat" は故障したハードディスクを交換したり、RAIDを再構築するときに必要になるので、
以下のコマンドでコピーしておく。

# cp /proc/mdstat .

設定ファイルを作成する

以下のコマンドで設定ファイル/etc/mdadm.confを作成する。

# echo "DEVICE partitions" > /etc/mdadm.conf
# echo "MAILADDR root" >> /etc/mdadm.conf
# mdadm -D --scan >> /etc/mdadm.conf 
# cat /etc/mdadm.conf 
DEVICE partitions
MAILADDR root
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=111bc53a:cf42c6d7:41dd215b:57cca41f

ファイルシステムの作成

# mke2fs -j /dev/md0
[root@52 ~]# mke2fs -j /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
244203520 inodes, 488379968 blocks
24418998 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
14905 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, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000, 214990848

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: 
done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

mke2fsはdefaultではext2ファイルシステムを作成する。
オプション-jを付けると、ext3ファイルシステムを作成する。

Writing superblocks and filesystem accounting information: 

と表示されたときにEnterを入力する必要がある。

今回はext3ファイルシステムを作成した。

起動時に自動的にマウントされるように

/etc/fstabにマウント情報を記述する

# vi /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/md0		/share			ext3	defaults	1 3

一番下の行を追加した。
/shareにマウントしてみた。

再起動して、確認してみる。

$ df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       67G  2.8G   61G   5% /
/dev/sda1              99M   21M   74M  22% /boot
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/md0              1.8T  196M  1.7T   1% /share
none                  3.8G  104K  3.8G   1% /var/lib/xenstored

マウントされている。

RAID監視デーモンを有効にする。

RAID監視デーモンはmdmonitorという名前。

# /etc/init.d/mdmonitor start
# chkconfig mdmonitor on