(57)【特許請求の範囲】
【請求項１】
計算機環境のストレージ・デバイス上でのスペースの割振りを管理する方法であって、
前記計算機環境の１つまたは複数のストレージ・デバイスの１つまたは複数の重みを得るステップと、
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスについて得られた少なくとも１つの重みに比例して、前記少なくとも１つのストレージ・デバイス上のスペースを割振るステップであって、前記割振りが前記計算機環境の複数のファイル・システムによって実行される、前記割振るステップと
を含み、
前記１つまたは複数の重みの少なくとも１つの重みに関連する変化を追跡するステップであって、前記追跡するステップが複数のファイル・システムによって実行される、前記追跡するステップと、
前記追跡された変化に基づいて前記少なくとも１つの重みを調整するステップと、
前記少なくとも１つの調整された重みを前記計算機環境のファイル・システムに伝搬するステップであって、前記伝搬するステップが、前記少なくとも１つの調整された重みを、前記追跡を実行する前記複数のファイル・システムに伝搬するステップを含み、前記少なくとも１つの調整された重みが、少なくとも１つのストレージ・デバイス上でのスペースの割振りに使用可能である、前記伝搬するステップと
をさらに含む、前記方法。
【請求項２】
前記計算機環境が１つまたは複数のノードを含み、該ノードは１つまたは複数のストレージ・デバイスへのアクセスを共用し、該ノードは相互接続を介して互いにストレージ・デバイスに結合され、前記ノード及び前記デバイスとは相互接続されており、前記複数のファイル・システムの各々が、前記計算機環境の別々のノード上に配置される、請求項１に記載の方法。
【請求項３】
前記計算機環境が１つまたは複数のノードを含み、該ノードは１つまたは複数のストレージ・デバイスへのアクセスを共用し、該ノードは相互接続を介して互いにストレージ・デバイスに結合され、前記複数のファイル・システムが、前記計算機環境の１つまたは複数のノード上に配置される、請求項１に記載の方法。
【請求項４】
前記割振るステップが、前記複数のファイル・システムの各ファイル・システムによって割振り技法を実行するステップを含み、前記複数のファイル・システムの少なくとも１つのファイル・システムが、前記複数のファイル・システムの少なくとも１つの他のファイル・システムと異なる割振り技法を実行する、請求項１に記載の方法。
【請求項５】
前記少なくとも１つのストレージ・デバイスの各ストレージ・デバイスが、複数の区画に区分され、各ストレージ・デバイスの１つまたは複数の区画が、前記複数のファイル・システムの１つまたは複数のファイル・システムによって所有される、請求項１に記載の方法。
【請求項６】
前記割振るステップが、複数のファイル・システムによって複数のストレージ・デバイス上のスペースを割振るステップを含み、前記複数のファイル・システムの各ファイル・システムが、前記複数のストレージ・デバイスの１つまたは複数のストレージ・デバイス上でスペースを割振る、請求項１に記載の方法。
【請求項７】
前記重みを得るステップが、前記１つまたは複数の重みを得るために少なくとも割振りマネージャを使用するステップを含む、請求項１に記載の方法。
【請求項８】
前記計算機環境が１つまたは複数のノードを含み、該ノードは１つまたは複数のストレージ・デバイスへのアクセスを共用し、該ノードは相互接続を介して互いにストレージ・デバイスに結合され、前記使用するステップが、前記１つまたは複数の重みを得るために前記割振りマネージャおよび前記計算機環境の少なくとも１つのノードを使用するステップを含む、請求項７に記載の方法。
【請求項９】
前記１つまたは複数の重みが、前記計算機環境の少なくとも１つのパラメータを表す、請求項１に記載の方法。
【請求項１０】
前記割振るステップが、前記１つまたは複数の重みを得るステップと無関係である、請求項１に記載の方法。
【請求項１１】
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスが、前記１つまたは複数のストレージ・デバイスの少なくとも１つの他のストレージ・デバイスと異なる１つまたは複数の特性を有する、請求項１に記載の方法。
【請求項１２】
前記少なくとも１つの重みを、前記複数のファイル・システムの少なくとも１つのファイル・システムに伝搬するステップをさらに含む、請求項１に記載の方法。
【請求項１３】
事前定義のイベント時に、前記追跡された変化について割振りマネージャに知らせるステップをさらに含み、前記割振りマネージャが、前記調整するステップおよび伝搬するステップを実行する、請求項１に記載の方法。
【請求項１４】
前記複数のファイル・システムに、前記少なくとも１つの重みの変化について知らせるステップをさらに含み、前記変化が、スペースのさらなる割振りに使用可能である、請求項１に記載の方法。
【請求項１５】
前記計算機環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを調整するステップをさらに含む、請求項１に記載の方法。
【請求項１６】
前記調整するステップが、
前記少なくとも１つの重みを調整するために、前記計算機環境の少なくとも１つの他のファイル・システムによって提供される情報を使用するステップと、
前記少なくとも１つの重みを調整するために、前記少なくとも１つの重みに関連する少なくとも１つのストレージ・デバイスを読み取ることから得られる情報を使用するステップと
の少なくとも１つを含む、請求項１５に記載の方法。
【請求項１７】
前記計算機環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを維持するステップをさらに含む、請求項１に記載の方法。
【請求項１８】
前記複数のファイル・システムの１つのファイル・システムが、所与のファイルのために前記少なくとも１つのストレージ・デバイス上のスペースを割振り、その所与のファイルのための前記割振りが、前記少なくとも１つの重みを使用する割振り方針に基づく、請求項１に記載の方法。
【請求項１９】
前記１つのファイル・システムが、別のファイルのために１つまたは複数のストレージ・デバイス上のスペースを割振り、その別のファイルのための前記割振りが、前記１つまたは複数のストレージ・デバイスに関連する１つまたは複数の重みを使用する別の割振り方針に基づく、請求項１８に記載の方法。
【請求項２０】
前記重みが、ラウンドロビン重み付け、容量重み付け、空きスペース重み付け、スループット重み付け、ハイブリッド重み付けのいずれかである、請求項１〜１９のいずれか一項に記載の方法。
【請求項２１】
計算機環境のストレージ・デバイス上でのスペースの割振りを管理するシステムであって、
前記計算機環境の１つまたは複数のストレージ・デバイスの１つまたは複数の重みを得るための手段と、
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスについて得られた少なくとも１つの重みに比例して、前記少なくとも１つのストレージ・デバイス上のスペースを、前記計算機環境の複数のファイル・システムによって割振るための手段と
を含み、
前記１つまたは複数の重みの少なくとも１つの重みに関連する変化を追跡するための手段であって、前記追跡するための手段が複数のファイル・システムによって追跡するための手段を含む、前記追跡するための手段と、
前記追跡された変化に基づいて前記少なくとも１つの重みを調整するための手段と、
前記少なくとも１つの調整された重みを前記計算機環境のファイル・システムに伝搬するための手段であって、前記伝搬するための手段が、前記少なくとも１つの調整された重みを、前記追跡に使用する複数のファイル・システムに伝搬するための手段を含み、前記少なくとも１つの調整された重みが、少なくとも１つのストレージ・デバイス上でのスペースの割振りに使用可能である、前記伝搬するための手段と
をさらに含む、前記システム。
【請求項２２】
前記計算機環境が１つまたは複数のノードを含み、該ノードは１つまたは複数のストレージ・デバイスへのアクセスを共用し、該ノードは相互接続を介して互いにストレージ・デバイスに結合され、前記複数のファイル・システムの各々が、前記計算機環境の別々のノード上に配置される、請求項２１に記載のシステム。
【請求項２３】
前記計算機環境が１つまたは複数のノードを含み、該ノードは１つまたは複数のストレージ・デバイスへのアクセスを共用し、該ノードは相互接続を介して互いにストレージ・デバイスに結合され、前記複数のファイル・システムが、前記計算機環境の１つまたは複数のノード上に配置される、請求項２１に記載のシステム。
【請求項２４】
前記割振るための手段が、前記複数のファイル・システムの各ファイル・システムによって割振り技法を実行するための手段を含み、前記複数のファイル・システムの少なくとも１つのファイル・システムが、前記複数のファイル・システムの少なくとも１つの他のファイル・システムと異なる割振り技法を実行する、請求項２１に記載のシステム。
【請求項２５】
前記少なくとも１つのストレージ・デバイスの各ストレージ・デバイスが、複数の区画に区分され、各ストレージ・デバイスの１つまたは複数の区画が、前記複数のファイル・システムの１つまたは複数のファイル・システムによって所有される、請求項２１に記載のシステム。
【請求項２６】
前記割振るための手段が、複数のファイル・システムによって複数のストレージ・デバイス上のスペースを割振るための手段を含み、前記複数のファイル・システムの各ファイル・システムが、前記複数のストレージ・デバイスの１つまたは複数のストレージ・デバイス上でスペースを割振る、請求項２１に記載のシステム。
【請求項２７】
前記重みを得るための手段が、前記１つまたは複数の重みを得るために少なくとも割振りマネージャを使用するための手段を含む、請求項２３に記載のシステム。
【請求項２８】
前記計算機環境が１つまたは複数のノードを含み、該ノードは１つまたは複数のストレージ・デバイスへのアクセスを共用し、該ノードは相互接続を介して互いにストレージ・デバイスに結合され、前記使用するための手段が、前記１つまたは複数の重みを得るために前記割振りマネージャおよび前記計算機環境の少なくとも１つのノードを使用するための手段を含む、請求項２７に記載のシステム。
【請求項２９】
前記１つまたは複数の重みが、前記計算機環境の少なくとも１つのパラメータを表す、請求項２１に記載のシステム。
【請求項３０】
前記割振るための手段が、前記１つまたは複数の重みを得るための手段と無関係である、請求項２１に記載のシステム。
【請求項３１】
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスが、前記１つまたは複数のストレージ・デバイスの少なくとも１つの他のストレージ・デバイスと異なる１つまたは複数の特性を有する、請求項２１に記載のシステム。
【請求項３２】
前記少なくとも１つの重みを、前記複数のファイル・システムの少なくとも１つのファイル・システムに伝搬するための手段をさらに含む、請求項２１に記載のシステム。
【請求項３３】
事前定義のイベント時に、前記追跡された変化について割振りマネージャに知らせるための手段をさらに含み、前記割振りマネージャが、前記調整および伝搬を実行する、請求項２１に記載のシステム。
【請求項３４】
前記複数のファイル・システムに、前記少なくとも１つの重みの変化について知らせるための手段をさらに含み、前記変化が、スペースのさらなる割振りに使用可能である、請求項２１に記載のシステム。
【請求項３５】
前記計算機環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを調整するための手段をさらに含む、請求項２２に記載のシステム。
【請求項３６】
前記調整するための手段が、
前記少なくとも１つの重みを調整するために、前記計算機環境の少なくとも１つの他のファイル・システムによって提供される情報を使用するための手段と、
前記少なくとも１つの重みを調整するために、前記少なくとも１つの重みに関連する少なくとも１つのストレージ・デバイスを読み取ることから得られる情報を使用するための手段と
の少なくとも１つを含む、請求項３５に記載のシステム。
【請求項３７】
前記計算機環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを維持するための手段をさらに含む、請求項２１に記載のシステム。
【請求項３８】
前記複数のファイル・システムの１つのファイル・システムが、所与のファイルのために前記少なくとも１つのストレージ・デバイス上のスペースを割振り、その所与のファイルのための前記割振りが、前記少なくとも１つの重みを使用する割振り方針に基づく、請求項２１に記載のシステム。
【請求項３９】
前記１つのファイル・システムが、別のファイルのために１つまたは複数のストレージ・デバイス上のスペースを割振り、その別のファイルのための前記割振りが、前記１つまたは複数のストレージ・デバイスに関連する１つまたは複数の重みを使用する別の割振り方針に基づく、請求項３８に記載のシステム。
【請求項４０】
前記重みが、ラウンドロビン重み付け、容量重み付け、空きスペース重み付け、スループット重み付け、ハイブリッド重み付けのいずれかである、請求項２１〜３９のいずれか一項に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にストレージ・デバイスのスペースを割振ることに関し、詳細には、複数のファイル・システムが、重み付き割振りを使用して１つまたは複数のストレージ・デバイスのスペースを割振ることができるようにすることに関する。
【０００２】
【従来の技術】
多くの計算環境に、ファイル・システムが含まれ、これによって、他のアプリケーション・プログラムが、ストレージ・デバイスにデータを保管し、取り出すことができるようになる。具体的に言うと、ファイル・システムによって、アプリケーション・プログラムが、ファイルを作成し、ファイルに名前を付け（ファイルは、任意のサイズの名前付きデータ・オブジェクトである）、ファイルにデータを保管し（書き込み）、ファイルからデータを読み取り、ファイルを削除し、ファイルに対して他の動作を実行することができるようになる。
【０００３】
ファイル構造は、ストレージ・デバイス上でのデータの編成である。ファイル・データ自体のほかに、ファイル構造には、例えば、対応するファイルにファイル名をマッピングするディレクトリ、ストレージ・デバイス上でのファイル・データの位置（すなわち、どのデバイス・ブロックがファイル・データを保持するか）を含むファイルに関する情報を含むファイル・メタ・データ、どのデバイス・ブロックが現在メタ・データおよびファイル・データの保管に使用されているかを記録する割振りマップ、およびファイル構造に関する全体的な情報（例えば、ディレクトリ、割振りマップ、および他のメタ・データ構造の位置）を含むスーパーブロックを含むメタ・データが含まれる。
【０００４】
ファイルの連続するデータ・ブロックを、ディスクまたは他のストレージ・デバイスなどの別個のデバイスに保管するために、ストライピングと称する技法が使用される。ストライピングは、ファイル・システムのメタ・データを保管するのに使用することもできる。ストライピングの長所には、高性能およびロード・バランシングが含まれる。ストライピングでは、ファイル・システムが、ファイルの連続するブロックまたはファイルのメタ・データを、定義された順序で別個のデバイスに書き込む。例えば、ファイル・システムは、ラウンドロビン割振りを使用することができ、この場合、連続するブロックが、デバイスの巡回置換に従って配置される。この置換を、ストライプ順序と称する。ストライプ順序によって、ファイル・システム内の各デバイスへの割振り（したがって、書込）の順序および頻度が定義される。例えば、単純なラウンドロビン割振り方式を使用する、４台のディスクを有するシステムでは、各ディスクのスペースが、連続する順序すなわち１、２、３、４、１、２、３、４、…で割振られる。
【０００５】
この単純なラウンドロビン割振りは、ほとんどのストライプ式ファイル・システムによって割振りに使用される。ラウンドロビン割振りは、同種デバイスを含むシステムの一部の情況に十分である場合があるが、異種デバイスを有するシステムに不適切であることがわかっており、同種デバイスが使用されるさまざまな情況に不適切であることがわかっている。
【０００６】
一例として、ラウンドロビン割振りは、異なる記憶容量またはスループットを有するデバイスに不適切である。ラウンドロビン割振りの下では、すべてのデバイスが均等に割振られる。その結果、データへの後続のアクセスが、通常は、やはりデバイスにまたがって均等に分散される。異なる記憶容量のデバイスを含むシステムの場合、少容量のデバイスが、大容量のデバイスの前に満杯になり、したがって、ストライプ順序から排除されなければならず、したがって、後続のすべての書込について並列性および性能が低下する。さらに、デバイスの縮小された組にまたがってストライピングされるデータは、後続のすべてのアクセスについて性能が低下する。
【０００７】
同様に、異なるスループットを有するデバイスを含むシステムの場合、ラウンドロビン割振りは、割振りおよびすべての後続のデータへのアクセスに関するスループットを最大化することができない。さらに、ラウンドロビン割振りは、平衡でない状態になっているシステムを再平衡化する機能を有しない。平衡でない状態は、例えば、デバイスがファイルまたはオペレーティング・システムの間で区分されている時、空のデバイスが既存のファイル・システムに追加された時、または割振り方針が変更された時を含む、さまざまな理由から発生する可能性がある。そのようなシステムを再平衡化するためには、ファイル・システム内のすべてのデータを再ストライピングするなど、ユーザによる異例の処置が必要になる。
【０００８】
ストライピングは、単一のファイル・システムによって、または共用デバイス・ファイル環境（例えば並列環境）の複数のファイル・システムによって、実行することができる。共用デバイス・ファイル環境では、１つまたは複数のストレージ・デバイスに常駐するファイル構造が、複数の計算ノード上で稼動する複数のファイル・システムによってアクセスされる。共用デバイス・ファイル環境を用いると、ファイル構造を使用するアプリケーション（またはジョブ）を、複数のノードで並列に稼動させることができる複数の断片に分割することができる。これによって、これらの複数のノードの処理能力を、アプリケーションに対して発揮させることが可能になる。
【０００９】
【発明が解決しようとする課題】
上で述べたストライピングに関連する問題は、並列環境で悪化する。したがって、広範囲の情況で使用するのに十分に一般的である、並列割振り技法の必要がまだ存在する。さらに、システムまたはデバイスの現在の状態および要件によりよく一致するように割振りを再平衡化することができる能力の必要が存在する。
【００１０】
【課題を解決するための手段】
計算環境のストレージ・デバイス上のスペースの割振りを管理する方法を提供することを介して、従来技術の短所が克服され、追加の長所がもたらされる。この方法には、例えば、計算環境の１つまたは複数のストレージ・デバイスの１つまたは複数の重みを得るステップと、１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスについて得られた少なくとも１つの重みに比例して、少なくとも１つのストレージ・デバイスのスペースを割振るステップとを含み、割振りが、計算環境の複数のファイル・システムによって実行される。
【００１１】
もう１つの実施形態では、計算環境のストレージ・デバイスのスペースの割振りを管理する方法が提供される。この方法には、例えば、計算環境の複数のストレージ・デバイスの少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスのための重みを得るステップと、ストレージ・デバイスに割り当てられた重みに比例して、少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスのスペースを割振るステップとを含み、複数のファイル・システムの各ファイル・システムが少なくともストレージ・デバイスのサブセットの１つまたは複数のストレージ・デバイス上のスペースを割振るように、割振りが複数のファイル・システムによって実行される。
【００１２】
上に要約した方法に対応するシステムおよびコンピュータ・プログラムも、本明細書に記載され、請求される。
【００１３】
本発明の１つまたは複数の態様の機能は、有利なことに、各デバイスのスペースが、そのデバイスに割り当てられた重みに比例して割振られ、したがって消費されるように、１つまたは複数のストレージ・デバイスにまたがる、複数のファイル・システムによるスペースの割振りをもたらす。デバイスに割り当てられる重みは、動的に変更することができ、したがって、本発明の一態様によって、これらの変更を追跡し、この情報を必要とするか所望する他のファイル・システムに伝搬することが可能になる。さらに、ファイル・システムを有する１つまたは複数のノードの障害の場合に、重みの回復がもたらされる。
【００１４】
【発明の実施の形態】
本発明の態様によれば、複数のファイル・システムによって、１つまたは複数のストレージ・デバイスのスペースが、これらのデバイスに関連する重みを使用して割振られる。具体的に言うと、ストレージ・デバイスに関連する重みが、ストライプ順序の生成に使用され、各ストライプ順序によって、個々のストレージ・デバイスのスペースを割振る順序およびこれらのデバイスのスペースを割振る頻度が、めいめいのファイル・システムに与えられる。各デバイスに関連する重みは、そのデバイスでスペースを割振るファイル・システムに分配され、その結果、組み合わされた割振りが、重みに比例するままになる。重みは、動的に調整することができるので、さまざまなファイル・システムが、重み付き調整について最新の状態に保たれる。
【００１５】
本発明の態様が組み込まれ、使用される計算環境の一実施形態を、図１に関して説明する。計算環境１００には、１つまたは複数のノード１０２（例えば、ノード１、…、ノードｎ）が含まれ、これらのノードは、１つまたは複数のストレージ・デバイス１０４（例えば、ディスク１、…、ディスクｍ、または他の不揮発性メモリ）へのアクセスを共用する。ノードは、相互接続１０６を介して、互いにおよびストレージ・デバイスに結合される。一例では、相互接続に、例えば、ワイヤ接続、バス、トークン・リング、またはネットワーク接続が含まれる。１つまたは複数のこれらの接続によって使用される通信プロトコルの１つが、ＴＣＰ／ＩＰである。一例では、ノードが共用メモリを有しないことが仮定される。
【００１６】
一例として、ノード１０２に、米ＩＢＭ社が提供するＡＩＸオペレーティング・システムなどのオペレーティング・システム２００（図２）が含まれる。オペレーティング・システムには、米ＩＢＭ社が提供するジェネラル・パラレル・ファイル・システム（General Parallel File System；ＧＰＦＳ）などの、さまざまなストレージ・デバイスのスペースの割振りを管理するのに使用されるファイル・システム２０２（例えばソフトウェア・レイヤ）が含まれる。本明細書に記載の１つまたは複数の実施形態では、各ノードが、単一のファイル・システムを有し、したがって、記述の一部が、このノードを指すと仮定する。しかし、もう１つの例では、ノードに、複数のファイル・システムを含めることができる。その例では、ノード上の参加するファイル・システムの各々が、重みの変更について最新状態に保たれ、回復に使用することができる。
【００１７】
ファイル・システム２０２は、さまざまなストレージ・デバイスのスペースを割振り、各ストレージ・デバイス上の総割振りが、そのデバイスについて得られた重みに比例するようにする。本明細書で使用する、重みを得ることは、重みを受け取ること、および重みを割り当てることを含むがこれに制限されない、任意の形で達成することができる。各デバイスについて得られる重みは、割振り方針の決定に使用され、この重みを用いて、ファイル・システムが、個々のデバイスの容量に一致し、デバイスの組合せスループットをよりよく利用するように、デバイスにまたがる割振りを平衡化することができるようになる。しかし、重みおよび割振り方針（すなわち、各デバイスでの割振りの順序および頻度）は、割振りに使用される技法とは独立である。すなわち、異なる割振り技法を、割振りに使用することができる。割振り技法は、重みに束縛されない。これによって、重みが、さまざまなパラメータを表す（例えば、下で説明する容量重み付け、空きスペース重み付け、スループット重み付け、ラウンドロビン重み付け、ハイブリッド重み付けなど）ことができ、重みを動的に変更することができるようになる。したがって、割振り方針は、現在の状態または要件により適するように、いつでも変更することができる。さらに、重みを得るのに使用されるどの重み付け技法であっても、割振り技法を知る必要がない。
【００１８】
並列ファイル・システムでは、（１つまたは複数のノードの）複数のファイル・システムによって、１つまたは複数のストレージ・デバイスのスペースを割振ることができる。例として、複数のファイル・システムによって、１つのストレージ・デバイスのスペースを割振ることができ、複数のファイル・システムによって、複数のストレージ・デバイスのスペースを任意の組合せで割振ることができる（例えば、複数のファイル・システムの各々が、異なるデバイスのスペースを割振るか、１つまたは複数のファイル・システムが、１つまたは複数のデバイスのスペースを割振る）。１つまたは複数のデバイスのスペースを割振る複数のファイル・システムのどのような組合せでも可能である。したがって、スペースを、任意の１つまたは複数のファイル・システムによってストレージ・デバイスのうちの任意の１つで割振ることができる。
【００１９】
複数のファイル・システムが、特定のストレージ・デバイスのスペースを割振ることができるので、一例では、あるデバイスのストレージ・スペースが、図３に示されるように複数の区画に区分される。図３からわかるように、デバイス３００は、複数の区画３０２ａないし３０２ｄに区分され、各区画は、０個以上のノードによって所有される。例えば、区画３０２ａは所有されず、区画３０２ｂはノード１によって所有され、区画３０２ｃはノード２によって所有され、区画３０２ｄはノード３および４によって所有される。区画を所有する１つまたは複数のノードは、その区画内のスペースを割振ることを許可される（もう１つの例では、所有権を、ファイル・システムに基づくものとすることができ、ファイル・システムが常駐するノードと無関係に、各区画が、０個以上のファイル・システムによって所有される）。
【００２０】
一実施形態では、所有権情報が、集中化された割振りマネージャによって維持される。このマネージャは、割振りに参加するノードの１つの一部、または主に制御に使用され実際に割振りを行わない別のノードとすることができる。
【００２１】
所有権情報は、各ストレージ・デバイスに関連するさまざまな統計の一部として維持される。具体的に言うと、各デバイスは、一例として下記の統計３１０（図４）を関連付けられている。
（Ａ）毎デバイス総計：デバイス総計は、特定のパラメータのどれだけがそのデバイスに関連するかを表す。例えば、この総計によって、デバイス上の空きスペースの量を示すことができる。
（Ｂ）毎区画情報：
（１）所有者：特定の区画の１つまたは複数の所有者の表示
（２）区画総計：特定のパラメータのどれだけがその区画に関連するかの表示（例えばその区画内の空きスペースの量）
【００２２】
本発明の態様によれば、スペースを割振るファイル・システムの各々が、重み付き割振り技法を使用して、割振りのためにデバイスを選択する順序およびこれらのデバイスでスペースを割振る頻度を判定する。特定のデバイスでスペースを割振るファイル・システムは、そのデバイスに関する重みに合意し、その結果、各デバイスの総割振りが、そのデバイスに割り当てられた重みに比例するままになる。この合意は、下で説明するように、集中化された割振りマネージャに連絡することによってもたらされる。
【００２３】
割振りに使用される重みは、動的に変更することができる。したがって、新しい値が、新しい情報を必要とするか所望するノード（またはファイル・システム）に伝搬される。したがって、重みの追跡および分配が、本発明の並列重み付き割振り技法の一部である。さらに、並列環境は、１つまたは複数のノードが障害を発生し、独立に再始動する、部分的な障害をこうむる可能性があるので、本発明の割振り技法には、回復も含まれる。
【００２４】
並列ファイル・システムの重み付き割振り技法の一例を、図５に関して説明する。図５からわかるように、この技法には、初期化のステップ４００、重みの追跡および分配のステップ４０２、およびノード障害および回復のステップ４０４を含む、３つの主なアクションが含まれる。これらのアクションの各々を、さまざまな形で実施することができる。各アクションの２つの可能な実施形態を、本明細書で説明する。第１の実施形態を、無状態実施形態と称し、この実施形態では、最少量の状態が使用されるが、ノード障害からの回復の時間が長い。第２の実施形態を、全状態実施形態と称し、この実施形態では、割振りマネージャが、区画所有権情報の維持に使用され、毎デバイス毎区画カウンタを完了する。この余分な状態が、回復時間を短縮するように働く。アクションの各々に関するこれらの実施形態の各々を、下でさらに詳細に説明する。
【００２５】
初期化アクションの一例を、図６に関してさらに詳細に説明する。このアクションの両方の実施形態（すなわち、無状態実施形態および全状態実施形態）で、図６に示されたアクションが実行される。
【００２６】
まず、ステップ５００で、ファイル・システムが割振りマネージャを選択する。一例では、初期化論理の実行を試みる最初のノードが、割振りマネージャとして指定される。他のノードを、クライアント・ノードと呼称する。クライアント・ノードは、例えばグローバル・ネーミング・サービスを使用して、割振りマネージャを突きとめ、割振りマネージャの初期化が完了するのを待つ。
【００２７】
割振りマネージャの指名の後に、ステップ５０２で、割振りマネージャが、割振りに使用する初期重みを決定する。割振りマネージャは、単独で作業して順次式に、または１つまたは複数のクライアント・ノードの支援を得ることによって並列に、重みを決定することができる。
【００２８】
初期重みは、使用される重み付け技法に依存する。静的パラメータに基づく技法ならびに動的パラメータに基づく技法を含むさまざまな重み付け技法が使用可能である。１つまたは複数の重みは、計算環境の少なくとも１つのパラメータを表す。さまざまな技法の例には、例えば下記が含まれる。
（１）ラウンドロビン重み付け−単純なラウンドロビン割振りを実施するために、各デバイスの重みに１をセットする。各デバイスに等しい重みを使用することによって、この技法では、各デバイスで等しい回数だけスペースが割振られる。
（２）容量重み付け−不均等なサイズを有するデバイスにまたがって割振りをよりよく分散するために、各デバイスの相対容量を使用して重みを割り当てることができる。この重み付け技法では、デバイスが、同一の割合で書き込まれる（すなわち、各デバイスで使用される比率が、デバイスの容量に無関係に同一になる）。その結果、各デバイスでの期待される入出力負荷も、デバイスの容量に比例するようになる。
容量重み付けの場合、割振りマネージャが、各デバイスの最大記憶容量を判定する。これは、各デバイスの記述子を検査するなど、複数の方法で行うことができる。
（３）空きスペース重み付け−この動的重み付け技法では、重みを、各デバイスの空きスペースの相対量に基づくものとすることができる。この技法の下では、より高い比率の空きスペースを有するデバイスが、それに比例してより多い割振りを受け取る。これは、不均等に書き込まれたデバイスを再平衡化するように働き、不均等な書込は、既存のシステムに新しいデバイスを追加することまたは不均等なサイズを有するデバイスでラウンドロビン割振りを以前に使用したことから生じる可能性がある。この重みは、空きスペースの相対量の変更を説明するために動的に調整することができる。均等に書き込まれているデバイスの場合、空きスペース重み付け技法は、容量重み付けと同等である。
空きスペース重み付けの場合、各デバイスを検査して、各デバイスの空きブロックの数を判定する。一例では、デバイスの割振りマップから、この情報を与えることができる（割振りマップは、米国特許第５９６０４４６号明細書に記載されている）。
（４）スループット重み付け−各デバイスの相対性能に基づいて重みを割り当てることもできる。高いスループットを有するデバイスは、それに比例してより多くの割振りを受け取り、その結果、平均してより多くの入出力要求を受け取る。この重み付けでは、組み合わされたデバイスの総スループットを最大にすることが試みられる。
初期化中にスループット重みを決定する方法は、例えば、テーブルからデバイス・スループットを読み取るか、システムが最大入出力負荷の下である間に各デバイスへの実際のスループットを測定することによるデバイス・スループットの測定によるなど、複数存在する。
（５）ハイブリッド重み付け−重みを動的に変更できるだけではなく、重みを割り当てる技法も変更することができる。さらに、ハイブリッド重み付けを作るための複数の重み付け技法の組合せを使用することができる。これは、複数の技法の下で各デバイスの正規化された重みを計算し、その後、各所望の技法からのデバイスの正規化された重みを加算することによって達成することができる。これによって、システムが、現在の要件に合わせて割振りを調整し、システムが変更される際に割振りを変更することができるようになる。
【００２９】
図６の参照を続けると、初期重みを収集した後に、ステップ５０４で、割振りマネージャが、重みを他のノード（または他のファイル・システム）に伝搬する。一例では、重みが、割振りに参加するすべてのノードに伝搬される。別の例では、特定のデバイスの重みが、その重みを使用するノードだけに伝搬される。伝搬は、メッセージ渡しまたはブロードキャストを含む複数の技法を使用して実行することができる。
【００３０】
その後、ステップ５０６で、割振りを行うファイル・システムの各々が、重みを使用して、ローカル重み付き割振り技法を初期化する。ローカル重み付き割振り技法は、ストレージ・デバイス上の割振りの順序および頻度を定義するのに使用されるストライプ順序を生成するためにファイル・システムによって実行される技法である。この技法には、例えば、重みを正規化し、いくつかの変数をセットする初期化ステップと、正規化された重みを使用してストライプ順序を決定するストライプ順序生成ステップが含まれる。他のステップも、割振り技法のタイプに応じて含めることができる。
【００３１】
ローカル重み付き割振り技法の初期化によって、初期化アクションが完了する。上で述べたように、無状態実施形態と全状態実施形態の両方が、上で説明したアクションを実行する。しかし、上記のほかに、空きスペース重み付けなどの動的重み付けを使用する時に、全状態実施形態では、各区画内で毎デバイス毎区画テーブル内（図４参照）に各デバイスの空きスペースも保管される。
【００３２】
図５に戻ると、初期化を実行した後に、ステップ４０２で、重みの追跡および分配のアクションが実行される。毎デバイス空きスペースなどの動的情報に基づく重みが、その精度を維持するために周期的に更新される。容量などの静的情報に基づく重みは、例えば、構成が変更された時、または割振り方針の変更があった時に更新される。重みの追跡および分配に使用される論理の一実施形態を、図７に関して説明する。この特定の例を、空きスペースの追跡および分配（動的重み）に関して説明する。しかし、この論理は、他の動的重みまたは静的重みにも同様に適用可能である。
【００３３】
図７を参照すると、ステップ６００で、さまざまなノードの各々が、情報（すなわち動的情報または静的情報）の変化を追跡する。好ましくは、該追跡が、ファイル・システムによって実行される。更に好ましくは、該追跡が、複数のファイル・システムによって実行される。一例として、空きスペース重み付けの場合、各適当なノードが、それが各デバイスに対して実行する割振りおよび割振り解除の数を追跡する。デルタと称する、デバイスごとの正味の割振りは、そのノードでの動作によって引き起こされる各デバイス上の空きスペースの差である。クライアント・ノードが、ある閾値（例えば１００動作）に一致するまでデルタを累算する。閾値に一致する時、または別の事前定義のイベント（例えば３０秒ごと）時に、ステップ６０２で、ノードが、変化について割振りマネージャに知らせる。具体的に言うと、クライアント・ノードが、通信機構を使用して、デルタを割振りマネージャに送る。デルタを成功裡に送った後に、クライアント・ノードは、そのデルタ・カウンタを０にリセットする。
【００３４】
クライアントからデルタを受け取った時に、ステップ６０４で、割振りマネージャが、それらを総空きスペース・カウンタに加算する。このカウンタは、割振りマネージャによって維持される（図４の毎デバイス総計３１２を参照）。すなわち、割振りマネージャは、受け取ったデルタに基づいて特定のデバイスの重みを調整する。重みの変化が、スペースのさらなる割振りに使用可能である。
【００３５】
重みを調整した後に、ステップ６０６で、調整された重み（例えば、デバイスの新しい総空きスペース・カウンタ）が、デルタを送るメッセージに応答してクライアントに返される。好ましくは、少なくとも１つの調整された重みを、追跡を実行する複数のファイル・システムに伝搬する。好ましくは、割振りマネージャが、前記伝搬するステップを実行する。クライアントは、調整された重みを受け取る時に、ステップ６０８で、調整された重みを使用してそのローカル割振り技法を再初期化する（少なくとも１つの調整された重みが、少なくとも１つのストレージ・デバイス上でのスペースの割振りに使用可能である）。したがって、新しいストライプ順序が生成される。
【００３６】
上で説明した、クライアントと割振りマネージャの間の通信によって、クライアントが、割振りマネージャと通信した後に、使用する重みについて合意することができるようになる。この合意は、ノードが新しい重みについてより早く知らされる場合に、より早く達することができる。いつどのようにクライアントに知らせるかの決定は、実施形態依存である。
【００３７】
例えば、クライアントによってデルタの送出に使用される閾値は、割振りマネージャによって維持される総空きスペース・カウンタと各デバイスの空きスペースの実際の量の間の差を制限するように働くこともできる。クライアント・ノードによって使用される重みの同一の度合の精度を維持するために、例えば割振り方針の変化、ハードウェア構成の変化、または非常にアクティブなクライアント・ノードの組から受け取られたデルタに起因する大きい累積的変化によって引き起こされる重みの大きい変更が、一例では、割振りマネージャに、新しい重みをクライアント・ノードに即座に送らせる。この重みの変化は、ノードに保管されている現在のデルタに影響しない。
【００３８】
上のアクションは、本明細書に記載の２つの実施形態（すなわち、無状態実施形態および全状態実施形態）の各々について実行される。しかし、全状態実施形態の場合、各クライアント・ノードが、それが変更する区画の各々について別々のデルタ・カウンタを維持する。毎区画デルタを受け取る時に、割振りマネージャは、毎デバイス毎区画カウンタ３１８（図４）ならびに毎デバイス総計３１２を更新する。
【００３９】
図５に戻って、重みの追跡および分配によって、重み付き割振りに基づくシステムの再平衡化が可能になるが、これのほかに、本発明の並列重み付き割振り技法は、ステップ４０４のノード障害からの回復も提供する。並列ファイル環境内のノードは、互いに独立に障害を発生し、再起動される可能性がある。ノード障害を処理するために、障害を発生したノードによって失われる揮発性の状態を、別のノードによって再構成しなければならない。この回復は、例えば、障害を発生したノードがクライアントであるか、割振りマネージャとして活動しているかのいずれであるか、重みが静的と動的のどちらであるか、動的重みの場合に、それが割振りマネージャによって維持される状態の量に依存するかどうかを含む、多数の要因に依存する。
【００４０】
ここで検討される３つの主な場合があり、それは、静的重みを使用する回復、無状態実施形態での動的重みを使用する回復、および全状態実施形態での動的重みを使用する回復である。これらの場合の各々について、回復のための例示的技法を、単一のクライアント・ノードからの障害または割振りマネージャのノードからの障害について説明する。この技法は、一例では定数のノードが使用可能なままである限り、複数ノードの障害を処理するように簡単に拡張される。ファイル・システムによって管理される、ノード障害からの回復を、図８ないし１１を参照してさらに説明する。
【００４１】
図８を参照すると、ステップ７００で、まず、必要な回復の種類に関する判定を行う。例えば、問合せ７０２で、静的重みの回復が必要であるかどうかを判定する。これが静的重みの回復である場合には、ステップ７０４で、この処理が図９の論理に継続する。
【００４２】
図９を参照すると、問合せ８００で、まず、クライアント・ノードが障害を発生したかどうかを判定する。クライアント・ノードが障害を発生した場合には、ステップ８０２で、追加の回復が不要である。しかし、障害を発生したのがクライアント・ノードでなく、したがって、割振りマネージャが障害を発生した場合には、ステップ８０４で静的重みを回復する。一例では、静的重みは、クライアント・ノードから得ることまたは他の使用可能な情報から再構成することによって回復される。障害を発生しなかったノードは、障害を発生したノードの回復中であっても、通常道りに割振りを継続することができる。
【００４３】
図８に戻って、回復が静的重みでない場合には、動的重みの回復が仮定される。したがって、問合せ７０６で、無状態の動的重みの回復であるかどうかに関する判定を行う。動的重みの無状態回復である場合には、ステップ７０８で、図１０に関して説明するように回復が進行する。やはり、空きスペースに関する例を説明するが、この例を、他の動的重みに拡張することができる。
【００４４】
図１０を参照すると、まず、問合せ９００で、障害を発生したのがクライアント・ノードであるかどうかに関する判定を行う。クライアント・ノードが障害を発生した場合には、ステップ９０２で、割振りマネージャが、所有されていない区画の区画所有権情報を検査し、これらの区画を使用不可としてマークして、その区画に関連する回復が完了するまでそれの区画がクライアント・ノードに割り当てられないようにする（ノードが障害を発生した時に、そのノードによって所有される区画が、所有されなくなる）。
【００４５】
さらに、割振りマネージャは、複数のノードによって所有される区画の区画所有権情報を検査する。共用される区画の各々について、ステップ９０４で、割振りマネージャが、１つを除くすべての所有者に所有権取消メッセージを送る。これによって、回復にかかわるノードの数が最小になる。
【００４６】
ステップ９０６で、割振りマネージャは、毎デバイス空きスペース総計に０をセットし、ステップ９０８で、障害を発生していないノードに、そのノードによって所有される区画の毎デバイス空きスペース・カウントについて尋ねるブロードキャスト・メッセージを送る。
【００４７】
このメッセージを受け取った時に、各適当なクライアント・ノードは、割振りを停止し、そのデルタ・カウントを０にリセットする。さらに、そのノードは、所有する区画の各々の毎デバイス空きスペース・カウントを割振りマネージャに返す。その後、そのノードは、現在所有している区画のスペースの割振りを再開することができる。
【００４８】
ステップ９１０で、割振りマネージャが応答を受け取る時に、ステップ９１２で、毎デバイス空きスペース・カウントを、総計に加算する。さらに、ステップ９１４で、所有されていないすべての区画の空きスペースも回復する。これは、割振りマネージャによって順次行うか、クライアント・ノードの支援を得ることによって並列に行うことができる。一例では、無状態実施形態に、障害を発生したノードによって変更された区画だけに回復の範囲を定める状態情報が欠けているので、障害を発生したノードの回復に、毎デバイス空きスペース総計を再構成するための、不揮発性割振りマップの読み取りを含めることができる。未知の区画の各々が回復される際に、その区画が、割当の資格を得、使用可能としてマークされる。これによって、障害を発生したクライアントに関する動的重みの無状態回復が完了する。回復の完了時に、動的重みの値（例えば総空きスペース）が、再計算されており、この調整された重みを、上で説明したように１つまたは複数のファイル・システムに転送することができる。該重みの調整は、少なくとも１つの重みを調整するために、計算環境の少なくとも１つの他のファイル・システムによって提供される情報を使用すること、少なくとも１つの重みを調整するために、少なくとも１つの重みに関連する少なくとも１つのストレージ・デバイスを読み取ることから得られる情報を使用することの少なくとも１つを含む。
【００４９】
問合せ９００に戻って、障害を発生したノードが、割振りマネージャである場合には、ステップ９１８で、新しい割振りマネージャを選択する。一例では、新しい割振りマネージャは、最も低いｉｄ／アドレスを有する障害を発生していないノードにこの機能を割り当てることによって選択される。
【００５０】
新たに割り当てられた割振りマネージャは、ステップ９２０で、区画所有権情報を再構築する。一例では、これは、他のノードが所有する区画に関する情報をそのノードに要求することによって達成される。例えば、割振りマネージャは、生き残っているノードにブロードキャスト・メッセージを送って、それが所有する区画を識別するように求める。その後、回復は、上で述べたステップ９０２から進行する。
【００５１】
図８に戻って、問合せ７０６で、回復が全状態機能を用いる動的重みの回復である場合に、回復は、ステップ７１０で、図１１に関して説明するように進行する。この例では、全状態実施形態によって維持される状態によって、障害を発生したノードによって所有される区画について、障害を発生したノードからの回復が可能になる。また、障害を発生していないクライアント・ノードが、回復中に割振りを継続することができる。
【００５２】
図１１を参照すると、まず、問合せ１０００で、障害を発生したのがクライアント・ノードであるかどうかに関する判定を行う。障害を発生したのがクライアント・ノードである場合には、割振りマネージャは、障害を発生したノードによって所有されていた区画の区画所有権情報を検査する。ステップ１００２で、これらの区画を使用不能とマークして、回復が完了するまで再割り当てされないようにする。
【００５３】
次に、割振りマネージャは、障害を発生したノードによって所有され、１つまたは複数のノードと共用されている区画の区画所有権情報を検査する。そのような共用区画の各々について、ステップ１００４で、割振りマネージャが、障害を発生していない所有者のすべてに所有権取消メッセージを送る。このメッセージを受け取った時に、クライアントは、区画の所有権を解放し、区画のデルタ・カウントに０をセットする。
【００５４】
その後、ステップ１００６で、使用不能な区画の空きスペースを、割振りマネージャによって順次式にまたは１つまたは複数のクライアント・ノードの支援を得ることによって並列に、回復する。各区画が回復される時に、毎デバイス総計および毎デバイス毎区画情報を更新し、区画を、割当に使用可能としてマークする。これによって、障害を発生したクライアント・ノードからの回復が完了する。
【００５５】
問合せ１０００に戻って、障害を発生したのが割振りマネージャである場合には、回復は、次のように進行する。まず、ステップ１００８で、新しい割振りマネージャを選択する。一例では、これが、最も低いｉｄ／アドレスを有する障害を発生していないノードにこの機能を割り当てることによって達成される。
【００５６】
ステップ１０１０で、新たに割り当てられた割振りマネージャが、区画所有権情報を再構築する。一例では、この情報が、生き残っているノードにそれが所有する区画について尋ねるブロードキャスト・メッセージを送ることによって構築される。ステップ１０１２で、割振りマネージャが、所有されていない区画を使用不能としてマークして、回復が完了するまでそれらの区画が割振られないようにする。
【００５７】
その後、割振りマネージャが、１つまたは複数のノードによって所有される区画の区画所有権情報を検査する。共用区画の各々について、ステップ１０１４で、割振りマネージャが、１つを除くすべての所有者に所有権取消メッセージを送る。このメッセージを受け取った時に、クライアントは、区画の所有権を解放し、区画のデルタ・カウンタに０をセットする。
【００５８】
その後、ステップ１０１６で、割振りマネージャが、ノードにブロードキャスト・メッセージを送って、それが所有する区画の各々の毎デバイス空きスペース情報を送るように求める。このメッセージを受け取った時に、クライアントは、区画のデルタ・カウンタを０にリセットし、毎デバイス空きスペース情報を割振りマネージャに返す。
【００５９】
割振りマネージャは、この応答を受け取る時に、ステップ１０１８で、毎デバイス毎区画情報ならびに毎デバイス総計を更新する。
【００６０】
その後、ステップ１０２０で、使用不能区画の空きスペースを、割振りマネージャによって順次式にまたは１つまたは複数のクライアント・ノードの支援を得ることによって並列にのいずれかで、回復する。各区画が回復される時に、毎デバイス総計および毎デバイス毎区画情報を更新し、その区画を、割当に使用可能としてマークする。これによって、動的重みの全状態回復が完了する。
【００６１】
本発明の態様によれば、回復技法（静的重みおよび動的重みの両方）によって、各デバイスに関連する目標重み値が維持される。具体的に言うと、一例では、各デバイスが、それに関連する目標重みを有する。静的重み付けの場合には、目標重みが、静的重みと同等であり、したがって、区別を行う必要はない。しかし、動的重み付けでは、目標重み（一例では静的である）が、特定の時点で使用される重みと異なる場合がある。すなわち、使用される重みが、目標重みが満足されるように調整されている場合がある。このデバイスの目標重みの維持は、１つまたは複数のノード（またはファイル・システム）に障害が発生する場合であっても達成される。また、これは、１つまたは複数のストレージ・デバイスに障害が発生し、再始動または交換される場合であっても維持される。
【００６２】
上で詳細に説明したのは、複数のファイル・システムが、重み付き割振りを使用して１つまたは複数のストレージ・デバイスのスペースを割振ることができるようにする、並列重み付き割振り機能である。スペースは、各デバイスのスペースがそのデバイスに割り当てられた重みに比例して消費されるように、共用ストレージ・デバイス上で割振られる。これによって、デバイスにまたがって割振りを平衡化することができるようになり、各デバイスの負荷が、そのデバイスに割り当てられた重みに比例するようになる。並列環境の場合、各デバイスに割り当てられる重みは、その重みを使用してさまざまなファイル・システムに分配され、その結果、組み合わされた割振りが、重みに比例するようになる。さらに、ファイル・システムは、重みが変更された時または重みを割り当てる技法が変更された時に、最新の状態に保たれる。
【００６３】
一例では、異なるファイル・システムが、さまざまなストレージ・デバイスのスペースを割振るために、異なる割振り技法を使用することができる。一例では、これは、ストレージ・デバイスをグループにグループ化し、ある割振り技法を使用するファイル・システムが、デバイスの１グループのスペースを割振り、異なる技法を使用するファイル・システムが、デバイスの異なるグループのスペースを割振ることによって達成される。しかし、別の例では、グループ化が使用されない。
【００６４】
さらに、さまざまなファイル・システムによって得られる重みによって、異なるパラメータを表すことができる。例えば、あるファイル・システムが、空きスペースに基づく重みを得ることができ、別のファイル・システムが、容量に基づく重みを得ることができる。やはり、一例では、異なる重み付け技法の使用に対応するために、ストレージ・デバイスを異なるグループにグループ化することができる。しかし、別の例では、グループ化が使用されない。
【００６５】
もう１つの例では、割振り方針を、さまざまなレベルで設定することができる。具体的に言うと、１つまたは複数のストライプ順序を生成し、ストレージ・デバイスにまたがるスペースの割振りに使用することができる。例として、あるストライプ順序を、あるファイル・システムのすべての割振りに使用することができ、別の例では、ストレージ・デバイスをグループに区分し、グループごとにストライプ順序を生成し、使用することができ、もう１つの実施形態では、そのためにスペースが割振られることになるファイルの各々についてストライプ順序が生成される。したがって、最後の例では、あるストライプ順序を使用して、あるファイルのためのスペースを割振ることができ、別のストライプ順序（同一または異なる）を使用して、別のファイルのためのスペースを割振ることができる。上のシナリオのどれであっても、ストライプ順序は、上で説明したように生成される。
【００６６】
重み付き割振りは、割振り方針を決定するために重みに依存するが、割振り技法自体は、各デバイスに割り当てられる実際の重みと無関係である。重みは、必要または望みに応じて、各デバイスの負荷を調整するために、いつでも変更することができる。さらに、重みを割り当てる技法を、いつでも変更することができる。これによって、割振り方針を動的に設定し、調整して、システムの現在の要件に合わせることが可能になる。さらに、割振り方針の変更は、ファイル・システムの再始動なしで行うことができる。
【００６７】
デバイスに割り当てられる重みは、異なる値を表すか異なる動作パラメータを表す（例えば、容量、空きスペース、入出力スループット、ラウンドロビン、ハイブリッド）ために動的に変更することができる。さらに、重み付け割当技法が、割振り技法を知る必要はない。さらに、割振り技法は、ビデオ・ストリームおよび一般データ・ストリームを含むさまざまなデータ・ストリームに適応することができる。これは、割振り技法が、データ・ストリームの長さまたはこれらのデータ・ストリームのアクセス・パターンを先験的に知らず、知る必要がないからである。
【００６８】
本発明の割振り機能は、重みに従って、複数の異種ストレージ・デバイスにまたがるストライピングを行うこともできる。すなわち、ストレージ・デバイスは、異なるサイズ、異なる容量、または異なる速度を有するものとすることができる。すなわち、１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスが、前記１つまたは複数のストレージ・デバイスの少なくとも１つの他のストレージ・デバイスと異なる１つまたは複数の特性を有する。これらの異種デバイスを使用することができ、その使用効率を最大にすることができる。例えば、ストレージ使用量を最大にするか、スループットを最大にすることができる。
【００６９】
さらに、本発明の割振り機能は、並列ファイル環境での不平衡を自動的に補償することができる。そのような不平衡は、システムへのデバイスの追加、システムからのデバイスの取外し、または他の理由によって引き起こされる可能性がある。環境の再平衡化は、必ずしも既にストライプ化されたスペースを再ストライプ化せずに実行される。一例では、再平衡化が、新しい重み、異なる重み、または追加の重みを得ることと、割振り技法を使用してこれらの重みに基づいてスペースを割振ることによって達成される。
【００７０】
上で述べた計算環境は、１つの例としてのみ提供される。本発明の１つまたは複数の態様を、本発明の趣旨から逸脱せずに、多数のタイプの計算ユニット、コンピュータ、プロセッサ、ノード、システム、ワークステーション、または環境に組み込み、これらと共に使用することができる。
【００７１】
上で説明したさまざまな実施形態では、情報の受取、情報の提供、またはなんらかのタスクの実行を行うノードを参照した。しかし、ノードに複数のファイル・システムが含まれる場合に、そのノード上のこれらのファイル・システムのうちの１つまたは複数が、これらのアクションを実行することができる。
【００７２】
本発明は、例えばコンピュータ使用可能媒体を有する、製造品（例えば１つまたは複数のコンピュータ・プログラム製品）に含めることができる。媒体は、例えば本発明の諸機能を提供し、促進するためのコンピュータ可読プログラム・コード手段がその中に組み込まれる。製造品は、コンピュータ・システムの一部として含めるか、別々に販売することができる。
【００７３】
さらに、本発明の諸機能を実行するために計算機によって実行可能な少なくとも１つの命令のプログラムを有形に組み込む、計算機によって読み取り可能な少なくとも１つのプログラム記憶装置を提供することができる。
【００７４】
本明細書に記載の流れ図は、例にすぎない。本発明の趣旨から逸脱しない、本明細書に記載のこれらの図またはステップ（または動作）に対するさまざまな変形形態が存在し得る。例えば、ステップを、異なる順序で実行するか、ステップを、追加、削除、または変更することができる。これらの変形形態のすべてが、請求される発明の一部とみなされる。
【００７５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００７６】
（１）計算環境のストレージ・デバイス上でのスペースの割振りを管理する方法であって、
前記計算環境の１つまたは複数のストレージ・デバイスの１つまたは複数の重みを得るステップと、
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスについて得られた少なくとも１つの重みに比例して、前記少なくとも１つのストレージ・デバイス上のスペースを割振るステップとを含み、前記割振りが、前記計算環境の複数のファイル・システムによって実行される、
方法。
（２）前記複数のファイル・システムの各々が、前記計算環境の別々のノード上に配置される、上記（１）に記載の方法。
（３）前記複数のファイル・システムが、前記計算環境の１つまたは複数のノード上に配置される、上記（１）に記載の方法。
（４）前記割振るステップが、前記複数のファイル・システムの各ファイル・システムによって割振り技法を実行するステップを含み、前記複数のファイル・システムの少なくとも１つのファイル・システムが、前記複数のファイル・システムの少なくとも１つの他のファイル・システムと異なる割振り技法を実行する、上記（１）に記載の方法。
（５）前記少なくとも１つのストレージ・デバイスの各ストレージ・デバイスが、複数の区画に区分され、各ストレージ・デバイスの１つまたは複数の区画が、前記複数のファイル・システムの１つまたは複数のファイル・システムによって所有される、上記（１）に記載の方法。
（６）前記割振るステップが、複数のファイル・システムによって複数のストレージ・デバイス上のスペースを割振るステップを含み、前記複数のファイル・システムの各ファイル・システムが、前記複数のストレージ・デバイスの１つまたは複数のストレージ・デバイス上でスペースを割振る、上記（１）に記載の方法。
（７）前記得るステップが、前記１つまたは複数の重みを得るために少なくとも割振りマネージャを使用するステップを含む、上記（１）に記載の方法。
（８）前記使用するステップが、前記１つまたは複数の重みを得るために前記割振りマネージャおよび前記計算環境の少なくとも１つのノードを使用するステップを含む、上記（７）に記載の方法。
（９）前記１つまたは複数の重みが、前記計算環境の少なくとも１つのパラメータを表す、上記（１）に記載の方法。
（１０）前記割振るステップが、前記１つまたは複数の重みを得るステップと無関係である、上記（１）に記載の方法。
（１１）前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスが、前記１つまたは複数のストレージ・デバイスの少なくとも１つの他のストレージ・デバイスと異なる１つまたは複数の特性を有する、上記（１）に記載の方法。
（１２）前記少なくとも１つの重みを、前記複数のファイル・システムの少なくとも１つのファイル・システムに伝搬するステップをさらに含む、上記（１）に記載の方法。
（１３）前記１つまたは複数の重みの少なくとも１つの重みに関連する変化を追跡するステップと、
前記追跡された変化に基づいて前記少なくとも１つの重みを調整するステップと、
前記少なくとも１つの調整された重みを前記計算環境のファイル・システムに伝搬するステップとをさらに含み、前記少なくとも１つの調整された重みが、少なくとも１つのストレージ・デバイス上でのスペースの割振りに使用可能である、
上記（１）に記載の方法。
（１４）前記追跡するステップが、前記ファイル・システムによって実行される、上記（１３）に記載の方法。
（１５）前記追跡するステップが、複数のファイル・システムによって実行され、前記伝搬するステップが、前記少なくとも１つの調整された重みを、前記追跡を実行する前記複数のファイル・システムに伝搬するステップを含む、上記（１３）に記載の方法。
（１６）事前定義のイベント時に、前記追跡された変化について割振りマネージャに知らせるステップをさらに含み、前記割振りマネージャが、前記調整するステップおよび伝搬するステップを実行する、上記（１３）に記載の方法。
（１７）前記複数のファイル・システムに、前記少なくとも１つの重みの変化について知らせるステップをさらに含み、前記変化が、スペースのさらなる割振りに使用可能である、上記（１）に記載の方法。
（１８）前記計算環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを調整するステップをさらに含む、上記（１）に記載の方法。
（１９）前記調整するステップが、
前記少なくとも１つの重みを調整するために、前記計算環境の少なくとも１つの他のファイル・システムによって提供される情報を使用するステップと、
前記少なくとも１つの重みを調整するために、前記少なくとも１つの重みに関連する少なくとも１つのストレージ・デバイスを読み取ることから得られる情報を使用するステップと
の少なくとも１つを含む、上記（１８）に記載の方法。
（２０）前記計算環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを維持するステップをさらに含む、上記（１）に記載の方法。
（２１）前記複数のファイル・システムの１つのファイル・システムが、所与のファイルのために前記少なくとも１つのストレージ・デバイス上のスペースを割振り、その所与のファイルのための前記割振りが、前記少なくとも１つの重みを使用する割振り方針に基づく、上記（１）に記載の方法。
（２２）前記１つのファイル・システムが、別のファイルのために１つまたは複数のストレージ・デバイス上のスペースを割振り、その別のファイルのための前記割振りが、前記１つまたは複数のストレージ・デバイスに関連する１つまたは複数の重みを使用する別の割振り方針に基づく、上記（２１）に記載の方法。
（２３）計算環境のストレージ・デバイス上のスペースの割振りを管理する方法であって、
前記計算環境の複数のストレージ・デバイスの少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスのための重みを得るステップと、
前記少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスに割り当てられた前記重みに比例して、前記ストレージ・デバイス上のスペースを割振るステップとを含み、前記複数のファイル・システムの各ファイル・システムが、前記少なくともストレージ・デバイスのサブセットの１つまたは複数のストレージ・デバイス上のスペースを割振るように、前記割振りが、複数のファイル・システムによって実行される、
方法。
（２４）計算環境のストレージ・デバイス上でのスペースの割振りを管理するシステムであって、
前記計算環境の１つまたは複数のストレージ・デバイスの１つまたは複数の重みを得るための手段と、
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスについて得られた少なくとも１つの重みに比例して、前記少なくとも１つのストレージ・デバイス上のスペースを、前記計算環境の複数のファイル・システムによって割振るための手段と
を含むシステム。
（２５）前記複数のファイル・システムの各々が、前記計算環境の別々のノード上に配置される、上記（２４）に記載のシステム。
（２６）前記複数のファイル・システムが、前記計算環境の１つまたは複数のノード上に配置される、上記（２４）に記載のシステム。
（２７）前記割振るための手段が、前記複数のファイル・システムの各ファイル・システムによって割振り技法を実行するための手段を含み、前記複数のファイル・システムの少なくとも１つのファイル・システムが、前記複数のファイル・システムの少なくとも１つの他のファイル・システムと異なる割振り技法を実行する、上記（２４）に記載のシステム。
（２８）前記少なくとも１つのストレージ・デバイスの各ストレージ・デバイスが、複数の区画に区分され、各ストレージ・デバイスの１つまたは複数の区画が、前記複数のファイル・システムの１つまたは複数のファイル・システムによって所有される、上記（２４）に記載のシステム。
（２９）前記割振るための手段が、複数のファイル・システムによって複数のストレージ・デバイス上のスペースを割振るための手段を含み、前記複数のファイル・システムの各ファイル・システムが、前記複数のストレージ・デバイスの１つまたは複数のストレージ・デバイス上でスペースを割振る、上記（２４）に記載のシステム。
（３０）前記得るための手段が、前記１つまたは複数の重みを得るために少なくとも割振りマネージャを使用するための手段を含む、上記（２４）に記載のシステム。
（３１）前記使用するための手段が、前記１つまたは複数の重みを得るために前記割振りマネージャおよび前記計算環境の少なくとも１つのノードを使用するための手段を含む、上記（３０）に記載のシステム。
（３２）前記１つまたは複数の重みが、前記計算環境の少なくとも１つのパラメータを表す、上記（２４）に記載のシステム。
（３３）前記割振るための手段が、前記１つまたは複数の重みを得るための手段と無関係である、上記（２４）に記載のシステム。
（３４）前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスが、前記１つまたは複数のストレージ・デバイスの少なくとも１つの他のストレージ・デバイスと異なる１つまたは複数の特性を有する、上記（２４）に記載のシステム。
（３５）前記少なくとも１つの重みを、前記複数のファイル・システムの少なくとも１つのファイル・システムに伝搬するための手段をさらに含む、上記（２４）に記載のシステム。
（３６）前記１つまたは複数の重みの少なくとも１つの重みに関連する変化を追跡するための手段と、
前記追跡された変化に基づいて前記少なくとも１つの重みを調整するための手段と、
前記少なくとも１つの調整された重みを前記計算環境のファイル・システムに伝搬するための手段とをさらに含み、前記少なくとも１つの調整された重みが、少なくとも１つのストレージ・デバイス上でのスペースの割振りに使用可能である、
上記（２４）に記載のシステム。
（３７）前記追跡するための手段が、前記ファイル・システムによって追跡するための手段を含む、上記（３６）に記載のシステム。
（３８）前記追跡するための手段が、複数のファイル・システムによって追跡するための手段を含み、前記伝搬するための手段が、前記少なくとも１つの調整された重みを、前記追跡に使用する複数のファイル・システムに伝搬するための手段を含む、上記（３６）に記載のシステム。
（３９）事前定義のイベント時に、前記追跡された変化について割振りマネージャに知らせるための手段をさらに含み、前記割振りマネージャが、前記調整および伝搬を実行する、上記（３６）に記載のシステム。
（４０）前記複数のファイル・システムに、前記少なくとも１つの重みの変化について知らせるための手段をさらに含み、前記変化が、スペースのさらなる割振りに使用可能である、上記（２４）に記載のシステム。
（４１）前記計算環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを調整するための手段をさらに含む、上記（２４）に記載のシステム。
（４２）前記調整するための手段が、
前記少なくとも１つの重みを調整するために、前記計算環境の少なくとも１つの他のファイル・システムによって提供される情報を使用するための手段と、
前記少なくとも１つの重みを調整するために、前記少なくとも１つの重みに関連する少なくとも１つのストレージ・デバイスを読み取ることから得られる情報を使用するための手段と
の少なくとも１つを含む、上記（４１）に記載のシステム。
（４３）前記計算環境のファイル・システムの障害に応答して、前記１つまたは複数の重みの少なくとも１つの重みを維持するための手段をさらに含む、上記（２４）に記載のシステム。
（４４）前記複数のファイル・システムの１つのファイル・システムが、所与のファイルのために前記少なくとも１つのストレージ・デバイス上のスペースを割振り、その所与のファイルのための前記割振りが、前記少なくとも１つの重みを使用する割振り方針に基づく、上記（２４）に記載のシステム。
（４５）前記１つのファイル・システムが、別のファイルのために１つまたは複数のストレージ・デバイス上のスペースを割振り、その別のファイルのための前記割振りが、前記１つまたは複数のストレージ・デバイスに関連する１つまたは複数の重みを使用する別の割振り方針に基づく、上記（４４）に記載のシステム。
（４６）計算環境のストレージ・デバイス上のスペースの割振りを管理するシステムであって、
前記計算環境の複数のストレージ・デバイスの少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスのための重みを得るための手段と、
前記少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスに割り当てられた前記重みに比例して、前記ストレージ・デバイス上のスペースを割振るように適合された複数のファイル・システムとを含み、前記複数のファイル・システムの各ファイル・システムが、前記少なくともストレージ・デバイスのサブセットの１つまたは複数のストレージ・デバイス上のスペースを割振る、
システム。
（４７）計算環境のストレージ・デバイス上でのスペースの割振りを管理するシステムであって、
前記計算環境の１つまたは複数のストレージ・デバイスの１つまたは複数の重みを得るように適合された少なくとも１つのノードと、
前記１つまたは複数のストレージ・デバイスの少なくとも１つのストレージ・デバイスについて得られた少なくとも１つの重みに比例して、前記少なくとも１つのストレージ・デバイス上のスペースを割振るように適合された複数のノードと
を含む、システム。
（４８）前記複数のノードが、前記少なくとも１つのノードを含む、上記（４７）に記載のシステム。
（４９）上記（１）ないし（２２）のいずれかに記載の方法を実行するためのプログラムを記憶した、プログラム記憶媒体。
（５０）計算環境のストレージ・デバイス上のスペースの割振りを管理する方法を実行するために、実行可能な少なくとも１つの命令のプログラムを有形に組み込む、計算機によって読み取り可能な少なくとも１つのプログラム記憶媒体であって、
前記計算環境の複数のストレージ・デバイスの少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスのための重みを得るステップと、
前記少なくともストレージ・デバイスのサブセットの各ストレージ・デバイスに割り当てられた前記重みに比例して、前記ストレージ・デバイス上のスペースを割振るステップとを含み、前記複数のファイル・システムの各ファイル・システムが、前記少なくともストレージ・デバイスのサブセットの１つまたは複数のストレージ・デバイス上のスペースを割振るように、前記割振りを複数のファイル・システムによって実行するためのプログラムを記憶した、
プログラム記憶媒体。
【図面の簡単な説明】
【図１】本発明の１つまたは複数の態様が組み込まれ、使用される計算環境の一例を示す。
【図２】本発明の態様による、図１のノードをさらに詳細に示す。
【図３】本発明の態様による、各区画が０個以上のノードによって所有される、複数の区画に区分されるストレージ・デバイスの例を示す。
【図４】本発明の態様による、各ストレージ・デバイスに関連するさまざまな統計の例を示す。
【図５】本発明の態様による、並列重み付き割振り技法に関連する論理の実施形態を示す。
【図６】本発明の態様による、図５の初期化アクションに関連する論理の実施形態を示す。
【図７】本発明の態様による、図５の追跡および分配アクションに関連する論理の実施形態を示す。
【図８】本発明の態様による、図５のノード障害および回復アクションに関連する論理の実施形態を示す。
【図９】本発明の態様による、静的重みの回復に関連する論理の実施形態を示す。
【図１０】本発明の態様による、動的重みの無状態回復に関連する論理の実施形態を示す。
【図１１】本発明の態様による、動的重みの全状態回復に関連する論理の実施形態を示す。
【符号の説明】
１００  計算環境
１０２  ノード
１０４  ストレージ・デバイス
１０６  相互接続
２００  オペレーティング・システム
２０２  ファイル・システム
３００  ストレージ・デバイス
３０２ａ  区画
３０２ｂ  区画
３０２ｃ  区画
３０２ｄ  区画
３１２  毎デバイス総計
３１４  毎区画情報
３１６  所有者
３１８  毎デバイス毎区画カウンタ
４００  初期化のステップ
４０２  重みの追跡および分配のステップ
４０４  ノード障害および回復のステップ
【図１】
0003859994.tif 000002
【図２】
0003859994.tif 000003
【図３】
0003859994.tif 000004
【図４】
0003859994.tif 000005
【図５】
0003859994.tif 000006
【図６】
0003859994.tif 000007
【図７】
0003859994.tif 000008
【図８】
0003859994.tif 000009
【図９】
0003859994.tif 000010
【図１０】
0003859994.tif 000011
【図１１】
0003859994.tif 000012