自宅(実家)に置いた Ubuntu サーバーが、停電をきっかけに起動不能になった事例。

Nextcloud が停止しただけでなく、リモート管理に使っていた Tailscale にも接続できなくなり、遠隔からは一切手が出せない状態になった。

原因は Tailscale ではなく、/etc/fstab に書いた外付け HDD のマウント失敗だった。

概要

項目内容
構成Ubuntu + Nextcloud、データ用に NTFS の外付け HDD を /etc/fstab で自動マウント
きっかけ停電によるサーバーの強制電源断
事象再起動しても OS の起動が完了せず(emergency mode で停止)、Nextcloud・Tailscale ともに応答しない
原因NTFS が不整合(dirty)になりマウントに失敗。必須でないディスクが起動を止めた
対処マウントを解除して通常起動させ、ntfsfix で修復してから再起動
恒久対策/etc/fstabnofail を追加。あわせて UPS を導入

構成

諸事情で実家にサーバーを置いていて、実家と離れたところで一人暮らしをしているため、この構成になっている。 さらに、これもまた諸事情で、NTFSで運用をしている。

項目内容
ハードn100 minipc
OSUbuntu(systemd を使う Linux 全般で同様)
ストレージ外付け HDD をデータ置き場として使用(Nextcloud からは外部ストレージとして参照)
ファイルシステムNTFS(カーネル内蔵の ntfs3 ドライバでマウント)
マウント方法/etc/fstab に記載し、起動時に自動マウント。nofail なし
リモート管理Tailscale で VPN に入り SSH。物理コンソールへのアクセス手段は無い

症状

  • Nextcloud に HTTP でアクセスできない
  • Tailscale の管理画面上でサーバーがオフラインのまま
  • SSH も当然通らない
  • 電源ボタンで再起動しても、症状が変わらない

ITに詳しくない親に再起動は頼めたが、VPNに入ってくれず操作ができなかった。 さらに、ビデオ電話で電源が入っていることが確認できた。

この時点で電源が入っているのにVPNに入らず、現地に行って修正しなければならないことが確定した。

確認・修正

約1ヶ月後、実家に帰省することができ、そこで行ったトラブルシューティングの結果をまとめる。

ディスプレイを繋いで電源を入れ、 emergency mode に入り、起動ログをみた

journalctl -xb

ログを見ると、HDDのマウントに失敗しているようだった。 マウントを解除し、問題のディスクを切り離した状態で起動を続行させると、最後まで起動し、Tailscale も上がった。

ここまで来れば、あとは通常のメンテナンス作業になる。 起動した状態で、あらためて NTFS の修復コマンドを実行した。

sudo ntfsfix /dev/sdXn

再起動すると起動時の自動マウントも通り、正常に起動した。

なお ntfsfix は名前ほど万能ではない。 主に行うのは dirty フラグのクリアで、ファイルシステムを全面的に検査して直すツールではない。 今回のように電源断で dirty になっただけなら十分だが、実際に構造が壊れている場合は Windows に繋いで chkdsk /f を実行する必要がある。重要なデータが入っているなら、実行前に退避しておくほうが安全である。

対策

1. マウント失敗で起動を止めない

今回いちばん困ったのは、データが見えなくなったことではなく、VPN に入れなくなったことだった。そこで「多少のマウント失敗は許して、とにかく起動して VPN に入る」ようにする。

/etc/fstab のマウントオプションに nofail を追加した。

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/nextcloud-data ntfs3 defaults,nofail 0 0

書式は defaults の後ろにカンマ区切りで足すだけでよい。 これで、HDD やファイルシステムに問題が起きても OS と Tailscale は起動する。 Nextcloud のデータは見えないままだが、リモートから入って直せる状態は残る。

2. UPS の導入

引き金である停電そのものへの対策として、UPS を導入した。

短時間の停電であれば、電源断によって、NTFSが壊れることそのものを回避できる。 minipcなので、電源容量はかなり小さい。さらに個人規模で使用するので、それに見合ったものをチョイスした。 Amazon.co.jp: SX550UJP CyberPower UPS 無停電電源装置 常時商用給電 矩形波 550VA/330W : DIY・工具・ガーデン ちょうど良い容量で、リーズナブルで、コンセントが多い。 さらに、自動シャットダウンもでき、おすすめである。

この事例から言えること

1. 必須でないディスクを /etc/fstab にそのまま書くと、可用性が最も弱いディスクに引きずられる。 nofail の有無で、影響範囲が「データが見えない」か「サーバーが起動しない」かに分かれる。

2. 遠隔地のサーバーでは、「壊れないこと」より「壊れても入れること」を優先して設計する。 実際の作業時間は数分だったが、復旧までは約1ヶ月かかった。 時間を決めたのは障害の重さではなく、管理経路が同時に失われたことだった。 OS と VPN さえ起動すれば、残りは遠隔で対応できるはず。