私はDebian 9ベースの組み込みシステムでこれをやろうとしています。ルートファイルシステムは/etc/fstabにインストールされます。
# /etc/fstab: static file system information.
#
/dev/mmcblk1p1 / ext4 noatime,errors=remount-ro 0 1
debugfs /sys/kernel/debug debugfs defaults 0 0
現在のファイルシステムは次のとおりです。
Filesystem Size Used Avail Use% Mounted on
udev 215M 0 215M 0% /dev
tmpfs 49M 6.0M 43M 13% /run
/dev/mmcblk1p1 3.5G 1.9G 1.4G 59% /
tmpfs 242M 0 242M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 242M 0 242M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/1000
今やるべきことは、Unionfs(またはaufs)+ ext4を使用してより柔軟なマウントシステムを作成することです。 /ext4 は、停電によって失敗し、ファイルの破損が発生する可能性があるためです。ここでのアイデアは、下部に読み取り専用ファイルレイヤーを置き、上部に/ home / debianとシステムから書き込むために必要なその他のファイル(var / logなど)の書き込み可能ファイルレイヤーを置くことです。礼拝規則書)。組み込みシステムで動作するext4は、定期的に予期しない停電が発生する可能性があり、これは多くのディスクの問題/損傷を引き起こす可能性があると言われました。これは、アプリケーションの実行中にディスクに多くの書き込み操作が行われるためです。(関連)。 ext4にジャーナリング機能が存在しても、これは完全に本当ですか?
数時間の研究の最後に、フック/スクリプトなどを作成して/usr/share/initramfs-toolsを探索することをお勧めします。新しいスクリプトを作成してシステムを起動した後、私が望んでいたものと同様の結果が得られました。
Filesystem Size Used Avail Use% Mounted on
udev 215M 0 215M 0% /dev
tmpfs 49M 6.0M 43M 13% /run
/dev/mmcblk1p1 3.5G 1.9G 1.4G 59% /ro
root.rw 242M 8.5M 234M 4% /rw
root.union 242M 8.5M 234M 4% /
tmpfs 242M 0 242M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 242M 0 242M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/1000
&& mount を使用すると、新しく追加された ro&& rw ファイルシステムについて、次の詳細を取得できます。
/dev/mmcblk1p1 on /ro type ext4 (ro,relatime,data=ordered)
root.rw on /rw type tmpfs (rw,relatime)
root.union on / type aufs (rw,relatime,si=587d3414)
これは/roディレクトリに初期/読み取り専用システムを作成するという点で効果があり、/rwに書き込み可能なレイヤをインストールしました。ここで問題は、新しいファイル/ディレクトリを作成するとデバイスを起動した後に消えることです。これをより深く掘り下げると、通常RAMに使用されているtmpfsを使用しているという事実が問題の原因である可能性があると疑われます。しかし、問題を解決するために上にaufs(root.union)を使用するのに問題があります。そうではありません。
/ rwレイヤーに起動後に生成された新しい情報/ファイルを保持させることで、この問題をどのように解決できますか?私のシステムは現在読み取り専用なので、スクリプトに行き、/ rwをaufsとしてマウントしようとするたびにデバイスを起動してから戻ります。
注:私の現在の設定は、現在のアプリケーションのログが私の/var/log/...に記録されず、デバイスの起動後に失われることを意味しますか?一部のアプリケーションは通常/rwディレクトリの/var/log/syslogに書き込まれますが、起動後に新しいログを保持するのか、起動時にログに戻すのかを判断できないようです。
答え1
AFAIK、ext4のロギングは、実際の損傷がほとんどなく、fsckを介して修正できることを意味します。私は死んだディスク(実際に翌日の回転を拒否する)以外はext4の損傷を経験したことがありません。
Linuxのキャッシュは、RAMがバックアップストアを持つtmpfsとして機能することを意味します。速度が遅すぎる場合(フラッシュドライブを使用しているため驚くことがある場合)、fstabに追加するとcommit=<time>
速度が低下し、データを更新するのにかかる時間を増やすことができます。
プログラムが書くために必要なものを見つけることは、コンピュータサイエンスの中断の問題よりも複雑な未解決の問題です。障害が発生したときに移行できるように維持する必要がある項目を別のパーティション/ディスクに保存するにはどうすればよいですか。