Raspberry Pi 2 のファイルシステムとして使用していたマイクロSDメモリが、書き込み禁止のファイルシステムになってしまった。
2024/1/1 に MySQL データベースサーバーとして利用していた FreeBSD/arm 13.2 のHDDファイルシステムがクラッシュしてしまったというのは、先日メモを残した通り。
バックアップとして準備していたマイクロSDメモリベースのFreeBSD/arm + MySQLに引っ越ししようとしたら、バックアップFreeBSD/arm のファイルシステムまで(気づかないうちに)壊れていたという次第。
元々バックアップ用RPI2は、TLCと思われるSDメモリをファイルシステムに利用していたけど、あっという間にファイルシステムがクラッシュしてしまったので、今度はドライブレコーダー用のMLC マイクロSDメモリを使うことにしましたが、これも使えなくなってしまいました。
高耐久ということで、おそらく、データ書き換えに対して耐久力はあったのでしょうけど、室内で2度ほどRPI2の電源を落としてしまうという事故に遭遇してしまい、このことがSDメモリの寿命を縮めてしまったのではないかと想像しています。
不具合に気付いたのは、起動時のサービスを止めようとして、/etc/rc.conf のスイッチを書き換えたものの、リブートすると編集したはずの設定が元に戻ってしまうという現象が発生。
FreeBSD の fsck でリカバリーが出来なかったため、やむを得ずWindowsでの初期化を試みました。初期化というよりも、OSイメージファイルの上書きですけどね。
なぜか、これが失敗する。
そもそもマイクロSDメモリカードって、ライトプロテクトスイッチはないでしょう!
試しに、通常サイズSDメモリへの変換アダプターとカードリーダーを使ってみましたが、やっぱり書き込めない。
検索してみたところ、diskpart コマンドを使えばマイクロSDメモリの書き込み制限を解除できるとのこと。
やってみました。
DISKPART> attributes disk
現在の読み取り専用状態: はい
読み取り専用 : いいえ
ブート ディスク : いいえ
ページ ファイル ディスク : いいえ
休止状態ファイル ディスク : いいえ
クラッシュ ダンプ ディスク : いいえ
クラスター化ディスク : いいえ
DISKPART> attributes disk clear readonly
ディスクの属性が正しく消去されました。
DISKPART> attributes disk
現在の読み取り専用状態: はい
読み取り専用 : いいえ
ブート ディスク : いいえ
ページ ファイル ディスク : いいえ
休止状態ファイル ディスク : いいえ
クラッシュ ダンプ ディスク : いいえ
クラスター化ディスク : いいえ
attributes コマンドで状態を確認してみると、「現在の読み取り専用状態:はい」と「読み取り専用:いいえ」の2カ所にそれらしいステータスがみつかり、前者の方が書き込み禁止を表しているっぽい。
attributes disk clear readonly
とすれば、書き込み禁止が解除されるはずで、リターンメッセージもそうなるものの、再度ステータスを表示すると、解除されていない!
SDメモリも書き込み禁止を解除できないケースを検索してみると、SDメモリが故障してしまった場合にこうなるらしい。がっくり。
結局、2枚目もマイクロSDメモリ上に構築したファイルシステムを失ってしまいまうことに。こういう現実に遭遇すると、いくらコストパフォーマンスが良いからといっても、RPI上に重要データを置くのって、超リスキーって思えてきます。練習用や、オリジナルが別にあるデータを扱うならRPI+マイクロSDは手軽でいいシステムなんですが、24時間システムにSDメモリは向かない気がする。
現在、RPI2+HDDシステムでも問題が発生しているので、ハードウェア構成を考え直さないといけないなーって思い始めているところです。
MySQL8が FreeBSD/arm64(FreeBSD/aarch) で動かないことが始まりなんですけどね。(ため息出まくりだわ。)