(57)【特許請求の範囲】
【請求項１】
ホストシステム上で動作するように構成された複数の仮想マシンに、該ホストシステムにローカル接続されたフラッシュストレージデバイスの容量を利用可能にする方法において、
前記ホストシステムにより、前記複数の仮想マシンのうちの各仮想マシンに、前記ホストシステムにローカル接続されたフラッシュストレージデバイス内のフラッシュストレージ領域の一部分を割り当てること、
前記ホストシステムにより、前記フラッシュストレージ領域の割当分が仮想フラッシュメモリデバイスとして前記仮想マシンによって読取可能および書込み可能となるようにすること、
前記ホストシステムにより、前記仮想マシンが一時停止または電源切断された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することを備え、
前記仮想マシンによって読取可能および書込み可能となるようにすることは、
前記ホストシステムにより、前記フラッシュストレージ領域の割当分に対応する仮想スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）デバイスを作成すること、
前記ホストシステムにより、前記仮想マシンの初期化において前記仮想マシンから、照会コマンドを受け取ること、
前記ホストシステムにより、前記照会コマンドに応答して、前記仮想マシンに照会応答を送信することを含み、
前記照会応答によって、前記仮想マシンによって読取可能および書込み可能なフラッシュストレージデバイスとして、前記仮想ＳＣＳＩデバイスが識別され、
前記照会応答は、前記仮想ＳＣＳＩデバイスが不揮発性メモリデバイスとして挙動するように構成されるか、または揮発性メモリデバイスとして挙動するように構成されるかを示す情報を含む、方法。
【請求項２】
前記仮想マシンが動作再開または再び電源投入された時に前記仮想マシンに、前記フラッシュストレージデバイス内のフラッシュストレージ領域の一部分を新たに割り当てることをさらに備える、請求項１に記載の方法。
【請求項３】
前記仮想マシンが一時停止された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することは、
前記フラッシュストレージ領域の割当分に保存されていたデータを、前記ホストシステムとネットワークを介して通信するバックエンドストレージデバイスに保存すること、
前記保存した後に前記フラッシュストレージ領域の割当分を解放することを含む、請求項１に記載の方法。
【請求項４】
前記データが、前記バックエンドストレージデバイス上に仮想マシンのイメージファイルとして保存される、請求項３に記載の方法。
【請求項５】
前記仮想マシンが動作再開された時に前記仮想マシンに、前記フラッシュストレージデバイス内のフラッシュストレージ領域の一部分を新たに割り当てることは、
バックエンドストレージデバイスに以前保存されたデータを前記フラッシュストレージ領域の新しい割当分にコピーすることを含む、請求項３に記載の方法。
【請求項６】
前記情報が、前記仮想ＳＣＳＩデバイスが揮発性メモリデバイスとして挙動するように構成されることを示す場合、前記仮想マシンが電源切断された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することは、
前記フラッシュストレージ領域の割当分に保存されていたデータを、前記ホストシステムとネットワークを介して通信するバックエンドストレージデバイスに保存せずに、前記フラッシュストレージ領域の割当分を解放することを含む、請求項１に記載の方法。
【請求項７】
前記仮想マシンが他のホストシステムに移行された時に前記仮想マシンのための前記フラッシュストレージ領域の割当分を解放することをさらに備える請求項１に記載の方法。
【請求項８】
前記仮想マシンが他のホストシステムに移行された時に前記仮想マシンのための前記フラッシュストレージ領域の割当分を解放する前に、
前記フラッシュストレージ領域の割当分に保存されていたデータを、前記他のホストシステムにローカル接続されたフラッシュストレージデバイス上にあるフラッシュストレージ領域の新しい割当分にコピーすることをさらに備える請求項７に記載の方法。
【請求項９】
前記仮想マシンのための前記フラッシュストレージ領域の割当分の大きさが、前記仮想マシンのプロビジョニング時にユーザによって決定される、請求項１に記載の方法。
【請求項１０】
前記仮想マシンのための前記フラッシュストレージ領域の割当分が、前記フラッシュストレージデバイス上にあるファイルに対応する、請求項１に記載の方法。
【請求項１１】
プロセッサにより実行可能なコンピュータソフトウェアを保存する非一時的なコンピュータ可読記憶媒体において、前記コンピュータソフトウェアが、ホストシステム上で動作するように構成された複数の仮想マシンに、該ホストシステムにローカル接続されたフラッシュストレージデバイスの容量を利用可能にする方法を具現化し、前記方法が、
前記複数の仮想マシンのうちの各仮想マシンに、前記ホストシステムにローカル接続されたフラッシュストレージデバイス内のフラッシュストレージ領域の一部分を割り当てること、
前記フラッシュストレージ領域の割当分が仮想フラッシュメモリデバイスとして前記仮想マシンによって読取可能および書込み可能となるようにすること、
前記仮想マシンが一時停止または電源切断された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することを備え、
前記仮想マシンによって読取可能および書込み可能となるようにすることは、
前記プロセッサにより、前記フラッシュストレージ領域の割当分に対応する仮想スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）デバイスを作成すること、
前記プロセッサにより、前記仮想マシンの初期化において前記仮想マシンから、照会コマンドを受け取ること、
前記プロセッサにより、前記照会コマンドに応答して、前記仮想マシンに照会応答を送信することを含み、
前記照会応答によって、前記仮想マシンによって読取可能および書込み可能なフラッシュストレージデバイスとして、前記仮想ＳＣＳＩデバイスが識別され、
前記照会応答は、前記仮想ＳＣＳＩデバイスが不揮発性メモリデバイスとして挙動するように構成されるか、または揮発性メモリデバイスとして挙動するように構成されるかを示す情報を含む、非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記方法が、
前記仮想マシンが動作再開または再び電源投入された時に前記仮想マシンに、前記フラッシュストレージデバイス内のフラッシュストレージ領域の一部分を新たに割り当てることをさらに備える、請求項１１に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記仮想マシンが一時停止された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することは、
前記フラッシュストレージ領域の割当分に保存されていたデータを、前記ホストシステムとネットワークを介して通信するバックエンドストレージデバイスに保存することを含み、
前記仮想マシンが動作再開された時に前記仮想マシンに、前記フラッシュストレージデバイス内のフラッシュストレージ領域の一部分を新たに割り当てることは、
前記バックエンドストレージデバイスに保存されていたデータを前記新しいフラッシュストレージ領域の割当分にコピーすることを含む、請求項１２に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記情報が、前記仮想ＳＣＳＩデバイスが揮発性メモリデバイスとして挙動するように構成されることを示す場合、前記仮想マシンが電源切断された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することは、
前記フラッシュストレージ領域の割当分に保存されていた前記データを前記バックエンドストレージデバイスに保存せずに、前記フラッシュストレージ領域の割当分を解放することを含む、請求項１３に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
ホストシステムであって、
ローカル接続されたフラッシュストレージデバイスと、
プロセッサであって、
複数の仮想マシンのうちの各仮想マシンに、前記フラッシュストレージデバイス内のフラッシュストレージ領域の一部分を割り当て、
前記フラッシュストレージ領域の割当分を仮想フラッシュメモリデバイスとして前記仮想マシンにより読取可能および書込み可能にし、
前記仮想マシンが一時停止または電源切断された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放するように構成された前記プロセッサとを備え、
前記仮想マシンにより読取可能および書込み可能にすることは、
前記プロセッサにより、前記フラッシュストレージ領域の割当分に対応する仮想スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）デバイスを作成すること、
前記プロセッサにより、前記仮想マシンの初期化において前記仮想マシンから、照会コマンドを受け取ること、
前記プロセッサにより、前記照会コマンドに応答して、前記仮想マシンに照会応答を送信することを含み、
前記照会応答によって、前記仮想マシンによって読取可能および書込み可能なフラッシュストレージデバイスとして、前記仮想ＳＣＳＩデバイスが識別され、
前記照会応答は、前記仮想ＳＣＳＩデバイスが不揮発性メモリデバイスとして挙動するように構成されるか、または揮発性メモリデバイスとして挙動するように構成されるかを示す情報を含む、ホストシステム。
【請求項１６】
前記プロセッサが、
前記仮想マシンが動作再開または再び電源投入された時に前記仮想マシンに、前記フラッシュストレージデバイス内のフラッシュストレージ領域の一部分を新たに割り当てるようにさらに構成されている、請求項１５に記載のホストシステム。
【請求項１７】
前記仮想マシンが一時停止された時に前記仮想マシンのためのフラッシュストレージ領域割当分を解放することは、
前記フラッシュストレージ領域の割当分に保存されていたデータを、前記ホストシステムとネットワークを介して通信するバックエンドストレージデバイスに保存することを含み、
前記仮想マシンが動作再開された時に前記仮想マシンに、前記フラッシュストレージデバイスに前記フラッシュストレージ領域の一部分を新たに割り当てることは、
前記バックエンドストレージデバイスに保存されていた前記データを前記フラッシュストレージ領域の新しい割当分にコピーすることを含む、請求項１６に記載のホストシステム。
【請求項１８】
前記情報が、前記仮想ＳＣＳＩデバイスが揮発性メモリデバイスとして挙動するように構成されることを示す場合、前記仮想マシンが電源切断された時に前記仮想マシンのためのフラッシュストレージ領域の割当分を解放することは、
前記フラッシュストレージ領域の割当分に保存されていた前記データを前記バックエンドストレージデバイスに保存せずに、前記フラッシュストレージ領域の割当分を解放することを含む、請求項１７に記載のホストシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
仮想化環境では、仮想マシン（ＶＭ）を動作させるホストシステムが１つ以上のローカル接続された（すなわち、「ホスト側」）フラッシュストレージデバイスを含むことがますます一般的となりつつある。例えば、ホスト側フラッシュストレージデバイスの１種が、ホストシステムの筐体内に据え付けられるソリッドステートディスク（ＳＳＤ）またはＰＣＩｅフラッシュカードである。ホスト側フラッシュストレージデバイスの別の１種は、周辺インタフェースを介してホストシステムに直接接続される外付けフラッシュドライブまたは装置である。
【０００２】
一般に、ホスト側フラッシュストレージデバイスは、ホストシステムがネットワーク（例えば、ファイバチャネル、イーサネット、その他）上でアクセスするバックエンドストレージアレイよりもかなり低い読取／書込み遅延性とより高い帯域幅に対応できる。このようなパフォーマンスの改善には多くの理由がある。第一に、バックエンドストレージアレイは通常、複数のホストシステムからの読取／書込みリクエストに応えなければならないが、各バックエンドストレージアレイが有する待ち行列は有限であり、このことは、そのアレイが特定のホストシステムのために対応できる帯域幅／遅延時間の量に影響を与える。第二に、ストレージネットワークはスイッチやルータ等の能動素子を含んでいてもよく、それによってネットワークのエンドポイント（例えば、ホストシステムとバックエンドストレージデバイス）間の遅延時間が長くなる。それゆえ、ホスト側フラッシュストレージデバイスのほうが、ホストシステム上で動作するＶＭが頻繁に素早くアクセスする必要のあるデータをキャッシュに格納／保存するのに適している。残念ながら、既存の仮想化プラットフォームは、ホスト側フラッシュストレージデバイスの一部をＶＭに自動的に割り当て、サーフェシングして（surfacing）（すなわち、アクセス可能／可視的にして）、ＶＭがそのデバイスの低遅延性を生かせるようにする機構を提供しない。さらに、既存の仮想化プラットフォームは、ＶＭ間でのサーフェシングされたフラッシュストレージ容量の割当をホストシステムの状況の変化に応答して最適化することができない。
【発明の概要】
【課題を解決するための手段】
【０００３】
ホスト側フラッシュストレージ容量をあるホストシステム上で動作する複数のＶＭにサーフェシングするための技術が提供される。１つの実施形態において、ホストシステムは、複数のＶＭの中の各ＶＭのために、そのホストシステムにローカル接続されたフラッシュストレージデバイスの中にフラッシュストレージ領域割当分を作る。するとホストシステムは、このフラッシュストレージ領域割当分が仮想フラッシュメモリデバイスとしてＶＭによって読取可能および書込み可能になるようにする。
【０００４】
以下の詳細な説明と添付の図面により、具体的な実施形態の性質と利点をよりよく理解できる。
【図面の簡単な説明】
【０００５】
【図１】１つの実施形態による、ホスト側フラッシュストレージ容量を仮想フラッシュメモリデバイスとしてＶＭにサーフェシングする機能をサポートするシステム環境のブロック図を示す。
【図２】１つの実施形態による、ホスト側フラッシュストレージ容量をあるＶＭに、そのＶＭのプロビジョニングおよび電源投入時にサーフェシングするための、図１のシステム環境内のフローを示す。
【図３】１つの実施形態による、あるＶＭのためのホスト側フラッシュストレージ領域割当分を、そのＶＭの一時停止またはスナップショット作成時に解放するための、図１のシステム環境内のフローを示す。
【図４】１つの実施形態による、あるＶＭのための新しいホスト側フラッシュストレージ領域割当分を、そのＶＭの動作再開時に割り当てるための、図１のシステム環境内のフローを示す。
【図５】１つの実施形態による、図２のフローに関するさらに詳細な点を提供するフローチャートを示す。
【図６】１つの実施形態による、図３のフローに関するさらに詳細な点を提供するフローチャートを示す。
【図７】１つの実施形態による、図４のフローに関するさらに詳細な点を提供するフローチャートを示す。
【図８】１つの実施形態による、あるＶＭのためのホスト側フラッシュストレージ領域割当分を、そのＶＭの電源切断時に解放するためのプロセスのフローチャートを示す。
【図９】１つの実施形態による、あるＶＭのためのホスト側フラッシュストレージ領域割当分を、そのＶＭが１つのホストシステムから他のホストシステムに移動された時に移行させるためのプロセスのフローチャートを示す。
【発明を実施するための形態】
【０００６】
以下の記述の中では、説明を目的として、様々な実施形態を理解できるように多数の例と詳細点が示されている。しかしながら、当業者にとっては、特定の実施形態はこれらの詳細点のいくつかがなくても実施でき、またはその改変または均等物を用いて実施することもできることが明白であろう。
【０００７】
具体的な実施形態は、ホスト側フラッシュストレージ容量を仮想フラッシュメモリ（ＶＦＭ）デバイスとしてＶＭにサーフェシング（surfacing）するための技術を提供する。１つの実施形態において、特定のＶＭに電源投入すると、ホストシステムは自動的にホスト側ストレージデバイスの中でそのＶＭのための領域を割り当てることができる。このフラッシュストレージ領域割当分の大きさは、例えばＶＭのプロビジョニング時にユーザ／システム管理者が指定するパラメータに基づくものとすることができる。するとホストシステムは、そのフラッシュストレージ領域割当分をＶＦＭデバイスとしてＶＭにサーフェシングする、すなわちアクセス可能にすることができ、それによってこのＶＭはＶＦＭデバイスを介してフラッシュストレージ領域割当分からの読取とフラッシュストレージ領域割当分への書込みを行うことができる。そのＶＭ上で実行されるアプリケーションはＶＦＭデバイスを様々な方法で利用して、ホスト側フラッシュストレージデバイスの低遅延性を生かすことができる。
【０００８】
特定の実施形態において、ホストシステムは、ＶＭに割り当て／サーフェシングするホスト側フラッシュストレージ領域を動的に管理して、非アクティブ状態の（例えば一時停止または電源切断された）ＶＭがホスト側フラッシュストレージデバイスの領域をまったく消費しないようにすることができる。例えば、ＶＭが一時停止または電源切断された時、ホストシステムは、そのＶＭに割り当てられたフラッシュストレージ領域を解放することができ、ホストシステムは、解放されたフラッシュストレージ領域を他のＶＭが使用するように割り当てなおすことができる。その後このＶＭの動作が再開されるか、電源投入された時に、ホストシステムはこのＶＭにホスト側フラッシュストレージデバイスの新しい部分をそのＶＭの要求に応じて割り当てることができる。このようにして、ホストシステムは、各ＶＭがホスト側フラッシュストレージ容量を実際に必要な時（すなわち、そのＶＭが活発に動作している（actively running）時）だけ使用するのを確実にすることができ、それゆえ、複数のＶＭ間でのこの容量の共有を最適化できる。
【０００９】
他の実施形態において、あるＶＭのためのホスト側フラッシュストレージ領域をＶＭの一時停止／動作再開時およびＶＭの電源切断／電源投入時に解放して再割当するプロセスの一環として、ホストシステムはそのＶＭのためのＶＦＭデバイスを不揮発性メモリデバイスまたは揮発性メモリデバイスとして扱うことができる。前者の場合、ホストシステムはＶＭのフラッシュメモリストレージ割当分の中に保存されたデータをそのＶＭの一時停止または電源切断時にバックエンドストレージデバイス（例えばハードディスクベースのストレージアレイ）に保存できる。ホストシステムはその後、ＶＭが動作再開または電源投入されると、保存されていたデータをＶＭの新しいフラッシュストレージ割当分に復元できる。このアプローチによれば、ＶＭは、ＶＦＭデバイス内のデータが（他の何れの通常のストレージデバイスとも同様に）ＶＭの一時停止状態中およびＶＭのパワーサイクル中の両方において持続されると錯覚する（illusion）。
【００１０】
後者の場合、ホストシステムはＶＭのフラッシュストレージ割当内のデータを、そのＶＭが一時停止され、動作再開された時にのみ、バックエンドストレージデバイスに保存し／バックエンドストレージデバイスから復元することができる。ホストシステムはこの保存／復元プロセスをＶＭの電源切断と投入時には行わず、これはＶＭのフラッシュストレージ割当分の中のデータがＶＭのパワーサイクル中に失われることを意味する。このアプローチによれば、ＶＭは、ＶＭＦデバイスが揮発性メモリ（例えばＲＡＭ）の１つのティア（a tier）に対応すると錯覚する。ＶＦＭデバイスは（ＶＭのライフサイクルから見た場合に）揮発性メモリデバイスとして機能できるため、ＶＦＭデバイスは仮想フラッシュ「メモリ」デバイス（仮想フラッシュ「ストレージ」デバイスではない）と呼ばれる。しかしながら、後でより詳しく説明するように、ＶＭは標準的なブロックベースプロトコル（例えばＳＣＳＩ）を介してＶＦＭデバイスにアクセスできる。
【００１１】
図１は、ある実施形態による、ホスト側フラッシュストレージ容量をＶＦＭデバイスとしてＶＭにサーフェシングする機能をサポートするシステム環境１００を示している。図のように、システム環境１００は仮想化ソフトウェア１０４を実行するホストシステム１０２を含む。仮想化ソフトウェア１０４（「ハイパーバイザ」としても知られる）は、多くの仮想マシンモニタ（virtual machine monitor : ＶＭＭ）１０６（１）〜１０６（Ｎ）を含むソフトウェア層である。各ＶＭＭ  １０６（１）〜１０６（Ｎ）は、対応するＶＭ  １０８（１）〜１０８（Ｎ）が動作できる仮想ハードウェア環境を提供する。
【００１２】
１つの実施形態において、仮想化ソフトウェア１０４はホストシステム１０２の物理ハードウェアプラットフォームと直接やり取りでき、介在するホストオペレーティングシステムはない。この実施形態において、仮想化ソフトウェア１０４はＶＭＭによるホストシステム１０２の各種の物理ハードウェアデバイスへのアクセスを管理するカーネル（図示せず）をさらに含むことができる。代替的な実施形態においては、仮想化ソフトウェア１０４は、「ホストされた」構成の一部とすることができ、「ホストされた」構成において、仮想化ソフトウェア１０４がホストオペレーティングシステム（図示せず）上で動作する。この実施形態において、仮想化ソフトウェア１０４は、物理ハードウェアデバイスのリソース管理をホストオペレーティングシステムに依存できる。当業者であれば、仮想化ソフトウェア１０４の設計と構成のための様々な改変や代替案がわかるであろう。
【００１３】
システム環境１００はまた、中央管理サーバ（central management server : ＣＭＳ）１１０とバックエンドストレージコンポーネント１１２も含み、これらは１つ以上のネットワーク１１４を介してホストシステム１０２と通信する。ＣＭＳ  １１０は、ホストシステム１０２に関して、ＶＭライフサイクル管理、ハードウェアモニタリング、ロードバランシング（load balancing）、その他の各種の管理タスクを実行できる。図１には１つのホストシステムだけが示されているが、ＣＭＳ  １１０は同時に多数のホストシステム（各々が複数のＶＭを含む）、例えばある仮想インフラストラクチャクラスタ内のホストシステムの全部を同時に管理できると理解するべきである。また、ＣＭＳ  １１０は異なるデータセンタにわたって（おそらく、異なる地理的場所に）分散された多数のホストシステムを管理するように連合させることができるとも理解するべきである。
【００１４】
バックエンドストレージコンポーネント１１２は通常、ハードディスクベースのストレージアレイであり、仮想ディスクファイル（「virtual disk file : ＶＭＤＫ」として知られる）およびその他の永続的ファイルを保存でき、ホストシステム１０２および／またはＣＭＳ  １１０がそのランタイム動作中にそのコンポーネント１１２からの読取りまたはそのコンポーネント１１２への書込みを行う。
【００１５】
図１の実施形態において、ホストシステム１０２はフラッシュストレージデバイス１１６に接続される。１つの実施形態において、フラッシュストレージデバイス１１６はローカル接続された（すなわち、ホスト側）デバイス、例えばＳＳＤ、ＰＣＩｅフラッシュカード、フラッシュドライブ／装置、またはこれに類するものとすることができる。他の実施形態において、フラッシュストレージデバイス１１６はネットワーク接続デバイス（例えばストレージファブリック／ネットワークを介する）とすることができる。また別の実施形態において、フラッシュストレージデバイス１１６は「ホスト共有」デバイスとして、複数のホストシステム間でフラッシュストレージデバイス１１６が共有されるようにすることができる。「背景技術」の項で述べたように、ＶＭ  １０８（１）〜１０８（Ｎ）がフラッシュストレージデバイス１１６にＶＭ−ａｗａｒｅでアクセスし（VM-aware access）、ＶＭ１０８（１）−１０８（Ｎ）内で実行されているアプリケーションがデバイスの低遅延読取／書込み能力を生かせるようにすることが望ましい。
【００１６】
この機能を有効にするために、ＶＭＭ  １０６（１）〜１０６（Ｎ）は各々、ＶＦＭモジュール１１８（１）〜１１８（Ｎ）を含むことができる。後でより詳しく述べるように、各ＶＦＭモジュール１１８（１）〜１１８（Ｎ）は、対応するＶＭ  １０８（１）〜１０８（Ｎ）を最初に電源投入した時に、フラッシュストレージデバイス１１６の一部をそのＶＭに自動的に割り当てる（ＶＦＭ割当分１２０（１）〜１２０（Ｎ）として示されている）。１つの実施形態において、フラッシュストレージデバイス１１６は、論理ボリュームマネージャ（ｌｏｇｉｃａｌ  ｖｏｌｕｍｅ  ｍａｎａｇｅｒ）またはＦ２ＦＳ（ｆｌａｓｈ  ｆｒｉｅｎｄｌｙ  ｆｉｌｅ  ｓｙｓｔｅｍ）でフォーマットすることができ、これによってＶＦＭモジュールはＶＦＭ割当分をデバイス１１６上のファイルとして作ることができる。すると、ＶＦＭモジュールをそのＶＭＭと相互運用して、割り当てられたその部分を仮想フラッシュメモリ（すなわちＶＦＭ）デバイスとしてＶＭにサーフェシングすることができる（ＶＦＭデバイス１２２（１）〜１２２（Ｎ）として示されている）。これによって、ＶＭ上で実行中のアプリケーションは、サーフェシングされたＶＦＭデバイスを介してフラッシュストレージデバイス１１６を見て、やり取りする（例えば、そこから読み出し、そこに書き込む）ことができる。
【００１７】
これに加えて、各ＶＦＭモジュール１１８（１）〜１１８（Ｎ）は、対応するＶＭ  １０８（１）〜１０８（Ｎ）の一時停止、スナップショット作成、または電源切断時に、フラッシュストレージデバイス１１６の中のそのＶＭのＶＦＭ割当分を解放して、そのＶＭが非アクティブ状態である間にその解放されたＶＦＭ割当分を他の目的に使用できるようにすることが可能である。ＶＭが動作再開または再び電源投入されると、ＶＦＭモジュールはフラッシュストレージデバイス１１６の中の新しい領域をそのＶＭにそのＶＭの要求に応じて割り当てなおすことができる。このことは、ＶＭに対して、ＶＭがそのＶＦＭデバイスに（実際にはそうでなくても）持続的にアクセスできるというインプレッション（impression）を与える。１つの実施形態において、ＶＦＭモジュールはＶＭのＶＦＭデバイス／ＶＦＭ割当分を不揮発性メモリとして扱い、それゆえ、ＶＭの一時停止またはＶＭの電源切断時にＶＦＭ割当分に保存されていたデータをバックエンドストレージ１１２にバックアップすることができる。代替的な実施形態において、ＶＦＭモジュールはＶＭのＶＦＭデバイス／ＶＦＭ割当分を揮発性メモリとして扱い、それゆえ、ＶＭの電源切断時にＶＦＭ割当分に保存されていたデータが廃棄されるようにすることができる。
【００１８】
図２は、ある実施形態による、あるＶＭに対して、そのＶＭのプロビジョニング（provisioning）および電源投入時にフラッシュストレージデバイス１１６の一部をサーフェシングするための、システム環境１００内のフロー２００を示している。フロー２００のステップ（１）（参照番号２０２）で、ＣＭＳ  １１０はホストシステム１０２上に配置するための新しいＶＭ（例えばＶＭ  １０８（１））のプロビジョニングを行うことができる。このステップの一環として、ＣＭＳ  １１０は例えばシステム管理者から、ＶＭ  １０８（１）のための所望のＶＦＭ割当分の大きさを示すパラメータを受け取ることができる。１つの実施形態において、ＣＭＳ  １１０はこのパラメータを他のＶＭ構成情報と共に適当なＶＭメタデータファイル（例えば、「.ＶＭＸファイル」）内に保存できる。
【００１９】
ステップ（２）（参照番号２０４）で、ＣＭＳ  １１０はホストシステム１０２上で実行中の仮想化ソフトウェア１０４に、ＶＭ  １０８（１）に電源投入するためのコマンドを送信できる。これに応答して、仮想化ソフトウェア１０４はＶＭＭ  １０６（１）にＶＭ  １０８（１）のための電源投入プロセスを開始させることができる。この電源投入プロセスの一環として、ＶＭＭ  １０６（１）のＶＦＭモジュール１１８（１）は、ＶＭ  １０８（１）のためにフラッシュストレージデバイス１１６の一部をＶＦＭ割当分１２０（１）の形態で割り当てることができる（ステップ（３）、参照番号２０６）。ＶＦＭモジュール１１８（１）は、例えばステップ（１）で受け取ったユーザの設定によるＶＦＭ割当分の大きさのパラメータに基づいてＶＦＭ割当分１２０（１）の大きさを決定できる。
【００２０】
ＶＦＭモジュール１１８（１）がＶＦＭ割当分１２０（１）を作ると、ＶＦＭモジュール１１８（１）は（ＶＭＭ  １０６（１）と共に）ＶＦＭ割当分１２０（１）をＶＭ  １０８（１）にＶＦＭデバイス１２２（１）としてサーフェシングする、すなわちアクセス可能にすることができる（ステップ（４）、参照番号２０８）。換言すれば、ＶＦＭモジュール１１８（１）／ＶＭＭ  １０６（１）はＶＦＭ割当分１２０（１）がＶＭ  １０８（１）においてＶＦＭデバイス１２２（１）として提示されるようにすることができ、それによってＶＭ  １０８（１）内で実行中のアプリケーションはＶＦＭデバイス１２２（１）を介してＶＦＭ割当分１２０（１）からの読取およびＶＦＭ割当分１２０（１）への書込みを行うことができる。その後、ＣＭＳ  １１０とホストシステム１０２はフロー２００のステップを繰り返して別のＶＭ  １０８（２）〜１０８（Ｎ）のプロビジョニングと電源投入を行うことができ、その各々にフラッシュストレージデバイス１１６の中のＶＦＭ割当分１２０（２）〜１２０（Ｎ）に対応するＶＦＭデバイス１２２（２）〜１２２（Ｎ）がサーフェシングされる。このようにして、ホストシステム１０２はフラッシュストレージデバイス１１６のストレージ領域をＶＭ  １０８（１）〜１０８（Ｎ）間で自動的に共有し、その領域を各ＶＭ内で利用可能にすることができる。
【００２１】
図２には示されていないが、ＣＭＳ  １１０とホストシステム１０２は、ＶＭ  １０８（１）のプロビジョニングと電源投入がすでになされている時にＶＭＦ割当分１０２（１）を作り、ＶＭ  １０８（１）にサーフェシングするために、フロー２００と同様のフローを実行できる（これは、「ホットプラグ（hot plug）」シナリオと呼ばれる）。ホットプラグシナリオにおいて、ＣＭＳ  １１０は、ＶＭ  １０８（１）の動作中にＶＦＭ構成コマンドを仮想化ソフトウェア１０４に送信できる。ＶＦＭ構成コマンドは、例えば新しいＶＦＭデバイスをＶＭ  １０８（１）に追加するリクエストを（ユーザの設定による割当分の大きさと共に）含むことができる。するとＶＦＭモジュール１１８（１）はフロー２００のステップ（３）と（４）に従って、ユーザの設定による大きさに基づいてＶＦＭ割当分１２０（１）を作り、ＶＦＭ割当分１２０（１）をＶＦＭ  １０８（１）にサーフェシングすることができる。特定の実施形態において、ＶＦＭ構成コマンドはまた、ＶＭ  １０８（１）のための既存のＶＦＭ割当分を除去するための「削除」コマンドを含むこともできる。新しいＶＭ割当分を追加する場合と既存のＶＦＭ割当分を削除する場合の何れにおいても、ＣＭＳ  １１０は、処理が成功裏に完了した時にＶＦＭ  １０８（１）のためのメタデータファイル（すなわち、前述の「.ＶＭＸファイル」）の変更を記録できる。
【００２２】
図３と４は、ある実施形態よる、ＶＭ  １０８（１）の一時停止／スナップショット作成およびその後のＶＭ  １０８（１）の動作再開のために図２のフロー２００の後に実行可能なフロー３００と４００をそれぞれ示す。フロー３００のステップ（１）（参照番号３０２）で、ＣＭＳ  １１０はＶＭ  １０８（１）を一時停止し、またはそのスナップショットを作成するためのコマンドを仮想化ソフトウェア１０４に送信できる。各種の実施形態において、ＣＭＳ  １１０はこのコマンドを、例えばシステム管理者または自動プロセス／エージェントからの入力に応答して送信できる。
【００２３】
一時停止／スナップショットコマンドを受け取ると、仮想化ソフトウェア１０４はＶＭＭ  １０６（１）にＶＭ  １０８（１）のための一時停止／スナップショット作成プロセスを開始させることができる。この一時停止／スナップショット作成プロセスの一環として、ＶＦＭモジュール１１８（１）はＶＦＭ割当分１２０（１）に保存されていたデータをバックエンドストレージ１１２に保存できる（ステップ（２）、参照番号３０４）。この保存プロセスは矢印３０８で示される。するとＶＦＭモジュール１１８（１）はＶＦＭ割当分１２０（１）を解放でき、それによってＶＦＭ割当分１２０（１）に関連するフラッシュストレージ容量は他の目的に利用可能とされる（ステップ（３）、参照番号３０６）。その結果、ＶＭ  １０８（１）は、ＶＭ  １０８（１）が一時停止状態またはスナップショット作成状態である間はフラッシュストレージデバイス１１６内のストレージ領域を一切使用しない。
【００２４】
ここで、図４のフロー４００を参照すると、後の時点で、ＣＭＳ  １１０はＶＭ  １０８（１）の動作を再開させるためのコマンドを仮想化ソフトウェア１０４に送信できる（フロー４００のステップ（１）、参照番号４０２）。動作再開コマンドを受け取ると、仮想化ソフトウェア１０４はＶＭＭ  １０６（１）にＶＭ  １０８（１）のための動作再開プロセスを開始させることができ、仮想化ソフトウェア１０４が今度はＶＦＭモジュール１１８（１）にフラッシュストレージデバイス１１６の中にＶＭ１０８（１）のための新しいＶＦＭ割当分４０８（１）を作らせる（ステップ（２）、参照番号４０４）。新しいＶＦＭ割当分４０８（１）の大きさを決定するために、ＶＦＭモジュール１１８（１）はフロー２００のステップ（２）で述べたものと同じユーザの設定によるＶＦＭ割当分の大きさのパラメータを参照できる。
【００２５】
最後にフロー４００のステップ（３）（参照番号４０４）で、ＶＦＭモジュール１１８（１）は以前にバックエンドストレージ１１２に保存されたＶＦＭデータを新しいＶＦＭ割当分４０８（１）に復元または転送し、それによって基本的にフラッシュストレージデバイス１１６の中に当初のＶＦＭ割当分１２０（１）の状態を作り直すことができる。このデータ転送は矢印４０８で示される。ＶＭ動作再開プロセスが完了すると、ＶＭ  １０８（１）はＶＦＭデバイス１２２（１）を介して新しいＶＦＭ割当分４０８（１）（これには以前に当初のＶＦＭ割当分１２０（１）に保存されたデータのすべてが含まれる）にアクセスできる。
【００２６】
フロー３００と４００に従ってＶＭ  １０８（１）のためのＶＦＭ割当分を解放し、作り直すことによって、ＶＦＭモジュール１１８（１）はＶＭ  １０８（１）が、このＶＭが活発に動作していない時（例えば、一時停止またはスナップショット作成時）にはフラッシュストレージデバイス１１６内のストレージ領域を不必要に拘束しないようにすることができる。それゆえ、このアプローチは、ＶＭ  １０８（１）〜１０８（Ｎ）間のフラッシュストレージデバイス１１６の利用を最適化できる。さらに、ＶＦＭ割当分１２０（１）の中に保存されたデータをバックエンドストレージ１１２に保存し、バックエンドストレージ１１２から復元することにより、ＶＦＭモジュール１１８（１）は、ＶＭ  １０８（１）の動作再開時にもＶＭ  １０８（１）がＶＦＭデバイス１２２（１）を介してこのデータを利用できるのを確実にすることができる。
【００２７】
前述のように、特定の実施形態において、ＶＦＭモジュール１１８（１）はＶＭ  １０８（１）のＶＦＭデバイス１２２（１）を不揮発性メモリデバイスまたは揮発性メモリデバイスの何れとしても扱うことができる。不揮発性メモリデバイスまたは揮発性メモリデバイスとしてのＶＦＭデバイス１２２（１）の分類は、例えばシステム管理者がＶＭ  １０８（１）のプロビジョニング時に設定するパラメータに依存できる。ＶＦＭモジュール１１８（１）がＶＦＭデバイス１２２（１）を不揮発性メモリデバイスと考える実施形態では、ＶＦＭモジュール１１８（１）は、ＶＭ  １０８（１）がそれぞれ電源切断された時と電源投入された時に、一時停止／スナップショット作成フロー３００と動作再開フロー４００と実質的に同様のフローを実行できる。例えば、ＶＭ  １０８（１）が電源切断されると、ＶＦＭモジュール１１８（１）はＶＦＭ割当分１２０（１）に保存されたデータをバックエンドストレージ１１２に保存し、その後、ＶＦＭ割当分１２０（１）を解放できる。ＶＭ  １０８（１）に再び電源投入されると、ＶＦＭモジュール１１８（１）はフラッシュストレージデバイス１１６の中にＶＭ  １０８（１）のための新しいＶＦＭ割当分を作り、以前に保存されたデータをこの新しいＶＦＭ割当分に復元できる。これにより、ＶＦＭデバイス１２２（１）が物理的な不揮発性メモリデバイスであるという錯覚が生じ、これは、ＶＭ  １０８（１）から見ると、ＶＦＭデバイス１２２（１）内に保存されたデータがＶＭのパワーサイクルを通じて持続されるからである。
【００２８】
ＶＦＭモジュール１１８（１）がＶＦＭデバイス１２２（１）を揮発性メモリデバイスと考える実施形態において、ＶＦＭモジュール１１８（１）は単に、ＶＭの電源切断時にＶＦＭ割当分１２０（１）を解放し、ＶＭ電源投入時にフラッシュストレージデバイス１１６の中にＶＭ  １０８（１）のための新しいＶＦＭ割当分を作ることができ、ＶＦＭ割当分１２０（１）内のデータをバックエンドストレージ１１２にバックアップしない。これにより、ＶＦＭデバイス１２２（１）が物理的な揮発性メモリデバイスであるという錯覚が生じ、このことは、ＶＭ  １０８（１）から見ると、ＶＦＭデバイス１２２（１）に保存されたデータがＶＭパワーサイクル中に失われるからである。
【００２９】
図５は、ある実施形態による、図２のＶＭ電源投入フロー中のホストシステム１０２による処理をより詳しく説明するフローチャート５００を示す。ブロック５０２で、仮想化ソフトウェア１０４は、ＣＭＳ  １１０から、ＶＭ（例えば、ＶＭ  １０８（１））に電源投入するためのコマンドを受け取ることができる。これに応答して、仮想化ソフトウェア１０４は、ＶＭＭ（例えばＶＭＭ  １０６（１））のインスタンスを作成し、ＶＭＭにＶＭ  １０８（１）に関する電源投入プロセスを開始させることができる（ブロック５０４）。
【００３０】
ブロック５０６で、ＶＭＭ  １０６（１）に含まれるＶＦＭモジュール（例えばＶＦＭモジュール１１８（１））はＶＭ  １０８（１）のためのＶＦＭ割当分の大きさを決定できる。例えば、ＶＦＭモジュール１１８（１）はこの情報を、（図２に関して前述したように）ＣＭＳ  １１０がＶＭのプロビジョニング時に作る「．ＶＭＸファイル」から決定できる。ＶＦＭモジュール１１８（１）はまた、フラッシュストレージデバイス１１６の中の利用可能なストレージ領域の量を決定できる（ブロック５０８）。
【００３１】
ブロック５１０で、ＶＦＭモジュール１１８（１）は、フラッシュストレージデバイス１１６にブロック５０６で決定されたＶＦＭ割当分の大きさを賄うのに十分な空き領域があるか否かをチェックできる。フラッシュストレージデバイス１１６に十分な空き領域がない場合、ＶＦＭモジュール１１８（１）は仮想化ソフトウェア１０４に知らせることができ、ＶＦＭモジュール１１８（１）がＶＭ電源投入プロセスを中止できる（ブロック５１２）。１つの実施形態において、この段階でのＶＭ電源投入プロセス中止の決定は、ＶＭのグラニュラリティ（VM granularity）に応じて管理されるポリシ決定とすることができる。仮想化ソフトウェア１０４はまた、ＣＭＳ  １１０に対し、ＶＭ  １０８（１）に電源投入できないと通知することもできる（ブロック５１４）。すると、ＣＭＳ  １１０は、ＶＭ  １０８（１）を別のホストシステムに設置するよう試みてもよい。
【００３２】
これに対し、フラッシュストレージデバイス１１６に十分な空き領域がある場合、ＶＦＭモジュール１１８（１）は、フラッシュストレージデバイス１１６の中に、ブロック５０６で決定された大きさのＶＦＭ割当分（例えばＶＦＭ割当分１２０（１））を作ることができる（ブロック５１６）。具体的な実施形態において、作られたＶＦＭ割当分は仮想ディスクファイルに対応するものとすることができる。他の実施形態において、作られたＶＦＭ割当分は論理ボリュームマネージャ（ｌｏｇｉｃａｌ  ｖｏｌｕｍｅ  ｍａｎａｇｅｒ）によって作成されたブロックデバイスとすることができる。
【００３３】
ＶＦＭモジュール１１８（１）がＶＦＭ割当分１２０（１）を作ると、ＶＦＭモジュール１１８（１）／ＶＭＭ  １０６（１）／仮想化ソフトウェア１０４は、ＶＭ  １０８（１）にＶＦＭ割当分１２０（１）をＶＦＭデバイスとしてサーフェシングするためのステップを実行できる。特定の実施形態において、ＶＦＭ割当分１２０（１）は、ブロックベースのデバイス（例えば仮想ＳＣＳＩデバイス）としてサーフェシングできる。例えば、ブロック５１８で、ＶＦＭモジュール１１８（１）は、ＶＦＭ割当分１２０（１）のためのハンドルを、ＶＦＭ割当分１２０（１）に対応する仮想ＳＣＳＩデバイス（例えばＶＦＭデバイス１２２（１））を作ることができるＶＭＭ  １０６（１）に渡す。ブロック５２０で、仮想化ソフトウェア１０４は、ＶＭの起動手順の一環として、ＳＣＳＩ照会コマンド（SCSI inquiry command）をＶＭ  １０８（１）から受け取ることができる。最後に、ブロック５２２において、仮想化ソフトウェア１０４はＶＦＭデバイス１２２（１）を特定するＳＣＳＩ照会応答をＶＭ  １０８（１）に送信できる。１つの実施形態において、ＳＣＳＩ照会応答は、ＶＦＭデバイス１２２（１）がフラッシュベースのデバイスであることをＶＭ  １０８（１）に対して示す情報を含むことができる。別の実施形態において、ＳＣＳＩ照会応答は、（ＶＭライフサイクルから見て）ＶＦＭデバイス１２２（１）が不揮発性メモリデバイスまたは揮発性メモリデバイスの何れかとして挙動するように構成されていることをＶＭ  １０８（１）に対して示す情報を含むことができる。
【００３４】
図６と図７は、ある実施形態による、図３と図４のＶＭ一時停止／スナップショット作成およびＶＭ動作再開フローの中のホストシステム１０２による処理をより詳しく説明するフローチャート６００と７００をそれぞれ示す。ブロック６０２で、仮想化ソフトウェア１０４は、ＣＭＳ  １１０から、ＶＭ  １０８（１）を一時停止するか、またはそのスナップショットを作成するためのコマンドを受け取ることができる。これに応答して、仮想化ソフトウェア１０４は、ＶＭＭ  １０６（１）にＶＭ  １０８（１）のためのＶＭの一時停止／スナップショット作成プロセスを開始するように要求できる（ブロック６０４）。
【００３５】
一時停止／スナップショット作成プロセスの一環として、ＶＭＭ  １０６（１）のＶＦＭモジュール１１８（１）はＶＦＭ割当分１２０（１）に保存されていたデータをバックエンドストレージ１１２に保存できる。特定の実施形態において、ＶＦＭモジュール１１８（１）はこのデータを、バックエンドストレージ１１２上にあるＶＭ  １０８（１）のためのＶＭイメージファイルに保存できる（ブロック６０６）。ＶＭイメージファイルは、とりわけ、ＶＭ  １０８（１）のＲＡＭの状態を含むことができる。他の実施形態において、ＶＦＭモジュール１１８（１）はこのデータを別の場所、例えばＶＭ  １０８（１）の仮想ディスクのうちの１つに保存できる。
【００３６】
その後、ＶＦＭモジュール１１８（１）はＶＦＭ割当分１２０（１）を解放できる（ブロック６０８）。このステップは、ＶＦＭ割当分１２０（１）に対応するファイルを削除すること、またはそれ以外にフラッシュストレージデバイス１１６の中のＶＦＭ割当分１２０（１）に関連するストレージ領域を回収して、その領域を再び使用できるようにすることを含むことができる。
【００３７】
ここで図７を参照すると、ブロック７０２で、仮想化ソフトウェア１０４は、ＣＭＳ  １１０から、一時停止状態のＶＭ  １０８（１）の動作を再開するためのコマンドを受け取ることができる。これに応答して、仮想化ソフトウェア１０４はＶＭＭ  １０６（１）にＶＭ  １０８（１）のためのＶＭ動作再開プロセスを開始するように要求できる（ブロック７０４）。
【００３８】
ブロック７０６〜７１０で、ＶＭＭ  １０６（１）のＶＦＭモジュール１１８（１）は、フラッシュストレージデバイス１１６にＶＭ  １０８（１）のための新しいＶＦＭ割当分を賄うのに十分な空き領域があるか否かを判定するステップを実行できる。各種の実施形態において、ブロック７０６〜７１０は図５のブロック５０６〜５１０と実質的に同様とすることができる。フラッシュストレージデバイス１１６に十分な空き領域がない場合、仮想化ソフトウェア１０４は動作再開プロセスを中止し、ＣＭＳ  １１０にＶＭ  １０８（１）の動作を再開できないと知らせることができる（ブロック７１２と７１４）。するとＣＭＳ  １１０は、ＶＭ  １０８（１）を十分なフラッシュストレージ領域を有する別のホストシステムに移行させることを試みてもよい。
【００３９】
フラッシュストレージデバイス１１６に十分な空き領域がある場合、ＶＦＭモジュール１１８（１）は、フラッシュストレージデバイス１１６の中に当初のＶＦＭ割当分１２０（１）と実質的に同じ大きさの新しいＶＦＭ割当分（例えばＶＦＭ割当分４０８（１））を作ることができる（ブロック７１６）。このステップの一部として、ＶＦＭモジュール１１８（１）は、新しいＶＦＭ割当分４０８（１）を以前にサーフェシングされたＶＦＭデバイス１２２（１）に関連付けることができる。ＶＦＭモジュール１１８（１）はその後、（図６のブロック６０６に従って）バックエンドストレージ１１２に保存されていたデータを新しいＶＦＭ割当分４０８（１）に復元でき（ブロック７１８）、これによってＶＭ  １０８（１）は動作再開プロセスの完了時にＶＦＭデバイス１２２（１）を介してこのデータにアクセスできる。
【００４０】
図８は、ある実施形態による、ＶＦＭ  １０８（１）のＶＦＭデバイス１２２（１）が揮発性メモリデバイス（不揮発性メモリデバイスではない）として機能するように構成されている時にＶＭ  １０８（１）を電源切断するためのフローチャート８００を示している。前述のように、このシナリオでは図３と図６に示されるＶＭ一時停止のフローとは異なる処理が必要となり、それはＶＦＭデバイス１２２（１）に保存されたデータがＶＭパワーサイクルを通じて持続されないはずであるからである。
【００４１】
ブロック８０２で、仮想化ソフトウェア１０４は、ＣＭＳ  １１０から、ＶＭ  １０８（１）を電源切断するためのコマンドを受け取ることができる。本明細書で使用されている限り、「ＶＭを電源切断する」および「ＶＭ電源切断」という語句はＶＭ内で実行中のゲストオペレーティングシステムをシャットダウンさせることを指す。
【００４２】
ブロック８０４で、仮想化ソフトウェア１０４は、ＶＭＭ  １０６（１）にＶＭ  １０８（１）のためのＶＭ電源切断プロセスを開始するように要求できる。この電源切断プロセスの一環として、ＶＦＭモジュール１１８（１）は図６のブロック６０８と実質的に同様の方法でＶＦＭ割当分１２０（１）を解放できる（ブロック８０６）。しかしながら、図６と異なり、ブロック８０６で、ＶＦＭモジュール１１８（１）は特に、ＶＦＭ割当分１２０（１）を解放する前にＶＦＭ割当分１２０（１）に保存されていたデータをバックエンドストレージ１１２に保存しないようにする。これによって、ＶＭ  １０８（１）は、ＶＭ  １０８（１）が再び電源投入された時にこのデータを利用できず、それゆえＶＦＭデバイス１２２（１）の揮発性メモリの動作が保持される。
【００４３】
いくつかの実施形態において、ＣＭＳ１１０は、サーフェシングされたＶＦＭデバイスを有するＶＭを１つのホストシステム（すなわち、「移行元」ホストシステム）から他のホストシステム（すなわち、「移行先」ホストシステム）へと移行または移動させることができる。このような実施形態において、移行元および移行先ホストシステムの両方の上に存在するＶＦＭモジュールが相互運用されて、そのＶＦＭデバイスに関連するデータが移行元ホスト側フラッシュストレージデバイスから移行先ホスト側フラッシュストレージデバイスへと正しく移行されるのを確実にすることができる。図９は、このような移行プロセスのフローチャート９００を示す。
【００４４】
フロック９０２で、ＣＭＳ  １１０は移行元ホストシステムから移行先ホストシステムへのＶＭの移行を開始できる。１つの実施形態において、ＣＭＳ  １１０はこの移行プロセスをＶＭｗａｒｅ社により開発されたｖＭｏｔｉｏｎ等の技術を使って「ライブ（live）」プロセスとして（すなわち、ＶＭが依然として動作している間に）開始できる。
【００４５】
ブロック９０４で、移行先ホストシステムにおけるＶＭのためのＶＦＭモジュールは、移行先ホスト側フラッシュストレージデバイスの中で利用可能な領域の量を判定できる。すると、移行先ＶＦＭモジュールは、利用可能な領域の量が移行元ホスト側にあるＶＭのためのＶＦＭ割当分の内容全部を収容するのに十分であるか否かを判定できる（ブロック９０６）。空き領域が不十分であれば、移行先ホストシステム上の仮想ソフトウェアはＶＭ移行プロセスを中止し、ＣＭＳ  １１０に通知することができる（ブロック９０８と９１０）。
【００４６】
これに対して、移行先ホスト側フラッシュストレージデバイスに十分な空き領域がある場合、移行先ＶＦＭモジュールは移行先ホスト側フラッシュストレージデバイスの中に新しいＶＦＭ割当分を作り、この新しいＶＦＭ割当分を移行されたＶＭのＶＦＭデバイスに関連付けることができる（ブロック９１２）。その後、ＣＭＳ  １１０は移行元および移行先ホストシステムの両方のＶＦＭモジュールと調整して、データを移行元側ＶＦＭ割当分から新しく作られた移行先側ＶＦＭ割当分にコピーできる（ブロック９１４）。このプロセスが終了すると、移行されたＶＭは、そのＶＦＭデバイスを介して、移行前にそのＶＭがアクセス可能であったものと同じＶＦＭデータにアクセスでき、このことは、移行先側ＶＦＭ割当分が移行元側ＶＦＭ割当分と同じデータを含むからである。特定の実施形態において、移行元側のＶＦＭモジュールは、移行完了時に移行元側ＶＦＭ割当分を解放でき、これによってその移行元側のフラッシュストレージ容量が再使用可能となる。
【００４７】
本明細書に記載された各種の実施形態は、コンピュータシステム内に保存されたデータに係る様々なコンピュータ実装動作を利用してもよい。例えば、これらの動作は物理的な数量の物理的な操作を必要とするかもしれず、通常、必ずではないが、これらの数量は電気または磁気信号の形態をとってもよく、その場合、これらまたはそれを表現したものは保存、転送、合成、比較またはそれ以外に操作できる。さらに、このような操作は生成、特定、判定または比較等の用語で呼ばれることが多い。本明細書に記載された、１つ以上の実施形態の一部を形成する動作は何れも、有益な機械動作であってよい。これに加えて、１つ以上の実施形態はまた、これらの動作を実行するデバイスまたは装置にも関している。この装置は要求された具体的な目的のために特に構成されてもよく、またはコンピュータ内に保存されたコンピュータブログラムによって選択的に作動または構成される汎用コンピュータであってもよい。特に、各種の汎用マシンは、本明細書の教示に従って書かれたコンピュータプログラムと共に使用されてもよく、または必要な動作を実行するための、より専門化された装置を構成するほうが好都合であるかもしれない。本明細書に記載された各種の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能の民生用電子機器、ミニコンピュータ、メインフレームコンピュータ、およびこれに類するもの等、他のコンピュータシステム構成で実現されてもよい。
【００４８】
１つ以上の実施形態は、１つ以上のコンピュータプログラムとして、または１つ以上の非一時的コンピュータ可読記憶媒体に具現化された１つ以上のコンピュータプログラムモジュールとして実装されてもよい。非一時的コンピュータ可読記憶媒体という用語は、後にコンピュータシステムに入力可能なデータを保存できるあらゆるデータストレージデバイスを指す。非一時的コンピュータ可読媒体は、コンピュータによりそれらが読み取られることを可能にする方法でコンピュータプログラムを具現化するための、既存の、または今後開発される何れの技術に基づいていてもよい。非一時的コンピュータ可読媒体の例としては、ハードドライブ、ネットワークアタッチストレージ（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ（ＮＡＳ））、リードオンリメモリ、ランダムアクセスメモリ（例えばフラッシュメモリデバイス）、ＣＤ（例えば、ＣＤ−ＲＯＭ、ＣＤ−ＲまたはＣＤ−ＲＷ）、ＤＶＤ、磁気テープ、その他の光および光以外のデータストレージデバイスがある。非一時的コンピュータ可読媒体はまた、ネットワーク接続されたコンピュータシステム上に分散させることができ、それによってコンピュータ可読コードが分散されて保存、実行される。
【００４９】
これに加えて、記載された仮想化方法は一般に、仮想マシンが特定のハードウェアシステムに適合するインタフェースを提示することを前提としているが、当業者であれば、ここに記載された方法が何れの特定のハードウェアシステムに直接対応しない仮想化とも使用できることがわかるであろう。ホストされた実施形態、ホストされていない実施形態、または両者間の区別が曖昧となる傾向のある実施形態として実装される各種の実施形態による仮想化システムはすべてが想定される。さらに、各種の仮想化動作は全部または一部がハードウェアにおいて実装されてもよい。
【００５０】
多くの変更、改変、追加、改良が、仮想化の程度にかかわらず可能である。仮想化ソフトウェアはしたがって、仮想化機能を実行するホスト、コンソール、またはゲストオペレーティングシステムのコンポーネントを含むことができる。本明細書において１つの例として記載されたコンポーネント、動作または構造について、複数の例が提供されてもよい。最後に、各種のコンポーネント、動作、データストア間の境界は幾分任意であり、具体的な動作が特定の例示的構成に関連して示されている。機能のその他の割当も想定され、本発明の範囲内に含めてよい。一般に、例示的な構成において別々のコンポーネントとして示されている構造と機能は、合体された構造またはコンポーネントとして実装されてもよい。同様に、１つのコンポーネントとして提示されている構造と機能は、別々のコンポーネントとして実装されてもよい。
【００５１】
本明細書の記述の中および後述の特許請求の範囲全体を通じて使用されているかぎり、「〜の中」の意味は、文脈上他の解釈が必要な場合を除き、「〜の中」と「〜の上」を含むものとする。
【００５２】
上記の説明は、各種の実施形態を、具体的な実施形態の態様をどのように実装できるかの例と共に示している。上記の例と実施形態は排他的な実施形態とみなされるべきではなく、後述の特許請求の範囲により定義される特定の実施形態の柔軟性と利点を説明するために示されている。上記の開示と後述の特許請求の範囲に基づき、他の構成、実施形態、実装、均等物を、特許請求の範囲により定義されるその範囲から逸脱することなく用いてもよい。
【図１】
0006018317.tif 000002
【図２】
0006018317.tif 000003
【図３】
0006018317.tif 000004
【図４】
0006018317.tif 000005
【図５】
0006018317.tif 000006
【図６】
0006018317.tif 000007
【図７】
0006018317.tif 000008
【図８】
0006018317.tif 000009
【図９】
0006018317.tif 000010