UPS(無停電電源装置)で、停電時に正しく電源オフ

RedHat7.3、RedHat9、Redhat Linux Fedora 1、Fedora5で、動作確認しております。
注:APC Smart-Ups 700 が動作している環境とします。
*このページの内容に基づき設定したために起こりうる事故について一切の責任を負いませんのでご注意ください。



RedHat7.3にて自宅サーバーを運用していますが、UPSを導入して万が一自宅が停電した場合、安全にサーバーをシャットダウンできるようにと、その時に停電があった旨を、私が使っている携帯電話へ知らせるようにも設定できました。青の部分が、確認・変更、又は入力した内容です。また、平成18年4月新たに、Fedora5サーバー構築においても、apcupsd-std-3.12.2-1.fc3.i386.rpm にて動作確認できています。


1.ファイルのDL
今回使用するソフトは、フリーソフトのAPCUPSD(UPS製品をサポートするUPS監視デーモン)の、
http://dag.wieers.com/packages/apcupsd/ で、apcupsd-3.10.18-1.0.rh7.rf.i386.rpm が目的のファイルです。
上記のサイトからDLし適当なディレクトリに保存します。
Fedora5では、http://sourceforge.net/project/showfiles.php?group_id=54413&package_id=73150&release_id=387206
にて、apcupsd-std-3.12.2-1.fc3.i386.rpm  をDL(入力部分は以下の”2.インストール”以降と同じです)。

2.インストール
$ rpm -i apcupsd-3.10.18-1.0.rh7.rf.i386.rpm
で、インストールします。

3.使用シリアルケーブルの型番の確認
APC Smart-Ups 700 購入時に付属していた、シリアルケーブルの型番を確認しておきます。私の場合、
940-0024C
でした(ケーブルに書いてあります)。確認後、COM1ポート に接続しておきます。

4.設定
/etc/apcupsd
内にある apcupsd.conf
を編集します(確認・変更した部分だけ表記します)。

#ケーブルの型番。
UPSCABLE 940-0024C

#UPSの機種を設定。
UPSTYPE smartups  
Fedora5では、UPSTYPE apcsmart)

#接続ポートをCOM1と指定する。COM2ポートにする場合は、/dev/ttyS1 とする。
DEVICE /dev/ttyS0

#バッテリ残量5%を切ったら、シャットダウン。
BATTERYLEVEL 5

#停電後、この数値(秒)を過ぎたら、シャットダウン。60秒×5分=300秒
TIMEOUT 300

5.起動
$ /etc/rc.d/init.d/apcupsd start
で apcupsd を起動します。

6.動作テスト
$ /sbin/apcaccess status
で、

DATE : Thu Jun 12 22:38:44 JST 2003
HOSTNAME : #####.com  ←ホストサーバー名
RELEASE : 3.8.5
UPSNAME : UPS_IDEN
CABLE : APC Cable 940-0024C
MODEL : SMART-UPS 700
UPSMODE : Stand Alone
STARTTIME: Tue Jun 03 22:35:03 JST 2003
STATUS : ONLINE
LINEV : 098.1 Volts
LOADPCT : 14.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 87.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 300 Seconds
MAXLINEV : 098.1 Volts
MINLINEV : 097.5 Volts
OUTPUTV : 098.1 Volts
SENSE : High
DWAKE : 000 Seconds
DSHUTD : 020 Seconds
DLOWBATT : 02 Minutes
LOTRANS : 090.0 Volts
HITRANS : 110.0 Volts
RETPCT : 000.0 Percent
ITEMP : 40.0 C Internal
ALARMDEL : 5 seconds
BATTV : 27.3 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 1
XONBATT : Wed Jun 04 22:53:36 JST 2003
TONBATT : 0 seconds
CUMONBATT: 27 seconds
XOFFBATT : Wed Jun 04 22:54:03 JST 2003
SELFTEST : NO
STESTI : 336
STATFLAG : 0x008 Status Flag
DIPSW : 0x00 Dip Switch
REG1 : 0x00 Register 1
REG2 : 0x00 Register 2
REG3 : 0x00 Register 3
MANDATE : 09/12/01
SERIALNO : ##########←シリアルナンバー
BATTDATE : 09/12/01
NOMOUTV : 100
NOMBATTV : 24.0
EXTBATTS : 0
FIRMWARE : 50.14S.A
APCMODEL : GWA
END APC : Thu Jun 12 22:38:46 JST 2003

と、結果が表記されればOKです。されない場合は、シリアルケーブルの接続や /etc/apcupsd/apcupsd.conf ファイルの設定を再チェックしてみます。

7.実際の動作テスト
実際のテストは、直接、UPSへの電源供給コンセントを抜いて停電状態にしてみます。上記の設定の場合、無事5分後にシャットダウン出来ました。
(Smart-Ups700には、回線終端装置、ブロードバンドルータ、ハブ、サーバ本体などのコンセントを挿してあります)

8.携帯電話へ通知
停電や、停電が復旧すると、root 宛にメールが届きます。それを、携帯電話のメールアドレスに転送設定しておきます。しかし、/etc/aliases で指定しても、すべての root 宛のメールが転送されてしまいますので、ユーザーから .procmailrc で停電時のUPS関連だけのメールを転送するように設定してみました(procmailがインストールされていることが必要です)。

まず、root になり、
$ vi/etc/aliases
で、root 宛を、ユーザーに転送するようにしておきます。保存したら、 newaliases を忘れずに実行します。

続いて、そのユーザーになり、
ユーザーディレクトリで、
$ vi .procmailrc
で、
--------   ここから  ----------
LOGFILE=$HOME/log
UPS=$HOME/.UPS

:0
* ^Subject: *\/.* ←件名をチェック。
* ? echo "$MATCH" | fgrep -iqf $UPS ←UPSというファイルに書いてある語句がマッチしているか。
! *******@docomo.ne.jp ←実際に転送させる、携帯電話のメールアドレス。
--------   ここまで  ----------

を、書いて保存。
次に、件名でマッチする語句を、別ファイル(.UPS)に保存しておきます。

$ vi .UPS
--------   ここから  ----------
Power Failure ←停電した(電圧低下開始)
Power has returned ←復活した(通電開始した)
--------   ここまで  ----------
の、2行です。停電テストした結果、、無事転送され、通常の root 宛は、ユーザーのmailspool に保存されました。

その他にも細かく設定できます。詳しくは、
/usr/share/doc/apcupsd-3.8.5/
にドキュメントあります。


[トップページへ]
2006/04/10更新