Linuxでの整合性のためのディスクページキャッシュサイズ

Linuxでの整合性のためのディスクページキャッシュサイズ

Linux関連のアプリケーションでシステムエラーが発生した場合は、ブロックベースのディスク形式の破損を制限しようとしています。つまり、ファイルは、デフォルトでは、単位サイズの倍数であるオフセットを使用してアプリケーションによって定義された固定サイズ単位で読み書きされます。

書き込み中または同期書き込みの前にひどいことが起こると、ブロックnへの書き込みが破損する可能性があり、破損しない可能性があります。これは避けられません。

私が避けたいのは、ブロックn-1またはブロックn + 1が無効になっていると(この期間中はアクティビティがない)、破損する可能性です。

ブロックサイズがとんでもなく小さい場合(たとえば、4バイト)、さまざまなオペレーティングシステムとハードウェアの観点から、ブロックnがブロックn-1とn + 1と「同じページに」あることは明らかです。ページが実行されていると、一部の災害によってディスク上のブロックnだけでなく、n-1、n+1などが破損する可能性があります(何も変更されていませんか?)。

チャンクnへの書き込みが本質的に隣接チャンクから独立するようにチャンクのサイズを変更する方法はありますか?つまり、1つのチャンクが静止している場合、忙しい隣接チャンクのためにそのチャンクは発生しません。

必要に応じてパディングを挿入してソートの問題を解決できるため、克服することはできません。

これまでの私の考えは次のとおりです。一般的に引用されている512バイトのディスクブロックは小さすぎる可能性が高いように見えますが、これが最新のディスクに適用されるかどうかはわかりません。私はx86ページのテーブルが4k(適切なサイズのように聞こえます)または4M(大きすぎるようです)である可能性があることを知っています。 sysconf(_SC_PAGESIZE)は数値を返しますが、正しいですか?

私たちの書き込みは、daftではなくファイルシステムの種類(ext-nやxfsなど)のものであり、そのシステムが標準の64ビットLinux x86システム(該当する場合)であると仮定できます。

関連情報