エクステントは、「ブロックアルゴリズム」の間接参照に対してより効率的なデータのアドレッシングを提供する。旧Silicon Graphics(現SGI)の初期のファイルシステムに実装され、その後XFS(Extended File System)としてIRIXに取り込まれた。現在では、データ表現のスケーラビリティを高める方法としてJFSなどにも取り入れられているほか、データベースエンジンによっても使用されている。
エクステントは連続した論理セットで、「開始ブロック」「サイズ」「オフセット」を用いてデータを管理する。論理セットの内容を表1に示す。
開始ブロック | エクステントが開始されるブロックのアドレス |
---|---|
サイズ | ブロックの容量 |
オフセット | ファイル中でエクステントが占める最初のbyte数 |
表1 エクステントの論理セット |
図4は、エクステントの論理セットが実際にディスクブロックのアドレスをどのように保持しているのかを示している。最初のエクステントの論理セットは「15、30、1」、2番目は「200、210、16」の値を保持している。
開始ブロックアドレス | 15 |
---|---|
エクステントサイズ | 30bytes(15-45) |
オフセット | 最初なので1 |
最初のブロック |
開始ブロックアドレス | 200 |
---|---|
エクステントサイズ | 10bytes(200-210) |
オフセット | 最初のブロック(15)から数えて31番目 |
2番目のブロック |
エクステント方式とブロックアルゴリズムには、主に次のような相違点がある。
図5は、アドレスの指定方法の違いを示している。エクステントベースの方が少ないアドレッシングで大きなデータを扱えることが分かる。
そのほかにも、エクステント内のブロックが連続していることにより、次のようなメリットがある。
スパース(Sparse)ファイルとは、データとデータの間に書き込みのないスペースが存在するファイルである。データベースなど、ランダムアクセスが発生するアプリケーションは、データ領域を論理領域として確保する場合があるため、こうしたファイルを生成する。ファイルシステムによっては、空白のブロック部分をディスクに保存せず、データが存在する部分のみを書き込むなどの方法で、こうしたファイルを効率的に管理している。
エクステントは、実際のデータ部分を「サイズ」で指定できるため、スパースファイルを効率的に管理できる。ファイルシステムは「開始位置」から「サイズ分」をディスクに保存すればよいので、それ以外のスペースをディスクに保存する必要はない。
図8は、開始アドレスが15、サイズが1なので、15から16までが最初のデータブロックとなる。最初のデータなので、オフセットは1である。
2番目に確保されたデータブロックは開始アドレスが210、サイズが1なので、210から211までの大きさである。本来であれば「1+1」が2番目のデータのオフセットとなるが、ここではオフセットは10となっている。これは、1番目のデータと2番目のデータの間に「10−2=8」のギャップが存在しているためである。実際に使用されているデータは、開始位置から2bytesしかない。
このギャップは、最初のエクステントデータに書き込みが行われて値が修正されない限り、ほかのプログラムが使用することはできないようになっている。このように、エクステントではスパースに対応したギャップを置くことで、ほかのデータが途中に書き込まれることによるフラグメンテーションを防いでいる。
ブロックアルゴリズムによるファイルシステムの主な問題点の1つが、「iノードが固定的に割り当てられること」である。iノードはiノードテーブルの順番に従って、連続的に割り当てられる。iノードはオブジェクトの情報を保持しているため、ファイルシステム内に確保できるオブジェクトの上限を制限することを意味している。この制約を克服するために、「動的iノード」方式が提示された。iノード番号を動的に割り当てることによって、iノードの上限値を事実上意識しない方式である。
技術的な実現方法はアルゴリズムに依存するが、この方法を導入するにはiノードのロジカルブロックのマッピング構造やiノードのトラッキング構造など、ファイルシステム全体の見直しが必要となる。JFSなど、動的iノードを導入したファイルシステムでは、ファイルシステムのiノードの配置を組織化するためにB+-Treeの見直しなども行われている。特に、JFSではB+-Treeの葉のノードを形成し、32のiノードを一緒に保持する「iノードエクステント」を使用している。これは、iノードをほかのファイルシステムオブジェクトの近くに配置するものである。
動的iノードは固定的なiノードの制約を解決するものとして期待されるが、いまのところ仕組みが複雑で時間的コストが高いという面もある。
次回は、ここで示した技術が実際に使用されている各ローカルファイルシステムについて紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.