/var/logs を tmpfs としてマウントし、時には overlayfs を使用して変更を保存します。

/var/logs を tmpfs としてマウントし、時には overlayfs を使用して変更を保存します。

/var/logtmpfsをマウントする代わりにoverlayfsを使用したいと思います。

  1. /var/log は tmpfs で書き込むことができますが、インクルードファイルは tmpfs がマウントされる前に存在します。これらの古いファイルはtmpfsメモリではなくサブレイヤにあります。
  2. 変更のみtmpfsに保存され、古い変更されていないファイルはSSDに保存されます。
  3. たとえば、cronを介してSSDに変更を書き込むことが可能な場合があります。これにより、tmpfsメモリが解放されます。

したがって、結果は次のようになります。ログはRAMに書き込まれ、古いログと新しいブートログは同じパスを介してアクセスできます。時々、変更はスクリプトを介してディスクに書き込まれます。

要点は、作業速度を少し上げて、SSDがマルチライトから保護されていることを確認することです。

ログではなく、rootへのすべての変更ではなく、子犬Linuxで同様のものを見ました。(ただし、インストールしないと同じことができず、ドキュメントは役に立ちません)

答えに基づいてブラウザのCookie /キャッシュを使用して同じことをします。ただし、ブラウザが閉じると永久書き込みが完了します。ブラウザのキャッシュをオフにする方法はありません。 Web 開発では、ユーザーがキャッシュによって引き起こされるのと同じエラーを発生させるには、最小限のキャッシュが必要です。

答え1

/ var / logを上書きするように管理されており、SSDログファイルと変更が表示されます。すべての変更はRAMに保存されます。後で上位レイヤーを下位レイヤーにコピーし、時間ごとの変更が永続的に適用される同期を実行します。

#prepare layers
sudo mkdir -p /var/log.tmpfs
sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512m,mode=0775 tmpfs /var/log.tmpfs
sudo mkdir -p /var/log.tmpfs/upper
sudo mkdir -p /var/log.tmpfs/work
sudo chown -R root:syslog /var/log.tmpfs
sudo chmod -R u=rwX,g=rwX,o=rX /var/log.tmpfs

#prepare overlay
sudo mkdir -p /var/log.overlay
sudo chown root:syslog /var/log.overlay
sudo chmod u=rwX,g=rwX,o=rX /var/log.overlay

#start overlay
sudo mount -t overlay -o rw,lowerdir=/var/log,upperdir=/var/log.tmpfs/upper,workdir=/var/log.tmpfs/work overlay /var/log.overlay
sudo mount --bind /var/log.overlay /var/log

変更を永久に適用するには、/var/logバインディングを解放し、ファイルをコピーして再バインドする必要があります。

答え2

LeonidMewの答えはほとんど完璧ですが、再インストールせずに変更を継続的に適用する方法を提供したいと思います。

# prepare layers
sudo mkdir -p /var/log.tmpfs
sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512m,mode=0775 tmpfs /var/log.tmpfs
sudo mkdir -p /var/log.tmpfs/upper
sudo mkdir -p /var/log.tmpfs/work
sudo chown -R root:syslog /var/log.tmpfs
sudo chmod -R u=rwX,g=rwX,o=rX /var/log.tmpfs

# create a bind mount to the parent directory of the log folder
# since mount --bind does not mount recursively when used on the
# parent, we can use this to preserve access to the real /var/log
# on the disk
sudo mkdir -p /tmp/realvar
sudo mount --bind /var /tmp/realvar

# mount overlay using this new mountpoint as lowerdir
sudo mount -t overlay -o rw,lowerdir=/tmp/realvar/log,upperdir=/var/log.tmpfs/upper,workdir=/var/log.tmpfs/work overlay /var/log

この方法を使用すると、/tmp/realvar/log がサブディレクトリとして使用され、オーバーレイがインストールされていても引き続きアクセスできます。このマウントポイントを使用して変更を同期できます。

sudo rsync -vaz --delete /var/log/ /tmp/realvar/log

良いアイデアをいただいたLeonidMewに感謝します。この概念は、Raspberry Piが予期しない停電が発生した場合にほとんどのログを維持しながらSDカードの書き込みサイクルを減らすのに非常に役立ちます。

答え3

デーモンを同期するために何かを提案できますか?これはかなり良いことです。

https://wiki.archlinux.org/index.php/anything-sync-daemon

文書では、

everything-sync-daemon(asd) は、tmpfs で同期先と呼ばれるカスタムディレクトリを管理し、定期的に物理ディスク (HDD/SSD) に再同期するように設計された小さな擬似デーモンです。これは、tmpfsコピーとメディアバインドされたバックアップを同期状態に保つためのシンボリックリンクステップと革新的なrsyncの使用によって達成されます。また、asdにはさまざまな競合回復機能があります。

答え4

フラッシュドライブの書き込みを最小限に抑えるために、以下を使用しています。log2ram、効果が非常に良いです。私が提供したスケジュールに従ってフラッシュドライブに同期されます。

関連情報