Nextcloud Pi(ラズパイ)がシャットダウンできなくなったら

Raspberry Pi 3 Model B で Nextcloud Pi を運用し始めてから 2年近くが経ちました。
Orange Pi などとの運用期間も合わせると 3.5年あまり使っています。

シャットダウン不能

久々に配線をいじりたくて電源オフしようとおもったら、あれれ...

$ sudo shutdown -h now
Failed to open initctl fifo: そのようなデバイスやアドレスはありません
Failed to talk to init daemon.

Failed と言われてしまうので、強制シャットダウンさせます。

$ sudo shutdown -f
Shutdown scheduled for Tue 2022-07-12 19:35:44 JST, use 'shutdown -c' to cancel.

でも、一向にシャットダウンされないので、諦めて電源ケーブルを抜きました。

ディスクチェック

microSD カードを起動ディスクとして使っているので、まさか不良セクタができたのか...と思い、年のためディスクチェックします。

$ sudo fdisk -l

ディスク /dev/sdc: 7.53 GiB, 8068792320 バイト, 15759360 セクタ
Disk model:  Storage Device 
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x24eebbf4

デバイス   起動 開始位置 最後から   セクタ サイズ Id タイプ
/dev/sdc1           8192   532479   524288   256M  c W95 FAT32 (LBA)
/dev/sdc2         532480 15759359 15226880   7.3G 83 Linux

はい、8GB です。
Nextcloud Pi のデータディスクには HDD を接続しているので、OS 用としてしか使わない microSD は 8GB で十分なんです。

badblocks

コマンドラインで使える badblocks を使いました。

badblocks - ArchWiki

badblocks はストレージデバイスの不良ブロックをテストするプログラムです。

今回の microSD はパーティションが 2つあるので、それぞれテストします。

$ sudo badblocks -v -s /dev/sdc1 | tee /tmp/badblocks.txt
Checking blocks 0 to 262143
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)

$ sudo badblocks -v -s /dev/sdc2 | tee /tmp/badblocks.txt
Checking blocks 0 to 7613439
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)

read-only test ではエラー無しったので、ひとまずそのまま使うことにしました。