(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6074038
(24)【登録日】2017年1月13日
(45)【発行日】2017年2月1日
(54)【発明の名称】共用記憶域上にある仮想ディスクのトランスペアレントなホスト側キャッシング
(51)【国際特許分類】
G06F 12/00 20060101AFI20170123BHJP
G06F 9/46 20060101ALI20170123BHJP
G06F 9/50 20060101ALI20170123BHJP
【FI】
G06F12/00 514M
G06F12/00 535Z
G06F9/46 350
G06F9/46 462Z
【請求項の数】18
【全頁数】14
(21)【出願番号】特願2015-528720(P2015-528720)
(86)(22)【出願日】2013年8月27日
(65)【公表番号】特表2015-526823(P2015-526823A)
(43)【公表日】2015年9月10日
(86)【国際出願番号】US2013056857
(87)【国際公開番号】WO2014036005
(87)【国際公開日】20140306
【審査請求日】2015年2月24日
(31)【優先権主張番号】61/693,591
(32)【優先日】2012年8月27日
(33)【優先権主張国】US
(31)【優先権主張番号】13/922,985
(32)【優先日】2013年6月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】フェラン、トーマス エイ.
(72)【発明者】
【氏名】ラワット、マヤンク
(72)【発明者】
【氏名】リュー、デン
(72)【発明者】
【氏名】マドナニ、キラン
(72)【発明者】
【氏名】バンダルーパリ、サンバシバ
【審査官】
小林 哲雄
(56)【参考文献】
【文献】
特開2012−123556(JP,A)
【文献】
特開2011−170475(JP,A)
【文献】
特開2008−257572(JP,A)
【文献】
米国特許出願公開第2012/0210066(US,A1)
【文献】
国際公開第2011/092738(WO,A1)
【文献】
米国特許出願公開第2006/0155931(US,A1)
【文献】
特開2003−015938(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 9/46
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
ホスト側キャッシュを使用して仮想マシン(VM)の入出力を加速するための方法であって、
ホストシステムのハイパーバイザにより、前記ホストシステム上で実行されているVMからの入出力要求を傍受するステップであって、前記入出力要求は、前記ホストシステム及び1つ又は複数の他のホストシステムにより共有される共用記憶装置上にある仮想ディスクに宛てられている、傍受するステップと、
前記ハイパーバイザによりホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップと
を含み、
前記ホスト側キャッシュは、前記ホストシステムと通信する複数のキャッシュ装置にあり、かつ前記複数のキャッシュ装置にわたって分散され、前記複数のキャッシュ装置は、前記共用記憶装置とは別であり、
前記ホスト側キャッシュがアクセスされていることを前記VMのゲストオペレーティングシステムが知らないことから、前記ホスト側キャッシュのアクセスは前記VMにとってトランスペアレントであり、
共通ファイルシステムを用いて前記複数のキャッシュ装置をプールすることにより、前記ホスト側キャッシュが単一の論理資源として前記ハイパーバイザに提示される、方法。
【請求項2】
前記ホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップが、前記VM又は前記仮想ディスクと共に使用するように事前に設定されているキャッシングモジュールを呼び出すステップを含む、請求項1に記載の方法。
【請求項3】
前記キャッシングモジュールが、サードパーティ開発者によって実装される前記ハイパーバイザのモジュールコンポーネントである、請求項2に記載の方法。
【請求項4】
前記複数のキャッシュ装置が異機種の装置である、請求項1に記載の方法。
【請求項5】
前記VMへの電源投入時に、前記VM又は前記仮想ディスクに前記ホスト側キャッシュの一部が割り当てられ、割当部分は、事前に設定された最小サイズ及び事前に設定された最大サイズを有する、請求項1に記載の方法。
【請求項6】
前記VMの電源が切られるとき又は前記VMが別のホストシステムにマイグレートされるとき、前記割当部分が解放される、請求項5に記載の方法。
【請求項7】
ホストシステムのプロセッサによって実行可能なコンピュータソフトウェアを記憶している非一時的なコンピュータ可読記憶媒体であって、前記コンピュータソフトウェアは、ホスト側キャッシュを使用してVMの入出力を加速するための方法を具体化し、前記方法は、
前記ホストシステム上で実行されているVMからの入出力要求を傍受するステップであって、前記入出力要求は、前記ホストシステム及び1つ又は複数の他のホストシステムにより共有される共用記憶装置上にある仮想ディスクに宛てられている、傍受するステップと、
ホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップと
を含み、
前記ホスト側キャッシュは、前記ホストシステムと通信する複数のキャッシュ装置にあり、かつ前記複数のキャッシュ装置にわたって分散され、前記複数のキャッシュ装置は、前記共用記憶装置とは別であり、
前記ホスト側キャッシュがアクセスされていることを前記VMのゲストオペレーティングシステムが知らないことから、前記ホスト側キャッシュの前記アクセスは前記VMにとってトランスペアレントであり、
共通ファイルシステムを用いて前記複数のキャッシュ装置をプールすることにより、前記ホスト側キャッシュが単一の論理資源として提示される、非一時的なコンピュータ可読記憶媒体。
【請求項8】
前記ホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップが、前記VM又は前記仮想ディスクと共に使用するように事前に設定されているキャッシングモジュールを呼び出すステップを含む、請求項7に記載の非一時的なコンピュータ可読記憶媒体。
【請求項9】
前記キャッシングモジュールが、サードパーティ開発者によって実装されるモジュールコンポーネントである、請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【請求項10】
前記複数のキャッシュ装置が異機種の装置である、請求項7に記載の非一時的なコンピュータ可読記憶媒体。
【請求項11】
前記VMへの電源投入時に、前記VM又は前記仮想ディスクに前記ホスト側キャッシュの一部が割り当てられ、割当部分は、事前に設定された最小サイズ及び事前に設定された最大サイズを有する、請求項7に記載の非一時的なコンピュータ可読記憶媒体。
【請求項12】
前記VMの電源が切られるとき又は前記VMが別のホストシステムにマイグレートされるとき、前記割当部分が解放される、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項13】
ホストシステムであって、
プロセッサと、
非一時的なコンピュータ可読媒体であって、前記プロセッサによって実行されるとき、
ホストシステム上で実行されているVMからの入出力要求を傍受することであって、前記入出力要求は、前記ホストシステム及び1つ又は複数の他のホストシステムにより共有される共用記憶装置上にある仮想ディスクに宛てられている、傍受すること、
前記ホストシステムと通信する複数のキャッシュ装置にあり、かつ前記複数のキャッシュ装置にわたって分散されているホスト側キャッシュにアクセスすることによって前記入出力要求を処理することであって、前記複数のキャッシュ装置は、前記共用記憶装置とは別である、処理すること
を前記プロセッサに行わせるプログラムコードを記憶している前記非一時的なコンピュータ可読媒体と
を含み、
前記ホスト側キャッシュがアクセスされていることを前記VMのゲストオペレーティングシステムが知らないことから、前記ホスト側キャッシュの前記アクセスは前記VMにとってトランスペアレントであり、
共通ファイルシステムを用いて前記複数のキャッシュ装置をプールすることにより、前記ホスト側キャッシュが単一の論理資源として提示される、ホストシステム。
【請求項14】
前記ホスト側キャッシュにアクセスすることによって前記入出力要求を処理することを前記プロセッサに行わせる前記プログラムコードが、前記VM又は前記仮想ディスクと共に使用するように事前に設定されているキャッシングモジュールを呼び出すことを前記プロセッサに行わせるプログラムコードを含む、請求項13に記載のホストシステム。
【請求項15】
前記キャッシングモジュールが、サードパーティ開発者によって実装されるモジュールコンポーネントである、請求項14に記載のホストシステム。
【請求項16】
前記複数のキャッシュ装置が異機種の装置である、請求項13に記載のホストシステム。
【請求項17】
前記VMへの電源投入時に、前記VM又は前記仮想ディスクに前記ホスト側キャッシュの一部が割り当てられ、割当部分は、事前に設定された最小サイズ及び事前に設定された
最大サイズを有する、請求項13に記載のホストシステム。
【請求項18】
前記VMの電源が切られるとき又は前記VMが別のホストシステムにマイグレートされるとき、前記割当部分が解放される、請求項17に記載のホストシステム。
【発明の詳細な説明】
【背景技術】
【0001】
データセンタ及び企業環境では、様々なホストシステム上で実行される仮想マシン(VM)が、ネットワーク化された記憶アレイ等の共用記憶装置上にある仮想ディスク(VMDK)にアクセスすることは一般的である。VMDKを記憶するために共用記憶域を使用することは、ホストシステムにとってローカルな記憶域を使用することに勝る幾つかの利点をもたらす。例えば、或る共用記憶域の実装形態は、とりわけ多数のホストシステムを含む環境内での記憶域の保守及び構成を合理化することができる。或る共用記憶域の実装形態は、ホストフェールオーバやVMのライブマイグレーション等、特定の仮想化管理技法を使用可能にすることができる。
【0002】
しかし、上記の利点にも関わらず、共用記憶域のVMDKにアクセスすることは場合によってはVMの入出力性能に悪影響を及ぼし得る。例えば、共用記憶装置への入出力に関与するVMは、VMのホストシステムと共用記憶装置との間のネットワーク遅延時間、共用記憶装置における入出力の輻輳等の要因により、貧弱な入出力性能に見舞われる可能性がある。一部のサーバベンダは、キャッシュとして使用するためにホストシステム内にフラッシュ記憶装置を組み込むことにより、この性能の問題に対処しようと試みている。不都合なことに、かかるフラッシュ記憶装置をキャッシュとして活用するための既存の技法は、VMレベルの修正及びフラッシュ記憶装置の特定のブランドに固有なキャッシュ管理メカニズムのうちの少なくとも一方を一般に必要とする。その結果、これらの既存の技法は、如何なる仮想化システム環境内でも容易且つ柔軟に実装可能な汎用ホスト側キャッシングソリューションを提供することができない。
【発明の概要】
【課題を解決するための手段】
【0003】
VMの入出力を加速するために、ホスト側キャッシュを使用するための技法を提供する。一実施形態では、ホストシステムのハイパーバイザが、ホストシステム上で実行されているVMからの入出力要求を傍受することができ、入出力要求は共用記憶装置上にある仮想ディスクに宛てられている。次いでハイパーバイザは、共用記憶装置とは別の1つ又は複数のキャッシュ装置にあるホスト側キャッシュにアクセスすることによってその入出力要求を処理することができ、ホスト側キャッシュのアクセスはVMにとってトランスペアレントである。
【0004】
以下の詳細な説明及び添付図面は、特定の実施形態の性質及び利点をより良く理解できるようにする。
【図面の簡単な説明】
【0005】
【
図1】一実施形態による、トランスペアレントなホスト側キャッシングを支援するシステム環境のブロック図を示す。
【
図2】一実施形態による、ホスト側キャッシュを構成するための流れ図を示す。
【
図3】一実施形態による、トランスペアレントなホスト側キャッシングを行うための
図1のシステム環境内の流れを示す。
【
図4】一実施形態による、VM/VMDKキャッシュ割当を解放するための流れ図を示す。
【
図5】一実施形態による、VMのライブマイグレーション中、ホスト側キャッシュのコンテンツを移送するための流れ図を示す。
【発明を実施するための形態】
【0006】
以下の説明では、様々な実施形態の理解を可能にするために、数多くの例及び詳細を説明目的で記載する。但し、特定の実施形態は、それらの詳細の一部なしで実施することができ、又はその修正形態又は等価物によって実施できることが当業者にとって明らかである。
【0007】
本開示では、ホスト側キャッシュを使用してVMの入出力を加速するために、ホストシステムのハイパーバイザ内に実装可能なフレームワークについて説明する。一実施形態では、VMから生じる入出力要求をハイパーバイザが傍受することができ、入出力要求は共用記憶装置(例えばネットワーク化された記憶アレイ)上にあるVMDKに宛てられている。次いでハイパーバイザは、アクセスがVMにとって「トランスペアレント」である(即ちホスト側キャッシュがアクセスされていること又はホスト側キャッシュが存在することをVMが全く知らない)ように、共用記憶装置とは別の1つ又は複数のキャッシュ装置(例えばフラッシュ記憶装置)上にあるホスト側キャッシュにアクセスすることによってその入出力要求を処理することができる。
【0008】
このフレームワークにより、ホスト側キャッシュを活用するためにVMレベルでコードを実装する必要がない。代わりに、全キャッシングプロセスを、ハイパーバイザによって、及びハイパーバイザの内部で自動化することができる。その結果、各VMのソフトウェア構成に関わらず、フレームワークが、VMの入出力性能をハイパーバイザのVMの全てにわたって加速することができる。
【0009】
更に、特定の実施形態では、フレームワークがキャッシュ装置及び共用記憶装置のどちらにも縛られなくても良く、つまり、ハイパーバイザがアクセスするホスト側キャッシュは任意の種類/ブランドのキャッシュ装置上にあっても良く、ハイパーバイザがアクセスするVMDKは任意の種類/ブランドの共用記憶装置上にあっても良い。特定の実施形態では、共通ファイルシステムフォーマットに準拠する単一の論理的なホスト側キャッシュ内に、複数の異機種のキャッシュ装置(例えば異なるブランド、容量、フォームファクタ等のキャッシュ装置)をプールすることができる。次いでハイパーバイザは、論理的なホスト側キャッシュ内のスペースを選択されたVM(又はVMDK)群にわたりキャッシング目的で割り当てることができる。
【0010】
また更に、特定の実施形態では、フレームワークが自らのホスト側キャッシング動作を制御するためのモジュールアーキテクチャをサポートすることができる。例えば、フラッシュ記憶域のベンダが、自社ブランドのフラッシュ記憶装置で最も良く機能すると考える独占権下にあるキャッシングアルゴリズムを作成する状況を検討されたい。装置の相互運用性を制限することなくこの状況を活用するために、フレームワークは、(それぞれが異なるキャッシングアルゴリズムを実装する)複数のキャッシングモジュールを同時にハイパーバイザに登録し又はハイパーバイザ内にインストールすることを可能にし得る。ホストシステムの管理者は、そのベンダのフラッシュ記憶装置上にあるホスト側キャッシュと共に使用するために、そのベンダのキャッシングモジュールを選択することができる。このようにして、フレームワークは、キャッシュ装置に縛られないながらも、様々なサードパーティのキャッシング技法に対応することができる。
【0011】
図1は、一実施形態による、トランスペアレントなホスト側キャッシングを支援するシステム環境100を示す。図示の通り、システム環境100は、ハイパーバイザ104(「仮想化層」や「仮想化ソフトウェア」としても知られる)を実行するホストシステム102を含む。ハイパーバイザ104は、1つ又は複数のVM106を実行可能な環境を提供する。一実施形態では、ハイパーバイザ104が、介在するホストオペレーティングシステムなしに、ホストシステム102のハードウェアプラットフォームと直接対話することができる。この実施形態では、ハイパーバイザ104は、ホストシステム102の様々なハードウェア装置のVM使用を管理するカーネル(不図示)を含むことができる。代替的実施形態では、ハイパーバイザ104を「ホスト型」構成の一部とすることができ、この構成では、ハイパーバイザがホストオペレーティングシステム(不図示)上で実行される。この実施形態では、ハードウェア装置の物理資源を管理するために、ハイパーバイザ104がホストオペレーティングシステムに頼ることができる。当業者なら、ハイパーバイザ104の設計及び構成について、様々な修正形態及び代替形態に気付くであろう。
【0012】
システム環境100は、ホストシステム102に通信可能に結合される、共用記憶装置108及び1つ又は複数のキャッシュ装置110を更に含む。共用記憶装置108は、例えばSANやNASベースの記憶アレイ、又はホストシステム102と1つ又は複数の他のホストシステムとの間で共用される他の任意の種類の記憶装置/コンポーネントとすることができる。共用記憶装置108は、永続データを読み書きするためにVM106がアクセスする仮想ディスク(VMDK)112を記憶する。
【0013】
キャッシュ装置110は、フラッシュ記憶装置(例えばSSD、PCI−e対応のフラッシュカード等)、揮発性メモリ装置(例えばNVRAM)、及び他の同様の記憶/メモリ装置のうちの少なくとも1種類の記憶装置を含み得る。一実施形態では、キャッシュ装置110がホストシステム102にとってローカルであり得る(例えば直接取り付けられる)。他の実施形態では、キャッシュ装置110の1つ又は複数が、ネットワーク(不図示)を介してホストシステム102と通信するリモート装置であり得る。
【0014】
背景の節で述べたように、VMDKを記憶するために共用記憶域(共用記憶装置108等)を使用する不利点の1つは、ことによると低いVMの入出力性能である。この性能の問題を軽減する技法は存在するが、これらの既存の技法は、VMレベルの修正を一般に必要とすること、およびキャッシュ装置の特定のブランドの独占権下にあることのうちの少なくとも一方となる。
【0015】
上記の(及び他の同様の)問題に対処するために、ホストシステム102のハイパーバイザ104は、キャッシングフレームワーク114を含むことができる。一実施形態では、キャッシングフレームワーク114が、ハイパーバイザ104の入出力スタック内の仮想SCSI(vSCSI)層の真下にあっても良いが、キャッシングフレームワーク114は、ハイパーバイザ104内の他の任意の層/位置にあっても良いことを理解すべきである。動作面では、キャッシングフレームワーク114は、VM106から生じる共用記憶装置108上のVMDK112行きの入出力要求を傍受することができる。次いでキャッシングフレームワーク114は、(共用記憶装置108にアクセスする代わりに、又はアクセスすることに加えて)キャッシュ装置110上にあるホスト側キャッシュ116にアクセスすることにより、その入出力要求を処理することができる。例えば、傍受した入出力要求が読取要求である場合、キャッシングフレームワーク114は、要求されたデータがホスト側キャッシュ116内で既に入手可能かどうかを確認することができる。入手可能な場合、キャッシングフレームワーク114は、共用記憶装置108との間で往復を行うのではなく、キャッシュ装置110からデータを直接取得し、それにより送信元のVMが経験する入出力待ち時間を短縮することができる。
【0016】
重要なことに、キャッシングフレームワーク114は、VM106にとってトランスペアレントな方法で上記のキャッシュ処理を行うことができる。従って、キャッシングフレームワーク114は、VM106内で実行されるアプリケーション又はゲストオペレーティングシステムへの如何なる変更も必要としない。加えて、既存の特定のキャッシングの実装形態と異なり、キャッシングフレームワーク114は、キャッシュ装置110及び共用記憶装置108のうちの少なくとも一方の種類/ブランドに依存しない。
【0017】
更に
図1の実施形態では、キャッシングフレームワーク114は、サードパーティ開発者(例えば記憶域やサーバのベンダ)が、特注の/独占権下にあるキャッシングアルゴリズムを開発し、それらのアルゴリズムをフレームワーク114内にキャッシングモジュール118として登録/インストールすることを可能にし得る。以下で更に詳細に説明するように、ホストシステム102の管理者は、特定のキャッシングモジュール118を(例えばキャッシングモジュールを作成したサードパーティ開発者の推奨/ガイドラインに準拠して)特定のキャッシュ装置、VM、VMDK等に関連させることができる。ホストシステム102の実行時に、キャッシングフレームワーク114はこの関連性を後に使用し、そのキャッシュ装置、VM、又はVMDK用のキャッシングモジュール118の機能を呼び出すことができる。
【0018】
図2は、一実施形態による、ホスト側キャッシュ118を作成し、キャッシングフレームワーク114の動作を構成するための流れ
図200を示す。単純にするために、流れ
図200は、ハイパーバイザ104の管理コンポーネント/インターフェイスによって実行されると仮定する。しかし、代替的実施形態では、流れ
図200の1つ又は複数のブロックが、ホストシステム102とは別の中央管理サーバによって実行されても良い。
【0019】
ブロック202で、ハイパーバイザ104が、ホストシステム102の管理者(又は他の何らかの利用者)から、キャッシングフレームワーク114によってホスト側キャッシュとして使用される1つ又は複数のキャッシュ装置(例えばキャッシュ装置110)の選択を受け取ることができる。一実施形態では、選択されるキャッシュ装置が同機種(即ち同一)であり得る。他の実施形態では、選択されるキャッシュ装置が異機種(即ち異なる種類、容量、ブランド等を有する装置)であり得る。例えば、或るキャッシュ装置はEMCによって製造された256GBのSSDとすることができる一方、別のキャッシュ装置は、Fusion−ioによって製造された512GBのPCI−e対応のフラッシュカードであり得る。
【0020】
ブロック204で、キャッシュ装置が単一の論理的なキャッシュ資源(即ちホスト側キャッシュ116)としてアクセスされ、管理され得るように、ハイパーバイザ104が選択されたキャッシュ装置をまとめてプールし又は組み合わせることができる。特定の実施形態では、ブロック204の処理が、選択されたキャッシュ装置に共通ファイルシステムを適用し、そのファイルシステムを使用するキャッシュ装置にわたるホスト側キャッシュ「パーティション」を作成することを含み得る。そのようなファイルシステムの一例が、VMwareのVFFS(仮想フラッシュファイルシステム:Virtual Flash File System)であるが、他のファイルシステムを利用しても良いことを理解すべきである。管理者がブロック202で単一のキャッシュ装置しか選択しない実施形態では、このステップを省略することができる。
【0021】
ブロック202〜204に従ってホスト側キャッシュ116が定義/作成されると、管理者はキャッシングフレームワーク114を構成して、ホストシステム102の特定のVM又はVMDKの入出力を加速するためにホスト側キャッシュ116を使用することができる(ブロック206〜210)。例えば、ブロック206で、ハイパーバイザ104が管理者からVM又はVMDKの選択を受け取ることができる。このステップの一部として、ハイパーバイザ104は、VM/VMDKに割り当てられるべき、ホスト側キャッシュ116内の空きスペースを制御するためのパラメータを受け取ることができる。このスペース(VM/VMDKのキャッシュ割当と呼ぶ)は、ホスト側キャッシュ116が所与の時点でVM/VMDKについて保持可能なキャッシュデータの量を決める。特定の実施形態では、このパラメータが、VM/VMDKのキャッシュ割当の最小サイズ及び最大サイズのそれぞれを指定する、「最小」パラメータ及び「最大」パラメータを含み得る。或いは、又は加えて、このパラメータは、VM/VMDKのキャッシュに割り当てるための、ホスト側キャッシュ116の合計サイズのパーセンテージを指定する「構成比」パラメータを含み得る。
【0022】
ブロック208で、ハイパーバイザ104が、ブロック206で選択されたVM/VMDK用のキャッシングモジュール118の選択を管理者から受け取ることができる。上記のように、特定の実施形態では、キャッシングフレームワーク114がモジュールアーキテクチャを実装することができ、そのアーキテクチャでは、様々なサードパーティ開発者が独自の特注の/独占権下にあるキャッシングアルゴリズムを作成し、キャッシングフレームワーク114内に(キャッシングモジュール118の形で)インストールすることができる。これにより、サードパーティ開発者は、特定の種類のキャッシュ装置、特定のVM、特定のVMDK等向けにキャッシングフレームワーク114の動作を最適化できるようになる。このアーキテクチャを使い、何時でも複数のキャッシングモジュールをキャッシングフレームワーク114内にインストールすることができる。従って、ブロック208で受け取られるキャッシングモジュールの選択は、選択されたVM又はVMDKに関係する入出力要求をシステムの実行時に傍受したときに、どのキャッシングモジュールを呼び出すのかをキャッシングフレームワーク114が知ることを可能にする。
【0023】
最後にブロック210で、ハイパーバイザ104が、ブロック206及び208で受け取った入力を、選択されたVM/VMDKに関連するメタデータファイル(例えばVMXファイル)内に保存することができる。
【0024】
図3は、一実施形態による、トランスペアレントなホスト側キャッシングを行うために、キャッシングフレームワーク114がホストシステム102の実行時中に行うことができる流れ300を示す。この例では、ホストシステム102の管理者が、
図2のブロック206に従ってホスト側キャッシュ116を利用するものとして、(VM106に対応する)VMDK112を選択したと仮定する。更に、
図2のブロック208に従い、VMDK112に宛てられる入出力要求を処理するのに適したキャッシングモジュールであるものとして、管理者がキャッシングモジュール118を選択したと仮定する。
【0025】
ステップ(1)(参照番号302)で、VM106の電源投入時に、キャッシングフレームワーク114が、ホスト側キャッシュ116内にVMDK112用のキャッシュ割当320を作成することができる。一実施形態では、キャッシュ割当320は、
図2のブロック204でキャッシュ装置110に適用される共通ファイルシステムに従ってフォーマットされるファイルに対応し得る。代替的実施形態では、キャッシュ割当320が、ホスト側キャッシュ116内の1組の予約データブロックに対応し得る。VMDK112にホスト側キャッシュ116の独自の専用部分を割り当てることにより、キャッシングフレームワーク114は、VMDK112のキャッシング性能が、ホスト側キャッシュ116を利用し得る他のVMDK又はVMの入出力作業負荷の影響を受けないことを確実にすることができる。
【0026】
概して、キャッシュ割当320のサイズは、
図2のブロック206で受け取られ(VM106のメタデータファイル内に記憶され)るサイズパラメータに準拠することができる。ホスト側キャッシュ116にキャッシュ割当320を作成する十分な空き容量が無い場合、キャッシュフレームワーク114は、現在処理中のVMの電源を打ち切ることができるエラーメッセージをハイパーバイザ104に伝送することができる。
【0027】
上記の内容に加えて、ステップ(1)の一部として、キャッシングフレームワーク114は、VMDK112及びホスト側キャッシュ116と相互運用するために、キャッシングモジュール118(即ち
図2のブロック208でVMDK112用に選択されたキャッシングモジュール)を初期化することができる。この初期化プロセスは、例えばキャッシングモジュール118の「open()」関数を呼び出し、VMDK112及びホスト側キャッシュ116それぞれへのハンドル/ポインタをopen()関数への入力パラメータとして渡すことを含み得る。
【0028】
キャッシングフレームワーク114が、ステップ(1)に従ってキャッシュ割当320を作成し、キャッシングモジュール118を初期化すると、キャッシングフレームワーク114は、VM106から生じる(且つVMDK112に宛てられる)入出力要求をトランスペアレントに処理するためのプロセスを実行することができる。例えば、ステップ(2)及び(3)(参照番号306及び308)で、キャッシングフレームワークは、かかる入出力要求304を傍受し、(例えば
図2のブロック210で作成されたVMメタデータファイルを調べることにより)キャッシングモジュール118がその入出力要求を処理すべきだと判定することができる。次いでキャッシングフレームワーク114は、キャッシングモジュール118のキャッシング機能を呼び出すために、キャッシングモジュール118の適切な関数(例えば「asyncio()」関数)を呼び出すことができる(ステップ(4)、参照番号310)。
【0029】
ステップ(4)の呼出しに応答し、キャッシングモジュール118は自らの内部キャッシングアルゴリズムを実行し、入出力要求をどのように処理(例えばキャッシュ)するのかを決定することができる(ステップ(5)、参照番号312)。例えば、入出力要求が読取要求である場合、キャッシングモジュール118は或る種類のアルゴリズムを実行することができ、入出力要求が書込要求である場合、キャッシングモジュール118は別の種類のアルゴリズムを実行することができる。先に述べたように、特定の実施形態では、キャッシング性能を最適化するために、キャッシングモジュール118がサードパーティ開発者によって定められても良い。従ってこれらの実施形態では、キャッシングモジュール118がブロック312で実行するキャッシングアルゴリズムを、VMDK112、VM106のアプリケーション/作業負荷、及びキャッシュ装置110のうちの少なくとも一方向けに特別にあつらえることができる。
【0030】
最後にステップ(6)(参照番号314)で、キャッシングモジュール118が、適切なコマンド316、318を(ステップ(1)で受け取られた入出力ハンドルにより)ホスト側キャッシュ116及びVMDK112のうちの少なくとも一方に発行し、ステップ(5)の処理に基づきそれらのエンティティとの間でデータを読み書きすることができる。
図3には示していないが、ハイパーバイザ104は、入出力要求が成功裏に完了/処理されていることを示す肯定応答をVM106に返すこともできる。
【0031】
図2及び
図3に示した技法を使用し、キャッシングフレームワーク114は、既存のホスト側キャッシングソリューションに勝る幾つかの利点をもたらすことができる。まず、実行時の流れ300がハイパーバイザ104内で完全にカプセル化されるので、ホスト側キャッシュ116を利用するためにVMレベルで如何なる修正も行う必要が無く、
図2のブロック206に従ってホスト側キャッシュ116を利用するものとしてVMを単純に指定することにより、キャッシングフレームワーク114によって提供されるキャッシング機能が、ハイパーバイザ104上で実行される任意のVMに適用され得る。次に、キャッシングフレームワーク114は特定の種類/ブランドのキャッシュ装置110(又は共用記憶装置108)に縛られないので、キャッシングフレームワーク114は、任意の記憶域インフラとの関連で動作することができ、複数の異なるキャッシュ装置を単一の論理的なキャッシュ資源へと(共通ファイルシステムによって)統合することさえできる。第4に、複数のプラグ可能キャッシングモジュールをサポートすることにより、キャッシングフレームワーク114は、VM、VMDK、又はキャッシュ装置ベースで、最適化されたキャッシング性能を提供することができる。第5に、各VM又はVMDKをホスト側キャッシュ116内の独自の専用キャッシュに割り当てることにより、キャッシングフレームワーク114は、VM/VMDKにわたるキャッシュ動作の隔離を確実なものとすることができる。
【0032】
図3に示すホスト側キャッシングを実施することの1つの課題は、新たなVMに電源投入されるとき、新たなキャッシュ割当を作成する十分な空き容量がホスト側キャッシュ116内にあることを確実にすることである。この課題に対処するために、特定の実施形態では、VMの電源が切られたとき又はそれ以外の方法で非活動状態にされたとき(例えば一時停止、スナップショット等)、キャッシングフレームワーク114がVM又はVMDKに割り当てられているキャッシュスペースを解放することができる。このように解放することは、他の活動状態のVM/VMDKに割当可能なキャッシュ資源をVM/VMDKが無駄に占有することを防ぐ。
図4は、そのプロセスの流れ
図400を示す。
【0033】
ブロック402で、キャッシングフレームワーク114は、ハイパーバイザ104上で実行されているVMに関する電源オフ/一時停止/スナップショットコマンドを検出することができる。VMの電源が切られる場合、コマンドはVM自体から生じる場合がある。VMの一時停止又はスナップショットの場合、コマンドは、例えばホストシステム102の管理を担う中央管理サーバから生じる場合がある。
【0034】
ブロック404で、キャッシングフレームワーク114が、VMの関連するキャッシングモジュール(及び/又はVMのVMDKに関連するキャッシングモジュール)の「close()」関数を呼び出すことができる。
【0035】
それに応答し、キャッシングモジュールは、VM/VMDKのキャッシュ割当内の任意のダーティデータを、かかるダーティデータが存在する場合にフラッシュすることができる(ブロック406)。次いで、キャッシングモジュールは、ホスト側キャッシュ116内のキャッシュ割当に関連するキャッシュスペースを解放することができる(ブロック408)。
【0036】
VMの一時停止又はスナップショット事象の場合、VMがゆくゆくは再開される。このシナリオでは、VM再開コマンドを検出すると、キャッシングフレームワーク114が、
図2で与えられる管理者入力に基づき、VM(及びそのVMDKのうちの少なくとも一方)のためにホスト側キャッシュ116内のスペースの再割当を試みることができる。VMの電源投入シナリオのように、ホスト側キャッシュ116にキャッシュ割当を作成する十分な空き容量が無い場合、VMの一時停止プロセスが打ち切られても良い。或いは、ハイパーバイザ104は、キャッシュ割当を作成することなしにVMに電源投入/VMを再開することにしても良い。
【0037】
一部の実施形態では、キャッシングフレームワーク114がホスト側キャッシュ116内にVM(又はそのVMDK)に対する入出力要求をアクティブにキャッシングする間、ホストシステム102のハイパーバイザ104が、実行中のVMを別の(即ち「移動先」の)ホストシステムにライブマイグレートしたい場合がある。これらの実施形態では、キャッシングフレームワーク114は、VMのマイグレーションプロセスの一部として、VM/VMDKのキャッシュ割当のコンテンツを、ホスト側キャッシュ116から移動先ホストシステムにおける対応するホスト側キャッシュに移すこともできる。このプロセスは、VMのマイグレーションの直後にVMの入出力を加速するために使用できるように、移動先ホストシステムにおけるホスト側キャッシュを事実上「ウォームアップ」する。
図5は、一実施形態による、そのプロセスを実行するための流れ
図500を示す。
【0038】
ブロック502で、ハイパーバイザ104が、移動先ホストシステムへのVMのマイグレーションを開始することができる。図面には示していないが、このステップは、移動先ホストシステムのホスト側キャッシュ内にVM(及び/又はそのVMDK)のキャッシュデータを収容するのに十分な空き容量があるかどうか、移動先ホストシステムに確認するステップを含み得る。移動先ホストシステム上のホスト側キャッシュに十分な空き容量が無い場合、VMのマイグレーションプロセスが打ち切られても良い。
【0039】
ブロック504で、VM/VMDKのキャッシュデータを移動先ホストシステムにコピーすべきかどうかを、キャッシングフレームワーク114が判定することができる。この選択は、例えばホストシステム102の管理者によって設定され得る。コピーすべきである場合、キャッシングフレームワーク114はキャッシュデータを移動先ホストシステムに伝送することができ(ステップ506)、それによりそのデータを移動先ホストシステムのホスト側キャッシュ内に投入することができる。上記で述べたように、このステップは移動先のホスト側キャッシュがVMの入出力要求をすぐにサービスし始めることができるように、移動先のホスト側キャッシュをウォームアップすることができる。
【0040】
他方で、キャッシュデータをコピーすべきでない場合、キャッシングフレームワーク114は、VM/VMDKのキャッシュ割当内の任意のダーティデータを単純に共用記憶装置108にフラッシュすることができる(ブロック508)。ダーティデータをフラッシュすることは、VMが実行を開始し、移動先ホストシステムのデータにアクセスし始めるときに共用記憶装置108内にデータ破損が無いことを確実にするが、ブロック506にあるように移動先のホスト側キャッシュをウォームアップすることはない。
【0041】
最後にブロック510で、VMがもはやホストシステム102上で実行されていないので、キャッシングフレームワーク114がホスト側キャッシュ116内のVM/VMDKのキャッシュ割当を解放することができる。
【0042】
本明細書に記載した実施形態では、コンピュータシステム内に記憶されるデータを用いる様々なコンピュータによって実施される操作を利用することができる。例えば、これらの操作は物理量の物理的操作を必要とする場合があり、必須ではないが通常、これらの量は電気信号又は磁気信号の形を取り、それらの信号(又はそれらの信号の表現)は記憶し、転送し、結合し、比較し、又は他の方法で操作することができる。かかる操作はしばしば作成、識別、決定、比較等の用語で呼ばれる。1つ又は複数の実施形態の一部を形成する本明細書に記載した如何なる操作も、有用なマシン操作とすることができる。
【0043】
更に、1つ又は複数の実施形態は、上記の操作を行うための装置又は機器に関係し得る。この機器は、特定の所要の目的のために特別に構築することができ、又はコンピュータシステム内に記憶されるプログラムコードによって選択的に活動化され若しくは構成される汎用コンピュータシステムでも良い。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができ、又は所要の操作を行うためにより特化された機器を構築する方が便利な場合もある。本明細書に記載した様々な実施形態は、携帯端末、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者家電、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成を使って実施しても良い。
【0044】
また更に、1つ又は複数の実施形態は、1つ又は複数の非一時的なコンピュータ可読記憶媒体内に具体化される1つ若しくは複数のコンピュータプログラム又は1つ若しくは複数のコンピュータプログラムモジュールとして実装することができる。非一時的なコンピュータ可読記憶媒体という用語は、後でコンピュータシステムに入力可能なデータを記憶することができる任意のデータ記憶装置を指す。非一時的なコンピュータ可読媒体は、コンピュータプログラムがコンピュータシステムによって読み取られることを可能にする方法でコンピュータプログラムを具体化する既存の任意の技術、又は後に開発される技術に基づくことができる。非一時的なコンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読取専用メモリ、ランダムアクセスメモリ(例えばフラッシュメモリデバイス)、CD(コンパクトディスク)(例えばCD−ROM、CD−R、CD−RW等)、DVD(デジタル多用途ディスク)、磁気テープ、並びに他の光学的及び非光学的データ記憶装置が含まれる。コンピュータ可読コードが分散された方法で記憶され実行されるように、非一時的なコンピュータ可読媒体をネットワークに結合されたコンピュータシステムにわたって分散させることもできる。
【0045】
加えて、説明した仮想化方法では、慨して仮想マシンが特定のハードウェアシステムに合ったインターフェイスを示すと仮定したが、記載した方法は或る特定のハードウェアシステムに直接対応しない仮想化と組み合わせて使用しても良いことを当業者なら理解されよう。ホスト型の実施形態、非ホスト型の実施形態、又はその2つの区別を曖昧にする傾向がある実施形態として実装される、様々な実施形態による仮想化システムの全てが想定されている。更に、特定の仮想化操作がハードウェアにより完全に又は部分的に実施されても良い。
【0046】
仮想化の程度に関係なく、多くの改変、修正、追加、及び改善が可能である。従って仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、又はゲストオペレーティングシステムのコンポーネントを含むことができる。単一の例として本明細書に記載したコンポーネント、操作、又は構造について複数の例が提供されても良い。最後に、様々なコンポーネント、操作、及びデータストア間の境界は幾らか恣意的であり、特定の操作を特定の例示的構成との関連で解説した。他の機能の割当ても想定されており、本発明の範囲に含まれ得る。慨して、例示的構成の中で別個のコンポーネントとして提示した構造及び機能は、複合構造又は複合コンポーネントとして実装しても良い。同様に、単一のコンポーネントとして提示した構造及び機能を別個のコンポーネントとして実装しても良い。
【0047】
上記の説明は、特定の実施形態の側面を実施し得る方法の例と共に様々な実施形態を示す。これらの例及び実施形態は唯一の実施形態と見なされるべきではなく、添付の特許請求の範囲によって定める特定の実施形態の柔軟性及び利点を例示するために示した。添付の特許請求の範囲によって定める本発明の範囲から逸脱することなく他の構成、実施形態、実装形態、及び等価物を使用することができる。