(57)【特許請求の範囲】
【請求項１】
第１の計算デバイスによって実現される方法であって、
第２の計算デバイスにネットワーク通信チャネルを介しネットワークインタフェースを通じてデータを送信するよう構成されるストレージプロセスを識別するステップと、
前記ネットワークインタフェースによって前記ストレージプロセスに提供される通信可用性信号の第1のカウントに対応する第1のカウンタを維持するステップと、
前記ストレージプロセスによって前記ネットワークインタフェースに送信されるデータ送信要求に応答して、前記ネットワークインタフェースによって前記ストレージプロセスに送信される通信非可用性信号の第2のカウントに対応する第2のカウンタを維持するステップと、
前記第1のカウンタと前記第2のカウンタとに基づき、前記ストレージプロセスのリアルタイム処理中に前記ストレージプロセスに対する前記第１の計算デバイスの計算リソースのリソース割当てを動的に調整するステップと、
を有する方法。
【請求項２】
前記計算リソースのリソース割当てを動的に調整するステップは、
前記第1のカウンタの第1のカウントがリソース割当て閾値を超過し、前記第2のカウンタの第2のカウントが閾値を超過しないことに応答して、前記リソース割当てを増加させることを含む、請求項１記載の方法。
【請求項３】
前記計算リソースのリソース割当てを動的に調整するステップは、
前記第2のカウンタの第2のカウントがリソース割当て解除閾値を超過し、前記第1のカウンタの第1のカウントが閾値を超過しないことに応答して、前記リソース割当てを減少させることを含む、請求項１記載の方法。
【請求項４】
前記ネットワークインタフェースによって提供される通信可用性信号を識別するステップであって、前記通信可用性信号は前記ネットワーク通信チャネルがデータを送信するのに利用可能であることを示す、識別するステップと、
前記通信可用性信号に基づき前記第1のカウンタの第1のカウントをインクリメントするステップと、
を有する、請求項１記載の方法。
【請求項５】
前記通信可用性信号に基づき前記第2のカウンタの第2のカウントをデクリメントするステップ、又は、
前記通信可用性信号に基づき前記第2のカウンタの第2のカウントをリセットするステップ、の何れか一方を含む、請求項４記載の方法。
【請求項６】
前記インクリメントするステップは、
前記通信可用性信号に応答してデータ送信要求として送信するのに利用可能なデータを前記ストレージプロセスが有していることに応答して、前記第1のカウンタの第1のカウントをインクリメントしないステップと、
前記通信可用性信号に応答してデータ送信要求として送信するのに利用可能なデータを前記ストレージプロセスが有していないことに応答して、前記第1のカウンタの第1のカウントをインクリメントするステップと、
を含む、請求項４記載の方法。
【請求項７】
前記ネットワークインタフェースによって提供される通信非可用性信号を識別するステップであって、前記通信非可用性信号は前記ネットワーク通信チャネルがデータ送信要求のデータを送信するのに利用不可であることを示す、識別するステップと、
前記通信非可用性信号に基づき前記第2のカウンタの第2のカウントをインクリメントするステップと、
を有する、請求項１記載の方法。
【請求項８】
前記通信非可用性信号に基づき前記第1のカウンタの第1のカウントをデクリメントするステップ、又は、
前記通信非可用性信号に基づき前記第1のカウンタの第1のカウントをリセットするステップ、の何れか一方を含む、請求項７記載の方法。
【請求項９】
前記計算リソースのリソース割当てを動的に調整するステップは、
前記ストレージプロセスによって利用されるバッファのサイズを増加させるため、前記第１の計算デバイスの追加的なメモリを割り当てるステップ、又は、
前記バッファのサイズを減少させるため、前記第１の計算デバイスのメモリを割当て解除するステップ、の少なくとも1つを含む、請求項１記載の方法。
【請求項１０】
前記第1のカウンタについて、前記ストレージプロセスに対するリソース割当ての動的増加をトリガするのに用いられるリソース割当て閾値を規定するステップと、
前記第2のカウンタについて、前記ストレージプロセスに対するリソース割当ての動的減少をトリガするのに用いられるリソース割当て解除閾値を規定するステップと、
を有する、請求項１記載の方法。
【請求項１１】
前記第1のカウントが前記リソース割当て閾値を超過したことに基づき、前記ストレージプロセスに対するリソース割当てを動的に増加させたことに応答して、前記リソース割当ての増加の後に閾値数の通信非可用性信号を受信したことに基づき、前記リソース割当て閾値又はリソース割当てを増加させるのに用いられる計算リソース量の少なくとも1つを調整するステップを有する、請求項１０記載の方法。
【請求項１２】
前記第2のカウントが前記リソース割当て解除閾値を超過したことに基づき、前記ストレージプロセスに対するリソース割当てを動的に減少させたことに応答して、前記リソース割当ての減少の後に閾値数の通信可用性信号を受信したことに基づき、前記リソース割当て解除閾値又はリソース割当てを減少させるのに用いられる計算リソース量の少なくとも1つを調整するステップを有する、請求項１０記載の方法。
【請求項１３】
前記ストレージプロセスは、複製ストレージプロセス、データミラーリングストレージプロセス、メディアスキャナストレージプロセス又はスナップショットストレージプロセスの少なくとも1つを含む、請求項１記載の方法。
【請求項１４】
通信非可用性信号は、ライトエラーメッセージ、スレッド中断イベント、ネットワーク通信チャネル占有メッセージ又はデータ送信要求拒否メッセージの少なくとも1つを含む、請求項１記載の方法。
【請求項１５】
前記ストレージプロセスには、第1の計算リソース量が初期的に割り当てられ、第2のストレージプロセスには、前記第1の計算リソース量に等しい第2の計算リソース量が初期的に割り当てられ、
前記動的に調整するステップは、前記第2の計算リソース量と異なる新たな計算リソース量に前記第1の計算リソース量を調整することを含む、請求項１記載の方法。
【請求項１６】
第１の計算デバイスにおけるプロセッサに、
第２の計算デバイスにネットワーク通信チャネルを介しネットワークインタフェースを通じてデータを送信するよう構成されるストレージプロセスを識別するステップと、
前記ネットワークインタフェースによって前記ストレージプロセスに提供される通信可用性信号の第1のカウントに対応する第1のカウンタを維持するステップと、
前記ストレージプロセスによって前記ネットワークインタフェースに送信されるデータ送信要求に応答して、前記ネットワークインタフェースによって前記ストレージプロセスに送信される通信非可用性信号の第2のカウントに対応する第2のカウンタを維持するステップと、
前記第1のカウンタと前記第2のカウンタとに基づき、前記ストレージプロセスのリアルタイム処理中に前記ストレージプロセスに対する前記第１の計算デバイスの計算リソースのリソース割当てを動的に調整するステップと、
を実行させるプログラム。
【請求項１７】
インクリメントな移転方法を実行するためのプログラムを含むメモリと、
前記メモリに結合されるプロセッサと、
を有する第１の計算デバイスであって、
前記プロセッサは、
第２の計算デバイスにネットワーク通信チャネルを介しネットワークインタフェースを通じてデータを送信するよう構成されるストレージプロセスを識別するステップと、
前記ネットワークインタフェースによって前記ストレージプロセスに提供される通信可用性信号の第1のカウントに対応する第1のカウンタを維持するステップと、
前記ストレージプロセスによって前記ネットワークインタフェースに送信されるデータ送信要求に応答して、前記ネットワークインタフェースによって前記ストレージプロセスに送信される通信非可用性信号の第2のカウントに対応する第2のカウンタを維持するステップと、
前記第1のカウンタと前記第2のカウンタとに基づき、前記ストレージプロセスのリアルタイム処理中に前記ストレージプロセスに対する前記第１の計算デバイスの計算リソースのリソース割当てを動的に調整するステップと、
を前記プロセッサに実行させる前記プログラムを実行するよう構成される第１の計算デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2015年9月1日に出願された”DYNAMIC RESOURCE ALLOCATION BASED
UPON NETWORK FLOW CONTROL”という名称の米国特許出願第14/842,086号及び2015年7月31日に出願された””DYNAMIC RESOURCE ALLOCATION BASED UPON NETWORK FLOW CONTROL”という名称の米国仮出願第62/199,735号に対する優先権を主張する。米国特許出願第14/842,086号及び米国仮出願第62/199,735号は、参照することによってここに援用される。
【背景技術】
【０００２】
ストレージネットワーク環境は、１つ以上のストレージデバイスにまたがって格納されるユーザデータへのアクセスをクライアントに提供するよう構成された１つ以上のストレージ計算デバイス（例えば、ストレージコントローラ、ノード、ストレージサーバなど）を含みうる。ストレージ計算デバイスは、ストレージ計算デバイスからデスティネーションストレージ計算デバイスにデータを処理及び/又は送信するよう構成される各種ストレージプロセスをホストしうる。例えば、スナップショットストレージプロセスは、ストレージ計算デバイスによってホストされるデータボリュームのスナップショットを作成するよう構成されてもよく、スナップショットは、ボリュームのファイル及びディレクトリの時点表現に対応する。ストレージ複製プロセスは、バックアップ及び/又はフェイルオーバーリカバリのために、ストレージ計算デバイスからデスティネーションストレージ計算デバイスに送信可能なフォーマットにスナップショットをフォーマット化するよう構成されうる。例えば、デスティネーションストレージ計算デバイスは、スナップショットを利用して、デスティネーションストレージ計算デバイスにおいてホストされ、ストレージ計算デバイスによってホストされるボリュームの複製に対応するミラーリングされたボリュームを最新の状態に保つことができ、これにより、ミラーリングされたボリュームは、ストレージ計算デバイスが故障した場合において、ミラーリングされたユーザデータへのフェイルオーバクライアントアクセスを提供するのに利用されうる。リモートのミラーリングされたボリュームのメンテナンスは、ネットワーキング通信を必要としうる。ネットワーキング通信帯域幅を効率的に使用するため、これらのストレージプロセスはいくつかの他の計算を実行しうる。例えば、ストレージプロセスは、利用可能なネットワーク帯域幅をより良く利用するため、ネットワークを介し通信されるデータを圧縮してもよい。このようなプロセスは、補助的な計算リソースの利用を必要としうる。
【０００３】
メモリ、CPUサイクルなどのストレージ計算デバイスの計算リソースは、ストレージプロセスによる利用のために割り当てうる。例えば、プライマリメモリの量は、ストレージ複製プロセスがキャッシュとして利用するため割り当てられてもよい。計算リソースの割当て量は、所与のハードウェア構成の理論的なパフォーマンス推定又はリソース使用履歴に基づき指定されてもよい。不運なことに、多すぎるリソース又は少なすぎるリソースが割り当てられる可能性があり、ストレージプロセス及び/又はストレージ計算デバイスによってホストされる他のプロセスのパフォーマンスに影響を及ぼす可能性がある。多すぎるリソースがストレージプロセスに割り当てられ、未使用である場合、他のプロセスは、そのようなプロセスが未使用のリソースにアクセスした場合より、パフォーマンスを低下させる可能性がある。ストレージプロセスに十分なリソースが割り当てられていない場合、ストレージプロセスは、データを送信するために利用可能な帯域幅に追いつくのに十分な速さでデータを生成できず、ネットワーク帯域幅が十分に活用されない可能性がある。リソース割り当ての推定は不正確であり、ストレージプロセスが実用的に利用できるリソースの数に各種変動要因が影響する可能性があるため、適切なリソースの欠如による浪費されるリソース及び/又は実行不足のプロセスなどの非効率性を生じさせうる。（例えば、リソースがネットワークカードの相対的に高い帯域幅に基づきストレージプロセスに割り当てられる場合、ストレージプロセスは、ネットワークカードのスループットと比較して、ネットワーク通信チャネルの相対的に低いネットワークスループットのために予想されるよりも少ないリソースしか利用しない。）
【図面の簡単な説明】
【０００４】
【図１】以下に提供されるものの１つ以上による一例となるクラスタ化されたネットワークを示すコンポーネントブロック図である。
【図２】以下に提供されるものの１つ以上による一例となるデータストレージシステムを示すコンポーネントブロック図である。
【図３】ネットワークフロー制御に基づく一例となる動的リソース割当て方法を示すフローチャートである。
【図４Ａ】ネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図４Ｂ】通信可用性信号が受信されるネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図４Ｃ】圧縮ストレージプロセスへのリソース割当てが増加するネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図４Ｄ】通信非可用性信号が受信されるネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図４Ｅ】通信可用性信号が受信されるネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図４Ｆ】複製ストレージプロセスへのリソース割当てが減少するネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図４Ｇ】リソース割当て解除閾値が調整されるネットワークフロー制御に基づく一例となる動的リソース割当てのための計算デバイスを示すコンポーネントブロック図である。
【図５】以下に提供されるものの１つ以上によるコンピュータ可読媒体の具体例である。
【発明を実施するための形態】
【０００５】
請求された主題のいくつかの例が、ここで同様の参照番号が全体を通じて同様の要素を参照するのに一般に利用される図面を参照して説明される。以下の説明では、説明の目的のため、多数の具体的な詳細が請求された主題の理解を提供するため、以下に与えられる。しかしながら、請求された主題は、これらの具体的詳細なしに実施されてもよいことは明らかである。この詳細な説明の何れも先行技術として認められていない。
【０００６】
ネットワークフロー制御に基づく動的リソース割り当てのための1つ以上の技術及び/又は計算デバイスが提供される。例えば、ストレージプロセスは、ソースストレージ計算デバイスからデスティネーションストレージ計算デバイスへのネットワーク通信チャネルを介したネットワークインタフェースを介しデータを送信するよう構成されていると特定される（例えば、ソースストレージ計算デバイスからデスティネーションストレージ計算デバイスにファイルシステムを複製する複製ストレージプロセス）。通信可用性信号（例えば、ネットワークインタフェースは、データを送信するために利用可能な帯域幅を有してもよいが、ストレージプロセスは送信に利用可能なデータを有さない）又は通信非可用性信号（例えば、ネットワークインタフェースは、ネットワーク通信チャネルが占有されているためにデータ送信要求拒否メッセージを提供しうる）などのネットワークフロー制御情報は、ストレージプロセスの実行中にストレージプロセスにリソースを動的に割り当てるのに利用されてもよい。一例では、ストレージアプリケーションが通信システムにデータを転送し、送信すべき更なるデータがないとき、通信可用性信号が発生する可能性がある。別の例では、ストレージアプリケーションが新しい発信メッセージを利用して通信システムに書き込みすることを試みるが、新しい発信メッセージがバッファできないことが指示されたとき、通信非可用性信号が発生しうる。このようにして、様々な動的要因（例えば、ネットワーク帯域幅の変化、広域ネットワークを介したデータの送信を容易にすること以外の目的にリソースを費やす可能性があるゲートウェイマシーンによって導入される瞬間的な変動）は、ストレージプロセスにリソースを割り当てるときに考慮されうる（例えば、より多くのネットワーク帯域幅が利用可能な低ネットワーク使用期間中に、より多くのメモリ及びCPUサイクルが複製ストレージプロセスに割り当てられ、これにより、複製ストレージプロセスは、送信用の複製データをより迅速に生成することができ、利用可能なネットワーク帯域幅を効率的に利用する）。従って、より多くの計算リソースがストレージプロセスに提供され、これにより、ストレージプロセスによる利用のために利用可能なネットワークリソースがあるとき、ストレージプロセスがより迅速かつ効率的に実行されうる。対照的に、ストレージプロセスがネットワークリソースの不足によりボトルネックになっているとき、より少ない計算リソースしかストレージリソースも提供されず、計算リソースは、クライアントI/O要求を処理するためなど、他のアプリケーション、サービス及びプロセスによってより効率的に利用されうる。ネットワークフロー制御情報に基づきリソース割当てを動的に調整することは、ネットワークリソース可用性の変化に応答してリアルタイムに調整されうるより正確なリソース割当てを提供し、従って、リソース割当ては、理論的パフォーマンス情報又は履歴データに基づきリソース割当てを単に推定するよりも正確且つ効率的でありうる。
【０００７】
ネットワークフロー制御に基づく動的なリソース割当てのコンテキストを提供するため、図1は、クラスタ化ネットワーク環境100又はネットワークストレージ環境の実施例を示す。しかしながら、ここに説明される技術等は、クラスタ化ネットワーク環境100、非クラスタ化ネットワーク環境及び/又はデスクトップ計算環境などの様々な他の計算環境内で実現されてもよいことが理解されうる。すなわち、添付された請求項の範囲を含む本開示は、ここに提供される具体例に限定されることを意味しない。同一又は類似のコンポーネント、要素、特徴、アイテム、モジュールなどが以降の図に示されるが、以前の図に関して以前に説明された場合、同一の同様の（例えば、重複する）説明は、以降の図を説明するとき（例えば、簡潔さと理解の容易さのために）省略されてもよいことが理解されるであろう。
【０００８】
図1は、ここに説明される技術及び/又はシステムの少なくともいくつかの実施例を実現しうる一例となるクラスタ化ネットワーク環境100を示すブロック図である。例示的な環境100は、プライベートInfiniband、ファイバチャネル（FC）又はストレージシステム102と104との間の通信を実現するイーサネット（登録商標）ネットワークとして具体化される計算ネットワークなどのクラスタファブリック106を介し結合されるデータストレージシステム又はストレージサイト102及び104（例えば、ノード116及び118などの1つ以上のモジュール、コンポーネントなど）を含むことができる。2つのデータストレージシステム102及び104と2つのノード116及び118とが図1に示されているが、任意の適切な数のそのようなコンポーネントが考えられることは理解されるであろう。一例では、ノード116,118は、ホストデバイス108,110などのクライアントデバイスに、データストレージデバイス128,130内に格納されているデータへのアクセスを提供するストレージコントローラ（例えば、ノード116はプライマリ又はローカルストレージコントローラを含み、ノード118はセカンダリ又はリモートストレージコントローラを含みうる）を有する。同様に、ここで特に言及しない場合、同じことがここで参照され、及び/又は添付の図面に示される他のモジュール、要素、特徴、アイテムなどについても当てはまる。すなわち、ここに開示される特定の数のコンポーネント、モジュール、要素、特徴、アイテムなどは、限定的に解釈されることを意味するものではない。
【０００９】
クラスタ化ネットワークは、何れか特定の地理的エリアに限定されず、ローカル及び/又はリモートにクラスタ化可能であることがさらに理解されるであろう。従って、一実施例では、クラスタ化ネットワークは、複数の地理的位置に配置された複数のストレージシステム及び/又はノードに分散可能である一方、別の実施例では、クラスタ化ネットワークは、同じ地理的位置（例えば、1つのオンサイトラックのデータストレージデバイス）に存在するデータストレージシステム（例えば、102,104）を含むことができる。
【００１０】
図示の例では、例えば、クライアントデバイス、パーソナルコンピュータ（PC）、ストレージ用に使用される計算デバイス（例えば、ストレージサーバ）及び他のコンピュータ又は周辺デバイス（例えば、プリンタ）を含むことができる1つ以上のホストデバイス108,110は、ストレージネットワーク接続112,114によってそれぞれのデータストレージシステム102,104に結合される。ネットワーク接続は、例えば、データパケットをやりとりするため、Common Internet File System (CIFS)プロトコル又はNetwork
File System (NFS)プロトコルなどのNetwork Attached Storage (NAS)プロトコルを利用するローカルエリアネットワーク（LAN）又はワイドエリアネットワーク（WAN）を含んでもよい。例示的に、ホストデバイス108,110は、アプリケーションを実行する汎用コンピュータであってもよく、情報の交換のためにクライアント/サーバモデルを利用してデータストレージシステム102,104とやりとりしてもよい。すなわち、ホストデバイスは、データストレージシステムからデータを要求し（例えば、ストレージデバイスのためにホストデバイスによって発行されたI/Oコマンドを処理するよう構成されるネットワークストレージコントロールによって管理されるストレージデバイス上のデータ）、データストレージシステムは、要求の結果を1つ以上のネットワーク接続112,114を介しホストデバイスに返す。
【００１１】
クラスタ化されたデータストレージシステム102,104上のノード116,118は、クラスタとして相互接続されたネットワーク又はホストノードを備えることができ、例えば、遠隔地を有する企業、クラウドストレージ（例えば、ストレージエンドポイントは、データクラウド内に格納されてもよい）などにデータストレージ及びマネージメントサービスを提供可能である。データストレージ及びマネージメントネットワーククラスタ環境100におけるこのようなノードは、例えば、接続ポイント、再分配ポイント又は通信エンドポイントとしてネットワークに付属されたデバイスとすることができる。
ノードは、ネットワーク通信チャネルを介し情報を送信、受信及び/又は転送可能であり、これらの基準の何れか又は全てを満たす任意のデバイスを含むことができる。ノードの一例は、ネットワークに付属されたデータストレージ及びマネージメントサーバであってよく、当該サーバは、データストレージ及びマネージメントシステムにおいてサーバとして動作するよう特に構成される汎用コンピュータ又は計算デバイスを備えることができる。
【００１２】
一例では、ノード116,118などの第1のノードクラスタが（例えば、1つ以上のストレージデバイスの第1の論理グループを含む第1のストレージアグリゲートへのアクセスを提供するよう構成される第1のストレージコントローラのセット）、第1のストレージサイトに配置されうる。図示されない第2のノードのクラスタは、第2のストレージサイト（例えば、1つ以上のストレージデバイスの第2の論理グループを含む第2のストレージアグリゲートへのアクセスを提供するよう構成される第2のストレージコントローラのセット）に配置されてもよい。第1のノードクラスタ及び第2のノードクラスタは、生存するノードクラスタが、災害発生時に災害ノードクラスタのストレージデバイスへのスイッチオーバアクセスを提供する災害リカバリ構成に従って構成されてもよい。（例えば、第1のノードクラスタは、第2のストレージサイトで災害が発生した場合に、第2のストレージアグリゲートのストレージデバイスへのスイッチオーバデータアクセスをクライアントデバイスに提供する。）
例示的な環境100に示されるように、ノード116,118は、クラスタのための分散ストレージアーキテクチャを提供するよう連携する様々な機能コンポーネントを含むことができる。例えば、ノードは、ネットワークモジュール120,122及びデータモジュール124,126を備えることができる。ネットワークモジュール120,122は、ノード116,118（例えば、ネットワークストレージコントローラ）がネットワーク接続112,114を介しホストデバイス108,128と接続することを可能にするよう構成することができ、例えば、ホスト装置108,110が分散ストレージシステムに格納されたデータにアクセスすることを可能にする。さらに、ネットワークモジュール120,122は、クラスタファブリック106を介し1つ以上の他のコンポーネントとの接続を提供可能である。例えば、図1において、第1のノード116の第1のネットワークモジュール120は、第2のノード118の第2のデータモジュール126を介し要求を送信することによって、第2のデータストレージデバイス130にアクセスすることができる。
【００１３】
データモジュール124,126は、ディスク若しくはディスクのアレイ、フラッシュメモリ又は何れかの他の形式のデータストレージなどの1つ以上のデータストレージデバイス128,130をノード116,118に接続するよう構成することができる。ノード116,118は、例えばクラスタ内の各ノードがクラスタ内の異なるノードに接続されたデータストレージデバイス128,130上のデータにアクセスできるように、クラスタファブリック106によって相互接続することができる。しばしば、データモジュール124,126は、例えば、SCSI（Small
Computer System Interface）又はFCP（Fiber Channel Protocol）などのSAN（Storage Area Network）プロトコルに従ってデータストレージデバイス128,130と通信する。従って、ノード116,118上のオペレーティングシステムから理解されるように、データストレージデバイス128,130は、オペレーティングシステムにローカルに付属されているように見える。このようにして、異なるノード116,118等は、明示的に抽象ファイルを要求するのではなく、オペレーティングシステムを介してデータブロックにアクセスすることができる。
【００１４】
例示的な実施例100は、同数のネットワーク及びデータモジュールを示しているが、他の実施例は、異なる数のこれらのモジュールを含むことができることが理解されるべきである。例えば、ネットワークモジュールとデータモジュールとの間に一対一の対応関係を有しないクラスタにおいて相互接続される複数のネットワークモジュールとデータモジュールがあってもよい。すなわち、異なるノードは、異なる数のネットワークモジュールとデータモジュールとを有することができ、同じノードは、データモジュールとは異なる数のネットワークモジュールを有することができる。
【００１５】
さらに、ホストデバイス108,110は、ネットワーク接続112,114を介しクラスタ内のノード116,118とネットワーク接続することができる。一例として、クラスタにネットワーク接続される各ホストデバイス108,110は、クラスタ内のノード116,118のサービス（例えば、データパケットの形態での情報の交換）を要求し、ノード116,118は、要求されたサービスの結果をホストデバイス108,110に返すことができる。一実施例では、ホストデバイス108,110は、データストレージシステム102,104におけるノード（例えば、ネットワークホスト）116,118に存在するネットワークモジュール120,122と情報を交換することができる。
【００１６】
一実施例では、データストレージデバイス128,130は、例えば、データのファイルシステムとしてディスクドライブ若しくはディスクアレイ又は他のストレージ（例えば、フラッシュ）への情報の格納の実現形態であるボリューム132を備える。ボリュームは、例えば、ディスクの一部、ディスクの集合又はディスクの複数の部分にまたがることができ、典型的には、ストレージシステムにおけるディスクスペース上のファイルストレージの全体的な論理構成を定義する。一実施例では、ボリュームは、ボリューム内の階層的ディレクトリ構造に存在する1つ以上のファイルとして格納されたデータを含むことができる。
【００１７】
ボリュームは、典型的には、特定のストレージシステムに関連付けられうるフォーマットで構成され、それぞれのボリュームフォーマットは、ボリュームにクラスタを形成する能力を提供するなど、ボリュームに機能を提供する特徴を含む。例えば、第1のストレージシステムがそのボリュームに対して第1のフォーマットを利用するとき、第2のストレージシステムは、それらのボリュームに対して第2のフォーマットを利用してもよい。
【００１８】
例示的な環境100において、ホストデバイス108,110は、データストレージシステム102,104を利用して、ボリューム132にデータを格納し、取り出すことができる。本実施例では、例えば、ホストデバイス108は、データストレージシステム102内のノード116におけるネットワークモジュール120にデータパケットを送信できる。ノード116は、データストレージデバイス128がボリューム132Aを含むデータモジュール124を利用して、データストレージデバイス128にデータを転送することができる。このように、本例では、ホストデバイスは、ネットワーク接続112によって接続されたデータストレージシステム102を利用して、ストレージボリューム132Aにアクセスし、データを格納及び/又は抽出することができる。さらに、本実施例では、ホストデバイス110は、データストレージシステム104内のホスト118（例えば、データストレージシステム102から離れていてもよい）におけるネットワークモジュール122とデータを交換可能である。ホスト118は、データモジュール126を利用してデータストレージデバイス130にデータを転送可能であり、これにより、データストレージデバイス130に関連するボリューム132Bにアクセスすることができる。
【００１９】
ネットワークフロー制御に基づく動的リソース割り当てがクラスタ化ネットワーク環境100内で実現されうることが理解されてもよい。例えば、ノード116及び/又はノード118のリソースは、ネットワークモジュール120及び/又はネットワークモジュール122からの通信可用性及び非可用性信号など、ネットワークフロー制御情報に基づき実行されるストレージプロセスについて動的に調整されうる。ネットワークフロー制御に基づく動的リソース割り当ては、何れかのタイプの計算環境について実現されてもよく、物理的デバイス（例えば、ノード116、ノード118など）及び/又はクラウド計算環境（例えば、クラスタ化ネットワーク環境100にリモートである）の間で転送可能であってもよい。
【００２０】
図2は、ここに説明される技術及び/又はシステムの1つ以上を実現可能なコンポーネントの実施例の更なる詳細を提供するデータストレージシステム200（例えば、図1の102,104）の例示的な具体例である。例示的なデータストレージシステム200は、ノード202（例えば、図1のホストノード116,118）及びデータストレージデバイス234（例えば、図1のデータストレージデバイス128,130）を含む。ノード202は、例えば、汎用コンピュータ、あるいは、特にストレージサーバとして動作するよう構成された他の計算デバイスであってもよい。ホストデバイス205（例えば、図1の108,110）は、例えば、ネットワーク216を介しノード202に接続され、データストレージデバイス234に記憶されたファイル及び/又は他のデータへのアクセスを提供することができる。例えば、ノード202は、ホストデバイス205などのクライアントデバイスにデータストレージデバイス234内に格納されたデータへのアクセスを提供するストレージコントローラを含む。
【００２１】
データストレージデバイス234は、ディスクアレイ218,220,222のディスク224,226,228などのマスストレージデバイスを含むことができる。ここに説明される技術及びシステムは、例示的な実施形態によって限定されないことが理解される。例えば、ディスク224,226,228は、限定することなく、磁気ディスクドライブ、フラッシュメモリ、例えば、データ（D）及び/又はパリティ（P）情報などを含む情報を格納するよう構成された何れか他の同様の媒体を含む何れかのタイプのマスストレージデバイスを含んでもよい。
【００２２】
ノード202は、システムバス242によって相互接続された1つ以上のプロセッサ204、メモリ206、ネットワークアダプタ210、クラスタアクセスアダプタ212及びストレージアダプタ214を含む。ストレージシステム200はまた、例えば、アレイにおける故障したディスクのデータの再構成プロセスを最適化するため、Redundant Array of Independent (or Inexpensive) Disks (RAID)最適化技術を実現可能なノード202のメモリ206にインストールされたオペレーティングシステム208を含む。
【００２３】
オペレーティングシステム208はまた、データストレージシステムのための通信と、クラスタファブリック215（例えば、図1の106）に付属されたクラスタ化ネットワーク内に存在しうる他のデータストレージシステム間の通信とを管理できる。従って、ネットワークストレージコントローラなどのノード202は、これらのホストデバイス要求に従って、データストレージデバイス234（例えば、あるいは、追加のクラスタ化デバイス）上のデータを管理するためホストデバイス要求に応答することができる。オペレーティングシステム208は、データストレージシステム200上に1つ以上のファイルシステムを確立することができ、ファイルシステムは、例えば、ファイル及びディレクトリの永続的な階層的名前空間を実現するソフトウェアコード及びデータ構造を含むことができる。一例として、新しいデータストレージデバイス（図示せず）がクラスタ化ネットワークシステムに追加されると、オペレーティングシステム208は、既存のディレクトリツリー内で新しいデータストレージデバイスに関連する新しいファイルが格納される場所を通知される。これは、しばしばファイルシステムの“マウンティング（mounting）”と呼ばれる。
【００２４】
例示的なデータストレージシステム200において、メモリ206は、関連するソフトウェアアプリケーションコード及びデータ構造を記憶するため、プロセッサ204及びアダプタ210,212,214によってアドレス可能なストレージ位置を含むことができる。プロセッサ204及びアダプタ210,212,214は、例えば、ソフトウェアコードを実行し、データ構造を操作するよう構成された処理要素及び/又は論理回路を含んでもよい。典型的には、その一部がメモリ206に常駐し、処理要素によって実行されるオペレーティングシステム208は、ストレージシステムによって実現されるファイルサービスをサポートするストレージ処理を呼び出すことによって、ストレージシステムを機能的に編成する。当業者には、様々なコンピュータ可読媒体を含む他の処理及びメモリ機構が、ここに説明される技術に関するアプリケーション命令を格納及び/又は実行するため利用されてもよいことは明らかであろう。例えば、オペレーティングシステムはまた、1つ以上の制御ファイル（図示せず）を利用して、仮想マシーンのプロビジョニングを支援することが可能である。
【００２５】
ネットワークアダプタ210は、データストレージシステム200をコンピュータネットワーク216を介してホストデバイス205に接続するのに必要な機械的、電気的及びシグナリング回路を含み、コンピュータネットワーク216は、とりわけ、ポイントツーポイント接続又はローカルエリアネットワークなどの共有媒体を有してもよい。ホストデバイス205（例えば、図1の108,110）は、アプリケーションを実行するよう構成される汎用コンピュータであってもよい。
上述のように、ホストデバイス205は、情報配信のクライアント/ホストモデルに従ってデータストレージシステム200とやりとりしてもよい。
【００２６】
ストレージアダプタ214は、ノード202上で実行されるオペレーティングシステム208と連携して、ホストデバイス205によって要求された情報にアクセスする（例えば、ネットワークストレージコントローラによって管理されるストレージデバイス上のデータにアクセスする）。当該情報は、磁気ディスクドライブ、フラッシュメモリ及び/又は情報を格納するよう構成された他の何れかの同様の媒体など、何れかのタイプの書き込み可能な媒体の付属されたアレイに格納されてもよい。一例となるデータストレージシステム200では、情報はディスク224,226,228上のデータブロックに格納可能である。ストレージアダプタ214は、SANプロトコル（例えば、Small
Computer System Interface (SCSI), iSCSI, hyperSCSI, Fiber Channel Protocol
(FCP)）などのI/Oインターコネクト構成を介しディスクに結合する入出力（I/O）インタフェース回路を含むことが可能である。情報は、ストレージアダプタ214によって取り出され、必要に応じて、システムバス242を介しネットワークアダプタ210（及び/又はクラスタにおける他のノードに送信した場合、クラスタアクセスアダプタ212）に転送される前に、1つ以上のプロセッサ204（又はストレージアダプタ214自体）によって処理され、ここで、情報はデータパケットにフォーマット化され、ネットワーク接続216を介しホストデバイス205にリターンされる（及び/又はクラスタファブリック215を介しクラスタに付属された別のノードにリターンされる）。
【００２７】
一実施例では、アレイ218,220,222上への情報の格納は、ディスクスペースの全体的な論理構成を定義するディスク224,226,228のクラスタから構成される1つ以上のストレージ“ボリューム”230,232として実現可能である。1つ以上のボリュームを含むディスク224,226,228は、典型的には、1つ以上のRAIDのグループとして編成される。一例として、ボリューム230は、ディスク224及び226のクラスタを含むディスクアレイ218及び220の集合体を含む。
【００２８】
一実施例では、ディスク224,226,228へのアクセスを容易にするため、オペレーティングシステム208は、ディスク上のディレクトリ及びファイルの階層構造として情報を論理的に編成するファイルシステム（例えば、write anywhereファイルシステム）を実現してもよい。本実施例では、各ファイルは、情報を格納するよう構成された一組のディスクブロックとして実現されてもよく、一方、ディレクトリは、他のファイル及びディレクトリに関する情報が格納される特別にフォーマット化されたファイルとして実現されてもよい。
【００２９】
このデータストレージシステム200内の基礎となる物理的構成が何であれ、データは、一例では32ビットの長さである、ファイルシステム識別子（FSID）などのそれぞれのボリューム識別子に関連付けることが可能な物理ボリューム及び/又は仮想ボリューム内のファイルとして格納可能である。
【００３０】
物理ボリュームは、1つ以上のデータストレージデバイス234の少なくとも一部など（例えば、Redundant Array of Independent (or Inexpensive) Disks (RAIDシステム)）、アドレス、アドレス可能スペース、位置などが変化しない物理ストレージデバイスの少なくとも一部に対応する。典型的には、物理ボリュームの位置は、それにアクセスするのに使用されるアドレス（の範囲）が一般に一定のままであるという点で変化しない。
【００３１】
対照的に、仮想ボリュームは、異なる物理ストレージデバイスの異なる部分の集合アグリゲート上に記憶される。仮想ボリュームは、ディスク224,226及び/又は228のそれぞれからのいくつかの利用可能なスペースなど、異なる物理ストレージデバイスの位置の異なる利用可能な部分の集合であってもよい。仮想ボリュームは何れか特定のストレージデバイスに“結び付け”られていないため、仮想ボリュームは、抽象化又は仮想化のレイヤを含むと言うことができ、いくつかの点でサイズ変更及び/又はフレキシブルにすることを可能にする。
【００３２】
さらに、仮想ボリュームは、1つ以上の論理ユニット番号（LUN）238、ディレクトリ236、Qツリー235及びファイル240を含むことができる。とりわけ、これらの特徴、特にLUNは、データが格納される異なるメモリ位置が識別され、例えば、データストレージユニットとしてグループ化されることを可能にする。また、LUN238は、仮想ボリューム内のデータがアグリゲート内に格納される仮想ディスク又はドライブを構成するものとして特徴付けされてもよい。例えば、LUNはしばしば仮想ドライブと呼ばれ、それらは、汎用コンピュータからハードドライブをエミュレートする一方、それらは、ボリュームの様々な部分に格納されたデータブロックを実際に構成する。
【００３３】
一実施例では、1つ以上のデータストレージデバイス234は、1つ以上の物理ポートを有することが可能であり、各物理ポートにはターゲットアドレス（例えば、SCSIターゲットアドレス）が割り当て可能である。データストレージデバイスに記憶されたそれぞれのボリュームを表すため、データストレージデバイス上のターゲットアドレスが、1つ以上のLUN238を識別するのに利用可能である。従って、例えば、ノード202がストレージアダプタを介しボリューム230,232に接続するとき、ノード202とボリュームの基礎となる1つ以上のLUN238との間の接続が作成される。
【００３４】
一実施例では、各ターゲットアドレスは、ターゲットアドレスが複数のボリュームを表すことができるように、複数のLUNを識別することができる。ストレージアダプタ214における回路及び/又はソフトウェアとして、あるいは、メモリ206に存在し、プロセッサ204によって実行される実行可能コードとして実現可能なI/Oインタフェースは、例えば、LUN238を識別する1つ以上のアドレスを使用することによって、ボリューム230に接続することができる。
【００３５】
ネットワークフロー制御に基づく動的リソース割当てがデータストレージシステム200について実現されうることが理解されうる。例えば、ノード202のリソースは、ネットワークアダプタ210からの通信可用性及び非可用性信号などのネットワークフロー制御情報に基づき、そこで実行されるストレージプロセスに対して動的に調整される。ネットワークフロー制御に基づく動的リソース割当ては、何れかのタイプの計算環境について実現され、物理デバイス（例えば、ノード202、ホスト205など）及び/又はクラウド計算環境（例えば、ノード202及び/又はホスト205に対してリモートである）の間で移転可能であることが理解されうる。
【００３６】
ネットワークフロー制御に基づく動的リソース割当ての一実施例は、図3の一例となる方法300によって示される。302において、ストレージプロセスはストレージプロセスをホストするソースストレージ計算デバイス（例えば、ストレージサーバ）からデスティネーションストレージ計算デバイスへのネットワーク通信チャネルを介しネットワークインタフェース（例えば、ネットワークレイヤ）を通じてデータを送信するよう構成されるとして（例えば、ストレージサーバによって）識別されてもよい。ストレージ計算デバイスは、データを格納、送信及び/又は受信するよう構成される何れかの計算デバイス（例えば、ストレージサーバ、ノード、ストレージコントローラ、ラップトップ、パーソナルコンピュータ、モバイルデバイス、スマートデバイス、クラウド計算環境など）であってもよいことが理解されうる。ストレージプロセスは、複製ストレージプロセス、データミラーリングストレージプロセス、メディアスキャナストレージプロセス（例えば、データを評価及び/又はフォーマット化するプロセス）、圧縮ストレージプロセス、スナップショットストレージプロセス及び/又はデータを処理し、処理されたデータを別の計算デバイスに送信する他の何れかのプロセス、アプリケーション又はサービスを含んでもよい。
【００３７】
一例では、304において、ネットワークインタフェースによってストレージプロセスに提供される通信可用性信号の第1のカウントに対応する第1のカウンタが維持される。別の例では、1つ以上の通信可用性信号に対応する通信可用性インジケータ（例えば、通信可用性に関する情報、通信可用性信号のリアルタイムの評価又はネットワークインタフェースからの可用性及び/又は非可用性信号に関連するフィードバックを吸収可能な他の何れかのデータ又はアルゴリズムを格納するのに利用されるデータ構造）が維持されてもよい（例えば、第1のカウンタの代わりに）。通信可用性信号は、ネットワーク通信チャネルが占有されておらず、データを送信するのに利用可能であるというネットワークインタフェース（例えば、特定のネットワークレイヤ）からのメッセージに対応するものであってもよい。第1のカウントは、ネットワーク通信チャネルを効率的に利用するレートでデータを処理するための適切な量の計算リソースがストレージプロセスに割り当てられていないことを示すものであってもよい（例えば、通信可用性信号が受信されたとき、バッファが空であってもよい）。一例では、306において、ストレージプロセスによってネットワークインタフェースに送信されるデータ送信要求に応答して、ネットワークインタフェースによってストレージプロセスに送信される通信非可用性信号の第2のカウントに対応する第2のカウンタが維持される。別の例では、1つ以上の通信非可用性信号に対応する通信非可用性インジケータ（例えば、通信非可用性に関する情報、通信非可用性信号のリアルタイムの評価又はネットワークインタフェースからの可用性及び/又は非可用性信号に関連するフィードバックを吸収可能な他の何れかのデータ又はアルゴリズムを格納するのに用いられるデータ構造）が維持される（例えば、第2のカウンタの代わりに）。通信非可用性信号は、書き込みエラーメッセージ（例えば、ストレージプロセスがネットワーク通信チャネルを介しデータを書き込みすることを試みるときのエラー）、スレッド中断イベント（例えば、ネットワーク通信チャネルが占有されているときに中断されうるデータ送信スレッド）、ネットワーク通信チャネル占有メッセージ、データ送信要求拒否メッセージ（例えば、ネットワーク通信チャネルが占有されているため、ネットワークインタフェースは、ネットワーク通信チャネルを介しデータを送信するためのデータ送信要求を拒否する）及び/又は他のネットワークレイヤメッセージに対応するものであってもよい。第2のカウントは、ストレージプロセスが、ネットワーク通信チャネルがサポートできるものよりも速い速度で送信用のデータを準備している可能性があるため、ストレージプロセスに多すぎる計算リソースが割り当てられていることを示すものであってもよい（例えば、ネットワーク通信チャネルは、広域ネットワークのゲートウェイ計算デバイスがデータ送信以外の目的にリソースを配分するためなどのボトルネックになる可能性があり、その結果、データ送信の減速などの瞬間的な変動を生じさせる）。
【００３８】
カウンタを維持する例では、ネットワーク通信チャネルがデータを送信するために利用可能であることを示す通信可用性信号が識別される。第1のカウンタの第1のカウントは、通信可用性信号に基づきインクリメントされてもよい。第2のカウンタの第2のカウントは、通信可用性信号に基づきデクリメント又はリセット（例えば、0などのベース値に設定）されてもよい。一例では、ストレージプロセスが通信可用性信号に応答してデータ送信要求として送信するのに利用可能なデータを有していなかった場合、第1のカウントがインクリメントされ、第2のカウントがデクリメント又はリセットされてもよい（例えば、ストレージプロセスが送信用のデータを準備するための追加的なリソースを利用可能であり、従って、ネットワーク通信チャネルの利用可能な帯域幅をより良好に利用するという通知）。別の例では、ストレージプロセスが送信するのに利用可能なデータを有しなかった場合、第1のカウントはインクリメントされず、第2のカウントはデクリメント又はリセットされなくてもよい（例えば、ストレージプロセスがネットワーク通信チャネルの利用可能な帯域幅を効果的に利用するレートでデータを準備しているという通知）。
【００３９】
カウンタを維持する一例では、ネットワーク通信チャネルがデータ送信要求のデータを送信するのに利用できないことを示す通信非可用性信号が識別されてもよい。第2のカウンタの第2のカウントは、通信非可用性信号に基づきインクリメントされてもよい。第1のカウンタの第1のカウントは、通信非可用性信号に基づきデクリメント又はリセット（例えば、0などのベース値に設定）されてもよい。
【００４０】
一例では、308において、ソースストレージ計算デバイスの計算リソースのストレージプロセスへのリソース割り当ては、第1のカウンタ及び第2のカウンタに基づきストレージプロセスのリアルタイムの処理中に動的に調整されてもよい。例えば、ストレージプロセスのリソース割り当ての動的増加をトリガするのに利用されるリソース割当て閾値が、第1のカウンタに対して定義されてもよい。ストレージプロセスのリソース割り当ての動的な減少をトリガするのに利用されるリソース割当解除閾値が、第2のカウンタについて定義されてもよい。第1のカウンタの第1のカウントがリソース割り当て閾値（例えば、15又は他の何れかの数のカウント）を超過し、第2のカウンタの第2のカウンタが閾値（例えば、0,7又は他の何れかの数）を超過しなかったことに応答して、計算リソースの増加が割り当てられうる（例えば、ストレージプロセスによって使用されるバッファのサイズの増加）。第2のカウンタの第2のカウントがリソース割当て解除閾値（例えば、10又は他の何れかの数のカウント）を超過し、第1のカウンタの第1のカウンタが閾値（例えば、0,3又は他の何れかの数）を超過しなかったことに応答して、計算リソースの減少が実行されてもよい（例えば、ストレージプロセスによって使用されるバッファのサイズの減少）。別の例では、リソース割り当ては、通信可用性インジケータ及び通信非可用性インジケータ（例えば、ネットワークインタフェースからの通信可用性及び非可用性信号に基づき動的に調整されてもよい。一例では、ストレージプロセス及びソースストレージ計算デバイスによってホストされる第2のストレージプロセスは、初期的に同じ量の計算リソースに割り当てられていたが、ストレージプロセスのリソース割り当ては、ストレージプロセス及び第2のストレージプロセスが異なるリソース割り当てを有するように調整されてもよい。
【００４１】
リソース割り当ての調整のためにスムージング及び/又はヒステリシスが実現されてもよい。スムージング及び/又はヒステリシスの例では、ストレージプロセスのためのリソース割当は、第1のカウントがリソース割当閾値を超過したことに基づき動的に増加されてもよい。閾値数の通信非可用性信号が、リソース割り当てが増加した後に以降において受信され、それは、ストレージプロセスがネットワーク通信チャネルの可用性に関して送信用のデータを速すぎで処理しているように、ストレージプロセスが多すぎるリソースに割り当てられることを示すものであってもよい。従って、リソース割当て閾値が調整され（例えば、15から20に変更され）、及び/又はリソース割当てを増加するのに用いられる計算リソース量が調整されてもよい（例えば、リソース割当てを増加するため追加的なメモリの50MBを追加するのと対照的に、単に25MBのメモリがリソース割当てを増加するのに割り当てられてもよい）。
【００４２】
スムージング及び/又はヒステリシスの別の例では、ストレージプロセスのリソース割り当ては、第2のカウントがリソース割り当て解除閾値を超過したことに基づき動的に減少されてもよい。閾値数の通信非可用性信号が、リソース割当てが減少した後に以降に受信されてもよく、それは、ストレージプロセスがネットワーク通信チャネルの可用性を十分に利用するのに十分速くはデータを処理していないように、ストレージプロセスに少なすぎるリソースしか割り当てられていないことを示すものであってもよい。従って、リソース割当て解除閾値が調整され（例えば、10から18に変更され）、及び/又はリソース割当てを減少するのに用いられる計算リソース量が調整されてもよい（例えば、リソース割当てを減少させるためメモリの50MBを削除するのと対照的に、単に10MBのメモリがリソース割当てを減少させるために削除されてもよい）。
【００４３】
図4A〜4Gは、ネットワークフロー制御に基づく動的リソース割り当てのための計算デバイス400の例を示す。図4Aは、ネットワーク通信チャネルを介しネットワークインタフェース420を介してソースストレージ計算デバイス402からデスティネーションストレージ計算デバイス424へのデータを処理及び送信するよう構成される圧縮ストレージプロセス412及び複製ストレージプロセス414をホストするソースストレージ計算デバイス402を示す。圧縮ストレージプロセス412には、第1のバッファ416としてCPUサイクル時間及び/又は他のリソースを利用するため、50MBのメモリが最初に割り当てられてもよい。複製ストレージプロセス414には、第2のバッファ418としてCPUサイクル時間及び/又は他のリソースを利用するため、50MBのメモリが最初に割り当てられてもよい。
【００４４】
ネットワークインタフェース420によって圧縮ストレージプロセス412に提供される通信可用性信号の第1のカウントに対応する第1のカウンタ404が維持されてもよい。圧縮ストレージプロセス412によってネットワークインタフェース420に送信されたデータ送信要求に応答して、ネットワークインタフェース420によって圧縮ストレージプロセス412に提供される通信非可用性信号の第2のカウントに対応する第2のカウンタ406が維持されてもよい。ネットワークインタフェース420によって複製ストレージプロセス414に提供される通信可用性信号の第3のカウントに対応する第3のカウンタ408が維持されてもよい。複製ストレージプロセス414によってネットワークインタフェース420に送信されたデータ送信要求に応答して、ネットワークインタフェース420によって複製ストレージプロセス414に提供される通信非可用性信号の第4のカウントに対応する第4のカウンタ410が維持されてもよい。
【００４５】
圧縮ストレージプロセス412及び/又は複製ストレージプロセス414に対するリソース割当ての動的増加をトリガするのに利用されるリソース割当て閾値426（例えば、15のカウント）は、第1のカウンタ404及び第3のカウンタ408に対して維持されてもよい。圧縮ストレージプロセス412及び/又は複製ストレージプロセス414に対するリソース割当ての動的減少をトリガするのに利用されるリソース割当て解除閾値428（例えば、10のカウント）は、第2のカウンタ406及び第4のカウンタ410に対して維持されてもよい。
【００４６】
図4Bは、通信可用性信号430を圧縮ストレージプロセス412に送信するネットワークインタフェース420を示す。通信可用性信号430は、ネットワーク通信チャネル422が占有されておらず、デスティネーションストレージ計算デバイス424にデータを送信するために利用可能であることを示すものであってもよい。第1のバッファ416は、通信可用性信号430に応答して、圧縮ストレージプロセス412がデータ送信要求として送信するデータを欠いている可能性があるため、第1のカウンタ404の第1のカウントが0から1にインクリメントされ、圧縮ストレージプロセス412がネットワーク通信チャネル422の可用性をより有効に利用するため、送信用のデータを処理するためにより多くの計算リソースを利用可能であってもよいことを示してもよい。
【００４７】
図4Cは、圧縮ストレージプロセス412のためにネットワークインタフェース420からの1つ以上の通信可用性信号440の受信に基づき、16の第1のカウントがリソース割当て閾値426を超過したことを示す。従って、追加的な計算リソース（例えば、CPUサイクル時間の増加、実行優先度の増加、メモリの増加など）が圧縮ストレージプロセス412に割り当てられてもよい。例えば、第1のバッファ416のサイズが50MBから75MBに増加され、増加した第1のバッファ416aを生じさせてもよい。このようにして、圧縮ストレージプロセス412は、増加した第1のバッファ416a、増加したCPUサイクル時間、実行優先度の増加及び/又はネットワーク通信チャネルの可用性をより効果的に利用しうる速度でデータを処理するためのリソースの他の増加を利用してもよい。第1のカウントは、図4Dに示すように、計算リソースの増加した割り当てに基づき0にリセットされてもよい。
【００４８】
図4Dは、複製ストレージプロセス414によってネットワークインタフェース420に送信されたデータ送信要求に応答して、通信非可用性信号450を複製ストレージプロセス414に送信するネットワークインタフェース420を示す。通信非可用性信号450は、ネットワーク通信チャネル422が占有されており、デスティネーションストレージ計算デバイス424にデータを送信するのに利用可能でないことを示すものであってもよい。第4のカウンタ410の第4のカウントは、（例えば、3つの通信非可用性信号を受信したことに基づき）3にインクリメントされ、複製ストレージプロセス414には、複製ストレージプロセス414がネットワーク通信チャネル422を効果的に利用するのに必要とされるよりも多くの計算リソースが割り当てられる可能性があることを示し、従って、クライアントI/O要求をサービスするためなど、他のプロセスに再割り当てされる場合、割り当てられた計算リソースの一部はより良好に利用されうる。
【００４９】
図4Eは、通信可用性信号460を複製ストレージプロセス414に送信するネットワークインタフェース420を示す。第3のカウンタ408の第3のカウントは、通信可用性信号460に基づきインクリメントされてもよい。第4のカウンタの第4のカウント410は、通信可用性信号460に基づき0にリセットされてもよい。なぜなら、第4のカウンタ410は、通信可用性信号と対照的に通信非可用性信号のカウントに対応するためである。
【００５０】
図4Fは、複製ストレージプロセス414のためにネットワークインタフェース420からの1つ以上の通信非可用性信号470の受信に基づき、11の第4のカウントがリソース割り当て解除閾値428を超過することを示す。従って、計算リソースは、複製ストレージプロセス414から割当て解除される（例えば、CPUサイクルの減少、メモリの減少など）。例えば、第2のバッファ418のサイズが50MBから20MBに減少され、第2のバッファ418aが減少される。このようにして、割り当て解除されたリソースは、複製ストレージプロセス414がボトルネックであるネットワーク通信チャネル422のために計算リソースを効果的に利用できないため、ソースストレージ計算デバイス402の他のプロセス、アプリケーション及び/又はサービスに再割当てされてもよい。第4のカウントは、計算リソースの割り当ての減少に基づき、図4Gに示すように0にリセットされてもよい。
【００５１】
図4Gは、閾値数の通信可用性信号480が複製ストレージプロセス414のための計算リソースの減少後に受信されたことに基づき修正されるリソース割当て閾値428を示す。通信可用性信号480は、多すぎる計算リソースが複製ストレージプロセス414から割り当て解除されたことを示すため、リソース割り当て解除閾値428は、10から16に増加され（例えば、各種スムージング及び/又はヒステリシスポリシーに基づき）、これにより、リソース割当て解除のトリガの感度が減じられる。リソース割当て解除量は、25MBの減少から5MBの減少まで調整されてもよい（例えば、各種スムージング及び/又はヒステリシスポリシーに基づき）。例えば、減少した第2のバッファ418は45MBに設定され、調整された第2のバッファ418bが得られる。このようにして、複製ストレージプロセス414は、ネットワーク通信チャネル422のネットワーク帯域幅を効果的に利用するための計算リソースの効率的な割り当てを有しうる。
【００５２】
さらに別の実施例は、ここに提示される1つ以上の技術を実現するよう構成されたプロセッサ実行可能命令を含むコンピュータ可読媒体を含む。これらの方法で考案されたコンピュータ可読媒体又はコンピュータ可読デバイスの例示的な実施例が図5に示され、ここでは、実現形態500は、CD-R、DVD-R、フラッシュドライブ、ハードディスクドライブのプラッタなど、符号化されたコンピュータ可読データ506があるコンピュータ可読媒体508を含む。このコンピュータ可読データ506は、0又は1の少なくとも1つを含むバイナリデータなど、ここに説明される1つ以上の原理に従って動作するよう構成される一組のコンピュータ命令504を含む。いくつかの実施例では、プロセッサ実行可能コンピュータ命令504は、例えば、図3の例示的方法300の少なくとも一部などの方法502を実行するよう構成される。いくつかの実施例では、プロセッサ実行可能命令504は、例えば、図4A〜4Gの例示的なシステムの少なくとも一部などのシステムを実現するよう構成される。このようなコンピュータ可読媒体の多くは、ここに提示された技術に従って動作することが想定されている。
【００５３】
ここに説明されるプロセス、アーキテクチャ及び/又は手順は、ハードウェア、ファームウェア及び/又はソフトウェアにおいて実現されうることが理解されよう。また、ここに提供された規定は、スタンドアローンコンピュータ又はその一部を含み、ストレージシステムとして実現される、あるいは含む何れかのタイプの専用コンピュータ（例えば、ファイルホスト、ストレージサーバ及び/又はストレージサービング機器）及び/又は汎用コンピュータに適用されてもよいことが理解されよう。さらに、ここでの教示は、限定することなく、ネットワーク付属ストレージ環境及び/又はクライアント又はホストコンピュータに直接付属されたストレージエリアネットワーク及びディスクアセンブリを含む各種ストレージシステムアーキテクチャに構成することができる。従って、ストレージシステムは、ストレージ機能を実行するよう構成され、他の機器又はシステムに関連付けられた何れかのサブシステムに加えて、当該アレンジメントを含むよう広く取り上げられるべきである。
【００５４】
いくつかの実施例では、本開示で説明及び/又は図示された方法は、コンピュータ可読媒体の全体又は一部において実現されてもよい。コンピュータ可読媒体は、ここに提示される方法の1つ以上を実現するよう構成されたプロセッサ実行可能命令を含むことができ、その後、コンピュータシステムによって読み取り可能な当該データを格納する何れかの機構を含みうる。コンピュータ可読媒体の具体例は、（Network Attached Storage（NAS）を介しアクセス可能な）（ハード）ドライブ、SAN、ROM、RAM, EEPROM及び/又はフラッシュメモリなどの揮発性及び不揮発性メモリ、CD-ROM、CD-R、CD-RW、DVD、カセット、磁気テープ、磁気ディスクストレージ、光学若しくは非光学データストレージデバイス及び/又はデータを格納するため利用可能な他の何れかの媒体を含む。
【００５５】
本主題は、構造的特徴又は方法的処理に特有の言語で説明されたが、添付の請求項に規定される主題は、必ずしも上記の特定の特徴又は処理に限定されないことが理解されるべきである。むしろ、上記の特定の特徴及び処理は、請求項の少なくともいくつかを実現する例示的な形態として開示される。
【００５６】
実施例の各種処理がここに提供される。処理の一部又は全てが記載される順序は、これらの処理が必ずしも順序に依存することを意味すると解釈されるべきではない。この説明の利点を考慮すると、代替の順序付けが認められるであろう。さらに、ここに提供される各実施例において、必ずしも全ての処理が存在するわけではないことが理解される。また、一部の実施例では、全ての処理が必要というわけではないことが理解されよう。
【００５７】
さらに、請求される主題は、開示された主題を実現するようコンピュータを制御するため、ソフトウェア、ファームウェア、ハードウェア又はそれらの何れかの組み合わせを生成するための標準的なアプリケーション技術又はエンジニアリング技術を利用する方法、装置又は製品として実現される。ここに用られる用語“製品”は、何れかのコンピュータ可読デバイス、キャリア又は媒体からアクセス可能なコンピュータアプリケーションを包含することを意図している。当然のことながら、請求された主題の範囲又は精神から逸脱することなく、当該構成に対して多くの変更がなされうる。
【００５８】
本出願で使用されるような用語“コンポーネント”、“モジュール”、“システム”、“インタフェース”などは、一般にコンピュータ関連エンティティ、ハードウェア、ハードウェアとソフトウェアとの組み合わせ又は実行中のソフトウェアを参照することが意図される。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、アプリケーション又はコンピュータを含む。例えば、コントローラ上で実行されるアプリケーションとコントローラとの双方がコンポーネントとすることができる。プロセス又は実行スレッド及びコンポーネント内に存在する1つ以上のコンポーネントは、1つのコンピュータ上にローカライズされてもよく、または2つ以上のコンピュータ間に分散されてもよい。
【００５９】
さらに、“例示的な”とは、具体例、事例、図示等として役立つことを意味するためここでは使用され、必ずしも有利であるとは限らない。本出願において使用されるような“又は”は、排他的な“又は”ではなく、内包的な“又は”を意味することが意図される。さらに、本出願で使用される“a”及び“an”は、他に明記されない限り、または単数形に向けられる文脈から明らかでない限り、“1つ以上”を意味すると一般に解釈される。また、A及びBの少なくとも1つ及び/又は類似は、一般に、A又はB及び/又はA及びBの両方を意味する。さらに、“含む”、“有する”、“有する”、“備える”又はそれらの変形が使用される場合、そのような用語は、用語“含む”と同様の方法で内包的であることが意図される。
【００６０】
請求された主題の範囲又は精神から逸脱することなく、本開示に対して多くの変更がなされうる。他に特定されない限り、“第1”、“第2”などは、時間的態様、空間的態様、順序付けなどを意味することを意図するものではない。むしろ、そのような用語は、単に機能、要素、アイテムなどの識別子、名前などとして用いられる。例えば、第1の情報セット及び第2の情報セットは、情報セットA及び情報セットB、または2つの異なる又は2つの同一の情報セット又は同じセットの情報に一般に対応する。
【００６１】
また、本開示は1つ以上の実施例に関して図示及び説明されたが、本明細書及び添付の図面の読解及び理解に基づき、当業者に等価な変更及び修正が想到しうる。本開示は、そのような修正及び変更の全てを含み、以下の請求項の範囲によってのみ限定される。特に、上述したコンポーネント（例えば、要素、リソースなど）によって実行される様々な機能に関して、そのようなコンポーネントを記述するために使用される用語は、他に示されない限り、開示された構造と構造的に等価ではないが、記載されたコンポーネント（例えば、機能的に等価である）の指定された機能を実行する何れかのコンポーネントに対応すると意図される。さらに、本開示の特定の特徴が複数の実現形態の1つのみに関して開示されたが、そのような特徴は、何れか所与又は特定のアプリケーションに望ましく有利でありうるような他の実現形態の1つ以上の他の特徴と組み合わされてもよい。
【図１】
0006492226.tif 000002
【図２】
0006492226.tif 000003
【図３】
0006492226.tif 000004
【図４Ａ】
0006492226.tif 000005
【図４Ｂ】
0006492226.tif 000006
【図４Ｃ】
0006492226.tif 000007
【図４Ｄ】
0006492226.tif 000008
【図４Ｅ】
0006492226.tif 000009
【図４Ｆ】
0006492226.tif 000010
【図４Ｇ】
0006492226.tif 000011
【図５】
0006492226.tif 000012