ソフトRAID構成

【RAID5 作成】

・パーティション単位でRAID化する場合

 物理ディスクは、事前に fdisk でパーティションを作成しておく
 ※ パーティションタイプコードは fd

・ディスク単位でRAID化する場合

 特に用意することはない

※ 本説明では、 RAID LEVEL を 5
使用する物理DISKドライブを /dev/sda /dev/sdb /dev/sdc /dev/sde
RAIDドライブのデバイスノードを /dev/md0
として解説している

 ※ 過去のLinuxバージョンでは、RAIDで使用するDISKデバイスノードを
   各々RAIDに参加させる手順が必要であったらしいが、現バージョン
   では不要となっている

【RAIDの作成とファイルシステムの作成】

・以下の命令で作成できる

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

※ RAID1(Mirror)の場合、以下のようにする

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

※ RAIDの作成時(タイプにもよるが)は /proc/mdstat の内容を確認し、作成が完了   するまでは、ファイルシステムの構築等の作業は控えたほうが良い模様

・RAID作成後にファイルシステムを以下のように作成
mkfs -t ext4 /dev/md0

※ これらが終了していれば /dev/md0 は普通の物理DISK同様に mount できる

【RAIDの動作確認】

・RAIDの動作は以下の内容を参照することで判る

cat /proc/mdstat

※ 正常に動作している場合の表示例

md0 : active (auto-read-only) raid5 sda[0] sdd[4] sdc[5] sdb[1]
90891264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

※ 上記の表示例は 未mount状態のもの mountすると(auto-read-only)は消える

※ 異常がある場合は、上記の [UUUU] の部分が [UU_U] の様になり、劣化を示唆
   する

【RAIDに問題が起こった場合】

・ cat /proc/mdstat の内容が以下のようになり劣化が示唆される

md0 : active raid5 sda[0] sdd[4] sdb[1]
90891264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UU_U]

※ 上記例では /dev/sdc に問題が発生してデバイスの認識から外れ [UU_U] の
   様に劣化が示唆されている

【RAIDの復旧】

・ 障害ディスクを交換したあと、以下の命令で、リカバリが始まる

mdadm --add /dev/md0 /dev/sdc

※ 障害復旧中は /proc/mdstat が以下の様になり、復旧完了までの時間が判る

md0 : active raid5 sdc[5] sda[0] sdd[4] sdb[1]
90891264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UU_U]
[>………………..] recovery = 0.0% (10112/30297088) finish=199.3min speed=2528K/sec

【RAIDの停止】

・以下の命令で停止する

mdadm --stop /dev/md0

※ 停止の前に、unmount する必要がある

【RAIDの再開】

・以下の命令で再開できる

mdadm –assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd

※ 障害発生したドライブの代替えがない場合に、劣化した状態で内容を
   バックアップする等したい場合の命令は以下の通り

mdadm –assemble –run /dev/md0 /dev/sda /dev/sdb /dev/sdd

【使用例】

・RAID0 (ストライプ)作成

mdadm –create –verbose /dev/md0 –level=0 –raid-devices=2 /dev/sda /dev/sdb

【意とせずRAIDからDISKが外れた場合】

sudo mdadm --manage /dev/md0 --add /dev/sdc
これで上手くゆけば以下のメッセージが帰る
mdadm: re-added /dev/sdc


恒久的にマウントする際の注意点

/dev/md127 等の名称で/etc/fstabに記述すると、OS起動のトラブルにつながる事がある

# blkid
/dev/md0p1: UUID="f11526c0-5957-4828-8b83-4a2d088c1fa6" BLOCK_SIZE="4096" TYPE="ext2" PARTUUID="b17c6a98-01"

fstabの例は以下の通り
/dev/disk/by-uuid/f11526c0-5957-4828-8b83-4a2d088c1fa6 /usr2 ext4 defaults 0 1
(PARTUUIDの場合)
/dev/disk/by-partuuid/a8fda7fc-01 /usr2 ext4 defaults 0 1

blkid にて、UUIDを確認して、このUUIDを使用してマウントする事を推奨(PARTUUIDを使う)

起動時にRAIDがうまく動作しない場合は、UUIDが無効となり、スタックを回避できる