コンピューティングにおいて、エクステントとは、ファイルシステム内のファイル用に予約された連続した記憶領域のことで、ブロック番号の範囲、またはカウントキーデータデバイス上のトラックとして表されます。ファイルは0個以上のエクステントで構成でき、1つのファイルフラグメントには1つのエクステントが必要です。直接的な利点は、範囲内のすべてのブロック番号を標準的に格納するのではなく、各範囲を2つの数値としてコンパクトに格納できることです。 [ 1 ]また、エクステントの割り当てにより、ファイルの断片化が少なくなります。
エクステントベースのファイルシステムは、従来ブロック割り当てツリーが占めていた大きなファイルのメタデータオーバーヘッドの大部分を排除することもできます。しかし、その削減量は保存されるデータ量に比べて小さい(一般的にすべてのファイルサイズの場合)一方で、メタデータの大部分を占める(大きなファイルの場合)ため、ストレージ効率とパフォーマンスの全体的なメリットはわずかです。[ 2 ]
断片化を防ぐため、エクステントベースのファイルシステムの多くは、フラッシュ時にアロケーションを行います。多くの最新のフォールトトレラントファイルシステムは、コピーオンライトも行いますが、これは断片化を増加させます。同様の設計であるCP/Mファイルシステムもエクステントを使用しますが、それらは上記の定義とは一致しません。CP /Mのエクステントは、ディレクトリ/アロケーションテーブル内で単一のブロックとして連続して表示され、必ずしもディスク上の連続したデータ領域に対応するわけではありません。
IBM OS/360 および後継システムでは、ファイルはディスクトラックまたはシリンダーの倍数で割り当てられます。当初、ファイルは最大 16 エクステントまで持つことができましたが、この制限はその後解除されました。初期割り当てサイズ、および必要に応じて追加で割り当てるエクステントのサイズは、ジョブ制御言語を使用してユーザーが指定します。システムは初期サイズを連続した領域として割り当てようとしますが、連続した領域が利用できない場合は分割されることがあります。
ファイルシステムエクステントをサポートするシステムには、以下のものがあります。
ファイルシステム以外での採用例としては、以下のようなものがある。
しかし、EXT4 の本当の変更点は、ファイル コンテンツの追跡に、以前の Unix ファイルシステム (EXT2 や EXT3 など) で使用されていた古い非効率的な間接ブロック メカニズムではなく、エクステントを使用することです。エクステントは NTFS ファイルシステムのクラスタ ランに似ています。基本的に、エクステントは初期ブロック アドレスと、エクステントを構成するブロックの数を指定します。断片化されたファイルには複数のエクステントがありますが、EXT4 はファイルの連続性を維持するように非常に努力します。
が有効になっている場合、メタデータブロックの使用を大幅に削減し、ディスク効率をいくらか向上させながら、単一のエクステントで非常に大きなファイルを割り当てることが可能です。