APCUPSDのテスト

 ここまでで設定がひと通り終了したはずだ。APCUPSDを実行し,動作テストをしてみよう。

APCUPSDの起動と停止

 APCUPSDをRPMパッケージからインストールすると,/etc/rc.d/init.dディレクトリにapcupsdというスクリプトファイルが用意されている。このapcupsdスクリプトを使い,APCUPSDを起動したり停止することが可能だ。APCUPSDを起動するには,次のように引数startを指定すればよい。

# /etc/rc.d/init.d/apcupsd start

 次のような表示が現れてAPCUPSDデーモンが起動するはずだ。

Starting UPS monitoring: [OK]

 ちなみに終了するには,次のように引数stopを指定すればよい。

# /etc/rc.d/init.d/apcupsd stop

 RPMパッケージからインストールした場合,Linuxの起動時にapcupsdスクリプトが実行され,自動的にapcupsdが起動するように自動設定されている。そのため,Linuxを再起動するたびにapcupsdスクリプトを手動実行する必要はない。

One Point!

Linuxの起動時に自動実行するか否かを切り替えるには,/usr/sbin/ntsysvコマンドを実行して変更すればよい。

APCUPSDの動作テスト

 動作テストをしてみよう。テストには次の2つの方法がある。

  • /sbin/apctestコマンドを使う方法
  • /sbin/apcaccessコマンドを使う方法

 apctestコマンドは,どちらかというと正しく動作しない場合にその原因を調べるためのもので,ケーブルを抜いて試したりするための原因究明が主目的となっている。

 apcaccessコマンドは,apcupsdに現在のUPSの状態を問い合わせ,現在の状態を調べるためのものだ。

 とりあえず最初は,apcaccessコマンドを使ってみるのが簡単だ。次のようにapcaccessコマンドに引数statusを指定して実行しよう。現在のUPS状態が表示されるはずだ。

One Point!

apcaccessコマンドの実行にroot権限は必要ない。


$ /sbin/apcaccess status
DATE : Tue Jan 15 01:58:08 JST 2002
HOSTNAME : foo.example.co.jp
RELEASE: 3.8.5
UPSNAME: UPS_IDEN
CABLE: APC Cable 940-0020C
MODEL: BackUPS
UPSMODE: Stand Alone
STARTTIME: Tue Jan 15 01:52:28 JST 2002
LINEFAIL : OK
BATTSTAT : OK
STATFLAG : 0x008 Status Flag
END APC: Tue Jan 15 01:58:08 JST 2002

 上記の結果からは「LINEFAILがOK」となっていることが分かる。これはコンセントからの電源で動作していることが確認でき,「BATTSTATがOK」となっていることからはバッテリ状態に問題がないことが分かる。

One Point!

BK 500ではなくSmart-UPSシリーズを利用している場合には,さらにバッテリの充電状態やバッテリ残量,入出力電圧などより細かい情報まで表示される。

 もし上記のような結果が得られないのであれば,シリアルケーブルの接続やapcupsd.confファイルの設定に問題があるだろう。

 このような場合には,apcupsdの実行を止めた後で次のようにapctestコマンドを実行するとよいだろう。apctestコマンドはメニュー形式でUPSの動作テストをできるため,正しく動作しない問題点を追求することができる。

One Point!

apctestコマンドは,直接シリアルポートに問い合わせを行う。そのため,apcupsdを実行したままではapcupsdがシリアルポートを占有しているため共有違反から正しく実行されない。


# /etc/rc.d/init.d/apcupsd stop
Shutting down UPS monitoring:[OK]
# /sbin/apctest
2002-01-15 02:03:55 apctest 3.8.5 (4 January 2002) redhat
Checking configuration ...
sharenet.type = DISABLE
cable.type = APC_940_0020C (simple)
mode.type = BK
Setting up serial port ...
Creating serial port lock file ...
Doing prep_serial() ...
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing dumb UPSes (ones that usesignalling rather than commands.
Most tests enter a loop polling every second for 10 seconds.

1) Test 1 - normal mode
2) Test 2 - no cable
3) Test 3 - no power
4) Test 4 - low battery (requires test 3 first)
5) Test 5 - battery exhausted
6) Test 6 - kill UPS power
7) Test 7 - run tests 1 through 5
8) Guess which is the appropriate cable
9) Quit

Select test number:


疑似シャットダウンテスト

 APCUPSDが正しく動作したと仮定し,次に疑似シャットダウンテストを行ってみよう。といっても話は簡単であり,apcupsdが起動している状態でUPSの電源をコンセントから抜くだけだ。これで擬似的な停電状態となることから,バッテリが動作し始める。この際,UPSの警告音が鳴るとともに(警告音が鳴るかどうかはUPSの機種や設定に依存する),画面に次のようなメッセージが表示されるはずだ。

