2023年9月1日金曜日

ラズパイが壊れちゃった

わかってないやつがビルドするのは危険かも

 NAS構築の上で大事なソフトウェアであるOpenMediaVault(以下OMV)がもっさり遅くて、バージョンも新しいのがリリースされていると言うので更新をかけたんですが、そしたらラズパイが起動しなくなってしまいました。いわゆる壊れた、多分。

aptでインストール/更新管理するタイプではなく、ソースコードからビルドするスクリプトをGitHubから実行するタイプだったので、環境が合わないと駄目になるリスクというのはあったんだと思います。前のOS自体も色々設定を試行錯誤しながらやっていたので、そのへんのゴミが残っていたのかも知れないです。

認識できてるのにマウントできないディスク

元々OMVはブラウザベースで動作するんですけど、それを呼んでもラズパイ自体にSSH接続しようとしても(うちのはRaspbetty Pi OS LiteなのでCUI)うんともすんとも言わない。こりゃどうしようもないなということでSDカードをフォーマットしてOS自体を再インストールしたんですが、そうするとNASも再構築することになります。

そこまでは想定内だったんですが、どうも正常終了しなかったせいで接続してたHDDのマウント解除もできてないし、他にも不具合があったのでしょう、どうしてもマウントができなくなっていました。

一応TerminalでもOMVでもディスク自体は認識できているんですが、マウントがどうしてもできない。Internal server Error 500 というのが出ます。そうするとファイルシステムがext4なのでWindowsからは見えずファイルの救出も困難。せめてLinuxから…とXubuntuマシンを引っ張り出してみましたが、結局ディスクをマウントできなければ同じことです。どうしたらいいんだ。

でググってググって、かなりたくさんタブを開いて調べて見つけたのがエラーチェック。こんなん失敗したらファイル壊れるやろ!とも思ったんですが、マウント解除できてない&NASの設定が残ってるせいで"ボリュームラベルが破損している"なら、そこさえ修正すればイケるのでは?と考え直しました。そもそも他に方法がないならもう試すしかないですし。

ディスクチェックを試してみる

ということで実行してみました。参考にしたのは https://patio.work/archives/1343 「LinuxサーバのHDDが壊れたっぽい時の対応」です。

まず接続されているディスクの状況確認。(スクショはないです、すまん)

$ sudo fdisk -l

ひとつめが/dev/sdaでもうひとつが/dev/sdbなことがわかりました。実行結果で見るとわかりますが、指定するときは/dev/sda1/dev/sdb1と書くことになります。一応スーパーユーザーでやります。

$ sudo fsck /dev/sda1

そうするとディスクの内容チェックがすげー勢いで流れてきます。なんか16進数の4桁的な数字がビャビャビャーッと。ファイルの内容が多ければ多いほど時間がかかるようです。ふたつのHDDどちらも500GBで、使用率4%くらいのが30分くらい、13%くらいのは1時間半くらいやってました。夜の11時半に始めるもんじゃないです…

しかも、「修正しますか?(...Fix? y/n)」みたいなメッセージが大量に出ます。その度にキーボード叩かないといけないのも結構つらいので、「fsck -y」とオプションを指定してしまえば全部Yesになります。

パーティションテーブルが壊れている可能性が微レ存

これでOKかな?と思いきや、パーティションテーブルが破損している場合はダメらしいので(果たしてマウント不可でした)、TestDiskというツールを使ってみます。リンク先ではyumというコマンドを使ってますが、aptでもインストールできましたのでご報告しておきます。詳しくはリンク先をご覧いただいたいんですが、ここで「P」を指定してパーティションを設定するようです。

ここまでやったら、xubuntuではデスクトップにsda1、sda2のドライブアイコンが見えていました。てことはマウントできてる。それぞれマウント解除して、ラズパイに接続→再起動します。

OMVから「ストレージ」を見ると、どちらもディスクが見えています。ここで一気にマウントしたいけど、ここでまたおかしくなったら元の木阿弥です、ひとつずつ丁寧にやっていきます。

「ファイルシステム」でディスクを選ぶとマウントできます。マウントできたら「共有フォルダ」でマウントしたディスク、相対パスを以前の共有フォルダのパスにします(ない場合は指定した名前でフォルダが新規作成されます)。これでNASが復活したわけです。それぞれの工程ごとに操作を反映しますか?と訊かれるので、都度やっていったほうがいいでしょう。

あとはユーザーを作成します。以前に他の端末にユーザー情報を作成しているならそれを流用すれば良いと思います。これが一致しなければNASにアクセスすることはできませんので。

以上です。メインのデスクトップPCは起動していないと他の端末から見えないので、スマホなどからもアクセスできるように設定していたNASが使えなくなると、色々が滞ってしまいます。アップグレードなどはできるだけ情報を集めてから実施するようにしたいですね。反省。