はじめに
TS-419Pは(当然ですが)UPSをサポートしています。しかし、サポートしているのはUSBでの直接接続のみです。telnetでログインして、調べてみるとapcupsdはインストールされているようですが、動いているのは別のUPS管理システムのようです。
apcupsdには同一のUPSにつながった複数の機器がUPSの状態をネットワーク経由で共有できる機構があります。
今回は2台のTS-419Pを同一のUPSに繋ごうと思っていたので、TS-419PのUPS管理システムをデフォルトのものではなく、apcupsdに切り替えようと思いました。インストールされていたものはちょっと古いバージョンでしたが、「まぁ、簡単に使えるようになるならそれでいいや。」と思い、一台のTS-419Pのapcupsdをネットワーク経由でUPSの状態を監視する設定にして起動したところ、エラーメッセージが表示され、その機能が組み込まれていないバイナリであることが判明しました。
ということで、apcupsdの新規導入から始まる長い道のりが始まりました....
目標
今回の最終目標は以下のすべてを満たすことです。
apcupsdの導入から設定まで
apcupsdの導入から設定まではQNAP Community Forumのこのトピックが大変参考になりました。改めて手順を簡単にまとめると次のようになります。
- WebインタフェースでadminとしてNASにログインし、「Applications >> QPKG Plugins」 へ進み、「Get QPKG」ボタンをクリックする。
- 新規ウィンドウが立ち上がるので、「Optware IPKG (Itsy Package Management System)」を選択する。一番下で持っているNASに適したアーキテクチャのパッケージを選択し、ダウンロードし、解凍する。
- Webインタフェースの「Applications >> QPKG Plugins」で「INSTALLATION」タブを選択し、指示に従い解凍したファイルを選択のうえで「INSTALL」ボタンを押す。
- インストールが完了したら、「QPKG INSTALLED」タブをを選択し、「Optware」アイコンがあることを確認し、そのアイコンを押す。
- インストール済みのOptwareの情報を示すウィンドウが開くので、「ENABLE」ボタンを押し、Optwareを有効にする。ここから先はコンソールでの作業です。
- telnetでadminとしてNASにログインする。
- まずはパッケージの情報を最新にする。
[/opt] # ipkg update- apcupsdを導入する
[/opt] # ipkg install apcupsd- 詳細は省略しますが、apcupsdのマニュアルに従って、サーバー側とクライアント側を適切に設定する(特に難しいところはないはず)。
- ここまで来たら、サーバー側とクライアント側をそれぞれ立ち上げ、apcaccessコマンドを使ってUPSの情報が正しく取得できているかそれぞれのNASで確認しましょう。
[/opt] # apcaccess status
TS-419PのデフォルトUPS管理システムの無効化とapcupsdの自動起動
システム起動時に細工をする仕掛けとして、autorun.shというのがここで紹介されていたので、この仕掛けをつかってデフォルトUPS管理システムの無効化とapcupsdの自動起動を達成しようと試行錯誤したのですが、autorun.shではデフォルトUPS管理システムの無効化が上手く出来ないという結論に至り、このアプローチは諦めました。しかし、よく考えてみるともっと単純で簡単な方法があることに気づきました。それは、Optwareの起動スクリプト(/opt/Optware.sh)を利用することです。このスクリプトはシステム起動後、/optのマウントが終わった後に呼び出されるようです。で、最終的には次のようにすることでうまくいきました。
- デフォルトUPS管理システムの無効化とapcupsdの起動を行うシェルスクリプト(run_apcupsd.sh)を作成。
[/opt] # cat run_apcupsd.sh
#!/bin/sh
/etc/init.d/ups.sh stop
/sbin/daemon_mgr upsutil stop /usr/sbin/upsutil
/opt/sbin/apcupsd
exit 0
[/opt] #- このスクリプトを起動するように、/opt/Optware.shのstartセクションの最後に追加。
$ diff Optware.sh.org Optware.sh
51a52
> /opt/run_apcupsd.sh
おまけのTips
ipkgで導入するapcupsdに付属するapccontrolスクリプトは内部でSHUTDOWNコマンドとして/sbin/shutdownを呼び出しています。しかし、QNAP TS-419Pでは/sbin/shutdownコマンドが存在せず、システム停止コマンドとしては/sbin/poweroffというのを使っています。ということで、/opt/etc/apcupsd/apccontrolで定義されている変数SHUTDOWNを/sbin/poweroffを参照するように変更しましょう。
最後に
apcupsdはLinux/*BSDの他、MacOS XやWindowsもサポートしておりバイナリが配布されています。今回の設定のおかげで複数台のQNAP Turbo NASを一台のUPSに繋げて制御できるようになった訳ですが、apcupsdを利用することで、一台のUPSに繋げた他のマシンも制御可能にできます。実際、私は同じUPSにapcupsdを導入したiMacを接続しています。