FreeBSD 9.1にapcupsdをインストール(1/2)
FreeBSD 9.1をサーバとして運用しています。サーバとして使う時に気にしたいのが、停電対策です。
停電している間は使えなくても構わないのですが、正常にシャットダウンできなくて、ディスク上のデータが壊れてしまっては困ります。
そのため、無停電電源装置(UPS:Uninterruptible Power Supply)を設置したいところです。
我が家には、APCのUPSがあります。APCは、シュナイダーエレクトリック株式会社という名前に変わってしまいましたが、製品名はかわらずAPCの様です。
最近、リチウムイオン電池搭載のUPSの、「APC GS Pro 500」が発売になりましたね。
[amazonjs asin="B00D2P22SI" locale="JP"]私が使っているのは、「APC ES 500」と言う製品です。後継機が出ているみたいですね。
[amazonjs asin="B0039P72UE" locale="JP"]鉛蓄電池を使っているので、ずっしりと重く、結構大きいです。また、バッテリーに寿命もあり、正しく使うには、一定期間ごとの交換が必要です。
私は、2007年に購入し、保証も、バッテリー標準寿命もすぎていますが、一応使えています。
- UPS(無停電電源装置)購入: プラスα空間 (2007年10月31日)
そんな状態ですが、FreeBSD 9.1を搭載したサーバ機に、このUPSを接続し、使えるようにしました。
次の手順となります。
- apcupsdビルド&インストール
- apcupsd.conf設定
- apccontrol修正
- /etc/rc.conf設定
- apcupsd起動、またはシステム再起動
- 動作確認
1. apcupsdビルド&インストール
$ sudo su # cd /usr/ports/sysutils/apcupsd # make config-recuresive # make install clean
apcupsdのソフト自体のインストールは、これだけです。
設定変更で、CGI-BINにはチェックを入れておいてください。
2. apcupsd.conf設定
次に、設定ファイル、"/usr/local/etc/apcupsd/apcupsd.conf"を設定します。
複数台のapcupsd対応サーバを持っている場合、UPSがUSBでつながっているサーバ(Etherマスター)から、Ether net経由で停電を他のサーバ(Etherスレーブ)に伝えることができます。
その場合の設定もあわせて記載します。
なお、"BATTERYLEVEL"より下は、設定例です。
設定項目 | 意味 | デフォルト | USB Etherマスター |
Etherスレーブ |
---|---|---|---|---|
UPSCABLE | ケーブルの種類 | smart | usb | ether |
UPSTYPE | UPSの種類 | apcsmart | usb | net |
DEVICE | UPSデバイス名 | /dev/usv | (空欄) | {サーバIPアドレス}:{ポート番号} |
BATTERYLEVEL | UPSの残量が指定した以下の時に動作 | 5 | 50 | 50 |
MINUTES | UPSの稼働時間が指定した以下の時に動作 | 3 | 10 | 10 |
TIMEOUT | 停電からUPSが稼働するまでの時間(0は無効) | 0 | 60 | 60 |
UPSNAME | 英数字8文字以下でUPS名を指定 | (空欄) | APCES500 | APCES500 |
apcupsd.confの設定ファイルを日本語訳された方がいらっしゃいます。ありがとうございます。
上記の設定で、UPSをUSBケーブルで直接つないだ場合、および、Etherケーブル経由のSlave動作の両方を試してみました。
どちらとも、うまく動きました。
Etherマスターには、IO-DATAのLANDISK Home HDL4-Gを使いました。
- LANDISK Home HDL4-Gをapcupsdマスターにする: プラスα空間 (2013年9月14日)
この場合、スレーブ側(FreeBSD)の"DEVICE"設定は、192.168.1.200:6543となります。192.168.1.200は、LANDISK Home HDL4-GのIPアドレスです。
3. apccontrol修正
使っているマザーボードが、APMとACPIに対応しているなら、次の設定で、自動的に電源を切る様にできます。
でも、次のドキュメントによると、信頼性が高くないらしいです…。ラッキーならきちんと電源を切れるみたいですが…。
標準の設定では、システムがhaltしますが、PCの電源は切れません。電源が切れる様にするためには、次の様に書き換えます。"-h"を"-p"にします。
# diff -c apccontrol.org apccontrol
*** apccontrol.org Fri Aug 16 07:49:00 2013
--- apccontrol Sun Sep 22 08:42:14 2013
***************
*** 89,95 ****
;;
doshutdown)
printf "Beginning Shutdown Sequence" | wall
! ${SHUTDOWN} -h now "apcupsd initiated shutdown"
;;
annoyme)
printf "Power problems please logoff." | wall
--- 89,95 ----
;;
doshutdown)
printf "Beginning Shutdown Sequence" | wall
! ${SHUTDOWN} -p now "apcupsd initiated shutdown"
;;
annoyme)
printf "Power problems please logoff." | wall
私のマザーボードでは、この設定で電源を落とすことができる様になりました。
- Mini-ITXマザーボードGiada MI-Z68を買いました: プラスα空間 (2013年7月4日)
4. /etc/rc.conf設定
/etc/rc.confに、次の行を追加します。
apcupsd_enable="YES"
5. apcupsd起動、またはシステム再起動
次のコマンドで、apcupsdを起動します。
# /usr/local/etc/rc.d/apcupsd start Starting apcupsd.
面倒だったら、再起動でも構いません。というか、再起動して、apcupsdが起動することを確かめておいた方がよいでしょう。
6. 動作確認
ログファイル"/var/log/apcupsd.events"を確認しておいてください。
2013-09-22 09:01:43 +0900 apcupsd 3.14.10 (13 September 2011) localhost startup succeeded
ログファイル"/var/log/apcupsd.events"で、apcupsdが動いていることを確認したら、"apcaccess"コマンドで、UPSの状態を確認します。
$ apcaccess APC : 012,345,6789 DATE : 2013-09-24 21:25:32 +0900 HOSTNAME : localhost VERSION : 3.14.10 (13 September 2011) freebsd UPSNAME : APCES500 CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2011-01-01 03:17:15 +0900 MODEL : APC ES 500 STATUS : ONLINE LINEV : 104.0 Volts LOADPCT : 20.0 Percent Load Capacity BCHARGE : 100.0 Percent TIMELEFT : 36.9 Minutes MBATTCHG : 50 Percent MINTIMEL : 10 Minutes MAXTIME : 60 Seconds SENSE : High LOTRANS : 090.0 Volts HITRANS : 110.0 Volts ALARMDEL : 30 seconds BATTV : 13.5 Volts LASTXFER : Low line voltage NUMXFERS : 0 TONBATT : 0 seconds CUMONBATT: 0 seconds XOFFBATT : N/A STATFLAG : 0x07000008 Status Flag SERIALNO : ???????????? BATTDATE : 2007-09-13 NOMINV : 100 Volts NOMBATTV : 12.0 Volts FIRMWARE : 803.p6.A USB FW:p6 END APC : 2013-09-24 21:26:23 +0900
いよいよ、UPSの元電源を(壁の)コンセントから抜いてみます。間違えて、UPS本体のバックアップ電源につながっているコンセントからPCの電源ケーブルを抜かないで下さい。また、UPSが正しく充電されている事を確認して下さい(BCHARGE)。
上記の設定(USB)なら、UPSの元電源を、(壁の)コンセントを抜いてから60秒後に、シャットダウンが開始するはずです。
コンセントを抜いた瞬間に、コンソール画面に、バッテリーで動作している旨の表示(Power failure. Running on UPS batteries.)が出ます。
apcupsd[3594]: Power failure. apcupsd[3594]: Running on UPS batteries.
うまく、PCの電源が切れたでしょうか?
CGIを使って、Web画面で動作を確認する方法は、別の記事で説明します。結構ハマりました。
- FreeBSD 9.1にapcupsdをインストール(1/2): プラスα空間 (2013年9月24日)
- FreeBSD 9.1にapcupsdをインストール(2/2): プラスα空間 (2013年9月25日)
ディスカッション
コメント一覧
まだ、コメントがありません