毎週日曜日に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を修正して別の時間帯で動かすようにしたほうが良いかも。