[PR] 本記事にはプロモーションが含まれています。

【DS224+】UPS を入れて、停電のとき NAS・自宅サーバー・メインPC を止める|Synology は止まる合図(FSD)を送らなかった

UPS につながった NAS・小さなサーバー・パソコンが、停電の夜に順に電源を落としていくイラスト DS224+

【2026年11月8日時点の情報です】

自宅サーバー(KVM のホスト)と NAS(Synology DS224+)、メインPC を、UPS(無停電電源装置)につなぎました。停電したら、電池で動いているあいだに3台を順にきちんと止めるのがねらいです。

きっかけは、自宅サーバーの BIOS の更新でした。書き換えの途中で電気が切れると起動できなくなるおそれがあるので、UPS を入れるまで見送っていました。

この記事では、UPS を選んでつなぎ、NAS・自宅サーバー・メインPC を設定し、実際にコンセントを抜いて試したところまでを書きます。試してみると、Synology の NAS は「止まって」の合図(FSD)を送らないことが分かり、メインPC の止め方を変えました。

停電のあとに自動で起こす設定(BIOS の電源の設定、Wake-on-LAN)は、「停電のあと、自動で起きるようにする」にまとめています。

登場するホスト名、ユーザー名、IP アドレスなどは、セキュリティのため実際とは異なる架空のものに置き換えています。

No.機械この記事での名前IP アドレス
1NAS(Synology DS224+)NAS192.168.0.30
2自宅サーバー(KVM のホスト、AlmaLinux 9)kvmhost192.168.0.20
3ブログを動かしている仮想マシンmyserver―
4メインPC(Windows 11)メインPC192.168.0.40

場面1:UPS を選んで、つなぐ

選んだのは CyberPower の CPJ500(500VA/300W、コンセント6口)です。停電のときも正弦波で電気を出し、USB ケーブルで NAS につなげます。

買う前に、Synology の互換性リストで、DS224+ の UPS の一覧に CPJ500 が載っているのを確かめました(印は「Vendor Recommended」。UPS のメーカーの側がつながることを確かめたもの)。

つなぐもの

No.つなぐもの理由
1NAS(DS224+)UPS と USB でつなぎ、UPS を見張る親になる
2自宅サーバー(kvmhost)NAS の知らせで止まる
3スイッチングハブ停電のあいだも、3台を LAN でつないでおく
4メインPCNAS の知らせで止まる
5メインPC のモニター停電のとき、画面で様子を見られる

ルーターは、置き場所が離れているのでつないでいません。NAS からの知らせは、3台をつないでいるスイッチングハブを通るので、ルーターが止まっても届きます。

親と子

UPS と USB でつながるのは1台だけなので、NAS を親にしました。NAS の「ネットワーク UPS サーバー」が、LAN の中のほかの機械に UPS の様子を知らせます。この知らせ方は、Linux の UPS の道具 NUT(Network UPS Tools)と同じなので、自宅サーバーには NUT、メインPC には NUT と話せる Windows のソフトを入れます。

No.機械役目入れるもの
1NAS親(UPS を見張って知らせる)DSM の UPS の設定
2自宅サーバー子(知らせを受けて止まる)nut-client
3メインPC子(知らせを受けて止まる)WinNUT-Client

場面2:NAS(DSM)で UPS を見張り、ほかの機械に知らせる

UPS と NAS を USB でつなぎ、DSM の「コントロールパネル」→「ハードウェアと電源」→「UPS」のタブを開きます。「UPS サポートを有効にする」に印を付け、種類は「USB UPS」にしました。

「デバイス情報」を開くと、製造元 CPS、モデル CPJ500、ステータス「接続完了」、バッテリー充電 100% と出ました。NAS が USB で UPS を見分けられています。

DSM の UPS のデバイス情報に、製造元 CPS、モデル CPJ500、接続完了と出ている画面

残りの項目は、次のようにしました。

