(57)【特許請求の範囲】
【請求項１】
ファイル・システム操作及び第１のパス名を指定する入力であって、
前記第１のパス名がファイルを指定し、
前記ファイルは、該ファイルの重要度レベルに基づいて第１のストレージ階層に割り当てられ、
前記第１のパス名が複数の構成要素を含み、前記構成要素が１つ又は複数のディレクトリ構成要素及び１つのストレージ階層構成要素を含む入力を受信するステップと、
前記１つ又は複数のディレクトリ構成要素によって指定される第１のディレクトリ及び前記ストレージ階層構成要素によって指定される前記第１のストレージ階層を決定するため前記第１のパス名を解析するステップであって、
前記第１のディレクトリは、前記第１のストレージ階層に割り当てられた複数のファイル及び第２のストレージ階層に割り当てられた複数のファイルを含み、
前記ストレージ階層構成要素によって指定される前記第１のストレージ階層は、ストレージ階層名によって識別され、
前記ストレージ階層名は、前記ストレージ階層構成要素の一部によって決定される、前記解析するステップと、
前記ファイル・システム操作を実行し、前記ファイル・システム操作が前記第１のディレクトリ及び前記第１のストレージ階層を操作するステップであって、
前記ファイル・システムは、前記ファイルを前記第１のストレージ階層及び前記第２のストレージ階層に分割する操作ができ、
前記ファイル・システムは、前記ストレージ階層構成要素の指定により、前記第１のストレージ階層及び前記第２のストレージ階層の結合を操作する、前記操作するステップと、
を含む方法を実装するため実行可能なプログラム命令をストアしているコンピュータアクセス可能ストレージ・メディア。
【請求項２】
前記第１のストレージ階層は、複数のストレージ・ユニットのグループ化を表し、前記ファイル・システム操作は、前記第１のストレージ階層内の前記ストレージ・ユニットのうちの１つ又は複数を操作する、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項３】
前記第１のストレージ階層の前記ストレージ・ユニットのそれぞれは、
ボリューム、物理ストレージ・デバイスのうちの１つを含む、
請求項２に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項４】
前記第１のディレクトリ内の各ファイルは複数のストレージ階層のうちの１つに割り当てられ、前記複数のストレージ階層は前記第１のストレージ階層を含み、前記ファイルのうちの少なくとも１つは前記第１のストレージ階層に割り当てられ、かつ
前記ファイル・システム操作は、前記第１のディレクトリ内の前記第１のストレージ階層に割り当て済みの前記ファイルをリストするため動作する、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項５】
前記第１のパス名の前記構成要素は、ファイル名構成要素も含み、
前記第１のパス名は、さらに、前記ファイル名構成要素によって指定される第１のファイル名を決定するため解析され、かつ
前記ファイル・システム操作は、前記第１のファイル名、前記第１のディレクトリ、及び前記第１のストレージ階層を操作する、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項６】
前記ファイル・システム操作は、前記第１のディレクトリ内に前記第１のファイル名を有するファイルを、前記ファイルが前記第１のストレージ階層に割り当てられるように作成するために操作する、
請求項５に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項７】
前記入力は第２のパス名も指定し、前記第２のパス名は、第２のディレクトリ及び第２のファイル名を指定するファイル名構成要素を指定する１つ又は複数のディレクトリ構成要素を含み、
前記方法は、前記第２のディレクトリ及び前記第２のファイル名を決定するため前記第２のパス名を解析するステップをさらに含むプログラム命令によって実装され、
前記ファイル・システム操作は、前記第１のファイル名、前記第１のディレクトリ、前記第２のファイル名、前記第２のディレクトリ、前記第１のストレージ階層を操作する、
請求項５に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項８】
前記第２のファイル名は、前記第２のディレクトリ内のファイルを識別し、
前記ファイル・システム操作は、前記ファイルを、前記第２のディレクトリから前記第１のディレクトリへ、前記ファイルが前記第１のファイル名に名前が付け替えられ、かつ前記第１のストレージ階層に割り当てられるように移動するため動作する、
請求項７に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項９】
前記入力は、オペレーティング・システムのユーザ・インターフェースを通じ、ユーザ入力として受信される、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項１０】
前記第１のパス名は、前記複数の構成要素を含む文字列を構成し、前記文字列の前記構成要素のそれぞれは、区切り文字によって分離される、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項１１】
前記第１のパス名は、前記複数の構成要素を含む文字列を構成し、
前記ストレージ階層構成要素は、前記文字列内の前記１つ又は複数のディレクトリ構成要素の後に配置される、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項１２】
前記第１のパス名は、前記複数の構成要素を含む文字列を構成し、
前記ストレージ階層構成要素は、前記文字列内の前記１つ又は複数のディレクトリ構成要素の前に配置される、
請求項１に記載のコンピュータアクセス可能ストレージ・メディア。
【請求項１３】
１つ又は複数のプロセッサと、
プログラム命令をストアするメモリとを含み、
前記プログラム命令が、前記１つ又は複数のプロセッサによって、
ファイル・システム操作及び第１のパス名を指定する入力であって、
前記第１のパス名がファイルを指定し、
前記ファイルは、該ファイルの重要度レベルに基づいて第１のストレージ階層に割り当てられ、
前記第１のパス名が複数の構成要素を含み、前記構成要素が１つ又は複数のディレクトリ構成要素及び１つのストレージ階層構成要素を含む入力を受信するステップと、
前記１つ又は複数のディレクトリ構成要素によって指定される第１のディレクトリ及び前記ストレージ階層構成要素によって指定される第１のストレージ階層を決定するため前記第１のパス名を解析するステップであって、
前記第１のディレクトリは、前記第１のストレージ階層に割り当てられた複数のファイル及び第２のストレージ階層に割り当てられた複数のファイルを含み、
前記ストレージ階層構成要素によって指定される前記第１のストレージ階層は、ストレージ階層名によって識別され、
前記ストレージ階層名は、前記ストレージ階層構成要素の一部によって決定される、前記解析するステップと、
前記ファイル・システム操作を実行し、前記ファイル・システム操作が前記第１のディレクトリ及び前記第１のストレージ階層を操作するステップであって、
前記ファイル・システムは、前記ファイルを前記第１のストレージ階層及び前記第２のストレージ階層に分割する操作ができ、
前記ファイル・システムは、前記ストレージ階層構成要素の指定により、前記第１のストレージ階層及び前記第２のストレージ階層の結合を操作する、前記操作するステップと、
を含む方法を実施するため実行可能であるシステム。
【請求項１４】
前記第１のパス名は、前記複数の構成要素を含む文字列を構成し、
前記第１のパス名を解析するステップは、前記１つ又は複数のディレクトリ構成要素によって指定される前記第１のディレクトリ及び前記ストレージ階層構成要素によって指定される前記第１のストレージ階層を決定するため前記文字列を解析することを含む、
請求項１３に記載のシステム。
【請求項１５】
前記第１のストレージ階層は、複数のストレージ・ユニットのグループ化を表し、前記ファイル・システム操作は、前記第１のストレージ階層内の前記ストレージ・ユニットのうちの１つ又は複数を操作する、
請求項１３に記載のシステム。
【請求項１６】
前記第１のストレージ階層の前記ストレージ・ユニットのそれぞれは、
ボリューム、物理ストレージ・デバイスのうちの１つを含む、
請求項１３に記載のシステム。
【請求項１７】
前記第１のパス名の前記構成要素は、ファイル名構成要素も含み、
前記第１のパス名は、さらに、前記ファイル名構成要素によって指定される第１のファイル名を決定するため解析され、
前記ファイル・システム操作は、前記第１のファイル名、前記第１のディレクトリ、前記第１のストレージ階層を操作する、
請求項１３に記載のシステム。
【請求項１８】
ファイル・システム操作及び第１のパス名を指定する入力であって、
前記第１のパス名がファイルを指定し、
前記ファイルは、該ファイルの重要度レベルに基づいて第１のストレージ階層に割り当てられ、
前記第１のパス名が複数の構成要素を含み、前記構成要素が１つ又は複数のディレクトリ構成要素及び１つのストレージ階層構成要素を含む入力を受信するステップと、
前記１つ又は複数のディレクトリ構成要素によって指定される第１のディレクトリ及び前記ストレージ階層構成要素によって指定される第１のストレージ階層を決定するため前記第１のパス名を解析するステップであって、
前記第１のディレクトリは、前記第１のストレージ階層に割り当てられた複数のファイル及び第２のストレージ階層に割り当てられた複数のファイルを含み、
前記ストレージ階層構成要素によって指定される前記第１のストレージ階層は、ストレージ階層名によって識別され、
前記ストレージ階層名は、前記ストレージ階層構成要素の一部によって決定される、前記解析するステップと、
前記ファイル・システム操作を実行し、前記ファイル・システム操作が前記第１のディレクトリ及び前記第１のストレージ階層を操作するステップであって、
前記ファイル・システムは、前記ファイルを前記第１のストレージ階層及び前記第２のストレージ階層に分割する操作ができ、
前記ファイル・システムは、前記ストレージ階層構成要素の指定により、前記第１のストレージ階層及び前記第２のストレージ階層の結合を操作する、前記操作するステップと、
を含む方法。
【請求項１９】
前記第１のストレージ階層は、複数のストレージ・ユニットのグループ化を表し、前記ファイル・システム操作は、前記第１のストレージ階層内の前記ストレージ・ユニットのうちの１つ又は複数を操作する、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・ファイル・システムに関する。より詳細に述べれば、本発明は、指定されたストレージ階層においてファイル・システム操作を実施するためのシステム及び方法に関する。
【背景技術】
【０００２】
大規模ビジネスやその他の組織は、しばしば厖大な量の、ビジネスの運営に不可欠な重要なデータから、規則に従って維持される電子メール、傾向分析等のために引き出された情報又は履歴情報などに至るまでの多様なタイプのコンピュータ・データをストアする。それらの膨大な量のデータをストアするために、多様なタイプの光学ストレージ・デバイス、ディスク・ドライブ・デバイス、テープ・ドライブ・デバイス等の種々の異なるタイプのストレージ・デバイスが存在する。
【０００３】
異なるタイプのストレージ・デバイスは、性能、信頼性、回復可能性が異なる特性を有する。また異なるタイプのストレージ・デバイスは、それらのコストにおいても大きく変動する。ハイ‐エンド・ストレージ・デバイスは、ロー‐エンドのストレージ・デバイスより、一桁さらにはそれ以上に高価となることもある。結果として、しばしば組織は、異なるタイプのデータを異なるタイプのストレージ・デバイス上にストアする。たとえば、もっとも重要なデータがハイ‐エンド・ストレージ・デバイスにストアされ、あまり重要でないデータがよりロー‐エンド側のストレージ・デバイスにストアされる。
【０００４】
これを達成するために組織は、ストレージ・デバイス又はその他のストレージ・ユニットを、ここでストレージ・クラスと呼ばれることもある複数のストレージ階層に編成することがある。各ストレージ・ユニットは、ストレージ階層の１つに割り当てられる。ストレージ・デバイス又はその他のストレージ・ユニットは、種々の評価基準に従ってストレージ階層にグループ化することができる。たとえばいくつかのシステムにおいては、異なるストレージ階層が、Ｉ／Ｏ性能、コスト、信頼性、回復可能性、データの可用性といった、特性が異なるストレージ・デバイスを表している。互いに類似の特性を持ったストレージ・デバイスは、同一のストレージ階層に割り当てられる。
【０００５】
１つの例として、組織は、ハイ‐エンド・ストレージ階層、ミッド‐レンジ・ストレージ階層、及びロー‐エンド・ストレージ階層の３つの異なるストレージ階層を定義することができる。リモート・ミラーリング能力や頻繁なポイント‐イン‐タイム・スナップショット能力を備えたハイ‐エンド・ディスク・アレイ等のハイ‐エンド・ストレージ・デバイスは、ハイ‐エンド・ストレージ階層に割り当てられる。あまり頻繁でないポイント‐イン‐タイム・スナップショットを備え、リモート・ミラーリングを備えないミッド‐レンジ・ディスク・アレイ等のミッド‐レンジ・ストレージ・デバイスは、ミッド‐レンジのストレージ階層に割り当てられる。ソフトウエア又はファームウエアＲＡＩＤによって管理される低価格ディスク等のロー‐エンド・ストレージ・デバイスは、ロー‐エンド・ストレージ階層に割り当てられる。異なるタイプのデータは、異なるストレージ階層内のストレージ・デバイスにストアされる。たとえば、もっとも重要なデータをハイ‐エンド・ストレージ階層内のストレージ・デバイス上にストアし、もっとも重要度の低いデータをロー‐エンド・ストレージ階層内のストレージ・デバイス上にストアする。
【０００６】
種々のストレージ・デバイス上にストアされるデータは、通常、１つ又は複数のファイル・システムによって管理されるファイルに編成される。データは、ファイル・レベルにおいて異なるストレージ階層に割り当てられる。言い替えると、異なるファイルを異なるストレージ階層に割り当てるように、それぞれのファイルをストレージ階層に割り当てる。したがって、上記の例においては、もっとも重要であると考えられるファイルをハイ‐エンド・ストレージ階層に割り当て、もっとも重要でないと考えられるファイルをロー‐エンド・ストレージ階層割り当てる。
【発明の開示】
【課題を解決するための手段】
【０００７】
ここには、指定されたストレージ階層に関してファイル・システム操作を実施するためのシステム及び方法の多様な実施態様が開示されている。方法の１つの実施態様によれば、ファイル・システム操作及びパス名を指定する入力が受信される。パス名は、複数の構成要素を含む文字列を含む。これらの構成要素は１つ又は複数のディレクトリ構成要素及び１つのストレージ階層構成要素を含むことができる。文字列は、１つ又は複数のディレクトリ構成要素によって指定されるディレクトリ及びストレージ階層構成要素によって指定されるストレージ階層を決定するために解析される。ファイル・システム操作が実施される。ファイル・システム操作は、第１のディレクトリ及び第１のストレージ階層に操作する。
【０００８】
方法の追加の実施態様においては、パス名の文字列の構成要素が、ファイル名構成要素も含む。したがって、ファイル名構成要素によって指定されるファイル名を決定するべく文字列がさらに解析される。ファイル・システム操作は、第１のファイル名、第１のディレクトリ、及び第１のストレージ階層に操作する。
【０００９】
以下の詳細な説明を添付の図面とともに考察するとき、本発明のより良好な理解を得ることが可能になる。
【００１０】
本発明には、種々の修正及び代替形式が可能であるが、その特定の実施形態を例として図面内に示し、ここで詳細に説明する。しかしながら理解される必要があるが、図面やそれらに対する詳細な説明は、開示されている特定の形式に本発明を限定する意図ではなく、むしろその逆にその意図は、付随する特許請求の範囲によって定義されるとおりの本発明の精神及び範囲内に入るすべての修正、均等、代替を保護するところにある。
【発明を実施するための最良の形態】
【００１１】
ここには、指定されたストレージ階層においてファイル・システム操作を実施するためのシステム及び方法の多様な実施形態が開示されている。このシステムは、複数のストレージ・ユニットを利用する。ここで用いられる場合に、用語「ストレージ・ユニット」は、ストレージ・デバイス又はボリュームを言う。ストレージ・デバイスは、データをストアするように動作可能なデバイスである。ボリュームは、１つ又は複数のストレージ・デバイスによって提供される物理ストレージの論理的なパーティション及び／又は集合体である。ボリュームは、ストレージ・デバイスの全体的なストレージのサブセット（たとえば、全体より小さい）、ストレージ・デバイスのストレージ全体、又は結合された複数のストレージ・デバイスのストレージから形成される。
【００１２】
システムはまた、複数のストレージ階層を定義し、かつ利用し、その際、各ストレージ階層は、１つ又は複数のストレージ・ユニットのセットを表すクラス又はカテゴリである。いくつかの実施形態においては、各ストレージ・ユニットがストレージ階層の１つだけに割り当てられる。他の実施形態においては、ストレージ・ユニットの１つ又は複数が１より多くのストレージ階層に割り当てられる。
【００１３】
種々の実施形態においては、ストレージ・ユニットは、多様な評価基準のいずれかに従ってストレージ階層にグループ化される。たとえば、いくつかの実施形態においては、異なるストレージ階層が、Ｉ／Ｏ性能、コスト、信頼性、回復可能性、データ可用性等の特性が異なるストレージ・デバイスを表す。互いに類似の特性を備えたストレージ・デバイスは、同一のストレージ階層に割り当てられる。
【００１４】
図１は、３つのストレージ階層２００Ａ、２００Ｂ、２００Ｃが定義された例を示している。ストレージ・ユニット２２０Ａと２２０Ｂは、ストレージ階層２００Ａに割り当てられている。ストレージ・ユニット２２０Ｃ、２２０Ｄ、２２０Ｅ、２２０Ｆは、ストレージ階層２００Ｂに割り当てられている。ストレージ・ユニット２２０Ｇは、ストレージ階層２００Ｃに割り当てられている。いくつかの実施形態においては、それぞれのストレージ階層に、当該それぞれのストレージ階層を一意的に識別する名前又は識別子を与える。たとえば、ストレージ階層２００Ａは「ｔｉｅｒ＿Ａ」等の名前を、ストレージ階層２００Ｂは「ｔｉｅｒ＿Ｂ」等の名前を、ストレージ階層２００Ｃは「ｔｉｅｒ＿Ｃ」等の名前を有することができる。
【００１５】
いくつかの実施形態においては、ストレージ階層２００Ａ〜Ｃが、ストレージ・デバイスのグループ化を表している。たとえば、ストレージ・ユニット２２０Ａと２２０Ｂは、互いに類似した特性を有するそれぞれのストレージ・デバイスである。ストレージ・ユニット２２０Ｃ、２２０Ｄ、２２０Ｅ、２２０Ｆは、互いに類似した特性を有するそれぞれのストレージ・デバイスであるが、ストレージ・ユニット２２０Ａと２２０Ｂによって表されるストレージ・デバイスとは、それらの特性において異なっている。同様に、ストレージ・ユニット２２０Ｇは、その特性において他のストレージ・デバイスと異なるストレージ・デバイスである。
【００１６】
他の実施形態においては、ストレージ階層２００Ａ〜Ｃがボリュームのグループ化を表す。たとえば、ストレージ階層２００Ａのストレージ・ユニット２２０Ａと２２０Ｂを、互いに類似の特性を有するそれぞれのボリュームとする。たとえば、それぞれのボリュームを、同一のストレージ・デバイス上のストレージから実装し、又は互いに類似した特性を有する異なるストレージ・デバイスのストレージから実装する。同様にストレージ階層２００Ｂのストレージ・ユニット２２０Ｃ、２２０Ｄ、２２０Ｅ、２２０Ｆを、互いに類似する特性を有するそれぞれのボリュームとすることもできる。ストレージ階層２００Ｃのストレージ・ユニット２２０Ｇは、その特性において、ストレージ階層２００Ａと２００Ｂのボリュームと異なるボリュームである。
【００１７】
システムは、ストレージ・ユニット２２０内にストアされるデータが複数のファイルとして編成される１つ又は複数のファイル・システムを実装することができる。ファイルの少なくとも１つのサブセット内のそれぞれのファイルに対して、それぞれのファイルが１つのストレージ階層に割り当てられ、その際、異なるファイルが異なるストレージ階層に割り当てられる。種々の実施形態においては、ファイルを多様な評価基準のいずれかを基礎としてストレージ階層に割り当てる。いくつかの実施形態においては、各ファイルは、重要度レベル又はビジネス値を有するとして扱われる。たとえば各ストレージ階層が重要度レベル又は重要度レベルの範囲を表すとした場合に、それらのファイルを、それぞれの重要度レベルに基づいてストレージ階層に割り当てる。別の例としては、各ファイルを、それぞれのファイル・タイプ（たとえば、書類、取引記録表、画像、オーディオ・トラック、又はその他のタイプのオブジェクト又はエンティティ）のものとし、それらのファイルを、それらそれぞれのファイル・タイプに基づいてストレージ階層に割り当てる。ファイルが割り当てられるストレージ階層の決定に使用できるその他の評価基準には、ファイルの所有者、ファイルを使用するソフトウエア・アプリケーション、ファイルがアクセスされるＩ／Ｏパターン等が含まれる。
【００１８】
種々のファイルに対してのストレージ階層割り当てが、それらのファイルをストアするストレージ・ユニット２００を選択するために、使用される。たとえばファイルがストレージ階層２００Ａに割り当てられる場合に、システムは、ストレージ・ユニット２２０Ａ又はストレージ・ユニット２２０Ｂを選択してそのファイルをストアする。いくつかの実施形態においては、１つ又は複数のファイルがいずれのストレージ階層にも割り当てられないこともある。それらのファイルについては、システムが、それらのファイルのストアに任意のストレージ・ユニット２２０を選択する。またいくつかの実施形態においては、所定のファイルが割り当てられるストレージ階層に対応する利用可能なストレージ・ユニットがまったくない場合に（たとえば、そのストレージ階層内のすべてのストレージ・ユニットに空き容量がないか、又はオフラインの場合）、そのファイルのストアに別のストレージ階層内のストレージ・ユニットを選択する。
【００１９】
図２は、ここで述べている指定されたストレージ階層においてファイル・システム操作を実施するための方法を実施するように動作可能なコンピュータ・システム９０の例示的な実施形態を示している。種々の実施形態において、コンピュータ・システム９０は、任意タイプのコンピュータ・システムを含む。
【００２０】
図２の例においてはコンピュータ・システム９０が複数のストレージ・デバイス１２５を含み、各ストレージ・デバイス１２５がストレージ階層２００（たとえば、この例のストレージ階層２００Ａ、２００Ｂ、又は２００Ｃ）に割り当てられる。したがってこの例においては、ストレージ階層２００がストレージ・デバイス１２５のグループを表す。詳細に述べれば、ストレージ・デバイス１２５Ａと１２５Ｂがストレージ階層２００Ａに割り当てられ、ストレージ・デバイス１２５Ｃと１２５Ｄがストレージ階層２００Ｂに割り当てられ、ストレージ・デバイス１２５Ｅがストレージ階層２００Ｃに割り当てられている。
【００２１】
種々の実施形態においては、任意の数のストレージ・デバイス１２５が存在可能である。また任意の数のストレージ階層２００を定義することができ、任意の望ましい評価基準に従ってストレージ・デバイス１２５をストレージ階層２００に割り当てる。
【００２２】
各ストレージ・デバイス１２５は任意タイプのストレージ・デバイスを構成し、任意の種類の１つ又は複数のメディアにファイルをストアできる。ストレージ・デバイス１２５の例には、１つ又は複数の光学ストレージ・デバイスを含むデバイス、１つ又は複数のディスク・ドライブを含むデバイス、１つ又は複数のテープ・ドライブを含むデバイス、１つ又は複数のフラッシュ・メモリ・デバイスを含むデバイス等が含まれる。１つの例として、特定のストレージ・デバイス１２５は、独立に、又はディスク・ストレージ・システムとして構成される１つ又は複数のディスク・ドライブとして実装される。
【００２３】
コンピュータ・システム９０は、１つ又は複数のプロセッサ１２０を含むことができる。プロセッサ１２０は、通信バス、有線又は無線ネットワーク、ケーブル接続等を介すといった多様な方法のいずれかによってストレージ・デバイス１２５と結合される。１つ又は複数のプロセッサ１２０のそれぞれは、任意タイプのプロセッサを含む。たとえば、いくつかの実施形態においてプロセッサ１２０は、ｘ８６アーキテクチャと互換性を有し、他の実施形態においてはプロセッサ１２０は、ＳＰＡＲＣTMファミリのプロセッサと互換性を有する。
【００２４】
コンピュータ・システム９０は、メモリ１２２をも含む。いくつかの実施形態においては、メモリ１２２が、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）等の１つ又は複数の形式のランダム・アクセス・メモリ（ＲＡＭ）を含む。しかしながら他の実施形態においては、メモリ１２２が、それらに代えて、又は追加してその他の任意のタイプのメモリを含むことができる。メモリ１２２は、プログラム命令及び／又はデータをストアできる。詳細に述べれば、メモリ１２２は、ファイル・システム・ソフトウエア２０５をはじめ、可能性としてはその他の、オペレーティング・システム・ソフトウエア、ネットワーク通信ソフトウエア等のコンピュータ・システムの動作のためのソフトウエアをストアする。１つ又は複数のプロセッサ１２０は、ストレージ・デバイス１２５にストアされるファイルを管理する１つ又は複数のファイル・システムを実装するため、ファイル・システム・ソフトウエア２０５を実行する。またファイル・システム・ソフトウエア２０５は、ここで述べている、指定されたストレージ階層においてファイル・システム操作を実施するための方法を実施するように実行可能である。方法の多様な実施形態を以下に詳細に説明する。
【００２５】
コンピュータ・システム９０は、ユーザ入力を受信するための１つ又は複数の入力デバイス１２６も含む。入力デバイス（１つ又は複数）１２６は、キーボード、キーパッド、マイクロフォン、ポインティング・デバイス（たとえば、マウス又はトラックボール）等の種々のタイプの入力デバイスを含む。コンピュータ・システム９０は、１つ又は複数のディスプレイ・デバイス１２８又はその他の、ユーザに対する出力を表示するための出力デバイスも含んでいる。たとえば１つ又は複数のディスプレイ・デバイス１２８は、ＬＣＤスクリーン又はモニタ、ＣＲＴモニタ等の情報を表示する任意の種々のタイプのデバイスを含むことができる。
【００２６】
コンピュータ・システム９０は、１つ又は複数のネットワークにコンピュータ・システム９０を接続するネットワーク接続ハードウエア１２９も含む。ネットワーク接続ハードウエア１２９は、ネットワーク（１つ又は複数）にコンピュータ・システム９０を、たとえばネットワークのタイプに応じて結合するための任意タイプのハードウエアを含む。
【００２７】
種々の実施形態においては、コンピュータ・システム９０は、任意タイプのネットワーク又はネットワークの組み合わせに結合される。たとえば、コンピュータ・システム９０は、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、無線ネットワーク、イントラネット、インターネット等のうちの１つ又は複数に結合される。例示的なローカル・エリア・ネットワークは、イーサネット・ネットワーク、ファイバ・ディストリビューテッド・データ・インターフェース（ＦＤＤＩ）ネットワーク、及びトークン・リング・ネットワークなどである。コンピュータ・システム９０を、任意タイプの有線又は無線接続メディアを使用して１つ又は複数のネットワークに結合することができる。たとえば有線メディアは、イーサネット、ファイバ・チャンネル、在来電話サービス（ＰＯＴＳ）に接続されるモデム等を含む。無線接続メディアは、ＩＥＥＥ  ８０２．１１（無線イーサネット）、セルラ・サービスを介したモデム・リンク、衛星リンク等の無線通信プロトコルを使用する無線接続を含む。
【００２８】
図３は、コンピュータ・システム９０の別の例示的な実施形態を示している。コンピュータ・システム９０は、１つ又は複数のプロセッサ１２０、ファイル・システム・ソフトウエア２０５をストアするメモリ１２２、１つ又は複数のストレージ・デバイス１２５、１つ又は複数の入力デバイス１２６、１つ又は複数のディスプレイ・デバイス１２８を含み、さらにネットワーク接続ハードウエア１２９等の上で参照して説明した図２に類似のコンポーネントを含む。
【００２９】
いくつかの実施形態においては、ファイル・システム・ソフトウエア２０５が複数の論理ボリューム２１２を利用でき、各ボリューム２１２が１つ又は複数のストレージ・デバイス１２５のストレージを含む。各ボリューム２１２は、ストレージ階層２００（たとえば、この例のストレージ階層２００Ａ又は２００Ｂ）に割り当てられる。したがって図３の例においては、ストレージ階層２００がボリューム２１２のグループ化を表す。詳細に述べれば、ボリューム２１２Ａ、２１２Ｂ、２１２Ｄがストレージ階層２００Ａに割り当てられており、ボリューム２１２Ｃがストレージ階層２００Ｂに割り当てられている。
【００３０】
種々の実施形態においては、任意の数のボリューム２１２と任意の数のストレージ・デバイス１２５がある。また、任意の数のストレージ階層２００も定義でき、ボリューム２１２を任意の望ましい評価基準に従ってストレージ階層２００に割り当てる。いくつかの実施形態においては、単一ストレージ・デバイス１２５上の異なるボリュームが異なるストレージ階層２００に割り当てられる。
【００３１】
１つ又は複数のプロセッサ１２０は、ボリューム２１２内にストアされるファイルを管理する１つ又は複数のファイル・システムを実装するために、ファイル・システム・ソフトウエア２０５を実行する。またファイル・システム・ソフトウエア２０５は、ここで述べている、指定されたストレージ階層においてファイル・システム操作を実施する方法を実施するように実行可能である。
【００３２】
種々の実施形態において、コンピュータ・システム９０は、たとえば１つ又は複数といった任意の数のコンピュータを含む。いくつかの実施形態においては、コンピュータ・システム９０が、複数のコンピュータを含むことができる。したがって、いくつかの実施形態においては、コンピュータ・システム９０の機能を複数のコンピュータにわたって分散させることができる。たとえば、図４は、コンピュータ・システム９０が３つのサーバ・コンピュータ９２Ａ、９２Ｂ、９２Ｃからなる実施形態を示している。いくつかの実施形態においては、ファイル・システム・ソフトウエア２０５を、たとえば各サーバ・コンピュータ９２がファイル・システム・ソフトウエア２０５の各インスタンス又はファイル・システム・ソフトウエア２０５の各部分を実行するように、これら３つのサーバ・コンピュータ９２にわたって分散させることができる。
【００３３】
サーバ・コンピュータ９２は、ネットワーク８４を通じて接続されている。いくつかの実施形態においては、１つ又は複数のサーバ・コンピュータ９０が、ネットワーク８４を通じて１つ又は複数のストレージ・デバイス１２５にアクセスする。たとえば、図４において、ストレージ・デバイス１２５のうちの１つ又は複数を、ネットワーク・ストレージ・デバイス５０Ａ又は５０Ｂ内に含ませることができる。
【００３４】
ここで図５を参照すると、指定されたストレージ階層においてファイル・システム操作を実施するための方法の１つの実施形態が図示されている。この方法は、コンピュータ・システム９０上で実行するファイル・システム・ソフトウエア２０５によって実施される。
【００３５】
ブロック３０１に示されているとおり、ファイル・システム操作及びパス名を指定する入力が受信される。種々の実施形態においては、この入力が、多様な種類のファイル・システム操作を指定する。ファイル・システム操作の例には、ディレクトリ内にファイルをリストする操作、新しいファイルを作成する操作、ファイルをコピーする操作、ファイルを修正する操作、ファイルを１つのディレクトリから別のディレクトリに移動させる操作、ファイルの名前を付け替える操作、ファイルの１つ又は複数のプロパティを変更する操作、ファイルを表示する操作等が含まれる。
【００３６】
ここで使用される用語「パス名」は、ファイル・システム内のディレクトリ及び／又はファイルを指定する情報を指す。入力によって指定されるパス名は、複数の構成要素を含むことができる。たとえば、いくつかの実施形態においては、パス名が、各構成要素が文字列の部分文字列となる文字列を含む。これらの構成要素は、１つ又は複数のディレクトリ構成要素及び１つのストレージ階層構成要素を含むことができる。１つ又は複数のディレクトリ構成要素は、ファイル・システム内のディレクトリ、たとえばファイル・システム操作が操作するディレクトリを指定できる。ストレージ階層構成要素は、ファイル・システム操作が操作するストレージ階層を指定できる。
【００３７】
いくつかの実施形態においては、パス名が文字列を含み、区切り文字によって文字列の構成要素を分けることができる。いくつかの実施形態においては、ストレージ階層構成要素を、文字列内の１つ又は複数のディレクトリ構成要素の後に置くことができる。他の実施形態では、ストレージ階層構成要素を、文字列内の１つ又は複数のディレクトリ構成要素の前に置くことができる。
【００３８】
いくつかの実施形態においては、入力によって指定されるパス名を、ユニックス（Ｕｎｉｘ）スタイルのパス名と類似にできるが、ストレージ階層構成要素も含むことができる。たとえば、いくつかの実施形態において、パス名を次の形式の文字列とすることができる。
／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒ＿Ａ
【００３９】
この例においては、「ｄｉｒ１」及び「ｄｉｒ２」がディレクトリ構成要素であり、「ｓｔ＝ｔｉｅｒ＿Ａ」がストレージ階層構成要素である。パス名内の構成要素は、「／」区切り文字によって互いに分けられる。ディレクトリ構成要素は、たとえばディレクトリ階層に従った階層順にディレクトリ構成要素が指定されるファイル・システムのディレクトリ階層内のディレクトリを指定する。この例において、ディレクトリ構成要素が階層的に一緒にされて、「ｄｉｒ１」ディレクトリのサブ‐ディレクトリである「ｄｉｒ２」と名前が付けられたディレクトリを指定する。ストレージ階層構成要素は、システムによって定義されるストレージ階層を、たとえば特定のストレージ階層の名前又は識別子を指定することによって指定する。この例においては、ストレージ階層構成要素が、「ｔｉｅｒ＿Ａ」という名前の付いたストレージ階層を指定する。
【００４０】
他の実施形態においては、パス名を次の形式の文字列とすることができる。
ｓｔ＝ｔｉｅｒ＿Ａ／ｄｉｒ１／ｄｉｒ２
【００４１】
この例においては、同一のディレクトリ（すなわち、「ｄｉｒ２」ディレクトリ）がディレクトリ構成要素のパスによって指定されるが、ストレージ階層の構成要素がディレクトリ構成要素の前に置かれる。いくつかの実施形態においては、ファイル・システム・ソフトウエア２０５が、いずれの形、たとえばディレクトリ構成要素の前又は後のいずれかにストレージ階層構成要素を備えた形においてパス名が入力されてもよい。
【００４２】
注意を要するが、上記のパス名は例として与えられており、種々の実施形態においては、パス名がこのほかの種々の形式のいずれかを有することができる。詳細に述べれば、パス名のストレージ階層の構成要素は、「ｓｔ＝ｔｉｅｒｎａｍｅ」の形式以外の形式を有することができる。
【００４３】
いくつかの実施形態においては、３０１において受信した入力をユーザ入力として受信する。たとえばいくつかの実施形態においては、オペレーティング・システムのユーザ・インターフェース等のユーザ・インターフェースを通じてファイル・システム・ソフトウエア２０５がユーザ入力を受信する。たとえばいくつかの実施形態においては、ユーザが入力を、テキストとしてオペレーティング・システムのコマンドラインインターフェースに、又はその他の多様なファイル・システム・コマンド等のユーザがファイル・システム操作を指定することを可能にするユーザ・インターフェースに入力できる。その種の実施形態においては、ファイル・システム操作及びパス名の両方を、文字列として指定できる。
【００４４】
他の実施形態においては、入力３０１は、ファイル・システム・ソフトウエア２０５によって、ユーザ・インターフェース以外の種々のタイプのインターフェースを通じてを受信される。たとえば、いくつかの実施形態においては、入力を、プログラミング・インターフェースを通じてファイル・システム・ソフトウエア２０５に渡すことができる。１つの例として、ユーザ・アプリケーション又はプログラムが、関数呼び出し、メソッド呼び出し等のライブラリ呼び出しを通じてファイル・システム・ソフトウエア２０５に入力を渡すことができる。たとえば、いくつかの実施形態においては、このライブラリ呼び出しが、特定のファイル・システム操作に対応するか、又はそれを指定でき、かつパス名をライブラリ呼び出しのパラメータとして渡すことができる。別の例として、システム‐レベルのアプリケーション又はプログラムが、システム呼び出しを通じてファイル・システム・ソフトウエア２０５に入力を渡すことができる。別の例として、ファイル・システム・ソフトウエア２０５の１つのモジュールが、パラメータとしてパス名を渡す特定のファイル・システム操作を起動することによって、ファイル・システム・ソフトウエア２０５の別のモジュールに入力を渡すことができる。
【００４５】
３０３として示されているとおり、さらにこの方法は、１つ又は複数のディレクトリ構成要素によって指定されるディレクトリ、及びストレージ階層構成要素によって指定されるストレージ階層を決定するパス名を解析することを含む。たとえば、パス名が文字列を構成するとき、その文字列の別々の構成要素を決定するためにそれを構文解析することによって文字列が解析される。上記の例においては、異なる構成要素の間の区切り文字として「／」文字を探すことによって別々の構成要素が決定される。それらの例においては、いずれの構成要素が文字「ｓｔ＝」を伴って開始しているかを決定することによって、ストレージ階層構成要素を識別できる。ストレージ階層の名前は、文字「ｓｔ＝」に続くストレージ階層構成要素の部分として決定される。したがって、ストレージ階層構成要素によって指定されるストレージ階層を、指定されたストレージ階層名を有するストレージ階層として識別できる。ディレクトリ構成要素によって指定されるディレクトリは、１つ又は複数のディレクトリ構成要素によって階層的に指定されるディレクトリとして識別できる。
【００４６】
３０５に示されているとおり、さらにこの方法は、パス名内に指定されたディレクトリ及びストレージ階層に操作するファイル・システム操作の実行を含む。ファイル・システム操作は、たとえばファイル・システム操作のタイプに応じ、種々の方法のいずれかに従ってディレクトリやストレージ階層を操作する。たとえばストレージ階層が、指定されたディレクトリにファイル・システム操作を実施するストレージ階層コンテキストを示す。
【００４７】
例示として述べるが、図６〜８に示されている例を考察する。このシステムは、２つのストレージ階層２００Ａと２００Ｂを含むと仮定する。複数のファイル２３０内の各ファイル２３０は、これら２つのストレージ階層の１つに割り当てられる。図６に示されているとおり、このファイル・システムは、種々のディレクトリ６００が階層的に編成されるディレクトリ階層又はツリーを含む。たとえば、ディレクトリ階層は、「ｄｉｒｅｃｔｏｒｙ＿Ａ」という名前が付けられたルート・ディレクトリ６００Ａ、「ｄｉｒｅｃｔｏｒｙ＿Ｂ」という名前が付けられたルート・ディレクトリ６００Ａのサブ‐ディレクトリであるディレクトリ６００Ｂ、「ｄｉｒｅｃｔｏｒｙ＿Ｄ」という名前が付けられたディレクトリ６００Ｂのサブ‐ディレクトリであるディレクトリ６００Ｄ等々を含む。図６に図示されているファイル２３０のそれぞれは、ディレクトリ階層の中のディレクトリ内に含まれる。たとえば、ファイル２３０Ｃ、２３０Ｄ、２３０Ｌ、２３０Ｔは「ｄｉｒｅｃｔｏｒｙ＿Ｇ」という名前が付けられたディレクトリ６００Ｇ内に含められ、ファイル２３０Ａ、２３０Ｅ、２３０Ｆ、２３０Ｎ、及び２３０Ｐは「ｄｉｒｅｃｔｏｒｙ＿Ｆ」という名前が付けられたディレクトリ６００Ｆ内に含められる。（図の簡略化のために、他のディレクトリ内のファイル２３０を図示していない。）
【００４８】
図６はまた、ディレクトリ６００Ｆ及び６００Ｇ内のファイル２３０のそれぞれが割り当てられることになるストレージ階層も示している。たとえば、ディレクトリ６００Ｇ内のファイル２３０Ｃと２３０Ｄ及びディレクトリ６００Ｆ内のファイル２３０Ａ、２３０Ｅ、２３０Ｆは、ストレージ階層２００Ａに割り当てられる。ディレクトリ６００Ｇ内のファイル２３０Ｌと２３０Ｔ、及びディレクトリ６００Ｆ内のファイル２３０Ｎと２３０Ｐは、ストレージ階層２００Ｂに割り当てられる。
【００４９】
たとえば図７は、システムがたとえば５つのストレージ・ユニット２２０Ａ〜２２０Ｅを含む実施形態を示しており、そのストレージ・ユニットは、種々のファイル２３０がストアされるストレージ・デバイス又はボリュームのいずれかである。ストレージ・ユニット２２０Ａと２２０Ｂは、名前「ｔｉｅｒ＿Ａ」を有するストレージ階層２００Ａに割り当てられる。ストレージ・ユニット２２０Ｃ、２２０Ｄ、２２０Ｅは、名前「ｔｉｅｒ＿Ｂ」を有するストレージ階層２００Ｂに割り当てられる。図示されているとおり、ファイル２３０Ａ、２３０Ｃ、２３０Ｄは、ストレージ・ユニット２２０Ａ内にストアされ、ファイル２３０Ｅと２３０Ｆは、ストレージ・ユニット２２０Ｂ内にストアされる。したがって、ファイル２３０Ｃ、２３０Ｄ、２３０Ａ、２３０Ｅ、２３０Ｆのそれぞれが、ストレージ階層２００Ａに割り当てられたストレージ・ユニット２２０内にストアされる。同様にファイル２３０Ｌ、２３０Ｔ、２３０Ｎ、２３０Ｐのそれぞれは、ストレージ階層２００Ｂに割り当てられたストレージ・ユニット２２０内にストアされる。たとえば図７に図示されているとおり、ファイル２３０Ｌがストレージ・ユニット２２０Ｃ内にストアされ、ファイル２３０Ｎと２３０Ｐがストレージ・ユニット２２０Ｄ内にストアされ、ファイル２３０Ｔがストレージ・ユニット２２０Ｅ内にストアされる。
【００５０】
ここで、図８に図示されている、ユーザがファイル・システム・コマンドを入力する例示的なユーザ・インターフェース６１０を考える。ユーザ・インターフェース６１０Ａの中では、ユーザが文字列「ｌｓ／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｃ／ｄｉｒｅｃｔｏｒｙ＿Ｆ」を入力する。この例において「ｌｓ」は、指定されたディレクトリ「／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｃ／ｄｉｒｅｃｔｏｒｙ＿Ｆ」のディレクトリ・リスティングの表示をファイル・システムに要求するファイル・システム・コマンドである。図示されているとおり、ファイル・システムは、指定されたディレクトリ内のすべてのファイル、すなわちファイル２３０Ａ、２３０Ｅ、２３０Ｆ、２３０Ｎ、２３０Ｐを表示する（図６参照）。この例において、ユーザによって入力されるパス名は、ストレージ階層構成要素を含まず、このコマンドは、従来技術のユニックス（Ｕｎｉｘ）システムの「ｌｓ」ファイル・システム・コマンドと類似に操作する。
【００５１】
しかしながらユーザ・インターフェース６１０Ｂにおいては、ユーザが文字列「ｌｓ／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｃ／ｄｉｒｅｃｔｏｒｙ＿Ｆ／ｓｔ＝ｔｉｅｒ＿Ａ」を入力する。したがってこの例においては、ユーザによって入力されるパス名が、ストレージ階層２００Ａを指定する。したがって、この場合の「ｌｓ」コマンドは、ディレクトリ「／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｃ／ｄｉｒｅｃｔｏｒｙ＿Ｆ」及びストレージ階層２００Ａの両方を操作する。この場合、指定されたストレージ階層が、「ｌｓ」コマンドに対してコンテキスト上の意味を与え、ファイル・システム・ソフトウエア２０５に、ストレージ階層２００Ａに割り当てられたディレクトリ６００Ｆ（「／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｃ／ｄｉｒｅｃｔｏｒｙ＿Ｆ」）内のファイルだけがリストされるべきであることを知らせる。したがって、表示出力６１４Ｂ内に示されているとおり、ファイル２３０Ａ、２３０Ｅ、２３０Ｆ（ストレージ階層２００Ａに割り当てられている）だけが示され、ファイル２３０Ｎと２３０Ｐ（ストレージ階層２００Ｂに割り当てられている）は示されない。
【００５２】
図９は、指定されたストレージ階層においてファイル・システム操作を実施するための方法の別の実施形態を示している。
【００５３】
３２１において、ファイル・システム操作及びパス名を指定する入力が受信されるが、このパス名は複数の構成要素を含む。それらの構成要素は、１つ又は複数のディレクトリ構成要素、ファイル名構成要素、ストレージ階層構成要素を含む。
【００５４】
３２３においては、１つ又は複数のディレクトリ構成要素によって指定されるディレクトリ、ファイル名構成要素によって指定されるファイル名、ストレージ階層構成要素によって指定されるストレージ階層を決定するためにパス名が解析される。
【００５５】
３２５においては、ファイル名、ディレクトリ、ストレージ階層を操作するファイル・システム操作が実施される。
【００５６】
したがって図９の方法は、図８の方法と類似に動作するが、この実施形態においては、入力内に指定されるパス名がファイル名も含む。１つ又は複数のディレクトリ構成要素、１つのファイル名構成要素、ストレージ階層構成要素を含むパス名の１つの例は、次の形式の文字列になる。
／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒ＿Ａ／ｆｉｌｅｎａｍｅ
【００５７】
１つ又は複数のディレクトリ構成要素、１つのファイル名構成要素、ストレージ階層構成要素を含むパス名の別の例は、次の形式の文字列になる。
ｓｔ＝ｔｉｅｒ＿Ａ／ｄｉｒ１／ｄｉｒ２／ｆｉｌｅｎａｍｅ
【００５８】
ファイル・システム操作は、たとえばファイル・システム操作のタイプに応じ、種々の方法のいずれかにおいてファイル名、ディレクトリ、ストレージ階層を操作する。たとえばストレージ階層は、指定されたディレクトリ内の指定されたファイルに対してファイル・システム操作を実施するコンテキストのストレージ階層を示す。１つの例として、ファイル・システム操作は、新しく作成されたファイルが指定されたストレージ階層に割り当てられるように、指定されたディレクトリ内に指定されたファイル名を有するファイルを作成するべく動作する。
【００５９】
例示として、図１０に示されている例について考える。システムは、図６及び７を参照して上で述べたとおりに構成されるものとする。ユーザ・インターフェース６１０に示されているとおり、ユーザがテキスト６１２を入力する。
ｍｖ  ／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｂ／ｄｉｒｅｃｔｏｒｙ＿Ｄ／ｄｉｒｅｃｔｏｒｙＧ／ｆｉｌｅｎａｍｅＣ
／ｄｉｒｅｃｔｏｒｙＡ／ｄｉｒｅｃｔｏｒｙＣ／ｄｉｒｅｃｔｏｒｙＦ／ｓｔ＝ｔｉｅｒ＿Ｂ／ｆｉｌｅｎａｍｅＣ
【００６０】
指定されたテキストは、ディレクトリ６００Ｇ（名前「／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｂ／ｄｉｒｅｃｔｏｒｙ＿Ｄ／ｄｉｒｅｃｔｏｒｙＧ」）内のファイル２３０Ｃ（名前「ｆｉｌｅｎａｍｅＣ」）がディレクトリ６００Ｆ（名前「／ｄｉｒｅｃｔｏｒｙＡ／ｄｉｒｅｃｔｏｒｙＣ／ｄｉｒｅｃｔｏｒｙＦ」）に移動され、ストレージ階層２００Ｂ（名前「ｓｔ＝ｔｉｅｒ＿Ｂ」）に割り当てられるようにユーザが希望していることを示す。したがって、このコマンドを実行すると、ファイル・システム・ソフトウエア２０５が、ファイル２３０Ｃをディレクトリ６００Ｇからディレクトリ６００Ｆに移動させる。ファイル２３０Ｃが以前にストレージ階層２００Ａに割り当てられていることから、ファイル・システム・ソフトウエア２０５は、ストレージ階層２００Ｂへのファイル２３０Ｃの再割り当ても行う。ストレージ階層２００Ｂに対するファイル２３０Ｃの再割り当てにおいては、ファイル・システム・ソフトウエア２０５がファイルをストレージ・ユニット２２０Ａからストレージ階層２００Ｂに割り当てられたストレージ・ユニット２２０のうちの１つに移動させる。たとえば、図１０においては、ファイル２３０Ｃがストレージ・ユニット２２０Ｃに移動している。したがって、たとえばストレージ階層２００がストレージ・デバイス１２５のグループを表す実施形態においては、ファイル・システム・ソフトウエア２０５がファイル２３０Ｃを１つのストレージ・デバイス１２５から別のそれに移動する。同様に、ストレージ階層２００がボリューム２１２のグループを表す実施形態においては、ファイル・システム・ソフトウエア２０５がファイル２３０Ｃを１つのボリューム２１２から別のそれに移動する。
【００６１】
図１１は、ファイル・システムのコマンドが、指定されたファイル名、ディレクトリ、ストレージ階層を操作する別の例を示している。この例においては、ユーザが、ディレクトリ６００Ｆへ進んだ後に次のテキスト６１２を入力する。
ｃａｔ  ｆｉｌｅｎａｍｅＡ  ＞
／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｂ／ｄｉｒｅｃｔｏｒｙ＿Ｄ／ｄｉｒｅｃｔｏｒｙＧ／ｓｔ＝ｔｉｅｒ＿Ｂ／ｎｅｗｆｉｌｅｎａｍｅ
【００６２】
指定されたテキストは、ユーザがファイル２３０Ａ（名前「ｆｉｌｅｎａｍｅＡ」）から「ｎｅｗｆｉｌｅｎａｍｅ」という名前の新しいファイル内にデータが運ばれることを希望していることを示し、それにおいて新しいファイルはディレクトリ６００Ｇ（名前「／ｄｉｒｅｃｔｏｒｙ＿Ａ／ｄｉｒｅｃｔｏｒｙ＿Ｂ／ｄｉｒｅｃｔｏｒｙ＿Ｄ／ｄｉｒｅｃｔｏｒｙＧ」）内に作成され、かつ新しいファイルはストレージ階層２００Ｂ（名前「ｔｉｅｒ  Ｂ」）に割り当てられる。したがって、ファイル・システム・ソフトウエアは、ファイル２３０Ａからのデータを備えた新しいファイル２３０Ｖをディレクトリ６００Ｇ内に作成し、その新しいファイル２３０Ｖをストレージ階層２００Ｂに割り当てる。新しいファイル２３０Ｖがストレージ階層２００Ｂに割り当てられることから、そのファイルは、ストレージ・ユニット２２０Ｃ、２２０Ｄ、又は２２０Ｅのうちの１つにストアされる。たとえば、図１１においては、新しいファイル２３０Ｖがストレージ・ユニット２２０Ｅ内にストアされている。
【００６３】
この方法の別の実施形態においては、ファイル・システム・ソフトウエア２０５に対する入力が、第１のパス名及び第２のパス名の両方を指定できる。第１のパス名は、１つ又は複数のディレクトリ構成要素、１つのファイル名構成要素、１つのストレージ階層構成要素を含む第１の文字列を構成できる。第２のパス名は、１つ又は複数のディレクトリ構成要素及び１つのファイル名構成要素を含む第２の文字列を含む。第１のパス名と第２のパス名は、いずれの順序で指定されてもよい。この実施形態においては、ファイル・システム操作が、第１のファイル名、第１のディレクトリ、第２のファイル名、第２のディレクトリ、ストレージ階層を操作する。追加の実施形態においては、第２のパス名もまたストレージ階層を含み、この方法が、第１のファイル名、第１のディレクトリ、第２のファイル名、第２のディレクトリ、第１のストレージ階層、第２のストレージ階層を操作する。
【００６４】
たとえば、１つの実施形態においてユーザは、次のテキストを入力する。
ｍｖ  ／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒｎａｍｅ１／＊．ｔｘｔ
／ｄｉｒ３／ｓｔ＝ｔｉｅｒｎａｍｅ２
【００６５】
この例においては、第１のパス名内のファイル名がワイルドカード（「＊．ｔｘｔ」）として与えられている。このコマンドの処理において、ファイル・システム・ソフトウエア２０５は、ストレージ階層「ｔｉｅｒｎａｍｅ１」に割り当て済みの拡張子「．ｔｘｔ」を有するディレクトリ「／ｄｉｒ１／ｄｉｒ２」内の各ファイルをディレクトリ「／ｄｉｒ３」に移動させ、ファイルをストレージ階層「ｔｉｅｒｎａｍｅ２」に再割り当てする。
【００６６】
したがって、いくつかの実施形態においては、たとえばユーザ又はアプリケーションが、特定のストレージ階層をパス名内の構成要素として指定することによって、ファイル・システム・コマンド又はファイル・システム操作が特定のストレージ階層に関連して実行される要求が可能となるように、ストレージ階層情報をファイル・システムの名前空間と統合できる。
【００６７】
「／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒｎａｍｅ」形式のパス名は、このパス名があたかも「ｓｔ＝ｔｉｅｒｎａｍｅ」という名前の付いたディレクトリ「／ｄｉｒ１／ｄｉｒ２」のサブ‐ディレクトリが存在するかのような見かけを有することから、ここではストレージ階層ディレクトリとも呼ばれている。しかしながら、いくつかの実施形態においては、ディレクトリ階層内に「ｓｔ＝ｔｉｅｒｎａｍｅ」という名前の付いた実際のディレクトリが存在しなくてもよい。たとえば、前述したとおり、ユーザは、「ｌｓ／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒｎａｍｅ」等のコマンドラインテキストを入力できる。「ｓｔ＝ｔｉｅｒｎａｍｅ」という名前の実際のディレクトリからファイル・リスティングを検索する代わりに、ファイル・システム・ソフトウエア２０５は、たとえば、指定されたストレージ階層にいずれのファイルが割り当てられているかを決定するべく「／ｄｉｒ１／ｄｉｒ２」ディレクトリについてのディレクトリ情報を解析することによって、及び／又はこのディレクトリ内にストアされているファイルについてのファイル情報を解析することによってファイルのリスティングを動的に生成できる。
【００６８】
いくつかの実施形態においては、ストレージ階層ディレクトリがディレクトリ階層内の実際のディレクトリとして存在しない場合であっても、ユーザが現在のディレクトリを変更してストレージ階層ディレクトリ内に移動するべく操作可能にできる。たとえば、ユーザは、「ｃｄ  ／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒｎａｍｅ」等のコマンドラインテキストを入力して現在のディレクトリを指定のストレージ階層ディレクトリに変更できる。その後ユーザがコマンドラインテキスト「ｌｓ」を入力すると、ユーザが「ｌｓ／ｄｉｒ１／ｄｉｒ２／ｓｔ＝ｔｉｅｒｎａｍｅ」をタイプした場合と同様にファイル・システムがディレクトリ「／ｄｉｒ１／ｄｉｒ２」内の「ｔｉｅｒｎａｍｅ」という名前のストレージ階層に割り当て済みのファイルだけを表示できる。
【００６９】
別の例として、マウント・ポイント・レベルにおいてユーザに対してストレージ階層ディレクトリを可視化することができる。たとえば、ユーザは、「／ｓｔ＝ｔ１」としてファイル・システムをマウントし、コマンドラインテキスト「ｃｄ／ｓｔ＝ｔ１／ｄｉｒ１」を入力できる。その後ユーザがコマンドラインテキスト「ｌｓ」を入力すると、ファイル・システムは、ディレクトリ「／ｄｉｒ１」内の「ｔ１」という名前のストレージ階層に割り当て済みのファイルだけを表示できる。ユーザが、続いて「ｄｉｒ１」のサブ‐ディレクトリに、たとえば「ｃｄ  ｄｉｒ２」を入力することによって移動した場合にストレージ階層のコンテキストを維持できる。たとえば、その後ユーザが再び「ｌｓ」を入力すると、ファイル・システムは、ディレクトリ「／ｄｉｒ１／ｄｉｒ２」内の「ｔ１」という名前のストレージ階層に割り当て済みのファイルだけを表示できる。同様にユーザが、絶対パスを指定せずに別のタイプのファイル・システム・コマンドを指定した場合には、そのコマンドは、現在のディレクトリ内の「ｔ１」という名前のストレージ階層に割り当て済みのファイルだけに操作する。
【００７０】
マウント・ポイント・レベルにおいて指定されたストレージ階層ディレクトリについて、ストレージ階層のコンテキスト情報を、ファイル・システム操作のためにストレージ階層のコンテキストを決定する必要があるときにそれの効率的な獲得が可能となるようにストアできる。たとえば、いくつかの実施形態においては、ストレージ階層のコンテキスト情報を、マウント済みのファイル・システムに関する情報を含む上位ブロック内にストアできる。
【００７１】
いくつかの実施形態においては、ストレージ階層ディレクトリのための種々のディレクトリ・リスティングを、たとえばファイル・システム操作によって必要とされるときにそれらがすでに利用可能となっているように、あらかじめ演算してキャッシュしておくことができる。ファイル・システムの修正がストレージ階層ディレクトリを通じて行われるとき、ファイル・システム・ソフトウエア２０５は、最初に実際のディレクトリ階層内のファイル・システムのディレクトリ情報を修正し、続いてそのストレージ階層ディレクトリについてのキャッシュ済みのディレクトリ情報を修正できる。これは、ストレージ階層のディレクトリ情報が、実際のディレクトリ階層内のディレクトリ情報に先行することを防止できる。
【００７２】
いくつかの実施形態においては、ストレージ階層情報を、メタ‐データとして各ファイルとともにストアできる。他の実施形態においては、それぞれのファイルのストレージ階層情報を、そのファイルの親ディレクトリ内のファイルの名前とともにストアできる。これは、ストレージ階層情報が親ディレクトリから獲得され、したがって各ファイルのメタ‐データにアクセスする必要性を回避可能なことから、所定のディレクトリ内のいずれのファイルが所定のストレージ階層に属するかの決定速度を改善できる。
【００７３】
他の実施形態においては、このストレージ階層ディレクトリのコンセプトを、複数のストレージ階層についてのストレージ階層コンテキスト情報を含むように拡張できる。たとえばユーザは、ファイル・システムに、ディレクトリ「／ｄｉｒ１／ｄｉｒ２」内のストレージ階層「ｔ１」又はストレージ階層「ｔ２」のいずれかに属するすべてのファイルの表示を要求するために「ｌｓ／ｄｉｒ１／ｄｉｒ２／ｓｔ＝（ｔ１  ＯＲ  ｔ２）」を入力できる。別の例としては、ユーザがファイル・システムに、ディレクトリ「／ｄｉｒ１／ｄｉｒ２」内のストレージ階層「ｔ１」に属していないすべてのファイルの表示を要求するために「ｌｓ／ｄｉｒ１／ｄｉｒ２／‘ｓｔ＝（ＮＯＴ  ｔ１）」を入力できる。
【００７４】
いくつかの実施形態においては、ＮＦＳ又はＣＩＦＳ等のプロトコルを通じてリモート・マシンからファイルを特定のストレージ階層内に置くか、又は移動できる。たとえば、ユーザは、「ｍｖ」コマンド又は他のファイル・システム操作及びリモート・ファイル・システム内のパス名を発行することによってリモート・マシン上のリモート・ファイル・システム内のファイルが異なるストレージ階層に移動されることを指定でき、それにおいてはパス名がストレージ階層構成要素を含む。
【００７５】
種々の実施形態において、ストレージ階層情報とファイル・システムの名前空間の統合は、多様なタイプのソフトウエア・アプリケーションがストレージ階層情報を使用することを、その他の方法を用いてはそれが容易に可能でないと見られる場合に可能にできる。たとえば、ユーザが「／ｈｏｍｅ」内の所定のストレージ階層「ｔ１」に割り当て済みのファイルだけのバックアップを希望している場合のバックアップ・ソフトウエア・アプリケーションについて考察する。ユーザは、単純にバックアップ・ソフトウエア・アプリケーションに、ストレージ階層ディレクトリ「／ｓｔ＝ｔ１／ｈｏｍｅ」又は「／ｈｏｍｅ／ｓｔ＝ｔ１」のバックアップを要求すればよい。これは、希望されたファイルだけがバックアップされることを保証できる。また、ストレージ階層名もディレクトリ名の形式で自動的にストアできる。復元の間は、復元パス名が「／ｓｔ＝ｔ１／ｈｏｍｅ」であることから、ファイル・システムは、それらすべてのファイルがストレージ階層「ｔ１」内に作成される必要があることを理解できる。したがって、既存のバックアップ製品が、有意の変更を必要とすることなくストレージ階層情報を使用できる。同様に、他のタイプの、検索ツール、分類ツール、又はデータのライフサイクル管理を実行するアプリケーション等のソフトウエア・アプリケーションは、たとえば指定されたストレージ階層におけるファイルの割り付け、指定されたストレージ階層内のファイルのリスティング、指定されたストレージ階層に対するファイルの再割り当て等の操作を実施するために、ストレージ階層構成要素を含むパス名を利用することによって容易にストレージ階層情報を使用できる。
【００７６】
いくつかの実施形態における潜在的な便益の別の例として、ユーザ又はアプリケーションが、特定のストレージ階層又はストレージ階層のセットに属するファイルの望ましい作業セットを知っていると仮定する。たとえばユーザのアプリケーションが、ストレージ階層「ｔ１」又は「ｔ２」に属するファイルだけを要求しているとする。伝統的な「／ｄｉｒ１」等の作業ディレクトリの使用に代えて、ユーザは、作業ディレクトリを「／ｓｔ＝（ｔ１  ＯＲ  ｔ２）／ｄｉｒ１」にセットすることが可能である。ディレクトリ読み出しレベルにおいてエントリのフィルタリングが生じる実施形態においては、ストレージ階層「ｔ１」又は「ｔ２」のいずれにも属さないファイルがＤＮＬＣキャッシュ内の空間を不必要に占有しないようにすることができる。またキャッシュ済みディレクトリ・ブロックは、それらが占有する空間がより少なくなるようにファイル・システムによって生成される。ユーザの観点からは、あまり混み合っていない名前空間を伴って自分のデータのより良好な眺めを得ることができる。
【００７７】
いくつかの実施形態においては、システムのために定義されるストレージ階層が、階層編成を有することができる。たとえば、複数のボリュームがセットを形成し、複数のセットが階層を形成し、複数の階層がクラスを形成する等々といったことができる。その種の階層は、ディレクトリ・ツリー構造と類似にそれを表現することによってシステム内に組み込むことができる。したがって、たとえばアプリケーションが、ファイル「ｄｉｒ１／ｆｉｌｅ１」がクラス「Ｇｏｌｄ」、階層「ｔ１」、ボリューム「ｖ１」に割り付けられることを希望する場合に、そのアプリケーションは、パス名「ｃｌａｓｓ＝Ｇｏｌｄ／ｔｉｅｒ＝ｔ１／ｖｏｌｕｍｅ＝ｖ１／ｄｉｒ１／ｆｉｌｅ１」を用いてそれが作成されることを指定できる。アプリケーションが、正確な階層及びボリュームに関心を有してなく、クラスだけに関心を有する場合には、そのアプリケーションは、代わりに「ｃｌａｓｓ＝Ｇｏｌｄ／ｄｉｒ１／ｆｉｌｅ１」等のパス名を指定できる。
【００７８】
いくつかの実施形態においては、システムが、複数のストレージ階層にわたってファイルを分割するべく操作できることがある。これば、たとえば非常に大きいデータベース・ファイルの場合に有用となる。分割ファイルは、ストレージ階層の結合を通じて扱うことができる。たとえばユーザが、ストレージ階層「ｔ１」又は「ｔ２」のいずれかにファイルが部分的に配置できることという指定を希望する場合には、ユーザは、「ｓｔ＝（ｔ１  ＯＲ  ｔ２）」を用いてパス名を修飾できる。ファイルは、「ｔ１」のためのストレージ階層ディレクトリ及び「ｔ２」のためのストレージ階層ディレクトリの両方において可視化できる。所定のストレージ階層内のファイルのレンジだけの可視化が希望されている場合には、オリジナルのファイル名にオフセット長の組み合わせを追加することによって対応するストレージ階層ディレクトリ内のファイル名を形成できる。
【００７９】
注意を要するが、多様な実施形態は、コンピュータ‐アクセス可能ストレージ・メディア上における、以上の説明に従って実装される命令及び／又はデータの受信、送信、又はストアをさらに含むことができる。概して言えば、コンピュータ‐アクセス可能ストレージ・メディアは、使用中にコンピュータに命令及び／又はデータを提供するべくコンピュータによってアクセス可能な任意のストレージ・メディアを含む。たとえば、コンピュータ‐アクセス可能ストレージ・メディアは、磁気又は光学メディア、たとえばディスク（固定又はリムーバブル）、テープ、ＣＤ‐ＲＯＭ、ＤＶＤ‐ＲＯＭ、ＣＤ‐Ｒ、ＣＤ‐ＲＷ、ＤＶＤ‐Ｒ、ＤＶＤ‐ＲＷ等のストレージ・メディアを含むことができる。さらにストレージ・メディアは、ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース等の周辺インターフェースを介してアクセス可能なＲＡＭ（たとえば同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、ラムバス（Ｒａｍｂｕｓ）ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュ・メモリ、不揮発性メモリ（たとえばフラッシュ・メモリ）等の揮発性又は不揮発性メモリ・メディアを含むことができる。いくつかの実施形態においては、コンピュータが、ネットワーク及び／又は無線リンク等の通信手段を介してストレージ・メディアにアクセスできる。
【００８０】
以上、実施形態をかなり詳細に説明してきたが、上記の開示が完全に認識された後は、多数の変形及び修正が当業者に明らかになるであろう。特許請求の範囲には、その種の変形及び修正をすべて包含するべく解釈されることが意図されている。
【図面の簡単な説明】
【００８１】
【図１】３つのストレージ階層が定義された例を図示した説明図である。
【図２】指定されたストレージ階層においてファイル・システム操作を実施するための方法を実装するべく動作可能なコンピュータ・システムの例示的な実施形態を図示した説明図である。
【図３】コンピュータ・システムの別の例示的な実施形態を図示した説明図である。
【図４】コンピュータ・システムが３つのサーバ・コンピュータを含む実施形態を図示した説明図である。
【図５】指定されたストレージ階層においてファイル・システム操作を実施するための方法の１つの実施形態を図示した説明図である。
【図６】種々のディレクトリが階層的に編成されるディレクトリ階層又はツリーを図示した説明図である。
【図７】システムが、２つのストレージ階層にグループ化された５つのストレージ・ユニットを含む例を図示した説明図である。
【図８】パス名がストレージ階層構成要素を含む場合のパス名に対してファイル・システム操作が実施されることをユーザが要求している例を図示した説明図である。
【図９】指定されたストレージ階層においてファイル・システム操作を実施するための方法の別の実施形態を図示した説明図である。
【図１０】パス名がストレージ階層構成要素を含む場合のパス名に対してファイル・システム操作が実施されることをユーザが要求している追加の例を図示した説明図である。
【図１１】パス名がストレージ階層構成要素を含む場合のパス名に対してファイル・システム操作が実施されることをユーザが要求している追加の例を図示した説明図である。
【符号の説明】
【００８２】
５０Ａ  ネットワーク・ストレージ・デバイス
５０Ｂ  ネットワーク・ストレージ・デバイス
８４  ネットワーク
９０  コンピュータ・システム
９２  サーバ・コンピュータ
９２Ａ  サーバ・コンピュータ
９２Ｂ  サーバ・コンピュータ
９２Ｃ  サーバ・コンピュータ
１２０  プロセッサ
１２２  メモリ
１２５  ストレージ・デバイス
１２６  入力デバイス
１２８  ディスプレイ・デバイス
１２９  ネットワーク接続ハードウエア
２００  ストレージ階層
２０５  ファイル・システム・ソフトウエア
２１２  論理ボリューム、ボリューム
２２０  ストレージ・ユニット
２３０  ファイル
２３０Ｖ  ファイル、新しいファイル
６００  ディレクトリ
６１０  ユーザ・インターフェース
６１２  テキスト
６１４Ｂ  表示出力
【図１】
0005537005.tif 000002
【図２】
0005537005.tif 000003
【図３】
0005537005.tif 000004
【図４】
0005537005.tif 000005
【図５】
0005537005.tif 000006
【図６】
0005537005.tif 000007
【図７】
0005537005.tif 000008
【図８】
0005537005.tif 000009
【図９】
0005537005.tif 000010
【図１０】
0005537005.tif 000011
【図１１】
0005537005.tif 000012