(57)【要約】  システムが、第１のキャッシュを含み仮想マシンＶＭに関連づけられた第１のホストと、第２のキャッシュを含む第２のホストと、を含み、第１のホストは、通知に応答して第２のホストに第１のキャッシュのキャッシュデータを送信するように適合され、上記キャッシュデータはＶＭに関連づけられ、上記通知はＶＭが第１のホストから第２のホストにマイグレートされることを示し、第１のホストは、通知を受信したことに応答してＶＭに関連づけられた書き込み操作を第２のホストに送信するように適合され、第２のホストは、通知を受信したことに応答して、ＶＭのキャッシュデータが第２のキャッシュ内に存在しない場合に上記キャッシュデータに関連づけられた読み出し操作を第１のキャッシュに適用し、ＶＭのキャッシュデータに関連づけられた書き込み操作を第２のキャッシュに適用するように適合される。
2018531471.tif 000002
【特許請求の範囲】
【請求項１】
第１のキャッシュ（１３０Ａ）を含み、かつ仮想マシンＶＭ（１２０Ａ）に関連づけられた第１のホスト（１１０Ａ）と、
第２のキャッシュ（１３０Ａ）を含む第２のホスト（１１０Ｎ）と、
を含み、
前記第１のホスト（１１０Ａ）は、通知に応答して前記第１のキャッシュのキャッシュ（１３０Ａ）データを前記第２のホスト（１１０Ｎ）に送信するように適合され、前記キャッシュデータは前記ＶＭ（１２０Ａ）に関連づけられ、前記通知は前記ＶＭ（１２０Ａ）が前記第１のホスト（１１０Ａ）から前記第２のホスト（１１０Ｎ）にマイグレートされることを示し、前記第１のホスト（１１０Ａ）は、前記通知を受信したことに応答して前記ＶＭ（１２０Ａ）に関連づけられた書き込み操作を前記第２のホスト（１１０Ａ）に送信するように適合され、
前記第２のホスト（１１０Ｎ）は、前記通知を受信したことに応答して、前記ＶＭ（１２０Ａ）のキャッシュデータが前記第２のキャッシュ（１３０Ｎ）に存在しない場合に前記キャッシュデータに関連づけられた読み出し操作を前記第１のキャッシュに適用し、前記ＶＭ（１２０Ａ）のキャッシュデータに関連づけられた書き込み操作を前記第２のキャッシュ（１３０Ｎ）に適用するように適合される、
システム（１００）。
【請求項２】
前記第２のホスト（１１０Ｎ）は、前記ＶＭ（１２０Ａ）のさらなるキャッシュデータが前記第１のホスト（１１０Ａ）から前記第２のホスト（１１０Ｎ）に送信されないと決定したことに応答してのみ前記ＶＭ（１２０Ａ）に関連づけられた読み出し操作を前記第２のキャッシュ（１３０Ｎ）に適用するようにさらに適合される、請求項１に記載のシステム（１００）。
【請求項３】
前記第１のホスト（１１０Ａ）は、前記ＶＭ（１２０Ａ）のさらなるキャッシュデータが前記第１のホスト（１１０Ａ）から前記第２のホスト（１１０Ｎ）に送信されないと決定したことに応答して前記第１のキャッシュ（１３０Ａ）内の送信されたキャッシュデータを削除するようにさらに適合される、請求項１又は２に記載のシステム（１００）。
【請求項４】
前記通知を送信するように適合されたキャッシュコントローラ、をさらに含む請求項１乃至３のうち一項に記載のシステム（１００）。
【請求項５】
キャッシュデータを送信することは、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータを最初に送信することを含む、請求項１乃至４のうち一項に記載のシステム（１００）。
【請求項６】
前記キャッシュデータはキャッシュメタデータを含む、請求項１乃至５のうち一項に記載のシステム（１００）。
【請求項７】
前記第１のホスト（１１０Ａ）は、前記書き込み操作を前記第２のホスト（１１０Ｎ）に送信することに追加で、前記ＶＭ（１２０Ａ）に関連づけられた書き込み操作を前記第１のキャッシュ（１３０Ａ）に適用するようにさらに適合される、請求項１乃至５のうち一項に記載のシステム（１００）。
【請求項８】
ホストデバイス（１１０Ｎ）であって、ローカルキャッシュ（１３０Ｎ）を含み、通知に応答してリモートホスト（１１０Ａ）のリモートキャッシュ（１３０Ａ）からのキャッシュデータを受信することであり、前記キャッシュデータは仮想マシンＶＭ（１２０Ａ）に関連づけられ、前記ＶＭ（１２０Ａ）は前記リモートホスト（１１０Ａ）に関連づけられるように、かつ、前記ＶＭのキャッシュデータが前記ローカルキャッシュ（１３０Ｎ）に存在しない場合に前記キャッシュデータに関連づけられた読み出し操作を前記リモートキャッシュに、前記ＶＭ（１２０Ａ）のキャッシュデータに関連づけられた書き込み操作を前記ローカルキャッシュ（１３０Ｎ）に適用するように適合され、前記通知は前記ＶＭ（１２０Ａ）が前記リモートホスト（１１０Ａ）から前記ホストデバイス（１１０Ｎ）にマイグレートされることを示す、ホストデバイス（１１０Ｎ）。
【請求項９】
前記ホストデバイス（１１０Ｎ）は、前記ＶＭ（１２０Ａ）のさらなるキャッシュデータが前記リモートホスト（１１０Ａ）から前記ホストデバイス（１１０Ｎ）に送信されないと決定したことに応答してのみ前記ＶＭ（１２０Ａ）に関連づけられた読み出し操作を前記ローカルキャッシュ（１２０Ｎ）に適用するようにさらに適合される、請求項８に記載のホストデバイス（１１０Ｎ）。
【請求項１０】
前記通知はキャッシュコントローラにより送信される、請求項８又は９に記載のホストデバイス（１１０Ｎ）。
【請求項１１】
キャッシュデータを送信することは、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータを最初に送信することを含む、請求項８乃至１０のうち一項に記載のホストデバイス（１１０Ｎ）。
【請求項１２】
前記キャッシュデータはキャッシュメタデータを含む、請求項８乃至１１のうち一項に記載のホストデバイス（１１０Ｎ）。
【請求項１３】
通知に応答して、第１のホスト（１１０Ａ）の第１のキャッシュ（１３０Ａ）からキャッシュデータを受信するステップ（３３０）であり、前記キャッシュデータは仮想マシンＶＭ（１２０Ａ）に関連づけられる、ステップと、前記キャッシュデータが前記第２のキャッシュ（１３０Ｎ）に存在しない場合、前記ＶＭ（１２０Ａ）に関連づけられた読み出し操作を前記第１のホスト（１１０Ａ）の前記第１のキャッシュ（１３０Ａ）に適用するステップと、前記ＶＭ（１２０Ａ）のキャッシュデータに関連づけられた書き込み操作を第２のホスト（１１０Ｎ）の第２のキャッシュ（１３０Ｎ）に適用するステップと、を含み、前記通知は前記ＶＭ（１２０Ａ）が前記第１のホスト（１１０Ａ）から前記第２のホスト（１１０Ｎ）にマイグレートされることを示す、方法（３００）。
【請求項１４】
前記通知はキャッシュコントローラにより送信される、請求項１３に記載の方法（３００）。
【請求項１５】
前記キャッシュデータはキャッシュメタデータを含む、請求項１３又は１４に記載の方法（３００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散キャッシュの分野に関し、詳細にはキャッシュをマイグレートする方法、装置、及びシステムに関する。
【背景技術】
【０００２】
仮想化は、コンピューティングデバイスにより提供されるリソースの抽象化の概念を参照する。オペレーティングシステムを含むアプリケーションは、アプリケーションにとって単一の物理ホストとして見える仮想マシン（ＶＭ）内で動作することがある。複数のＶＭが同じ物理ホスト上に存在することがある。仮想化は、ゆえに、各ＶＭについて、それがＶＭに関連づけられたリソースに対して排他的アクセスを有するという錯覚を維持する必要がある。こうしたリソースは仮想のものとして参照される。ＶＭは、ＶＭと同じホスト上の仮想マシンマネージャ（ＶＭＭ）により管理されることがある。
【０００３】
仮想化された環境内に提示されるリソースは、仮想ＣＰＵ、仮想メモリ、仮想Ｉ／Ｏデバイス、及びその他を含み得る。仮想化の一態様はストレージ仮想化であり、これにおいて、リソースは仮想ストレージに対応する。具体的に、仮想ストレージは、ＶＭに対して１つ以上の仮想ディスクとして提示されることがある。ＶＭの観点からは、データは仮想ディスクに書き込まれ、仮想ディスクから読み出されことができ、一方で、仮想ディスクは実際には、ＶＭを実行するコンピューティングデバイス上にローカルに存在しないロケーションを含む様々なロケーションに分散されたストレージ空間の集合に対応することがある。
【０００４】
仮想ストレージは、データを読み出し又は書き込むとき、特に仮想ストレージの一部がリモートのロケーションに存在する場合に、大幅なレイテンシを被る。こうしたレイテンシを低減するために、キャッシングが提供されることがある。キャッシュは、フラッシュメモリなどのメモリを含むことがあり、該メモリは、大規模ストレージに使用される従来のメモリよりもより高速であり、ローカル（仮想）ストレージに関連づけられることがあり、リモートのロケーションにおけるデータを含むストレージの様々な部分からのデータを含むことがある。いくつかの場合、キャッシュは、ローカル又はリモートのロケーションにおける他のキャッシュからのデータを含むことがある。キャッシュは、仮想ディスクと同様、１つ以上のロケーションにおいてストレージ空間の制限を克服するなどのために、複数のロケーションにわたり分散されることがある。これら属性の少なくとも１つを有するキャッシュは、さらに分散キャッシュとして参照される。
【０００５】
ＶＭは、データが仮想ディスクに対して読み出され又は書き込まれることを要求することがある。こうした要求に応答して、ＶＭに関連づけられたキャッシュがデータについて解析され得る。存在する場合、データは、キャッシュの背後のストレージに対して直接でなく、キャッシュから読み出され、あるいはキャッシュに書き込まれ得る。複数のＶＭに関連づけられたデータが、単一のキャッシュ内に維持され得る。
【０００６】
ＶＭは、元の物理ホストから宛先物理ホストになど、あるロケーションから別のロケーションにマイグレートされる必要がある場合がある。マイグレーションの間、ＶＭの操作性は制限されることがある。一例として、ＶＭをマイグレートすることは、元のホストでＶＭにより占有されたローカルメモリを宛先ホストに転送することを要することがある。マイグレーションは、ＶＭを宛先ホストにインストールするために、ＶＭを異なるＶＭＭに関連づけることをさらに含むことがある。ＶＭ内部のアプリケーションは理想的には、変更により影響されるべきでない。詳細には、ストレージ及び他のリソースに対するアクセスは、ＶＭの観点からは不変のままであるべきである。
【０００７】
ＶＭのマイグレーションは、ＶＭに関連づけられたキャッシュデータをマイグレートすることをさらに含む。キャッシュデータは複数のロケーションにわたり分散されることがあるが、マイグレーションの後、ＶＭに関連づけられたデータの大部分をＶＭにとってもはやローカルでないキャッシュ内に維持することは望ましくない。
【０００８】
キャッシュをマイグレートするための既知の一アプローチは、マイグレーションの過程においてＶＭに関連づけられたすべてのデータをクリアすることである。この場合、クリアの後にＶＭにより要求されたデータは、キャッシュからでなくストレージから取り出される必要があることになる。こうした取り出しが宛先ホストでキャッシュをフィルすることに同時的に使用されることがあり、これはさらにキャッシュウォーミングとして参照されるが、この処理は一般に遅い。新しいキャッシュがウォームになり、完全に使用可能になるまで、いくらかの時間がかかることになる。そのときまで、ストレージからすべてのデータを取り出すことに起因してデータ操作のレイテンシが高くなる。
【発明の概要】
【０００９】
本発明の一目的は、ＶＭキャッシュをあるホストから別のホストにシームレスにマイグレートすることである。シームレスマイグレーションは、可能な範囲内でＶＭの操作がマイグレーション処理全体を通して維持されることを意味する。
【００１０】
本発明の第１の態様はシステムを定義し、システムは、第１のキャッシュを含み、かつＶＭに関連づけられた第１のホストと、第２のキャッシュを含む第２のホストと、を含み、上記第１のホストは、通知に応答して上記第１のキャッシュのキャッシュデータを上記第２のホストに送信するように適合され、上記キャッシュデータは上記ＶＭに関連づけられ、上記通知は上記ＶＭが上記第１のホストから上記第２のホストにマイグレートされることを示し、上記第１のホストは、上記通知を受信したことに応答して上記ＶＭ（１２０Ａ）に関連づけられた書き込み操作を上記第２のホストに送信するように適合され、上記第２のホストは、上記通知を受信したことに応答して、上記ＶＭのキャッシュデータが上記第２のキャッシュに存在しない場合に上記キャッシュデータに関連づけられた読み出し操作を上記第１のキャッシュに適用し、上記ＶＭのキャッシュデータに関連づけられた書き込み操作を上記第２のキャッシュに適用するように適合される。
【００１１】
第１の態様は、ＶＭのシームレスマイグレーションを有利に達成するシステムを提供する。この態様によれば、読み出し及び書き込み操作は、マイグレーションの通知に基づき、及びキャッシュデータを第１から第２のキャッシュに送信すると、第２のホストにおいて受信され、処理される。換言すると、読み出し及び書き込み操作は、すべてのキャッシュデータが第２のキャッシュに転送されるまで待機することなく処理される。このことは、操作が遅延なく対処されるという範囲内でシームレスマイグレーションを有利に達成する。この利点は、第２のキャッシュ上で書き込み操作を処理することと、読み出されるべきそれぞれのデータが第２のキャッシュにすでに書き込まれたかどうかに依存して第２のキャッシュ又は第１のキャッシュに対して条件付きで読み出し操作を処理することとを伴う相乗効果から生じる。キャッシュデータがその転送において第１から第２のキャッシュに進むとき、第１のキャッシュにリダイレクトされる読み出し操作の数は減少し、ゆえに、マイグレーションの間に使用される帯域幅オーバーヘッドを低減させる。
【００１２】
第１の態様の第１の実現例によれば、上記第２のホストは、上記ＶＭのさらなるキャッシュデータが上記第１のホストから上記第２のホストに送信されないと決定したことに応答して上記ＶＭに関連づけられた読み出し操作を上記第２のキャッシュにのみ適用するようにさらに適合される。
【００１３】
この第１の実現例は、それが第１のキャッシュからの条件付き読み出しを止め、しかし第２のキャッシュに対する読み出し操作の処理を制限することを定義する点で、有利である。さらなるキャッシュデータが第２のホストに送信されないため、第１のキャッシュから条件付きで読み出すさらなる必要がない。それにより、読み出し操作を第１のキャッシュに条件付きでリダイレクトするオーバーヘッドは回避される。さらなるキャッシュデータが送信されないことを決定する特徴は、ＶＭのさらなるキャッシュデータが第１のキャッシュに存在しないことを意味するわけではない点に留意すべきである。実際、第２のホストに送信されるキャッシュデータは、削除されるまで第１のキャッシュに依然として存在する。さらに、ＶＭは、複数のホスト間で分散される特定のデータに関連づけられてよく、ゆえに、そのデータのいくらかが、さらなるデータが第２のホストに送信されないとしても、第１のキャッシュに存在し続けることがある。
【００１４】
第１の態様の第２の実現例は、上記ＶＭのさらなるキャッシュデータが上記第１のホストから上記第２のホストに送信されないと決定したことに応答して上記第１のキャッシュ内の送信されたキャッシュデータを削除することを含む。
【００１５】
この第２の実現例の利点は、上記で第１の実現例において定義されたように、さらなるキャッシュデータが送信されないと決定した後、読み出し操作はもはや第１のホストにリダイレクトされないことである。ゆえに、第２のホストに前に送信されたキャッシュデータはもはや必要とされず、対応するストレージ空間が解放され得る。
【００１６】
第１の態様の第３の実現によれば、システムは、上記通知を送信するように適合されたキャッシュコントローラを含む。
【００１７】
この実現例は、それが複数のキャッシュを編成する責任を負う単一のエンティティを提供する点で有利である。このエンティティ、キャッシュコントローラは、ゆえに、いずれのホストが所与のＶＭに関連づけられたキャッシュデータを含むのかを認識し得る。このエンティティはさらに、進行中の送信操作を認識でき、ゆえに、マイグレーション処理がどこで進行中であるか、及びマイグレーション処理が完了したかどうかが分かる。通知をホストに送信することにより、キャッシュコントローラは、マイグレーション操作自体を決定することからホストを有利かつ簡便に解放することができる。
【００１８】
第４の実現例は、キャッシュデータを送信することは、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータを最初に送信することを含むことを定義する。
【００１９】
第４の実現例は、それが読み出し操作が第２のホストで実行されたときにこれら読み出し操作が第１のホストにリダイレクトする必要なく必要とするキャッシュデータを実際に取得する可能性を増大させる点で、第１の態様の発明高度に追加をする。この利点は、読み出し操作が他のデータよりも、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータに再度アクセスしそうであるという事実に起因する。このデータが他のデータを上回る優先順位で取り扱われるため、読み出し操作のリダイレクションが多くの場合に回避される。これはさらに、リソース使用を低減し、システムの応答性を向上させる。
【００２０】
第５の実現例によれば、キャッシュデータはキャッシュメタデータを含む。
【００２１】
この第５の実現例は、それがデータをメタデータから区別する点で、第１の態様に対してさらに追加をする。後者は、取り出し頻度又はアクセス数などの情報を含んでよく、ゆえに、上記で論じられた第４の実現例を実施するための簡素な一解決策を提供する。
【００２２】
第１の態様の第６の実現例は、上記第１のホストは、上記書き込み操作を上記第２のホストに送信することに追加で、上記ＶＭに関連づけられた書き込み操作を上記第１のキャッシュに適用するようにさらに適合されることを定義する。
【００２３】
これは、ちょうど書き込まれたデータがすぐに読み出されそうであるという事実を配慮している。ゆえに、第１のキャッシュのホストに対して書き込み操作を複製することは、このデータに向けられた来たる読み出しを予期し、ゆえに、このデータにアクセスするための第１のキャッシュのホストにおけるオーバーヘッドを低減する。
【００２４】
第２の態様はホストデバイスに向けられ、ホストデバイスは、ローカルキャッシュを含み、通知に応答してリモートホストのリモートキャッシュからのキャッシュデータを受信することであり、上記キャッシュデータはＶＭに関連づけられ、上記ＶＭは上記リモートホストに関連づけられるように、かつ、上記ＶＭのキャッシュデータが上記第２のキャッシュに存在しない場合に上記キャッシュデータに関連づけられた読み出し操作を上記リモートキャッシュに、上記ＶＭのキャッシュデータに関連づけられた書き込み操作を上記ローカルキャッシュに適用するように適合され、上記通知は上記ＶＭが上記リモートホストから上記ホストデバイスにマイグレートされることを示す。
【００２５】
第２の態様により定義されるホストデバイスは、第１の態様の第２のホストに対応すると見なされてよく、リモートキャッシュ及びローカルキャッシュが、それぞれ、第１のキャッシュ及び第２のキャッシュに対応する。第２の態様は、ゆえに、ＶＭのシームレスマイグレーションを有利に達成する。リモートホストからローカルホストにキャッシュデータを送信することを開始した後、キャッシュデータに向けられた読み出し及び書き込み操作が最小の遅延で供給されることができる。この遅延は、例えば、読み出されるデータがローカルホストに存在せず、しかしリモートホストからフェッチされる必要がある場合まで低減される。
【００２６】
第２の態様の第１の実現例によれば、上記ホストデバイスは、上記ＶＭのさらなるキャッシュデータが上記リモートホストから上記ホストデバイスに送信されないと決定したことに応答して上記ＶＭに関連づけられた読み出し操作を上記ローカルキャッシュにのみ適用するようにさらに適合される。
【００２７】
この実現例は、第１の態様の第２の実現例と同様、ひとたびそれがさらなるデータが送信されないと決定すると通信オーバーヘッドを有利に減少させる。
【００２８】
第２の態様の第２の実現例は、キャッシュコントローラにより送信された通知を含む。
【００２９】
このキャッシュコントローラは、来たるＶＭマイグレーションを認識するエンティティを表し、ゆえに、マイグレーションに参加するホストに簡便に通知する。
【００３０】
第３の態様の第３の実現例は、キャッシュデータを送信することは、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータを最初に送信することを含むことを定義する。
【００３１】
この実現例は、読み出し操作がリモートホストに実際に向けられるケース数を低減させる。例えば、最近取り出されたキャッシュデータは再度取り出されそうである。ゆえに、このデータをリモートからローカルのホストへのキャッシュデータの送信において優先することは、ローカルホストの応答性を向上させ、過剰な通信及び遅延を回避する。
【００３２】
第４の実現例によれば、キャッシュデータはキャッシュメタデータを含む。
【００３３】
この第４の実現例は、頻繁な取り出しに関するデータなどのメタデータがキャッシュデータに含まれてよいことを明確にする。これは、例えば上記で論じられた第３の実現例に定義されたように、特定のキャッシュデータに対して他のキャッシュデータを上回る優先順位を割り当てることに役立つ。
【００３４】
本発明の第３の態様は方法に向けられ、方法は、通知に応答して、第１のホストの第１のキャッシュからキャッシュデータを受信するステップであり、上記キャッシュデータはＶＭに関連づけられる、ステップと、上記キャッシュデータが上記第２のキャッシュに存在しない場合、上記ＶＭに関連づけられた読み出し操作を上記第１のホストの上記第１のキャッシュに適用するステップと、上記ＶＭのキャッシュデータに関連づけられた書き込み操作を第２のホストの第２のキャッシュに適用するステップと、を含み、上記通知は上記ＶＭが上記第１のホストから上記第２のホストにマイグレートされることを示す。
【００３５】
第３の態様は、第１のホストから第２のホストへのＶＭのシームレスマイグレーションを提供する。この態様によれば、マイグレートする過程でＶＭのキャッシュデータが第２のホストで受信され、ＶＭのキャッシュデータは部分的に第２のホストで、及び部分的に依然として第１のホストで利用可能であるという効果がある。この進行中の転送にかかわらず、キャッシュデータに向けられた読み出し及び書き込み操作は、これらが条件付きで第１のキャッシュにリダイレクトされ、あるいは第２のキャッシュに適用されるとき、最小の遅延で供給されることができる。
【００３６】
第３の態様の第１の実現例は、上記通知はキャッシュコントローラにより送信されることを含む。
【００３７】
第１の実現例は、エンティティ、すなわちキャッシュコントローラを提供し、これは、マイグレーションを認識し、ホストにマイグレーションを、例えばマイグレーションが開始されたかどうかなどを簡便に通知するように適合される。
【００３８】
第３の態様の第２の実現例によれば、キャッシュデータはキャッシュメタデータを含む。
【００３９】
第２の実現例は、マイグレーション処理において必要とされるさらなる情報を提供することについて有利である。上記で論じられたように、こうした情報は、特定のキャッシュデータを第２のホストに送信するときにそれを優先順位を用いて取り扱うとき、必要とされ得る。こうした情報は、キャッシュメタデータに含まれてよい。キャッシュデータの一部であり、それは余分な通信なくアクセスされることができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施例によるシステムのブロック図である。
【図２】本発明の実施例による処理のフロー図である。
【図３】本発明の実施例によるさらなる処理のフロー図である。
【図４】本発明の実施例によるさらなる処理のフロー図である。
【図５】本発明の実施例によるさらなる処理のフロー図である。
【図６】本発明の実施例によるさらなる処理のシーケンス図である。
【発明を実施するための形態】
【００４１】
図１は、元のホストとしても参照される第１のホスト１１０Ａと、宛先ホストとしても参照される第２のホスト１１０Ｎとを示す。
【００４２】
第１のホスト１１０ＡはＶＭ１２０Ａと共に示されるが、１つ以上のさらなるＶＭ（図示されていない）を含んでよい。さらに、第１のキャッシュ１３０Ａ及び第１のストレージ１４０Ａが第１のホスト１１０Ａに含まれる。第１のキャッシュ１３０Ａは、複数のホストにわたり分散されてよい。第１のキャッシュ１３０Ａは、ＶＭ１２０Ａにだけでなく、さらに１つ以上の異なるＶＭに関連づけられたデータを含んでもよい。第１のストレージ１４０Ａからのデータが、第１のキャッシュ１３０Ａにキャッシュされてよい。第１のキャッシュ１３０Ａは、異なるキャッシュによりキャッシュされ及び／又はＶＭ１２０Ａとは異なるＶＭに関連づけられたデータをさらに含んでよい。図１は、第１のホスト１１０Ａからローカル又はリモートであり得るグローバルストレージ１５０をさらに示す。
【００４３】
ここで論じられるキャッシュに使用されるキャッシュ媒体はＳＳＤ、ＲＡＭ、及びフラッシュを含むが、これらに制限されない。
【００４４】
グローバルストレージ１５０は、例えば、仮想ディスクを複数の仮想マシンに提供する従来の仮想化されたデータセンタなどにおける、ストレージアレイのクラスタであり得る。グローバルストレージからデータを読み出すことは、ローカルキャッシュ又はさらには異なるホストにおけるリモートキャッシュから読み出すよりもより遅いことがある。ＶＭ１２０Ａに関連づけられたデータはグローバルストレージ１５０に記憶されてよく、グローバルストレージ１５０からのデータは第１のキャッシュ１３０Ａにキャッシュされてよい。
【００４５】
第１のホスト１１０Ａは、第２のキャッシュ１３０Ｎと第２のストレージ１４０Ｎとを含む第２のホスト１１０Ｎに結合される。第２のキャッシュ１３０Ｎは、同様に分散されてよい。第２のホスト１１０Ｎはさらに、第１のホスト１１０Ａから第２のホスト１１０Ｎへのマイグレーションの後、ＶＭ１２０Ａに対応するＶＭ１２０Ｎと共に示される。第２のホスト１１０Ｎは第１のホスト１１０Ａと同様、マイグレーションの前にさらなるＶＭを含んでもよく、あるいはＶＭをまったく含まなくてもよい。
【００４６】
第１のホスト１１０Ａは、第１のホスト１１０Ａから第２のホスト１１０ＮへのＶＭ１２０Ａのマイグレーションに関する通知を受信するように適合されてよい。通知は、例えばＶＭＭによってなど、様々なエンティティのうち任意のものから、第２のホスト１１０Ｎから、又は例示されたキャッシュの１つ以上に関連づけられたキャッシュコントローラ（図示されていない）からであり得る。
【００４７】
通知は、第１のホスト１１０Ｎにより受信されてよい。例えば、通知は、ＶＭＭによって、ＶＭ１２０Ａによって、又は第１のキャッシュ１３０Ａによって受信されてよい。一実施例において、通知は、マイグレートされるＶＭと、マイグレーションの宛先とを指定する。通知はさらに、第２のホスト１１０Ｎにおいて受信されてもよい。
【００４８】
通知を受信したことに応答して、第１のホスト１１０Ａは１つ以上の方法で反応してよい。第１のホスト１１０Ａは、第１のキャッシュ１３０Ａからのキャッシュデータであって、ＶＭ１２０Ａに関連づけられた上記キャッシュデータを、第２のホスト１１０Ｎに送信することを開始してよい。キャッシュデータを送信することは、第１及び第２のホスト間の、データのサイズ及びパーミッションなどの転送ポリシーを調整することを含んでよい。双方のホスト間の信頼可能な接続が確立されることになる。
【００４９】
キャッシュデータを第２のホスト１１０Ｎに送信することは、第１のＶＭ１２０Ａに関連づけられたすべてのキャッシュデータを送信することを含んでよく、あるいは第１のＶＭ１２０Ａに関連づけられた第１のキャッシュ１３０Ａ内のすべてのキャッシュデータのうちサブセットのみを含んでもよい。例えば、第１のキャッシュ１３０Ａ内の第１のＶＭ１２０Ａに関連づけられたキャッシュデータのいくらかが、上記キャッシュデータの対応データが何らかの理由でまったく移動されないものとすることを示すキャッシュメタデータを含んでよい。例えば、キャッシュデータは、それが第１のホスト１１０Ａにおける第１のストレージ１４０Ａに記憶されたデータに対応するため、第１のキャッシュ１３０Ａにとどまる必要がある場合がある。こうした場合、キャッシュデータを第１のキャッシュ１３０Ａから異なるホストに移動することは、該異なるホストで上記キャッシュデータを取り出すときの応答性を増大させる可能性があるが、キャッシュデータがダーティになり第１のストレージ１４０Ａに書き込まれる必要があるときの応答性を減少させる可能性がある。一実施例において、第１のホスト１１０Ａの外部のストレージ内のデータに対応するキャッシュデータのみが第２のホスト１１０Ｎに送信されてよく、例えば、グローバルストレージ１５０内のデータ、又は第２のストレージ１４０Ｎ内のデータ、又は任意の他のストレージ内のデータなどである。
【００５０】
キャッシュデータを送信することは、例えば、ＶＭ１２０Ａが電源オフしたためなどでそれが一時停止したと決定したことに応答して、第１のホスト１１０Ａにおいて一時的に中断されてよい。ひとたびＶＭ１２０Ａが再開すると、データを送信することは転送が完了するまで継続される。
【００５１】
さらに、通知を受信したことに応答して、及びキャッシュデータの送信が始まったことと独立して、第１のホスト１１０Ａは、その読み出し及び／又は書き込み操作であって、ＶＭ１２０Ａに関連づけられたキャッシュデータに向けられた上記操作の、対処を適合させてよい。第１のホスト１１０Ａは、ＶＭ１２０Ａに関連づけられたキャッシュデータに向けられた書き込み操作を第２のホスト１１０Ｎに送信する。これは、データが第２のキャッシュ１３０Ｎに書き込まれるという範囲内で有利であり得る。このデータは、ゆえに、それが次に最もアクセスされそうであるロケーションに存在する。これにより、ＶＭ１２０Ａのための有効キャッシュデータのセットが持続的に構築される。このセットがより大きく成長するほど、セット上のキャッシュ無効化のリスクがより小さくなる。第１及び第２のキャッシュ双方にすべての書き込み操作を実行する実施例において、第１のキャッシュの正確なサブセットが第２のキャッシュにおいて構築され、これは、ひとたびＶＭがマイグレートすると操作する準備ができることになる。したがって、特に、データが第１のキャッシュ１３０Ａに書き込まれた場合に第２のホスト１１０Ｎにまだ送信されていない場合に、ＶＭ１２０Ｎの応答性が増大され得る。特定の実施例において、書き込み操作は、第２のキャッシュ１３０Ｎに書き込み操作を適用することに追加で、第１のキャッシュ１３０Ａに適用されてよい。
【００５２】
上述されたように、通知はさらに、第２のホスト１１０Ｎにおいて受信されてよい。通知を受信したことに応答して、第２のホスト１１０Ｎは、第１のホスト１１０Ａにより送信されるキャッシュデータの準備をしてよく、受信したキャッシュデータを第２のキャッシュ１３０Ｎに記憶してよい。さらに、通知を受信したことに応答して、第２のホスト１１０Ｎは、ＶＭ１２０Ｎに関連づけられたキャッシュデータに向けられた書き込み及び／又は読み出し操作、例えば、ＶＭ１２０Ｎ自体により発行された操作などを受信する。書き込み操作は、第２のキャッシュ１３０Ｎに適用される。一実施例において、書き込み操作は、例えば、キャッシュがブロック編成されたときなどに、第１のホスト１１０Ａに追加的に送信される。読み出し操作は、操作により読み出されるデータについて第２のキャッシュ１３０Ｎを調べることにより対処されてよい。例えば、データが第１のホスト１１０Ａからすでに転送されたなどのため、データが第２のキャッシュ１３０Ｎにすでに存在する場合、データは第２のキャッシュ１３０Ｎから読み出されることになる。さもなければ、データが存在しない場合、読み出し操作は第１のホスト１１０Ａに送信されてよく、第１のホスト１１０Ａにおいて、読み出し操作は第１のキャッシュ１３０Ａに適用される。読み出されたデータは、第２のホスト１１０Ｎに提供される。データが第２のキャッシュ１３０Ｎに存在するかどうかを決定することは、従来のキャッシュミスとみなされてよい。
【００５３】
キャッシュデータを第１のホスト１１０Ａから第２のホスト１１０Ｎに送信することは、ＶＭがマイグレートされた前又は後に完了してよい。ＶＭがマイグレートしたときに送信されるキャッシュデータが依然としてある場合、ＶＭは、送信が完了するまで読み出し操作を第１のキャッシュ１３０Ａに依然として向けてよい。
【００５４】
転送の完了は、例えば、キャッシュコントローラによる通知を通してなどで、第１のホスト１１０Ａ及び／又は第２のホスト１１０Ｎに対して示されてよい。別法として、ホストがそれ自体により、転送が完了であるかどうかを決定してもよい。例えば、第２のホスト１１０Ｎは、ＶＭ１２０Ｎに関連づけられたキャッシュデータが所定の時間期間内に受信されていないと決定することができる。別法として、第１のホスト１１０Ａは、さらに転送されるデータの量について第２のホスト１１０Ｎに通知していてもよく、第２のホスト１１０Ｎは、受信したキャッシュデータの量を第１のホスト１１０Ａにより示された量と比較する。さらに別の実施例において、ＶＭ１２０Ｎは、第２のキャッシュ１３０Ｎ内のキャッシュデータの量を認識し、第２のホスト１１０Ｎがさらなるデータが受信されないと決定することを可能にする。さらに別の代替として、さらに受信されるキャッシュデータの量を認識するのは、第２のホスト１１０Ｎ上のＶＭＭ（図示されていない）であり得る。
【００５５】
いくつかの実施例において、第１のホスト１１０Ａは、完了した転送について第２のホスト１１０Ｎ及び／又はキャッシュコントローラに通知してよい。こうした通知に応答して、キャッシュコントローラは、ＶＭの所有権を第１のホスト１１０Ａから第２のホスト１１０Ｎに変更してよく、変更について第２のホスト１１０Ｎに通知してよい。
【００５６】
一実施例において、第２のホスト１１０Ｎは、さらなるデータが第１のホスト１１０Ａから受信されないと決定したことに応答して、ＶＭ１２０Ｎに関連づけられたキャッシュデータに向けられた読み出し操作を第１のホスト１１０Ｎに送信することを停止してよい。しかしながら、読み出し操作は、これらがＶＭのマイグレーションの後に第１のキャッシュ１３０Ａにとどまるように意図されたデータに向けられる場合、第１のホスト１１０Ａに依然として送信されてよい。
【００５７】
キャッシュデータは、送信された直後、第１のキャッシュ１３０Ａにおいて削除されてよい。別法として、送信されたデータは、マイグレーションが完了した後、及び／又はＶＭ１２０Ｎのさらなるキャッシュデータが第１のホスト１１０Ａから第２のホスト１１０Ｎに送信されないと決定した後に、該送信されたデータの全体を削除されてよい。
【００５８】
キャッシュデータは、任意の順序で第１のホスト１１０Ａから第２のホスト１１０Ｎに送信されてよい。代替的な一実施例において、データは、このデータに対する最近のアクセスに従い決定された順序で送信されてよい。具体的に、最も最近アクセスされたデータが最初送信され、これに対し、最も古いアクセスを有するデータが最後に送信される。さらにこの実施例に関して、書き込み及び読み出しアクセス間で区別が行われてよい。例えば、データは、該データに対して実行された最も最近の書き込みアクセスの順序で送信されてよい。別法として、データは、最も最近の読み出しアクセスの順序で送信されてよい。一実施例において、データは、最も頻繁にアクセスされたデータが最初に送信されて、アクセス頻度の順序で送信されてよい。順序付けられた送信のすべての実施例において、キャッシュデータに含まれたキャッシュメタデータが、アクセス統計、例えばアクセス頻度又は最後のアクセスなどを示してよく、送信順序を決定することに使用されてよい。
【００５９】
通知の後のある時点で、ＶＭ１２０Ａは、第２のホスト１１０Ｎで電源オンされるために第１のホスト１１０Ａで電源オフされてよく、これにより、マイグレーションを完了する。これは、上記で論じられた操作の間又は後の任意の時間に発生してよく、データの転送に影響しない。
【００６０】
図２は、第１のホスト１１０Ａなどの元のホストで実行される方法を示す。ブロック２１０において、元のホストは、ＶＭ１２０ＡなどのＶＭを元のホストから第２のホスト１１０Ｎなどの宛先ホストにマイグレートする通知を受信する（２１０）。通知が、例えばキャッシュコントローラからなど、上記で論じられたいずれかの手段により受信されてよい。一実施例において、通知を発行するのはＶＭ自体である。
【００６１】
ブロック２２０は、キャッシュデータを宛先ホストに送信することを示す。データを送信することは、前述された通知を受信したことに応答して開始される。
【００６２】
キャッシュデータを送信する間、元のホストは、ＶＭが一時停止されたと示す通知を受信し得る。
【００６３】
キャッシュデータが送信されることと独立して、元のホストは、ブロック２３０に示されるように、通知を受信した後に１つ以上の書き込み操作を受信し得る。受信すると、元のホストは、書き込み操作がＶＭに関連づけられたキャッシュデータに向けられる場合、これら書き込み操作を宛先ホストに送信する。いくつかの実施例において、ＶＭに関連づけられたすべてのキャッシュデータのうちサブセットのみが宛先ホストに送信される。これら実施例において、元のホストのキャッシュにとどまるキャッシュデータに向けられた書き込み操作はそのキャッシュに適用され、宛先ホストに送信されない。キャッシュデータを送信することはブロック２４０に示される。
【００６４】
図３は、第１のホスト１１０Ａなどの元のホストで実行されるさらなる方法３００を示す。方法３００は、ＶＭ１２０ＡなどのＶＭが第２のホスト１１０Ｎなどの宛先ホストにマイグレートされることに応答して実行されてよい。
【００６５】
ブロック３１０において、宛先ホストに対しての進行中の又は来たるキャッシュ転送の詳細が調整される。調整は、キャッシュコントローラによりネゴシエートされてよい。別の実施例において、調整は、双方のホスト間で直接ネゴシエートされてよい。調整の対象は、送信されるデータのパーミッション、サイズ、及び／又は他の属性であり得る。詳細には、予め定義された順序、例えばより最近にか又はより最近でなく書き込まれたデータに基づく予め定義された順序などに従いデータを転送することを達成するために、転送されるデータについての情報が交換されてよい。
【００６６】
ブロック３２０において、元のホストは、ローカルキャッシュデータを宛先ホストに送信することを開始する。いくつかの実現例において、ローカルキャッシュデータは、宛先ホストに直接送信されてよい。他の実施例において、ローカルキャッシュデータは、キャッシュコントローラを介して、又は代替のルートを介して送信されてよい。ローカルキャッシュデータは、第１のストレージ１４０Ａ又は第１のキャッシュ１３０Ａ内などの、元のホストでローカルに記憶されたデータに制限されず、しかし、グローバルストレージ１５０に又は他の場所に記憶されたデータをさらに含んでよい。ローカルキャッシュデータは、マイグレートされるＶＭ、例えば上述されたＶＭ１２０Ａなどに関連づけられ得る。ローカルキャッシュデータと共に、ローカルキャッシュデータに関連づけられたメタデータが送信されてよい。このメタデータは、ローカルキャッシュデータとは独立して、例えば、非同期通信によってなどで送信されてよい。ローカルキャッシュデータ及びメタデータの双方が、最もホットなもの（ｈｏｔｔｅｓｔ）から始まり最もコールドなもの（ｃｏｌｄｅｓｔ）まで送信されてよい。最もホットなデータは、ローカルキャッシュに最も最近書き込まれたデータを参照してよく、最もコールドなデータは、このＶＭに属するいかなる他のデータよりもより長くキャッシュに存在したデータを参照する。別法として、ローカルキャッシュデータが、より頻繁でなくアクセスされたキャッシュアドレスのほうを選んで（ｉｎ  ｆａｖｏｕｒ  ｏｆ）、より頻繁にアクセスされたキャッシュアドレスを用いて送信されてよい。
【００６７】
ローカルキャッシュデータを送信することが始まった後に書き込み操作が元のホストにおいて受信された場合、これら書き込み操作は第２のホストのキャッシュに対して複製される。これはブロック３３０により反映され、こうした書き込み操作が受信されたときにいつも実行される。こうした書き込み操作を複製することは、書き込まれるアドレス及び／又はデータなどの書き込み操作の詳細を、宛先ホストに又はキャッシュコントローラに通信することを含んでよい。このステップは、宛先ホスト上の内容が元のホストと一貫することを保証する。一実施例において、第２のホストにすでに送信されたキャッシュアドレスに向けられた書き込み操作のみが、説明されたように複製されてよい。
【００６８】
ブロック３２０及び３３０は、ブロック３４０に示されるようにマイグレートされるＶＭが一時停止されるまで、かつ／あるいはブロック３５０に示されるように転送が完了するまで実行される。ブロック３４０においてＶＭが一時停止されていると分かった場合、ローカルキャッシュデータは、転送がまだ完了していない場合には送信され続けてよい。これはブロック３６０により示され、ブロック３６０は、上記で論じられたブロック３２０と同一の方法でローカルキャッシュデータを送信することを表す。
【００６９】
ひとたび転送が完了すると、マイグレートされたＶＭに関連づけられたキャッシュの現在の所有者が、例えば、キャッシュコントローラに及び／又はＶＭ１２０Ｎなどの新しいＶＭに対しての通知によってなどで、ブロック３７０において宣言されてよい。方法３００は、ブロック３８０において第１のキャッシュからローカルキャッシュデータ及び関連づけられたデータを破棄すること、例えば、削除することなどで終了する。いくつかの実施例において、ローカルキャッシュデータを送信した直後にそれを第１のキャッシュから削除するほうを選んで、ブロック３８０が省略されてよい。
【００７０】
図４は、第２のホスト１１０Ｎなどの宛先ホストで実行されるさらなる方法を示す。ブロック４１０において、ＶＭ１１０ＡなどのＶＭの元のホストから宛先ホストへのマイグレーションに関する通知が宛先ホストで受信される。この通知を受信したことに応答して、宛先ホストは、元のホストから送信されるキャッシュデータを受信することの準備をする。一例において、準備することは、宛先ホストで空きメモリ空間を識別することを含む。準備することは、信頼可能な接続を確立することと、転送の詳細をネゴシエートすることとをさらに含んでよい。
【００７１】
キャッシュデータを受信する間、宛先ホストは、ＶＭが一時停止されているとの通知を受信し得る。
【００７２】
宛先ホストでデータを受信することは、すでに宛先ホストのキャッシュ内にあるデータと衝突するか又は追い出されたデータと衝突するすべてのデータ及び／又はメタデータを破棄することを含んでよい。
【００７３】
ブロック４３０及び４４０は、前述された通知を受信した後に１つ以上の読み出し又は書き込み操作を受信することを示す。こうした操作を受信し、対処することは、キャッシュデータを受信することとは独立である。具体的に、キャッシュデータを受信する処理は未知の時間期間について継続し得る。この期間の間、操作が宛先ホストにより受信され、実行されてよい。
【００７４】
読み出し操作を受信したことに応答して、宛先ホストは、ブロック４５０において、この読み出し操作により要求されたキャッシュデータが宛先ホストのキャッシュに、例えば第２のキャッシュ１３０Ｎなどに存在するかどうかを決定してよい。キャッシュデータは、ブロック４６０に示されるように、キャッシュデータがその中に存在すると決定したことに応答して宛先キャッシュから読み出される。さもなければ、読み出し操作は元のホストに、例えば第１のホスト１１０Ａなどに送信され、ブロック７０により示されるように、元のホストにおいて読み出し操作が元のキャッシュに適用される。その後、読み出されたデータは宛先ホストに返されてよい。
【００７５】
ブロック４４０に示されるように、書き込み操作を受信したことに応答して、書き込み操作内に示され及び／又は含まれるデータが宛先キャッシュに書き込まれる。特定の実施例において、データはさらに、元のホストでキャッシュに書き込まれてよい。
【００７６】
宛先ホストでキャッシュデータを受信することは、元のホストからの通知で終結してよい。いくつかの実施例において、こうした通知は、ＶＭの所有権が元のから宛先のホストに変更され得ることを示してよい。
【００７７】
いくつかの場合、キャッシュデータの転送は、例えば、宛先ホストでいかなるキャッシュデータも受信することなく閾時間期間が満了したと検出したことに応答してなどで、又はＶＭのさらなるマイグレーションに関する別の通知を受信したことに応答してなどで、中止されてよい。
【００７８】
ここで論じられた実施例により提供される利点は、ＶＭのシームレスマイグレーションを含む。このシームレス性は、読み出し及び書き込み操作に対処するときに、ＶＭがあるホストから別のホストにマイグレートされる処理中でさえ、ＶＭに関連づけられたキャッシュデータに向けられた操作が対処され得ることを示す。
【００７９】
図５は、第２のホスト１１０Ｎなどの宛先ホストで実行されるさらなる方法５００を示す。方法５００は、第１のホスト１１０Ａなどの元のホストから第２のホスト１１０Ｎなどの宛先ホストへのＶＭのマイグレーションに関する通知に応答して開始してよい。図３のステップ３１０と同様、キャッシュ転送の詳細がステップ５１０において調整されてよい。この調整は、元のホストとの直接通信において実行されてよく、あるいはキャッシュコントローラを介して実行されてもよい。調整された詳細は、図３に関して上記で論じられたものと同一であり得る。
【００８０】
調整の後、元のホストからのローカルキャッシュデータがブロック５２０において宛先ホストで受信される。再びになるが、図３に関して論じられたローカルキャッシュデータの詳細がこのステップに適用される。一実施例において、宛先ホストでローカルキャッシュデータを受信することは、宛先ホストのキャッシュ内、例えば第２のキャッシュ１３０Ｎ内の、このデータのより古いバージョンを上書きすることを含んでよい。ブロック５２０は、マイグレートされるＶＭが宛先ホストで再開されたという通知がブロック５３０において受信されるまで繰り返す。こうした再開は典型的には、ＶＭを元のホストから宛先ホストにマイグレートする過程で元のホスト上でＶＭを一時停止した後、発生する。ＶＭを一時停止することは、図３のブロック３４０に関して上記で論じられている。
【００８１】
ひとたびＶＭが再開されると、方法７００はブロック５４０で継続し、ブロック５４０において、宛先ホストはローカルキャッシュデータを受信することを継続する。しかしながら、元のホストから受信されたローカルキャッシュデータが宛先ホストに既に存在することを検出され、詳細には宛先ホスト上の異なるステートにあることを検出された場合、受信したローカルキャッシュデータは破棄されることになり、宛先ホストにおいて対応データを上書きすることに使用されないことになる。
【００８２】
いくつかの実施例において、方法５００はブロック５５０において、ＶＭが再開された後、及び、特定のローカルキャッシュデータが宛先ホストにおいて依然として見当たらないと検出したことに応答して、元のホストからの上記特定のローカルキャッシュデータを要求する。こうした要求は、ＶＭの要求に基づき行われてよい。特定のローカルキャッシュデータを取得した後、それは宛先ホストのローカルキャッシュに書き込まれてよい。
【００８３】
ブロック５４０及び／又は５５０は、ブロック５７０により示されるように、ローカルキャッシュデータの所有権が元のホスト上のＶＭから宛先ホスト上のＶＭに実際に変わるまで続行してよい。
【００８４】
図６は、ＶＭのマイグレーションの間における元のホスト及び宛先ホストの動作を示すシーケンス図である。シーケンス６００は、ステップ６１０及び６２０において元のホスト及び宛先ホストにプレモーションイベント（ｐｒｅ−ｍｏｔｉｏｎ  ｅｖｅｎｔｓ）を送信することで開始する。元のホストの一例が、上記で論じられた第１のホスト１１０Ａである。宛先ホストの一例が、第２のホスト１１０Ｎである。プレモーションイベントは、ＶＭがあるホストから別のホストにマイグレートされることを示し、キャッシュコントローラ１６０により送信されてよい。しかしながら、キャッシュコントローラは、本発明が機能するのに義務的でなく、プレモーションイベントは、任意の他の相手により、例えばマイグレートされるＶＭにより同様に送信されてよい。ステップ６３０及び６４０において、キャッシュ転送の詳細が調整されてよい。例示される実施例において、これは、元のホスト及び宛先ホストに対するメッセージにより転送特性を定義するキャッシュコントローラにより実行される。他の実施例において、調整は、マイグレートされるＶＭにより、又は元のホストの宛先ホストとの直接通信により実行されてよい。
【００８５】
シーケンス６００は、ステップ６５０及び６６０において元のホストがキャッシュデータ及びキャッシュメタデータを送信することで続行する。これらステップは上記で、例えば図３のブロック３２０及び図５のブロック５２０に関して論じられている。
【００８６】
上記データを送信する間のある時点で、ステップ６６５が、ＶＭが元のホスト上で一時停止したと検出し得る。これに応答して、宛先ホストは、ＶＭに属するデータのローカルのミスを体験したことに応答して、元のホストからのデータをステップ６７０において要求してよい。さらに、ＶＭが一時停止されたと検出した後、元のホストは、ステップ６８０及び６９０においてキャッシュデータ及びキャッシュメタデータを宛先ホストに送信することを継続する。これは、図３のブロック３６０及び図５のブロック５４０と同様である。
【００８７】
ステップ６９５において、元のホストは、完了した転送について宛先ホスト及び／又はキャッシュコントローラに通知してよい。別法として、宛先ホストはそれ自体により、例えば、元のホスト上のＶＭを監視することにより完了を検出してもよい。さらに別の代替として、ＶＭ自体が宛先ホストに通知してもよい。
【００８８】
ステップ６９５の後、元のホストは、送信されたキャッシュデータを削除してよい。このステップに対する代替が、上記の図３のブロック３８０の議論に従い実行されてもよい。さらに、ステップ６９５の後、ＶＭの所有権がステップ６９５Ｂにおいて元のホストから宛先ホストに変更されてよい。このステップは、キャッシュコントローラにより、又はＶＭにより実行されてよい。ステップ６９５Ｂがキャッシュコントローラにより実行される場合、宛先ホストはそれを動作ステップ６９５において通知される。
【００８９】
シーケンス６００は、ゆえに、ＶＭのすべてのデータが元のから宛先のホストにマイグレートされ、ＶＭのマイグレーションが完了して、完結する。
【００９０】
さらなる利点は、操作が進行中のマイグレーションにかかわらず対処されるだけでなく、さらにそのそれぞれの対処がマイグレーションフェーズを、例えば、キャッシュデータが宛先に対して依然として送信されているかどうかなどを考慮することである。これは、キャッシングサービスにおけるいかなるダウンタイムも回避する。マイグレーションの前、読み出し及び書き込み操作は、その元のサイトにおいてＶＭに関連づけられたキャッシュで対処され得る。マイグレーションの間、元のホストにおける書き込み操作は宛先ホストに送信され得る。これは、宛先ホストにおけるキャッシュに、マイグレーションが完了したときに使用される準備のできたデータを有利に投入する。さらに、データは宛先ロケーションで書き込まれることを保証され、宛先ロケーションでは、データは再びすぐにアクセスされることが予期され得る。元のホスト及び宛先ホストの双方において書き込み操作を適用することを含む実施例において、いかなるキャッシュ無効化も回避され、ゆえに、第１若しくは第２のキャッシュに又はグローバルストレージにアクセスされる数を低減する。
【００９１】
さらに、マイグレーションの間、宛先ホストにおける読み出し操作が、条件付きで（ｃｏｎｄｉｔｉｏｎａｌｌｙ）、宛先ホストキャッシュに存在しない場合に元のホストに送信される。それにより、本発明の実施例は、キャッシュデータコピーが依然として進行中である間、宛先で読み出されるべきデータを既に届けている可能性があるという事実を考慮する。大幅な利点は、キャッシュデータの送信が進行するとき、より少ない読み出し操作が元のホストに送信される必要があることである。ゆえに、依然としてマイグレートする処理中である間、宛先ホストにおけるＶＭの応答性が増大する。キャッシュデータの特定の順序を含む実施例は、すべてのキャッシュデータがまだ送信されてはいない可能性があるとしても、マイグレートする間にデータが宛先ホスト上で見つけられる可能性をこれら実施例が増大させる点で、上記利点にさらに追加をする。この利点は、より頻繁にアクセスされたデータ及び／又はより最近アクセスされたデータが近い将来に再度アクセスされそうであり、このデータを優先することが宛先においてＶＭの応答性をさらに向上させることができるという洞察に起因する。
【００９２】
さらに別の利点は、無効化されたキャッシュデータを第１のストレージ又はグローバルストレージにフラッシュすることなくキャッシュデータがあるホストから別のホストに転送され、ゆえに、処理の速度をさらに増大させることである。
【００９３】
発明ステップは、少なくとも、到来する読み出し及び／又は書き込み操作に遅延なく対処すること共に、元のホストから宛先ホストへのキャッシュデータの送信を開始することにより確立される。いくつかの場合、対処することはそれ自体、例えば書き込み操作が宛先に転送されるときなどに、応答性を増大させる。
【００９４】
本発明及びその利点が詳細に説明されたが、別記の特許請求の範囲より定義されるように本発明の主旨及び範囲から逸脱することなく様々な変更、代用、及び変形がここで行われ得ることが理解されるべきである。
【図１】
2018531471.tif 000003
【図２】
2018531471.tif 000004
【図３】
2018531471.tif 000005
【図４】
2018531471.tif 000006
【図５】
2018531471.tif 000007
【図６】
2018531471.tif 000008
【手続補正書】
【提出日】平成30年5月11日(2018.5.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のキャッシュを含み、かつ仮想マシン（ＶＭ）に関連づけられた第１のホストと、
第２のキャッシュを含む第２のホストと、
を含み、
前記第１のホストは、通知に応答して前記第１のキャッシュのキャッシュデータを前記第２のホストに送信するように構成され、前記キャッシュデータは前記ＶＭに関連づけられ、前記通知は前記ＶＭが前記第１のホストから前記第２のホストにマイグレートされることを示し、前記第１のホストは、前記通知を受信したことに応答して前記ＶＭに関連づけられた書き込み操作を前記第２のホストに送信するように構成され、
前記第２のホストは、前記通知を受信したことに応答して、前記ＶＭのキャッシュデータが前記第２のキャッシュに存在しないときに前記キャッシュデータに関連づけられた読み出し操作を前記第１のキャッシュに適用し、前記ＶＭのキャッシュデータに関連づけられた書き込み操作を前記第２のキャッシュに適用するように構成される、
システム。
【請求項２】
前記第２のホストは、前記ＶＭのさらなるキャッシュデータが前記第１のホストから前記第２のホストに送信されないと決定したことに応答してのみ前記ＶＭに関連づけられた読み出し操作を前記第２のキャッシュに適用するようにさらに構成される、請求項１に記載のシステム。
【請求項３】
前記第１のホストは、前記ＶＭのさらなるキャッシュデータが前記第１のホストから前記第２のホストに送信されないと決定したことに応答して前記第１のキャッシュ内の送信されたキャッシュデータを削除するようにさらに構成される、請求項１又は２に記載のシステム。
【請求項４】
前記通知を送信するように構成されたキャッシュコントローラ、をさらに含む請求項１乃至３のうち一項に記載のシステム。
【請求項５】
キャッシュデータを送信することは、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータを最初に送信することを含む、請求項１乃至４のうち一項に記載のシステム。
【請求項６】
前記キャッシュデータはキャッシュメタデータを含む、請求項１乃至５のうち一項に記載のシステム。
【請求項７】
前記第１のホストは、前記書き込み操作を前記第２のホストに送信することに追加で、前記ＶＭに関連づけられた書き込み操作を前記第１のキャッシュに適用するようにさらに構成される、請求項１乃至５のうち一項に記載のシステム。
【請求項８】
ホストデバイスであって、ローカルキャッシュを含み、通知に応答してリモートホストのリモートキャッシュからのキャッシュデータを受信することであり、前記キャッシュデータは仮想マシン（ＶＭ）に関連づけられ、前記ＶＭは前記リモートホストに関連づけられるように、かつ、前記ＶＭのキャッシュデータが前記ローカルキャッシュに存在しない場合に前記キャッシュデータに関連づけられた読み出し操作を前記リモートキャッシュに、前記ＶＭのキャッシュデータに関連づけられた書き込み操作を前記ローカルキャッシュに適用するように構成され、前記通知は前記ＶＭが前記リモートホストから前記ホストデバイスにマイグレートされることを示す、ホストデバイス。
【請求項９】
前記ホストデバイスは、前記ＶＭのさらなるキャッシュデータが前記リモートホストから前記ホストデバイスに送信されないと決定したことに応答してのみ前記ＶＭに関連づけられた読み出し操作を前記ローカルキャッシュに適用するようにさらに構成される、請求項８に記載のホストデバイス。
【請求項１０】
前記通知はキャッシュコントローラにより送信される、請求項８又は９に記載のホストデバイス。
【請求項１１】
キャッシュデータを送信することは、最も最近取り出され、最も最近書き込まれ、又は最も頻繁にアクセスされたデータを最初に送信することを含む、請求項８乃至１０のうち一項に記載のホストデバイス。
【請求項１２】
前記キャッシュデータはキャッシュメタデータを含む、請求項８乃至１１のうち一項に記載のホストデバイス。
【請求項１３】
分散キャッシュライブマイグレーションの方法であって、
通知に応答して、第１のホストの第１のキャッシュからキャッシュデータを受信するステップであり、前記キャッシュデータは仮想マシン（ＶＭ）に関連づけられる、ステップと、前記キャッシュデータが第２のホストの第２のキャッシュに存在しないとき、前記ＶＭに関連づけられた読み出し操作を前記第１のホストの前記第１のキャッシュに適用するステップと、前記ＶＭのキャッシュデータに関連づけられた書き込み操作を前記第２のキャッシュに適用するステップと、を含み、前記通知は前記ＶＭが前記第１のホストから前記第２のホストにマイグレートされることを示す、方法。
【請求項１４】
前記通知はキャッシュコントローラにより送信される、請求項１３に記載の方法。
【請求項１５】
前記キャッシュデータはキャッシュメタデータを含む、請求項１３又は１４に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
仮想化は、コンピューティングデバイスにより提供されるリソースの抽象化の概念を参照する。オペレーティングシステムを含むアプリケーションは、アプリケーションにとって単一の物理ホストとして見える仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ、ＶＭ）内で動作することがある。複数のＶＭが同じ物理ホスト上に存在することがある。仮想化は、ゆえに、各ＶＭについて、それがＶＭに関連づけられたリソースに対して排他的アクセスを有するという錯覚を維持する必要がある。こうしたリソースは仮想のものとして参照される。ＶＭは、ＶＭと同じホスト上の仮想マシンマネージャ（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍａｎａｇｅｒ、ＶＭＭ）により管理されることがある。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
読み出し操作を受信したことに応答して、宛先ホストは、ブロック４５０において、この読み出し操作により要求されたキャッシュデータが宛先ホストのキャッシュに、例えば第２のキャッシュ１３０Ｎなどに存在するかどうかを決定してよい。キャッシュデータは、ブロック４６０に示されるように、キャッシュデータがその中に存在すると決定したことに応答して宛先キャッシュから読み出される。さもなければ、読み出し操作は元のホストに、例えば第１のホスト１１０Ａなどに送信され、ブロック４７０により示されるように、元のホストにおいて読み出し操作が元のキャッシュに適用される。その後、読み出されたデータは宛先ホストに返されてよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
ひとたびＶＭが再開されると、方法５００はブロック５４０で継続し、ブロック５４０において、宛先ホストはローカルキャッシュデータを受信することを継続する。しかしながら、元のホストから受信されたローカルキャッシュデータが宛先ホストに既に存在することを検出され、詳細には宛先ホスト上の異なるステートにあることを検出された場合、受信したローカルキャッシュデータは破棄されることになり、宛先ホストにおいて対応データを上書きすることに使用されないことになる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
ブロック５４０及び／又は５５０は、ブロック５６０により示されるように、ローカルキャッシュデータの所有権が元のホスト上のＶＭから宛先ホスト上のＶＭに実際に変わるまで続行してよい。
【国際調査報告】
2018531471.tif 000009
2018531471.tif 000010