No.項目設定理由
1スタンバイ モードに入るまで時間のカスタマイズ:5分5分より短い停電は、電池で乗り切る。5分を超えたら止め始める
2システムがスタンバイ モードに入ったときに UPS をシャットダウンする印を付ける全部が止まったあと、UPS の電気も止める
3ネットワーク UPS サーバーを有効にする印を付ける自宅サーバーとメインPC に、LAN で UPS の様子を知らせる
4許可された Synology NAS デバイス192.168.0.20(kvmhost)、192.168.0.40(メインPC)知らせを聞きに来てよい相手。ブログの仮想マシンは kvmhost の中にあるので、登録しない
DSM の UPS のタブで、5分でスタンバイ、UPS をシャットダウン、ネットワーク UPS サーバーに印を付けた画面

Synology のネットワーク UPS サーバーにつなぐときは、UPS の名前は ups、ユーザー名は monuser、パスワードは secret と決まっています。変えられないので、許可するデバイスを LAN の中の2台だけにしておきます。

場面3:自宅サーバーに NUT を入れて、NAS の知らせを受ける

自宅サーバー(kvmhost、AlmaLinux 9)には、NUT の「知らせを受け取る側」の nut-client を入れます。EPEL にあります。設定のファイルを書き換えるので、先に控えを取りました。

