(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6208354
(24)【登録日】2017年9月15日
(45)【発行日】2017年10月4日
(54)【発明の名称】サービス品質の分散ポリシーベースのプロビジョニング及び施行
(51)【国際特許分類】
G06F 3/06 20060101AFI20170925BHJP
G06F 9/46 20060101ALI20170925BHJP
G06F 11/34 20060101ALI20170925BHJP
G06F 13/10 20060101ALI20170925BHJP
G06F 13/14 20060101ALI20170925BHJP
【FI】
G06F3/06 301Z
G06F9/46 350
G06F11/34 142
G06F13/10 340A
G06F3/06 301E
G06F3/06 304N
G06F13/14 310F
【請求項の数】17
【全頁数】20
(21)【出願番号】特願2016-531609(P2016-531609)
(86)(22)【出願日】2014年6月5日
(65)【公表番号】特表2016-525761(P2016-525761A)
(43)【公表日】2016年8月25日
(86)【国際出願番号】US2014041164
(87)【国際公開番号】WO2015030893
(87)【国際公開日】20150305
【審査請求日】2016年1月28日
(31)【優先権主張番号】14/010,247
(32)【優先日】2013年8月26日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】アール、ウィリアム
(72)【発明者】
【氏名】カラマノリス、クリストス
【審査官】
田上 隆一
(56)【参考文献】
【文献】
特開2009−217475(JP,A)
【文献】
特開2002−108567(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 9/46
G06F 11/34
G06F 13/10
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
共有リソースへのアクセスを有する複数のクライアントにリソース使用フィードバックを提供するコンピュータ実行方法であって、
前記複数のクライアントのうちの少なくとも一部分による前記共有リソースの使用率をモニタすることであって、各クライアントには、前記共有リソースに対して最小使用率が確保されている、前記モニタすること、
前記共有リソースの使用率が、前記共有リソースによってサポートされる最大使用率を超えたと判断されると、前記共有リソースへのアクセスを現在試みている前記複数のクライアントのうちの少なくとも一部分の輻輳メトリックを特定することであって、各クライアントの輻輳メトリックは、前記共有リソースの前記クライアントの使用に基づき、前記共有リソースの別のアクセスを試みる前の遅延期間を計算するのに前記クライアントによって使用される、前記特定すること、
特定された輻輳メトリックのそれぞれを、対応するクライアントに送信することを備え、
前記共有リソースに確保された最小使用率を超えた全てのクライアントには、非ゼロ値を有する輻輳メトリックが送信され、前記共有リソースに確保された最小使用率を超えない全てのクライアントには、前記クライアントによって計算される遅延期間を生じさせない輻輳メトリックゼロ値が送信される、方法。
【請求項2】
前記共有リソースは、前記複数のクライアントの実行をサポートする複数のホストコンピュータのクラスタに属するホストコンピュータに収容されたローカル記憶ドライブであり、
前記クラスタ内の各ホストコンピュータは、対応するローカル記憶ドライブに、単一の仮想記憶デバイスとしてアクセス可能な共有リソースのプールを形成する、請求項1に記載の方法。
【請求項3】
前記複数のクライアントのうちの少なくとも1つが、仮想ディスクでI/O動作を実行しており、
前記仮想ディスクのうちの少なくとも一部分は、前記共有リソースの部分によって裏付けられ、前記仮想ディスクのうちの他の少なくとも一部分は、前記クラスタに属する異なるホストコンピュータに収容された異なるローカル記憶ディスクによって裏付けられる、請求項2に記載の方法。
【請求項4】
前記仮想ディスクは、RAID0ストライプセットとして編成され、
前記共有リソースの一部分によってバッキングされる前記仮想ディスクのセクション、異なるローカル記憶ディスクによってバッキングされる前記仮想ディスクの少なくとも1つの他のセクションは両方とも、前記RAID0ストライプセット内の異なるストライプを表す、請求項3に記載の方法。
【請求項5】
第2のクライアントが、I/O動作を第2の仮想ディスクで実行しており、前記第2の仮想ディスクの少なくとも1つの部分は、前記共有リソースの第2の部分によってバッキングされ、前記第2の仮想ディスクの少なくとも1つの他の部分は、前記クラスタに属する異なるホストコンピュータに収容される異なるローカルディスクによってバッキングされる、請求項3に記載の方法。
【請求項6】
前記複数のクライアントはそれぞれ、前記クラスタ内の前記ホストコンピュータの1つで実行中の仮想マシンを含む、請求項2に記載の方法。
【請求項7】
プロセッサで実行されると、共有リソースへのアクセスを有する複数のクライアントにリソース使用フィードバックを提供する動作を実行する命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作は、
前記複数のクライアントのうちの少なくとも一部分による前記共有リソースの使用率をモニタすることであって、各クライアントには前記共有リソースに最小使用率が確保されている、前記モニタすること、
前記共有リソースの使用率が、前記共有リソースによってサポートされる最大使用率を超えたと判断されると、前記共有リソースへのアクセスを現在試みている前記複数のクライアントのうちの少なくとも一部分の輻輳メトリックを特定することであって、各クライアントの輻輳メトリックは、前記共有リソースの前記クライアントの使用に基づき、前記クライアントによって使用されて、前記共有リソースの別のアクセスを試みる前の遅延期間を計算する、前記特定すること、
特定された輻輳メトリックのそれぞれを、対応するクライアントに送信すること、を備え、
前記共有リソースに確保された最小使用率を超えた全てのクライアントには、非ゼロ値を有する輻輳メトリックが送信され、前記共有リソースに確保された最小使用率を超えない全てのクライアントには、前記クライアントによって計算される遅延期間を生じさせない輻輳メトリックゼロ値が送信される、コンピュータ可読記憶媒体。
【請求項8】
前記共有リソースは、前記複数のクライアントの実行をサポートする複数のホストコンピュータのクラスタに属するホストコンピュータに収容されたローカル記憶ドライブであり、前記クラスタ内の各ホストコンピュータは、対応するローカル記憶ドライブに、単一の仮想記憶デバイスとしてアクセス可能な共有リソースのプールを形成する、請求項7に記載のコンピュータ可読記憶媒体。
【請求項9】
前記複数のクライアントのうちの少なくとも1つは、仮想ディスクでI/O動作を実行しており、前記仮想ディスクのうちの少なくとも一部分は、前記共有リソースの部分によって裏付けられ、前記仮想ディスクのうちの他の少なくとも一部分は、前記クラスタに属する異なるホストコンピュータに収容された異なるローカル記憶ディスクによって裏付けられる、請求項8に記載のコンピュータ可読記憶媒体。
【請求項10】
前記仮想ディスクは、RAID0ストライプセットとして編成され、
前記共有リソースの部分によってバッキングされる前記仮想ディスクのセクション、異なるローカル記憶ディスクによってバッキングされる前記仮想ディスクの少なくとも1つの他のセクションは両方とも、前記RAID0ストライプセット内の異なるストライプを表す、請求項9に記載のコンピュータ可読記憶媒体。
【請求項11】
第2のクライアントが、I/O動作を第2の仮想ディスクで実行しており、前記第2の仮想ディスクの少なくとも1つの部分は、前記共有リソースの第2の部分によってバッキングされ、前記第2の仮想ディスクの少なくとも1つの他の部分は、前記クラスタに属する異なるホストコンピュータに収容される異なるローカルディスクによってバッキングされる、請求項9に記載のコンピュータ可読記憶媒体。
【請求項12】
前記複数のクライアントはそれぞれ、前記クラスタ内の前記ホストコンピュータの1つで実行中の仮想マシンを含む、請求項8に記載のコンピュータ可読記憶媒体。
【請求項13】
コンピュータシステムであって、
プロセッサと、
モジュールをホストするメモリであって、前記モジュールは、前記プロセッサで実行されると、共有リソースへのアクセスを有する複数のクライアントにリソース使用フィードバックを提供する動作を実行する、前記メモリとを備え、前記動作は、
前記複数のクライアントのうちの少なくとも一部分による前記共有リソースの使用率をモニタすることであって、各クライアントには、前記共有リソースに最小使用率が確保されている、前記モニタすること、
前記共有リソースの使用率が、前記共有リソースによってサポートされる最大使用率を超えたと判断されると、前記共有リソースへのアクセスを現在試みている前記複数のクライアントのうちの少なくとも一部分の輻輳メトリックを特定することであって、各クライアントの輻輳メトリックは、前記共有リソースの前記クライアントの使用に基づき、前記クライアントによって使用されて、前記共有リソースの別のアクセスを試みる前の遅延期間を計算する、前記特定すること、
特定された輻輳メトリックのそれぞれを、対応するクライアントに送信することを備え、
前記共有リソースに確保された最小使用率を超えた全てのクライアントには、非ゼロ値を有する輻輳メトリックが送信され、前記共有リソースに確保された最小使用率を超えない全てのクライアントには、前記クライアントによって計算される遅延期間を生じさせない輻輳メトリックゼロ値が送信される、コンピュータシステム。
【請求項14】
前記共有リソースは、前記複数のクライアントの実行をサポートする複数のホストコンピュータのクラスタに属するホストコンピュータに収容されたローカル記憶ドライブであり、
前記クラスタ内の各ホストコンピュータは、対応するローカル記憶ドライブに、単一の仮想記憶デバイスとしてアクセス可能な共有リソースのプールを形成する、請求項13に記載のコンピュータシステム。
【請求項15】
前記複数のクライアントのうちの少なくとも1つは、仮想ディスクでI/O動作を実行しており、前記仮想ディスクのうちの少なくとも一部分は、前記共有リソースの部分によって裏付けられ、前記仮想ディスクのうちの他の少なくとも一部分は、前記クラスタに属する異なるホストコンピュータに収容された異なるローカル記憶ディスクによって裏付けられる、請求項14に記載のコンピュータシステム。
【請求項16】
前記仮想ディスクは、RAID0ストライプセットとして編成され、
前記共有リソースの部分によってバッキングされる前記仮想ディスクのセクション、異なるローカル記憶ディスクによってバッキングされる前記仮想ディスクの少なくとも1つの他のセクションは両方とも、前記RAID0ストライプセット内の異なるストライプを表す、請求項15に記載のコンピュータシステム。
【請求項17】
第2のクライアントが、I/O動作を第2の仮想ディスクで実行しており、前記第2の仮想ディスクの少なくとも1つの部分は、前記共有リソースの第2の部分によってバッキングされ、前記第2の仮想ディスクの少なくとも1つの他の部分は、前記クラスタに属する異なるホストコンピュータに収容される異なるローカルディスクによってバッキングされる、請求項15に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【0001】
分散システムでは、ネットワーク内の複数のクライアントが共有リソースのプールにアクセスすることができる。例えば、分散ストレージシステムでは、ホストコンピュータのクラスタは、各ホストコンピュータ内にあるか、又は各ホストコンピュータに取り付けられたローカルディスク(例えば、SSD、PCIベースのフラッシュストレージ、SATA、又はSAS磁気ディスク)を集約して、ストレージの単一の共有プールを作成することができる。ストレージのこのプール(本明細書では「データストア」又は「ストア」と呼ばれることがある)は、クラスタ内の全てのホストコンピュータによってアクセス可能であり、ストレージエンティティの単一の名前空間(namespace)(ファイルの場合では階層ファイルシステム名前空間、オブジェクトの場合では一意の識別子のフラットな名前空間等)として提示し得る。そして、ホストコンピュータ上で生成された仮想マシン等のストレージクライアントは、データストアを使用して、例えば、動作中に仮想マシンによってアクセスされる仮想ディスクを記憶し得る。データストアを構成する共有ローカルディスクは、異なる性能特徴(例えば、容量、毎秒の入力数/出力数、又はIOPS性能等)を有し得るため、仮想ディスク又はその部分を記憶するそのような共有ローカルディスクの使用は、所与の各仮想マシンのニーズに基づいて仮想マシンに分散される。
【発明の概要】
【発明が解決しようとする課題】
【0002】
この手法は、費用効率的な手法を企業に提供する。例えば、プールされたローカルディスクを使用する分散ストレージは、安価であり、高度にスケーラブルであり、管理が比較的単純である。そのような分散ストレージは、クラスタ内の商品ディスクを使用することができるため、企業は、追加のストレージ・インフラストラクチャに投資する必要がない。しかし、この手法に伴って生じる一問題は、共有ストレージリソースにアクセスしている複数のクライアント間の競合に関する。特に、複数のクライアントが、ローカルディスクのIOPS容量を超える結合IOPS(毎秒入力数/出力数)で特定のホストコンピュータ内の同じローカルディスクによってバッキングされた(backed)異なるデータに同時にアクセスする必要がある場合、全体性能の低下及び待ち時間の増大が生じる。
【課題を解決するための手段】
【0003】
本開示の一実施形態は、共有リソースへのアクセスを有する複数のクライアントにリソース使用フィードバックを提供する方法を提供する。本方法は一般に、クライアントの少なくとも部分による共有リソースの使用率をモニタするステップであって、各クライアントには、共有リソースに最小使用率が確保されている、モニタするステップを含む。共有リソースの使用率が、共有リソースによってサポートされる最大使用率を超えたと判断されると、共有リソースへのアクセスを現在試みているクライアント群の少なくとも一部の輻輳メトリックが特定される。各クライアントの輻輳メトリックは、共有リソースのクライアントの使用に基づき、共有リソースの別のアクセスを試みる前の遅延期間を計算するのにクライアントによって使用される。本方法は一般に、特定された輻輳メトリックのそれぞれを対応するクライアントに送信するステップを含む。
【0004】
他の実施形態は、限定ではなく、処理ユニットが開示される方法の1つ又は複数の態様を実施できるように構成された命令を含むコンピュータ可読媒体と、開示される方法の1つ又は複数の態様を実施するように構成された、プロセッサ、メモリ、及びモジュールを有するコンピュータシステムとを含む。
【図面の簡単な説明】
【0005】
【
図1】一実施形態によるコンピューティング環境例を示す。
【
図2】一実施形態による、仮想ディスクを表すオブジェクトストア内で編成されたオブジェクトの階層構造例を示す。
【
図3】一実施形態によるVSANモジュールの構成要素を示す。
【
図4】一実施形態による、定義ストレージポリシーに基づいて仮想ディスクオブジェクトを作成する方法流れ図を示す。
【
図5】一実施形態による、VMに端を発するI/O動作の処理を示す。
【
図6】実施形態による、VSANモジュールによりクライアントに輻輳メトリックを送信する方法の流れ図を示す。
【
図7】輻輳中、VSANモジュールへI/O動作要求を遅延させる方法を示す。
【発明を実施するための形態】
【0006】
本明細書に開示される実施形態は、共有リソース(例えば、ストレージ等)での輻輳を測定し、共有リソースの消費者に提供されるサービス品質を制御する技法を提供する。一実施形態では、共有リソース(例えば、ローカルストレージ等)をホストコンピュータのクラスタに提供するホストコンピュータは、リソースにアクセスしているクライアント(例えば、クラスタ内の任意のホストコンピュータで実行中の仮想マシン等)の共有リソース(例えば、IOPS等)の使用をモニタする。クライアントのうちの特定のクライアントがそれ自体に保持されたレート(rate)を超えているため、共有リソースについてクライアント間に競合がある場合(例えば、特定のクライアントが、本明細書において更に説明するように、クライアントに保持されている最小レートで共有リソースにアクセスすることができない場合)、ホストコンピュータは、共有リソースにアクセスを試みているクライアントのうちの少なくとも一部に輻輳メトリック(congestion metric)を出力する。輻輳メトリックは、リソース競合の程度を特定し得る。クライアントは、輻輳メトリックを使用して、続く要求(例えば、I/O要求等)が共有リソースにアクセスするのをどれくらい遅延させるかを決定する。例えば、特定の実施形態では、クライアントは、輻輳メトリックに基づいてある時間期間にわたり要求を遅延させる非ゼロ輻輳メトリック(non-zero congestion metric)を受信し(例えば、保持された率を超えたクライアント)、一方、他のクライアントは、「ゼロ」輻輳メトリック(zero congestion metric)を受信し(例えば、保持されたレート以内でリソースを使用したクライアント)、要求を即座に送信し得る。ストレージリソースをホストしているコンピュータは、所与のクライアントが、仮に全ての要求が即座に送達された場合に有し得る合計サービス時間と同様の合計サービス時間を有するように、輻輳メトリックへの応答を較正し得る。
【0007】
例えば、本明細書に記載の技法は分散ストレージシステムの実施に使用し、この分散ストレージシステムでは、ホストコンピュータは、ホストコンピュータのローカルストレージにアクセスしている他のホストコンピュータに配置され得るクライアントによるI/O動作要求についての輻輳メトリックを出力する。当てはまる分散ストレージシステムの一例は、ソフトウェアベースの「仮想ストレージエリアネットワーク」(virtual storage area network : VSAN)であり、このネットワークでは、クラスタ内のホストサーバはそれぞれ、その商品であるローカルストレージリソース(例えば、ハードディスク及び/又は固体状態ドライブ等)を総合「オブジェクト」ストアの提供に寄与するノードとして機能する。各ホストサーバは、ストレージ管理ワークフローを自動化し(例えば、オブジェクトストア内でのオブジェクトの作成等)、オブジェクトストア内のオブジェクトに指定された予め定義されるストレージポリシーに基づいてオブジェクトストア内のオブジェクトへのアクセスを提供する(例えば、オブジェクトストア内のオブジェクトへのI/O動作の処理等)ために、ストレージ管理モジュール(本明細書ではVSANモジュールと呼ばれることもある)を含み得る。特定の実施形態では、ホストサーバは、VSANオブジェクトストアへのクライアントとして機能する仮想マシン(virtual machine : VM)のインスタンス化を更にサポートする。そのような実施形態では、オブジェクトストアに記憶された「オブジェクト」は、例えば、VM構成ファイル及び仮想ディスク記述子ファイルを含み得るファイルシステムオブジェクト、実行時中にVMによってアクセスされる仮想ディスクオブジェクト等を含み得る。
【0008】
管理者はまず、意図される使用(例えば、容量、可用性、IOPS等)に応じて「仮想ディスク」の特定の記憶要件を用いてVMを構成し得、管理者は、そのような可用性、容量、IOPS等を指定する各VMのストレージプロファイル又はポリシーを定義し得る。更に後述するように、次に、VSANモジュールは、定義されたポリシーに基づいて、オブジェクトストアの物理的ストレージリソースでバッキングした(backing)VMの仮想ディスクを作成し得る。例えば、管理者は、「400」の読み出しIOPSの最小確保を要求する(しかし、消費可能な読み出しIOPSの最大量への制限はない)ストレージポリシーをVM Aの仮想ディスクに対して指定し、したがって、VSANモジュールは、最大で「550」の読み出しIOPSを提供することができるローカルストレージリソースによってバッキングされた仮想ディスク「オブジェクト」を作成し得る。さらに、管理者は、「100」の読み出しIOPSの最小確保を要求する(しかし、ここでも、消費可能な読み出しIOPSの最大量への制限はない)別のストレージポリシーをVM Bの仮想ディスクに対して指定し得る。VSANモジュールは、同じローカルストレージリソースを用いてVM Bの仮想ディスクをバッキングすることもできる(したがって、「50」の読み出しIOPSが残る)。VM Aがその最大確保である「400」の読み出しIOPSを超え、例えば、500読み出しIOPSを利用する場合、VM Bはローカルストレージリソースへの競合を経験せずに、「50」の読み出しIOPSのレートで仮想ディスクへのI/O動作を実行し続けることができる。しかし、VM Aが「500」の読み出しIOPSで仮想ディスクに対してI/Oを実行し続け、VM Bが最小確保量である「100」の読み出しIOPSを使用して、それ自体の仮想ディスクにアクセスする必要がある場合、競合が生じる。
【0009】
一実施形態では、各ノード(例えば、ホストサーバ)でのVSANモジュールは、ノードのローカルストレージリソースがクライアント(例えば、そのようなノードで実行中のVMの代理として機能している他のノード上の他のVSANモジュール等)によってアクセスされているレートをモニタする。一実施形態では、各ノードに存在しているVSANモジュールは、現在のリソース使用ステータスをクラスタ内の他のノードの他のVSANモジュールにブロードキャストし得る。例えば、複数のクライアントによる同時アクセスに起因して、競合がローカルストレージリソースで生じる場合、ノードは輻輳メトリックを計算し、次に、輻輳メトリックは、ローカルストレージリソースにアクセスしようとしているクライアントに発行される。輻輳メトリックは、どの程度の輻輳が発生しているかの測定値を示し、クライアント(例えば、ローカルストレージリソースに達するI/O動作を実行中のVMの代理として機能しているVSANモジュール)にI/O動作要求を遅延又は他の様式で抑制させる。特定の実施形態では、ノード内のVSANモジュールは、それ自体も輻輳メトリックを使用して、ローカルストレージリソースへの入力要求をキューに入れ、遅延させる。
【0010】
代替的には、ストレージリソースをホストするホストコンピュータのVSANモジュールは、リソースの輻輳量を計算する。特定されると、VSANモジュールは、特定のクライアントのリソース使用を計算せずに、輻輳メトリックをクライアントに送信する。輻輳メトリックをホストコンピュータから受信すると、クライアントは、それ自体のリソース使用と、割り振られたリソースを超えているか否かとに基づいて、遅延期間を計算する。
【0011】
この手法により、複数のクライアントにわたる分散プロビジョニング及び非集中化ポリシー施行が可能である。サーバ(例えば、ローカルストレージリソースを収容しているノード)での単一の大きなキューをサーバでのより小さなキュー及び各クライアントでの別個のキュー(要求毎の全体平均キュー遅延が、単一の大きなキューを使用して見られるものである)に分けることにより、この手法は、各クライアントの要求の差別化優先度スケジューリングを可能にしながら、サーバでのバッファリングに必要な空間を低減する。さらに、保持されたリソース割り振りを超えるクライアントのみがVSANモジュールへの要求を遅延させる(保持されたリソースを使用しているクライアントはVSANモジュールへの要求を遅延させない)ため、そのような手法が必要とする複雑な論理はより少数であり、その結果、分散システムの性能が改善する。
【0012】
これより、例が添付図に示される幾つかの実施形態を詳細に参照する。なお、実施可能な場合は常に、類似又は同様の参照番号が図に使用され得、類似又は同様の機能を示し得る。図は、例示のみを目的として実施形態を示す。以下の説明から、本明細書に記載される原理から逸脱せずに、本明細書に示される構造及び方法の代替の実施形態が利用可能なことを当業者は容易に認識することになる。
【0013】
以下、VSANモジュールは、リソースをモニタし、複数のポイントでのリソースの輻輳を制御するシステムの参照例を提供する。この参照例は、本明細書に記載される実施形態の理解を提供するために包含される。しかし、これらの実施形態が、コンピューティング環境のタイプに関わりなく、分散ストレージリソースのクライアントへの割り振りに関連する他の状況でも適用可能なことが当業者には明らかであろう。例えば、実施形態は、ソフトウェア定義のコンピュータ、ネットワーク、及びストレージアレイに適用可能であり得る。さらに、実施形態は、他の共有計算リソース(例えば、処理リソース、メモリリソース、及びネットワークリソース等)の割り振りに関連する他の状況で適用可能でもあり得る。
【0014】
同様に、多くの特定の詳細が提供されて、実施形態の完全な理解を提供する。これらの特定の詳細の幾つかなしで実施形態が実施可能なことを当業者は認識しよう。他の場合、周知のプロセス動作及び実施詳細は、本開示の新規の態様を不必要に曖昧にしないように、詳述されていない。
【0015】
図1は、一実施形態によるコンピューティング環境100を示す。示されるように、コンピューティング環境100は、クラスタ110のホストサーバ又はノード111に収容される(housed)か、又は直接取り付けられた(以下、「収容」若しくは「内に収容(housed in)」という用語の使用は、収容若しくは他の様式での直接取り付けの両方を包含するために使用され得る)商品ローカルストレージを利用して、ノードで実行中の仮想マシン(VM)112に集合オブジェクトストア116を提供するVSAN環境である。ノード111内に収容されるか、又は他の様式で直接取り付けられるローカル商品ストレージは、固体状態ドライブ(solid state drive : SSD)117及び/又は磁気又は回転ディスク118の組合せを含み得る。特定の実施形態では、SSD117は、磁気ディスク118の前段の読み出しキャッシュ及び/又は書き込みバッファとして機能して、I/O性能を向上させる。
【0016】
仮想化管理プラットフォーム105が、ノード111のクラスタ110に関連付けられる。仮想化管理プラットフォーム105は、管理者が様々なノード111上のVMの構成及び生成を管理できるようにする。
図1の実施形態に示されるように、各ノード111は、仮想化レイヤ又はハイパーバイザ113、VSANモジュール114、及び(ノード111のSSD117及び磁気ディスク118を含む)ハードウェア119を含む。ハイパーバイザ113を通して、ノード111は、複数のVM112を起動し実行することができる。ハイパーバイザ113は、部分的に、ハードウェア119を管理して、計算リソース(例えば、処理電力、ランダムアクセスメモリ等)を各VM112に適宜割り振る。さらに、更に後述するように、各ハイパーバイザ113は、対応するVSANモジュール114を通して、クラスタ110内の任意のノード111に存在する任意のVM112がアクセスし得る仮想ディスク(又はその部分)及び他の関連ファイルのストレージとして使用するために、ハードウェア119に配置されたストレージリソース(例えば、SSD117及び磁気ディスク118)へのアクセスを提供する。特定の実施形態では、VMウェア社(VMware,Inc.)(VMウェア(VMware))からのvスフィア(vSphere)ハイパーバイザが、ハイパーバイザ113としてノード111にインストールされ、VMウェア(VMware)からのvセンターサービス(vCenter Server)は、仮想化管理プラットフォーム105として使用され得る。
【0017】
一実施形態では、VSANモジュール114は、ハイパーバイザ113内の「VSAN」デバイスドライバとして実行される。そのような実施形態では、VSANモジュール114は概念化(conceptual)「VSAN」115へのアクセスを提供し、概念化「VSAN」115を通して、管理者は、オブジェクトストア116によって裏付けられる幾つかの最上位レベル「デバイス」又は名前空間オブジェクトを生成することができる。一般的な特定のシナリオでは、デバイスオブジェクトの作成中、管理者は、デバイスオブジェクトに特定のファイルシステムを指定し得る(したがって、以下、そのようなデバイスオブジェクトは「ファイルシステムオブジェクト」とも呼ばれる)。例えば、一実施形態では、各ノード111内の各ハイパーバイザ113は、ブートプロセス中、VSANモジュール114によって公開される(exposed)概念的グローバル名前空間の/vsan/ルートノードを発見し得る。例えば、VSANモジュール114によって公開されるAPIにアクセスすることにより、ハイパーバイザ113は、VSAN115に現在存在している全ての最上位レベルファイルシステムオブジェクト(又は他のタイプの最上位レベルデバイスオブジェクト)を特定することができる。VM(又は他のクライアント)がファイルシステムオブジェクトの1つにアクセスを試みる場合、ハイパーバイザ113は、そのときにファイルシステムオブジェクトを動的に「オートマウント(auto-mount)」し得る。例えば、VSAN115を通してアクセス可能なファイルシステムオブジェクト(例えば、/vsan/fs_name1等)が実行されて、同時にアクセスするVMに同時に制御を提供するように構成される、VMwareの分散又はクラスタ化ファイルシステムVMFS等の特定のファイルシステムのセマンティクス(semantics)をエミュレートし得る。VSAN115は複数のファイルシステムオブジェクトをサポートするため、任意の特定のクラスタ化ファイルシステムの制限によって限られずに、オブジェクトストア116を通してストレージリソースを提供することもできる。例えば、多くのクラスタ化ファイルシステム(例えば、VMFS等)は、ノード群111の特定量をサポートするようにしかスケーリングすることができない。複数の最上位レベルファイルシステムオブジェクトサポートを提供することにより、VSAN115は、そのようなクラスタ化ファイルシステムのスケーラビリティ制限を解消する。
【0018】
以下の
図2の説明で更に詳述するように、ファイルシステムオブジェクトはそれ自体、クラスタ110で実行中のVM112によってアクセス可能な幾つかの仮想ディスク記述子ファイル(例えば、vスフィア(vSphere)環境内の.vmdkファイル等)にアクセスを提供し得る。これらの仮想ディスク記述子ファイルは、仮想ディスクの実際のデータを含み、オブジェクトストア116によって別個にバッキングされる仮想ディスク「オブジェクト」への参照を含む。仮想ディスクオブジェクトそれ自体は、階層又は「複合」オブジェクトであり、これは、更に後述するように、仮想ディスクを最初に作成するとき、管理者によって生成された対応するストレージプロファイル又はポリシーのストレージ要件(例えば、容量、可用性、IOPS等)を反映した「構成要素」オブジェクト(ここでもオブジェクトストア116によって別個にバッキングされる)で更に構成される。更に後述するように、各VSANモジュール114は(更に後述する実施形態では、クラスタレベルオブジェクト管理又は「CLOM」サブモジュールを通して)、他のノード111の他のVSANモジュール114と通信して、オブジェクトストア116に記憶された様々なオブジェクトのロケーション、構成、ポリシー、及び関係を記述するメタデータを含むインメモリメタデータデータベース(in-memory metadata database)を作成し保持する(例えば、各ノード111のメモリ内に別個ではあるが、同期して保持される)。このインメモリメタデータデータベースは、例えば、管理者が最初にVMに仮想ディスクを作成するとき、及びVMが仮想ディスク上でI/O動作(例えば、読み取り又は書き込み)を実行し、実行しているとき、ノード111上のVSANモジュール114によって利用される。
図3の状況で更に後述するように、VSANモジュール114は(更に後述される一実施形態では、ドキュメントオブジェクトマネージャ又は「DOM」サブモジュールを通して)、インメモリデータベース内のメタデータを使用してオブジェクトの階層をトラバースし(traverse)、I/O動作を受ける仮想ディスクの部分をバッキングする実際の物理的ローカルストレージを収容する1つ又は複数のノードにI/O動作要求を適宜ルーティングする。
【0019】
図2は、一実施形態による、仮想ディスクを表すオブジェクトストア116内の編成されたオブジェクトの階層構造例を示す。先に上述したように、複数のノード111のうちの1つで実行中のVM112は、オブジェクトストア116内の階層又は複合オブジェクト200として記憶された仮想ディスクに対してI/O動作を実行し得る。ハイパーバイザ113は、VSANモジュール114を通してVSAN115の抽象化とインターフェースすることにより(例えば、一実施形態では、上述したように、仮想ディスクオブジェクトに対応する最上位レベルファイルシステムオブジェクトをオートマウントすることにより)、仮想ディスクにVM112アクセスを提供する。例えば、VSANモジュール114は、インメモリメタデータデータベースのローカルコピーをキューに入れることにより、仮想ディスクの記述子ファイル210(例えば、.vmdkファイル等)を記憶したVSAN115に記憶された特定のファイルシステムオブジェクト205(例えば、一実施形態では、VMFSファイルシステムオブジェクト等)を識別することができる。ファイルシステムオブジェクト205が、仮想化環境をサポートする場合、仮想マシン構成ファイル(例えば、vスフィア(vSphere)環境内の.vmxファイル等)等の目的に合った様々な他のファイルを記憶し得ることを認識されたい。特定の実施形態では、各ファイルシステムオブジェクトは、特定のVMに対応する仮想ディスク(例えば、「VM毎」のファイルシステムオブジェクト)のみをサポートするように構成し得る。
【0020】
記述子ファイル210は、オブジェクトストア116に別個に記憶され、仮想ディスクを概念的に表す複合オブジェクト200(したがって、本明細書では仮想ディスクオブジェクトと呼ばれることもある)への参照を含む。複合オブジェクト200は、仮想ディスク作成時に管理者によって生成される対応するストレージプロファイル又はポリシー内のストレージ要件又はサービスレベル契約(SLA:service level agreement)(例えば、容量、可用性、IOPS等)に合う仮想ディスクのストレージ編成又は構成を記述したメタデータ(本明細書では、仮想ディスク「ブループリント(blueprint)」と呼ばれることもある)を記憶する。例えば、
図2の実施形態では、複合オブジェクト200は、仮想ディスクの2つのミラーリングコピー(例えば、ミラー)がそれぞれ、RAID0構成に更にストライピングされる(striped)RAID1構成を記述した仮想ディスクブループリント215を含む。したがって、複合オブジェクト225は、各仮想ディスクミラー内の各ストライプ(例えば、仮想ディスクのデータパーテーション)に対応する幾つかの「リーフ」又は「構成要素」オブジェクト220
xへの参照を含み得る。(例えば、各ストライプの)各構成要素オブジェクト220のインメモリメタデータデータベース内の、VSANモジュール114によってアクセス可能なメタデータは、ストライプを実際に記憶する物理的ストレージリソース(例えば、磁気ディスク118等)を収容するクラスタ110内の特定のノード111
x(及びそのような物理的リソース内のストライプのロケーション)へのマッピングを提供するか、又は他の様式で識別する。
【0021】
図3は、一実施形態によるVSANモジュール114の構成要素を示す。上述したように、特定の実施形態では、VSANモジュール114は、VSAN115の抽象化をハイパーバイザ113に公開するデバイスドライバとして実行し得る。VSANモジュール114の様々なサブモジュールは、異なる役割を果たし、そのような役割に応じて、ユーザ空間315又はカーネル空間320内で動作し得る。
図3の実施形態に示されるように、VSANモジュール114は、ユーザ空間315内で動作するクラスタレベルオブジェクト管理(CLOM:cluster level object management)サブモジュール325を含む。CLOMサブモジュール325は、管理者によって仮想ディスクの作成中に仮想ディスクブループリントを生成し、そのような仮想ディスクブループリントに作成されたオブジェクトが、管理者によって設定されたストレージプロファイル又はポリシー要件を満たすように構成されることを保証する。(例えば、仮想ディスクの)オブジェクト作成中にアクセスされることに加えて、オブジェクトに関連するストレージプロファイル若しくはポリシーに管理者が変更を行ったとき又はクラスタ若しくは作業負荷への変更が現在のストレージプロファイル若しくはポリシーに準拠しないオブジェクトを生成する場合にも、(例えば、仮想ディスクブループリント又はオブジェクトストア116内の実際の物理的ストレージへの仮想ディスクブループリントのマッピングを動的に改訂又は他の様式で更新するために)CLOMサブモジュール325にアクセスし得る。
【0022】
一実施形態では、管理者が、仮想ディスクオブジェクト200等の複合オブジェクトのストレージプロファイル又はポリシーを作成する場合、CLOMサブモジュール325は、様々なヒューリスティック(heuristics)及び/又は分散アルゴリズムを適用して、ストレージポリシーを満たすか、又は他の様式で適合するクラスタ110内の構成(例えば、ミラーリングを通しての所望の冗長性を達成するとともに、ストライピングを通してアクセス性能を達成するRAID構成、どのノードのローカルストレージが、負荷バランシングを達成するために仮想ディスクの特定の部分/パーテーション/ストライプを記憶すべきか等)を記述する仮想ディスクブループリント215を生成する。例えば、CLOMサブモジュール325は、一実施形態では、仮想ディスクが管理者によって最初に作成されたとき、
図2の仮想ディスクオブジェクト200のRAID1/RAID0構成を記述するブループリント215の生成を担う。上述したように、ストレージポリシーは、容量、IOPS、可用性、及び信頼性についての要件を指定し得る。ストレージポリシーは、作業負荷の特徴付け(workload characterization)(例えば、ランダム又はシーケンシャルアクセス、I/O要求サイズ、キャッシュサイズ、予期されるキャッシュヒット率等)を指定することもできる。さらに、管理者は、特定のノード111(又は特定のノード111内部に収容されたローカルディスク)を優先的に使用するVSANモジュール114への親和性を指定することもできる。例えば、VMに新しい仮想ディスクをプロビジョニングする場合、管理者は、仮想ディスクが確保容量400GB、「150」の読み出しIOPSの確保、「300」の書き込みIOPSの確保、及び所望可用性99.99%を有することを指定するストレージポリシー又はプロファイルを仮想ディスクに生成し得る。生成されたストレージポリシーを受信すると、CLOMサブモジュール325は、VSANモジュール114によって保持されるインメモリメタデータデータベースを照会して、生成されたストレージポリシーに合う複合オブジェクト(例えば、仮想ディスクオブジェクト)の仮想ディスクブループリントを生成するために、クラスタ110の現在状態を特定する。更に後述するように、次に、CLOMサブモジュール325は、ブループリントを対応する分散オブジェクトマネージャ(DOM)サブモジュール340に通信し、DOMサブモジュール340はオブジェクト空間116と対話して、例えば、複合オブジェクトの構成要素オブジェクト(例えば、ストライプ)をクラスタ110の様々なノード111内の物理的ストレージロケーションに割り振るか、又は他の様式でマッピングすることにより、ブループリントを実施する。
【0023】
CLOMサブモジュール325及びDOMサブモジュール340に加えて、
図3に更に示されるように、VSANモジュール114は、クラスタモニタリング、メンバシップ、及びディレクトリサービス(CMMDS:cluster monitoring, membership, and directory services)サブモジュール335を含むこともでき、このモジュールは、上述したインメモリメタデータデータベースを保持して、クラスタ110の状態についての情報をVSANモジュール114の他のサブモジュールに提供するとともに、クラスタ110内の各ノード111のステータス、アクセス可能性、及び可視性をモニタすることによりクラスタ110の全般的な「正常性(health)」を追跡もする。インメモリメタデータデータベースは、様々なノード111、収容されるノード111内のストレージリソース(SSD、磁気ディスク等)及びその特徴/性能、ノード111の現在の状態及び対応するストレージリソース、ノード111間のネットワークパス等のVSAN環境の物理的インベントリ(physical inventory)を保持するディレクトリサービスとして機能する。上述したように、物理的インベントリの保持に加えて、インメモリメタデータデータベースは、オブジェクトストア116に記憶されたオブジェクトのメタデータのカタログ(例えば、どの複合オブジェクト及び構成要素オブジェクトが存在するか、どの構成要素オブジェクトがどの複合オブジェクトに属するか、どのノードが、どのオブジェクトへのアクセスを制御する「コーティネータ」又は「所有者」として機能するか、各オブジェクトのサービス品質要件、オブジェクト構成、物理的ストレージロケーションへのオブジェクトのマッピング等)を更に提供する。上述したように、VSANモジュール114内の他のサブモジュールは、CMMDSサブモジュール335にアクセスして、クラスタトポロジ及びオブジェクト構成の変更を知るために更新し得る(
図3では接続線によって表される)。例えば、上述したように、仮想ディスク作成中、CLOMサブモジュール325は、インメモリメタデータデータベースにアクセスして、仮想ディスクブループリントを生成し、実行中のVM112からのI/O動作を処理するために、DOMサブモジュール340は、インメモリメタデータデータベースにアクセスして、対応する複合オブジェクト(例えば、仮想ディスクオブジェクト)の構成要素オブジェクト(例えば、スクリプト)を記憶したノード111と、I/O動作を満たすためにそれらのノードに到達可能なパスと特定する。
【0024】
上述したように、DOMサブモジュール340は、I/O動作の処理中及びオブジェクト作成中、DOMサブモジュール340が実行される特定のノード111のローカルストレージに記憶されたオブジェクトストア116内の構成要素オブジェクト及びノード111が現在、「コーディネータ(coordinator)」又は「所有者(owner)」として指定されている特定の他の複合オブジェクトへのアクセスを制御するとともに、それらに対する動作を処理する。例えば、VMからのI/O動作を処理する場合、特定の実施形態での複合オブジェクトの階層性に起因して、ターゲット複合オブジェクト(例えば、I/O動作の対象である仮想ディスクオブジェクト)のコーディネータとして機能するDOMサブモジュール340は、第2のノード111のローカルストレージに記憶され、I/O動作の対象である仮想ディスクの部分である仮想ディスクオブジェクトの特定の構成要素オブジェクト(例えば、ストライプ等)のコーディネータとして機能する第2のノード111(又は複数の第2のノード111)内の異なるDOMサブモジュール340と、ネットワークを介して更に通信する必要があり得る。I/O動作を発行しているVMが、仮想ディスクオブジェクトのコーディネータとも異なるノード111に存在する場合、VMを実行しているノードのDOMサブモジュール340は、コーディネータのDOMサブモジュール340とも、ネットワークを介して通信する必要がある。特定の実施形態では、I/O動作を実行しているVMが、I/O動作の対象である仮想ディスクオブジェクトのコーディネータと異なるノードに存在する場合、2つのノードの2つのDOMサブモジュール340は通信して、仮想ディスクオブジェクトのコーディネータの役割を、VMを実行中のノードに変更し得る(例えば、それにより、VMを実行中のノードと、仮想ディスクオブジェクトのコーディネータとして機能しているノードとの間でI/O動作を調整するために必要なネットワーク通信量が低減する)。
【0025】
DOMサブモジュール340はまた、同様に、オブジェクト作成中、互いに通信する。例えば、仮想ディスク作成中にCLOMモジュール325によって生成された仮想ディスクブループリントは、どのノード111が仮想ディスクオブジェクトのコーディネータとして機能すべきかを指定する情報及び対応する複合オブジェクト(スクリプト等)を指定する情報を含み得る。そのような指定されたノードの各DOMサブモジュール340は、各オブジェクトを作成し、(必要な場合)ローカルストレージをそのようなオブジェクトに割り振り、オブジェクトを対応するCMMDSサブモジュール335に通知して、オブジェクトに関するメタデータを用いてインメモリメタデータデータベースを更新する要求が発行される(例えば、実施形態に応じて、仮想ディスクオブジェクトのコーディネータとして指定されるDOMサブモジュール340又は仮想ディスクブループリントを生成するノードのDOMサブモジュール340等により)。そのような要求を実行するために、DOMサブモジュール340はログ構造化オブジェクトマネージャ(log structured object manager : LSOM)サブモジュール350と対話し、LSOMサブモジュール350は、ノード111のローカルSSD及び磁気ディスクとの通信を実際に推進するVSANモジュール114内の構成要素として機能する。ローカルストレージを構成要素オブジェクトに割り振ること(及びノードがコーディネータとして機能する複合オブジェクトのポリシー及び構成等の他のメタデータを記憶すること)に加えて、LSOMサブモジュール350は、ノード111のローカルストレージへのI/O動作フローを更にモニタして、例えば、ストレージリソースが輻輳しているか否かを報告する。
【0026】
図3は、論理エンドポイント(例えば、ノード、オブジェクト等)間の任意のサイズのデータグラム(datagram)を送る高信頼データグラムトランスポート(reliable datagram transport : RDT)サブモジュール345も示し、ここで、エンドポイントは潜在的に、複数のパスを介し得る。一実施形態では、基本となるトランスポートはTCPである。代替的には、RDMA等の他のトランスポートが使用され得る。RDTサブモジュール345は、例えば、上述したようにオブジェクトを作成するため又はI/O動作を処理するためにDOMサブモジュール340が互いに通信する場合、使用される。特定の実施形態では、RDTモジュール345はCMMDSモジュール335と対話して、論理的エンドポイントのアドレスを動的に分解して、インメモリメタデータデータベース内の最新のロケーション情報を維持するとともに、リンクの正常性に基づいて接続の作成、除去、又は再確立を行う。例えば、CMMDSモジュール335によりリンクが正常ではないと報告する場合、RDTサブモジュール345は、よりよい状態のリンクを優先してその接続を遮断し得る。
【0027】
図4は、一実施形態による、定義されたストレージポリシーに基づいて仮想ディスクオブジェクトを作成する方法の流れ図を示す。例えば、ステップ400において、管理者は、仮想管理プラットフォーム105のユーザインターフェースと対話して、容量要件、可用性要件、及びIOPS要件(例えば、定義されたストレージポリシー)を有する仮想ディスクを作成し得る。一実施形態では、次に、ステップ405において、仮想管理プラットフォーム105は、「マスタ」ノード111に仮想ディスクのオブジェクトを作成するように要求し得る。ステップ410において、そのようなマスタノード111は、VSANモジュール内のCLOMサブモジュール325を通して仮想ディスクブループリントを生成し得る。上述したように、CLOMサブモジュール325は、CMMDSサブモジュール335のインメモリメタデータデータベースを照会することによって特定されるクラスタ110のステータスに基づいて、仮想ディスクオブジェクト(例えば、複合オブジェクト)の作成の仮想ディスクブループリントを生成する。仮想ディスクブループリントは、仮想ディスクオブジェクトのコーディネータ又は所有者として機能すべき特定のノードを識別し得る。ステップ415において、マスタノード111のDOMサブモジュール340は、識別されたノードのDOMサブモジュール340に、仮想ディスクオブジェクトを作成するように要求し得る。ステップ420において、識別されたノードのDOMサブモジュール340は、要求を受信し、例えば、対応するLSOMサブモジュール350と通信して、仮想ディスクオブジェクトを記述するメタデータをローカルストレージに永続的に記憶することにより、仮想ディスクオブジェクトを作成する。ステップ425において、DOMサブモジュール340は、仮想ディスクオブジェクトブループリントに基づいて、仮想ディスクブループリント内の任意の構成要素オブジェクトのコーディネータ又は所有者として機能するように指定されているクラスタ110内の他のノードを識別する。DOMサブモジュール340は、構成要素オブジェクトのコーディネータとして機能し、(例えば、RDTサブモジュール345を使用して)そのような構成要素オブジェクトをバッキングするデータをローカルストレージに記憶する他のノードのDOMサブモジュール340と通信する。そのようなDOMサブモジュール340は、仮想ディスクオブジェクトのコーディネータのDOMサブモジュール340から、各構成要素オブジェクトを作成する要求を受信する場合、ステップ430において、各LSOMモジュール350と通信して、ローカルストレージを構成要素オブジェクト(及び関連するメタデータ)に割り振る。そのような構成要素オブジェクトが作成されると、DOMサブモジュール340は、ステップ435において、CMMDSサブモジュール335のインメモリメタデータデータベースに構成要素の作成を通知する。そして、ステップ440において、仮想ディスクオブジェクトのコーディネータのDOMサブモジュール340も、その作成をCMMDSサブモジュール335に通知して、インメモリメタデータデータベースを更新し、最終的に、(例えば、仮想管理プラットフォーム105へのマスタノード通信を介して)肯定応答を管理者に送信する。
【0028】
図5は、一実施形態による、VMから発せられたI/O動作の中止を示す。特定のノードで実行中のVMが、仮想ディスクに対してI/O動作を実行する場合、VMのゲストオペレーティングシステムは、ステップ500において、(ゲストオペレーティングシステムのデバイスドライバを通して)仮想ディスクを対象としたI/O動作要求を送信し、この要求は、ステップ505において、ハイパーバイザ113によって受信され、最終的に、ハイパーバイザ113内のI/Oスタックの様々なレイヤを通してVSANモジュール114のDOMサブモジュール340に送信され変換される。ステップ510において、DOMサブモジュール340によって受信されたI/O要求は、DOMサブモジュール340がCMMDSサブモジュール335のインメモリメタデータデータベースにアクセスすることにより、仮想ディスクオブジェクトのコーディネータノードを識別するために使用する仮想ディスクを表すオブジェクトの一意の識別子を含む(特定の実施形態では、インメモリメタデータデータベースにアクセスして、一意の識別子へのコーディネータノードの識別情報のマッピングを調べることは、仮想ディスクオブジェクトが最初にアクセスされるときのみ行われ、そのようなマッピングは、続く参照が必要ないように、将来のI/O動作で持続する)。仮想ディスクオブジェクトのコーディネータノードを識別すると、VMを実行中のノードのDOMサブモジュール340は、コーディネータノードのDOMサブモジュール340と通信して(例えば、RDTサブモジュール345を使用して)、ステップ515において、I/O動作を実行することを要求する。上述したように、特定の実施形態では、VMを実行中のノード及び仮想ディスクオブジェクトのコーディネータとして機能するノードが異なる場合、2つのDOMサブモジュールは通信して、実行中のVMのノードであるように、仮想ディスクオブジェクトのコーディネータの役割を更新する。I/O要求をコーディネータが受信すると、ステップ520において、DOMサブモジュールは、(例えば、特定の実施形態では、再びインメモリメタデータデータベースを参照することにより)I/O動作の対象である仮想ディスクオブジェクトの特定の構成要素オブジェクト(例えば、スクリプト)のコーディネータノードを識別する。例えば、I/O動作がRAID0構成の複数のストライプ(例えば、複数の構成要素オブジェクト)に広がる場合、DOMサブモジュール340は、I/O動作を分割し、2つのストライプに対応する関連する構成要素オブジェクトの各コーディネートノードに、対応するI/O要求を適宜送信し得る。ステップ525において、仮想ディスクオブジェクトのコーディネータノードのDOMサブモジュールは、識別された構成要素オブジェクトのコーディネータノードのDOMサブモジュールが、I/O動作要求を実行することを要求し、ステップ530において、識別された構成要素オブジェクトのそのようなコーディネータノードのDOMサブモジュールは、対応するLSOMサブモジュールと対話して、構成要素オブジェクトが記憶されたローカルストレージリソース内でI/O動作を実行する。
【0029】
特定の状況では、複数のクライアント(例えば、実行中のVMの代理として機能する他のVSANモジュール114)が、任意の所与の時間に特定のノードに配置された特定のローカルストレージリソースでI/O動作を実行する要求を同時に送信し得ることを認識されたい。例えば、異なるVMに対応する異なる仮想ディスクオブジェクトの構成要素オブジェクト(例えば、ストライプ等)は、同じノード上の同じローカルストレージによってバッキングし得る。I/O動作を受信すると、そのようなノードのVSANモジュール114は、実行のために、I/O動作をストレージリソースキューに配置し得る。例えば、複数のクライアントが構成要素オブジェクトにアクセスすることによって生じるローカルストレージリソースのI/Oキュー内の輻輳又はオーバーフローの可能性を低減するために、VSANモジュール114は(上述したように、LSOMサブモジュールを介して)、ローカルストレージリソースの使用をモニタし、ローカルストレージにアクセスを試みているクライアントに輻輳メトリックを出力し得る。輻輳メトリックは、更に詳細に後述するように、クライアントが、追加のI/O要求をローカルストレージリソースに送信する前に遅延を計算するために使用し得る測定を提供する。
【0030】
図6は、一実施形態による、VSANモジュールによりクライアントに輻輳メトリックを送信する方法の流れ図を示す。例えば、異なる複合オブジェクトの構成要素は、同じノードに存在し、SSD及び磁気ディスクIOPS等の共有ローカルリソースに関して競合し得る。上述したように、各ノードのLSOMサブモジュール350は、各構成要素に適用されるローカル構成要素オブジェクト及びポリシーの構成を含む。さらに、LSOMサブモジュール350は、構成要素オブジェクトのリソース使用をモニタして、構成要素オブジェクトがポリシーに従うことを保証する。構成要素オブジェクトにアクセスしているクライアント(例えば、実行中のVMの代理として機能している他のVSANモジュール)が、そのオブジェクトのIOPSの割り振りを超えている場合、VSANモジュール114は(LSOMサブモジュール350を通して)、輻輳メトリックをクライアントに送信し、それに応じて、クライアントは続くI/O要求を遅延させる。ステップ605において、クラスタ110内のノード111のVSANモジュール114は、ノード111に存在する構成要素オブジェクトにアクセスしているクライアントから発せられたI/O動作要求を受信する。例えば、VSANモジュール114は(DOMサブモジュール340を通して)、実行中のVMに対応する仮想ディスクオブジェクトの構成要素オブジェクト(例えば、ストライプ等)のコーディネータとして機能し得る。ステップ610において、I/O動作要求を受信すると、VSANモジュール114は(LSOMサブモジュール350を通して)、例えば、対応する仮想ディスクオブジェクトを構成する他の異なる構成要素オブジェクトにアクセスするために、同じローカルストレージにアクセス中であり得る他のクライアントに起因して、構成要素オブジェクトをバッキングしているローカルストレージリソースのIOPS容量を超えている(例えば、競合及び潜在的な輻輳を生じさせる)か否かを判断する。競合がない場合、ステップ615において、VSANモジュール114は、LSOMサブモジュール350と通信して、ローカルストレージリソースにアクセスすることにより、I/O動作要求を処理することに進む。
【0031】
しかし、ローカルストレージリソースのIOPS容量を超えている場合、ステップ620において、ローカルLSOMサブモジュール350は、ローカルストレージリソースとのI/Oを現在行っており、ストレージポリシーにおいて指定されるIOPS確保を超えている任意のクライアントの輻輳メトリックを計算する。一実施形態では、LSOMサブモジュール350は、(例えば、前の値を減衰させ、最近の輻輳測定を追加することにより)時間加重和(time-weighted sum)を使用して輻輳メトリックを計算する。さらに、特定の実施形態では、LSOMサブモジュール350は、ローカルストレージリソースの他のクライアントによる使用に相対するローカルストレージリソースのクライアントの使用に基づいて、各クライアントの異なる輻輳メトリックを計算し得る。一実施形態では、クライアントが、クラスタ110の異なるノードに配置された複数のローカルストレージリソースにアクセスしている(例えば、クライアントから発せられたI/O動作が、異なる構成要素オブジェクトに向けられた複数のI/O動作に分割される)場合、VSANモジュール114は、(LSOMサブモジュール350を通して)その他のノードのVSANモジュール114と通信して、その他のノードに存在するその他のVSANモジュールから生成される生じ得る輻輳のメトリックとその輻輳メトリックとを組み合わせて、クライアントの全体輻輳メトリックを生成し得る。
【0032】
ステップ625において、VSANモジュール114は、輻輳メトリックをクライアントに送信する。受信すると、クライアントは、DOMサブモジュール340を通して、輻輳メトリックを使用し、クライアントが使用中のリソース量と、輻輳メトリックによって記述される輻輳量とに基づいて、続くI/O動作要求をどれくらい遅延させるかを決定する。すなわち、リソースを使い過ぎているクライアントへの固定期間の遅延を強制する(そのような手法は、使用の不要な変動を生じさせるおそれがある)のではなく、特定の実施形態では、輻輳メトリックは、メトリックに比例する分散(distribution)からランダム遅延期間を計算するための情報をクライアントに提供する。読み出し動作及び書き込み動作に必要とされるサービスコストは異なるため、輻輳メトリックによって必要とされる待機期間は、I/O動作のタイプ及びサイズに依存し得る。例えば、輻輳メトリックは、読み出し動作よりも書き込み動作の場合により長い遅延期間を必要とし得、その理由は、一般に、書き込み動作が読み出し動作よりも計算的に高負荷(expensive)であるためである。
【0033】
代替の一実施形態では、VSANモジュールは、ローカルストレージリソースにアクセスしているあらゆるクライアントに、そのようなクライアントが確保された割り振りを超えているか否かに関係なく、異なる輻輳メトリックを出力し得る。確保された割り振りを超えているクライアントに送信される輻輳メトリックは、そのようなクライアントによる続くI/O動作要求の送信を遅延させることになり得るが、確保された割り振り内でローカルストレージリソースにアクセスしているクライアントは、遅延なしでI/O動作要求を送信することを許可する輻輳メトリック(例えば、ゼロメトリック)を受信し得る。輻輳が収まった後、VSANモジュール114は、各クライアント要求後の輻輳メトリックの送信を止め得る。
【0034】
代替の実施形態では、ホストLSOMサブモジュール350は、輻輳のローカル測定を計算し、特定のクライアントのリソース使用に向けて輻輳メトリックを調整せずに、輻輳メトリックを各クライアントに送信する。送信されると、クライアントは、オーバーサブスクライブ(oversubscribing)の場合、要求を遅延させる。オーバーサブスクライブの場合、輻輳に応答するかどうかは消費クライアント次第であり得る。
【0035】
図7は、一実施形態による、輻輳中にVSANモジュールへのI/O要求を遅延させる方法を示す。ステップ705において、クラスタ110のノードで実行中のクライアント(例えば、VMをサポートしているノード111のVSANモジュール114)は、
図6に説明されるように、I/O動作要求を仮想ディスクに送信した結果として、輻輳メトリックを受信し得る。例えば、クライアントVSANモジュール114のLSOMサブモジュール350は、オブジェクトを記憶しているノードのVSANモジュール114のLSOMサブモジュール350と通信し、そのような輻輳メトリックを受信し得る。クライアントVSANモジュール114のDOMサブモジュール340は、輻輳メトリックに基づいて時間遅延を計算し得る。輻輳メトリックを受信すると、クライアントVSANモジュール114が、追加のI/O動作要求を送信する必要がある場合、ステップ710において、例えば、ある範囲にわたるランダム分布に基づいて、(DOMサブモジュール340を通して)要求を送信する前に遅延する時間を計算し、最大値は輻輳メトリックの関数である。ステップ715において、クライアントVSANモジュール114は、I/O動作要求を送信する前に、計算された遅延だけ待機する。輻輳メトリックから計算された待機期間は、クライアントが確保された割り振りを超えているIOPS量に基づき得る。すなわち、確保された割り振りを、小量だけ超えているクライアントよりもはるかに超えているクライアントほど、長期間にわたり要求を遅延させるように求められ得る。
【0036】
1つ又は複数の実施形態について、理解を明確にするために幾らか詳細に説明したが、特許請求の範囲内で特定の変更及び変形が行われ得ることが明らかであろう。したがって、記載される実施形態は、限定ではなく例示として見なされるべきであり、特許請求の範囲は、本明細書に付与される詳細に限定されるべきではなく、特許請求の範囲及び均等物内で変更が可能である。例えば、幾つかの上述した実施形態は、VSANモジュールによって提供される仮想ディスクにアクセスするクライアントとして仮想マシンを記載するが、代替の実施形態では、非仮想化ホストサーバ及び/又はそこで実行中の非仮想化アプリケーションのクラスタ等の任意のクライアントが同様にVSANモジュールを利用し得ることを認識されたい。同様に、VSANモジュールの代替の実施形態は、限定ではなく、RESTオブジェクト、ファイル、ファイルシステム、ブロブ(バイナリラージオブジェクト)、及び他のオブジェクト等の仮想ディスク以外の高レベルストレージオブジェクトの作成が可能であり得る。同様に、上記実施形態で記載された輻輳回避技法は主に、ローカルストレージリソースへの対処に関連したが、代替の実施形態は、例えば、単一のノードが、2つの異なるVMによって現在アクセスされている2つの異なる仮想ディスクのコーディネータとして動作する場合に生じ得るメモリ、処理、及び/又はネットワーキングリソースに対する競合を低減するためにも、同様の技法を利用し得る。そのような実施形態では、DOMサブモジュール340は、CPU、メモリ、及びネットワーキングでのリソース使用もモニタして、ローカルストレージリソースのIOPS及び容量等のリソース使用をモニタする際のLSOMサブモジュール350と同様に、それらのリソースに対する競合に対処し得る(又は代替的には、LSOMサブモジュール350は、CPU、メモリ、及び/又はネットワーキング使用をモニタするように構成することもできる)。同様に、VSANモジュール114は、ハイパーバイザ113に埋め込まれるものとして一般に説明されたが、代替の実施形態は、例えば、特別な仮想マシン又は仮想アプライアンス、別個のアプリケーション、又は分散オブジェクト記憶を提供し管理するために計算プラットフォームに挿入することができる任意の他の「プラグ可能」モジュール若しくはドライバとして、ハイパーバイザ113とは別個のVSANモジュールを実施し得る。
【0037】
説明したように、本明細書に記載された実施形態は、分散リソースへの輻輳を測定し、サービス品質を制御する。有利なことには、リソースが競合し、リソースを使用しすぎている全てのクライアントによる要求の遅延を求めながら、輻輳メトリックをクライアントに発行することにより、これらの実施形態は、分散リソースにアクセスするに際して予測可能性を提供し、プロビジョニングされたようにリソースを使用するクライアントへの待ち時間を短くする。さらに、リソースキューではなくリソースアプリケーションへの入口において要求を遅延させることに求められるのは、従来の解決策で要求されるよりも複雑性の低いキューイング論理である。
【0038】
本明細書に記載される様々な実施形態は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は、物理的数量の物理的操作を必要とし得、必ずしもではないが通常、これらの数量は電気信号又は磁気信号の形態を取り得、電気信号又は磁気信号又はそれらの表現は、記憶、転送、結合、比較、又は他の様式での操作が可能である。さらに、そのような操作は、多くの場合、用語に関して、製造、識別、特定、又は比較等と呼ばれる。1つ又は複数の実施形態の一部をなす本明細書に記載される任意の動作は、有用なマシン動作であり得る。さらに、本開示の1つ又は複数の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は特に、特定の所要目的に向けて構築されてもよく、又はコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化若しくは構成される汎用コンピュータであってもよい。特に、様々な汎用マシンが、本明細書での教示に従って書かれたコンピュータプログラムと併用され得、又は必要とされる動作を実行するより専用化された装置を構築することがより好都合であり得る。
【0039】
本明細書に記載される様々な実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース又はプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含め、他のコンピュータシステム構成を用いて実施し得る。
【0040】
1つ又は複数の実施形態は、1つ若しくは複数のコンピュータプログラムとして、又は1つ若しくは複数のコンピュータ可読媒体で実施される1つ若しくは複数のコンピュータプログラムモジュールとして実施され得る。コンピュータ可読媒体という用語は、データを記憶することができる任意のデータ記憶デバイスを指し、データは後にコンピュータシステムに入力することができ、コンピュータ可読媒体は、コンピュータにより読み出し可能にするようにコンピュータプログラムを実施する任意の既存又は後に開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリデバイス)、CD(コンパクトディスク)、CD−ROM、CD−R、又はCD−RW、DVD(デジタル多用途ディスク)、磁気テープ、並びに他の光学及び非光学データ記憶デバイスが挙げられる。コンピュータ可読媒体は、ネットワーク結合されたコンピュータシステムに分散することもでき、それにより、コンピュータ可読コードは分散して記憶され実行される。
【0041】
加えて、記載の仮想化方法は一般に、仮想マシンが特定のハードウェアシステムに一致するインターフェースを提示すると仮定したが、記載の方法は、任意の特定のハードウェアシステムに直接対応しない仮想化と併せて使用することが可能である。ホスト実施形態、非ホスト実施形態、又は2つの区別が曖昧でありがちな実施形態として実施される、様々な実施形態による仮想化システムが全て考えられる。さらに、様々な仮想化動作は、全体的又は部分的にハードウェアで実施し得る。例えば、ハードウェア実施は、非ディスクデータを保護するために、ストレージアクセス要求を変更するためにルックアップテーブルを利用し得る。
【0042】
仮想化の程度の関係なく、多くの変形、変更、追加、及び改善が可能である。したがって、仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、又はゲストオペレーティングシステムの構成要素を含む。複数のインスタンスが、1つのインスタンスとして本明細書に記載される構成要素、動作、又は構造に提供され得る。最後に、様々な構成要素、動作、及びデータストア間の境界は幾らか任意のものであり、特定の動作は、特定の例示的な構成の文脈で示されている。機能の他の割り振りが考えられ、1つ又は複数の実施形態の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造及び機能は、結合された構造又は構成要素として実施され得る。同様に、1つの構成要素として提示される構造及び機能は、別個の構成要素として実施され得る。これら及び他の変形、変更、追加、及び改善は、添付の特許請求の範囲内にあり得る。特許請求の範囲では、要素及び/又はステップは、特許請求の範囲において明示的に記載される場合を除き、いかなる特定の順序の動作も暗示しない。