Raspberry PiにUSB接続していたHDDが見えなくなる現象が発生したので対処した内容をご報告です。
ディスクのエラー?
気づいたきっかけ
一日の始まりは日次のログ確認から、と一通りのログをざっくり眺めていたら、バックアップのログにいつもと違う警告が。
sambaサーバのファイルバックアップを取得しているBunBackupが教えてくれた「バックアップ元フォルダが存在しません」というメッセージ。変だなと思い対象のsambaが稼働するRaspberry Piにアクセスして確認してみたところ、共有フォルダとして使っている2台のHDD(USB接続の外付けHDD)のうち、1台のHDDがマウントされていないことを発見しました。
うーん。
このサーバが設置されている場所、ちょうど前日にネットワーク機器の不可解なシャットダウン⇒自動起動が発生していました。ブレーカーが落ちたような感じもするけど対象のRaspberry PiはUPSで瞬断には対応できるようになっているので、すっかり安心していました。UPSのコンセントが抜かれた?という可能性も考慮して、Raspberry Piのsyslogを調べてみようと思います。
dmesgで確認
syslogに記録された起動時のログから怪しい箇所を抜き出してみました。
--------------------------------------------------------------
Feb 00 10:00:00 smbsvr kernel: [10000000] usb 1-1.5: USB disconnect, device number 9
Feb 00 10:00:00 smbsvr systemd[1]: Unmounting /home/usbhdd2...
Feb 00 10:00:00 smbsvr kernel: [10000000] Buffer I/O error on dev sdc, logical block 365985792, lost sync page write
Feb 00 10:00:00 smbsvr kernel: [10000000] JBD2: Error -5 detected when updating journal superblock for sdc-8.
Feb 00 10:00:00 smbsvr kernel: [10000000] Aborting journal on device sdc-8.
Feb 00 10:00:00 smbsvr kernel: [10000000] Buffer I/O error on dev sdc, logical block 365985792, lost sync page write
Feb 00 10:00:00 smbsvr kernel: [10000000] JBD2: Error -5 detected when updating journal superblock for sdc-8.
Feb 00 10:00:00 smbsvr systemd[1]: Unmounted /home/usbhdd2.
--------------------------------------------------------------
うーん、「Buffer I/O error」が出ています。「Buffer I/O error on dev sdc, logical block 365985792, lost sync page write」と「JBD2: Error -5 detected when updating journal superblock for sdc-8.」で論理障害が発生した?と。
他にも「Failed to mount /home/usbhdd2.」と「home-usbhdd2.mount: Unit entered failed state.」というメッセージもあったので、論理障害によって起動時のマウントに失敗したと考えることができそうです。
このログのエントリを発見するのにちょっと時間が掛かってしまいました。
対処
これは以前に対処したことがあったのをすっかり忘れていました。ログを発見してからしばらく考えているうちに思い出しました。
手順はこれに沿って、
$ sudo mkfs ext4 -n /dev/sda
を実行
「Superblock backups stored on blocks:」に数字が複数表示されました。
続いて、fsckコマンドで修復を実行します。
$ sudo fsck /dev/sda -p
を実行
「Journal checksum error found in /dev/sda」とか「/dev/sda was not cleanly unmounted, check forced.」と対象の/dev/sdaにエラーが発生していたことが窺えるメッセージの表示とともに、修復が進んで行きました。
対処後
対処が完了した後、改めてログから接続されたことを確認。
--------------------------------------------------------------
Feb 00 14:00:00 smbsvr systemd[1]: Mounting /home/usbhdd2...
Feb 00 14:00:00 smbsvr systemd[1]: Mounted /home/usbhdd2.
Feb 00 14:00:00 smbsvr kernel: [ 669.515923] EXT4-fs (sda): mounted filesystem with ordered data mode. Opts: (null)
--------------------------------------------------------------
いままでは「Unmounting /home/usbhdd2...」となっていた処理は、「Mounting /home/usbhdd2...」と「Mounted /home/usbhdd2.」でエラーになっていた/dev/sdaがマウントされるようになりました。
ひとまず対処は完了ですが、HDDやHDDケースの故障の可能性もあるので、しばらくは注意して観察しておくようにします。