停電対策完了

ホームサーバー運用を始めてから、電源管理は悩みの種でした。
昨年購入したOMRONのBZ50Tは、なにせ軽いし、通電したままバッテリーを交換できるとか、いろいろメリットはあるのに、肝心なLinuxで使えなくては意味がなく、どうしようかと思っていました。

で、重症金欠病にもかかわらず、ここは踏ん張って、やっとこさ、APCのES500を購入!
やっぱり仕事で使って慣れているAPC。USB接続ですが、apcupsdを使えばなんとかなるらしいので、頑張ってみました。

APCのES500

サーバー電源をES500からの供給に切り替えて、USB接続をします。
OSがES500をちゃんと認識をしているか確認します。

# dmesg | grep hiddev
usb.c: registered new driver hiddev
hiddev0: USB HID v1.10 Device [APC APC ES 500 FW:803.p6.A USB FW:p6] on usb4:2.0

/dev/usb/でhiddevなにがしと認識されているメッセージが表示されればOKです。

で、apcupsdのダウンロード。ソース版でやってみます。
私がダウンロードした時点では、最新版は2007/02/09の3.14.0でした。

# tar xzvf apcupsd-3.14.0.tar.gz
# cd apcupsd-3.14.0

ソース版でインストールする場合は、ソースディレクトリ/examplesディレクトリ配下に出来上がるおまじないのようなmake-hiddev(/dev/usb/hiddev/ディレクトリとリンク作成)を実行するとのこと。

# cd examples
# ./make-hiddev
# cd ..

そして、コンフィグファイルを作成し、インストールを実行します。

# ./configure --enable-cgi --enable-usb --with-upstype=usb --with-upscable=usb
# make
# make install

実行ファイル群は/sbinにコピーされているはず。スクリプト群や設定ファイルはデフォルトで/etc/apcupsdディレクトリが出来上がります。
必要に応じてcgiファイル群をapacheでcgi-binなどcgi設定しているディレクトリにコピーし、実行権限を与えます。くれぐれも、一般公開しないように!

それから、デーモンの設定ファイル/etc/apcupsd/apcupsd.confをよく読んで編集します。

UPSCABLE usb
UPSTYPE usb
DEVICE
ONBATTERYDELAY 10 #デフォルトは6秒
BATTERYLEVEL 20 #デフォルトは5%
MINUTES 5 #デフォルトは3分
TIMEOUT 60 #デフォルトは60秒
SLEEP 60 #デフォルトは20秒
  • ONBATTERYDELAY : 電源異常の許容範囲時間。これを超えると異常イベント発生。
  • BATTERYLEVEL : バッテリーレベルの許容範囲容量。これを下回るとシャットダウンイベント発生。
  • MINUTES : バッテリー残存稼動時間。これを下回るとシャットダウンイベント発生。
  • TIMEOUT : 異常イベント発生後にシャットダウンイベント発生させる時間。
  • SLEEP : シャットダウン後にUPS自身の電源を落とすまでの時間。

さらに、シャットダウン時にUPSに信号を送るスクリプトを/etc/init.d/haltのeval $command $HALTARGS行の直前に追記します。

if [ -f /etc/apcupsd/powerfail ]; then
    echo
    echo "APCUPSD will now power off the UPS"
    echo
    /etc/apcupsd/apccontrol killpower
    echo
    echo "Please ensure that the UPS has powered off before rebooting"
    echo "Otherwise, the UPS may cut the power during the reboot!!!"
    echo
fi

ちゃんとしたSmart UPSシリーズなら、UPS本体内部のeepromにUPS自身の電源切断時間等の情報が書き込まれる仕組みになっているらしいですが、ES500の場合は、これでSLEEPで指定した秒数後にUPS自身の電源も落ちます。
起動スクリプトapcupsdが正しく/etc/rc.d/init.d/にコピーされているならば、後はサービスを開始して、サービスを登録します。

# service apcupsd start
# chkconfig --add apcupsd

以上です。
OMRONのBZ50Tは、デスクトップ用のWindowsマシンに接続して使うことにしました。これで、安全・安心。