1

私の知る限り、ログモードが「data=ordered」のほとんどの ext3 システムでは、fsync は fd で指定されたファイルを同期するだけでなく、ファイルシステム上のすべてのファイルを同期します。この問題は、カーネル 2.6 以前では修正されていません。 .30

msync は fsync と同じことをするのですか?

ありがとう。

4

2 に答える 2

2

これはバグではなく、機能です。Ext3 はジャーナリングされたファイル システムです。data=ordered は、ファイル システムへの変更が行われた順序で書き込まれるように要求していることを意味します。

したがって、特定のファイルへの変更を同期するように要求するときは、そのファイルまたは他のファイルへの以前のすべての変更をコミットする必要があります。そうしないと、データを順番に保持するためのディレクティブが破られます。このため、確認はしていませんが、msync も同じように動作すると思われます。

実際、そうでない場合はファイルシステムのバグだと主張できます...

于 2011-10-10T06:47:26.030 に答える
0

いろいろな記事を読んでいると、まったくそうではないと思います。fsync を 1 回実行しても、すべてのダーティ データがディスクにフラッシュされるわけではありません。同じファイルに属するメタデータのみをフラッシュします。

さらに、data=ordered で説明されている問題は、論理的には優先順位が高くなければならないにもかかわらず、同じデバイスへの他の保留中の IO 要求を待機しているようです。すべてのダーティ データがフラッシュされるわけではありません (sync() など)。

調べる実験をしたいと思います。

于 2011-10-11T08:27:15.863 に答える