(57)【要約】  分散ストレージシステムは、複数の種類のリソースを含む複数のリソースを含む複数のストレージノードを含む。前記複数のストレージノード間の複数のストレージノードのそれぞれは、集約タスク間で前記ストレージノードに対して割り当てられた集約タスクを実行するように構成される。前記集約タスクのそれぞれは、前記タスクに対応する複数リソース間の１つのリソースに関係する統計を集約するタスクであり、前記ストレージノードに対して前記タスクは割り当てられる。【選択図】  図１A
2019528521.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のクライアントに接続された分散ストレージシステムであって、
複数のリソースを含む複数のストレージノードを含み、
前記複数のストレージノード間の複数のストレージノードのそれぞれは、集約タスク間で前記ストレージノードに対して割り当てられた集約タスクを実行するように構成され、
前記集約タスクのそれぞれは、前記タスクに対応する複数リソース間の１つのリソースに関係する統計を集約するタスクであり、前記ストレージノードに対して前記タスクは割り当てられる。
【請求項２】
請求項１に記載の分散ストレージシステム。
前記複数のストレージノードのうちの少なくとも１つは、前記複数のストレージノードに対して前記集約タスクを割り当てるように構成される。
【請求項３】
請求項２に記載の分散ストレージシステム。
前記複数のストレージノードの前記少なくとも１つは、前記リソース、前記クライアントおよび前記複数のストレージノードの間の接続の関係を示す情報に基づいて前記集約タスクを割り当てるように構成される。
【請求項４】
請求項３に記載の分散ストレージシステム。
リソースが前記複数のストレージノードのうちの１つ以上において追加された場合、前記複数のストレージノードのうちの前記少なくとも１つは、前記追加されたリソースまたはその属性が前記追加されたリソースの属性に類似しているリソースに関して現在の構成に基づいて、前記追加されたリソースに関係した統計を集約するための集約タスクを割り当てるように構成される。
【請求項５】
請求項３に記載の分散ストレージシステム。
リソースに関連する統計を集約する集約タスクは、クライアントからアクセスされることによって前記クライアントが前記リソースにアクセスできるストレージノードおよび／またはその前記リソースの少なくとも一部を含むストレージノードに割り当てられる。
【請求項６】
請求項２に記載の分散ストレージシステム。
前記複数のストレージノードのうちの前記少なくとも１つは、前記リソースの集約ソースノードの数を示す情報に基づいて、リソース毎に前記集約タスクを割り当てるように構成される。
【請求項７】
請求項６に記載の分散ストレージシステム。
前記複数のストレージノードのそれぞれは、複数の集約ソースを含み、
前記複数の集約ソースのそれぞれは、リソースの統計を格納するように構成され、
前記複数のストレージノードの１つ以上のストレージノードのそれぞれに対して、統計のリソースは前記ストレージノードにおける前記複数の集約ソース間で異なり、
前記複数の集約ソースのそれぞれに対して、リソースの集約ソースノードは、リソースの統計を格納するように構成される前記集約ソースを含むストレージノードであり、
前記リソースに対して、前記複数の集約ソースのそれぞれに対する集約ソースノードの数に基づいて、前記複数のストレージノードのうちの前記少なくとも１つは前記複数の集約ソースのうちの１つを選択するように構成され、
前記複数のストレージノードの前記少なくとも１つは、前記選択された集約ソースに対する前記集約ソースノードの数を示す情報に基づいて前記集約タスクを割り当てるように構成される。
【請求項８】
請求項７に記載の分散ストレージシステム。
前記複数のストレージノードのそれぞれは、前記ストレージノードのフロントエンドを介して前記クライアントのうちの少なくとも１つからのリソースに対するアクセスを受けるように構成され、
前記複数のストレージノードのそれぞれは、前記ストレージノードのバックエンドを介して前記複数のストレージノードの１つ以上の他のストレージノードにおけるリソースに対してアクセスするように構成され、
前記複数のストレージノードのそれぞれにおける前記複数の集約ソースは、前記フロントエンドに対する第１のソースおよび前記バックエンドに対する第２のソースを含む。
【請求項９】
請求項３に記載の分散ストレージシステム。
管理者から特定のリソースの統計の値を読み出す要求である統計読出し要求を受信するストレージノードを示す情報に基づいて、前記複数のストレージノードのうちの前記少なくとも１つは、前記特定のリソースに関連した統計を集約する前記集約タスクを前記統計要求を受信した前記ストレージノードに割り当てるように構成される。
【請求項１０】
請求項２に記載の分散ストレージシステム。
前記複数のストレージノードの動作ステータスを示す情報に基づいて、前記複数のストレージノードのうちの前記少なくとも１つは、前記複数のストレージノードのうちの少なくとも一部における集約タスクの配置を動的に変更するように構成される。
【請求項１１】
請求項１０に記載の分散ストレージシステム。
前記複数のストレージノードの負荷の不均衡が増加して第１の閾値に到達したことを前記情報が示した場合、前記複数のストレージノードのうちの前記少なくとも１つは集約タスクの前記配置を変更するように構成される。
【請求項１２】
請求項１０に記載の分散ストレージシステム。
前記複数のストレージノードの負荷の不均衡が減少して第２の閾値に到達したことを前記情報が示した場合、前記複数のストレージノードのうちの前記少なくとも１つは集約タスクの前記配置の変更を中止するように構成される。
【請求項１３】
請求項１０に記載の分散ストレージシステム。
前記複数のストレージノードのうち前記一部は、前記複数のストレージノードの他の部分の優先度よりも高い優先度を有するストレージノードである。
【請求項１４】
複数リソースを含む複数のストレージノードを含む分散ストレージシステムにおいて統計を集約する方法であって、
前記複数のストレージノード間の複数のストレージノードのそれぞれによって、集約タスク間で前記ストレージノードに対して割り当てられた集約タスクを実行することを含み、
前記集約タスクのそれぞれは、前記タスクに対応する複数リソース間の１つのリソースに関係する統計を集約するタスクであり、前記ストレージノードに対して前記タスクは割り当てられている方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにおける統計の管理に関する。
【背景技術】
【０００２】
分散ストレージシステムは、高い処理能力を実現するとともに、小規模な構成で始めながら迅速にスケールアウトできるため、一般的に人気の高いデータ格納ソリューションである。分散ストレージシステムは、１つ以上の（通常複数の）ストレージノードを含むクラスタであり、１つ以上のデータストア（例えばＬＵ（論理ユニット）やファイルシステム）を提供する。
【０００３】
分散ストレージシステムにおいて、いくつかのクライアントシステムが複数のストレージノードによって提供されるデータストアに対して同時にアクセスできる。そのため、クライアントシステムが、例えばデータストア利用を複数のストレージノードを跨ったグローバルなデータストアとして認識するために、そのデータストアおよびクライアントシステムに関係する各ストレージノードで計測されたノード毎の統計（例えばデータストアに関係するＩＯＰＳまたはクライアントシステムに関係するＩＯＰＳ）を集約する必要がある。データストアの統計は、企業のストレージにおけるトラブルシューティング、プランニング、および課金などのユースケースにとって重要である。
【０００４】
従来の分散ストレージシステムにおいて、データストア（すなわち管理コンピュータ）へのアクセスを提供しないストレージノードのうちの１つのみ（すなわちヘッドノード）または専用のコンピュータが全ストレージノードからの統計を集約する。しかしながら、数百万のデータストアを提供でき数百から数千のストレージノードから構成される大規模分散ストレージシステムにおいては、そのようなヘッドノードまたは専用のコンピュータがボトルネックになりやすいという問題がある。
【０００５】
ストレージノードからそのようなヘッドノードまたは専用のノードに対する通信量および集約対象のデータ量を削減する方法として、例えば特許文献１は集約値の結合推定を導入した方法を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許７７８３６４７号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１によって開示される関連技術は、リソースの使用量を削減するが、ヘッドノードまたは専用ノードがボトルネックとなる危険性は依然として残る。さらに、推定または近似を導入することは、結合が行われるとしても、正確な使用統計を必要とする課金などのユースケースには適切ではない。
【課題を解決するための手段】
【０００８】
分散ストレージシステムは、複数の種類のリソースを含む複数のリソースを含む複数のストレージノードを含む。前記複数のストレージノード間の複数のストレージノードのそれぞれは、集約タスク間で前記ストレージノードに対して割り当てられた集約タスクを実行するように構成される。前記集約タスクのそれぞれは、前記タスクに対応する複数リソース間の１つのリソースに関係する統計を集約するタスクであり、前記ストレージノードに対して前記タスクは割り当てられる。
【発明の効果】
【０００９】
本発明によれば、統計を集約するために必要とされるリソース（例えばＣＰＵ、容量およびネットワーク）はノードにまたがって一様に分散される。したがって、ストレージシステムがストレージノードのうちの１つがボトルネックとなる問題を避け、クライアントシステムが複数のストレージノードにまたがってデータストアにアクセスする際の処理能力を高く維持する。
【図面の簡単な説明】
【００１０】
【図１Ａ】図１Ａは、第１の実施形態による分散ストレージシステムの例示の構成を示すブロック図である。
【図１Ｂ】図１Ｂは、第２の実施形態による分散ストレージシステムの例示の構成を示すブロック図である。
【図２】図２は、第１の実施形態による集約の例示の構成を示すブロック図である。
【図３Ａ】図３Ａは、第１の実施形態によるストレージ構成テーブルの構成例を示す。
【図３Ｂ】図３Ｂは、第２の実施形態によるストレージ構成テーブルの構成例を示す。
【図４】図４は、第１の実施形態によるノード集約負荷テーブルの構成例を示す。
【図５Ａ】図５Ａは、第１の実施形態によるクラスタ統計テーブルの構成例を示す。
【図５Ｂ】図５Ｂは、第２の実施形態によるクラスタ統計テーブルの構成例を示す。
【図６Ａ】図６Ａは、第１の実施形態による集約ソーステーブルの構成例を示す。
【図６Ｂ】図６Ｂは、第２の実施形態による集約ソーステーブルの構成例を示す。
【図７Ａ】図７Ａは、ローカル統計の計測およびクラスタ統計への集約のために実行される、第１の実施形態による処理を説明するためのフローチャートを示す。
【図７Ｂ】図７Ｂは、ローカル統計の計測およびクラスタ統計への集約のために実行される、第２の実施形態による処理を説明するためのフローチャートを示す。
【図８Ａ】図８Ａは、初めてストレージノードに対して集約タスクを割り当てるために実行される、第１の実施形態による処理を説明するためのフローチャートを示す。
【図８Ｂ】図８Ｂは、初めてストレージノードに対して集約タスクを割り当てるために実行される、第２の実施形態による処理を説明するためのフローチャートを示す。
【図９Ａ】図９Ａは、集約負荷の算出および更新のために実行される第１の実施形態による処理を説明するフローチャートを示す。
【図９Ｂ】図９Ｂは、集約負荷の算出および更新のために実行される第２の実施形態による処理を説明するフローチャートを示す。
【発明を実施するための形態】
【００１１】
本発明の以下の２つの実施形態の少なくとも一方による分散ストレージシステムは、集約タスクを分散ストレージシステムのストレージノードに割り当てるように構成される。「集約タスク」は、タスクに対応するＬＵ（リソースの一例）を提供するストレージノードからＬＵに関係する統計を集約するタスクを指す。「ＬＵ（論理ユニット）」はデータストアの一例である。分散ストレージノードは、さらに、分散ストレージシステムにおける各ノードの集約負荷を算出および更新するように構成される。本発明は、計測統計がスイッチ、アプリケーション、サーバなどの他の種類のリソースに関係する他の種類の分散ストレージシステムに適用可能である。
【００１２】
分散ストレージシステム内で計測された統計を集約する場合に関して実施形態を説明する。実施形態において、「統計」はＬＵに関し、ストレージ統計および他の種類の統計を含み得る。「ストレージ統計」はＬＵ単位の統計であり、例えば、入出力頻度（ＩＯＰＳ（１秒当たりの入出力））、スループットおよび待ち時間（レイテンシ）を指す。「他の種類の統計」とは、ホスト統計（例えばＬＵ用ホストシステムのＩＯＰＳなど）などのＬＵ単位およびホスト単位の統計を指す。
【００１３】
実施形態のそれぞれは、ローカル統計およびクラスタ統計の２つのグループの統計を考慮している。それらのグループは説明のために作成され、名づけられており、１つのグループに統合されてもよく、より多くのグループに分割されてもよく、異なる名前で呼ばれてもよい。
【００１４】
ローカル統計は、ノードにおいて計測された統計を指す。ローカル統計は、タイプ（例えばＩＯＰＳ）、関連リソースｉｄ（例えばＬＵ１２３）、および値（例えば２６５，０００ＩＯＰＳ）という３つの属性を含む。
【００１５】
クラスタ統計は、１つ以上のローカル統計の値を集約（例えば和算）した結果である値を有する統計を指す。クラスタ統計は、ｉｄ（例えばＣＳ１５）、タイプ（例えばＩＯＰＳ），関連リソースｉｄ（例えばＬＵ１２３）および値（例えば５８６，０００ＩＯＰＳ）という４つの属性を含む。
【００１６】
実施形態の説明において、読者が本発明を理解できる程度に統計の属性を単純化および削減した。
【００１７】
実施形態のそれぞれは、特定の統計タイプおよび関連リソースｉｄに対して複数のストレージノードで計測されたローカル統計を集約することによって算出された値を有する統計という１種類の集約に関して説明する。本発明は、他の種類の集約に対しても適用可能である。例えば、所与の統計タイプおよびリソースタイプに関して単一のストレージノードで計測されたローカル統計を集約することによって算出された値を有する統計でもよい。
【００１８】
上述したように、２つの実施形態を説明する。実施形態間の主な違いは、複数のタイプのソースからローカル統計を計測する分散ストレージシステムの能力である。例えば、ＬＵ１のＩＯＰＳは、２つのタイプのソース：ＦＥ−Ｉ／Ｆ（フロントエンドＩ／Ｆ）およびデータ層のうちの１つから計測可能である。第１の実施形態は、分散ストレージシステムがその能力を有さないまたはその能力を使用しない場合を説明する。第２の実施形態は、分散ストレージシステムがその能力を有してそれを使用する場合を説明する。
【００１９】
特定の例として、５つのストレージノードＮ１，Ｎ２，Ｎ３，Ｎ４およびＮ５を含む分散ストレージシステムがあり、その分散ストレージシステムは論理ユニットＬＵ１を有する。所与の時間において、ＬＵ１のデータはストレージノードＮ１およびＮ２のデータ層に格納され、１つ以上のクライアントシステムはストレージノードＮ３，Ｎ４およびＮ５のＦＥ−Ｉ／Ｆに要求を送信することによってＬＵ１のデータにアクセスする。この特定の例において、ＬＵ１のタイプＩＯＰＳのローカル統計は、（１）データがアクセスされた際にストレージノードＮ１およびＮ２のデータ層において、さらに（２）データが要求された際にストレージノードＮ３およびＮ４のＦＥ−Ｉ／Ｆにおいての２つのタイプのソースにおいて計測可能である。この状態において、ソースタイプのうちの一方を選択することによって、ローカル統計はクラスタ統計に集約される。ソースタイプを選択することは、集約に必要とされるリソースを減らす上で有効な場合があり、例えばこの特定の例において、ソースタイプであるデータ層からの集約は、３つのローカル統計ではなく２つのローカル統計を必要とする。
【００２０】
さらに、それぞれの実施形態は、（１）ストレージノードへの集約タスクの割り当てが統計毎に１度のみ行われる場合と、（２）必要に応じて後で割り当てが行われる場合の２つの場合について説明する。２つの場合の違いを、添付図面を説明しながら以下に明確に説明する。
【００２１】
添付図面を参照して、２つの実施形態を以下に詳細に説明する。添付図面において、機能的に同様の構成要素を同様の番号で示す場合がある。添付図面は本発明の原理と一致した特定の実施形態と実施例とを示す。ただし、これらの図面は本発明の理解のためのものであり、本発明を限定的に解釈するために使用されない。
【００２２】
これらの実施形態は当業者が本発明を実行する上で十分詳細に説明する。ただし、本発明の技術的な思考の範囲および精神から逸脱することなく、他の実装および形態も可能であり、構成および構造体の変更、様々な要素の置換も可能であると理解する必要がある。したがって、以下の説明は本明細書に限定されるべきものであると解釈されるものではない。
【００２３】
さらに、後述するように、本発明の実施形態は、汎用コンピュータ上で動作するソフトウェアとして実装可能であり、もしくは専用のハードウェアまたはソフトウェアおよびハードウェアの組み合わせとして実装可能である。
【００２４】
以下の説明において、本発明の情報の種類は、「テーブル」形式に従って説明される。ただし、それらの種類の情報は必ずしもテーブルによるデータ構造で表わされる必要はなく、リスト、データベース、キューなどのデータ構造体またはその他の構造体で表わされてもよい。したがって、情報がデータ構造体に依存しないことを示すために、「テーブル」、「リスト」、「ＤＢ」、「キュー」などを単に「情報」と呼ぶ場合がある。
【００２５】
そのような種類の情報の内容を説明する場合、「識別情報」、「識別子」、「名称」、「名前」および「ＩＤ］などの表現を使用可能である。これらの表現は置き換え可能である。
【００２６】
本発明の実施形態における処理の種類は、「プログラム」を主体（動作実体）として以下で説明する。しかしながら、メモリおよび通信ポート（通信制御装置）を使用して処理群を実行するように処理装置によってプログラムが実行されるため、処理装置を主体として使用して処理が説明される場合もある。プログラムを主体として使用して開示される処理は、コンピュータまたは管理サーバなどの情報処理装置によって実行される処理でもよい。プログラムの一部または全部は、専用のハードウェアによって実現可能であり、またはモジュールとして形成可能である。様々なプログラムは、プログラム分散サーバまたは格納媒体によってコンピュータにインストールされてもよい。
【実施例１】
【００２７】
＜分散ストレージシステム構成＞
【００２８】
図１Ａは、本実施形態によるクラスタ統計を供給する分散ストレージシステムのシステム構成の一例を示す。図１Ａ（および図１Ｂ）は、ローカル統計（ｓｔａｔ）を「ＬＳ」、クラスタ統計（ｓｔａｔ）を「ＣＳ」と表わす。
【００２９】
分散ストレージシステム（以下「ストレージシステム」）１０３０は、クライアントシステム（以下「クライアント」）１０１０から論理ユニット１０４５へのアクセスを提供するように構成される。
【００３０】
本実施形態において、少なくとも１つのストレージノード１０４０を含み少なくとも１つのクライアントシステム１０１０に接続されたストレージシステム１０３０を例示的に説明する。クライアント１０１０およびストレージノード１０４０はネットワーク１０２０を介して互いに接続されており、例えば、データ読出およびデータ書込要求など、データストアにおけるデータへのアクセスへの要求を送受信する。任意として、例えばストレージノード１０４０間でデータを共有するために、各ストレージノード１０４０は、ネットワーク１０５０を介して互いに接続される。ネットワーク１０２０および１０５０は単一のネットワークでもよい。
【００３１】
クライアント１０１０は、電子文書、電子データまたは映像コンテンツデータなどのデジタルデータを動作および管理するコンピュータなどの情報システムである。クライアント１０１０が同時にいくつかのストレージノード１０４０からのデータにアクセス可能であり、いくつかのクライアント１０１０はストレージシステム１０３０に格納されたデータを共有できるため、高いアクセス性および処理能力を実現するために、クライアント１０１０はストレージシステム１０３０に格納されるデジタルデータにアクセスする。
【００３２】
ストレージシステム１０３０は、通常、複数のストレージノード１０４０を含む。ストレージシステム１０３０は、クライアント１０１０に対して１つ以上の論理ユニット１０４５を提供する。図面では、例として３つの論理ユニットＬＵ１、ＬＵ２およびＬＵ３である３つのデータストアを示す。クライアント１０１０は、１つ以上のストレージノード１０４０を介して論理ユニット１０４５にアクセス可能である。ストレージシステム１０３０は、データ保護技術を含み得る分散方式で、１つ以上のストレージノード１０４０に各論理ユニット１０４５のデータを格納する。
【００３３】
ストレージノード１０４０は、クライアント１０１０からのデータアクセス要求を受信および供給する少なくとも１つのＦＥ−Ｉ／Ｆ１０４１と、論理ユニット１０４５などのリソースに関連したローカル統計を計測するモニタ１０４２と、ローカル統計をクラスタ統計に集約できるアグリゲータ１０４３と、１つ以上の論理ユニット１０４５のデータの全部または一部を格納するデータ層１０４４と、ストレージノードにおける構成要素が他のストレージノード１０４０におけるコンポーネントと通信できるようにするＢＥ−Ｉ／Ｆ（バックエンドＩ／Ｆ）１０４６とを含む。
【００３４】
モニタ１０４２は、そのストレージノード１０４０に関係する、またはその範囲内のローカル統計を計測する。その結果、異なるストレージノード１０４０におけるモニタ１０４２は、同一の論理ユニット１０４５に関係するが異なる値を有するローカル統計を有することができる。例えば、クライアントＣ１がストレージノードＮ１を使用してストアにアクセスし、他のクライアントがストレージノードＮ２を使用してストアにアクセスした場合、ストレージノードＮ１のモニタ１０４２はクライアントＣ１のアクセスに関係する統計のみを計測する。すなわち、ストレージノード１０４０（例えばＮ１）のモニタ１０４２は、ストレージノード１０４０（例えばＮ１）の特定のリソースに関係する統計（ローカル統計）を計測するように構成され、その他のストレージノード１０４０（例えばＮ２）の特定のリソースに関係する統計を計測しないようには構成されている。
【００３５】
アグリゲータ１０４３は、ＢＥ−Ｉ／Ｆ１０４６およびネットワーク１０５０を介して１つ以上のストレージノード１０４０におけるモニタ１０４２からローカル統計を受信することによって、ローカル統計をクラスタ統計に集約するように構成される。具体的には、ストレージノード１０４０のアグリゲータ１０４３は、ストレージノード１０４０に割り当てられた集約タスクを実行することができる。集約タスクのそれぞれは、そのタスクに対応する論理ユニット１０４５に関係する統計を集約するタスクである。
【００３６】
データ層１０４４は、１つ以上の論理ユニット１０４５の全部または一部を格納し、ＦＥ−Ｉ／Ｆ１０４１およびネットワーク１０２０を介してクライアントに対して、ストレージシステム１０３０における全論理ユニット１０４５に対するデータ読出しおよびデータ書込みなどのアクセスを提供する。データ層１０４４が他のストレージノード１０４０におけるデータ層１０４４に格納されるデータを読み出す要求を受信すると、データ層１０４４はＢＥ−Ｉ／Ｆ１０４６およびネットワーク１０５０を介してデータにアクセスする。同様に、データ層１０４４が他のストレージノード１０４０におけるデータ層１０４４に書き込まれるべきデータを書き込む要求を受信すると、データ層１０４４はＢＥ−Ｉ／Ｆ１０４６およびネットワーク１０５０を介してデータを送信する。その結果、クライアント１０１０は、いずれのストレージノード１０４０からも透過的に、ストレージシステム１０３０における論理ユニット１０４５からデータを読出しおよび書込みすることができる。データ層１０４４は、論理ユニットのベースとなり得るＨＤＤ（ハードディスクドライブ）またはＳＳＤ（固体ドライブ）などの物理的な不揮発性格納装置を１つ以上含むことができる。
【００３７】
各ストレージノード１０４０は、ＦＥ−Ｉ／Ｆ１０４１およびＢＥ−Ｉ／Ｆ１０４６などの１つ以上のインタフェース装置（Ｉ／Ｆ）であるインタフェース部と、１つ以上のメモリであるメモリ部と、インタフェース部およびメモリ部に接続された１つ以上のプロセッサ（例えばプロセッサコア）であるプロセッサ部とを含む。メモリ部は、アプリケーションやＯＳ（オペレーティングシステム）などのプログラムを格納する。メモリ部は、統計（例えばローカル統計およびクラスタ統計）の少なくとも一部を格納できる。プロセッサ部は、そのプログラムを実行するように構成される。プロセッサ部は、プログラムのうちの少なくとも１つを実行することによってモニタ１０４２、アグリゲータ１０４３およびデータ層１０４４の少なくとも一部を実現できる。
【００３８】
＜アグリゲータ構成＞
【００３９】
図２はアグリゲータ１０４３のシステム構成の一例を示す。
【００４０】
アグリゲータ１０４３は、統計集約プログラム２００５、統計割り当てプログラム２００６および集約更新プログラム２００７の３つのプログラムと、ストレージ構成テーブル２００１、ノード集約負荷テーブル２００２、クラスタ統計テーブル２００３、および集約ソーステーブル２００４の４つのテーブルを含む。プログラム２００５〜２００７およびテーブル２００１〜２００４の少なくとも１つは、ストレージノード１０４０のメモリ部において保持可能である。プログラム２００５〜２００７は、ストレージノード１０４０におけるプロセッサ部によって実行可能である。
【００４１】
＜ストレージ構成テーブル＞
【００４２】
図３Ａは、アグリゲータ１０４３に設けられたストレージ構成テーブル２００１の構成例を示す。
【００４３】
ストレージ構成テーブル２００１は、現在の構成を含む、ストレージシステム１０３０における論理ユニット１０４５などのリソースの属性を管理するテーブルである。これはグローバルなテーブルであり、すなわちその内容はストレージシステム１０３０における全ストレージノード１０４０において同一である。テーブルにおける値は、例えばストレージ構成の変更がある度にストレージシステム１０３０によって更新される。
【００４４】
ストレージ構成テーブル２００１は、ストレージシステム１０３０における論理ユニット１０４５などのリソースを識別するための情報であるリソースｉｄ３００１と、テナント名またはユーザ名などのリソースのオーナーを識別するための情報であるリソースオーナー３００２と、リソースのタイプを記述しタイプデータストアおよびサブタイプファイルストアなどのサブタイプを含むことができる情報であるリソースタイプ３００３と、現時点でリソースに関連しているストレージノードを識別するための情報である関連ノード３００４とを有する。テナントまたはユーザなどのリソースオーナーは、クライアント１０１０を用いたエンティティでもよい。すなわち、ストレージ構成テーブル２００１は、クライアント（例えばリソースオーナー）、ストレージノード（例えば関連ノード）およびリソース（例えばリソースｉｄ）の間の接続の関係を示す情報の例である。
【００４５】
「関連ノード」とは、リソースｉｄ３００１によって識別されたリソースのローカル統計が計測可能であるノードを指す。これは可能性のみを指す。例えば、タイプデータストアのリソースの場合、関連ノードは、データストアからクライアントへの経路を確立したノードのみである。関連ノード３００４は、リソースｉｄ３００１によって識別されたリソースに対してローカル統計が計測可能であるノードがまだない場合は「−」となる。
【００４６】
図３Ａに示すストレージ構成テーブル２００１から、ｉｄ「Ｒ１」を有するリソースが「Ｄｅｐｔ１」によって所有されており、「ブロックストア（ＬＵ）」のタイプであり、現時点でｉｄ「Ｎ１」および「Ｎ２」を有するノードに関連していることがわかる。
【００４７】
＜ノード集約負荷テーブル＞
【００４８】
図４は、アグリゲータ１０４３において提供されたノード集約負荷テーブル２００２の構成例を示す。
【００４９】
ノード集約負荷テーブル２００２は、現時点または最後に算出された時点でのストレージノード１０４０それぞれにおいて集約によって発生した負荷を管理するテーブルである。これはグローバルなテーブルであり、すなわちその内容はストレージシステム１０３０における全ストレージノード１０４０において同一である。このテーブルは、ストレージシステム１０３０においてストレージノード１０４０毎に１行を有する。
【００５０】
ノード集約負荷テーブル２００２は、ストレージノード１０４０を識別するための情報であるノードｉｄ４００１と、ｉｄ４００１によって識別されたストレージノード１０４０においてアグリゲータ１０４３によって最後に取り出されて集約されたローカル統計の総量である集約負荷４００２と、ｉｄ４００１によって識別されたストレージノード１０４０に割り当てられたクラスタ統計の量であるクラスタ統計負荷４００３と、ｉｄ４００１によって識別されたストレージノード１０４０に割り当てられた少なくとも１つのクラスタ統計を有するリソースの量であるリソース負荷４００４とを有する。
【００５１】
集約負荷４００２は、ｉｄ４００１によって識別されたストレージノード１０４０に対して割り当てられたクラスタ統計をすべて集約するために使用されたローカル統計の総量を指す。集約負荷４００２は、テーブル値が更新された時に行われた最後の集約に対する値である。ただし、例えば最後の５つの集約の傾向または平均を示す。
【００５２】
図４のノード集約負荷テーブル２００２から、ｉｄ「Ｎ１」を有するストレージノード１０４０が１５１０個のローカル統計、６０個のクラスタ統計および２０個のリソースを有することがわかる。
【００５３】
＜クラスタ統計テーブル＞
【００５４】
図５Ａは、アグリゲータ１０４３に設けられたクラスタ統計テーブル２００３の構成例を示す。
【００５５】
クラスタ統計テーブル２００３は、集約に関連したストレージシステム１０３０、特に各クラスタ統計の集約に割り当てられるノードにおけるクラスタ統計の属性を管理するテーブルである。これはグローバルなテーブルであり、すなわちその内容はストレージシステム１０３０における全ストレージノード１０４０において同一である。このテーブルは、ストレージシステム１０３０においてクラスタ統計毎に１行を有する。
【００５６】
クラスタ統計テーブル２００３は、ストレージシステム１０３０におけるクラスタ統計を識別するための情報であるクラスタ統計ｉｄ５００１と、ｉｄ５００１によって識別されたクラスタ統計のタイプを識別するための情報である統計タイプ５００２と、ｉｄ５００１によって識別された統計が論理ユニット１０４５などのストレージシステム１０３０におけるどのリソースを指すかを識別するための情報である関連リソースｉｄ５００３と、ｉｄ５００１によって識別された統計を集約するために割り当てられたストレージノード１０４０を識別するための情報である割り当てノード５００４と、１つ以上のストレージノード１０４０を識別するための情報である高寄与ノード５００５と、１つ以上のストレージノード１０４０を識別するための情報である高消費ノード５００６とを有する。
【００５７】
高寄与ノード５００５は、最後の集約において、ｉｄ５００１によって識別されたクラスタ統計を集約するために使用されたローカル統計のための高値を供給したノードを指す。これは、「ＩＯＰＳ」および「スループット」などの使用数統計に有効である。この列は、いくつかのタイプの統計には適用不可または有効でない場合がある。この値は、常に更新されるわけではないため、最新の集約を表わすとは限らない。この値は、最後の例えば５つの集約の値の傾向または平均を用いて算出可能である。高値が何になるかを決定する閾値は、例えば平均値よりも高いか、または最高値でもよい。
【００５８】
高消費ノード５００６の値は、ｉｄ５００１によって識別されたクラスタ統計に対して、例えば管理Ｉ／Ｆを介して管理者によって高い頻度で要求されたノードを指す。これは、ストレージノード１０４０のうちのいずれかに対して管理者がクラスタ統計の値を要求できる場合のストレージシステム１０３０において適用可能であり、ストレージノード１０４０は、そのクラスタ統計を集約するために現時点で割り当てられたストレージノード１０４０におけるアグリゲータ１０４３から値を取り出す。この値は、常に更新されるわけではないため、最新の集約を表わすとは限らない。この値は、例えば，最後の５分の傾向または平均を用いることによって算出してもよい。高値が何になるかを決定する閾値が、例えば平均値よりも高いか、または最高値でもよい。
【００５９】
図５Ａのクラスタ統計テーブル２００２から、ｉｄ「Ｒ１」を有するリソースのタイプ「ＩＯＰＳ」のｉｄ「ＣＳ１」を有するクラスタ統計は、ｉｄ「Ｎ１」を有するストレージノード１０４０による集約のために割り当てられ、ノード「Ｎ１」は「ＣＳ１］への高寄与を有するノードであり、ノード「Ｎ１」は「ＣＳ１」の高消費を有する唯一のノードであることがわかる。
【００６０】
＜集約ソーステーブル＞
【００６１】
図６Ａはアグリゲータ１０４３に設けられた集約ソーステーブル２００４の構成例を示す。
【００６２】
集約ソーステーブル２００４は、ストレージシステム１０３０における各クラスタ統計を集約するためにローカル統計を供給した現時点のノードを管理するテーブルである。これはグローバルなテーブルであり、すなわちその内容はストレージシステム１０３０における全ストレージノード１０４０において同一である。このテーブルはストレージシステム１０３０においてクラスタ統計毎に１行を有する。
【００６３】
この集約ソーステーブル２００４は、ストレージシステム１０３０におけるクラスタ統計を識別するための情報であるクラスタ統計ｉｄ６００１と、１つ以上のストレージノード１０４０を識別するための情報である最近のソースノード６００２と、ストレージノード１０４０の量を表わす値である最近のソースカウント６００３とを有する。
【００６４】
最近のソースノード６００２は、最後の集約において、ｉｄ６００１によって識別されたクラスタ統計を集約するために使用されたローカル統計を供給したノードを指す。この値は、常に更新されるわけではないため、最新の集約を表わすとは限らない。最近のソースノード６００２は、例えば、最後の５つの集約における全ノードまたは共通ノードを含むことによって算出されてもよい。
【００６５】
最近のソースカウント６００３は、最後の集約において、６００１で識別されたクラスタ統計を集約するために使用されたローカル統計を供給したノードの量を指す。最近のソースカウント６００３は、常に更新されるわけではないため、最新の集約を表わすとは限らない。最近のソースカウント６００３は、平均としても算出されてもよく、例えば最後の５つの集約における全ノードまたは共通ノードを含むことによって算出されてもよい。なお、最近のソースカウント６００３は、例えばいくつかの最後の集約の平均または最も頻度の高いカウントが使用された場合に６００２のカウントになるとは限らない。
【００６６】
図６Ａの集約ソーステーブル２００４から、ｉｄ「ＣＳ１」を有するクラスタ統計は、ｉｄ「Ｎ１」、「Ｎ２」、「Ｎ３」および「Ｎ４」を有するストレージノード１０４０のそれぞれからのローカル統計を使用して最後に集約されたものであり、ソースとして４つのストレージノード１０４０を使用して最後に集約されたものであることがわかる。
【００６７】
＜統計集約処理＞
【００６８】
図７Ａは、ローカル統計を計測してクラスタ統計に集約する処理を説明するフローチャートである。
【００６９】
この処理は、例えば５秒毎など固定の時間間隔で定期的に各ストレージノード１０４０において実行される。この時間間隔はストレージシステム１０３０における全ストレージノード１０４０に対して同一であり、処理は全ストレージノード１０４０で同時に開始する。この時間間隔は、管理者によって変更されてもよく、またはイベントなどに基づいて自動的に変更されてもよい。
【００７０】
工程７００１において、統計集約プログラム２００５は、ストレージノード１０４０におけるモニタ１０４２に対して、ストレージノード１０４０において現時点で利用可能なローカル統計のすべてを計測するように要求する。例えば、タイプＩＯＰＳおよび関連リソースＲ１のローカル統計は、リソースＲ１がストレージノード１０４０から最近アクセスされた場合にストレージノード１０４０において利用可能である。
【００７１】
工程７００２において、統計集約プログラム２００５は、工程７００１で計測したばかりの、モニタ１０４２において利用可能なローカル統計のそれぞれに対して反復する。全ローカル統計が反復されると、処理は工程７００６に進む。以後の工程７００３〜７００５が各ローカル統計に対して実行される。
【００７２】
工程７００３において、統計集約プログラム２００５はクラスタ統計テーブル２００３の列５００２および５００３を参照し、反復されているローカル統計は集約の必要があるか否かを決定する。ローカル統計タイプおよび関連リソースがクラスタ統計テーブル２００３の行におけるエントリ５００２および５００３と一致する場合、統計集約プログラム２００５はローカル統計が集約の必要があると結論を出し、処理は工程７００４へ続く。
【００７３】
工程７００４において、統計集約プログラム２００５はクラスタ統計テーブル２００３のエントリ５００４を参照して、工程７００３で一致した行のクラスタ統計が異なるストレージノード１０４０において集約されるように設定されるかを決定する。異なるストレージノード１０４０のｉｄがエントリ５００４と一致する場合、統計集約プログラム２００５は、クラスタ統計が異なるストレージノード１０４０において集約されるように設定されると決定し、処理は工程７００５に進む。
【００７４】
工程７００５において、統計集約プログラム２００５は反復されているローカル統計を異なるストレージノード１０４０におけるアグリゲータ１０４３に対して工程７００４のエントリ５００４によって発見されるｉｄとともに送信する。すなわち、統計集約プログラム２００５は、異なるストレージノード１０４０のアグリゲータ１０４３に対してローカル統計をプッシュする。ソースノード１０４０（ストレージノード１０４０）から割り当てられたノード１０４０（異なるストレージノード１０４０）へローカル統計をプッシュすることは、ソースノード１０４０から割り当てられたノード１０４０へローカル統計をプル（取得）するよりも効率がよい。これは、対象ローカル統計がソースノード１０４０にない可能性があるためである。すなわち、割り当てられたノード１０４０が対象ローカル統計を取得するためにソースノード１０４０にアクセスして、それがソースノード１０４０にない場合、そのアクセスは不要なアクセスとなる。
【００７５】
工程７００６において、統計集約プログラム２００５はクラスタ統計テーブル２００３の列５００４を参照して、テーブル２００３において、列５００４のストレージノード１０４０のｉｄを有する行を有するクラスタ統計を反復して処理する。クラスタ統計すべてが反復して処理されると、処理は終了する。以後の工程７００７および７００８は１クラスタ統計毎に実行される。
【００７６】
工程７００７において、統計集約プログラム２００５は、他のストレージノード１０４０から送信された全ローカル統計を受信し、工程７００４においてストレージノード１０４０に割り当てられる見なされたローカル統計も取得する。
【００７７】
工程７００８において、統計集約プログラム２００５は、工程７００７で受信したローカル統計を使用することによってクラスタ統計テーブル２００３における各クラスタ統計を集約する。クラスタ統計は、受信された同じタイプおよび関連リソースを有する各ローカル統計の値を合計することによって集約される。各統計は、例えば平均値、最大値などの異なる集約方法を有してもよい。
【００７８】
＜統計割り当て処理＞
【００７９】
図８Ａは、初めて集約タスクをストレージノード１０４０に割り当てる処理を説明するためのフローチャートである。
【００８０】
この処理はストレージシステム１０３０においてストレージノード１０４０のうちの１つのみで実行される。その１つはランダムに選択され、論理ユニット１０４５などの新しいリソースがストレージシステム１０３０に作成された時に実行される。
【００８１】
任意として、（例えばクライアント１０１０のＩＰアドレスまたはＷＷＮ（ＷｏｒｌｄＷｉｄｅＮａｍｅを用いて）論理ユニット１０４５とクライアント１０１０との間でパスが最初に確立されたとき、または論理ユニット１０４５がクライアント１０１０によって最初にアクセスされたときなどのイベントが発生した時ではなく、例えばリソースが論理ユニット１０４５の場合に処理が実行可能である。
【００８２】
任意として、この処理を実行するストレージノード１０４０を、例えば、総当たり（ラウンドロビン）によって、またはストレージノード１０４０が初めてリソースへのパスを確立したとき、またはストレージノード１０４０がそのリソースに対してローカル統計を初めて計測したときなどに選択することも可能である。
【００８３】
論理ユニット１０４５などの新しいリソースがストレージシステム１０３０に作成された時、さらにこの処理が実行される前、その新しいリソース情報がストレージ構成テーブル２００１の新しい行に挿入される。なお、この処理を実行するタイミングに応じて、この処理の実行時に、新しいリソースはまだ関連ノード３００４を有していない場合がある。
【００８４】
工程８００１において、統計割り当てプログラム２００６は、例えばリソースタイプ３００３を統計タイプ５００２に関連付けたストレージシステム１０３０における知識を使用することによって、新しいリソースに対して算出可能なクラスタ統計の各タイプを反復して処理する。例えば、ブロックストア（ＬＵ）というタイプのリソースに対して、算出可能なクラスタ統計タイプはＩＯＰＳおよびスループットの場合がある。リソースに対するクラスタ統計の知識は、例えば、製品設計者によって決定されて固定されてもよく、管理インタフェースを介して管理者によって選択されてもよい。クラスタ統計の全タイプが反復的に処理されると、処理が終了する。以降の工程８００２〜８００５は、新しいリソースの各クラスタ統計に対して実行される。
【００８５】
工程８００２において、統計割り当てプログラム２００６は、クラスタ統計テーブル２００３に新しい行を挿入し、クラスタ統計の情報が８００１から反復的に処理される。列５００４、５００５および５００６は、その値が未知であるため空のままである。また、統計割り当てプログラム２００６は集約ソーステーブル２００４に新しい行を挿入してクラスタ統計ｉｄ６００１とし、残りの列は未知のための空のままにしておく。
【００８６】
工程８００３において、統計割り当てプログラム２００６はストレージ構成テーブル２００１を参照し、新しいリソースに対応するエントリ３００４によって関連ストレージノード１０４０を識別する。エントリ３００４が値を持たない場合、すべてのストレージノード１０４０はその新しいリソースに関連していると考えられる。任意として、この工程は、関連ノード３００４によって識別された関連ストレージノード１０４０を新しいリソースと類似したリソースと考えることもできる。例えば同じリソースオーナー３００２であったり、および／または同じリソースタイプ３００３を有していたりすると考えられる。
【００８７】
工程８００４において、統計割り当てプログラム２００６はノード集約負荷テーブル２００２を参照して、前の工程８００３で関連ストレージノードとして選択されたストレージノード４００１の行を選択する。その後、選択された行から、統計割り当てプログラム２００６は、列４００２、４００３および４００４を参照することによって最小負荷を有するストレージノードを選択する。例えば、最小負荷を有するストレージノードは、最小集約負荷４００２を有するストレージノードの場合がある。任意として、列４００３および４００４の値も考慮に入れる場合がある。任意として、工程８００３で選択された関連ノードがすべて、残りのノードと比較して非常に高い集約負荷４００２を有する場合、この工程は、例えばストレージシステム１０３０において最小集約負荷４００２を有するストレージノードなど、工程８００３で選択されなかったストレージノードを選択してもよい。最後に、本工程はクラスタ統計を集約するために割り当てられたノードとして、列５００４に、クラスタ統計テーブル２００３で選択されたストレージノードを挿入する。任意として、この統計割り当てプログラム２００６は各クラスタ統計に対して異なるノードを割り当てる柔軟性を可能にするが、例えば割り当てられるノードの知識を維持および検索する処理を容易にするために、統計割り当てプログラム２００６は同じリソースに関連したクラスタ統計すべてを同じストレージノードに強制的に割り当ててもよい。
【００８８】
工程８００５において、統計割り当てプログラム２００６は集約更新プログラム２００７をトリガすることによってノード集約負荷テーブル２００２の値が更新される。この工程は任意のもので、実行しなくてもよく、集約更新プログラム２００７の最後の実行後に統計割り当てプログラム２００６の実行回数が閾値に到達した後のみ実行されてもよい。
【００８９】
＜集約更新処理＞
【００９０】
図９Ａは、各ノードの集約負荷を算出および更新し、任意として各クラスタ統計を集約するために割り当てられるノードを再度選択する処理を説明するためのフローチャートである。
【００９１】
この処理は、ストレージシステム１０３０のストレージノード１０４０の、ランダムに例えば５分などの固定時間間隔で定期的に選択された１つのみで実行される。
【００９２】
任意として、この処理を実行するストレージノード１０４０は、総当たり（ラウンドロビン）などで選択されてもよく、または管理インタフェースを介して管理者によって設定されてもよい。
【００９３】
任意として、この処理は並列化して実行されてもよく、ストレージシステム１０３０の全ストレージノード１０４０において実行されてもよい。ただし、各ストレージノードはそれ自体の集約負荷を更新し、必要に応じて、ストレージノードが割り当てられたクラスタ統計に再度割り当てる。
【００９４】
任意として、この処理は、ユーザのアクション、管理者の動作または要求によってトリガされた場合、またはストレージノード１０４０のいずれかがリソースの低消費期間にある場合に実行可能である。
【００９５】
工程９００１において、集約更新プログラム２００７は、実行された最後の集約に応じて列６００２および６００３の値を算出および更新する。任意として、その値は最後の、例えば５つの集約の平均として算出されてもよい。１つのクラスタ統計の集約に関連するソースノード６００２およびソースカウント６００３は、クラスタ統計テーブル２００３の列５００４において反映された際にクラスタ統計を集約するように割り当てられるストレージノード１０４０のアグリゲータ１０４３によって既知である。
【００９６】
工程９００２において、前の工程９００１によって算出および更新された値に応じて、さらにクラスタ統計テーブル２００３の列５００４で反映されたストレージノードへのクラスタ統計の現在の割り当てに応じて、集約更新プログラム２００７は列４００２、４００３および４００４の値を算出および更新する。
【００９７】
工程９００２の算出は完全に実行されない場合があり、集約ソーステーブル２００４の前の工程９００１によって実行された変更およびクラスタ統計テーブル２００３において統計割り当てプログラム２００６の工程８００３によって実行された変更を認識するものでもよい。
【００９８】
工程９００３において、集約更新プログラム２００７は列５００５および５００６の値を算出および更新する。この工程は任意のものであり、列５００５および５００６の値がノード割り当ての際に考慮されるときのみ実行される。
【００９９】
列５００５の値は、最後の集約のためのクラスタ統計のソースである各ストレージノード１０４０の寄与を取り出すことによって算出される。任意として、最後の、例えば５つの集約の平均として値が算出されてもよい。値が高いと考えるための閾値を決定するのは、例えば値が平均よりも高い場合、または固定の閾値よりも高い場合である。クラスタ統計に対するストレージノードの寄与値は、クラスタ統計テーブル２００３の列５００４に反映される際にクラスタ統計を集約するために割り当てられるストレージノード１０４０のアグリゲータ１０４３によって既知である。
【０１００】
列５００６の値は、例えば最後の１０分間などのクラスタ統計に対する各ストレージノード１０４０の消費値を用いることによって算出される。値が高いと考えるための閾値を決定するのは、例えば値が平均よりも高い場合、または固定の閾値よりも高い場合である。ストレージノードがクラスタ統計を消費する必要がある場合に、その統計を集約するために割り当てられたストレージノード１０４０に対してそのクラスタ統計を要求するため、クラスタ統計に対するストレージノードの消費値は、クラスタ統計テーブル２００３の列５００４に反映される際にクラスタ統計を集約するために割り当てられたストレージノード１０４０のアグリゲータ１０４３によって既知である。
【０１０１】
以降の工程９００４、９００５、９００６、９００７、９００８および９００９は任意のものでもよく、最初のノード割り当てが行われた後にノード割り当てが変更可能になった場合のみ実行されてもよい。工程が実行されない場合、処理は終了する。
【０１０２】
工程９００４において、集約更新プログラム２００７は、各クラスタ統計を集約するためにストレージノードを再度割り当てる必要があるかを決定する。この工程は、クラスタ統計テーブル２００３の列５００４の値における不均衡が増加して閾値を上回った場合に再度割り当てが必要であると決定する。本工程において再度割り当てが必要であると決定した場合、処理は工程９００５に進む。そうでない場合、処理は終了する。以降の工程９００５、９００６、９００７、９００８および９００９は、１つのクラスタ統計を選択し、そのストレージノードを再度割り当てる。その後、工程９００４において割り当ての必要性が再度算出される。任意として、この決定は再度割り当てられる各クラスタ統計に対して実行されなくてもよく、例えば１０クラスタ統計が割り当てられる毎に再度実行されてもよく、不均衡が減少して閾値を下回るまで行われてもよい。
【０１０３】
任意として、再度ストレージノードの割り当てが必要かを決定することは、他の方法で実行することも可能である。例えば、クラスタ統計テーブル２００３の列５００５および５００６の値における不均衡にも基づいてもよい。例えば、集約ソーステーブル２００４の列６００２に割り当てられた際に、ローカル統計に対する現在のソースでないストレージノードに対していくつのクラスタ統計が割り当てられているかに基づいてもよい。例えば、再度割り当てる必要があることを常に固定してもよい。例えば、再度割り当てが必要だった最後の時間からの経過時間に基づいてもよい。例えば、再度割り当てが必要だった最後の時間から追加された新しいリソースまたは新しいクラスタ統計の数に基づいてもよい。例えば、管理インタフェースを介して管理者によって設定されてもよい。
【０１０４】
以降の工程９００５、９００６および９００７は、ストレージシステム１０３０の全クラスタ統計から１つのクラスタ統計を選択するという目的がある。これらの３つの工程は任意でもよい。実行されない場合、クラスタ統計はランダム、総当たり（ラウンドロビン）、または反復的に選択されて、工程９００４が常にｙｅｓの場合に全クラスタ統計が再度割り当てられてもよい。
【０１０５】
工程９００５において、集約更新プログラム２００７は割り当てられたノードがその最近のソースノードの１つでないクラスタ統計を選択する。クラスタ統計は、クラスタ統計テーブル２００３の列５００４の値が集約ソーステーブル２００４の列６００２の値に含まれない場合に選択される。この工程は、クラスタ統計を集約するストレージノードもそのソースである場合に１つのノード間通信が回避されるため、集約を必要とするリソースを減らす上で有効である。
【０１０６】
工程９００６において、集約更新プログラム２００７は、前の工程９００５で選択されたクラスタ統計に割り当てられたストレージノード１０４０から、最も高い負荷を有するストレージノード１０４０を選択する。この工程は、クラスタ統計テーブル２００３の列５００４を参照することによって、クラスタ統計に割り当てられるストレージノード１０４０を取り出す。この工程は、クラスタ統計テーブル２００２の列４００２における最高値を有するストレージノードを選択することによって最も高い負荷を有するノードを見つける。この工程は、負荷の均衡をできる限り早く取り戻し、再割り当てを減らす上で有効である。
【０１０７】
任意として、この工程は、最も高い負荷を有するストレージノードを選択する上で列４００３および４００４も考慮してよい。
【０１０８】
任意として、この工程は、クラスタ統計の集約の他に、その他の処理によって発生したストレージノードのリソース消費を考慮してもよい。
【０１０９】
工程９００７において、集約更新プログラム２００７は、前の工程９００６で選択されたストレージノード１０４０に割り当てられたクラスタ統計すべてから１つのクラスタ統計を選択する。この工程は、クラスタ統計テーブル２００３の列５００４を参照することによって、ストレージノードに割り当てられた全クラスタ統計を見つける。この工程は、集約ソーステーブル２００４の列６００３の値を参照することによって、割り当てられたクラスタ統計から最も高い最近のソースカウントを有するクラスタ統計を選択する。この工程は、再割り当ての数をより少なくして可能な限り早く負荷均衡を回復する上で有効である。
【０１１０】
工程９００８において、集約更新プログラム２００７は前の工程９００７で選択されたクラスタ統計に対してストレージノードを割り当てる。この工程は、クラスタ統計ｉｄ５００１を有する行のクラスタ統計テーブル２００３の列５００４にストレージノードのｉｄを設定することによって、ストレージノードをクラスタ統計に割り当てる。この工程は、クラスタ統計を集約するストレージノードとして、クラスタ統計の最近のソースであり最低の負荷を有するストレージノードを選択する。最初に、この工程は、集約ソーステーブル２００４の列６００２を参照することによって、クラスタ統計の最近のソースであるストレージノードを選択する。その後、この工程は、クラスタ統計テーブル２００２の列４００２において最低値を有するストレージノードを選択する。
【０１１１】
工程９００９において、集約更新プログラム２００７は、前の工程９００８で実行された再割り当てに応じて、列４００２、４００３および４００４の値を算出および更新する。この工程は、以前に割り当てられたストレージノードとすでに割り当てられているストレージノードの２つのストレージノードを更新することのみを必要とする。
【実施例２】
【０１１２】
第１の実施形態において、モニタ１０４２は統計および論理ユニット１０４５のそれぞれのタイプに対して１つのローカル統計のみを設ける。しかしながら、統計は複数のタイプのソースから、すなわち複数の構成要素から計測可能である。第２の実施形態は、ストレージシステム１０３０におけるストレージノード１０４０が複数のタイプのソースからのローカル統計を計測および供給できる場合について説明する。
【０１１３】
第２の実施形態は、図１Ａ、図３Ａ、図５Ａ、図６Ａ、図７Ａ、図８Ａおよび図９Ａの第１の実施形態とは異なる。第２の実施形態において、図１Ｂ，図３Ｂ，図５Ｂ，図６Ｂ，図７Ｂ，図８Ｂおよび図９Ｂを使用してその違いを説明する。
【０１１４】
＜代替のストレージシステム構成＞
【０１１５】
図１Ｂは本実施形態による集約統計を提供するストレージシステムの代替のシステム構成の例を示す。
【０１１６】
第１の実施形態を説明する上で用いられた図１Ｂと図１Ａとの主な違いは、異なるタイプのソース１０４７からローカル統計１０４７を提供できるモニタ１０４２’である。その違いによれば、ストレージシステム１０３０’、ストレージノード１０４０’、アグリゲータ１０４３’、ストレージ構成テーブル２００１’（図３Ｂ）、クラスタ統計テーブル２００３’（図５Ｂ）、集約ソーステーブル２００４’（図６Ｂ）、統計集約プログラム２００５’（図７Ｂ）、統計割り当てプログラム２００６’（図８Ｂ）および集約更新プログラム２００７’（図９Ｂ）が第１の実施形態とは異なる。
【０１１７】
本実施形態において、モニタ１０４２’は複数のソースからのローカル統計を計測することができる。モニタ１０４２’は、利用可能なソースのすべて、そのいくつか、またはそのうちの１つからのリソースに関連したローカル統計を計測するように構成されうる。その結果、ストレージノード１０４０’におけるモニタ１０４２’は、同一だが異なる値を有する論理ユニット１０４５に関連したいくつかのローカル統計を有することができる。図面では、ＦＥ−Ｉ／Ｆ１０４１とデータ層コンポーネントの２つのタイプのソースを例として示す。例えば、クライアントＣ１がストレージノードＮ１のＦＥ−Ｉ／Ｆ１０４１を介してストレージノードＮ２のデータ層１０４４に格納されたデータにアクセスする場合、ストレージノードＮ１のモニタ１０４２’はＦＥ−Ｉ／Ｆ１０４１からアクセス統計を計測でき、ストレージノードＮ２のモニタ１０４２’はデータ層１０４４からアクセス統計を計測できる。
【０１１８】
＜代替ストレージ構成テーブル＞
【０１１９】
図３Ｂは、アグリゲータ１０４３’に設けられたストレージ構成テーブル２００１’の代替構成例を示す。
【０１２０】
図３Ｂのテーブルと第１の実施形態を説明するのに用いられた図３Ａのテーブルとの唯一の違いは関連ノード３００４である。
【０１２１】
本実施形態において、ストレージ構成テーブル２００１’はいくつかの関連ノード列３００５および３００６を有する。ストレージシステム１０３０’において統計を計測するために使用できる異なる種類のソースのそれぞれに対して関連ノード列がある。
【０１２２】
特定の種類のソースのための関連ノード列、例えば３００５は、ｉｄ３００１によって識別されたリソースのローカル統計が特定の種類のソースを用いて計測できる場合のノードを指す。これは可能性のみを指す。本図面は、ソース１およびソース２の２種類のソースを例として示す。例えば、ストレージシステム１０３０’は、ＦＥ−Ｉ／Ｆ１０４１およびデータ層１０４４の２種類のソースからのデータストアに関連した統計を計測できる。その例において、データストア（ＬＵ）に対する関連ノードと第１の種類のソースは、データストアからクライアントへのパスを確立したノードであり、データストアに対する関連ノードと第２の種類のソースとは、そのデータストアに対するデータを保持するノードである。
【０１２３】
３００１で示すリソースのローカル統計がすでに計測可能である場合にノードがないときは、特定の種類のソースに対する関連ノード列は値「−」を有する。
【０１２４】
特定の種類のソースが３００１で示すリソースに対して適切でないとき、すなわちそのリソースが特定の種類のソースから計測可能な統計を有していない場合、その特定の種類のソースに対する関連ノード列も値「−」を有する。
【０１２５】
図３Ｂのストレージ構成テーブル２００１’から、ｉｄ「Ｒ１」を有するリソースは、「Ｄｅｐｔ１」により所有されており、「ブロックストア（ＬＵ）」の種類であり、ソース１に対してｉｄ「Ｎ１」および「Ｎ４」を有するノードに現在関連しており、ソース２に対してはｉｄ「Ｎ３」および「Ｎ４」を有するノードに現在関連していることがわかる。
【０１２６】
＜代替クラスタ統計テーブル＞
【０１２７】
図５Ｂは、アグリゲータ１０４３’に設けられたクラスタ統計テーブル２００３’の代替構成例を示す。
【０１２８】
図５Ｂのテーブルと第１の実施形態を説明するために用いられた図５Ａのテーブルとの唯一の違いは、最後の列の選択された集約ソース５００７の追加である。
【０１２９】
本実施形態において、クラスタ統計テーブル２００３’は、ｉｄ５００１で示すクラスタ統計を集約するために使用されるローカル統計であるローカル統計を計測するためにソースの種類を識別するための情報である選択集約ソース５００７列をさらに有する。１種類のソースだけが識別可能である。ソースの例は、ＦＥ−Ｉ／Ｆ１０４１およびデータ層１０４４である。
【０１３０】
図５Ｂのクラスタ統計テーブル２００３’から、ｉｄ「Ｒ１」を有するリソースのタイプ「ＩＯＰＳ」のｉｄ「ＣＳ１」を有するクラスタ統計はｉｄ「Ｎ１」を有するストレージノード１０４０’によって集約されるように割り当てられ、ノード「Ｎ１」は「ＣＳ１」に対して高寄与を有するノードであり、ノード「Ｎ１」は「ＣＳ１」の高消費を有する唯一のノードであり、ソース「ソース１」は「ＣＳ１」を集約するために選択されたソースの種類であることがわかる。
【０１３１】
＜代替集約ソーステーブル＞
【０１３２】
図６Ｂは、アグリゲータ１０４３’に設けられた集約ソーステーブル２００４’の代替構成例を示す。
【０１３３】
図６Ｂのテーブルと図６Ａのテーブルとの唯一の違いは、リソースソースノード６００２および最近のソースカウント６００３の列である。
【０１３４】
本実施形態において、集約ソーステーブル２００４’は、ストレージシステム１０３０’で統計を計測するために使用可能な互いに異なる種類のソースに対してリソースソースノードと最近のソースカウントの列を有する。
【０１３５】
特定の種類のソースに対する最近のソースノードの列、例えば６００４は、最後の集約において、ｉｄ６００１によって識別されたクラスタ統計に関連した、すなわち同じ統計タイプおよび同じ関連リソースｉｄを有する特定の種類のソースにおけるローカル統計を計測したノードを指す。なお、これは、ローカル統計が集約に対して使用されていない場合があるという点で６００２とは異なる。この値は、常に更新されているわけではないため、最新の集約を常に表わすわけではない。この値は、最後の、例えば５つの集約における全ノードまたは共通ノードを含むことによって算出可能である。
【０１３６】
特定の種類のソースに対する最近のソースカウントの列、例えば６００５は、最後の集約において、ｉｄ６００１によって識別されたクラスタ統計に関連した、すなわち同じ統計タイプおよび同じ関連リソースｉｄを有する特定の種類のソースにおけるローカル統計を計測したノードの量を指す。なお、これは、ローカル統計が集約に対して使用されていない場合があるという点で６００３とは異なる。この値は、常に更新されているわけではないため、最新の集約を常に表わすわけではない。この値は、最後の、例えば５つの集約における平均としても、または全ノードまたは共通ノードを含むことによって算出可能である。なお、この値は常にリソースソースノード列のカウントであるわけではなく、例えばいくつかの最後の集約の平均または最も共通したカウントが用いられる場合がある。
【０１３７】
図６Ｂの集約ソーステーブル２００４’から、ソース１に対して、「ＣＳ１」に関連するローカル統計を計測したノードのｉｄは「Ｎ１」、「Ｎ２」、「Ｎ３」および「Ｎ４」であり、ノードカウントは「４」であり、ソース２に対しては、ｉｄ「Ｎ１」を有する唯一のノードが「ＣＳ１」に関連したローカル統計を計測しており、ノードカウントは「１」であることがわかる。
【０１３８】
＜代替統計集約処理＞
【０１３９】
図７Ｂは、ローカル統計を計測してクラスタ統計に集約する処理を説明する代替フローチャートである。
【０１４０】
図７Ｂの処理と図７Ａの処理との唯一の違いは工程７００９の追加である。さらに、工程７００１の説明も追加している。
【０１４１】
本実施形態において、工程７００１では、モニタ１０４２’がストレージノード１０４０’で利用可能なすべての種類のソースからのローカル統計を計測する。任意として、ローカル統計が他の目的で必要とされない場合、モニタ１０４２’は、関連クラスタ統計の５００７で選択された種類のソースからのローカル統計のみを計測できる。
【０１４２】
工程７００９において、統計集約プログラム２００５’はクラスタ統計テーブル２００３の列５００７を参照して、反復処理されているローカル統計のソースは、工程７００３で一致したクラスタ統計の集約のために使用されるように選択されたソースであるかを決定する。ローカル統計のソースがエントリ５００７と同一である場合、処理は工程７００４に進む。そうでなければ、処理は工程７００２に進み、次のローカル統計を反復処理する。
【０１４３】
＜代替統計割り当て処理＞
【０１４４】
図８Ｂは、初めてストレージノードに対して集約タスクを割り当てる処理を説明する代替フローチャートである。
【０１４５】
この図８Ｂの処理と図８Ａの処理との唯一の違いは、工程８００２および８００３を工程８００６および８００７に置き換えた点である。
【０１４６】
工程８００６において、統計割り当てプログラム２００６’はクラスタ統計テーブル２００３’に新しい行を挿入し、クラスタ統計の情報は工程８００１から反復処理される。列５００４、５００５および５００６は、その値が未知のため空のままとなる。また、統計割り当てプログラム２００６’は、利用可能なソースの種類からクラスタ統計の集約のための１種類のソースを選択し、列５００７にその値を挿入する。クラスタ統計の集約のためのソースの種類は、製品設計者によって設定された固定の知識として既知のものでもよい。1種類のソースの選択は前もって製品設計者によって固定され決定されてもよく、または管理者によって選択されてもよい。最後に、統計割り当てプログラム２００６’は集約ソーステーブル２００４に新しい行を挿入し、列６００１にはクラスタ統計ｉｄを有し、残りの列は未知であるため空のままとする。
【０１４７】
任意として、工程８００６において、１種類のソースの選択は関連リソースまたは関連クラスタ統計に基づいて実行されてもよい。２つのリソースは、例えば同一のオーナー３００２によって共有されている、および／または同一のタイプ３００３である場合に関連している。２つのクラスタ統計は、同一のリソース５００３に関連している場合、および／または同一のタイプ５００２である場合に関連している。すでに計測されている関連したクラスタ統計に基づいて１種類のソースを選択した場合、統計割り当てプログラム２００６’は集約ソーステーブル２００４’から最近のソースカウント６００５および６００７を参照して、最近のソースカウントに対して最小値を有するソースの種類を選択する。
【０１４８】
工程８００７において、統計割り当てプログラム２００６’はストレージ構成テーブル２００１’を参照し、工程８００６において新しいリソースおよび選択された種類のソースに対する関連ストレージノード１０４０を識別する。例えば、ソース１が選択された場合、関連ノードは列３００５によって識別され、ソース２が選択された場合、関連ノードは列３００６によって識別される。列を考えると、３００５または３００６は値を有しておらず、全ストレージノード１０４０’は新しいリソースと関連していると考えられる。
【０１４９】
任意として、工程８００７は、関連ストレージノード１０４０’を新しいリソースと類似したリソースと考えてもよく、例えば同一のリソースオーナー３００２、および／または同一のリソースタイプ３００３を有すると考えてもよい。
【０１５０】
＜代替集約更新処理＞
【０１５１】
図９Ｂは、集約負荷の処理および更新を説明する代替フローチャートである。
【０１５２】
図９Ｂの処理と図９Ａの処理との唯一の違いは、工程９００１を工程９０１０に置き換えた点である。
【０１５３】
工程９０１０において、実行された最後の集約に応じて、集約更新プログラム２００７’は列６００４、６００５、６００６および６００７の値を算出および更新する。この工程は、モニタ１０４２’に対して、選択されていない種類のソースのローカル統計も計測することを要求する必要がある場合もある。任意として、値は、最後の、例えば５つの集約の平均として算出可能である。１つのクラスタ統計の集約に関連するソースノード６００２およびソースカウント６００３は、クラスタ統計テーブル２００３’の列５００４に反映された際にクラスタ統計を集約するように割り当てられたストレージノード１０４０’においてアグリゲータ１０４３’によって既知である。最後に、集約ソーステーブル２００４’において更新された新しい値に基づいて、各クラスタ統計に対するソースの種類は、列６００５および６００７の値を比較することによって最小の最近のソースカウントを有するソースの種類として再度選択される。クラスタ統計に対して選択されたソースの種類は、クラスタ統計テーブル２００３’の列５００７において更新される。
【０１５４】
この工程において、クラスタ統計に対して選択されない種類の最近のソースノードおよび最近のソースカウントの更新とクラスタ統計に対してのソースの種類の再選択は任意であり、ノード割り当てが初めに割り当てられた後に変更可能である場合にのみ実行される。
【０１５５】
ここまで本発明の実施形態を説明した。ただし、本発明の実施形態は上記の説明に限定されるものではなく、当業者は本発明の本質的な特徴を特定し、特許請求の範囲に記載の精神および範囲から逸脱することなく様々な使用および条件に適応するように本発明の本質的な特徴に対して様々な修正および変形を加えることができる。
【０１５６】
例えば、分散ストレージシステムは複数の種類のリソースを含む複数のリソースを含む複数のストレージノードを含む。複数のストレージノードのうちの複数のストレージノードのそれぞれは、集約タスクのうちのストレージノードに割り当てられた集約タスクを実行するように構成される。集約タスクのそれぞれは、タスクに対応する複数リソースのうちの１つのリソースに関連する統計をタスクが割り当てられたストレージノードに集約するタスクである。
【０１５７】
図１Ｂのように、第１のストレージノード（Ｎ１）は第３の論理ユニット（ＬＵ３）ではなく第１のおよび第２の論理ユニット（ＬＵ１およびＬＵ２）を提供し、クライアントはＮ１のＦＥ−Ｉ／Ｆを介してＬＵ１およびＬＵ２にアクセスでき、クライアントはＮ１のＦＥ−Ｉ／Ｆを介して他のサーバ上のＬＵ３にアクセスできる。そのような場合、クライアントはＮ１のＦＥ−Ｉ／Ｆを介してＬＵ３にアクセスできるため、Ｎ１はＬＵ３に関連した統計（この統計はＦＥ−Ｉ／Ｆから取得可能）の第１のソースノードの１つでもよいが、Ｎ１はＬＵ３を提供しないため、Ｎ１はＬＵ３に関連した統計（この統計はデータ層またはＢＥ−Ｉ／Ｆから取得可能）の第２のソースノードの１つとはなりえない。
【０１５８】
集約タスクは、事前に複数のストレージノードのうちの複数のストレージノード（例えばストレージノードのすべて）に対して割り当てられてもよく、または分散ストレージシステムのうちの少なくとも１つのストレージノードによって最初に割り当てられてもよい。
【０１５９】
複数のストレージノードのうちの少なくとも１つは、複数のストレージノードに対して集約タスクを割り当ててもよい。
【０１６０】
複数のストレージノードの少なくとも１つは、リソース、クライアント、および複数のストレージノードの間の接続の関係を示す情報に基づいて集約タスクを割り当ててもよい。この情報は、ストレージノードの少なくとも１つのノードに格納されてもよい。
【０１６１】
リソースが複数のストレージノードの１つ以上において追加された場合、追加されたリソースまたはその属性が追加されたリソースの属性と類似したリソースに関する現在の構成に基づいて、複数のストレージノードの少なくとも１つは、追加されたリソースに関連した統計を集約する集約タスクを割り当ててもよい。
【０１６２】
リソースに関連する統計を集約する集約タスクは、クライアントからアクセスされることによってクライアントがリソースにアクセスできるストレージノードおよび／またはそのリソースの少なくとも一部を含むストレージノードに割り当てられてもよく、それによってモニタコンポーネント１０４２とアグリゲータコンポーネント１０４３との間のノード間通信が低減される。
【０１６３】
複数のストレージノードのうちの少なくとも１つは、リソースの集約ソースノードの数を示す情報に基づいて、リソース毎に集約タスクを割り当ててもよい。この情報は、ストレージノードの少なくとも１つのノードに格納されてもよい。
【０１６４】
複数のストレージノードのそれぞれは、複数の集約ソースを含んでもよい。複数の集約ソースのそれぞれは、リソースの統計を格納してもよい。複数のストレージノードの１つ以上のストレージノードのそれぞれに対して、統計のリソースはストレージノードにおける複数の集約ソース間で異なってもよい。複数の集約ソースのそれぞれに対して、リソースの集約ソースノードは、リソースの統計を格納するように構成される集約ソースを含むストレージノードでもよい。リソースに対して、複数の集約ソースのそれぞれに対する集約ソースノードの数に基づいて、複数のストレージノードのうちの少なくとも１つは複数の集約ソースのうちの１つを選択してもよい。複数のストレージノードの少なくとも１つは、選択された集約ソースに対する集約ソースノードの数を示す情報に基づいて集約タスクを割り当ててもよい。
【０１６５】
複数のストレージノードのそれぞれは、ストレージノードのフロントエンドを介してクライアントのうちの少なくとも１つからのリソースに対するアクセスを受けてもよい。複数のストレージノードのそれぞれは、ストレージノードのバックエンドを介して複数のストレージノードの１つ以上の他のストレージノードにおけるリソースに対してアクセスしてもよい。複数のストレージノードのそれぞれにおける複数の集約ソースは、フロントエンドに対する第１のソースおよびバックエンドに対する第２のソースを含んでもよい。
【０１６６】
管理者から特定のリソースの統計の要求である統計要求を受信するストレージノードを示す情報に基づいて、複数のストレージノードのうちの少なくとも１つは、特定のリソースに関連した統計を集約する集約タスクを統計要求を受信したストレージノードに割り当ててもよい。この情報は、ストレージノードのうちの少なくとも１つのノードに格納されてもよい。
【０１６７】
複数のストレージノードの動作ステータスを示す情報に基づいて、複数のストレージノードのうちの少なくとも１つは、複数のストレージノードのうちの少なくとも一部における集約タスクの配置を動的に変更するように構成される。この情報は、ストレージノードのうちの少なくとも１つに格納されてもよい。
【０１６８】
複数のストレージノードの負荷の不均衡が増加して第１の閾値に到達したことを情報が示した場合、複数のストレージノードのうちの少なくとも１つは集約タスクの配置を変更してもよい。
【０１６９】
複数のストレージノードの負荷の不均衡が減少して第２の閾値に到達したことを情報が示した場合、複数のストレージノードのうちの少なくとも１つは集約タスクの配置の変更を中止してもよい。
【０１７０】
複数のストレージノードのうちの少なくとも一部は、複数のストレージノードの他の部分の優先度よりも高い優先度を有するストレージノードでもよい。
【符号の説明】
【０１７１】
１０３０，１０３０’  分散ストレージシステム
【図１Ａ】
2019528521.tif 000003
【図１Ｂ】
2019528521.tif 000004
【図２】
2019528521.tif 000005
【図３Ａ】
2019528521.tif 000006
【図３Ｂ】
2019528521.tif 000007
【図４】
2019528521.tif 000008
【図５Ａ】
2019528521.tif 000009
【図５Ｂ】
2019528521.tif 000010
【図６Ａ】
2019528521.tif 000011
【図６Ｂ】
2019528521.tif 000012
【図７Ａ】
2019528521.tif 000013
【図７Ｂ】
2019528521.tif 000014
【図８Ａ】
2019528521.tif 000015
【図８Ｂ】
2019528521.tif 000016
【図９Ａ】
2019528521.tif 000017
【図９Ｂ】
2019528521.tif 000018
【国際調査報告】
2019528521.tif 000019