前回おそらく電源遮断(通称 電プチ)が原因でラズパイZeroが死んでしまいました。。。
↓前回の記事
ラズパイの電プチ対策として定番なのがファイルシステムをOverlayFSにすることみたいなので、今回はそもそもOverlayFSとはどんなものなのか、ラズパイでどうやって設定するか調べたのでまとめます。
結論から言いますとラズパイZeroでOverlayFSを使用すると動作が重くなり、まともに動作しなくなるため設定をするのはあまりお勧めできません。。。
(環境はRasbian 11 bullseyesを使用しています。)
そもそもOverlayFSとは
初めて知った概念のため、いろいろ調べてみたところ複数のディレクトリを重ね合わせて1つのディレクトリとして扱うものみたいです。
よくある概念の説明図として次のようなものがあります。
OverlayFSの概念図([1]より引用) |
Lowerディレクトリは読み込み専用なので、もしファイルに変更が加えられた場合はUpperディレクトリにのみ更新内容が反映されます。
仮にupperディレクトリとlowerディレクトリで同じファイルがあった場合は下記図の赤枠箇所のようにupperディレクトリの内容が反映されます。(下記図のLowerディレクトリの内容が赤で、Upperディレクトリの内容が緑ですが、緑の内容がoverlaylayに反映されることが分かると思います。)
upperとlowerで同じファイルがあった場合のイメージ([2]より引用) |
これは上記ディレクトリ構造をOverlay側から見た場合を想像すると分かりやすく、UpperとLowerに同じファイルがある場合に、Overlay側からフォルダを見てみるとLowerディレクトリの内容は隠れてみることができません。
設定画面を開いたら「オーバーレイ」と「起動パーティション」を有効にします。(画像は起動パーティションが有効になってませんが、有効にしてください。)
ちなみに起動パーティションが何物かよくわからなかったですが、おそらくBootパーティションをReadonlyにするということだと思います。
先ほど勉強した感じではOverlayFSはupperとlowerの2種類のディレクトリで構成されると思いましたが、実際はそれに追加してupperdirと同じ場所にworkdirも作成されているみたいです。
前置きが長くなってしまいましたが、OverlayFSの設定をしてラズパイのファイルシステムをlowerディレクトリに配置し、読み込み専用とすることでファイルシステムへの書き込みを防止し、ファイルシステムへ書き込み中に電源遮断が起きてシステムが破損し起動できなくなるということを防ぎます。
実際にOverlayFSの設定をしてみる。
OverlayFSの設定をする前にまず現在の状況を確認します。df -hで確認したところ下記のようなマウント状況になってます。
次にOverlayFSの設定をします。設定は簡単でGUIからできます。
まずはRaspberyPiの設定を開きます。
次にパフォーマンス→オーバーレイファイルシステムをクリックします。
補足になりますが、パーティションについてはこちらの記事[3]が分かりやすかったです。
再起動をするとoverlayの設定が完了です。再度マウント状況を確認すると下記のようになります。新しくoverlayというのが出来ていることが確認できます。
ここでコマンドプロンプトにfindmntと入力してより詳しくフォルダの状態を確認します。
下記赤枠の箇所がoverlayFSのフォルダのOPTIONを見てみると次のことが分かります。
(OPTIONの見方はこちらのサイト[4]を参考にしました。
)
- rw:読み書き可能なファイルシステム
- noatime:inodeのアクセス時間を更新しない。(ファイルを読み込んだ時刻を保存しないというもの[5])
- lowwerdir,upperdir,workdirの3つのディレクトリのマウント場所
workdirの役割がよくわからなかったため、調べたところ下記のような意見がありました。
Overlayfsでlower側のファイルをwriteする場合。
— Kazuhiro YOSHIKAWA (@yoshikaw) October 29, 2016
いったんworkdirを経由する理由は変更をアトミックにしたいためと推定
akachochinさん:Overlayfs の使い方:
— Yoshikazu GOTO (@goto_ipv6) October 29, 2016
・デファイルシステムイメージの指定
→重ね合わせるファイルシステムを指定(カンマ区切り)
・workdir:Overlayfs が裏で使用する作業ディレクトリで、これも必要 #lxcjp
また、こちらのサイト[6]にも説明がありました。
この3つの情報をまとめるとworkdirの役割はupperdir/lowerdirの変更をアトミックにするために、一度workdirに保存をして保存が終わったらまとめてupperdirに移動するという動作をすると推定します。
(workdirがupperdirと同一ディレクトリにあるため、個人的にはlowerdirの変更ではなく、upperdirの変更する際に使われているのではと思ってます。。。詳しい方正しい情報を教えていただきたいです。)
ちなみにアトミックという言葉を初めて聞いたため、調べたところ下記のような記述がありました。ディレクトリを排他制御したいけど、ReadOnlyにはしたくないからworkdirに一旦保存して最後にまとめてupperdirに移動させることで排他制御のようなものを実現しているイメージですかね?
アトミック操作は、途中に割り込まれない操作です。銀行口座の入金や出金の処理は、排他制御が必要なクリティカルセクションがあります。排他制御を行いアトミック性を確保します。
([7]より引用)
ファイルを作成してOverlayFSの動作を確認する
それでは設定が終わったので、OverlayFSの動作を確認していきます。
まずは適当にファイルを作ってみます。今回はtestというファイルを作成してみました。
次にラズパイを再起動してみて、このtestというファイルがどうなるかを確認します。
再起動した結果、デスクトップから消えたことが確認できました。
本当はもう少しフォルダの動作を見ていきたかったのですが、ラズパイZeroでOverlayFSの設定をしてしまうと動作が重たくなってしまい、まともに動かすことができなくたってしまったため今回は断念しました。。。(このスクショを取るだけでも3時間くらいかかってます。。。)
ぱっと見た感じですが、upperdirとかlowerdirにアクセスできるかと思いましたが、実際にアクセスはできなさそうでした。
OverlayFSの設定をしたら動作が重くなった?
OverlayFSが原因なのか、別の所に原因があるのかわからないですが、OverlayFSの設定をしてからラズパイの動作がめちゃくちゃ重たくなりました。。。
正直ストレスを抱えるレベルで、リモートでもなかなか接続できず実機を直接触ってみても固まっている状態です。。。
もしかしたらラズパイZeroにはOverlayFSの設定は厳しいのかもしれないです。。。
まとめ
今回はOverlayFSについて勉強し、ラズパイZeroで設定をしてみました。
結論から言うとラズパイZeroでOverlayFSの設定をすると動作が重たくなってしまうため、あまりお勧めできません。。。
ちなみに私の場合は設定を戻すこともできなくなってしまったため、再度イメージファイルを焼き直すことにしました。。。
参考文献
[2]Le système Overlayfs de Linux 3.18(フランス語サイト)
→絵だけ借用中身は理解できません。。。
[7]アトミック
引用しなかったが参考にしたサイト
DISKのマウント状態確認 | Cent 0S(マウントしているディスクのオプション確認)
Read-Only Raspberry Pi(英語サイト)
reTerminalのeMMC書き込みを止める(OverlayFSの参考)
実践! OverlayFS(OverlayFSの参考)
0 件のコメント:
コメントを投稿