お知らせ!! 「jpcmoh.myds.me」から「mohlog.com」へ変更しました
PR

Synology NASとLinux(Ubuntu)PCを1台のUPS(無停電電源)に連動させる

アイキャッチups-linux Linuxをつかおう!!
記事内に広告が含まれています。
スポンサーリンク

はじめに

本記事は、こちらの記事で、1台のUPSに2台のSynology NASを接続した状態からスタートしています。

ここにLinux(Ubuntu)をインストールしたPC(以下Linux PC)を追加して、連動させます。
接続を図示すると、下図のようになります。赤のLinux PCが今回追加したPCです。

1台のUPSに2台のNASと1台のPCをつなぐ接続図
スポンサーリンク

UPS Master側 の設定

接続許可

まずはUPS Masterである、Synology NAS DS420+で、追加するLinux PCの接続を許可しておきます。

Synology DSM

Synology NAS DS420+のDSM(DiskStation Manager)から、「コントロールパネル」を開きます。

DSM ハードウェアと電源

コントロールパネルから、「ハードウェアと電源」を開きます。

DSM 許可されたSynology NAS デバイス

UPS」タブを選択し、
(「ネットワークUPSサーバーを有効にする」にチェックを入れて)
許可された Synology NAS デバイス」をクリック

DSM IPアドレスの入力

Linux PCのIPアドレスを入力
今回の場合、192.168.9.199

OK」をクリック

UPS設定おわり

最後に、「適用」をクリックして終了です。

UPS設定の確認

UPSの設定を、Synology NASにSSHで接続して確認します。
/etc/ups/upsmon.confのなかにある下記記載を確認。赤字が必要な情報です。(環境によりかわると思います)

/etc/ups/upsmon.conf

MONITOR ups@localhost 1 monuser <password> master

スポンサーリンク

Linux PC側

NOTE

Linuxは、Ubuntu Server 24.04.2LTSを使用しています。

Nut インストール

以下コマンドで、インストールします。

コマンド:NUT インストール

sudo apt install nut

設定ファイルおよび実行スクリプト編集

設定ファイル:/etc/nut/nut.conf

モードをネットワーククライアントに設定するため、/etc/nut/nut.conf を編集します。

コマンド:/etc/nut/nut.conf を編集

sudo nano /etc/nut/nut.conf

変更箇所

旧:MODE=none
新:MODE=netclient

設定ファイル:/etc/nut/upsmon.conf

/etc/nut/upsmon.confを編集します。

コマンド:/etc/nut/upsmon.conf を編集

sudo nano /etc/nut/upsmon.conf

追記 118行目あたり

・・・
# Examples:
#
# MONITOR myups@bigserver 1 upswired blah primary
# MONITOR su700@server.example.com 1 monuser secretpass secondary
# MONITOR myups@localhost 1 monuser pass primary # (or secondary)  <-118行目あたり
MONITOR ups@192.168.9.1 1 monuser <password> slave
# /etc/ups/upsmon.confで調べた内容から
#「localhost」 => 「192.168.9.1」・・・UPS Masterである、Synology NASのIPアドレスへ
# 「master」 => 「slave」へ変更
# したものを追記します。

・・・

確認箇所 136行目あたりと、160行目あたり

#青字であることを確認
・・・
# for more information and ideas on how to use this feature.
MINSUPPLIES 1
・・・

・・・
# SHUTDOWNCMD "C:\PROGRA~1\SOMECO~1.bat -first_arg -second_arg"
SHUTDOWNCMD "/sbin/shutdown -h +0"
・・・

追記 219行目あたり

#赤字を追記
・・・
# Example:
# NOTIFYCMD /bin/notifyme
NOTIFYCMD /sbin/upssched
・・・

確認箇所 228、241、258、277、297行目あたり

#青字であることを確認
・・・
# it too high or it may miss certain short-lived power events.
POLLFREQ 5
・・・
# The default is 5 seconds for both this and POLLFREQ.
POLLFREQALERT 5
・・・
# to critical and back between polls by the primary.
HOSTSYNC 15
・・・
# POLLFREQ values, and multiply by 3.
DEADTIME 15
・・・
# For Unix/Linux systems the legacy default is:
# POWERDOWNFLAG /etc/killpower
POWERDOWNFLAG "/etc/killpower"
・・・

追記 366行目あたり

#赤字を追記
・・・
# If you use IGNORE, don't use any other flags on the same line.
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC

・・・

最後、赤字で追加した3行ですが、意味は、UPS masterから送られてくるUPSのそれぞれのステータスで、

  • ONLINE:正常運転時のステータス
  • ONBATT:バッテリー運転時のステータス
  • LOWBATT:バッテリーが残り僅かになった時のステータス
  • SYSLOG:syslogにログとして書き込みます
  • EXEC:219行目に設定したNOTIFYCMDが実行されます

設定ファイル:/etc/nut/upssched.confの編集

