« 08月11日の行動 | メイン | 08月12日の行動 »
2008年08月11日
[技術] apcupsdについての覚え書き
APCのUPSを制御するオープンソースであるapcupsdにおいて、サーバシャットダウン後にUPSに対して、自分自身の電源OFFをするコマンドがシャットダウン直前に発行される。
今回、ある事情により、UPSへの電源供給が断たれたら、さっさとサーバはシャットダウンするが、UPSにつながった残りの機器は、UPSのバッテリがなくなるまで、稼働させておく設定にしたかった。
しかし、/etc/apcupsd/apcupsd.confの設定を見渡しても、そのように制御するパラメータを見つけられなかった。唯一、KILLDELAYパラメータで近い形で制御できそうだったが、APC RS900では、KILLDELAYに秒数(2400)を設定しても、サーバのシャットダウン後に、少しの間をおいてUPSも停止してしまった。
そこで、ごにょごにょ調べていたら、UPSへの電源停止命令は、/etc/apcupsd/apccontrolで、「/sbin/apcupsd -killpower」が発行されて実行されていることが分かった。そこで、泥臭いやりかただが、/etc/apcupsd/apccontrolの部分を以下のように変更して、UPSが電源停止しないようにした。
----------------------------------------------------
case "$1" in
killpower)
# echo "Apccontrol doing: ${APCUPSD} --killpower on UPS ${2}"
# sleep 10
# ${APCUPSD} --killpower
# サーバシャットダウン後にUPSの電源を切らないようにコメントアウト
# echo "Apccontrol has done: ${APCUPSD} --killpower on UPS ${2}" | ${WALL}
echo "Apccontrol don't: ${APCUPSD} --killpower on UPS ${2}"
echo "Apccontrol don't: ${APCUPSD} --killpower on UPS ${2}" | ${WALL}
;;
----------------------------------------------------
ぜんぜんスマートじゃない方法なので、もっとエレガントな方法を知っている人がコメントくれることも狙いつつ、覚え書きとして、記録!
ちなみにapcupsdは、3.14.4。
投稿者 nekobara : 2008年08月11日 22:28