第7回 HFS、HFS Plusの基本的概念【前編】Undocumented Mac OS X(4/4 ページ)

» 2007年07月24日 01時53分 公開
[白山貴之,ITmedia]
前のページへ 1|2|3|4       

エクステントオーバーフローファイル

 カタログノードには、8つのエクステントが記録される。8つ以下のエクステントで表現されている限りは、ディスクの連続領域に対する直接参照となるため高速にアクセスできる。しかし、ディスクの断片化が進んだ、またあるいはファイルが非常に大きくなってくると連続領域が確保できなくなり、8つのエクステントでは足りなくなることもある。そんなときに使われるのがエクステントオーバーフローファイルだ。 エクステントオーバーフローファイルは、カタログファイルと同じB-Tree構造を持つ。そのキーとなる構造(HFSPlusExtentKey)はファイルのCNIDに加え、どのフォークなのか、そしてファイルの先頭から通算で何アロケーションブロック目からを格納しているか(startBlock)を格納している(リスト4)


/* HFS Plus Extent key */
struct HFSPlusExtentKey {
        u_int16_t       keyLength;    /* length of key, excluding this field */
        u_int8_t        forkType;    /* 0 = data fork, FF = resource fork */
        u_int8_t        pad;    /* make the other fields align on 32-bit boundary */
        u_int32_t        fileID;    /* file ID */
        u_int32_t        startBlock;    /* first file allocation block number in this extent */
};
typedef struct HFSPlusExtentKey HFSPlusExtentKey;

リスト4 HFS Plusにおけるエクステントキーの構造。自身のCNID、リソースタイプ、そして通算のブロック数で構成されている

 このキーでエクステントオーバーフローファイルを検索すると、また8つのエクステントを取得できる。16のエクステント以上になった場合は、またエクステントオーバーフローファイルを検索する。このとき、startBlockが加算されているため、別のキーになることに注意されたい。

 エクステントによる効率の良いディスク領域の管理と、カタログファイルのB-Treeを用いた強力な検索能力を伴うファイル情報の管理、この2つがHFS Plusの要だ。

次回は

 今回紹介したもの以外にもHFS Plusにはいろいろと興味深い機能や仕様がある。次回は、そうしたものをトピックごとに説明しよう。

関連キーワード

Apple | Mac | Mac OS X


本記事は、オープンソースマガジン2006年2月号「Undocumented Mac OS X」を再構成したものです。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