毎週日曜日にcron.weekly で実行されるraid-checkの中を真面目に調べてみた。
raid-checkは/etc/sysconfig/raid-check がENABLED=yes になっていると、全mdのsync_actionをidleからcheckに変更し、verifyをかけているようだ。
# echo check > /sys/block/md0/md/sync_action
これが実行されるとraidのverifyが走る。
- /sys/block/md0/md/sync_action がidleからcheckになる
- /proc/mdstat がresync状態になる ("recovery" ではない: 後述)
# more /sys/block/md1/md/sync_action check # more /proc/mdstat md1 : active raid1 sdb3[1] sda3[0] 8385856 blocks [2/2] [UU] [===========>.........] resync = 57.8% (4855360/8385856) finish=0.5min speed=104322K/sec
このときmdadm --detail /dev/md1 でみるとStateはclean, resyncingとなっていた。
また、このverifyはsync_actionをidleに変更すれば中止できるようだ。
# echo idle > /sys/block/md1/md/sync_action # more /sys/block/md1/md/sync_action idle # more /proc/mdstat md1 : active raid1 sdb3[1] sda3[0] 8385856 blocks [2/2] [UU]
ちなみに本当にrebuildがかかっている時は /prod/mdstat はresyncではなくてrecoveryになっていて、sync_actionはrecoverになっている。
# cat /sys/block/md1/md/sync_action recover # more /proc/mdstat md1 : active raid1 sdb3[2] sda3[0] 8385856 blocks [2/1] [U_] [=======>.............] recovery = 36.9% (3100864/8385856) finish=0.8min speed=106926K/sec
そしてこの状態ではverify(echo check) しても弾かれる。
# echo check > /sys/block/md1/md/sync_action -bash: echo: write error: デバイスもしくはリソースがビジー状態です
定期的なverifyをやったほうがいいというのはこのナイスなページを参考に。
- http://d.hatena.ne.jp/tagomoris/20110419/1303181958
- http://d.hatena.ne.jp/tagomoris/20110420/1303282494
ただ、verify中は(echo idle で中断できるとはいえ) disk I/Oが発生するので、日曜日の早朝にI/O負荷が高くなるようなシステムだったら、cronの設定やscriptを修正して別の時間帯で動かすようにしたほうが良いかも。