突然の電源断はOSにとって最もシステム自体にダメージを与える現象です。
最悪の場合システムが起動しなくなるばかりでなく、大事なファイルが壊れてしまう可能性があります。
無停電電源装置を利用すれば搭載されているバッテリによって通電ができ、停電時でもしばらくの間コンピュータを動かしておけます。
しかし、バッテリにも限界があり数時間の停電の場合、バッテリが切れたら上記と同様のことが起きます。
そこで、一般的にはUPSと利用するコンピュータとをシリアルケーブルなどで接続し、コンピュータ側でUPSの電源状態を知る機能が必要です。
そうすれば、コンピュータ側で、shutdownコマンドを発行し、正常に終了することが可能になります。
ここでは、一番利用されているAPC社のUPSを監視するApcupsdについて説明します。
|
 |
|
| インストール |
インストールは、rpmパッケージで行います。
入手先は
http://www.apcupsd.com/index.html
から入手できます。
|
| rpm -i apcupsd-3.8.5-1.i386.RH7.1.rpm |
|
| インストール後は,以下に示すファイル群がコピーされる。 |
| /etc/apcupsd |
デレクトリ APCUPSDの各種設定ファイル |
| /sbin/apcaccess |
apcupsdからUPSの状態を取得し,そのステータスを表示するプログラム |
| /sbin/apcnisd |
ネットワーク経由でほかのコンピュータにUPSの状態を伝えるデーモン |
| /etc/rc.d/init.d/apcupsd |
APCUPSDを起動したり停止したりするためのスクリプト |
| /sbin/apctest |
APCUPSDの動作を確認するためのバイナリプログラム |
| /sbin/apcupsd |
APCUPSDの本体。デーモンとして起動させる |
| /usr/share/doc/apcupsd-3.8.5 |
APCUPSDのドキュメント類 |
|
|
| APCUPSDの設定 |
設定ファイルは以下の位置に作成されます。
/etc/apcupsd/apcupsd.conf
このファイルをviなどで編集することにより環境を変更することができます。
|
| ■主なディレクティブ■ |
| UPSCABLE |
APCの製品に添付された利用するケーブルを指定します。
(例:940-0024C) |
| UPSTYPE |
UPSの型番を指定します。(例:smartups) |
| DEVICE |
シリアルポートのデバイス名(例:/dev/ttyS0) |
| LOCKFILE |
ロックファイルのパス名(例:/var/lock) |
| BATTERYLEVEL |
シャットダウンタイミングのバッテリ残率(%) |
| MINUTES |
バッテリ残率に達してシャットダウンを起動するまでの時間(分) |
| /usr/share/doc/apcupsd-3.8.5 |
APCUPSDのドキュメント類 |
|
|
| 自動起動 |
次のコマンドで正常に起動しているか確認します。
|
| /etc/rc.d/init.d/apcupsd start |
|
APCUPSDの動作テスト
|
| /sbin/apctest |
正しく動作しない場合、その原因を調べるためのコマンド、ケーブルを抜いて試したりするための原因究明が主目的となっている。 |
| /sbin/apcaccess |
apcupsdに現在のUPSの状態を問い合わせ、現在の状態を調べるコマンドです。 |
|
正常に動作したら自動起動にします。
|
| chkconfig --level 35 apcupsd on |
|
|
| ネットワーク化 |
複数のコンピュータでUPS1台を共有する場合、
シリアルケーブルで繋いだコンピュータしか電源断を検出できません。
しかしapcupsdはネットワークを通じて情報をリレーする機能も備えています。
この場合、シリアルケーブルと直接繋いだコンピュータがマスターとして動作し、
それ以外のコンピュータはスレーブとして動作します。
スレーブ動作するコンピュータは複数存在できます。
|
 |
環境ファイルを/etc/apcupsd/apcupsd.confを以下のように設定する。
|
| マスタ/スレーブ共通 |
| UPSMODE net |
ネットワーク機能を有効 |
| NETACCESS true |
ネットワークアクセスを有効 |
| NETTIME 60 |
マスタとスレーブ間でデータを転送する間隔(秒) |
| NETPORT 6666 |
TCPポート6666を利用する。 |
|
マスタ側の設定 |
| UPSCLASS netmaster |
マスタの場合 |
| SLAVE 192.168.1.12 |
スレーブのIPアドレスを指定します。
スレーブが複数ある場合、複数行指定します。 |
| NETTIME 60 |
マスタとスレーブ間でデータを転送する間隔(秒) |
| NETPORT 6666 |
TCPポート6666を利用する。 |
|
スレーブ側の設定 |
| UPSCLASS netslave |
スレーブの場合 |
| UPSCABLE ether |
スレーブ側ではシリアルケーブルではなくTCP経由でデータを取得することになるので,UPSケーブルの種類を示すUPSCABLEの値をetherと記述変更する。 |
| MASTER 192.168.1.1 |
MASTER項目にマスタとなるホストのIPアドレスを指定する。 |
| USERMAGIC MyClient |
適当な17文字以内の識別子を付ける。この識別子は,スレーブを区別する名前になる。 |
|
|
動作確認には、/sbin/apcaccess status
コマンドで確認します。
|
| Webで状態管理を行う |
apcupsdにはWeb用管理ツールも用意されています。
これを利用すれば、遠隔地からブラウザを通してUPSの状態が監視できます。
cgiプログラム群は、/etc/apcupsd/cgi/ に格納されています。
このディレクトリをapacheのエリアスで定義して、httpで参照できるようにするか
もしくは、apacheのドキュメントディレクトリ配下にコピーするかして利用できます。
|
| cp /etc/apcupsd/cgi/* /usr/local/apache/cgi-bin/ |
|
上記例ではブラウザより以下のように起動します。
|
| http://サーバアドレス/cgi-bin/multimon.cgi |
|
 |
|
|