エクステント【extent】
エクステントとは?

コンピュータはデータをストレージに書き込む際、「ブロック」と呼ばれる小さな区画に分けて管理している。一つのファイルが大きくなるほど多くのブロックが必要になるが、それらを一つずつ個別に管理すると、位置情報の記録量が増えてシステムへの負担も大きくなる。そこで、連続して並んだ複数のブロックをまとめてひとかたまりとして扱うエクステントの仕組みが考案された。
エクステントは、「開始位置」と「そこから続く長さ」という二つの情報だけで領域全体を表せる。例えば、ブロックが50個連続していても、先頭の番号と個数という二つの値を記録するだけで済む。ブロックを一つずつ列挙する従来の方式に比べ、管理用データの量を大幅に削減でき、読み書き時の処理も軽くなる。
データが連続した領域に保存されることで、読み出し速度も向上しやすい。磁気ディスクでは読み取り装置を物理的に移動させる必要があるため、データが散在していると動作が遅くなる。エクステント方式でまとまった領域を確保しておけば、装置の移動を最小限に抑えられる。ファイルが断片的にバラバラの場所へ書かれる「断片化」(フラグメンテーション)も起きにくくなる。
システムによって具体的な管理の方法は異なる。Linuxで広く使われる「ext4」や「XFS」などのファイルシステムでは、小さなファイルには短いエクステント、大きなファイルには長いエクステントを割り当てる可変長のエクステントを用いる仕組みを採用している。
一方、データベース管理システム(DBMS)では、管理者があらかじめ長さを指定した固定長のエクステントを使い、テーブルにデータを追加するたびにその単位で領域を確保するのが一般的である。ストレージを仮想的に束ねて管理するLVM(論理ボリュームマネージャ)でも「物理エクステント」「論理エクステント」というk管理単位が用いられる。