Armadilloフォーラム

overlayfsについて

shogotk

2020年4月27日 17時32分

overlayfsを用いた、ストレージ保護について質問です。

Armadillo-IoT G3Lでoverlayfsを有効にすると、eMMC全体がlowerになりますが、
この設定をeMMC全体ではなく、一部のディレクトリを対象としたものに変更はできるのでしょうか

コメント

shogotk

2020年4月28日 13時58分

> overlayfsを用いた、ストレージ保護について質問です。
>
> Armadillo-IoT G3Lでoverlayfsを有効にすると、eMMC全体がlowerになりますが、
> この設定をeMMC全体ではなく、一部のディレクトリを対象としたものに変更はできるのでしょうか
>
現在、開発に向けて機能検証をおこなっているのですが、その過程でログを頻繁に保存しています。

at_koseki

2020年4月28日 15時48分

古関です。

もし、ログ・センサーデータ・設定ファイル等を不揮発的に記録したいのであれば、
ルートファイルシステムとは別のパーティションに保存することをおすすめします。

下記、パーティション分離の案となります。
--------------------------------------------------------------------
(1) SDカードやUSBメモリを使う
単純ですがコスト高になります

(2) eMMCの第3パーティションを使う
eMMCの第3パーティションは弊社のデバイス管理サービス node-eye用にリザーブされていますが、
node-eyeを使わない前提であればこちらのパーティションをご利用頂いても構いません。

(3) eMMCのパーティション構成を変更する
下記ブログが参考になると思います。

Armadillo-X1/IoT(G3/G3L):eMMCのパーティションを切りなおす方法
https://armadillo.atmark-techno.com/blog/615/3048
--------------------------------------------------------------------

書き込みを行う際は、普段はunmount状態にしておき
書き込む前にmount、write要求が完了したらすぐにunmountすることをおすすめします。
こうすることで、電源断に対するデータ破損リスクが小さくなります。
例えばシェルスクリプトであれば次のようにすると良いです。

--------------------------------------------------------------------
mount /dev/mmcblk1p3 /mnt
echo $(date) "this is log" >> /mnt/private.log
umount /mnt
--------------------------------------------------------------------

現在の構成では、ルートファイルシステムをまるごと一つのeMMCの第2パーティション上に置いています。
overlayfsによる書き込み保護を有効にすると、eMMC上のルートファイルシステムがlowerに、RAMがupperになります。

overlayfsによる書き込み保護の目的の一つに、書き込み中の電源断によるファイルシステム破壊からの保護があります。
これは、パーティション単位(ファイルシステム単位)でRead onlyにすることで達成しています。

あるパーティションにおけるファイルシステムは、個々のファイルの内容だけでなく、メタデータ
といって各々ファイルの変更やディレクトリ構造に関するデータを保持しています。

このメタデータが破損した場合、変更した一部のファイルだけでなくファイルシステム全体の
構造にエラーが発生する可能性があります。メタデータは、一部のファイルの作成や書き換え
でも更新されるため、部分的な書き換え許可はファイルシステムの保護にはなりません。
上記の理由で、同一のファイルシステム内で一部だけ書き換えするような(特定のディレクトリのみoverlayfsによる書き込み保護を無効にする)
使い方は標準機能ではサポートしていません。

また、overlayfsによる書き込み保護の目的の一つに、eMMC(フラッシュメモリ)の P/Eサイクル削減があります。
同一のeMMCに複数のパーティションを作成、片方をRead only、片方をwrite可能に設定した場合でも、
代替セクターは共通のプールから消費されます。