Power failure on UPS UPS_IDEN. Running on batteries.


One Point!

上記のメッセージ中のUPS_IDENというのは、UPSの識別名だ。この識別名は、apcupsd.confファイルのUPSNAME項目で変更できる。分かりやすい名前に変更しておくとよいだろう。

 このメッセージが表示されると共に,rootユーザー宛にメールが届く。rootユーザー宛に届くメールには,次のようにapcaccessコマンドの実行結果によるUPS状態が記載されている。

foo.example.co.jp Power Failure !!!

DATE : Tue Jan 15 05:13:57 JST 2002
HOSTNAME : foo.example.co.jp
RELEASE: 3.8.5
UPSNAME: UPS_IDEN
CABLE: APC Cable 940-0020C
MODEL: BackUPS
UPSMODE: Stand Alone
STARTTIME: Tue Jan 15 02:14:26 JST 2002
LINEFAIL : DOWN
BATTSTAT : RUNNING
STATFLAG : 0x010 Status Flag
END APC: Tue Jan 15 05:13:57 JST 2002

 ここでは「LINEFAILがDOWN」となっており,コンセントからの電源が遮断されていること,「BATTSTATがRUNNING」となっておりバッテリ電源が供給されていることが分かる。

 このメッセージを確認したならば,再度UPSの電源ケーブルをコンセントに差してみよう。UPSはバッテリ動作から通常動作に戻り,次のようなメッセージが表示される。この際にもrootユーザー宛にメールが届く。

Power has returned on UPS UPS UPS_IDEN...

 なお,apcupsdの活動状態は/var/log/apcupsd.eventsファイルにも記録されるので,そちらも確認しておこう。

停電時のシャットダウン処理

 擬似的な停電を経験してみたものの,実際の停電がもっと長く続いた場合にはどうなるのだろうか。この際には,前述したようにAPCUPSDでは,apcupsd.confファイルのBATERRYLEVEL,MINUTES,TIMEOUT,いずれかの設定値が条件を満たした時,シャットダウン動作をするよう設定しておけばよい。BK 500の場合には,TIMEOUTしか有効でないため,事実上バッテリ動作となってからTIMEOUTに設定した秒数が経過した際,シャットダウンするタイミングとなる。

 ここでテストとして,apcupsd.confファイルのTIMEOUTの値を30などに変更し,apcupsdを再起動してみた。その後,UPSの電源をコンセントから抜いて30秒間待てば自動的にシャットダウンが行われるはずだ。

 シャットダウン動作が正しく行われることを確認したならば,apcupsd.confのTIMEOUTの値を300(5分)や600(10分)など,実際にバッテリ供給が持続できそうな値に戻しておこう。なお前述したように,バッテリで何秒間動作することができるのかは環境によって異なる。ただし,Smart-UPSシリーズならば消費電流から予測残り時間が通知されるため,MINUTESの設定項目で簡単に設定できる。ここで挙げているBK 500の場合には,TIMEOUTしか設定できないことから,おおよその目安で設定する。

 このTIMEOUTで指定した秒数よりも先にバッテリ供給が停止してしまえば,コンピュータは正しいシャットダウン手順を追うことができなくなる。これではUPSを使わない場合と何ら変わりなくなってしまう。よって,TIMEOUTの設定項目は実際の消費電力とバッテリ容量に合わせ,適した値を設定しなければならない。

 ところでapcupsdは,バッテリの状態が変化した時に/etc/apcupsd/apccontrolスクリプトを実行することで,シャットダウン動作などを実現している。前述したようにバッテリ動作状態になった場合,画面にメッセージが表示されたり,管理者(root)宛てにメールが届けられたりするのはapccontrolスクリプトの実行結果だ。そのため,apccontrolスクリプトを修正すれば電源状態が変化した場合の動作をカスタマイズ可能である。

One Point!

apccontrolスクリプトは,さらに同ディレクトリ内にあるchangeme,comfailure,commok,mainsback,onbatteryの各スクリプトを呼び出すことで処理を実現している。これらの各スクリプトを変更することでもカスタマイズが可能だ。

通電後の自動起動

 停電が起こり無事シャットダウンした場合,その後停電が終わってコンセントから通常通り電源供給が始まったら,どうなるのだろうか。

 この場合,自動的にコンピュータが起動してくれるとありがたいが,設定によっては多くの場合このようにはならない。その理由は,ATX電源を使ったコンピュータでは,通電されてもコンピュータの電源がオンにはならないためだ。つまり電気的な電源スイッチであるため,スイッチを押した動作があって始めて起動される。

 多くのマザーボードには,電源がオフになり,その後通電した際,自動的にコンピュータの電源をオンにするようBIOS設定項目が用意されている。これを有効にすれば,この問題も解決できるだろう。注意をしておこう。


前のページ | 1 2 3 4 | 次のページ