システムの起動時に外部USB接続のハードドライブを検索すると、dmesg出力にAssuming drive cache: write through
外部ドライブのデバイス名が表示されます。
私はこのドライブをバックアップの保存に使用するので、本当に好みます。システムはドライブの特性について何も仮定しません。。書き込み性能を犠牲にする意向があります。問題のドライブのファイルシステムに何か記録されるとき、実際には永久ストレージ専用に使用されています。そしてキャッシュのどこかにはありません(停電が発生した場合は、コンピュータとドライブの両方にすぐに電源が切れるので、ドライブ自体にもないことをお勧めします)。
1つの複雑な要因は、ドライブにLUKSで暗号化されたパーティションがあることです。ファイルシステムは、次のようにLUKSコンテナにのみ存在します。
+- physical drive ------------------------+
| |
| +- partition -----------------------+ |
| | | |
| | +- LUKS encryption -----------+ | |
| | | | | |
| | | +- file system ---------+ | | |
| | | | | | | |
| | | | actual data | | | |
| | | | | | | |
| | | +-----------------------+ | | |
| | | | | |
| | +-----------------------------+ | |
| | | |
| +-----------------------------------+ |
| |
+-----------------------------------------+
だから私の質問は次のとおりです。ユーザー空間アプリケーションに完了したと報告する前に、すべての書き込みが物理ストレージにコミットされたことをどのように確認できますか?
答え1
これには、ディスク書き込みキャッシュとファイルシステムキャッシュという2つのコンポーネントがあります。
ディスク書き込みキャッシュの無効化を使用できますhdparm -W 0 [device]
。sync
このオプションを使用してファイルシステムをマウント/再マウントすることで、ファイルシステムの書き込みキャッシュを無効にできます。これらの変更により、パフォーマンスが大幅に低下します。