完了が報告される前に書き込みが物理的にコミットされることを保証するにはどうすればよいでしょうか?

完了が報告される前に書き込みが物理的にコミットされることを保証するにはどうすればよいでしょうか?

Assuming drive cache: write throughシステムが起動すると、USB に接続された外付けハード ドライブが検査され、外付けドライブのデバイス名でタグ付けされたメッセージが dmesg 出力に表示されます。

このドライブはバックアップの保存に使うので、システムはドライブの特性について何の仮定も行わない書き込みパフォーマンスを犠牲にしても構わない問題のドライブのファイルシステムに何かが書き込まれたときに、それは本当に永久保存されることになりましたまた、どこかのキャッシュに保存されていないこと (電源障害が発生するとコンピューターとドライブの両方の電源が直ちに失われるため、ドライブ自体に保存されていないことが望ましい)。

おそらく複雑な要因は、ドライブが LUKS で暗号化された単一のパーティションを保持していることです。ファイル システムは、次のように LUKS コンテナー内にのみ存在します。

+- physical drive ------------------------+
|                                         |
|  +- partition -----------------------+  |
|  |                                   |  |
|  |  +- LUKS encryption -----------+  |  |
|  |  |                             |  |  |
|  |  |  +- file system ---------+  |  |  |
|  |  |  |                       |  |  |  |
|  |  |  |      actual data      |  |  |  |
|  |  |  |                       |  |  |  |
|  |  |  +-----------------------+  |  |  |
|  |  |                             |  |  |
|  |  +-----------------------------+  |  |
|  |                                   |  |
|  +-----------------------------------+  |
|                                         |
+-----------------------------------------+

そこで私の質問は、すべての書き込みが物理ストレージにコミットされてから、完了としてユーザー空間アプリケーションに報告されるようにするにはどうすればよいかということです。

答え1

ここには、ディスク書き込みキャッシュとファイルシステム キャッシュという 2 つの構成要素があります。

ディスク書き込みキャッシュは を使用して無効にできますhdparm -W 0 [device]。 オプションを使用してファイルシステムをマウント/再マウントすると、ファイルシステム書き込みキャッシュを無効にできますsync。 これらの変更によりパフォーマンスが大幅に低下することに注意してください。

関連情報