回答:
ext4ファイルシステムが断片化を抑制し続ける1つの方法は、遅延割り当てプロセス(ext4のデフォルトの割り当てモード)を使用することです。
遅延割り当ては、新しく書き込まれたファイルデータブロックのファイルシステム内のディスクブロックへのマッピングをライトバック時まで延期することで機能します。
これは、各ファイルのブロックの総数(または少なくともボールパーク)がわかっているときに、ファイルのほとんどのブロックを同時に割り当てることで機能します。これにより、ブロックアロケーター(mballoc
MMKの回答で言及)が、ファイルを配置するために適切なサイズの空き領域を見つけてより適切に処理できるようになります。
少なくともExt2(およびExt3については、確かではありませんが)では、ディスク上のフォーマット/構造には、最適化を妨げるものはありません。
デフラグの必要性の欠如は、OSごとに異なる実装レベルにあります。つまり、実装に応じて、Ext2のファイルはフラグメント化される場合とフラグメント化されない場合があります。
断片化が回避される場合、物理ブロックの割り当ての遅延が原因である可能性があります。つまり、実装のあるレベルでは、ファイルシステムは、データがディスクに書き込まれる/コミットされるまで、データをキャッシュ(および論理ブロック番号を介してアクセス)します。データが最終的にディスクに書き込まれるとき、物理ブロックを割り当てる必要があります。割り当てアルゴリズムは、データにいくつかの連続した利用可能な物理ブロックを割り当てる場合があります(またはそうでない場合もあります)。
お役に立てれば。