LinuxでソフトウェアRAID5をくむならmd使うことになるわけで、作った。
色々と問題があったんだけども。
とりあえず、LVMと組み合わせようかとも思ったけど、組み合わせたところでメリットが見あたらなかったので今回は普通に構築した。
まず、RAID5に利用するパーティションを用意。
今回は1.5Tのパーティションを5つ。
sda3, sdb3, sdd1, sde1, sdf1
である。
パーティションタイプは0xfd(linux RAID auto detect)。
で、
# mdadm --create /dev/md2 --verbose --level=5 --raid-devices=5 /dev/sd[ab]3 /dev/sd[def]1
で最初作ったんだけど、アレイのリビルドが異常におそい。
4M/sくらいとか。
8000分以上とかなめてんの。
[>....................] resync = 1.6% (23715200/1465134592) finish=8221.9min speed=2921K/sec
チャンクサイズの問題だろうと思ったんだけど、まあ一旦構築したアレイのチャンクサイズは変更できないぽい。
ということで、チャンクサイズを指定して作り直す。
細かい容量なんて気にしないでどんと1024指定。
# mdadm -S /dev/md2 # mdadm --create /dev/md2 --verbose --level=5 --raid-devices=5 --chunk=1024 /dev/sd[ab]3 /dev/sd[def]1
当然作り直したらファイルシステムもなくなっていた。
まあ仕方ない。
これでいいだろう、と、様子をみてみると、なぜか一本スペアマークがついている。
md2 : active (auto-read-only) raid5 sdf1[5](S) sde1[3] sdd1[2] sdb3[1] sda3[0] 5860536320 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [5/4] [UUUU_]
んーと。
とりあえずメタデータを掃除してやろう。
# mdadm -S /dev/md2 mdadm: stopped /dev/md2 # mdadm --misc --zero-superblock /dev/sda3 # mdadm --misc --zero-superblock /dev/sdb3 # mdadm --misc --zero-superblock /dev/sdd1 # mdadm --misc --zero-superblock /dev/sde1 # mdadm --misc --zero-superblock /dev/sdf1 # mdadm --create /dev/md2 --verbose --level=5 --raid-devices=5 --chunk=1024 /dev/sd[ab]3 /dev/sd[def]1
今度はうまくいったようだ。
# cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md2 : active (auto-read-only) raid5 sdf1[4] sde1[3] sdd1[2] sdb3[1] sda3[0] 5860536320 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [5/5] [UUUUU] resync=PENDING md1 : active raid1 sda1[0] sdb1[1] 272960 blocks [2/2] [UU]
ということでアレイの情報を/etc/mdadm/mdadm.confに記述する。
# mdadm -Ds | grep md2 >> /etc/mdadm/mdadm.conf
mdadm.confにDEVICEの記述がないなら
DEVICE partitions
とでも記述しておけばいい。
個別に記述しても良いけどめんどくさい。
あとは普通にmke2fsとかしてファイルシステムを作ってfstab書いたりして使えばOK。
リビルドの速度は10倍になった。
[>....................] resync = 2.4% (36325084/1465134080) finish=557.6min speed=42699K/sec