0

オプションを使用して NFS マウントでファイルを開くアプリケーションを実行していO_DSYNCます。次に、アプリケーションは6500ループ内のファイルにデータのバイトを 1000 回書き込みます。

クライアントの動作を監視したところ、基盤となるファイルシステムに 4096 バイトと 8192 バイトのバッチで書き込みが送信されていることがわかりました。

に従ってman open、 で開かれたファイルに対する書き込み操作は、O_DSYNC同期化された I/O データの整合性の完了の要件に従って完了します。さらに、次のように述べています。

O_DSYNC provides synchronized I/O data integrity completion, meaning write operations will flush data to the underlying hardware, but will only flush metadata updates that are required to allow a subsequent read operation to complete successfully. 

では、基礎となるファイルシステムがデータを正常に書き込むまでO_DSYNC、呼び出しは返されないと想定しました。write()それはここで起こっていることではありません。NFS クライアントは書き込みをキャッシュし、4k の倍数でフラッシュしています。これはなぜですか?

ここでは、Linux バージョン 4.9 を実行する Amazon EC2 インスタンスをページ サイズ 4096 で使用していることに注意してください。

4

1 に答える 1