(57)【要約】コンピュータアクセス可能媒体は、実行時に、ファイルに対して１つ又はそれ以上のブロックを割当てる要求を受け取る命令を含む。割当てポリシーが、ブロックが割当てられる１つ又はそれ以上の記憶ユニットを指定する場合、少なくとも１つの割当てポリシーがファイルに割当てられる。更に、１つより多い記憶ユニットが指定される場合、割当てポリシーは、複数の記憶ユニットから選択するメカニズムを指示する制御指示を含む。実行時に、命令は割当てポリシーに従ってブロックを割当てることができる。別の実施では、コンピュータアクセス可能媒体は、実行時にファイルシステムのファイルに１つ又はそれ以上のブロックを割当て、且つ割当てポリシーに従ってブロックを割当てる要求を受け取る命令を含む。割当てポリシーは、ファイルシステムの細分性の２つ又はそれ以上のレベルで指定可能である。
2007526528.tif 000002
【特許請求の範囲】
【請求項１】
実行時に、
ファイルに１つ又はそれ以上のブロックを割当てる要求を受け取る命令であって、前記ファイルに少なくとも１つの割当てポリシーが割当てられ、前記割当てポリシーが前記ブロックが割当てられる１つ又はそれ以上の記憶ユニットを指定し、１つより多い記憶ユニットが指定される場合に制御指示が前記記憶ユニットの中から選択するメカニズムを指示する命令と、
前記割当てポリシーに従ってブロックを割当てる命令と、
を含むコンピュータアクセス可能媒体。
【請求項２】
前記ファイルのｉノードが、前記割当てポリシーを指定することを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項３】
前記ｉノードは、間接ブロック要求のために使用される第１割当てポリシーとデータブロック要求のために使用される第２割当てポリシーとを指定し、前記要求は、前記要求が間接ブロック又はデータブロック用のいずれであるかの指示を含み、実行時に前記命令が、前記指示に応じて前記第１割当てポリシー又は前記第２割当てポリシーのいずれかを選択することを特徴とする請求項２に記載のコンピュータアクセス可能媒体。
【請求項４】
実行時に、前記命令は、前記割当てポリシーがヌルである場合に前記ファイルを含むファイルセットに対応するファイルセットポリシーをチェックすることを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項５】
実行時に、前記命令は、前記ファイルセット割当てポリシーがヌルである場合に前記ファイルセットを含むファイルシステムに対応するファイルシステム割当てポリシーをチェックすることを特徴とする請求項４に記載のコンピュータアクセス可能媒体。
【請求項６】
実行時に、前記命令は、前記ファイルシステム割当てポリシーがヌルである場合にデフォルト割当てポリシーを使用することを特徴とする請求項５に記載のコンピュータアクセス可能媒体。
【請求項７】
実行時に、前記命令は、前記割当てポリシーがヌルである場合に前記ファイルを含むディレクトリに対応するディレクトリ割当てポリシーをチェックすることを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項８】
実行時に、前記命令は、
割当てポリシーの自動割当てが前記ファイルの作成中に指定されるかどうかを判定し、
前記自動割当てが指定される判定に応答して前記割当てポリシーを割当てることを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項９】
前記自動割当てが指定されるかどうかを判定する段階が、ファイル属性と対応する割当てポリシーのテーブルをチェックする段階を含む請求項８に記載のコンピュータアクセス可能媒体。
【請求項１０】
前記ファイル属性は、ファイルネーム接尾辞を含むことを特徴とする請求項９に記載のコンピュータアクセス可能媒体。
【請求項１１】
前記ファイル属性がファイルサイズを含むことを特徴とする請求項９に記載のコンピュータアクセス可能媒体。
【請求項１２】
前記記憶ユニットがボリュームを含むことを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項１３】
前記制御指示は、前記記憶ユニットが前記割当てポリシーで与えられた順序で選択されることを示すことを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項１４】
前記制御指示は、前記記憶ユニットが前記割当てポリシーで指定された最も空きのある記憶ユニットとして選択されることを示すことを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項１５】
前記制御指示は、前記記憶ユニットが最小サイズのエクステントを位置付けるためにスキャンされ、前記最小サイズのエクステントを有する前記記憶ユニットが選択され、前記最小サイズのエクステントが見つからない場合には、前記記憶ユニットは前記割当てポリシーで与えられた順序で選択されることを示すことを特徴とする請求項１に記載のコンピュータアクセス可能媒体。
【請求項１６】
ファイルに１つ又はそれ以上のブロックを割当てる要求を受け取る段階であって、前記ファイルに少なくとも１つの割当てポリシーが割当てられ、該割当てポリシーは、ブロックが割当てられる１つ又はそれ以上の記憶ユニットを指定し、１つより多い記憶ユニットが指定された場合に制御指示は、前記記憶ユニットの中から選択するメカニズムを指定する前記段階と、
前記割当てポリシーに従ってブロックを割当てる段階とを含む方法。
【請求項１７】
前記ファイルのｉノードは、前記割当てポリシーを指定することを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ｉノードは、間接ブロック要求のために使用される第１割当てポリシーと、データブロック要求のために使用される第２割当てポリシーとを指定し、前記要求は、前記要求が間接ブロック又はデータブロックのいずれのためのものか指示を含み、
前記方法は更に、
前記指示に従って前記第１割当てポリシー又は前記第２割当てポリシーのいずれかを選択する段階を含む請求項１７に記載の方法。
【請求項１９】
前記ファイルに割当てられた前記割当てポリシーを変更する段階を更に含み、
前記割当てが、前記割当てを行う時に実際に前記割当てポリシーに応答することを特徴とする請求項１６に記載の方法。
【請求項２０】
実行時に、
ファイルシステムのファイルに１つ又はそれ以上のブロックを割当てるための要求を受け取り、
割当てポリシーに従ってブロックを割当てる
命令を含み、
前記割当てポリシーが前記ファイルシステムの細分性の２つ又はそれ以上のレベルで指定できることを特徴とするコンピュータアクセス可能媒体。
【請求項２１】
細分性の第１レベルは、前記ファイルを含むことを特徴とする請求項２０に記載のコンピュータアクセス可能媒体。
【請求項２２】
細分性の第２レベルは、前記ファイルを含むファイルセットを含むことを特徴とする請求項２１に記載のコンピュータアクセス可能媒体。
【請求項２３】
細分性の第２レベルは、前記ファイルを含むファイルシステムを含むことを特徴とする請求項２１に記載のコンピュータアクセス可能媒体。
【請求項２４】
細分性の第２レベルは、前記ファイルのエクステントを含むことを特徴とする請求項２１に記載のコンピュータアクセス可能媒体。
【請求項２５】
細分性の第２レベルは、前記ファイルの範囲を含むことを特徴とする請求項２１に記載のコンピュータアクセス可能媒体。
【請求項２６】
ファイルシステムで使用するための１つ又はそれ以上の割当てポリシーを生成する段階であって、前記割当てポリシーが、前記ファイルシステムに関連する複数の記憶ユニットへのファイルシステムデータの割当てを制御する前記段階と、
前記方法が更にファイルシステムデータに割当てポリシーを割当てる段階と
を含む方法。
【請求項２７】
前記１つ又はそれ以上の割当てポリシーの各々は、１つ又はそれ以上の記憶特性を有する複数の記憶ユニットの１つ又はそれ以上を指定し、これによってあるファイルシステムデータの割当てが前記１つ又はそれ以上の記憶特性に関係付けられることを特徴とする請求項２６に記載の方法。
【請求項２８】
前記１つ又はそれ以上の記憶特性が、前記記憶ユニットの性能特性を含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記１つ又はそれ以上の記憶特性が、前記記憶ユニットの信頼性特性を含むことを特徴とする請求項２７に記載の方法。
【請求項３０】
前記１つ又はそれ以上の記憶特性が、記憶ユニットに割当てられた少なくとも第１記憶特性を含むことを特徴とする請求項２７に記載の方法。
【請求項３１】
前記第１記憶特性は、管理者によって割当てられることを特徴とする請求項２７に記載の方法。
【請求項３２】
前記ファイルシステムデータが、一次ファイルセットと少なくとも１つの他のファイルセットを含み、割当てポリシーを割当てる前記段階が、前記一次ファイルセットに対する第１割当てポリシーと前記他方のファイルセットに対する第２割当てポリシーとを割当てる段階を含むことを特徴とする請求項２６に記載の方法。
【請求項３３】
前記第１割当てポリシーが、前記複数の記憶ユニットの第１の１つ又はそれ以上を指定し、前記第２割当てポリシーが、前記複数の記憶ユニットの前記第１の１つ又はそれ以上を除いた、前記複数の記憶ユニットの第２の１つ又はそれ以上を指定することを特徴とする請求項３２に記載の方法。
【請求項３４】
前記ファイルシステムデータは、ファイルデータとメタデータを含み、割当てポリシーを割当てる前記段階は、前記ファイルデータに第１割当てポリシーを割当て、前記メタデータに第２割当てポリシーを割当てる段階を含むことを特徴とする請求項２６に記載の方法。
【請求項３５】
前記第１割当てポリシーは、前記複数の記憶ユニットの第１の１つ又はそれ以上を指定し、前記第２割当てポリシーは、前記複数の記憶ユニットの第２の１つ又はそれ以上を指定し、前記複数の記憶ユニットの前記第２の１つ又はそれ以上は、前記複数の記憶ユニットの前記第１の１つ又はそれ以上より高い信頼性特性を有することを特徴とする請求項３４に記載の方法。
【請求項３６】
前記ファイルシステムは、１つ又はそれ以上のログを含み、割当てポリシーを割当てる前記段階は、前記１つ又はそれ以上のログに第１割当てポリシーを割当てる段階と、他のファイルシステムデータに前記複数の割当てポリシーの他方を割当てる段階を含む請求項２４に記載の方法。
【請求項３７】
前記第１割当てポリシーは、前記複数の記憶ユニットの第１の１つ又はそれ以上を指定し、前記第２割当てポリシーは、前記複数の記憶ユニットの前記第１の１つ又はそれ以上を除いた前記複数の記憶ユニットの第２の１つ又はそれ以上を指定することを特徴とする請求項３６に記載の方法。
【請求項３８】
前記１つ又はそれ以上のログはインテントログを含むことを特徴とする請求項３６に記載の方法。
【請求項３９】
前記１つ又はそれ以上のログはファイル変更ログを含むことを特徴とする請求項３６に記載の方法。
【請求項４０】
前記ファイルシステムデータはネームストリームと対応するファイルデータとを含み、割当てポリシーを割当てる前記段階は、前記ネームストリームに第１割当てポリシーを割当て、前記対応するファイルデータに第２割当てポリシーを割当てる段階を含むことを特徴とする請求項２６に記載の方法。
【請求項４１】
前記記憶ユニットはボリュームを含み、第１割当てポリシーが前記ボリュームのいずれかに対する割当てを起こすことを特徴とする請求項２６に記載の方法。
【請求項４２】
前記生成段階は、前記複数の割当てポリシーの１つ又はそれ以上に１つ又はそれ以上の管理制御を適用する段階を含む請求項２６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのためのファイルシステムの分野に関し、更に具体的には、ファイルシステム内のファイルへの記憶領域の割当てに関する。
【背景技術】
【０００２】
コンピュータシステムは、コンピュータシステム上で実行されるオペレーティングシステム及び／又はアプリケーションプログラムによって使用されるファイルを管理するためにファイルシステムを実装する。ファイルシステムソフトウェアは、ファイルシステムのファイルを管理するために実行される。従来は、シングルボリュームネームスペースを有するファイルシステムが通常実装され、従ってファイルシステムの全ファイルは、同じ記憶特性（例えば、記憶装置のタイプ、信頼性特性など）を有する。異なるボリュームは、異なる性能特性、異なるコスト、及び異なる信頼性特性を有する。しかしながら、幾つかのファイルは、他のものよりも「より重要である」と考えられる場合があり、従って、これらのファイルに対して（より低い性能特性という犠牲を払っても）より高い信頼性特性が要求される。別のファイルでは、アクセス及び更新が頻繁になされる場合があり、従って高い性能特性が（より低い信頼性特性という犠牲を払っても）要求される。更にファイルは、データ（ファイルに記憶された情報）とメタデータ（データに関する情報）の両方を有する。メタデータは、データより「更に重要」と考えられることが多く、従ってより高い信頼性特性が要求される。シングルボリュームネームスペースでは、種々のファイル又はファイルの種々の部分の異なる性能、信頼度、及び／又はコスト特性を提供することはできない。
【０００３】
柔軟性をもたせるために幾つかの限定的な試みが行われてきた。例えば、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．（ＳＧＩ）製のＸＦＳファイルシステムは、ビデオサーバー、ビデオ編集などのリアルタイムの重要なアプリケーションで使用される。ＸＦＳファイルシステムは、リアルタイムスペースと「ノーマル」（非リアルタイムスペース）を提供し、リアルタイムスペース内のデータへのリアルタイムアクセスを（場合によってはノーマルスペースへのアクセスを犠牲にして）可能にしようとする。ＱＦＳファイルシステムは、２つのプール、すなわち１つはデータを記憶するためのプール、他方はメタデータを記憶するためのプールに記憶装置を分割する。従って、データ又はメタデータは、対応するプールで自動的に装置に記憶される。他のファイルシステム（例えば、Ｃｏｍｐａｑ  Ｃｏｍｐｕｔｅｒによって後に買収されたＤｉｇｉｔａｌ  Ｅｑｕｉｐｍｅｎｔ  Ｃｏｒｐｏｒａｔｉｏｎ製のＡＤＶＦＳ、Ｃｏｍｐａｑ  Ｃｏｍｐｕｔｅｒもまた、Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄによって買収された）は、ボリュームマネージャの機能を組み込み、ミラーリング、ストライピング、リダンダント・アレイ・オブ・インエクスペンシブ・ディスク（ＲＡＩＤ）などの特性をファイルシステムに直接提供した。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ファイルシステムは、一般に、ファイルについて望ましい特性を有するボリュームにファイルを割当てる柔軟性を持たず、また、望ましい柔軟性を備えるファイルデータやファイルメタデータを割当てるための柔軟性も持たない。
【課題を解決するための手段】
【０００５】
１つの実施態様では、コンピュータアクセス可能媒体は、実行時にファイルに対して１つ又はそれ以上のブロックを割当てる要求を受け取る命令を含む。少なくとも１つの割当てポリシーがファイルに割当てられ、割当てポリシーは、ブロックが割当てられる１つ又はそれ以上の記憶ユニットを指定する。記憶ユニットは、幾つかの実施態様ではボリュームを含み、或いは他の実施態様では記憶装置を含む。更に１つより多い記憶ユニットが１つ又はそれ以上の記憶ユニットに含まれる場合、割当てポリシーは、複数の記憶ユニットの中から選択するメカニズムを指示する制御指示を含む。実行される場合、命令は、割当てポリシーに従ってブロックを割当てることができる。種々の割当てポリシーを種々のファイルに割当てることができ、ファイルを記憶ユニットに割当てる場合の柔軟性を持たせることができる。例えば、種々のファイルは、幾つかの実施において異なる性能、信頼度、コスト特性を有するボリュームに割当てられる。
【０００６】
別の実施態様では、コンピュータアクセス可能媒体は、実行時にファイルシステムで１つ又はそれ以上のブロックをファイルに割当て、且つ割当てポリシーに従ってブロックを割当てる要求を受け取る命令を含む。割当てポリシーは、ファイルシステムでの細分性の２つ又はそれ以上のレベルで指定可能である。例えば、場合によっては、割当てポリシーは、エクステント、ファイル、ディレクトリ、ファイルセット、及び／又はファイルシステムのレベルで指定できる。幾つかの実施態様では、割当てポリシーは、オペレーション中に変更できる。次のブロック割当ては、新しい割当てポリシーに従って行うことができる。別の点から見ると、ブロック割当ては、割当て時に実際に割当てられた１つ又は複数の割当てポリシーに従って実行される。
【発明を実施するための最良の形態】
【０００７】
以下の詳細な説明は、図面の簡単な説明に記載された添付図面を参照する。
【０００８】
本発明は、種々の修正及び他の形態が可能であり、本発明の特定の実施形態が各図面において例証として示され、本明細書で詳細に説明される。しかしながら、本発明の図面や詳細な説明は、開示される特定の形態に本発明を限定するものではなく、逆に、本発明は添付の請求項によって定義される本発明の精神及び範囲内に含まれる全ての修正形態、均等形態、及び代替形態を保護するものである点を理解されたい。
【０００９】
システムの概要
図１は、システムの１つの実施形態のブロック図である。図１の実施形態では、本システムは、実行ハードウェア１０と、該実行ハードウェア１０に結合された複数の記憶装置１２Ａ−１２Ｎとを含む。
【００１０】
実行ハードウェア１０は、使用中に命令を実行するように設計された少なくとも１つのプロセッサを含む。幾つかの実施形態では複数のプロセッサを含めてもよい。実行ハードウェア１０は、任意選択的に、他の構成要素（例えば、プロセッサが実行する命令やプロセッサによる動作を受けるデータを記憶するためのシステムメモリ、種々の入出力（Ｉ／Ｏ）装置、その他の同様のもの）を含む。
【００１１】
記憶装置１２Ａ−１２Ｎは、何らかのタイプのコンピュータアクセス可能媒体を含む。例えば、種々の実施形態において記憶装置１２Ａ−１２Ｎは、小型コンピュータ用周辺機器インターフェース（ＳＣＳＩ）ディスク、統合ドライブエレクトロニクス（ＩＤＥ）ディスク、パーソナルコンピュータメモリーカード国際協会（ＰＣＭＣＩＡ）ディスク、ユニバーサルシリアルバス（ＵＳＢ）ディスク、ファイアワイヤディスクなどを含むことができる。記憶装置１２Ａ−１２Ｎは更に、バッテリーバックアップ式ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）などの種々のプログラム可能読出し専用メモリ（ＰＲＯＭ）といった種々の不揮発性メモリ装置を含むことができる固体素子記憶装置（例えば記憶装置１２Ｎ）を更に含むことができる。記憶装置１２Ａ−１２Ｎは、フロッピー（登録商標）ディスクなどの取外し可能記憶装置を含むこともできる。記憶装置１２Ａ−１２Ｎは、種々の周辺相互接続（例えば、ＩＤＥ、周辺機器相互接続（ＰＣＩ）、ＵＳＢ、シリアル又はパラレルインターフェースなど）を介して実行ハードウェア１０に結合させることができる。或いは、記憶装置１２Ａ−１２Ｎを、ネットワーク（有線又は無線）を介して実行ハードウェアに結合することができる。記憶装置１２Ａ−１２Ｎは、ストレージエリアネットワーク（ＳＡＮ）に構成することができ、或いは幾つかの実施形態ではネットワーク結合記憶装置（ＮＡＳ）とすることができる。直接結合記憶装置やネットワーク記憶装置の組合せは、種々の実施形態で使用することができる。
【００１２】
図２は、図１に示されたシステムの幾つかの実施形態で使用可能なあるソフトウェアインフラストラクチャを示すブロック図である。図２の実施形態では、ファイルシステム１４、ボリュームマネージャ１６が示されており、かつ記憶装置１２Ａ−１２Ｎを含むボリュームが示されている。ファイルシステムとボリュームマネージャソフトウェアは、使用中に、実行ハードウェア１０上で実行することができる。
【００１３】
一般に、ボリュームマネージャ１６は、記憶装置１２Ａ−１２Ｎをボリューム（及び／又はボリュームのセット）に編成し、ファイルを記憶するためにファイルシステム１４がボリュームを使用することができるようにするソフトウェアを含む。種々のボリュームは、種々の特性（例えば、種々の性能特性値、種々の信頼性特性値など）を有する。本明細書で使用される「ボリューム」という語は、ユニットとして編成され且つ呼称される、１つ又はそれ以上の記憶装置１２Ａ−１２Ｎ上の記憶ブロックの集合体を示す。ボリュームは、記憶装置のブロックの全て、記憶装置のブロックの一部分（例えばディスクパーティション）、複数の記憶装置のブロックの全て、又は複数の記憶装置の各々のブロックの一部分を含むことができる。本明細書で使用される「記憶ブロック」、又はより簡潔に「ブロック」は、記憶装置上（又はボリューム内）の記憶スペースの割当ての最小単位である。ブロックサイズは、実施形態毎に異なっていてもよい。例えば、４キロバイトのブロックサイズが一般的であるが、あらゆるブロックサイズを使用することができる。
【００１４】
ボリュームの編成は、ある性能及び／又は信頼性特性を提供することができる。例えば、図２のボリューム１は、記憶装置１２Ａ−１２Ｂを含むミラーボリュームである。ボリュームマネージャ１６は、同じデータを記憶装置１２Ａ−１２Ｂの両方に書き込むことができ、このため、装置１２Ａ−１２Ｂの一方に障害があってもデータ消失を生じることがない。従って、ボリューム１はミラーリング冗長性を提供する。他のボリュームは、冗長性の追加（従ってより高い信頼度）をもたらすように、データの付加的なミラーリングを行うために更に多くの記憶装置を含むことができる。信頼度の別の例として、ボリューム３は、ボリュームマネージャ１６がＲＡＩＤ記憶装置として管理することができる複数の記憶装置（図２の装置１２Ｄ及び１２Ｅを含む）を含む。例えば、ＲＡＩＤレベル５を、幾つかの実施形態において実装することができる。他の実施形態では、どのようなＲＡＩＤレベルも実装することができる。性能特性値の幾つかは、記憶装置又はボリュームに含まれる記憶装置に由来するもの（例えば、異なるタイプの装置は、異なる待ち時間特性と帯域幅特性を有する）とすることができる。従って、ボリューム２、６は、ボリュームに含まれる記憶装置１２Ｃと１２Ｎに基づく異なる性能特性を有することができる。しかしながら、性能特性はまた、ボリューム編成により設定することもできる。例えばボリューム４は、性能を向上させるためにストライピングされた記憶装置１２Ｆと１２Ｇを含む。性能と信頼性特性に加えて、各ボリュームは、ベースとなる記憶装置のコストに基づくコスト特性を有することができる。更に、幾つかのボリュームは、同じコスト、同じ性能、同じ信頼性特性を有するよう決めることもできる。種々のユーザーは、このようなボリュームの種々のものを使用して、ユーザーがボリュームにアクセスする際に互いに干渉しないことを保証する（例えば、各ユーザーが対応するボリュームに専用の帯域幅を有することを保証する）ことができる。
【００１５】
ボリュームマネージャ１６はまた、ボリュームセット（例えば図２のボリュームセット１８）の作成をサポートすることができる。本明細書で使用される「ボリュームセット」は、ファイルシステム１４がアクセスするための単一オブジェクトとして編成される１つ又はそれ以上のボリュームの集合体とすることができる。ボリュームセット内のボリュームは、ボリュームセット名とボリュームセット内の要求されるボリュームのインデックスとを使用してファイルシステム１４がアドレス指定することができる。ボリュームセット内のボリュームは、異なる特性を有することができる（例えば、ボリュームセット１８内のボリューム５とボリューム７とは異なる特性を有していてもよい）。
【００１６】
一般に、ファイルシステム１４は、より高レベルのソフトウェア（たとえばオペレーティングシステム、アプリケーションプログラムなど）によって使用されるファイルを編成し追跡するソフトウェアを含むことができる。ファイルシステム１４は、ディレクトリへファイルの階層的編成を提供することができ、ファイルの記憶スペースの割当てを管理する。図２の実施形態では、ファイルシステム１４は、ファイルデータ（及びファイルメタデータ）を記憶するためにボリュームマネージャ１６によって与えられた１つ又はそれ以上のボリューム上にブロックを割当てることができる。他の実施形態では、ボリュームマネージャ１６を含まない場合には、ファイルシステム１４が種々の記憶装置１２Ａ−１２Ｎにブロックを直接割当てることができる。このような実施形態では、各記憶装置１２Ａ−１２Ｎは、ファイルシステム１４によってボリュームに類似して処理することができる。ファイルシステムに記憶された全データ（例えば、ファイルデータ、メタデータなど）は、本明細書ではファイルシステムデータと呼ぶことができる。
【００１７】
割当てポリシー
ファイルシステム１４は、ファイルシステムに対する種々の割当てポリシーの指定を行うことができる。一般に、「割当てポリシー」は、割当てに使用することができる１つ又はそれ以上の記憶ユニットを指定することができる。記憶ユニットは、ボリュームマネージャ１６を実装する実施形態において、ボリューム（ボリュームセット内のボリュームを含む）を含み、記憶ユニットは、ボリュームマネージャ１６を実装しない実施形態において、記憶装置１２Ａ−１２Ｎを含むことができる。以下の説明を簡潔にするために、割当てポリシーは、１つ又はそれ以上のボリュームを指定するものとして説明する。しかしながら、他の実施形態では、１つ又はそれ以上の記憶装置を有してもよく、同様のオペレーションでは、「ボリューム」の代わりに「記憶装置」を用い（又は、より一般的には「ボリューム」の代わりに「記憶ユニット」を用い）てもよい。更に、割当てポリシーが１つより多い記憶ユニットを指定する場合、該割当てポリシーは、複数の記憶装置の中から選択するためのメカニズムを指示する制御指示を含む。幾つかの実施形態では、多様な他の制御フラグを備えることができる（例えば、非特権ユーザーがポリシーをファイルに割当てることができるかどうかの指示、ポリシーが全ての割当てに対して厳格に守られるべきかどうかの指示など）。また割当てポリシーは、該割当てポリシーが指定されていないことを意味する「ヌル」として符号化できる。種々の実施形態において、デフォルト割当てポリシーを用いてブロックを割当てることができ、或いは他のレベルの細分性が指定された割当てポリシーを用いてもよい。
【００１８】
ファイルシステム１４は、ファイルに対してブロックを割当てる際に割当てポリシーを用いる。すなわち、ファイルシステム１４は、割当てポリシーによって指定されたボリューム上にブロックを割当て、割当てポリシーで指定されていないボリューム上にはブロックを割当てない（例え割当てポリシーで指定されていないボリューム上でブロックが使用可能な場合でも）。割当てポリシーを用いて、所与のファイルに対してどのボリュームが使用されるかを制御することができ、従って、幾つかの実施形態において、種々のファイルが記憶される記憶装置の性能、コスト、信頼性特性の管理の点でファイルシステム１４のユーザーに対する柔軟性を与えることができる。幾つかの実施形態では、ボリュームは、管理者によって割当てられる１つ又はそれ以上の特性を有する。これらの割当てられた特性は、例えば、ボリュームの外部にあり且つ管理者に周知の情報に基づいてボリュームを識別することができる。例えば、管理者は、ボリュームの位置、ネットワーク上で予測されるボリュームとのトラフィックなどを識別する特性を割当てることができる。割当てポリシーは、このような割当てられた特性に基づいて割当てを制御するように定義することができる。割当てられた特性は、何らかの様式（例えば、名前／値のペア）で表すことができる。
【００１９】
１つの実施形態では、割当てポリシーを、ファイルに対し個々に割当てることができる。すなわち、各ファイルは、割当てられた１つ又は複数の割当てポリシーを有することができる。例えば、１つの実施形態において、ファイルは１つ又はそれ以上のｉノードにより記述することができる。一般に、本明細書で使用される「ｉノード」は、ファイルを記述するデータ構造を含むことができる。ｉノードは、ファイルシステム内に記憶され、ファイルシステムのファイルを識別するのに使用される。ｉノードは、ファイルに割当てられた１つ又は複数の割当てポリシーを記憶することができる（又は、割当てポリシーを識別するラベルを記憶する。割当てポリシー自体は、割当てポリシーデータ構造内に記憶することができる）。従って、各ファイルは、１つの割当てポリシーを有し、種々のファイルに対する割当てポリシーは異なっていてもよい。更に、幾つかの実施形態では、ファイルデータのためのｉノードとファイルメタデータのためのｉノードは異なるものとすることができる。従って、ファイルデータとファイルメタデータのための割当てポリシーは異なることがある。例えば、ファイルメタデータは、対応するファイルデータよりも信頼性特性が高いボリューム上に記憶することができる。同様に、ファイルメタデータの種々のタイプに対して個別のｉノードがあってもよく、メタデータの種々のタイプに対して異なる割当てポリシーが可能である。一般に、メタデータは、ファイル（又はファイル内のデータ）を記述するデータとすることができる。例えば、ディレクトリ情報をメタデータとすることができる。種々の拡張されたファイル属性（オペレーティングシステム又はアプリケーションプログラムなどの高レベルのソフトウェアによって使用される）をメタデータとして記憶することができる。ファイルへのシンボリックリンクはメタデータとすることができる。種々の実施形態において、何らかのメタデータを備えることができる。また、割当てポリシーは、ｉノードタイプ毎（例えば、メタデータｉノードに対してのファイルデータｉノード、又はディレクトリデータ、拡張ファイル属性、シンボリックリンクなどの種々のタイプのメタデータｉノード、など）に割当てることができる。
【００２０】
別の実施形態では、割当てポリシーは、ファイルシステムの１つより多いレベルの細分性で割当てることができる。例えば割当てポリシーは、ファイルシステム全体、ファイルシステム内のファイルセット、ファイルシステム又はファイルセット内のディレクトリ、ファイルシステム（又はファイルセット）内のファイルに割当てることができる。所与の割当てでは、ヌルではないファイルに対して細分性が最も細かいレベルの割当てポリシーを用いることができる。別の実施形態では、割当てポリシーはまた、ファイル内の各エクステントに割当てることができる。本明細書で使用される「エクステント」とは、ファイルに割当てられるボリューム内の連続したブロックのセットである。エクステントに割当てポリシーを割当てることで、エクステントが拡張される場合にエクステントに付加される記憶領域を管理できるようになる。更に別の実施形態では、割当てポリシーはファイルの範囲に割当てることができる。
【００２１】
ファイルシステムは、１つ又はそれ以上のファイルセットを含むことができる点に留意されたい。ファイルセットは、ユニットとして（ボリュームセットとボリュームとの関係に類似して）処理されるファイルの集合体とすることができる。幾つかの実施形態では、ファイルセットは、ファイルシステム内の独立したネームスペースとすることができる。１つの実施形態では、ファイルセットは、バックアップ目的で使用することができる。ファイルセットの１つは、プライマリ（アクティブ）ファイルセットとすることができ、他のファイルセットは、バックアップ目的のためのファイルシステム状態をスナップショットするクローンとすることができる。このような実施形態では、ファイルセットはまた、「チェックポイント」と呼ぶこともできる。
【００２２】
割当てられた１つ又は複数の割当てポリシーは、必要に応じてオペレーション中に動的に変更することができる。対応するファイルに対する新しい割当ては、新しい割当てポリシーに従う。必要であれば、ファイルに対する記憶領域は、新しい割当てポリシーが全ファイルに使用されるようにポリシー変更後に再割当てすることができる。
【００２３】
ここで図３を参照すると、ファイルシステム１４の一部の１つの実施形態のブロック図が示されている。図３の実施形態では、ファイルシステム１４は、アロケータ２０、アプリケーションプログラミングインターフェース（ＡＰＩ）２２、コマンドインターフェース２４を含む。アロケータ２０、ＡＰＩ２２、コマンドインターフェース２４は、ファイルシステムポリシー、１つ又はそれ以上のファイルセットポリシー（例えば、ファイルシステム内の各ファイルセットに対して１つ）、ファイルへの割当てのために定義することができる他の種々のポリシーへアクセスすることができる。ファイルシステムポリシー、ファイルセットポリシー、その他のポリシーは共に、ファイルシステム１４に対する複数の割当てポリシー２６を形成することができる。複数の割当てポリシー２６は、データ構造として（例えばファイルシステム１４のボリュームの１つに）ファイルシステム１４によって記憶させることができる。またアロケータ２０は、ファイルシステム内の各ボリュームに対してフリーブロックを定義するデータ構造のセットにアクセスすることができる（例えば、ボリューム１に対するフリーブロックリストが参照番号２８Ａで、及びボリュームＮに対するフリーブロックリストが参照番号２８Ｎで図３に示されている）。
【００２４】
アロケータ２０は、実行時に（例えば実行ハードウェア１０で）ブロック割当て要求に応答してファイル記憶領域にブロックを割当てる命令を含むことができる。ブロック割当て要求は、ファイルを更新しているアプリケーションプログラム、オペレーティングシステムソフトウェアなどが参照することができる。ブロック割当て要求は、ファイルに割当てられた割当てポリシー（又はその指示）と、要求されているブロック数を含む。或いは、ブロック割当て要求は、ファイルが割当てられることになるブロックを識別でき、アロケータ２０は、ファイルに対応する割当てポリシーを（例えば割当てポリシー２６などのアロケータ２０にアクセス可能なデータ構造から）取得する。例えば、１つの実施形態では、ブロック割当て要求は、ブロックを要求しているｉノードを含むと共にブロック数を含む。ｉノードは、ブロックを要求しているファイルを識別することができ、また、ファイルに割当てられた割当てポリシーを指定することができる。他の実施形態では、ファイルに対する割当てポリシーは、アロケータ２０によってアクセス可能なデータ構造（例えば、割当てポリシー２６）内に記憶することができ、従って、ブロック割当て要求には明示的には指定されない場合がある。このような実施形態では、アロケータ２０は、ファイル識別（例えばｉノード）を用いて、ｉノードのための割当てポリシーをルックアップすることができる。
【００２５】
アロケータ２０は、ブロック割当て要求に対してファイルの割当てポリシーを適用することができ、割当てられたブロック数及びブロックへのポインタを要求側に戻すことができる。実際に割当てられるブロック数は、要求されたブロック数よりも少ないこともある（例えば、ブロック数が、割当てポリシーに含まれるボリュームのうちの１つに対する連続したグループとして位置付けられない場合）。このような場合、要求側は、所望のブロック数が割当てられるまで（又はブロックを割当てることができないことを示すエラーが発生するまで）要求を繰り返す（要求されたブロック数から割当てられたブロック数を減算する）ことができる。割当てに利用可能なブロックは、フリーブロックリスト２８Ａ−２８Ｎによって示すことができ、アロケータは、ファイルへのブロックの割当てに応答して、リストから割当てられたブロックを取り除くためにフリーブロックリスト２８Ａ−２８Ｎを更新できる。割当てポリシーが種々の細分性のレベルで指定される実施形態では、アロケータ２０は、要求に対し使用可能な細分性の最も細かいレベルで且つヌルではない割当てポリシーを適用することができる。
【００２６】
コマンドインターフェース２４は、種々の管理コマンドに応答（例えば実行ハードウェア１０上で）して、実行される命令を含むことができる。管理コマンドは、ユーザーが（例えばコマンドセシェルを介して）入力することができる。割当てポリシーに関係するコマンドのセットを（例えば割当てポリシーの追加、ポリシーの割当て、ポリシーの変更などのために）実装することができる。コマンドのセットの例を図１２に示し、以下に詳細に説明する。ＡＰＩ２２は、アプリケーションプログラムによって作成されたアプリケーションコマンドを受け取る。アプリケーションコマンドは、ＡＰＩ２２における種々のソフトウェアルーチンへのコールである。アプリケーションコマンドは、管理コマンドのサブセットとすることができ、割当てポリシーを管理するためにアプリケーション（及びオペレーティングシステムソフトウェア）が使用することができる。幾つかの実施形態では、割当てポリシーを管理するために使用されるアプリケーションコマンドのセットは、管理コマンドのセットと同じものとすることができる。ファイルシステム１４の管理者は、割当てポリシーを管理するためにどの程度の許可がアプリケーションに提供されるかを制御することができ、ＡＰＩ２２は、その許可に何らかの制限を課すことができる。
【００２７】
次に図４を参照すると、ｉノード３０の１つの実施形態のブロック図が示されている。図４の実施形態では、ｉノード３０は、データポリシーフィールド３２、間接ポリシーフィールド３４、他の属性３６、ポインタフィールド３８を含む。
【００２８】
図示の実施形態では、データポリシーフィールド３２と間接ポリシーフィールド３４によりｉノード毎に２つの割当てポリシーを提供している。直接ポリシーフィールド３２で指定されたデータポリシーは、データブロック要求に使用することができ、間接ポリシーフィールド３４で指定された間接ポリシーは、間接ブロック要求に使用される。従って、この実施形態では、アロケータ２０によって受け取られるブロック割当て要求はまた、要求がデータブロック又は間接ブロックのいずれかの指示を含むことができる。本明細書で使用されるデータブロックは、ファイルデータ（又はメタデータ）を記憶するために割当てられたブロックである。間接ブロックは、１つ又はそれ以上のデータブロック或いは他の間接ブロックの指示を記憶するのに割当てられたブロックである。間接ブロックは、ファイルインデクシングのいずれかの形式（例えば、データブロック又は他の間接ブロックへのポインタ、データブロック又は他の間接ブロックを識別するビットマップなど）を含むことができる。間接ブロックの割当てポリシーとは異なるデータブロックの割当てポリシーを有することが望ましいことがある。データブロックは大きなエクステントで割当てられる場合が多いが、間接ブロックは少数のブロックとして割当てられる場合が多い。異なる割当てポリシーを使用することによって、間接ブロック割当ては、データブロック割当てに使用されることになるボリュームを細分化する可能性を低くすることができる。直接ポリシーフィールド３２と間接ポリシーフィールド３４が、実際のポリシー自体ではなく割当てポリシー２６のうちの１つを識別するラベルを記憶することができる点に留意されたい。本明細書で使用されるｉノードは、割当てポリシーを含むこと又は割当てポリシーを識別するラベルを含むことのいずれかによって、割当てポリシーを「指定」することができる。
【００２９】
ポインタフィールド３８は、ブロックへの１つ又はそれ以上のポインタを記憶することができる。幾つかの実施形態では、ファイルデータがポインタフィールド３８内に記憶するのに十分小さい場合、ファイルデータを１つ又は複数のポインタの代わりに記憶することができる。
【００３０】
他の属性３６は、ｉノードに対応するファイルの他の情報（例えばアクセス許可、オーナー、タイムスタンプなど）を記憶することができる。必要に応じて、他のどのような情報も記憶することができ、或いは情報を全く記憶できない場合もある。１つの実施形態では、他の属性３６は、ポインタフィールド３８が、ファイルデータ、データブロックへの１つ又はそれ以上のポインタ、或いは間接ブロックへの１つ又はそれ以上のポインタを含むかどうかを示すことができる。
【００３１】
図５、６、７は、ｉノード３０の種々の実施形態である、ｉノード３０Ａ、ｉノード３０Ｂ、ｉノード３０Ｃを示す。ｉノード３０Ａは、ポインタフィールド３８内に記憶されたファイルデータを有するｉノードの例である。ｉノード３０Ｂは、データブロック（例えば、図６のブロック４０Ａ、４０Ｂ）への１つ又はそれ以上のポインタを有するｉノードの例である。ｉノード３０Ｃは、間接ブロックへの１つ又はそれ以上のポインタ（例えば、間接ブロック４２Ａはデータブロック４４Ａ、４４Ｂをポイントし、間接ブロック４２Ｂはデータブロック４４Ｃ、４４Ｄをポイントする）を有するｉノードの例である。図５、６、７に示されるように、各ｉノード３０Ａ−３０Ｃは、データポリシーフィールド３２と間接ポリシーフィールド３４を含む。
【００３２】
２つの割当てポリシーフィールドが図４−７の実施形態に示されているが、他の実施形態では、１つの割当てポリシーが１つのｉノード毎に指定されたり、或いは２つより多い割当てポリシーが１つのｉノード毎に指定されてもよい。更に、割当てポリシーフィールドは、種々の実施形態の他の場所に記憶することができる。例えば、割当てポリシーフィールドは、他のメタデータと共に記憶することができる。また割当てポリシーフィールドはまた、間接ブロックなどにも記憶することができる。
【００３３】
図８を参照すると、ブロック割当て要求に応答したアロケータ２０の１つの実施形態のオペレーションを示すフローチャートが示されている。図８に示された実施形態は、割当てポリシーを種々のレベルの細分性で設定することができる実施形態に使用することができる。図示の実施形態では、割当てポリシーがｉノードにおいて備えられ（例えば図４）、また、ファイルセットとファイルシステムのレベルで指定することができる。図８のフローチャートは、実行時に図８に示されたオペレーションを実施するアロケータ２０に含まれる命令を表している。
【００３４】
アロケータ２０は、ブロック割当て要求がデータブロック（又は複数のブロック）或いは間接ブロック（又は複数のブロック）用のものかどうかを判断する（決定ボックス５０）。この要求がデータブロック用である場合、アロケータ２０は、要求において備えられるｉノードによって指定されたデータポリシーをチェックする（決定ボックス５２）。データポリシーがヌルでない（決定ボックス５２の「Ｙｅｓ」の区間）場合、アロケータ２０は、ブロック（複数のブロック）を割当てるためにデータポリシーを適用する（ボックス５４）。他方、要求が間接ブロック用である場合、アロケータ２０は、要求において備えられるｉノードによって指定された間接ポリシーをチェックする（決定ボックス５６）。間接ポリシーがヌルでない（決定ボックス５６の「Ｙｅｓ」区間）場合、アロケータ２０はブロック（複数のブロック）を割当てるために間接ポリシーを用いる（ボックス５８）。
【００３５】
要求が間接ブロック（複数の間接ブロック）のためであり、ｉノードによって指定された間接ポリシーがヌルである場合、或いは要求がデータブロック（複数のデータブロック）のためであり、ｉノードによって指定されたデータポリシーがヌルである場合には、アロケータ２０は、ファイルを含むファイルセット用のファイルセットポリシーをチェックする（決定ボックス６０）。ファイルセットポリシーがヌルでない（決定ボックス６０の「Ｙｅｓ」区間）場合には、アロケータ２０は、ブロック（複数のブロック）を割当てるためにファイルセットポリシーを適用する（ボックス６２）。同様に、ファイルセットポリシーがヌルである場合、アロケータ２０は、ファイルシステムポリシーをチェックする（決定ボックス６４）。ファイルシステムポリシーがヌルでない（決定ボックス６４の「Ｙｅｓ」区間）場合、アロケータ２０は、ブロック（複数のブロック）を割当てるためにファイルシステムポリシーを適用する（ボックス６６）。ファイルセットポリシーがヌルである（決定ボックス６４の「Ｎｏ」区間）場合、アロケータ２０は、デフォルトポリシーを適用する（ボックス６８）。デフォルトポリシーは、要求されるどのようなポリシーであってもよい。例えば、デフォルトポリシーは、ファイルシステムに付加された何らかのボリュームにブロックを割当てるものとする。
【００３６】
アロケータ２０は、ポインタを割当てられたブロック（複数のブロック）と割当てられた多数のブロックに戻す（ボックス７０）。上述のように、場合によっては、所与の要求に対して要求されたブロック数よりも少ないものが割当てられることがある。所与の要求に割当てられるブロックがない場合には、代わりにエラーを戻すことができる。
【００３７】
図８の実施形態は、細分性のｉノード（ファイル）レベルの別個のデータ及び間接ポリシーと、細分性がより粗いレベル（例えばファイルセットとファイルシステムのレベル）での１つのポリシーとを示している。他の実施形態では、細分性のより粗いレベルは、同様に別個のデータと間接ポリシーを有する。このような実施形態では、間接又はデータポリシーは、ブロック割当て要求がデータブロック（複数のデータブロック）用か、又は間接ブロック（複数の間接ブロック）用であるかに基づいて各粗いレベルで選択される。
【００３８】
図示された実施形態は、ファイル、ファイルセット、細分性のファイルシステムレベル（及びポリシーが指定されない場合はデフォルト）の割当てポリシーを含むが、他の実施形態では、細分性の何らかのサブセットを使用する。他の実施形態は、図示のレベル（又は図示のレベルの何らかのサブセット）に加えて、細分性のエクステント又はファイル範囲レベルを実装する。
【００３９】
他の実施形態では、ファイルシステム１４は、割当てポリシー用の細分性の複数レベルを実装することができない（すなわち、ファイルレベルポリシーだけを実装する）。このような実施形態では、デフォルトポリシーは、要求が間接ブロック（複数の間接ブロック）用であり且つｉノードによって指定された間接ポリシーがヌルである場合、或いは要求がデータブロック（複数のデータブロック）用であり且つｉノードによって指定されたデータポリシーがヌルである場合に使用する。
【００４０】
別の実施形態では、アロケータ２０が要求タイプに応じて、ｉノードに指定されたデータポリシーと間接ポリシーだけをチェックする点に留意されたい。種々の細分性でのポリシーは、ファイルが作成されるときに有効にする。すなわち、図８のフローチャートと同様のコード実行は、作成されているファイルのｉノードにおいてデータポリシーフィールド３２と間接ポリシーフィールド３４を設定するためにファイル作成中に実行する（ユーザー指定のポリシーを割当てることができる場合、或いはユーザー指定のポリシーが備えられないときにファイルセット又はファイルシステムポリシーを使用する場合）。
【００４１】
上述のように、種々の割当てポリシーは、使用中に動的に修正される。図８のフローチャートは、ブロック割当て要求が受け取られた時に実際に割当てポリシーを使用する。
【００４２】
ブロック５４、５８、６２、６６の各々で、割当てポリシーが適用される。割当てポリシーの適用には、一般に、１つより多いボリュームがリストされる場合の制御指示の制御下で割当てポリシーに含まれるボリュームから割当てを試みる段階を含む。種々の制御指示符号化用のポリシーを適用する幾つかの例を図９−１１に示す。すなわち、割当てポリシーでの制御指示に応じて、ブロック５４、５８、６２、６６のいずれかが、図９−１１に示されたフローチャートのいずれかを使用して実施する。図９−１１のフローチャートは、実行時に図９−１１に示されたオペレーションを実施するアロケータ２０を形成する命令を各々表す。
【００４３】
図９は、「ａｓ  ｇｉｖｅｎ」ポリシーのアプリケーションを示すフローチャートである（すなわち、制御指示は、「ａｓ  ｇｉｖｅｎ」を示すようにコード化される）。このポリシーでは、割当てポリシーにリストされた順序でボリュームから割当てようとする試みが行われる。すなわち、割当てポリシーの第１ボリュームが使用可能な少なくとも１つのブロックを有する場合、そのブロックは、要求に応じて割当てられる。第１ボリュームがフルである場合、割当てポリシーの第２ボリュームから割当てようとする試みが行われる。
【００４４】
従って、アロケータ２０は、割当てポリシーにリストされた順序でボリュームをスキャンする（更に具体的には、アロケータ２０は、ボリューム用のフリーブロックリスト２８Ａ−２８Ｎにアクセスする）（ボックス８０）。アロケータ２０は、スペースを有する割当てポリシーにおける第１ボリュームに１つ又はそれ以上のブロックを割当てることができる（ボックス８２）。
【００４５】
或いは、アロケータ２０は、要求された割当てサイズのボリュームを（割当てポリシーにリストされた順序で）スキャンし、要求されたサイズの連続したブロックを有する第１ボリュームに要求サイズを割当てることができる。要求されたサイズが使用可能でない場合、アロケータ２０は、割当てに使用可能ないずれかのブロックを有する第１ボリュームからブロックを割当てる。
【００４６】
図１０は、「ｌｅａｓｔ  ｆｕｌｌ」ポリシーのアプリケーションを示すフローチャートである（すなわち、制御指示は「ｌｅａｓｔ  ｆｕｌｌ」を示すようにコード化される）。このポリシーでは、ブロックは、最も空きのある（例えば、使用可能な最も多くのブロックを有する、又は種々の実施形態でボリュームの総ブロックのパーセンテージとして使用可能な最も多くのブロックを有する）割当てポリシーのボリュームに割当てられる。従って、アロケータ２０は、最も空きのあるボリュームを位置付けるためにボリュームをスキャンする（更に具体的には、アロケータ２０はボリュームのためのフリーブロックリスト２８Ａ−２８Ｎにアクセスする）（ボックス８４）。アロケータ２０は、最も空きのあるボリュームにブロックを割当てることができる（ボックス８６）。
【００４７】
順序及びフルネス以外の他の基準を用いて、ブロック割当て要求に応答して割当て用の割当てポリシーに指定されたボリュームの中から選択可能である。例えば、ボリュームの細分化を考慮することができ、ブロック割当て要求とは無関係に備えられる望ましい最小割当てサイズを考慮する、等々。例えば、図１１は、「ＭｉｎＳｉｚｅ」ポリシー（すなわち、制御指示が「ＭｉｎＳｉｚｅ」を示すようにコード化される）のアプリケーションを示すフローチャートである。このポリシーでは、アロケータ２０は、割当てポリシーでのボリュームのいずれかから要求サイズ（ブロック数）のより小さいもの又は最小サイズ（ブロック数）を割当てようと試みる。最小サイズは、プログラム可能（ファイルシステムに対して大域的、又は割当てポリシー内で）とすることができ、又は固定とすることもできる。
【００４８】
従って、アロケータ２０は、ポリシーにリストされた順序でボリュームをスキャンする（より具体的には、アロケータ２０はボリューム用のフリーブロックリスト２８Ａ−２８Ｎにアクセスする）（ボックス８８）。最小サイズ（又は要求されたサイズ）のブロックが位置付けられた（ボックス９０の「Ｙｅｓ」区間）場合、アロケータ２０は、位置付けられたボリュームにブロックを割当てることができる（ボックス９２）。最小サイズ（又は要求されたサイズ）のブロッが位置付けられなかった（ボックス９０の「Ｎｏ」区間）場合、アロケータ２０は、ブロックを割当てるためにａｓ  ｇｉｖｅｎポリシーを使用する（ボックス９４）。
【００４９】
他のポリシーも同様に考慮される。例えば、他のポリシーを選ぶ前に１つのポリシーをどの程度まで適用するかを示す重みを備えた、「ａｓ  ｇｉｖｅｎ」と「ＭｉｎＳｉｚｅ」ポリシーとを組み合わせたポリシーとする。更に、複数の割当てポリシーを所与のファイル用に要求されるボリュームのサブセットに適用可能である。
【００５０】
次に図１２を参照すると、割当てポリシーに関してコマンドインターフェース２４によってサポートする種々の管理コマンドの１つの実施形態のテーブルが示されている。コマンドの同様のセット、又はサブセットは、ＡＰＩ２２を介したアプリケーションからサポートする。他の実施形態は、必要に応じてコマンドのいずれかのサブセット、又は他の付加的なコマンドを実装する。他の付加的なコマンドは、同様に他のファイルシステム機能についてサポートする。
【００５１】
ボリューム追加コマンドを用いて、ファイルシステムにボリュームを追加する。ボリューム追加コマンドは、どの割当てポリシーにもボリュームを追加することができない。ボリューム除去コマンドを用いて、ファイルシステムからボリュームを取り除くことができる。ボリューム除去コマンドは、ボリュームが１つ又はそれ以上の割当てポリシーで依然として指定される機能をなくすことができる。ボリュームサイズ変更コマンドを用いて、ボリュームのサイズ変更をする（例えば、ボリュームのブロック数を増減させるため）ことができる。
【００５２】
割当てポリシー作成コマンドを用いて、割当てポリシーを作成する（例えば、割当てポリシー２６に新しい割当てポリシーを追加するため）ことができる。割当てポリシー削除コマンドを用いて、割当てポリシー２６から割当てポリシーを削除する。割当てポリシー情報コマンドを用いて、指定された割当てポリシーのコンテンツを検索する。
【００５３】
ファイルセット割当てポリシー割当てコマンドは、細分性のファイルセットレベル用の１つ又は複数の割当てポリシーを割当てることができる。同様に、ファイルシステム割当てポリシー割当てコマンドを用いて、細分性のファイルシステムレベル用の１つ又は複数の割当てポリシーを割当てることができる。対応するファイルセット割当てポリシー情報とファイルシステム割当てポリシー情報コマンドを用いて、細分性のファイルセットとファイルシステムレベルでのポリシーのコンテンツをそれぞれ検索する。
【００５４】
ファイル割当てポリシー割当てコマンドを用いて、ファイルの割当てポリシー（データ及び／又は間接）を割当てることができる。ファイル割当てポリシー情報コマンドを用いて、ファイルのポリシーのコンテンツを検索する。
【００５５】
カプセル化コマンドを用いて、全ボリュームをカバーする１つのデータエクステントを備えたファイルを作成する。このコマンドを用いて、以下の例の部分で更に詳細に説明されるように、データベースによって使用される生のボリュームをカプセル化する。
【００５６】
更に、幾つかの実施形態では、ファイルに割当てられた割当てポリシー以外の異なる割当てポリシーに従ってファイルを再割当てするコマンドをサポートする。このようなコマンドを用いて、ファイルの割当てポリシーを実際に変更することなく異なる割当てポリシーに従ってファイルを再割当てする。
【００５７】
図１３を参照すると、ファイルシステム１４の一部分の第２の実施形態のブロック図が示されている。図１３の実施形態は、アロケータ２０、ＡＰＩ２２、コマンドインターフェース２４、割当てポリシー２６、フリーブロックリスト２８Ａ−２８Ｎを示している。更に、アロケータ２０によってアクセス可能な自動割当てポリシーテーブル１００が示されている。
【００５８】
自動割当てポリシーテーブル１００を用いて、ファイルが作成されるときに幾つかのファイル用の割当てポリシーを割当てることができる。自動割当てポリシーテーブル１００は複数の入口を含む。各入口は、入力インデックス値に対してマッチするインデックス値と、マッチング入力インデックス値を有するファイルに割当てられることになる１つ又は複数の割当てポリシーを含む。どのファイル属性も、種々の実施形態でテーブルへの入力インデックスとして使用できる。例えば、ファイルネーム接尾辞（ファイルのデータタイプを指示するために使用される場合が多い）が使用される。他の実施形態では、ファイルネームの他の部分を使用する。更に他の実施形態では、ファイルサイズを使用する。また他の実施形態では、ファイルのオーナー又は作成者を使用する。テーブルのマッチングインデックス値が見つかった場合（「ヒット」）、テーブルで指定された対応する割当てポリシーをファイルに割当てることができる。
【００５９】
図１４は、ファイルを作成するための要求に応じたアロケータ２０の１つの実施形態のオペレーションを示すフローチャートである。図１４のフローチャートは、実行時に図１４に示されるオペレーションを実施するアロケータ２０を形成する命令を表すことができる。
【００６０】
アロケータ２０は、ファイルが自動ポリシーテーブル１００でヒットがあるかどうかを判定する（決定ボックス１０２）。ヒットがある（決定ボックス１０２の「Ｙｅｓ」区間）場合、ファイル用の１つ又は複数の割当てポリシーは、自動ポリシーテーブル１００から割当てられる（ボックス１０４）。ヒットがない（決定ボックス１０２の「Ｎｏ」区間）場合には、アロケータ２０は、ファイルが親（例えば、ディレクトリ、ファイルセット、又はファイルシステム）からの１つ又は複数の割当てポリシーを受け継ぐかどうかを決定する（決定ボックス１０６）。例えば、ファイルシステム１４は、割当てポリシーの継承するようにプログラムする。或いは、継承されるかどうかは、細分性の他のレベル（例えば、ファイルセット、ディレクトリなど）で指定する。他の実施形態では継承を実装することができない。ファイルが割当てポリシーを受け継ぐことになる（決定ボックス１０６の「Ｙｅｓ」区間）場合、アロケータ２０は親の１つ又は複数のポリシーを割当てることができる（ボックス１０８）。ファイルが割当てポリシーを受け継がない（決定ボックス１０６の「Ｎｏ」区間）場合には、アロケータ２０は、ファイルにヌルの１つ又は複数のポリシーを割当てることができる。または、ファイルセット割当てポリシー又はファイルシステム割当てポリシーは、必要な場合にはボックス１０６で割当てることができる。
【００６１】
割当てポリシー利用の例
割当てポリシーは、ファイルシステムのボリュームに対するファイルの種々の割当てを行うために多くの方法で使用する。以下に提供される例は、網羅的なものではない。
【００６２】
１つのアプリケーションでは、１つ又はそれ以上のボリュームに所与のチェックポイントでのファイルを割当てる。このような割当てにより、ファイルシステムの管理者はチェックポイントによって使用されるスペースを制限することができ、チェックポイントが一次ファイルセットのスペースを細分化するのを防ぐことができる。複数のチェックポイントは、同様に同じボリュームに割当てることができる。このアプリケーションでは、ファイルシステムは、１つのボリュームを含む割当てポリシーを有する１つのファイルセット（一次ファイルセット）を最初に有する。異なるボリュームを含む新しい割当てポリシーを作成することができ、新しい割当てポリシーが割当てられるチェックポイントファイルセットを作成する。
【００６３】
別のアプリケーションは、メタデータからファイルデータを分離するためのものである。上述のように、メタデータは、ファイルデータよりも有用と考えられる場合が多い。従って、ファイルデータより大きな信頼性特性を有するボリュームにメタデータを記憶し、メタデータの種々のクラスに信頼度の種々のレベルを与えることが望ましい。このアプリケーションでは、ファイルデータｉノードは、第１の１つ又はそれ以上のボリュームを含む第１割当てポリシーを割当てられ、メタデータｉノードは、第１の１つ又はそれ以上のボリュームと重ならない第２の１つ又はそれ以上のボリュームを含む第２割当てポリシーを割当てられる。第２ボリュームは、第１ボリュームより高い信頼性特性を有する。信頼度の種々のレベルがメタデータの種々のクラスに要求される場合、付加的な割当てポリシーを作成してもよい。
【００６４】
更に別の例示的なアプリケーションは、他のファイルと異なる物理記憶装置にファイルシステムインテントログを記憶するためのものである。幾つかのファイルシステム（例えば、カリフォルニア州Ｍｏｕｎｔａｉｎ  Ｖｉｅｗ所在のＶＥＲＩＴＡＳ  Ｓｏｆｔｗａｒｅ  Ｃｏｒｐｏｒａｔｉｏｎ，，製のＶＥＲＩＴＡＳ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（商標））は、種々のファイルシステムデータを修正するためのインテントを記録するのに使用されるインテントログを含む。修正の全てが完了する前にシステムがクラッシュした場合には、インテントログを用いて、更新すべきものを検出し、更新終了又は更新を取り消すことのいずれかを行うことができる。インテントログ（頻繁に更新される）を他のファイルとは別の物理記憶装置に置くことで、装置（インテントログと他のファイルとの間）を頻繁にシークしなくてもよくなり、インテントログデータブロックを有するボリュームが細分化されるのが防止される。このアプリケーションでは、単一のボリューム（又は複数のボリューム）をインテントログに使用するように指定する割当てポリシーを作成することができ、インテントログｉノードに割当てることができる。他の割当てポリシーは、インテントログに使用されるボリューム又は複数のボリュームを使用することはできない。同様のメカニズムを用いて、自己の物理ディスク上の他のログ（例えば、ファイルへの変更を記録するＶＥＲＩＴＡＳ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（商標）によって実施されるファイル変更ログ）を分離する。
【００６５】
データベースソフトウェア（Ｏｒａｃｌｅなど）は、そのデータを記憶する（例えばブロック割当て自体を管理する）ために生のボリュームを使用する場合が多い。データベースボリュームのバックアップは、生のボリュームがどのファイルも包含しないので複雑になり、ファイルをバックアップするためボリュームからファイルにデータをコピーするのに時間がかかる。このアプリケーションでは、カプセル化コマンドを用いて、ファイルシステムに生のボリュームを付加し、ボリュームをファイルにカプセル化する。
【００６６】
幾つかのファイルは、関連する「ネームストリーム」構造を有する。ネームストリームを用いて、ファイルについての他の情報（例えば、ファイルに属するアイコンなど）を記憶する。ファイルデータ以外の異なるボリュームにネームストリームを記憶するのが望ましい。このアプリケーションでは、ネームストリームｉノード（複数のｉノード）は、ファイルデータｉノード（複数のｉノード）以外の異なる割当てポリシーを割当てることができる。
【００６７】
より一般的には、ユーザー定義の基準に基づいて種々のボリュームで種々のファイルを記憶するのが望ましい。例えば、幾つかのファイル（例えば、マルチメディアファイル）は、他のファイル以外の異なるアクセスパターンを有する。アクセスパターンのタイプに対してより適切に機能するボリュームにこのようなファイルを記憶することが望ましい。ユーザーは、割当てポリシーをファイルに割当てることが許可され、要求される割当てを達成する。幾つかの実施形態では、割当てポリシーは、非特権ユーザーが所与の割当てポリシーへアクセスするかどうかを示すフラグを有する。このようなフラグは、どの割当てポリシーをユーザーが使用するかを管理者が制御できるようにする。
【００６８】
他の実施形態では、付加的な管理制御を実施する。付加的な管理制御は、幾人かのユーザー又はユーザーのグループに割当てポリシーの定義、ファイルへの割当てポリシーの割当てなどを許可する際により柔軟に行うことができる。
【００６９】
別の例では、シングルボリュームの最大サイズよりも大きなサイズのファイルシステムを可能にする。この例では、複数ボリュームをファイルシステムに付加することができ、ファイルシステム用の割当てポリシーは、いずれかの使用可能なボリュームにファイルを割当てるものとする。
【００７０】
コンピュータアクセス可能媒体
図１５を参照すると、コンピュータアクセス可能媒体１２０のブロック図が示されている。一般に、コンピュータアクセス可能媒体は、コンピュータに命令及び／又はデータを提供するために使用中のコンピュータによってアクセス可能ないずれかの媒体を含む。例えば、コンピュータアクセス可能媒体は、磁気又は光媒体などの記憶媒体、例えば、ディスク（固定又は取り外し可能）、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭ、ＲＡＭなどの揮発性又は不揮発性メモリ媒体（例えばＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなど、並びにネットワーク及び／又は無線リンクなどの通信媒体を介して伝達される電気、電磁、又はデジタル信号などの送信媒体又は信号を介してアクセス可能な媒体を含む。図１５のコンピュータアクセス可能媒体１２０は、ファイルシステムソフトウェア１４（例えば、アロケータ２０、ＡＰＩ２２、及び／又はコマンドインターフェース２４を含む）、割当てポリシー２６、自動ポリシーテーブル１００の１つ又はそれ以上を記憶する。
【００７１】
上記開示を十分に理解すれば、多数のバリエーション及び修正が当業者には明らかになるであろう。添付の請求項は、全てのこれらのバリエーション及び修正を含むものとされる。
【図面の簡単な説明】
【００７２】
【図１】システムの１つの実施形態のブロック図である。
【図２】ファイルシステム、ボリュームマネージャ、及び種々のボリューム又はボリュームセットの１つの実施形態のブロック図である。
【図３】ファイルシステムソフトウェアの１つの実施形態の更に詳細なブロック図である。
【図４】ｉノードの１つの実施形態のブロック図である。
【図５】ファイルデータを記憶するｉノードの１つの実施形態のブロック図である。
【図６】データブロックへの１つ又はそれ以上のポインタを記憶するｉノードの１つの実施形態のブロック図である。
【図７】各々がデータブロックへの１つ又はそれ以上のポインタを記憶する間接ブロックへの１つ又はそれ以上のポインタを記憶するｉノードの１つの実施形態のブロック図である。
【図８】図７に示されたアロケータの１つの実施形態のオペレーションを示すフローチャートである。
【図９】「ａｓ  ｇｉｖｅｎ」割当てポリシーを適用する１つの実施形態を示すフローチャートである。
【図１０】「ｌｅａｓｔ  ｆｕｌｌ」割当てポリシーを適用する１つの実施形態を示すフローチャートである。
【図１１】「ＭｉｎＳｉｚｅ」割当てポリシーを適用する１つの実施形態を示すフローチャートである。
【図１２】割当てポリシーに関して使用されるコマンドの１つの実施形態を示すテーブルである。
【図１３】ファイルシステムソフトウェアの第２の実施形態をより詳細に示すブロック図である。
【図１４】ファイルを作成時に含まれるアクティビティの１つの実施形態を示すフローチャートである。
【図１５】コンピュータアクセス可能な媒体の１つの実施形態のブロック図である。
【図１】
2007526528.tif 000003
【図２】
2007526528.tif 000004
【図３】
2007526528.tif 000005
【図４】
2007526528.tif 000006
【図５】
2007526528.tif 000007
【図６】
2007526528.tif 000008
【図７】
2007526528.tif 000009
【図８】
2007526528.tif 000010
【図９】
2007526528.tif 000011
【図１０】
2007526528.tif 000012
【図１１】
2007526528.tif 000013
【図１２】
2007526528.tif 000014
【図１３】
2007526528.tif 000015
【図１４】
2007526528.tif 000016
【図１５】
2007526528.tif 000017
【国際調査報告】
2007526528.tif 000018
2007526528.tif 000019