特許第6017684号(P6017684)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴイエムウェア インコーポレイテッドの特許一覧

特許6017684リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理
<>
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000007
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000008
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000009
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000010
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000011
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000012
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000013
  • 特許6017684-リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6017684
(24)【登録日】2016年10月7日
(45)【発行日】2016年11月2日
(54)【発明の名称】リソースプーリングを利用した、要求ベースによるストレージの分散型クオリティ・オブ・サービス管理
(51)【国際特許分類】
   G06F 9/50 20060101AFI20161020BHJP
   G06F 9/46 20060101ALI20161020BHJP
   G06F 13/10 20060101ALI20161020BHJP
   G06F 3/06 20060101ALI20161020BHJP
【FI】
   G06F9/46 462Z
   G06F9/46 350
   G06F13/10 340A
   G06F3/06 301J
【請求項の数】18
【全頁数】23
(21)【出願番号】特願2015-515211(P2015-515211)
(86)(22)【出願日】2013年5月30日
(65)【公表番号】特表2015-525397(P2015-525397A)
(43)【公表日】2015年9月3日
(86)【国際出願番号】US2013043473
(87)【国際公開番号】WO2013181464
(87)【国際公開日】20131205
【審査請求日】2015年10月21日
(31)【優先権主張番号】13/485,615
(32)【優先日】2012年5月31日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】グラティ、アジャイ
(72)【発明者】
【氏名】シャンムガナサン、ガネーシャ
(72)【発明者】
【氏名】バルマン、ピーター ジョセフ
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2006−236351(JP,A)
【文献】 特開2007−257097(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 3/06
G06F 9/46
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
共通リソースにアクセスするためにホストコンピュータ上で動作中のクライアントのためのクオリティ・オブ・サービス(QoS)を提供する方法であって、
前記共通リソースの現在のキャパシティを、前記クライアントが前記共通リソースにアクセスする際のレイテンシの全体的な平均に基づいて計算すること、
前記共通リソースの全体的な予約値をクライアント間で分配して前記ホストコンピュータ上で動作中のクライアントの動的な予約値を計算することにより、各クライアントの動的な予約値を取得することであって、前記分配することは、クライアントに分配される全体的な予約値を、共通リソースに対するクライアントの要求応じて一時的に制限することを含む、前記動的な予約値を取得すること、
計算された現在のキャパシティを、前記クライアントの動的な予約値を用いて前記ホストコンピュータ上で動作中のクライアント間で割り振ることを備え、
前記クライアント間の共通リソースに対する前記全体的な予約値を分配することは、
親ノードおよび子ノードの階層構造を通じて、前記階層構造のルートノードの全体的な予約値が、前記階層構造のレベルごとの分配処理で前記階層構造のより下位のノードに分配されるように、前記全体的な予約値を分配することを含む、方法。
【請求項2】
請求項1に記載の方法であって、
前記共通リソースの計算された現在のキャパシティを割り振ることは、
前記共通リソースの計算された現在のキャパシティを前記クライアント間で、前記クライアントに割り当てられたシェアに基づいて分配することを含む、方法。
【請求項3】
請求項1に記載の方法であって、
特定のホストコンピュータ上で動作中の各クライアントの前記要求を、前記特定のホストコンピュータから前記共通リソースにアクセスする際の特定のホストコンピュータのレイテンシの平均と、前記クライアントから前記共通リソースにアクセスするリクエストに応答する入力または出力の平均回数を使って計算することをさらに備える方法。
【請求項4】
請求項3に記載の方法であって、
前記計算された要求を、前記ホストコンピュータの各々によってアクセス可能な共有ファイルに保存すること、または前記計算された要求を、前記特定のホストコンピュータと接続された他のホストコンピュータに転送することをさらに備える方法。
【請求項5】
請求項1に記載の方法であって、
前記共通リソースの計算された現在のキャパシティを特定のホストコンピュータに割り当てることをさらに備え、
該割り当てることは、
前記特定のホストコンピュータのホストキューのデプスを調整することを含み、
前記ホストキューが、前記特定のホストコンピュータ上で動作中の前記クライアントからの前記共通リソースに対する未処理のリクエストを保存するために使用される、方法。
【請求項6】
請求項1に記載の方法であって、
前記共通リソースの前記現在のキャパシティを計算することは、
前記共通リソースの前記現在のキャパシティを、前記レイテンシの全体的な平均、平滑化パラメータ、およびリソース輻輳閾値を使って計算することを含
前記平滑化パラメータは、計算される前記現在のキャパシティの以前の値と比較した計算される前記現在のキャパシティの変動を平滑化するためのパラメータであり、
前記リソース輻輳閾値は、共通リソースの最大レイテンシを示す、方法。
【請求項7】
システムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに動作的に接続された複数のクライアントと、
共通リソースにアクセスするための前記クライアントからのリクエストを保存するホストキューを備えるリソースインタフェースと、
前記少なくとも1つのプロセッサに動作的に接続されたリソースプールモジュールであって、
前記クライアントが前記共通リソースにアクセスする際のレイテンシの全体的な平均に基づいて前記共通リソースの現在のキャパシティを計算するように構成された第一の構成要素と、
前記共通リソースの全体的な予約値をクライアント間で分配して各クライアントの動的な予約値を計算することにより、各クライアントの動的な予約値を取得するように構成された第二の構成要素であって、前記分配することは、クライアントに分配される全体的な予約値を、共通リソースに対するクライアントの要求応じて一時的に制限することを含み、前記第二の構成要素は、親ノードおよび子ノードの階層構造を通じて、前記階層構造のルートノードの全体的な予約値が、前記階層構造のレベルごとの分配処理で前記階層構造のより下位のノードに分配されるように、前記全体的な予約値を分配するようにさらに構成されている、前記第二の構成要素と、
を含む前記リソースプールモジュールと、
前記リソースプールモジュールに動作的に接続されたスケジューラであって、計算された現在のキャパシティを、前記クライアントの動的な予約値を用いて割り振るように構成されているスケジューラと
を備える、システム。
【請求項8】
請求項7に記載のシステムであって、
前記スケジューラが、前記共通リソースの計算された現在のキャパシティを前記クライアント間で、前記クライアントに割り当てられたシェアに基づいて分配するように構成されている、システム。
【請求項9】
請求項7に記載のシステムであって、
前記リソースプールモジュールが、各クライアントの前記要求を、ホストコンピュータから前記共通リソースにアクセスする際の特定のホストコンピュータのレイテンシの平均と、前記クライアントからの前記共通リソースにアクセスするリクエストに応答した入力または出力の平均回数を使って計算するように構成されている、システム。
【請求項10】
請求項9に記載のシステムであって、
前記リソースプールモジュールが、計算された要求を、前記他のホストコンピュータによってアクセス可能な共有ファイルの中に保存するようにさらに構成されているか、または前記計算された要求を前記ホストコンピュータに接続された他のホストコンピュータに転送するように構成されている、システム。
【請求項11】
請求項7に記載のシステムであって、
前記リソースプールモジュールが、ホストコンピュータのホストキューのデプスを、前記共通リソースの前記計算された現在のキャパシティの一部を前記ホストコンピュータに割り当てるために調節するように構成され、
前記ホストキューが、前記クライアントからの前記共通リソースに対する未処理のリクエストを保存するために使用される、システム。
【請求項12】
請求項7に記載のシステムであって、
前記リソースプールモジュールが、前記共通リソースの前記現在のキャパシティを、前記レイテンシの全体的な平均、平滑化パラメータ、およびリソース輻輳閾値を使って計算するように構成され、
前記平滑化パラメータは、計算される前記現在のキャパシティの以前の値と比較した計算される前記現在のキャパシティの変動を平滑化するためのパラメータであり、
前記リソース輻輳閾値は、共通リソースの最大レイテンシを示す、システム。
【請求項13】
共通リソースにアクセスするためにホストコンピュータにおけるクライアントのためのクオリティ・オブ・サービスを提供するプログラム命令を含むコンピュータ可読ストレージ媒体であって、
前記ホストコンピュータの1つまたは複数のプロセッサにより前記プログラム命令が実行されると、前記1つまたは複数のプロセッサに、
前記共通リソースの現在のキャパシティを、前記クライアントが前記共通リソースにアクセスする際のレイテンシの全体的な平均に基づいて計算すること、
前記共通リソースの全体的な予約値をクライアント間で分配して前記ホストコンピュータ上で動作中のクライアントの動的な予約値を計算することにより、各クライアントの動的な予約値を取得することであって、前記分配することは、クライアントに分配される全体的な予約値を、共通リソースに対するクライアントの要求応じて一時的に制限することを含む、前記動的な予約値を取得すること、
前記計算された現在のキャパシティを、前記クライアントの動的な予約値を用いて前記ホストコンピュータ上で動作中のクライアント間で割り振ること
を含むステップを実行させ、
前記クライアント間の共通リソースに対する前記全体的な予約値を分配することは、
親ノードおよび子ノードの階層構造を通じて、前記階層構造のルートノードの前記全体的な予約値が、前記階層構造のレベルごとの分配処理で前記階層構造のより下位のノードに分配されるように、前記全体的な予約値を分配することを含む、コンピュータ可読ストレージ媒体。
【請求項14】
請求項13に記載のコンピュータ可読ストレージ媒体であって、
前記共通リソースの前記計算された現在のキャパシティを割り振ることは、
前記共通リソースを前記クライアント間で、前記クライアントに割り当てられたシェアに基づいて分配することを含む、コンピュータ可読ストレージ媒体。
【請求項15】
請求項13に記載のコンピュータ可読ストレージ媒体であって、
前記ステップが、
特定のホストコンピュータ上で動作中の各クライアントの前記要求を、前記特定のホストコンピュータから前記共通リソースにアクセスする際の特定のホストコンピュータのレイテンシの平均と、前記クライアントから前記共通リソースにアクセスするリクエストに応答する入力または出力の平均回数を使って計算することをさらに含む、コンピュータ可読ストレージ媒体。
【請求項16】
請求項13に記載のコンピュータ可読ストレージ媒体であって、
前記ステップが、
前記ホストコンピュータの各々によってアクセス可能な共有ファイル内の前記計算された要求を記憶することをさらに含む、コンピュータ可読ストレージ媒体。
【請求項17】
請求項13に記載のコンピュータ可読ストレージ媒体であって、
前記ステップは、
前記共通リソースの前記計算された現在のキャパシティの一部を特定のホストコンピュータに割り当てることをさらに備え、
前記割り当てることは、
前記特定のホストコンピュータのホストキューのデプスを調整することを含み、
前記ホストキューが、前記特定のホストコンピュータ上で動作中の前記クライアントからの前記共通リソースに対する未処理のリクエストを保存するために使用される、コンピュータ可読ストレージ媒体。
【請求項18】
請求項13に記載のコンピュータ可読ストレージ媒体であって、
前記共通リソースの前記現在のキャパシティを計算することは、
前記共通リソースの前記現在のキャパシティを、前記レイテンシの全体的な平均、平滑化パラメータ、およびリソース輻輳閾値を使って計算することを含
前記平滑化パラメータは、計算される前記現在のキャパシティの以前の値と比較した計算される前記現在のキャパシティの変動を平滑化するためのパラメータであり、
前記リソース輻輳閾値は、共通リソースの最大レイテンシを示す、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【0001】
ネットワークコンピュータのためのリソース、例えばデータストレージファシリティの共有は、保守および運転費用を低減化し、個々のリソースの使用に関する柔軟性を実現し、リソース管理を単純化することによって、効率を改善できる。共有ストレージに関して、利点には、データ統合、データへのユニバーサルアクセス、容易なストレージ管理、仮想化環境のための仮想マシン(VM:virtual machine)のライブマイグレーション(live migration)のサポートが含まれる。
【0002】
リソース共有の重要な一面がクオリティ・オブ・サービス(QoS:Quality of Service)であり、これは共有リソースが複数のユーザまたはクライアント間である方針に従って割り振られるというリソース管理方式を指す。この方針は、サービスの最小および/または最大レベルを(例えば、共有リソースのパーセンテージとして)保証するものであってもよい。また、文献の中で「使用比率配分(weight)」とも呼ばれる、割り当てられたリソースの「シェア」に従ってサービスを分配し、各クライアントに、割り当てられたシェアと同じ比率でそのピア(peer)と同等のレベルのサービスが提供されるようにすることも一般的である。これらのアプローチを、特定の方針のために組み合わせることが可能である。それゆえ、QoSにより、サービスを均等に分配し、または選択されたアプリケーション、ユーザ、またはデータフローに任意で割当の優先順位を付けて、共有ストレージ環境におけるワークロードパフォーマンスを管理できることが提案される。
【発明の概要】
【課題を解決するための手段】
【0003】
共通リソースにアクセスするためにホストコンピュータ上で動作中のクライアントにクオリティ・オブ・サービス(QoS)を提供するシステムおよび方法は、ホストコンピュータのうちの少なくとも1つのリソースプールモジュールとローカルスケジューラを使用する。リソースプールモジュールは、共通リソースに関する各クライアントのエンタイトルメントを、共通リソースの現在のキャパシティと共通リソースに対するクライアントの要求に基づいて計算するように動作する。これに加えて、リソースプールモジュールは、共通リソースの計算された現在のキャパシティの一部を特定のホストコンピュータに、その特定のホストコンピュータ上で動作中の各クライアントの計算されたエンタイトルメントに基づいて割り当てるように動作する。ローカルスケジューラは、計算された現在のキャパシティの一部を、その特定のホストコンピュータ上で動作中のクライアント間で割り振るように動作する。
【0004】
本発明のある実施形態による、共通リソースにアクセスするためにホストコンピュータ上で動作中のクライアントのためにQoSを提供する方法は、クライアントが共通リソースにアクセスする際のレイテンシの全体的な平均に基づいて共通リソースの現在のキャパシティを計算するステップと、共通リソースに関する各クライアントのエンタイトルメントを、計算された現在のキャパシティと共通リソースに対するクライアントの要求に基づいて計算するステップと、共通リソースの計算された現在のキャパシティの一部を特定のホストコンピュータに、その特定のホストコンピュータ上で動作中の各クライアントの計算されたエンタイトルメントに基づいて割り当てるステップと、計算された現在の能力の一部を特定のホストコンピュータ上で動作中のクライアント間で割り振るステップと、を含む。いくつかの実施形態において、この方法のステップは、コンピュータ可読ストレージ媒体に含まれるプログラム命令がホストコンピュータの1つまたは複数のプロセッサによって実行されるときに行われる。
【0005】
本発明のある実施形態によるシステムは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに動作的に接続された複数のクライアントと、共通リソースにアクセスするためのクライアントのリクエストを保存するホストキューを備えるリソースインタフェースと、少なくとも1つのプロセッサに動作的に接続されたリソースプールモジュールと、リソースプールモジュールに動作的に接続されたスケジューラと、を含む。リソースプールモジュールは、クライアントが共通リソースにアクセスする際のレイテンシの全体的な平均に基づいて共通リソースの現在のキャパシティを計算するように構成された第一の構成要素と、共通リソースに関する各クライアントのエンタイトルメントを、計算された現在のキャパシティと共通リソースに対するクライアントの要求に基づいて計算するように構成された第二の構成要素と、共通リソースの計算された現在のキャパシティの一部を特定のホストコンピュータに、各クライアントの計算されたエンタイトルメントを使って割り当てるように構成された第三の構成要素と、を含む。スケジューラは、計算された現在のキャパシティの一部を、ホストコンピュータ上で動作中の少なくとも1つのクライアント間で割り振るように構成されている。
【0006】
本発明の実施形態の他の態様と利点は、本発明の原理の例として示される以下の詳細な説明を、添付の図面と併せて読むことによって明らかとなるであろう。
【図面の簡単な説明】
【0007】
図1】本発明のある実施形態によるネットワークコンピュータシステムのブロック図である。
図2】本発明のある実施形態による図1のネットワークコンピュータシステムのホストコンピュータのブロック図である。
図3】本発明のある実施形態による、異なるVM集合を示すためのネットワークコンピュータの仮装マシン(VM)、ホストコンピュータ、ストレージの概略図である。
図4】本発明のある実施形態による、VMを用いたリソースプール階層構造の概略図である。
図5】本発明のある実施形態による、ホストコンピュータに含められたストレージリソースプール(SRP:storage resource pool)モジュールのブロック図である。
図6図4に示されるリソースプール階層構造の別の概略図である。
図7】本発明のある実施形態による、異なるデータストアに基づいて分割されるリソースプール階層構造を示すブロック図である。
図8】本発明のある実施形態による、共通リソースにアクセスするためにホストコンピュータ上で動作中のクライアントのためにクオリティ・オブ・サービス(QoS)を提供する方法のフロー図である。
【発明を実施するための形態】
【0008】
説明文全体を通じて、同様の要素を特定するために同様の参照番号が使用されている場合がある。
容易に理解されるように、本明細書で一般的に説明され、添付の図面に示される実施形態の構成要素は、様々な異なる構成に配置、構成することができる。それゆえ、図面に示されているような各種の実施形態に関する以下のより詳しい説明は、本願の範囲を限定しようとするものではなく、各種の実施形態を代表しているにすぎない。実施形態の様々な態様が図面に示されているが、図面は、特にことわりがないかぎり、必ずしも正確な縮尺で描かれているわけではない。
【0009】
本発明は、その主旨または本質的な特性から逸脱することなく、他の具体的な形態で実施してもよい。説明されている実施形態は、あらゆる点において、あくまでも例示であり、限定的とはみなされない。したがって、本発明の範囲はこの詳細な説明ではなく、付属の特許請求の範囲によって示される。特許請求の範囲の意味と均等性の範囲内に含まれるすべての変更形態は、その範囲に包含される。
【0010】
本明細書を通じた特徴、利点または同様の文言への言及は、本発明により実現可能な特徴と利点のすべてが、本発明のいずれか1つの実施形態にあるべきであるか、またはあることを暗示していない。むしろ、特徴と利点に言及する文言は、ある実施形態に関連して説明されている具体的な特徴、利点、または特性が本発明の少なくとも1つの実施形態に含められることを意味すると理解する。それゆえ、本明細書を通じた機能と利点に関する議論および同様の文言は、同じ実施形態を指していることもあるが、必ずしもそうとはかぎらない。
【0011】
さらに、説明されている本発明の特徴、利点、特性は、1つまたは複数の実施形態の中で任意の適当な方法で組み合わせてもよい。当業者であれば、本明細書の説明から、本発明が、特定の実施形態の具体的な特徴または利点のうちの1つまたは複数がなくても実施可能であることがわかるであろう。また別の場合には、ある実施形態において、本発明のすべての実施形態の中にあるとはかぎらない追加の機能と利点が認められ得る。
【0012】
本明細書全体における「1つの実施形態」、「ある実施形態」への言及または同様の文言は、明記された実施形態に関連して説明された特定の特徴、構造または特性が、本発明の少なくとも1つの実施形態に含められることを意味する。それゆえ、本明細書中の「1つの実施形態において」、「ある実施形態において」、および類似の文言はすべてが同じ実施形態を指していることもあるが、必ずしもそうとはかぎらない。
【0013】
リソース管理に関する従来のクオリティ・オブ・サービス(QoS)技術では、異なるインフラストラクチャおよび/または目的を有する異なる企業に対応するのに十分な管理が提供されない。これに加えて、QoS技術の中には中央集中的スケジューラを必要とするものがあり、これによってQoSメカニズムが一層複雑化する可能性があり、またシステム全体の不具合もさらに起きやすくなり得る。
【0014】
従来のQoS技術の限界と問題を鑑み、中央集中的スケジューラ(centralized performance)を使用せずに、共有リソース環境中のワークロードパフォーマンス(workload performance)に対する管理を維持するためのQoS管理が求められている。
【0015】
ここで、図1を参照すると、本発明のある実施形態によるネットワークコンピュータシステム100が示されている。図1に示されるように、ネットワークコンピュータシステムは、ネットワーク102と、ネットワークに接続された多数のホストコンピュータ104A、104B...104Nと、同じくネットワークに接続された共有ストレージ106と、を含む。それゆえ、ホストコンピュータ104の各々は、ネットワークを介して共有ストレージにアクセスし、ストレージによって提供されるリソースを他のホストコンピュータと共有できる。その結果、任意のホストコンピュータ上で実行中の任意のプロセスが、ネットワークを介してストレージにアクセスできる。より詳しく説明するように、図の実施形態では、分散されたホストコンピュータは、要求ベースのQoSメカニズムを実行することによって、ホストコンピュータにより共有されているストレージリソースに関するワークロードパフォーマンスに対する管理を維持する。
【0016】
ネットワーク102は、ネットワークに接続されたデバイス間の通信を可能にする任意の種類のコンピュータネットワークまたはネットワークの組み合わせであってよい。ネットワーク102は、インターネット、広域ネットワーク(WAN:wide area network)、ローカルエリアネットワーク(LAN:local area network)、ストレージエリアネットワーク(SAN:storage area network)、ファイバチャネルネットワークおよび/またはその他のネットワークを含んでいてもよい。ネットワーク102は、ストレージアレイとの通信に適したプロトコル、例えばFibre Channel、iSCSI、FCoE、HyperSCSI等をサポートするように構成されていてもよい。
【0017】
ホストコンピュータ104A、104B...104Nは、1つまたは複数のクライアントをホストまたはサポートする物理的コンピュータシステムであり、これによってクライアントは物理的コンピュータシステム上で動作する。ホストコンピュータは、データセンタで一般的に見られるサーバであってもよい。本明細書において、「クライアント」という用語は、コンピュータシステム上で実行可能な任意のソフトウェアエンティティ、例えばソフトウェアアプリケーション、ソフトウェアプロセスまたは仮想マシン(VM)である。ホストコンピュータについては、以下により詳しく説明する。
【0018】
ストレージ106は、ホストコンピュータ104A、140B...104Nのためのデータを保存するために使用され、これにはコンピュータシステムに接続された他の任意のストレージデバイスと同様にアクセスできる。ある実施形態において、ストレージは、ホストコンピュータ上で動作中のクライアント等のエンティティにより、任意のファイルシステム、例えば仮想マシンファイルシステム(VMFS;virtual machine file system)またはネットワークファイルシステム(NFS:network file system)等を使用してアクセス可能である。ストレージは、1つまたは複数のコンピュータデータストレージデバイス108を含み、これは、例えばソリッドステートデバイス(SSD:solid−state device)、ハードディスクまたはこの2つの組み合わせ等、任意の種類のストレージデバイスとすることができる。ストレージデバイスは、ネットワークアタッチトストレージ(NAS:network−attached storage)および/またはストレージエリアネットワーク(SAN)の構成要素として動作してもよい。ストレージはストレージ管理モジュール110を含み、これはストレージの動作を管理する。ストレージ管理モジュールはリクエストキュー112、すなわちストレージに対するペンディングの入力/出力(IO)リクエストのリストを保持する。ある実施形態において、ストレージ管理モジュール110は、ストレージの1つまたは複数のコンピュータシステム(図示せず)上で実行されるコンピュータプログラムである。ストレージは、複数のデータストアまたはロジカルユニットナンバー(LUN:logical unit number)をサポートしていてもよい。ストレージ106はどのような種類のコンピュータデータストレージであってもよいが、ストレージ106は本明細書においては、ストレージアレイとして説明する。
【0019】
次に図2を参照すると、本発明のある実施形態によるホストコンピュータ104Aの構成要素が示されている。他のホストコンピュータ104B...104Nはホストコンピュータ104Aと同様である。それゆえ、ホストコンピュータ104Aを他のホストコンピュータの例として使用する。図2において、ホストコンピュータ104Aの各種の構成要素間の物理的接続は示されていない。図の実施形態では、ホストコンピュータ104Aは、多数のクライアント220A、220B...220Nをサポートするように構成され、これらはVMである。ホストコンピュータによってサポートされるVMの数は、1〜100超のいずれであってもよい。ホストコンピュータによってサポートされるVMの正確な数は、ホストコンピュータの物理的リソースによってのみ限定される。VMは、ホストコンピュータのハードウェアリソースの少なくともいくつかを共有し、これにはシステムメモリ222、1つまたは複数のプロセッサ224、ストレージインタフェース226、ネットワークインタフェース228が含まれる。システムメモリ222は、ランダムアクセスメモリ(RAM:ramdom access memory)であってもよく、ホストコンピュータの一次メモリである。プロセッサ224は、例えばサーバで一般的に見られる中央処理ユニット(CPU:central processing unit)等の、任意の種類のプロセッサとすることができる。ストレージインタフェース226は、ホストコンピュータがストレージアレイ106と通信できるようにするインタフェースである。例えば、ストレージインタフェースは、ホストバスアダプタまたはネットワークファイルシステムインタフェースであってもよい。ネットワークインタフェース228は、ホストコンピュータがネットワーク102に接続された他のデバイスと通信できるようにするインタフェースである。例えば、ネットワークインタフェースはネットワークアダプタであってもよい。
【0020】
図の実施形態において、VM 220A、220B...220Nは仮想マシンコントローラ230の上で動作し、これはVMによるホストコンピュータ104Aのハードウェアリソースの共有を可能にするソフトウェアインタフェースレイヤである。しかしながら、他の実施形態において、VMの1つまたは複数は入れ子構造とすることができ、すなわち、あるVMが他のVM内で動作する。例えば、VMのうちの1つは、あるVMの中で動作してもよく、これはまた他のVM内で動作する。仮想マシンモニタは、ホストコンピュータのオペレーティングシステムの上で、またはホストコンピュータのハードウェア上で直接動作してもよい。いくつかの実施形態において、仮想マシンモニタ(virtual machine monitor)は、ホストコンピュータのハードウェア構成要素の上にインストールされたハイパーバイザの上で動作する。仮想マシンモニタのサポートにより、VMは仮想化されたコンピュータシステムを提供し、これはホストコンピュータとは、および相互に別である外観を呈する。各VMは、ゲストオペレーティングシステム232と1つまたは複数のゲストアプリケーション234を含む。ゲストオペレーティングシステムはそれぞれのVMのマスタコントロールプログラムであり、とりわけ、ゲストオペレーティングシステムはソフトウェアプラットフォームを形成し、その上でゲストアプリケーションが動作する。
【0021】
ネットワーク102に接続された他の任意のコンピュータシステムと同様に、VM 220A、220B...220Nはそのネットワーク102に接続された他のコンピュータシステムと、ホストコンピュータ104Aのネットワークインタフェース228を使って通信できる。これに加えて、VMはホストコンピュータのストレージインタフェース226を使ってストレージアレイ106にアクセスできる。それゆえ、ホストコンピュータのVMは、ホストコンピュータのためのストレージアレイによって提供される共有ストレージリソースを求めて競合する。同様に、ホストコンピュータは共有ストレージリソースを求めて他のホスト104B...140Nと競合する。
【0022】
ネットワークコンピュータシステム100のホストコンピュータ140A、104B...104Nの各々は、図2に示されているように、ホストコンピュータのストレージインタフェース226の命令発行キュー236の中にストレージアレイ106における未処理のIOリクエストを特定の最大数まで保持できる。特定のホストコンピュータの命令発行キューの大きさ(本明細書では、「ホストキューデプス(host queue depth)」ともいう。)は、ストレージアレイが、現在その特定のホストコンピュータに割り振られているIOリクエストを処理するキャパシティを反映する。以下により詳しく説明するように、ホストコンピュータの命令発行キューは、ストレージアレイによって提供されるストレージリソースに関するQoS制御を実行するために使用される。
【0023】
共有される共通リソース、すなわちストレージアレイ106によって提供される共有ストレージリソースを求める競合によって、異なるエンティティ間、例えばホストコンピュータ104A、104B...104NによってホストされるVM等間の共有ストレージリソースの分配を制御するために、ネットワークコンピュータシステム100内のQoS管理メカニズムが必要である。共有リソースが異なるVM間で均等に分けられる場合は、共有ストレージリソースの分配工程は簡単であることもある。しかしながら、特定の状況では、VMのいくつかが他のVMより多くの量の共有ストレージリソースを必要とすることもある。本明細書において、共有ストレージリソースの量は、1秒当たりのIO動作の回数(IOPS:IP operations per second)で測定でき、IOPSの数値が大きいほど、共有ストレージリソースへのアクセスが多いことを意味する。これに加えて、異なるVMのニーズは、共有ストレージリソースに対するVMの要求の変化に基づいて変わり得る。さらに、特定の状況では、異なるホストコンピュータ上で動作中のVMが異なるグループに属することもあり、その共有ストレージリソースへのアクセスに関するニーズと要求事項は異なる。このようなVMの集合の一例を、以下に図3を参照しながら説明する。
【0024】
図3は、ストレージアレイ106に接続されて、ストレージアレイにより提供されるストレージリソースを共有するホストコンピュータ104Aと104Bを示す。ホストコンピュータ104Aは、VM220Aと220Bを含む。ホストコンピュータ104Bは、VM220Cと220Dを含む。この例では、ホストコンピュータ上で動作中のVM220Aとホストコンピュータ104B上で動作中のVM220Cは、ある企業の営業部門に属する。ホストコンピュータ104A上で動作中のVM220Bとホストコンピュータ104B上で動作中のVM220Dは、その企業の財務部門に属する。営業部門のVM220Aと220Cは異なる大陸での営業を取り扱っていてもよく、それゆえ、異なる時間帯での要求のピークと谷に基づいて、全体で1,000IOPSの予約が必要である。財務部門のVM220Bと220Dはバックグラウンドでデータ分析を行っていてもよく、それゆえ、重要な営業のVMに対するその影響を削減するために、500IOPSの総スループットに制限される。これに加えて、この500IOPSをVM間でその重要性に基づいて1:2の比率で割り当てたいと思う人がいる場合もある。これは、シェア制御として知られる。本発明の実施形態によるネットワークコンピュータシステム100のQoS管理メカニズムは、異なる集合のVMの要求事項に対応するための共有ストレージリソースのロバストなQoS制御を提供するように設計され、QoSメカニズムを一層複雑化する可能性があり、またシステム全体の不具合をさらに起こしやすくし得る中央集中的なリソーススケジューラを設ける必要がない。後述のように、ネットワークコンピュータシステムのQoS管理メカニズムは、ストレージリソースプール(SRP)の概念を使って、ネットワークコンピュータシステム全体を通じて分散されたクライアントのためのQoSを管理する。それゆえ、ネットワークコンピュータシステムのQoS管理メカニズムは、本明細書において、SRPベースのQoS管理メカニズムと呼ぶ。
【0025】
SRPベースのQoS管理メカニズムによって、ユーザ、例えばシステム管理者は、スループット予約値(下限)、制限値(上限)、シェア(案分比例的共有)を使って所望のQoSを指定することができる。これらの数値は、リソースプール階層構造のいずれのノード、例えばリソーリソースプール階層構造内の個々のVMおよび/または関係するVMの集合についても設定でき、これらはリソースプール階層構造の中の、VMより高い位置にあるノードによって概念的に指定される。予約値は、リソースプール階層構造の中のノード、例えばVMやVMの集合が受け取らなければならない共有リソースの最低量を明示する絶対的な保証である。制限値は、リソースプール階層構造の中のノードに対して行われるべき最大割り振りを明示する。これらの数値は、そのサービスレベル目標(SLO:service level objective)に基づいて契約により設定されたIOPSに関する厳密な分離の実行とテナント(tenant)の制限に有益である。シェアは、リソースプール階層構造の中のノード間の相対的重要性を表す尺度であり、キャパシティに限りがある場合に、割り振りに優先順位を付けるために使用される。
【0026】
SRPベースのQoS管理メカニズムによればまた、ユーザはネットワークコンピュータシステム100の中のホストコンピュータ104A、104B...104N上で動作中のクライアントをストレージリソースプール(すなわち、SRP)にグループ分けして、特定のグループまたはSRPの中のクライアントがリソース割り振りの単独のユニットとして扱えるようにすることができる。その後、これらのユニットを合体させて、より大きなリソースプールまたはグループにし、リソースプール階層構造を作ることができる。クライアントのクループ分けは、クライアントが動作中の基本のホストコンピュータに関係なく行うことができる。それゆえ、ある特定のホストコンピュータ上で動作中のクライアントは、異なるリソースプールまたはグループに属していてもよい。このような分散型アーキテクチャは、仮想化データセンタにおいて非常に一般的である。リソースプール階層構造を定義する情報はストレージアレイ106の中に保存された共有ファイルの中に保存されてもよく、それによってネットワークコンピュータシステム内の各ホストコンピュータはこの情報にアクセスできる。あるいは、リソースプール階層構造の情報はネットワークコンピュータシステム内の他のホストコンピュータにブロードキャストされてもよく、それによって各ホストコンピュータが他のすべてのホストコンピュータからのこれらの数値を把握できる。
【0027】
VM220A、220B、220C、および220Dを有するリソースプール階層構造の例が図4に示されている。図4に示されるリソースプール階層構造は、4つのVM220A、220B、220C、および220Dを含み、これらはリソースプール階層構造の最も下位のノードとして見ることができる。この例では、VM220Aと220Cがノード402Aにより示されるように1つにまとめられ、これは2つのVM220Aと220Cの親ノードとして見ることができる。それゆえ、2つのVM220Aと220Cはノード402Aの子供、すなわち子ノードとして見ることができる。同様に、VM220Bと220Dは、他のノード402Bにより示されているように1つにまとめられ、これは2つのVM220Bと220Dの親ノードとして見ることができる。それゆえ、2つのVM 220Bと220Dはノード402Bの子供、すなわち子ノードとして見ることができる。2つのノード402Aと402Bはさらに、ノード404で示されているように1つにまとめられ、これはリソースプール階層構造のルートノードである。ノード404はまた、2つのノード402Aと402Bの親ノードとして見ることができ、反対に、2つのノード402Aと402Bはノード404の子供、すなわち子ノードとして見ることができる。このリソースプール階層構造は、組織構造、例えば業務用に1つまたは複数のVMを使用する部門または部署を有する企業等を概念的に表していてもよい。企業を表す場合、リソースプール階層構造のルートノード404はその企業全体を表してもよく、2つのノード402Aと402Bはその企業の部門または部署、例えばそれぞれ営業および財務部門を表してもよく、VM220Aと220Cは営業部門のために動作し、VM220Bと220Dは財務部門のために動作する。
【0028】
SRPベースのQoS管理メカニズムは、ストレージリソースプール(SRP)モジュール238とローカルスケジューリングモジュール240を使用し、これらは図2に示されるように、ネットワークコンピュータシステム100の中の各ホストコンピュータに含まれる。各ホストコンピュータの中のSRPモジュールはネットワークコンピュータシステムの他のホストコンピュータのSRPモジュールと協働して、ストレージアレイ106のキャパシティのうちのどれだけをそのホストコンピュータに提供するべきかを判断し、これは少なくとも、そのホストコンピュータのクライアントによるストレージアレイへの要求全体と、ストレージアレイの平均レイテンシに基づく。SRPモジュールは次に、ホストコンピュータに割り振られるストレージキャパシティのうちのどれだけをそのホストコンピュータの各クライアント、例えば各VMに提供するべきかを判断する。SRPモジュールはまた、リソースプール階層構造のルートノードにおける全体的な予約値、全体的な制限値、シェアを、共有ストレージリソース、その静的な予約、制限、シェアの値に基づいてクライアントへと分配する。本明細書において、シェア値は、割り当てられたシェアの数と同等である。これに加えて、本明細書において、静的な値は、ユーザ、例えばシステム管理者、またはネットワークコンピュータシステム100の中のいずれかのコンピュータ上で実行中の管理プログラムによって設定される値である。これらの静的な値は、ストレージアレイ106の中に保存された共有ファイルの中に保存されてもよく、これによってネットワークコンピュータシステムの中の各ホストコンピュータはこの情報にアクセスできる。あるいは、これらの静的な値はネットワークコンピュータシステム内の他のホストコンピュータにブロードキャストされてもよく、それによって各ホストコンピュータが他のホストコンピュータからのこれらの数値を把握できる。分配の結果として、各クライアントには、現在のモニタリング時間間隔についての動的な予約値、動的な制限値、動的なシェア値が割り当てられる。次いで、これらの動的な値のほか、クライアントへのストレージキャパシティの割り振りは、毎回次のモニタリング時間間隔について再計算される。
【0029】
各ホストコンピュータのローカルスケジューラ240は、そのホストコンピュータのクライアント、例えばVMによるIOリクエストのスケジュールを、ホストコンピュータ内のSRPモジュール238によって計算された動的な予約値、動的な制限値、動的なシェア値に従って決定するように動作する。図2ではローカルスケジューラとSRPモジュールが仮想マシンモニタ230と別に示されているが、これらの構成要素の一方または両方を仮想マシンモニタの一部として実装してもよい。いくつかの実施形態において、SRPモジュールとローカルスケジューラはホスコンピュータ上で実行されるソフトウェアプログラムとして実装される。しかしながら、他の実施形態では、SRPモジュールとローカルスケジューラはソフトウェアとハードウェアのいずれかの組み合わせを使って実装してもよい。
【0030】
次に、図5を参照すると、本発明のある実施形態によるSRPモジュール238の構成要素が示されている。図5に示されるように、SRPモジュールは、要求更新構成要素502と、ストレージキューデプス更新構成要素504と、ストレージIOPSキャパシティ計算構成要素506と、配分構成要素508と、ホストキューデプス調整構成要素510と、を含む。図の実施形態では、SRPモジュールのこれらの構成要素が別々の要素として示されている。しかしながら、他の実施形態では、これらの構成要素の1つまたは複数を他の構成要素と組み合わせてもよく、および/またはこれらの構成要素の1つまたは複数をさらに細かい下位の構成要素に分割してもよい。SRPモジュールがソフトウェアモジュールとして実装されるある実施形態において、SRPモジュールの構成要素は、そのソフトウェアモジュールの処理ブロックとして見ることができる。SRPモジュールの構成要素に関する以下の説明文では、ホストコンピュータ104AのクライアントがVMとして説明される。しかしながら、前述のように、これらのクライアントは、共有ストレージリソースのためのストレージアレイ106にアクセスできる任意のエンティティとすることができる。
【0031】
SRPモジュール238のリソース要求更新構成要素502は、ホストコンピュータ104Aの各VMの共有ストレージリソースに対する要求と、ホストコンピュータに関する合算VM要求、すなわちホストコンピュータ内のすべてのVMの要求の合計を更新するように動作する。リソース要求更新構成要素は、ホストコンピュータの平均レイテンシ(「avgLatency」)と平均測定IOPS(「avgIops」)を、ホストコンピュータ、例えばホストコンピュータ上で動作中の仮想マシンモニタ230またはハイパーバイザによって保持される統計を使って判断する。ホストコンピュータが保持するこれらの統計には、モニタリング間隔中の合算レイテンシとホストコンピュータの各VMにより実行されるIO総数が含まれる。次に、リソース要求更新構成要素は、ホストコンピュータの各VMの要求を、リトルの法則から得られる次の方程式を使って、平均未処理IO数(「demandOIO」)として計算する。
demandOIO=avgLatency×avgIops (方程式1)
これらの数値は次に、ネットワークコンピュータシステム100内の各ホストコンピュータがこれらのVM要求値を未処理のIO(OIO:outstanding IO)として得ることができるように、利用可能な状態とされる。ある実施形態において、これらの値はストレージアレイ106に保存された共有ファイルの中で更新される。それゆえ、ネットワークコンピュータシステム内の各ホストコンピュータは共有ファイルにアクセスして、ネットワークコンピュータシステム内の他のホストコンピュータのdemandOIOを呼び出すことができる。他の実施形態において、これらの値はネットワークコンピュータシステム内の他のホストコンピュータにブロードキャストされてもよく、それによって各ホストコンピュータが他のすべてのホストコンピュータからのこれらの値を把握できる。
【0032】
リソース要求更新構成要素502は次に、demandOIOの値を、以下の方程式を使い、ストレージデバイス輻輳閾値レイテンシ(storage device congestion threshold latency : 「L」)に基づく正規化要求IOPS値(「demandIops」)に変換する。
demandIops=demandOIO/L (方程式2)
輻輳閾値は、ストレージデバイスが動作する最大レイテンシである。リソース要求更新構成要素は、ストレージキューデプス(storage queue depth)、すなわちリクエストキュー112のデプス(図1に示される)を制御して、レイテンシをLに近い状態に保ち、それによってストレージアレイ106は効率的に利用される。これは、局所的なレイテンシの変化に基づくVMの要求の過大評価を回避するのに役立つ。例えば、輻輳閾値は一般に、30ミリ秒に設定できる。SSD追加LUN(SSD-backed LUN)の場合、Lはこれより低い値、例えば5〜10ミリ秒に設定できる。
【0033】
リソース要求更新構成要素502は次に、この値が各VMの予約と制限の設定値により表される下限と上限の間に確実に含まれるように、次の方程式を使ってdemandIopsの値を調整する。
【0034】
demandIops=min(max(demandIops,R).L) (方程式3)
次にホストコンピュータについての要求を合算するように、VMのdemandIopsの値を加算してから、ホストコンピュータ104Aで境界チェックを適用し、合算値がそのホストコンピュータに関する予約と制限の設定により表される下限と上限の中に確実に含まれるようにする。
【0035】
SRPモジュール238のストレージキューデプス更新構成要素504は、ストレージアレイのキャパシティを、ストレージアレイ106のストレージキューデプスとして更新するように動作し、これが次に、そのSRPモジュールが動作中のホストコンピュータ104Aを含む、ネットワークコンピュータシステム100の中の各ホストコンピュータに割り振られる。ストレージキューデプス更新構成要素は、以下の方程式を使ってストレージキューデプスを調整し、測定されたレイテンシが輻輳閾値内に保持されるようにする。
【0036】
【数1】
上の方程式において、Q(t)は時間tでのストレージキューデプスを示し、L(t)はすべてのホストコンピュータの現在の平均レイテンシであり、γ∈[0,1]は平滑化パラメータであり、Lcはデバイス輻輳閾値である。
【0037】
SRPモジュール238のストレージIOPSキャパシティ計算構成要素506は、ストレージアレイ106のIOPSキャパシティを計算するように動作する。ストレージIOPSキャパシティ計算構成要素は、ストレージキューデプス計算構成要素504により計算された更新アレイキューデプスの値を、リトルの法則を使って得られる次の方程式を使って同等のストレージIOPSキャパシティに変換する。
arrayIOPS=Q(1+l)/L (方程式5)
キューデプスのIOPSへの変換は、配分構成要素508によって行われる配分動作の中で使用されるリソースプール設定が、後述のように、より透明性の低いOIOの値ではなく、ユーザにとってなじみのあるIOPSで示されるために行われる。
【0038】
SRPモジュール238の配分構成要素508は、現在の要求の分布を反映するVMの動的な予約、制限、シェアの値のほか、計算されたarrayIOPSの値に関するVMのエンタイトルメントを計算するように動作する。配分構成要素は、入力として、リソースプール階層構造の構造、リソースプール階層構造のノード(例えば、図4に示されるノード402A、402B、および404C)の静的な予約、制限、シェアの設定のほか、VMとノードの要求を取る。配分構成要素は次に、リソースプール階層構造のルートノードでの予約、制限、アレイIOPSとシェアの値をVMへと分配するように動作する。
【0039】
リソースプール階層構造のルートノードは、リソースプール(RP:resource pool)階層構造のノード間で分割または分配する必要のある4つのリソースタイプを保持する。
(1)予約されたRPキャパシティ(R)、
(2)RP制限(L)、
(3)アレイIOPS(I)、
(4)合計RPシェア(S)。
【0040】
配分構成要素508は、リソースプール階層構造のレベルごとのパスを行い、ルートノードから始めてリソースプール階層構造の各レベルでリソースを分ける。リソースプール階層構造の各ノードについて、分配構成要素はそのノードのリソースを、その子供、すなわち子ノード間で分ける。本明細書において、R−配分動作、L−配分動作、I−配分動作、およびS−配分動作は、配分構成要素がそれぞれR、L、I、Sの数値を分配するために実行する動作である。
【0041】
リソースプール階層構造のルートノードのR、L、I、およびSの値は本明細書において、全体的なR、L、I、およびS値と呼ばれることもある。
R−配分動作、L−配分動作、およびS−配分動作後に得られるVMのR、L、Sの値は、次のモニタリング時間間隔中のVMの動的なR、L、S設定として使用される。I−配分の中でVMごとに得られるIの値は、そのVMのエンタイトルメント(entitlement)として知られる。R−配分動作、L−配分動作、およびI−配分動作中、ノードがR、L、およびIの値のシェアを受ける限度は、一時的にそれらの合算要求が上限とされ、これによってリソースを現時点でより要求の高いVMに向けることができる。
【0042】
R−配分動作に関して、配分構成要素508はまず、ルートノードで予約されたRPキャパシティRをその子供、すなわち子ノードに配分する。各子ノードにおいて、そこに割り当てられた予約がその子供間で配分されるキャパシティとして使用される。この工程は、ネットワークコンピュータシステム100のすべてのVMがその更新されたRのシェアを受け取るまで繰り返される。L−配分動作およびI−配分動作に関して、配分構成要素は同様の手順に従って「RP制限L」と「アレイIOPS I」を配分し、各VMが新しい動的な制限設定とエンタイトルメントEを受け取るようにする。S−配分動作に関して、配分構成要素はルートノードでの合計RPシェアSを、子ノードの静的なシェア値に基づいてその子供、すなわち子ノード間で配分する。各子ノードでは、その割り振られたシェアを次に、その子供間で、子供のシェア設定の比率により分けられる。
【0043】
配分構成要素508は、R−配分動作、L−配分動作、I−配分動作、およびS−配分動作を実行して、各子ノードに親のキャパシティの一部を、それらの予約と制限による制約を前提として、そのシェアに応じて与えようと試みる。この目的を達成するための1つのアルゴリズムは、親キャパシティの小さい固定量を選択された子ノードに逐次的に与え、親のキャパシティ全体が子供に分配されるようにすることである。このアルゴリズムを説明するために、aが配分工程のある段階で子供iに対して行われる割り振りを示し、sがそのシェア値であるものとする。このアルゴリズムでは、配分工程はまず、各子ノードにその予約を与え、すなわちaの初期値は子iの静的な予約値である。リソースの次の数量について、配分工程は子供の中から、その静的な制限値以下の最も小さい正規化割り振り(smallest normalized allocation)(a/s)の子ノードを選択し、その割り振りを少量δだけ増やす。この工程は、親のキャパシティ全体がすべて配分されるまで続く。このアルゴリズムの問題は、それがn個のVM分のランタイムO(log ncapacity/δ)を有し、これはキャパシティの値が大きいと非常に長くなる可能性があることである。他の問題は、適正な値δを見つけることである。それゆえ、配分構成要素は、他の分散アルゴリズムを使って、親ノードのリソースをその子ノードに、より効率的な方法で分けることができる。
【0044】
例えば、R−配分動作、L−配分動作、およびI−配分動作のために配分構成要素508が使用できる1つの分散アルゴリズムは、分散工程中にその一時的な制限(l)の値としてノードの要求を用いることを含み、rとsの値はそれぞれ、静的な予約とシェアの値である。子ノードの要求の合計が親で配分されるキャパシティより小さい場合、子ノードの静的な制限がその要求の代わりに使用される。R−配分動作に関して、ルートノードの予約の設定(R)が配分すべきキャパシティとして使用され、その一方で、L−配分動作およびI−配分動作に関しては、キャパシティはそれぞれ、ルートの制限の設定(L)とアレイIOPS(I)である。S−配分動作に関して、親のシェア値は単純に子供のシェアの比率で分けられる。この分配アルゴリズムの擬似コードを以下に示す。
データ:C:配分すべきキャパシティ
子c、1≦i≦n、パラメータr、l、s
結果:a:子cについて計算された割り振り
可変数:
【0045】
【数2】
V:集合
【0046】
【数3】
からの要素の順序付集合{v,v,...v2n,v≦vi+1
index[i]:vがrまたはlのいずれかの場合、kと等しい
type[i];vが制限(予約)である場合、L(R)と等しい
集合:RB={1,...n},LB={},PS={}
【0047】
【数4】
各k=1,...,2nについて、以下を行う。
PSの要素の割り振りをvまで増やせるか?
(PSwt+LBcap+RBcap>C)であれば、
|_break
type[k]がPS内のある子の制限であれば、その子をPS集合からLB集合に移行させる
(type{k}=L)であれば、
LB=LB∪{index[k]}
LBcap=LBcap+lindex[k]
PS=PS−{index[k]}
PSwt=PSwt+windex[k]
上記以外であれば、
type[k]=R:子をRBからPSに移行*/
PS=PS∪{index[k]}
PSwt=PSwt+windex[k]
RB=RB−{index[k]}
RBcap=RBcap+rindex[k]
i∈RBであれば、a=r;/割り振りは予約と等しい
i∈LBであれば、a=l;/割り振りは制限と等しい
PS要素はキャパシティの残りをシェアの比率で得る
i∈PSであれば、a=(w/Σj∈PS)×(C−LBcap−RBcap):
上記のアルゴリズムはn個のVM分のランタイムO(nlog n)を持ち、時間により分けられて、分別されたシーケンスVが作られる。工程の終わりに、いくつかの子供はその制限で上限が定められ(LB集合)、またいくつかはその予約以上には割り振りを受けておらず(RB集合)、残りはそのシェアに比例する割り振りを受けている(PS集合)。
【0048】
配分構成要素508によって実行される配分工程の一例をここで、図6を参照しながら説明するが、これは図4に示すものと同じリソースプール階層構造を示している。しかしながら、図6では、リソースプール階層構造の各ノードの静的な予約、制限、シェアの値が示されている。これに加えて、VM220A、220B、220C、および220Dの計算された要求も示されている。さらに、配分工程の結果、すなわち動的な予約、制限、シェアの値がノード402Aおよび402B、ならびにVMについて示されている。図6において、タプルUは静的な設定または値を示し、タプルDは予約、制限、シェアの値の動的な配分結果を示す。この例では、上述の効率的な分配アルゴリズムが配分工程に使用されている。
【0049】
R−配分動作に関して、配分構成要素508は、リソース要求更新構成要素502によって更新されたVMの要求を、リソースプール階層構造のノードにおける制限設定の一時的な上限として使用する。VMの要求がそれぞれ600、400、400、および100であるため、VMの制限の一時的上限はそれぞれ600、400、400、および100に設定される。配分構成要素はまた、VMの要求を合算して、ノード402Aと402Bに関する要求の値を得る。この例において、ノード402Aと402Bの合算要求は、それぞれ1,000および500であり、これはVM 220Aと220Cの要求の合計が1,000であり、VM220Bと200Dの要求の合計が500であるからである。それゆえ、ノード402Aと402Bの制限の一時的な上限は、それぞれ1,000および500に設定される。
【0050】
配分構成要素508は次に、ルートノード404からVM220A、220B、220C、および220Dとレベルごとに進み、親の予約を子供間で配分する。リソースプール階層構造のルートノード404では、ユーザによって1,200に設定されている予約値Rがノード402Aと402Bの間でそれぞれのシェアの比率(3:1)で配分され、その結果、それぞれの割り振りは900と300になる。これらの値はノード402Aと402Bの予約と制限の値の間にあるため、これらはルートノードでのR−配分動作の最終的な結果となる。
【0051】
リソースプール階層構造の次のレベルでは、ノード402Aの予約R=900がVM220Aと220Cの間で配分される。そのシェアの比率(1:2)に基づいて、VM220Aはその予約値に300が割り振られ、これはその予約400より小さい。したがって、配分構成要素508は実際に、VM220Aにユーザが設定した予約の数量400を与え、VM220Cは残り、すなわち500の値を得る。VM220Bと220Dに関して、ノード402Bの予約R=300は、VM220Bと220Dの間でそのシェアの比率(1:1)に基づいて均等に配分される。しかしながら、VM220Dの制限が一時的にその要求を上限とされているため、VM220Dには100が与えられ、その一方で、VM220Bは残りの数量200を得る。
【0052】
L−配分動作に関して、配分構成要素508は同様に、親の制限の値をレベルごとにその子供間で分ける。ルートノード404でユーザが設定した制限L=2300はノード420Aと402Bの間でそのシェアの比率(3:1)で分けられる。しかしながら、ノード402Bへの割り振りは、その制限の設定値500が上限となり、その結果、1,800と500がそれぞれノード402Aと402Bに割り振られる。
【0053】
次のレベルで、ノード402Aの制限L=1800がVM220Aと220Cの間で配分される。そのシェアの比率(1:2)に基づいて、VM220Aにはその制限の値に600が割り振られ、VM220Cにはその制限の値に1,200が割り振られる。VM220Bと220Dに関して、制限L=500が、VM220Bと220Dの間でそのシェアの比率(1:1)に基づいて均等に配分される。しかしながら、VM220Dに関する制限が一時的にその要求を上限とされているため、VM220Dには100が与えられ、その一方で、VM220Bは残りの数量400を得る。
【0054】
S−配分動作に関して、リソースプール階層構造の各レベルで、配分構成要素508は単純に親ノードのシェアをその子ノード間でそのシェアの比率により分ける。それゆえ、ルートノード404でユーザが設定したシェアS=1,000がノード402Aと402Bの間でそのシェアの比率(3:1)により分けられ、その結果、750と250がそれぞれノード402Aと402Bに割り振られる。次のレベルでは、ノード402Aのシェアの値S=750がVM 220Aと220Cの間でそのシェアの割合(1:2)に基づいて配分され、その結果、250と500がそれぞれVM 220Aと220Cに割り振られる。これに加えて、ノード402Bのシェアの値S=250がVM220Bと220Dの間でそのシェアの比率(1:1)に基づいて配分され、その結果、125と125がそれぞれVM220Bと220Dに割り振られる。
【0055】
上記の例では、VM220Bと220Dの静的な設定値は同じである。しかしながら、その要求の差によって、結果として得られる動的な設定値はVM220Bと220Dの間で異なる。VM220Aと220Cに関して、VM220CにはVM220Aより多くの予約が与えられており、これはVM220Aのシェアの値のほうが大きいからである。しかしながら、VM220Aについてユーザが設定した予約に適合するために、VM220CはVM220Aの予約の2倍未満を受け取っている。
【0056】
図5に戻ると、SRPモジュール238のホストキューデプス調整構成要素510は、新しいホストキューデプスの値、すなわち命令発行キュー236のデプスを、配分構成要素508により計算されたアレイIOPSに関するホストコンピュータ104AのVM220A、220B...220Nのエンタイトルメントに基づいて計算するように動作する。ホストキューデプス調整構成要素は、ホストキューデプスを調整するために、以下の方程式を用いて新しいホストキューデプスを計算する。
【0057】
【数5】
式中、Q(t+1)はアレイキューデプスの値、arrayIOPSはアレイのIOPSキャパシティ、EはホストコンピュータのVMのエンタイトルメントである。
【0058】
図2に戻ると、ローカルスケジューラ240は、ホストコンピュータ104Aのアレイキャパシティのシェア、すなわちSRPモジュール238のホストキューデプス調整構成要素510によって計算された新しいホストキューデプスの値を、VM 220A、220B...220Nの間で割り振るように動作する。ローカルスケジューラは、SRPモジュールによって計算されたVMの動的な予約、制限、シェアの設定を使用して、VMからのIOリクエストのスケジュールを立てる。ローカルスケジューラは、新しいホストキューデプスの値によって定義される制限をホストコンピュータでの未処理のIOの総数に適用する。ある実施形態において、ローカルスケジューラは、アジャイ・グラティ(Ajay Gulati)、アリフ・マーチャント(Arif Merchant)、ピーター・バーマン(Peter Varman)の「mClock:ハイパーバイザIOスケジューリングのスループット可変性の扱い(mClock:Handling Throughput Variability for Hypervisor IO Scheduling)」に記載されているmClockスケジューラである。しかしながら、他の実施形態では、SRPモジュールにより計算されたVMの動的な予約、制限、シェアの設定を使い、その一方でホストキューデプスの値により定義される制限に従い、ホストコンピュータのIOリクエストのスケジュールを立てることができる任意のIOスケジューラを、ローカルスケジューラとして使用できる。
【0059】
このようにして、ネットワークコンピュータシステム100の中の各ホストコンピュータは、ストレージの平均レイテンシに基づいて、ストレージ106のキャパシティ全体の一部をそれ自体に独立して割り振り、共有ストレージリソースに対するクライアントの要求に基づいて計算された動的な予約、制限、シェアの値の計算結果を使って、そのホストコンピュータ上で動作中のクライアント間で割り振られたストレージリソースを管理できる。それゆえ、ネットワークコンピュータシステムが共有ストレージリソースを効率的に割り当てるために中央集中的なQoSマネージャ/スケジューラは必要とならない。
【0060】
いくつかの実施形態において、ホストコンピュータ104A、104B...104N上で動作中のクライアントは、同様に共有ストレージリソースを必要とする下位の構成要素を含んでいてもよい。それゆえ、これらの実施形態では、このような下位の構成要素を、共有ストレージリソースを消費する「クライアント」と考えてもよい。例えば、ホストコンピュータの1つで動作中のVMは、ストレージ106に保存される1つまたは複数の仮装マシンファイル、例えば仮想マシンディスク(VMDK:virtual machine disk)に関連付けられていてもよい。これらのVMのVMDKは共有ストレージリソースを消費し、それゆえ、それにはリソースを効率的に共有するために、予約、制限、シェアの値が割り当てられる。ある実施形態において、VMのVMDKはまた、リソースプール階層構造の中に含められ、QOS制御のために、各ホストコンピュータのSRPモジュール238とローカルスケジューラ240によって考慮される。
【0061】
VMDKを含むリソースプール階層構造700の例が図7に示されている。図7に示されるように、階層構造700はルートノード702と、ノード704Aおよび704Bと、VM706A、706B、706C、706D、および706Eと、VMDK708A、708B、708C、708D、708E、708F、708G、および708Hと、を含む。このリソースプール階層構造では、各ホストコンピュータのSRPモジュール238とローカルスケジューラ240は、単純にストレージ106のキャパシティとルートノード702に割り当てられた全体的な予約、制限、シェアの値を上述の方法でVMDKへと分配する。状況によっては、VMDKは異なるデータストアで保存されてもよい。例えば、VMDK708A、708B、708D、708E、および708Hはデータストア1に保存されてもよく、VMDK708C、708F、および708Gはデータストア2に保存されてもよい。このような状況では、ホストコンピュータ104A、140B...104Nの各々におけるSRPモジュールは、リソースプール階層構造を、ユーザが提供できるデータストアの情報を使ってデータストアごとのリソースプール階層構造に分割するように構成されていてもよい。例えば、リソースプール階層構造700は、それぞれデータストア1と2に対応するリソースプール階層構造750Aと705Bに分割されてもよい。次いで、各ホストコンピュータのSRPモジュールは、データストアごとのリソースプール階層構造750Aと750Bの各々を上述の方法で動作させて、QoS制御を提供する。
【0062】
本発明のある実施形態による、共通リソースにアクセスするためにホストコンピュータ上で動作中のクライアントのためにクオリティ・オブ・サービス(QoS)を提供する方法を、図8のフロー図を参照しながら説明する。ブロック802では、共通リソースの現在のキャパシティが、クライアントが共通リソースにアクセスする際のレイテンシの全体的な平均に基づいて計算される。ブロック804では、共通リースに関する各クライアントのエンタイトルメントが、計算された現在のキャパシティと共通リソーに対するクライアントの要求に基づいて計算される。ブロック806では、共有リソースの計算された現在のキャパシティの一部が特定のホストコンピュータに、その特定のホストコンピュータ上で動作中の各クライアントの計算されたエンタイトルメントを使って割り当てられる。ブロック808では、計算された現在のキャパシティの一部が、その特定のホストコンピュータ上で動作中のクライアント間で割り振られる。
【0063】
本明細書の方法の動作は特定の順序で示され、説明されているが、各方法の動作の順序を変更して、特定の動作を逆の順序で行ってもよく、または特定の動作を少なくとも部分的に他の動作と同時に実行してもよい。他の実施形態では、別々の動作の命令または下位の動作を間欠的および/または交互に実施してもよい。
【0064】
この方法のための動作の少なくとも一部は、コンピュータにより実行されるためのコンピュータ使用可能なストレージ媒体に保存されたソフトウェア命令を使って実装してもよいことにも留意すべきである。例えば、コンピュータプログラム製品のある実施形態は、コンピュータにより実行されると、コンピュータに本明細書に記載された動作を実行させるようなコンピュータ可読ブログラムを保存する、コンピュータ使用可能なストレージ媒体を含む。
【0065】
さらに、本発明の少なくとも一部の実施形態は、コンピュータまたはいずれかの命令実行システムによって、またはこれに関連して使用するためのプログラムコードを提供するコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラムの形態をとることができる。この説明の解釈において、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはこれに関連して使用するためのプログラムを含み、保存し、通信し、伝播し、または転送する任意の装置とすることができる。
【0066】
コンピュータ使用可能またはコンピュータ可読媒体は、電子、磁気、光、電磁気、赤外線、または半導体システム(もしくは装置もしくはデバイス)または伝播媒体とすることができる。コンピュータ可読媒体の一例は、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM:read−only memory)、リジッド磁気ディスク、光ディスクを含む。光ディスクの現時点での例には、コンパクトディスク読み出し専用メモリ(CD−ROM)、コンパクトディスクリード/ライト(CD−R/W)、デジタルビデオディスク(DVD)、およびブルーレイディスクが含まれる。
【0067】
上記の説明において、各種の実施形態の具体的な詳細が提供されている。しかしながら、いくつかの実施形態はこれらの具体的な詳細のすべてがなくても実施できる。他の例では、特定の方法、手順、構成要素、構造および/または機能は、簡潔性と明瞭性のために、本発明の各種の実施形態を可能にする程度以上に詳細には説明されていない。
【0068】
本発明の具体的な実施形態を説明し、示したが、本発明は説明され、示された部品の具体的な形態または配置に限定されない。本発明の範囲は、添付の特許請求の範囲とその均等物によって定義されるものとする。
図1
図2
図3
図4
図5
図6
図7
図8