Bash
sudo dnf install -y nut-client
rpm -q nut-client
sudo cp -p /etc/ups/upsmon.conf /etc/ups/upsmon.conf.20261104
echo 'MONITOR ups@192.168.0.30 1 monuser secret secondary' | sudo tee -a /etc/ups/upsmon.conf
sudo grep -vE "^\s*#|^\s*$" /etc/ups/upsmon.conf
upsc ups@192.168.0.30 2>&1 | grep -E "^(device.model|ups.status|battery.charge|battery.runtime|ups.load)"
  • sudo dnf install -y nut-client:
    NUT の知らせを受け取る側を入れる
  • rpm -q nut-client:
    入った版を出す
  • sudo cp -p /etc/ups/upsmon.conf /etc/ups/upsmon.conf.20261104:
    設定のファイルの控えを、日付つきで取る
  • MONITOR ups@192.168.0.30 1 monuser secret secondary:
    NAS の UPS(名前 ups)を見張る。1 はこの UPS から電気が来ている電源の数、monuser・secret は Synology の決まりのユーザー名とパスワード、secondary は知らせを受け取る側という意味
  • sudo tee -a /etc/ups/upsmon.conf:
    その1行を、設定のファイルの最後に足す
  • sudo grep -vE "^\s*#|^\s*$" /etc/ups/upsmon.conf:
    説明の行(#)と空の行を除いて、効いている設定だけを出す
  • upsc ups@192.168.0.30 2>&1 | grep -E “…”:
    NAS に、UPS の型番・状態・電池・持つ時間・使っている割合を聞く
Plaintext
nut-client-2.8.2-2.el9.x86_64
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG "/etc/killpower"
OFFDURATION 30
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
MONITOR ups@192.168.0.30 1 monuser secret secondary
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 20
battery.runtime: 3875
battery.runtime.low: 300
device.model: CPJ500
ups.load: 17
ups.status: OL

ups.status: OL は、UPS に壁から電気が来ている(オンライン)という意味です。電池は 100%、今の使い方は UPS の力の17%で、電池だけで約65分(3875秒)持つ見込みと出ました。

止まれと言われたときのコマンド SHUTDOWNCMD "/sbin/shutdown -h +0" は、もとから設定のファイルに入っていました。私は最初、これも一緒に足してしまい、同じ行が2つになったので、足したほうを消しました。

起動のたびに動くようにする

見張り役 nut-monitor は、NUT のまとまり nut.target の下に登録されます。nut-monitor だけを有効にしても、nut.target が有効でないと、起動のときに動きません。両方を有効にしました。

Bash
sudo systemctl enable --now nut-monitor
sudo systemctl enable nut.target
systemctl is-enabled nut.target nut-monitor
systemctl is-active nut-monitor
sudo journalctl -u nut-monitor --since "1 min ago" --no-pager | grep "UPS:"
  • sudo systemctl enable –now nut-monitor:
    見張り役を今すぐ動かし、起動のたびに動くようにする
  • sudo systemctl enable nut.target:
    NUT のまとまりを、起動のたびに動くようにする
  • systemctl is-enabled nut.target nut-monitor:
    2つとも enabled か
  • systemctl is-active nut-monitor:
    見張り役が今動いているか
  • sudo journalctl -u nut-monitor –since “1 min ago” –no-pager | grep “UPS:”:
    見張り役が NAS の UPS を見張り始めた記録を出す
Plaintext
enabled
enabled
active
11月 04 09:41:08 kvmhost nut-monitor[3113]: UPS: ups@192.168.0.30 (secondary) (power value 1)

止まるときは、libvirt-guests が先にブログの仮想マシン(myserver)をきちんと止めてから、kvmhost の電源が切れます。

場面4:メインPC に WinNUT-Client を入れる

Windows には、NUT と話せる無料のソフト WinNUT-Client を入れました。GitHub の nutdotnet/WinNUT-Client の「Releases」から、入れるファイル(.msi)を落として入れます。

設定は、上のメニューの「Settings」で開く窓にまとまっています。タブが横に並びきらないので、右の「▶」「◀」で切り替えます。

つなぎ先

No.項目入れた値
1NUT Host192.168.0.30(NAS)
2NUT Port3493
3UPS Nameups
4Loginmonuser
5Passwordsecret
6Re-establish connection印を付ける(NAS を起こし直したとき、つなぎ直す)

いつも動いているようにする(Miscellaneous)

No.項目設定理由
1Minimize to Systray印を付ける小さくすると、画面の右下に入る
2Start Minimized印を付ける起動したとき、窓を出さずに右下に入る
3Close to Systray印を付ける窓の × を押しても終わらず、見張りを続ける
4Start with Windows印を付けるサインインしたら、自動で動く
5Create LogFile印を付けるうまく動いたかを、あとで記録で見られる

止め方(Shutdown Options)の最初の設定

最初は、NAS の合図(FSD)で止まるのを主にして、電池の条件は念のための形にしました(あとの試しで、ここを変えることになります)。

No.項目最初の設定
1Shutdown if battery lower than30%
2Shutdown if runtime lower than (sec)300
3Type of StopShutdown
4Delay to Shutdown (sec)15
5Shutdown on Nut’s FSD Signal印を付ける

上のメニューの「Connection」→「Connect」でつなぐと、下の行に「Connection to Nut Host 192.168.0.30:3493 Established」と出て、UPS の様子が見えるようになりました。

WinNUT-Client が NAS につながり、UPS On Line、CPS CPJ500、電池100%、UPS Load 23%、残り39分と出ている画面
No.見たところ読み方
1UPS On Line(緑)UPS に壁から電気が来ている
2Manufacturer:CPS、Name:CPJ500NAS を通して、UPS の様子が見えている
3Battery Charge 100%電池は満タン
4UPS Load 23%(69W)メインPC も動いている今、全部で 69W ほど
5Remaining Time 0:39:35今の使い方で、電池だけで約40分持つ

場面5:コンセントを抜いて、3回試す

設定ができたら、UPS のコンセントを壁から抜いて、本当に止まるかを試しました。ブログも10分ほど止まりますが、見る人の少ない時間なので、そのまま進めました。

抜く前に、kvmhost で UPS と見張り役の様子を見ておきます。

Bash
date +%T
upsc ups@192.168.0.30 2>&1 | grep -E "^(ups.status|battery.charge|battery.runtime)"
systemctl is-active nut-monitor libvirt-guests
  • date +%T:
    今の時刻(あとで記録を見るときの目印)
  • upsc ups@192.168.0.30 2>&1 | grep -E “…”:
    UPS が OL(壁から電気が来ている)で、電池が満タンか
  • systemctl is-active nut-monitor libvirt-guests:
    見張り役と、仮想マシンを先に止める役が、2つとも active か

1回目:止まったが、止まる前の記録が残っていなかった

3台とも止まりました。ところが、起こし直してから止まる前の記録を見ようとすると、kvmhost には前の起動の記録がありませんでした。

Plaintext
Specifying boot ID or boot offset has no effect, no persistent journal was found.

AlmaLinux 9 の初期の設定では、記録(journal)はメモリの中にだけあり、再起動で消えます。止まったときに何が起きたかを調べられないので、記録をディスクに残す形にしました(kvmhost と myserver の両方)。

Bash
ls -ld /var/log/journal
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald
sudo journalctl --disk-usage
  • ls -ld /var/log/journal:
    記録をディスクに残す置き場所があるか(なければメモリの中だけ)
  • sudo mkdir -p /var/log/journal:
    置き場所を作る。これがあると、記録がディスクに残る
  • sudo systemd-tmpfiles –create –prefix /var/log/journal:
    置き場所の持ち主と権限を、決まりどおりに整える
  • sudo systemctl restart systemd-journald:
    記録の係を立ち上げ直して、ディスクに書き始める
  • sudo journalctl –disk-usage:
    記録がどれだけディスクを使っているか
Plaintext
ls: '/var/log/journal' にアクセスできません: そのようなファイルやディレクトリはありません
Archived and active journals take up 16.0M in the file system.

2回目:メインPC が「ぶつっ」と切れた

2回目は、自宅サーバーと NAS はきちんと止まりましたが、メインPC は Windows のシャットダウンの画面が出ないまま、突然電源が切れました。止まる前に、画面の右下に WinNUT-Client の「つながった」「切れた」の知らせが何度か出ていました。

今度は記録が残っていたので、kvmhost の見張り役の記録を見ると、次の流れでした。

No.時刻記録読み方
111:26:08on battery電池に切り替わった(コンセントを抜いた)
211:31:08Poll UPS … failed – Server disconnected5分たって NAS が止まり始め、知らせの係ごと止まった
311:31:08… currently is not communicating, assuming dead電池で動いていたのに話せなくなったので、UPS はもうだめと見なした
411:31:08Executing automatic power-fail shutdownそれで止まり始めた

NAS からは、止まってという合図(FSD)は来ていませんでした。kvmhost は NUT の決まりで止まれましたが、WinNUT-Client はつなぎ直そうとくり返すだけで、合図を待っているうちに電気が切れました(場面6)。

そこで WinNUT-Client を、NAS の合図を待たずに、電池の様子を見て自分から止まる形に変えました(電池 90%、残り 1500秒)。電池が減ったまま試すと早く止まってしまうので、100% に戻ってから3回目を試しました。

3回目:NAS と自宅サーバーはねらいどおり、メインPC は間に合わなかった

15:06 にコンセントを抜き、起こし直してから kvmhost で記録を見ました。

Bash
sudo journalctl -b -1 -u nut-monitor --no-pager | grep -vE "upsmon 2\.8\.2$" | tail -6
sudo journalctl -b -1 --no-pager | grep -E "myserver のシャットダウンが完了|Shutting down\." | tail -2
  • journalctl -b -1 -u nut-monitor:
    1つ前の起動のあいだの、見張り役の記録
  • grep -vE "upsmon 2\.8\.2$":
    起動のたびに出る版の行を外す
  • journalctl -b -1 … grep -E "myserver のシャットダウンが完了|Shutting down\.":
    仮想マシンを止め終わった時刻と、kvmhost が電源を切り始めた時刻
  • Plaintext
    11月 04 15:11:26 kvmhost nut-monitor[975]: Communications with UPS ups@192.168.0.30 lost
    11月 04 15:11:26 kvmhost nut-monitor[975]: UPS [ups@192.168.0.30] was last known to be not fully online and currently is not communicating, assuming dead
    11月 04 15:11:26 kvmhost nut-monitor[975]: Executing automatic power-fail shutdown
    11月 04 15:11:26 kvmhost nut-monitor[975]: Auto logout and shutdown proceeding
    11月 04 15:11:31 kvmhost shutdown[3095]: Shutdown scheduled for Wed 2026-11-04 15:11:31 JST, use 'shutdown -c' to cancel.
    11月 04 15:11:31 kvmhost systemd[1]: nut-monitor.service: Deactivated successfully.
    11月 04 15:11:39 kvmhost libvirt-guests.sh[3243]: ゲスト myserver のシャットダウンが完了しました。
    11月 04 15:11:39 kvmhost systemd[1]: Shutting down.

    抜いてから約5分で NAS が止まり始め、kvmhost は話せなくなってから13秒で仮想マシンを止め終わり、電源を切り始めました。

    メインPC は、また5分ほどで突然切れました。WinNUT-Client の記録を見ると、電池が 90% を切ったのが停電の約4分後(15:10:32)で、そこから止め始めるまでの待ち時間(このときは180秒)を数えている途中で、電気が切れていました。

    WinNUT-Client の記録で、電池が90%を切ってシャットダウンの数えが始まった行

    メインPC の止め方を早める

    90% では遅かったので、電気が電池に切り替わったらすぐに数え始める形にしました。

    No.項目変えたあと理由
    1Shutdown if battery lower than99%電池に切り替わると、すぐに条件に届く
    2Shutdown if runtime lower than (sec)2999入れられるいちばん大きい値(9999 はエラーになった)
    3Delay to Shutdown (sec)1202分より短い停電なら、止めずに乗り切る
    4Shutdown on Nut’s FSD Signal印のまま合図が来たときのため

    短い試しで、コンセントを抜いて数秒で数えが始まり、2分のうちに戻すとすぐに取り消されるのを確かめました。これで、停電から2分半ほどでメインPC が止まり始め、NAS が止まる5分より前に止まり終わります。

    場面6:分かったこと

    いちばん大きかったのは、Synology の NAS は、止まり始めるときに「止まって」の合図(FSD)を送らず、知らせの係ごと止まってしまうことです。子の側は、合図ではなく「話せなくなった」ことで止まるかどうかが分かれます。

    No.機械止まり方結果
    1NAS電池で5分たったら、スタンバイ モードに入って止まるねらいどおり
    2自宅サーバー(nut-client)電池で動いていたのに話せなくなったら「assuming dead」で止まる(NUT の決まり)合図がなくても止まれた。仮想マシンを先に止めた
    3メインPC(WinNUT-Client)話せなくなっても止まらず、つなぎ直しをくり返す合図を待つ設定では間に合わず、電気が切れた。電池の条件(99%)と待ち時間(120秒)で、自分から止まる形にした

    ほかに分かったことです。

    • 記録をディスクに残す:
      AlmaLinux 9 の初期の設定では、再起動で記録が消える。止まったときに何が起きたかを見るには、先に /var/log/journal を作っておく
    • 電池が満タンに戻ってから試す:
      試しのあとは電池が減っているので、電池の条件で止める設定は、すぐに試すと本当の停電より早く止まる
    • WinNUT-Client の runtime の上限:
      「Shutdown if runtime lower than」は 2999秒まで。9999 はエラーになった
    • メインPC の数えは取り消せる:
      止め始めるまでの待ち時間のあいだに電気が戻ると、止めるのを取り消す。短い停電では止まらない

    まとめ

    UPS(CPJ500)を NAS に USB でつなぎ、NAS のネットワーク UPS サーバーから、自宅サーバーとメインPC に知らせる形にしました。

    No.機械停電したとき
    1メインPC電池に切り替わって2分たつと止まり始める(2分より短い停電なら取り消す)
    2NAS電池で5分たつと止まる
    3自宅サーバーNAS が止まって話せなくなると、仮想マシンを先に止めてから止まる

    本番の試しで分かった「Synology は FSD を送らない」ことは、試さなければ気づけませんでした。設定したら、一度は本当にコンセントを抜いて、記録まで見ておくのがおすすめです。

    NAS(DS224+)を入れたときの記録は「Synology DS224+ の記事」に、自宅サーバーの記事の一覧は「自宅サーバー構築メモ」にまとめています。ブログが外から開けるかは「UptimeRobot で自宅サーバーのブログを外から見張る」で見張っています。

この記事は「自宅サーバー構築メモ」の1本です。構築の手順と、運用・トラブル対応の記事は、自宅サーバー構築メモの目次からどうぞ。

このブログは、にほんブログ村と人気ブログランキングに参加しています。記事が役に立ったら、下のランキングのバナーのどれかを押して応援してもらえると励みになります。

ブログランキング・にほんブログ村へにほんブログ村

サーバー構築・運用ランキング プログラムランキング

DS224+
watasoftdevをフォローする

コメント