低価格 UPS 製品、CLASSIC PRO シリーズで CentOS 5.x マシンを保護するエントリーの続き。我が家で導入した UPS500LX を始めとした同シリーズに付属する Linux 用監視ツール (電源管理ソフト) UPSilon for UNIX のデフォルトでは、各プラットフォームごとに OS をシャットダウンするコマンドが指定されているだけだが、これを自作スクリプトに変更することで、電源異常発生時のシャットダウン処理をカスタマイズできる。
Mega System Technologies 社の製品ページからダウンロードできる PDF マニュアルによると、電源異常発生時の処理は、"/etc/upsilon/shutdown.ini" に書かれたコマンドが実行されるだけの単純な仕組みになっている。Linux 環境のデフォルト設定 "/sbin/halt" (オプションなし) は OS が停止してもマシンの電源が切れないので、少々気持ち悪い。
単にマシンの電源を落とすだけなら "shutdown.ini" の halt に "-p" オプションを付加するだけでいいが、UPS で電源を保護しつつ監視用ケーブルが接続されていなかったり、同じく電源を保護しつつ監視ツールをインストールできないマシンに対してシャットダウンを指示する等、もう少し複雑な処理をする場合は、この指定を任意のスクリプトに変更する。前述のマニュアルには "This file contains only one line of command." とあるので、"shutdown.ini" には任意のスクリプトへのパスを 1行だけ書くようにする。
我が家では電力負荷分散と騒音対策のため、もう 1台の物理サーバー VMware ESXi 4.0 マシンは UPS に接続したファイルサーバーとは少し離れた場所に置いてあり、両方の電源を保護するには UPS が 2台必要になる。今回導入した UPS はひとまず 1台だけで ESXi は保護されていないので、とりあえず "shutdown.ini" で指定したスクリプトに開始時刻をログファイルに記録して
halt -p を実行する処理だけ書いて UPSilon を再起動し、電源異常発生時に意図通りに動作することを確認した。ちなみに電源異常発生時は甲高い Beep 音が鳴り続けるので、夜間の動作テストはお勧めしない。
"shutdown.ini" をカスタマイズする場合は、前述の設定ツールの "UPS Turn Off Delay Time" で設定する UPS 停止遅延時間に気を付けた方がいい。これは OS のシャットダウン処理が開始されてからの時間のことで、シャットダウン (UPS の負荷低下) を見届けてからの時間ではない。自作スクリプトで自由自在だぜと調子に乗って時間のかかる処理をしていると、この設定によっては途中で切られてしまう可能性があるので、要注意。