木曜日, 2月 12, 2009

Linux と NS4300N の電源制御連携

[概要]
Linux マシンとNS4300Nとで、APC製UPSを共有する設定を説明しています。
[詳細]
NS4300NはAPC社のUPSを使用して停電時に安全にシャットダウンをする機能がついています。
しかしながら、PCのストレージとしてNASを使用する場合は、サーバをシャットダウンしてからNASをシャットダウンしないと、PC側のデータが壊れたり失われたりする問題が起こります。
そのためには、両者を連携させてシャットダウンを行う必要があります。

さて、NS4300Nの電源制御は、はapcupsdを使用しています。このapcupsdはNIS Serverとして稼動されることが可能です。Clientとしては動作しません。
そこで、Linux マシンにもapcupsdをセットアップして、NS4300Nをサーバ、Linux PCをクライアントして使用することで連携稼動させることが出来ます。

  1. NS4300N側の設定

    1. NS4300N側の事前準備
      この設定を行うためには、NS4300Nへtelnetでログインする必要があります。
      まず、Promise SmartStar NS4300Nのtelnetを有効にするNS4300N Telnet 再有効化を、参考にNS4300Nのtelnetを使用できるようにしてください。

    2. 設定ファイルの編集
      NS4300N側の設定ファイルは、/etc/apcupsd.confです。(apcupsdのデフォルトである/etc/apcupsd/apcupsd.confではないので注意。)
      sudo vi /etc/apcupsd.conf

      次の行を追記します。

      NETSERVER on
      NISIP 0.0.0.0
      NISPORT 6543

      注意:ネットワークの設定をした以降は、UPSの設定に変更を加えたい場合には必ずこのファイルを編集してください。WEBコンソールから変更を加えると上書きされてネットワークの設定が消されてしまいます。

    3. apcupsdの再起動
      apcupsdを再起動します。
      [root@ns4300n]# /etc/init.d/apcupsd stop
      [root@ns4300n]# /etc/init.d/apcupsd start

    4. 起動の確認
      apcaccessを使用してSTATUSがOnlineであることを確認します。
      [admin@ns4300n]# apcaccess
      APC : 001,033,0825
      DATE : Wed Feb 11 22:10:14 GMT-8 2009
      HOSTNAME : ns4300n
      RELEASE : 3.10.17
      VERSION : 3.10.17 (18 March 2005) debian
      UPSNAME : APCUPS
      CABLE : USB Cable
      MODEL : Back-UPS ES 350
      UPSMODE : Stand Alone
      STARTTIME: Wed Feb 11 08:07:36 GMT-8 2009
      STATUS : ONLINE
      <中略>
      BATTDATE : 2000-00-00
      NOMBATTV : 12.0
      FIRMWARE : 23.B1.D USB FW:B1
      APCMODEL : Back-UPS ES 350
      END APC : Wed Feb 11 22:10:14 GMT-8 2009

      apcupsdのサーバとして動作していることを確認します。
      次のように表示されれば正しく動作しています。

      netstat -tan | grep 6543
      tcp 0 0 0.0.0.0:6543 0.0.0.0:* LISTEN

  2. Linuxマシン側の設定

    1. CentOS, RHELを使用している際の事前準備
      CentOS, RHELは、apcupsdを提供していいないので、rpmrepo projectにあるパッケージを使用します。
      ここから、パッケージを入手してyumのリポジトリにRPMforgeを追加します。

    2. apcupsdのインストール
      • CentOS, RHELを使用している際のインストール
        yumを利用してインストールします。
        yum install apcupsd

      • debian, Ubuntuを使用している際のインストール
        aptitude を使用してインストールします。
        aptitude install apcupsd

    3. 設定ファイルの編集
      Linux側の設定ファイルは、/etc/apcupsd/apcupsd.confです。
      sudo vi /etc/apcupsd.conf

      次のように該当する行を変更、または追記します。
      UPSCABLE ether
      UPSTYPE net
      DEVICE NS4300NのIPアドレス:6543


      なお、MINUTESの値は、NS4300Nで設定したMINUTESの値 + Linux PCのシャットダウンに必要な時間を設定してください。
      例えば、NS4300NのMINUTESの値が3分、Linux PCのシャットダウンにかかる時間が2分の場合は、3+2=5(分)と設定します。

    4. apcupsdの再起動
      apcupsdを再起動します。
      [root@linux]# /etc/init.d/apcupsd stop
      [root@linux]# /etc/init.d/apcupsd start

    5. 起動の確認
      apcaccessを使用してSTATUSがSlaveで動作していることを確認します。
      [root@linux]# apcaccess
      APC : 001,032,0836
      DATE : Wed Feb 11 22:24:23 PST 2009
      HOSTNAME : linux
      RELEASE : 3.14.3
      VERSION : 3.14.3 (20 January 2008) redhat
      UPSNAME : APCUPS
      CABLE : Ethernet Link
      MODEL : Back-UPS ES 350
      UPSMODE : Stand Alone
      STARTTIME: Wed Feb 11 22:24:21 PST 2009
      MASTERUPD: Wed Feb 11 22:24:23 PST 2009
      MASTER : 192.168.1.8:6543
      STATUS : ONLINE NOBATT SLAVE

      <中略>
      STATFILE /var/log/apcupsd.status
      LOGSTATS off
      DATATIME 0
      UPSNAME ES350-2

以上で設定は終わりです。
実際にUPSのコンセントを抜いて動作確認をしてみてください。