複数のファイルをすばやく作成して削除します。
私は一定期間毎秒多くの一時ファイルを作成します。それぞれは数ミリ秒後に削除されます。
毎秒約2000の高速カメラフレームサブセットを処理する画像処理ソフトウェアがあるとします。それぞれがファイルに書き込まれ、同じ数ミリ秒以内にファイルにいくつかの変更が加えられ、再読み込みおよび削除されます。
現在はtmpfs
ファイルシステムで動作しますが、そうではないと仮定します。
いいえ、できません。「ただこうして修正してください」、これはいくつかのレガシー統合に必要です。
ファイルシステムはどのように応答しますか?
これがファイルシステムオプションとどのようにやり取りするかを理解したいと思います。特に、ファイルシステムログがどのように対話するのか理解できません。
素朴な考えでは、ファイルが作成され削除された後でもデータがディスクに届かないことを望むかもしれません。メタデータも同様です。そして、ディレクトリに名前を書いて削除すると、ディレクトリはそのままでしょうか?
驚くべき効果
正しい。
ディレクトリは、ある場所を再利用して新しいファイル名を保存したり、別の場所を再利用するなど、さまざまな方法で同じファイル名を表すことができます。
これは、ディスクブロックが書き込まれるとファイルシステムレベルを変更せずに変更される可能性があるため、ディスクに書き込む必要があることを意味します。
しかし、4つのタスクのそれぞれに対して一度だけ書くのを避けることはできますか?ジャーナルはどうですか?私の一時データはログに残りますか?ブロックできますか?
Q1:これを行うときに注意または覚えておくべきことは何ですか?
答え1
理論は言うことができますが、実際の経験はありません。私はファイルが数秒ごとにメモリからディスクにプッシュされ、十分に速く削除されたファイルは決してディスクに残らないことを読みました。日記にもありません。
ファイルがプッシュされる前に5秒間存在する必要があるのか、それともチェックポイントの瞬間(5秒ごとに発生)に正確に存在するのかわかりません。おそらく後者でしょう。その場合、一部のファイルがディスクに吸収されます。これは定期的に発生し、短期間持続します。
珍しいインストールオプション私はそれを調べることをお勧めします。間隔を増やすことで、これらのチェックポイントの瞬間をランダムに減らすことができますが、それでも発生します。説明できない理由で、割り当て遅延はデータをディスクにプッシュする副作用もあります。私はこれについてどこで読んだのか覚えていません。
- commit = nrsec(nrsec秒ごとにすべてのデータとメタデータを同期します。デフォルト値は5秒です。0はデフォルト値を表します)(Ext3)
- Ext4のdelalloc(書き込み時間までブロックの割り当てを遅らせます。)
提案されたソリューション:インメモリファイルシステムを使用します。これにより、ディスクに何も残らないようになります。 tmpfsかramfsかスワップが可能か、指定容量以上に拡張が可能かなど、若干の違いがあります。私はこれが基本的にあなたが今使っていることを知っています。 /tmp である必要はありません。任意のディレクトリにこのタイプの新しいファイルシステムを作成できます。
http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/