リモートでやるのが怖くて、実施できていなかったProxmoxのメジャーバージョンアップを実施した。
Debianのメジャーバージョンアップ、ということになるのだが、案の定、失敗。
(アップデートに必要なファイル群が404エラーで取得できなかった)
調査が面倒だったので、さくっと消去して新バージョンで再インストールした。
で、使用しているサーバはLSI Logic系のRAID/SCSIカードを使っているので、mpt-statusdによるRAIDステータス監視が行える。
古いバージョンのときは、以下のような/etc/default/mpt-statusdを書いていた。
# cat /etc/default/mpt-statusd modprobe mptctl ID="3 -n" #
(「modprobe mptctl」を書かないと/dev/mptctlが作られず、mpt-statusがエラーになる)
通常は「ID=”3″」にするのだと思うが、これだと、syncのパーセンテージとかが表示されないという欠点がある。
root@ns5:/etc/init.d# mpt-status -i 3 ioc0 vol_id 3 type IM, 2 phy, 231 GB, state OPTIMAL, flags ENABLED ioc0 phy 0 scsi_id 9 ATA WDC WD2502ABYS-1 3B04, 232 GB, state ONLINE, flags NONE ioc0 phy 1 scsi_id 4 ATA WDC WD5000AAJS-5 3B01, 465 GB, state ONLINE, flags NONE #
このため、syncのステータスが表示される「-n」オプション付にすることにしていた。
# mpt-status -i 3 -n ioc:0 vol_id:3 type:IM raidlevel:RAID-1 num_disks:2 size(GB):231 state: OPTIMAL flags: ENABLED ioc:0 phys_id:0 scsi_id:9 vendor:ATA product_id:WDC WD2502ABYS-1 revision:3B04 size(GB):232 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0x11/0x00 SMART ASC/ASCQ:0xff/0xff ioc:0 phys_id:1 scsi_id:4 vendor:ATA product_id:WDC WD5000AAJS-5 revision:3B01 size(GB):465 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff scsi_id:0 100% scsi_id:1 100% #
同期中のサンプル
# mpt-status -i 3 -n ioc:0 vol_id:3 type:IM raidlevel:RAID-1 num_disks:2 size(GB):231 state: DEGRADED flags: ENABLED RESYNC_IN_PROGRESS ioc:0 phys_id:0 scsi_id:9 vendor:ATA product_id:WDC WD2502ABYS-1 revision:3B04 size(GB):232 state: ONLINE flags: NONE sync_state: 1 ASC/ASCQ:0x11/0x00 SMART ASC/ASCQ:0xff/0xff ioc:0 phys_id:1 scsi_id:4 vendor:ATA product_id:WDC WD5000AAJS-5 revision:3B01 size(GB):465 state: ONLINE flags: OUT_OF_SYNC sync_state: 1 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff scsi_id:0 1% scsi_id:1 1% #
壊れているときのサンプル
# mpt-status -i 3 -n ioc:0 vol_id:3 type:IM raidlevel:RAID-1 num_disks:2 size(GB):231 state: DEGRADED flags: ENABLED ioc:0 phys_id:1 scsi_id:9 vendor:ATA product_id:WDC WD2502ABYS-1 revision:3B04 size(GB):232 state: ONLINE flags: NONE sync_state: 100 ASC/ASCQ:0x11/0x00 SMART ASC/ASCQ:0xff/0xff ioc:0 phys_id:0 scsi_id:4 vendor: product_id: revision: size(GB):232 state: MISSING flags: OUT_OF_SYNC sync_state: 100 ASC/ASCQ:0x00/0x00 SMART ASC/ASCQ:0x00/0x00 scsi_id:1 100% scsi_id:0 100% #
これで問題ないだろうと思っていたのですが、ステータス変化が無くても2時間おきにメールが・・・
mpt-statusdってどういう仕組みなのか/etc/init.d/mpt-statusdの中身を確認・・・
単純に一定時間間隔でmpt-statusコマンドを実行し、その結果を比較しているだけ、と判明。
if (mpt-status -i $ID) |grep -q 'state OPTIMAL' ; then BADRAID=false else BADRAID=true logger -t mpt-statusd "detected non-optimal RAID status" fi
今回、問題となっているのは上記の部分だった。
-nのときは「state: OPTIMAL」と、コロン入りのステータス表示になっているためだった。
なので、下記のように「state: OPTIMAL」を見るように変更することで解決した。
if (mpt-status -i $ID) |grep -q 'state: OPTIMAL' ; then BADRAID=false else BADRAID=true logger -t mpt-statusd "detected non-optimal RAID status" fi