前項で設定した、NOTIFYCMD /sbin/upssched の設定ファイル/etc/nut/upssched.confを編集します。

コマンド:/etc/nut/upssched.conf を編集

sudo nano /etc/nut/upssched.conf

/etc/nut/upssched.conf

#赤字を追記、青字を確認
# 17行めあたり
CMDSCRIPT /bin/upssched-cmd

#44行めあたり
# PIPEFN /run/nut/upssched/upssched.pipe
PIPEFN /var/run/nut/upssched.pipe

#59行めあたり
# LOCKFN /run/nut/upssched/upssched.lock
LOCKFN /var/run/nut/upssched/upssched.lock

#95行めあたり
AT ONBATT * START-TIMER upsgone 60

#113行めあたり
AT ONLINE * CANCEL-TIMER upsgone

#126行めあたり
AT LOWBATT * EXECUTE lowbatt

・・・

最後の3行ですが、以下の書式です。
AT <ステータス> <ホスト> <スクリプトに対して、どう実行するかの指定> <スクリプトに渡す引数> <タイマー秒数>
となります。

AT ONBATT * START-TIMER upsgone 60を例にとると

  1. ONBATT :バッテリーのステータスになったら
  2. *:全てのホストで
  3. START-TIMER :スクリプト実行までのタイマーを開始
  4. 60 :タイマーの時間は60秒
  5. upsgone :スクリプトにupsgone引数を渡し実行

となります。

ちなみにスクリプトに対する実行タイプは、

  • START-TIMER:スクリプト実行までのタイマーを開始する
  • CANCEL-TIMER:タイマーをキャンセルする
  • EXECUTE:すぐにスクリプトを実行する(START-TIMERで、タイマー秒数に0を指定したのと同じ)

となってます。

スクリプト:/bin/upssched-cmdの編集

NOTIFYCMDとして設定した、実行スクリプトを編集します。

コマンド:/bin/upssched-cmd を編集

sudo nano /bin/upssched-cmd

/bin/upssched-cmd

# 赤字を追記
case $1 in
onbattwarn)
# Send a notification mail
echo "The UPS has been on battery for awhile" \
| mail -s"UPS monitor" bofh@pager.example.com
# Create a flag-file on the filesystem, for your own processing
/usr/bin/touch /some/path/ups-on-battery
;;
ups-back-on-power)
# Delete the flag-file on the filesystem
/bin/rm -f /some/path/ups-on-battery
;;
upsgone)
logger -t upssched-cmd "The communication with UPS has been gone for awhile"
# シャットダウンコマンドupsmon -c fsd追加
upsmon -c fsd

;;
# ローバッテリーの場合を追加
lowbatt)
logger -t upssched-cmd "UPS became lowbattery."
upsmon -c fsd
;;

*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac

デフォルトでは、引数「upsgone」が送られてきても、ログに記録するだけで、シャットダウンするようになっていないので、コマンドを追加します。
また、引数「lowbatt」の場合がないので、追加します。「upsgone」とは、書き込まれるログの違いのみです。
ちなみに、引数「cancel」の場合は、「*)」が実行されます。ここは、ログに記録するだけです。

Nutサービスの再起動

最後に、Nutサービスを再起動します。

コマンド:Nutサービスを再起動

sudo systemctl restart nut-client

参考:Nutステータスの確認

コマンド:Nutステータスの確認

sudo systemctl status nut-client
または
sudo systemctl status nut-monitor

結果

nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller

Loaded: loaded (/usr/lib/systemd/system/nut-monitor.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-03-22 14:10:26 JST; 3s ago
Process: 1677 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf (c>
Main PID: 1679 (upsmon)
Tasks: 2 (limit: 9130)
Memory: 860.0K (peak: 1.5M)
CPU: 18ms
CGroup: /system.slice/nut-monitor.service
├─1679 /lib/nut/upsmon -F
└─1681 /lib/nut/upsmon -F
・・・

スポンサーリンク

確認

UPSのコンセントをぬいて、確認します。
今回は、Linux PC側は、30秒後にシャットダウンするように設定してますので、
30秒間は起動を続け、
そのあとシャットダウンすることを確認します。

また、UPSのコンセントをぬいてから、数秒後に再びUPSのコンセントを挿した場合、Linux PCはシャットダウンすることがないことを確認します。

スポンサーリンク

まとめ

UPS Masterへの接続をすれば、その他はデフォルト設定で動くのでは、と思っていたのですが、全然ちがいました。
設定後は、ちゃんと動作するか確認することが大事ですね。

RAID1へのUbuntu Serverインストールとあわせて、これでサーバーとして実運用するための基本的な設定はできたと思います。
以降、Webサーバーとかファイルサーバーとか立ち上げてみようかと思っています。

スポンサーリンク

関連記事

RAID1でUbuntu Server

ファイルサーバーやWebサーバーを構築するなら、Synology NASを使うのが簡単

Linuxサーバーを安く作るなら、安価なミニPCが最適

コメント

タイトルとURLをコピーしました