JP5657121B2 - 仮想マシンのオンデマンド型イメージ・ストリーミング - Google Patents

仮想マシンのオンデマンド型イメージ・ストリーミング Download PDF

Info

Publication number
JP5657121B2
JP5657121B2 JP2013528192A JP2013528192A JP5657121B2 JP 5657121 B2 JP5657121 B2 JP 5657121B2 JP 2013528192 A JP2013528192 A JP 2013528192A JP 2013528192 A JP2013528192 A JP 2013528192A JP 5657121 B2 JP5657121 B2 JP 5657121B2
Authority
JP
Japan
Prior art keywords
image
data
computer
virtual machine
ods
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013528192A
Other languages
English (en)
Other versions
JP2013542486A5 (ja
JP2013542486A (ja
Inventor
タン、チュンチアーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013542486A publication Critical patent/JP2013542486A/ja
Publication of JP2013542486A5 publication Critical patent/JP2013542486A5/ja
Application granted granted Critical
Publication of JP5657121B2 publication Critical patent/JP5657121B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Description

本出願は、一般に、コンピュータ・システムに関し、より具体的には、例えばクラウド環境又は他の環境のための、仮想マシンのオンデマンド型イメージ・ストリーミングに関する。
クラウド・コンピューティング環境において、仮想マシン(VM)が必要とするブロック・デバイス・ストレージを、複数のソース:即ち、ホストの直接接続型ストレージ(DAS、即ちローカル・ディスク)、ネットワーク接続型ストレージ(NAS、例えばNFS)、又はストレージ・エリア・ネットワーク(SAN)から割り当てることができる。これらの選択肢は、異なるコストで異なる性能、信頼性及び可用性を提供する。
現在周知の1つのVM作成方法は、VMファイル全体をraw(生の)形式で、NASに格納された読み出し専用イメージ・テンプレートから、ホストにローカルなDASにコピーする(物理ブロック・デバイスのコンテンツのバイト単位のコピー)。それによって初めて、ホストのVMをブートし、実行することができる。こうした方法では、イメージ・テンプレート全体をDASにコピーするのにかかる時間が原因で、新しいVMを開始し使用できるまでに長い遅延が生じる。
別の周知の方法は、ホストのDASに対してコピー・オン・ライトのみを実施する、即ち、変更されたデータのみをDAS上に格納し、変更されていないデータは常にバッキング・イメージ(backing image)から読み出す。新しいVMの作成時にイメージ・テンプレートをNASからDASにコピーする必要がないため、NAS上に格納されたイメージ・テンプレートをバッキング・イメージとして使用することは、より高速なVM作成をサポートすることができる。しかしながら、変更されていないデータをNASから繰り返し読み出すことは、共有NASサーバ上に過度のネットワーク・トラフィック及びI/O負荷をもたらし得る。これは、多数のVMが関与するクラウド環境において特に当てはまる。このような方法では、クラウド環境が、そうしたトラフィック及びI/O負荷を処理するための十分な能力を有するネットワーク及びNASサーバを提供することが求められ得る。
別の考慮事項として、既存のハイパーバイザは、そのイメージ・ファイルがNAS上に格納されている場合にしか、VMをマイグレートすることができない。ことによるとDAS上で実行されているVMのマイグレートができない場合、クラウド・プロバイダは、単に、ホスト上の次回の保守作業をユーザに通知し、ユーザに、VMの損失によって生じる結果を処理するように求めるにすぎない。これは、クラウド・サービス・プロバイダにとって簡単であるが、クラウドのユーザにとっては望ましくない場合がある。
仮想マシンのオンデマンド型イメージ・ストリーミングのための方法及びシステムを提供する。
本方法は、1つの態様において、選択された仮想マシンと関連したイメージ・メタデータを、それぞれ1つ又は複数の仮想マシンに対応する1つ又は複数のイメージ・テンプレート(バッキング・イメージとも呼ばれる)を格納するストレージ・サーバから、ホスト・コンピュータのローカル・ストレージにコピーすることを含むことができ、ここで、ホスト・コンピュータのローカル・ストレージは、最初に、選択された仮想マシンのイメージ・テンプレートを含まない。本方法はまた、コピーされたイメージ・メタデータを用いて、ホスト・コンピュータにおいて選択された仮想マシンをブートすることと、選択された仮想マシンが、ホスト・コンピュータにおいて選択された仮想マシンの実行を続行するのに必要とされるデータを、該必要とされるデータがホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、ストレージ・サーバ上のイメージ・テンプレートから読み出すことを可能にすることとを含むこともできる。本方法は、イメージ・テンプレートの読み出されたデータがホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、イメージ・テンプレートの読み出されたデータを、ストレージ・サーバからホスト・コンピュータのローカル・ストレージにコピーすることをさらに含むことができる。同じデータに対する後の読み出しは、ホスト・コンピュータのローカル・ストレージから行われる。本方法はまた、読み出されたデータがホスト・コンピュータのローカル・ストレージ上に格納されていることを示すように、ビットマップ内のビットを設定することを含むこともできる。本方法は、リソースのアイドル時間を利用して、選択された仮想マシンと関連したイメージ・テンプレートのデータ(バッキング・イメージ)を、ストレージ・サーバからホスト・コンピュータのローカル・ストレージにプリフェッチすることを含むこともできる。
仮想マシンのオンデマンド型イメージ・ストリーミングのための方法は、別の態様において、仮想マシンと関連したイメージ・メタデータを、その仮想マシンに対応するイメージ・テンプレートを格納するソース・コンピュータから、ターゲット・コンピュータにコピーすることを含むことができ、ここで、ターゲット・コンピュータは、最初に、仮想マシンのイメージ・テンプレートを含まない。本方法はまた、コピーされたイメージ・メタデータを用いて、ターゲット・コンピュータにおける仮想マシンをブートすることと、ターゲット・コンピュータにおける仮想マシンが、ターゲット・コンピュータにおいて仮想マシンの実行を続行するのに必要とされる、ソース・コンピュータ上のイメージ・テンプレートのデータを、イメージ・テンプレートの必要とされるデータがターゲット・コンピュータ上に格納されない場合に読み出すのを可能にすることとを含むこともできる。本方法はまた、イメージ・テンプレートの読み出されたデータがターゲット・コンピュータ上に格納されていない場合に、イメージ・テンプレートの読み出されたイメージ・データを、ソース・コンピュータからターゲット・コンピュータにコピーすることを含むことができ、ここで、同じデータの後の読み出しは、ターゲット・コンピュータにおいてコピーされたデータを読み出す。本方法は、読み出されたデータがターゲット・コンピュータ上に格納されていることを示すように、ビットマップ内のビットを設定することをさらに含むことができる。
仮想マシンのオンデマンド型イメージ・ストリーミングのためのシステムが、1つの態様において、仮想マシンと関連したイメージ・メタデータを、仮想マシンに対応するイメージ・テンプレートを格納するソース・コンピュータからコピーするように動作可能であり、最初に、仮想マシンのイメージ・テンプレートを含まない、ターゲット・コンピュータと、ターゲット・コンピュータにローカルに取り付けられたストレージ・デバイスとを含むことができる。ターゲット・コンピュータは、コピーされたイメージ・メタデータを用いて、ターゲット・コンピュータにおける仮想マシンをブートし、且つ、ターゲット・コンピュータにおける仮想マシンが、ターゲット・コンピュータにおいて仮想マシンの実行を続行するのに必要とされる、ソース・コンピュータ上のイメージ・テンプレートのデータを、イメージ・テンプレートの必要とされるデータがターゲット・コンピュータ上に格納されていない場合に読み出すのを可能にするようにさらに動作可能であり得る。ターゲット・コンピュータは、イメージ・テンプレートの読み出されたデータがターゲット・コンピュータ上に格納されていない場合に、イメージ・テンプレートの読み出されたデータを、ソース・コンピュータから、ターゲット・コンピュータにローカルに取り付けられたストレージ・デバイスにコピーするようにさらに動作可能とすることができ、ここで、同じデータの後の読み出しは、ターゲット・コンピュータにローカルに取り付けられたストレージ・デバイスから行われる。ターゲット・コンピュータは、読み出されたデータがターゲット・コンピュータ上に格納されていることを示すように、ビットマップ内のビットを設定するようにさらに動作可能とすることができる。
本明細書で説明される1つ又は複数の方法を実施するための、マシンにより実行可能な命令のプログラムを格納するコンピュータ可読ストレージ媒体を提供することもできる。
種々の実施形態の更なる特徴、並びに構造及び操作が、添付図面を参照して以下に詳細に説明される。図面において、同様の参照符号は、同一の要素又は機能的に類似する要素を示す。
1つの実施形態における本開示の仮想マシン(VM)のオンデマンド型ストリーミングにより実施されるシステム・コンポーネント及び操作フローを示す図である。 本開示の1つの実施形態におけるODSイメージ形式の簡略化された図を示す。 本開示の1つの実施形態における、KVM/QEMUスタック内のODSドライバを示す。 本開示の1つの実施形態におけるRAWイメージを用いたVM作成の比較を示す。 本開示の1つの実施形態におけるRAWイメージを用いたVM作成の比較を示す。 本開示のODSによるローカル・ストレージを有する仮想マシンのライブ・マイグレーションのためのシステム・コンポーネント及び操作フローを示す。 新しいVMを作成するための1つの実施形態における方法を示すフロー図である。 VMのライブ・マイグレーションのための、1つの実施形態における方法を示すフロー図である。 1つの実施形態における本開示のODSの異なる機能の可能な異なる使用例を示す。 1つの実施形態における本開示のODSの異なる機能の可能な異なる使用例を示す。 1つの実施形態における本開示のODSの異なる機能の可能な異なる使用例を示す。 1つの実施形態における本開示のODSの異なる機能の可能な異なる使用例を示す。
本開示の1つの実施形態における仮想マシン・イメージのオンデマンド型イメージ・ストリーミング(on-demand image streaming、ODS)は、コピー・オン・ライト(copy-on-write、CoW)、コピー・オン・リード(copy-on-read、CoR)、及びプリフェッチを実施することができる。コピー・オン・リードは、使用のために、コンピュータのホスト・マシンのローカル・ディスク(例えば、直接接続型ストレージ(DAS))上に戻されるセクタのコピーを保存することにより、データ・セクタを遠隔ストレージ・サーバ(例えば、ネットワーク接続型ストレージ(NAS))から繰り返し読み出すことを回避する。プリフェッチは、アイドル時間を用いて、仮想マシンがまだアクセスしていない残りのイメージを、遠隔ストレージ・サーバ(例えば、NAS)からローカル・ディスク(例えば、DAS)にコピーする。コピー・オン・ライト及びコピー・オン・リードの際、1つの実施形態における本開示は、ディスク上のデータ及びメタデータの両方を更新することを規定し、ここで、メタデータは、データが現在、遠隔ストレージ・サーバ(例えば、NAS)の代わりに、ローカル・ディスク(例えば、DAS)内に格納されていることを示す。
1つの実施形態における本開示のODSは、QEMUのための新しいイメージ形式と、対応するブロック・デバイス・ドライバとを含むことができる。1つの実施形態における本開示のODSは、そのイメージがホスト・コンピュータの直接接続型ストレージ上に格納されている仮想マシンのために設計することができる。ODSの主要な使用例として、(1)遠隔ストレージ・サーバからDASへのVMのイメージ・テンプレートのコピーの終了を待つことのない、直接接続型ストレージ(例えばDAS、即ちホストにとってのローカル・ディスク)上での仮想マシン(VM)の即時作成、及び(2)DASを用いてVMをホストする、マシン間のライブVMマイグレーションを含むことができる。
1つの実施形態における本開示のODSは、コピー・オン・ライト及びコピー・オン・リードの両方を実施して、遠隔ストレージ・サーバ上のデータをホストのローカル・ディスクに徐々にもたらすことができる。多数のVMを有するクラウド環境において、コピー・オン・リードは、ストレージ・サーバ上に過度のネットワーク・トラフィック又は入力/出力(I/O)負荷をもたらし得る、遠隔ストレージ・サーバから同じデータ・セクタを繰り返し読み出すことを回避する。1つの実施形態における本開示のODSはまた、プリフェッチを実施することもできる。本開示のODSは、アイドル時間を見つけて、まだタッチされていない(not-yet-touched)イメージ・データを遠隔ストレージ・サーバからホストのローカル・ディスクにコピーする。1つの実施形態におけるODSのイメージ形式は、(1)ヘッダ、(2)データ・セクタがローカル・ディスク上にあるのか又は遠隔ストレージ・サーバ上にあるのかを示すビットマップ、及び(3)raw形式で格納されたイメージ・コンテンツを含むことができる。
図1は、1つの実施形態における本開示の仮想マシン(VM)のオンデマンド型ストリーミングにより実施されるシステム・コンポーネント及び操作フローを示す図である。ストレージ・サーバ102は、対応する1つ又は複数の仮想マシンの1つ又は複数のイメージ・テンプレート104を格納する。ストレージ・サーバ102は、通常、仮想マシン106をホストするホスト・コンピュータ108から遠隔に配置され、ネットワーク110を介して接続される。ストレージ・サーバ102の一例は、NASサーバとすることができる。ストレージ・サーバ102は共有することができ(例えば、共有ストレージ・サーバ(SONAS))、且つ、ネットワーク・ファイル・システム(NFS)を通じてエクスポートされたイメージ・テンプレートを保持することができる。ローカル・ディスク112の一例は、DASとすることができる。DASは一時ストレージ(ephemeral storage)と考えることができるのに対して、NASは永続ストレージと考えることができる。一時ストレージは、ルート・ファイル・システムを収容するVMのディスク・イメージを格納するために用いることができる。VMが終了すると、一時ストレージ上のデータは失われる。随意的に、ユーザは、永続ストレージをVMに取り付けることもできる。永続ストレージは、VMの寿命より長く存在し、例えば、これを用いて関係データベースの永続データを格納することができる。クラウド環境において、場合によってはハードウェアRAIDを用いずに、ホストのローカル・ディスクにより一時ストレージが提供される。
VMは、ストレージ・サーバ102上に格納され、全てのホスト(例えば、VMをホストする又は実行しているコンピュータ又はマシン)にアクセス可能である、読み出し専用イメージ・テンプレート104に基づいて作成することができる。VMの仮想ディスク114は、ホストのファイル・システム内に、通常ファイル116として格納することができる。ホスト・コンピュータ(計算ノード)108は、KVMのようなハイパーバイザを含むことができる。ハイパーバイザ(又は仮想マシン・モニタ)は、所与のマシン(ハードウェア又はプロセッサ)上で複数のオペレーティング・システムが同時に実行されるのを可能にするソフトウェア・コンポーネントである。ハイパーバイザに応じて、仮想ディスク114のための多数の形式をサポートすることができる。例えば、KVM/QEMUは、仮想ディスクのための多数の形式をサポートする。KVMは、Linuxカーネルの仮想化インフラストラクチャである。KVMは、I/OエミュレーションのためにQEMUを使用する。RAW形式は、通常ファイル内に格納された物理ブロック・デバイスのコンテンツのバイト単位コピー(byte-by-copy)である。QCOW2は、QEMUによりサポートされる別のイメージ形式である。QCOW2イメージは、変更されたデータのみを格納し、変更されていないデータは、常にバッキング・イメージ(即ち、ストレージ・サーバ、例えば、NAS)から読み出される。
最初に、ホスト・コンピュータ108のローカル・ディスク112は、選択された仮想マシン106を実行するためのイメージ・テンプレートを収容していない。VM106を起動又はブートする命令の受信に応答して、1つの実施形態における本開示のODSは、116に示されるように、小容量のイメージ・メタデータ118をストレージ・サーバ102からローカル・ディスク112にコピーする。イメージ・メタデータは、ヘッダ及びビットマップを含む。ヘッダはイメージ・テンプレートを識別し、ビットマップは、イメージ・テンプレートのどの部分(例えば、セクタ)がローカルに格納されているかを識別するために用いられる。初期状態において、1つの実施形態におけるビットマップは、完全にゼロで埋められているイメージ・テンプレートのセクタを識別する。実行時に、ストレージ・サーバ102からローカル・ディスク112に、これらのゼロで埋められたセクタをコピーする必要はない。別の実施形態における本開示のODSは、116に示されるように、小容量のイメージ・メタデータ118を、ストレージ・サーバ102からローカル・ディスク112にコピーするステップを省略することができる。この場合、メタデータは、ローカル・ディスク112上のスクラッチから作成され、ビットマップ内の全てのビットは、全てのデータ・セクタがローカルに格納されていないことを示すように設定される。この形式的な実施形態は、イメージ・テンプレート内のゼロで埋められたセクタをコピーしないという利点を有する。VM106は、イメージ・メタデータ118を用いてブートされ、VM106が、そのブート及び実行のために用いるために、付加的なデータ104にアクセスし、これをストレージ・サーバ102から読み出すと、そのデータもまた、ローカル・イメージ116としてローカル・ディスク112上にコピー及び保存される。ビットマップ内のビットもまた、イメージ・テンプレート104の対応するデータ部分又はセクタがローカルに格納されたことを示すように更新される。この次にVM106が同じデータにアクセスする必要があるときには、ネットワークを辿ってストレージ・サーバ102上のイメージ・テンプレート104にアクセスするのではなく、ローカルに格納されたバージョンが用いられる。
本開示のODSの実行時操作は、バックグラウンドにおいて、ネットワークにわたるイメージ・データの非同期式コピー・オン・リード、コピー・オン・ライト、及びプリフェッチを含むことができる。非同期式コピー・オン・リードの場合、VM106が初めてセクタを読み出したとき、本開示のODSにより強化されたホスト・マシン108上のハイパーバイザが、ネットワーク110にわたって、遠隔ストレージ・サーバ102からセクタをフェッチする。バックグラウンドにおいて、1つの実施形態における本開示のODSにより強化されたホスト・コンピュータ108上のハイパーバイザは、セクタをそのローカルODSファイル116内に格納し、これに従ってビットマップを設定する。ビットマップは、ODSイメージの一部であり、且つ、ローカル・ディスク上に格納される。本開示の1つの実施形態において、セクタの後の読み出しは、常に、ローカルODSファイル116からデータを直接入手する。ローカル・ディスクへの直接書き込み(コピー・オン・ライト)の場合、VMがセクタを書き込むとき、1つの実施形態における本開示のODSにより強化されたホスト・コンピュータ108上のハイパーバイザは、ストレージ・サーバ102から4KBデータをフェッチする必要なしに、ローカルODSファイル116に直接書き込みを行う。1つの実施形態における本開示のODSはまた、バックグラウンドにおいて、ネットワークにわたってイメージ・データのプリフェッチを実施することもできる。バックグラウンド操作として構成可能なポリシーに導かれ、1つの実施形態における本開示のODSにより強化されたホスト・コンピュータ108上のハイパーバイザは、ストリーミング方式で、ネットワーク110にわたってrawイメージ・データ104全体をプリフェッチし、データをローカルODSファイル116内に格納することができる。例えば、プリフェッチ・ポリシーは、VM106が12時間実行された後、ネットワーク110及びストレージ・サーバ102上の作業負荷が軽くなる真夜中に、プリフェッチを開始できると指示することができる。その結果、この例示的なポリシーに従うと、その寿命が12時間より短いVMに対して、データはプリフェッチされない。1つの実施形態においては、システム管理者又は他のユーザがポリシーを設定することができる。
図2は、本開示の1つの実施形態におけるODSイメージ形式の簡略化された図を示す。図2に示されるODS形式の仮想ディスクを、ホスト・マシン又はコンピュータ上で実行されている各々のVMについて割り当てることができる。1つの態様において、ODSイメージは、読み出し専用のバッキング・イメージに基づいている。ODSヘッダ202は、仮想マシンのイメージ・テンプレートを識別するための、バッキング・イメージ206への参照を格納する。バッキング・イメージは、永続ストレージ内に格納された仮想マシンのイメージ・テンプレートを参照する。この参照は、仮想マシンのイメージ・テンプレートのファイル名、例えば、ODSイメージが基づくrawイメージの名称を格納する文字列とすることができる。他の参照を用いて、仮想マシンのイメージ・テンプレートを識別することができる。ODSイメージ形式はまた、例えば、仮想ディスク・イメージ内の各々のデータ・セクタについて1ビットを有する、ビットマップ204も含む。このビットは、対応するセクタの現在のコンテンツがODSイメージ内に格納されているか、又はバッキング・イメージ内に格納されているかを示す。例えば、その対応するセクタが既にrawイメージからODSイメージ内にコピーされている場合、又は、セクタが既にVMによりローカルに書き込まれている場合、ビットは1に設定される。本開示の1つの実施形態において、ビットマップのサイズは、イメージ・テンプレートのサイズに比例する。ODSブロック・デバイス・ドライバは、例えば、ODS形式を理解し、VMが発行するディスク入力/出力(I/O)要求を処理する、QEMUにおいて実装される。イメージ・データ208のためのスペースは、最初に空であってもよく、最初にデータが存在せず、最初にスペースを保持する必要がない。イメージ・データ208のためのスペースのサイズは、イメージ・データがコピーされるテンプレート・イメージと同じになり得る。
ODSイメージ形式はまた、拡張されたディスク・データのためのスペース210を含むこともできる。拡張されたディスク・データのためのスペース210は、任意のサイズのものとすることができ、いずれの時点でもサイズを変更して、イメージのサイズ変更をサポートすることができる。このスペース210に対して、テンプレート・イメージ内に対応するデータは存在しない。さらに、このスペース210内のデータに対応するビットマップは必要とされない。従って、ビットマップのサイズは、拡張されたディスク・データのためのスペース210のサイズに依存せず、拡張されたディスク・データのためのスペース210に起因するODSイメージのサイズ変更は、ビットマップに影響を与えない。「拡張されたディスク・データ」のサイズに関係なく、「拡張されたディスク・データのためのスペース」を付加するようにODSイメージをサイズ変更することは、一定時間の操作である。これには、ODSイメージの「ヘッダ」内の「disk_size」フィールドの変更しか必要としない。このスペース210内のデータは、ローカルにのみ使用することができる。拡張されたディスク・データのためのスペースは、随意的なものである。
新しいVMを開始するために、ホストは、そのバッキング・イメージ206への参照が、ストレージ・サーバ(例えば、NAS)内に格納されたイメージ・テンプレートを指し示す、ローカル・ディスク(例えば、DAS)上にODSイメージを作成する。例えば、ヘッダ及びビットマップのみを含むODSイメージを、ローカル・ディスク(例えば、DAS)にコピーすることができる。次いで、いずれのイメージ・データ(テンプレート・イメージ)もストレージ・サーバ(例えば、NAS)からローカル・ディスク(例えば、DAS)にコピーすることなく、VMを即時にブートすることができる、即ち、ODSイメージの「ディスク・データのためのスペース」セクション208は、最初は空である。一例として、10ギガバイト(GB)のオリジナルのrawイメージについて、ビットマップは、わずか2.5メガバイト(MB)とすることができる。新しいVMを作成し、ブートするときには、ネットワークにわたって、2.5MBのビットマップ+小容量のヘッダ・フィールドをコピーするだけでよい。VMからのディスク書き込み要求を処理するとき、QEMUのODSドライバは、データをODSイメージ208内に格納し、それに従ってビットマップ204を更新することができる。この挙動は、「コピー・オン・ライト」と呼ばれる。
VMからのディスク読み出し要求を処理するとき、ODSドライバはビットマップ204をチェックして、要求されたデータがODSイメージ内に存在するかどうかを判断する。存在する場合、データは、ODSイメージから読み出され、VMに戻される。存在しない場合、データはバッキング・イメージ206から読み出され、VMに戻される。VMが戻されたデータの処理を続行する間、バックグラウンドにおいて、戻されたデータのコピーがODSイメージ208内に保存され、それに従ってビットマップ204が更新されるので、同じデータに対する将来の読み出し要求は、ストレージ・サーバ(例えば、NAS)上のバッキング・イメージ208からではなく、ローカル・ディスク(例えば、DAS)上のODSイメージからデータを取得する。この挙動は、「コピー・オン・リード」と呼ばれる。このコピー・オン・リードの挙動を用いて、データ・セクタを、ストレージ・サーバ(例えば、NAS)から多くとも一度で読み出すことができ、そのことは、ストレージ・サーバ(例えば、NAS)上に過度なネットワーク・トラフィック及びI/O負荷を生成するのを回避する助けとなる。
コピー・オン・リードは、バッキング・イメージ206のコンテンツを、ストレージ・サーバ(例えば、NAS)からホスト・コンピュータのローカル・ディスク(例えば、DAS)に徐々にマイグレートする。ODSのプリフェッチ・メカニズムは、アイドル・リソースをさらに活用して、データ・マイグレーションを加速することができる。表1は、本開示の1つの実施形態におけるディスク上のODSイメージの詳細なレイアウトの一例を示す。
Figure 0005657121
disk_dataセクションは、ディスク・コンテンツをraw形式で格納することができる。disk_data[n*512]において論理ブロック・アドレスLBA=nを有するセクタのコンテンツを格納することができ、ここで512は、セクタ・サイズである。
図3は、本開示の1つの実施形態におけるKVM/QEMUスタック(例えばハイパーバイザ)内のODSドライバを示す。Linuxカーネルのようなオペレーティング・システム・カーネル302は、ハードウェア・プロセッサ304上で実行することができる。オペレーティング・システム・カーネル302は、例えばKVM、KVMの異なるベンダ・バージョンなどの複数のハイパーバイザ・プログラムを実行することができる。ハイパーバイザの別の例は、Xenである。ハイパーバイザ・プログラム306(例えば、KVM)は、ハードウェア・プロセッサ304上で仮想マシン310を実行することを可能にする。さらに、ハイパーバイザ・プログラム306は、例えば、raw形式、qcow2形式、及び本開示のODS形式などの複数の仮想イメージ形式308をサポートすることができる。仮想マシン310の起動時に、仮想マシンは、対応する仮想ディスク(ローカル・ディスク上のイメージ形式308)上の第1のセクタ(例えば、512キロバイト(KB))を読み出そうと試みる。本開示のODSと共に機能するように拡張されたハイパーバイザ・プログラムは、ODSイメージがまだ仮想ディスク(ローカル・ディスク)内に存在しないことを検出し、本開示のODS方法を開始する(実行する)。本開示のODSは、本明細書で記載されるように、必要とされるデータをストリーミングし、1つの実施形態においては、VMを殆ど即時にブートする。実装のために、他のコードを変更することなく、ods.c及びods.hを付加するように、ハイパーバイザ・ユーザ・スペース・プログラム(例えば、qemu−kvmユーザ・スペース・プログラム)を変えることができる。特に、コンピュータ・ノード(例えば、Linux)のカーネルに対する変更を行う必要はない。
図4及び図5は、RAWイメージ及びODSイメージを用いたVM作成の比較を示す。示される例は、同時に3つのVMを作成する。図4に示されるように、RAWイメージ形式を用いたVM作成プロセスは、イメージ・テンプレート全体がストレージ・サーバ(例えば、NAS)からローカル・ディスク(例えば、DAS)にコピーされるまで待つ必要があり、それによって初めてVMがブートされる。これは、VMブート・プロセス中、コピーされるイメージ・データの大部分が必要とされず、VMの寿命全体を通じてアクセスされることがない場合でさえ当てはまる。1つの実施形態における本開示のODS作成プロセスが、図5に示される。ODSは、ローカル・ディスク(例えば、DAS)上にいかなるイメージ・データもない状態で、VMを即時にブートし、VMがデータにアクセスする際に、オンデマンドで、データをストレージ・サーバ(例えば、NAS)からホストのローカル・ディスク(例えば、DAS)にコピーする。さらに、ODSのプリフェッチ・メカニズムは、リソースのアイドル時間を見つけて、VMがアクセスしていないイメージの残りの部分又はイメージの部分を、ストレージ・サーバ(例えば、NAS)からローカル・ディスク(例えば、DAS)にコピーする。ODSがいずれかのリソース(例えば、ストレージ・サーバ、ローカル・ディスク、又はネットワーク)上の競合を検出した場合、ODSは一時的にプリフェッチを停止し、輻輳が消滅又は緩和した後で、プリフェッチを再開できるという点で、プリフェッチは保守的であり得る。別の実施形態においては、ひとたびイメージ・テンプレートの全体がプリフェッチ操作によりローカル・ディスクにコピーされると、本開示はまた、一般的なイメージ・テンプレートをホストのローカル・ディスク(例えば、DAS)上にキャッシュすることもできるので、キャッシュされたイメージ・テンプレートを用いて、新しいVMを即時に作成すること、即ち、キャッシュ・ヒット時にイメージ・コピー・ステップを省くことができる。
1つの実施形態における本開示のODSは、コピー・オン・リードを用いて、データが必要とされる際に、オンデマンドで、データ・セクタをストレージ・サーバ(例えば、NAS)からローカル・ディスク(例えば、DAS)にもたらすことができる。随意的に、ODSにおいて、使用されてないアイドル・リソースを用いて、まだタッチされていないデータ・セクタをストレージ・サーバ(例えば、図1の102)からローカル・ストレージ(例えば、図1の112)にコピーするように、プリフェッチをイネーブルにすることができる。1つの実施形態における本開示のODSは、全イメージのプリフェッチを実施することができる。全イメージのプリフェッチにおいて、1つの実施形態における本開示のODSは、アイドル・リソースを用いて、例えば、最初のデータ・セクタから最後のデータ・セクタまでなど、イメージ全体をストレージ・サーバ(例えば、NAS)からローカル・ストレージ(例えば、DAS)に連続的にコピーする。随意的に、局所性ベースのプリフェッチにおいて、1つの実施形態は、連続的な全イメージのプリフェッチを行う代わりに、既にアクセスされたデータ・セクタのものに密接に関連した、まだアクセスされていないデータ・セクタをプリフェッチすることができる。随意的に、プロファイル・ベースのプリフェッチにおいて、1つの実施形態は、オフラインで構築されるイメージ・テンプレート・プロファイルに従って、まだアクセスされていないデータ・セクタをプリフェッチすることができる。プロファイルは、データ・セクタについてのプリフェッチの順序を、その重要性に基づいて優先順位付けすることができるか、又は、通常一緒にアクセスされるデータ・セクタを識別することができる、即ち、キャッシングの用語を用いて作業用セットを形成することができる。データ・セクタの状態が既にSin_odsである場合、そのデータ・セクタはプリフェッチ手順により省かれる。ひとたびプリフェッチが終了すると、ODSイメージ内に、例えばall_data_in_ods_imageフラグなどのフラグが設定される(例えば、表1を参照されたい)。次いで、バッキング・イメージ内のそのデータは再び必要とされないことが先験的に分かっているので、VMが発行する全ての読み出し及び書き込み要求は、ビットマップをチェックすること又は更新することなしに、直接、ODSイメージのdisk_dataセクションに対して動作することができる。
プリフェッチされるデータは緊急に必要とされないので、プリフェッチは、プロセッサ(例えば、CPU)、ストレージ・ディスク(例えば、DAS、NAS)、及びネットワークを含むいずれかのリソース上の競合の発生を回避しようと試みる。ODSドライバは、ストレージ・サーバ(例えば、NAS)からデータを読み出すための応答時間T、並びに、ローカル・ディスク(例えば、DAS)にデータを書き込むための応答時間Tを監視する。T<C及びT<Cである場合、ODSドライバは、プリフェッチを続行し、ここでC及びCは、例えばC=30ミリ秒(ms)、C=30msなどの2つの一定の閾値である。いずれかの応答時間が閾値を上回った場合、ODSドライバは、乱数を生成して、プリフェッチを一時停止するかどうかについての決定を行う。1つの実施形態において、ODSドライバは、50%の確率でプリフェッチを続行し、50%の確率で、一定の期間プリフェッチを一時停止する。プリフェッチを一時停止するように決定した場合、ODSドライバは後で起動し、少量のデータをストレージ・サーバ(例えば、NAS)からローカル・ディスク(例えば、DAS)に暫定的にコピーすることにより、リソースの競合が解消したかどうかを探る。ODSドライバは応答時間を監視し、プリフェッチを続行するか、又はスリープ状態に戻るかを決定する。
応答時間が閾値を上回る場合にプリフェッチを一時停止するかどうかを決定する際のランダム性のために、本開示の1つの実施形態において、複数のODSインスタンスが互いに競合するとき、全てのODSインスタンスがプリフェッチを一時停止するまで、又はボトルネック・リソースが競合から解放されるまで、各回のプリフェッチ操作の後に、アクティブにプリフェッチしているODSインスタンスの50%が、プリフェッチを一時停止する。
ノイズを低減させるために、応答時間は、指数移動平均として計算される。
Figure 0005657121

Figure 0005657121
複数の同時ディスクI/O要求をサブミットするリソース管理システムとは異なり、1つの実施形態における本開示のODSのプリフェッチは、リソース消費に関して保守的であり得る。例えば、本開示のODSにおけるプリフェッチは、ストレージ・サーバ(例えば、NAS)上のバッキング・イメージに対する多くとも1つの未処理の読み出し要求と、ローカル・ディスク(例えば、DAS)上のODSイメージに対する多くとも1つの未処理の書き込み要求とを保持する。本開示のODSにおけるプリフェッチは、ストレージ・サーバ(例えば、NAS)から幾らかのデータ・セクタをプリフェッチした後、直ちに次の読み出し要求をストレージ・サーバ(例えば、NAS)にサブミットし、且つ、同時に以前に戻されたデータをローカル・ディスク(例えば、DAS)に書き込む。ネットワークの待ち時間が短く(データ・センタ内にある場合のように)、システムに競合がない場合、本開示のODSにおけるプリフェッチは、ストレージ・サーバ(例えば、NAS)又はローカル・ディスク(例えば、DAS)を最大限の利用率まで推進することができる。
いつプリフェッチが開始するかを制御するためのポリシーを指定することができる。例えば、高速のVM作成の使用事例において、寿命の短いVMに対してプリフェッチが実施されないように、VMが作成されてから12時間後にプリフェッチを開始するように構成することができる。VMマイグレーションを使用する場合、仮想ディスク・イメージのマイグレーションがより早く終了できるように、VMがマイグレートされた直後に開始するようにプリフェッチを構成することができる。
別の実施形態における本開示のODSは、ライブVMマイグレーションにおいて用いることができる。例えば、クラウド環境において、ライブVMマイグレーションの能力は、クラウドの保守及び操作を大きく強化する。例えば、時間の経過と共に、ホストが、ハードウェアの保守(例えば、信頼できないCPUファンを交換する)又はソフトウェアの保守(例えば、セキュリティ・パッチをハイパーバイザに適用する。KVMの場合、ハイパーバイザはLinuxである)を必要とすることは避けられない。幾つかの保守操作は、ホストのリブートを必要とし、ホスト上で実行されているVMに対してダウンタイムを生じさせ得る。ライブVMマイグレーションの能力を用いて、ユーザに感知されるダウンタイムが存在しないように、保守操作が開始する前に、影響を受けるVMを他のホストにマイグレートすることができる。
VMをソース・ホストからターゲット・ホストにマイグレートするために、全ての既存のハイパーバイザ(KVM、Xen、及びVMwareを含む)は、ソース・ホスト及びターゲット・ホストの両方にアクセス可能な共用ストレージ上に、VMのイメージ・ファイルを格納することを必要とする。DASを用いる場合でさえ、VMマイグレーションが成功するように、ソース・ホスト上のVMイメージ・ファイルが、ターゲット・ホストにアクセスできるようにすることが依然として可能である(例えば、NFSを通じて)。しかしながら、この場合、ターゲット・ホスト上のVMにより生成される全てのディスクI/O要求は、ソース・ホストに向けられ、これにより処理される。ソース・ホストのリブートにより、イメージ・ファイルが利用できなくなり、ターゲット・ホスト上で実行されているVMが故障する。
1つの実施形態における本開示のODSは、ホストのローカル・ディスク(例えば、DAS)上で実行されているVMのライブ・マイグレーションをサポートする。図6は、本開示のODSによる、ローカル・ディスクを用いる仮想マシンのライブ・マイグレーションのためのシステム・コンポーネント及び動作フローを示す。ソース・ホストは、物理コンピュータ又はマシンであり、そのローカル・ディスク510上のVMのODSイメージ504を用いてVM508を実行する。ターゲット・ホスト506は、VM508がマイグレートされる、別の物理コンピュータ又はマシンである。説明のために、ソース・ホスト502上のVM508をソースVMと呼び、ターゲット・ホスト506上のVMをターゲットVM512と呼ぶ。マイグレーションが開始する前に、ソース・ホスト502は、NFSを通じて、VMのイメージ・ファイル504をターゲット・ホスト506にエクスポートし、その結果、イメージ・ファイルは、ネットワークを通じてターゲット・ホストにアクセス可能になる。ターゲット・ホスト506は、そのローカル・ディスク514(例えば、DAS)上に、バッキング・イメージとしてソース・ホストによりエクスポートされたイメージ・ファイルを参照する又は指し示す。ODSイメージのメタデータのヘッダ・フィールドを有するODSイメージ516を作成する。次いで、VMのイメージ・ファイル504をソース・ホスト502からターゲット・ホスト506に実際にコピーすることなく、VM508を即時にマイグレートすることができる。つまり、最初はバッキング・イメージへの参照のみを含むODSイメージ516のみを用いて、ターゲット・ホスト506上でターゲットVM512をブートすることができる。ターゲットVM512はターゲット・ホスト506上で連続して実行されているので、1つの実施形態における本開示のODSは、ターゲットVM512が、コピー・オン・リードを通じてデータをもたらすことを可能にする。さらに、1つの実施形態における本開示のODSは、プリフェッチを用いて、イメージの残りをソース・ホスト502からターゲット・ホスト506にコピーする。ひとたびプリフェッチが終了すると、VMのイメージ・ファイル504がターゲット・ホスト506に完全にコピーされ、ターゲットVM512は、もはや決してソース・ホスト502に依存しない。次いで、保守のためにソース・ホスト502をシャットダウンすることができる。
ローカル・ストレージを用いた仮想マシンのライブ・マイグレーションに関する上述のODSプロシージャにより、ローカル・ストレージ上にデータを移動させることなく、VMを即時にマイグレートすることができる。マイグレートされたVM(ターゲットVM)は、新しい位置で実行を続行することができ、データは、ターゲットVMがそれを必要とするときに、オンデマンドでコピーすることができる。ターゲットVMが生成した書き込みは、ローカルに格納される。リソースに関するアイドル時間を用いて、オリジナルのホスト(ソース・ホスト)上に残されたデータをプリフェッチする。ひとたび全てのデータがソース・ホストからターゲット・ホストにプリフェッチされると、マイグレーションは完全に終了する。
図7は、新しいVMを作成するための、1つの実施形態における仮想マシンのオンデマンド型イメージ・ストリーミング方法を示すフロー図である。602において、本方法は、それぞれ1つ又は複数の仮想マシンに対応する1つ又は複数のイメージ・テンプレートを格納するストレージ・サーバから、選択された仮想マシンと関連したイメージ・メタデータを、ホスト・コンピュータのローカル・ストレージにコピーすることを含むことができる。ホスト・コンピュータのローカル・ストレージは、最初は、選択された仮想マシンのイメージ・テンプレートを含まない。604において、本方法は、コピーされたイメージ・メタデータを用いて、ホスト・コンピュータにおいて選択された仮想マシンをブートすることを含むことができる。606において、本方法は、選択された仮想マシンが、ホスト・コンピュータにおいて選択された仮想マシンの実行を続行するのに必要とされるデータを、該必要とされるデータがホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、ストレージ・サーバ上のイメージ・テンプレートから読み出すのを可能にすることを含むことができる。608において、本方法は、イメージ・テンプレートの読み出されたデータがホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、イメージ・テンプレートの読み出されたデータを、ストレージ・サーバからホスト・コンピュータのローカル・ストレージにコピーすることを含むことができる。同じデータに対する後の読み出しは、ホスト・コンピュータのローカル・ストレージから行われる。610において、本方法は、読み出されたデータがホスト・コンピュータのローカル・ストレージ上に格納されていることを示すように、ビットマップ内のビットを設定することを含むことができる。612において、選択された仮想マシンによるイメージ・テンプレートへのデータ書き込みは、ホスト・コンピュータのローカル・ストレージに書き込まれる。614において、リソースのアイドル時間を用いて、選択された仮想マシンと関連したイメージ・テンプレートのデータを、ストレージ・サーバからホスト・コンピュータのローカル・ストレージにプリフェッチすることができる。別の態様において、イメージのプリフェッチ中、応答時間を監視することができ、例えば応答時間が閾値を上回る場合など、長い応答時間が検出された場合、プリフェッチを一時的に停止することができる。
1つの態様において、ストレージ・サーバからコピーされるイメージ・メタデータは、最初は、イメージ・テンプレートへの参照を含む。ビットを、イメージ・テンプレートの対応するセクタにマッピングするビットマップにより、ホスト・コンピュータのローカル・ストレージにおいてイメージ・メタデータを増強することができる。別の態様において、ストレージ・サーバからコピーされたイメージ・メタデータはまた、イメージ・テンプレートへの参照に加えて、このビットマップを含むこともできる。仮想マシンの実行に必要とされるデータについてのビットマップ内の対応するビットをチェックして、選択された仮想マシンを実行するのに必要とされるイメージ・テンプレートのデータが、ホスト・コンピュータのローカル・ストレージ上に格納されているかどうかを判断する。ビットマップ内のビットに応じて、選択された仮想マシンは、ストレージ・サーバ上のイメージ・テンプレート、又はホスト・コンピュータのローカル・ストレージ上のコピーされたイメージ・テンプレートを読み出す。ストレージ・サーバ及びホスト・コンピュータは、例えば、クライアントのために複数の仮想マシンがクラウドにインストールされているクラウド環境内のコンピュータとすることができる。
図8は、例えばVMのライブ・マイグレーションのための、仮想マシンのオンデマンド型ストリーミングのための方法を示すフロー図である。702において、本方法は、仮想マシンと関連したイメージ・メタデータを、仮想マシンに対応するイメージ・テンプレートを格納するソース・コンピュータからターゲット・コンピュータにコピーすることを含むことができる。ターゲット・コンピュータは、最初は、仮想マシンのイメージ・テンプレートを含まない。704において、本方法は、コピーされたイメージ・メタデータを用いて、ターゲット・コンピュータにおいて仮想マシンをブートすることを含むことができる。706において、本方法は、イメージ・テンプレートの必要とされるデータがターゲット・コンピュータ上に格納されていない場合、ターゲット・コンピュータにおける仮想マシンが、ターゲット・コンピュータにおける仮想マシンの実行を続行するのに必要とされる、ソース・コンピュータ上のイメージ・テンプレートのデータを読み出すのを可能にすることを含むことができる。708において、本方法は、イメージ・テンプレートの読み出されたデータがターゲット・コンピュータ上に格納されていない場合、イメージ・テンプレートのデータの読み出されたデータをソース・コンピュータからターゲット・コンピュータにコピーすることを含むことができる。同じデータに対する後の読み出しは、ターゲット・コンピュータのコピーされたデータから行われる。710において、本方法は、読み出されたデータがターゲット・コンピュータ上に格納されていることを示すように、ビットマップ内のビットを設定することを含むことができる。712において、仮想マシンのデータ書き込みは、ターゲット・コンピュータに書き込まれる。714において、リソースのアイドル時間を用いて、仮想マシンと関連したイメージ・テンプレートのデータを、ソース・コンピュータからターゲット・コンピュータにプリフェッチすることができる。
1つの態様において、ソース・コンピュータからコピーされたイメージ・メタデータは、最初は、イメージ・テンプレートへの参照を含む。ビットを、イメージ・テンプレートの対応するセクタにマッピングするビットマップにより、ターゲット・コンピュータにおいてイメージ・メタデータを増強することができる。別の態様において、ソース・コンピュータからコピーされたイメージ・メタデータはまた、イメージ・テンプレートへの参照に加えて、このビットマップを含むこともできる。仮想マシンの実行に必要とされるデータについてのビットマップ内の対応するビットをチェックして、仮想マシンの実行に必要とされるイメージ・テンプレートのデータがターゲット・コンピュータ上に格納されているかどうかを判断する。ビットマップ内のビットに応じて、仮想マシンは、ソース・コンピュータ上のイメージ・テンプレート、又はターゲット・コンピュータ上のコピーされたイメージ・テンプレートを読み出す。図8に示される方法は、別個のストレージ・サーバを用いる必要なしに、直接、ソース・コンピュータからターゲット・コンピュータへの仮想マシンのライブ・マイグレーションを実施することができる。そのイメージ・ファイルをマイグレートすることなく、VMを即時にマイグレートすることができる。VMはターゲット・ホスト上で連続して実行されているので、1つの実施形態における本開示のODSは、コピー・オン・リード及びプリフェッチを用いて、イメージ・ファイルをソース・ホストからターゲット・ホストに徐々にマイグレートすることができる。ひとたびプリフェッチが終了すると、VMはもはやソース・ホストに依存する必要はなく、ソース・ホストは、保守のためにシャットダウンすることができる。
1つの態様において、異なる使用事例をサポートするように、ODSの特徴(コピー・オン・ライト、コピー・オン・リード、及びプリフェッチ)を個々にイネーブルにすることができる。図9−図12は、1つの実施形態における本開示のODSの異なる特徴の可能な異なる使用事例を示す。図9では、ODSにおいて、コピー・オン・ライトのみがイネーブルにされる。この最も基本的な構成は、以下の利点を提供しながら、QEMUの既存のCOWイメージ形式の置換として用いることができる。:即ち、1)ODSはQEMUのcache=noneオプション及びcache=writethroughオプションを尊重し、停電の際に、データの完全性を保証する。2)ODSのビットマップ・セクション及びディスク・データ・セクションは、ページ境界上に適切に整合され、優れた性能を提供する。クラウド環境及び非クラウド環境とすることができる図9の設定において、ODSイメージ及びイメージ・テンプレートについてのストレージ選択肢は、柔軟性がある。両方をホストのローカル・ディスク(例えば、DAS)上に格納することができ、両方をストレージ・サーバ(例えば、NAS)上に格納することができ、又は一方がホストのローカル・ディスク(例えば、DAS)上に格納され、他方がストレージ・サーバ(例えば、NAS)上に格納される。
図10及び図11における設定は、イメージ・テンプレートがストレージ・サーバ(例えば、NAS)上に格納され、ODSイメージがホスト・コンピュータのローカル・ディスク(例えば、DAS)上に格納されるクラウド環境にとって適したものとなり得る。これらは、高速のVM作成をサポートし、且つ、イメージ・テンプレートのコンテンツをODSイメージ内に徐々にマイグレートし、ネットワーク及びストレージ・サーバNAS上の過剰な負荷を回避することができる。
図12は、イメージ・テンプレートがストレージ・サーバ(例えば、NAS)上に格納され、3つのODSイメージが全てホスト・コンピュータのローカル・ストレージ(例えば、DAS)上に格納されている設定を示す。この設定は、複数のVMが、別個のコピー・オン・ライトODSイメージを使用するが、ローカル・ストレージ(例えば、DAS)上にイメージ・テンプレートのコンテンツのミラーを提供する「ODS(CoR+プリフェッチ)」イメージの、単一の読み出し専用コピーを共有することを可能にする。この設定は、イメージ・テンプレートのコンテンツを、遠隔ネットワーク・ストレージ・サーバ(例えば、NAS)からホスト・コンピュータのローカル・ストレージ(例えば、DAS)に、異なるVMごとにその都度、複数回コピーすることを回避する。
本開示はまた、データの完全性も提供する。以下のイベントが連続して発生したと仮定する。即ち、(1)VMがディスク書き込み要求をサブミットする、(2)ODSドライバが(何らかの処理の後で)書き込み操作が成功裡の完了したことを確認応答する、及び(3)ホストが即時に停電する。電力の復旧後、同じセクタに対するVMの次の読み出しは、故障以前に書き込まれたコンテンツを入手しなければならない。
上記の表1は、本開示の1つの実施形態におけるディスク上のODSイメージの例示的なレイアウトを示す。1つの実施形態における本開示のODSイメージは、停電がいつ発生するかに関わりなく、データの完全性を保持する。例えば、コピー・オン・ライト及びコピー・オン・リードを実施するとき、1つの実施形態における本開示のODSは、ディスク・データ及びビットマップを別個に更新することができる。下記で説明されるように、1つの実施形態における本開示において、2つの更新間の停電により、依然としてデータの完全性は損なわれない。
ビットマップ内のビットは、それぞれ、対応するセクタのコンテンツがバッキング・イメージ内又はODSイメージ内にあることを意味する2つの状態、すなわちSin_backing=0又はSin_ods=1の一方とすることができる。セクタの状態は、Sin_backingからSin_odsにしか変更することができず、決して、Sin_odsからSin_backingに変更することはできない。セクタの状態をSin_backingからSin_odsに変更することができる2つのシナリオ、即ちコピー・オン・ライト及びコピー・オン・リードが存在する。
コピー・オン・ライトは、ODSがVMからのディスク書き込み要求を処理するときに発生する。簡潔にするために、以下の議論は、書き込み要求が2つのディスク・セクタ(d1、d2)にわたると仮定する。ビット(d1)及びビット(d2)は、それぞれ、ビットマップにおけるd1及びd2の状態を示すものとする。書き込み操作の前には、ビット(d1)=Sin_backing且つbit(d2)=Sin_backingであるとさらに仮定する。より多くのデータ・セクタが関与し、異なる初期状態を有する他の場合は、以下の例と同様の方法で分析することができる。
ODSにおける書き込み要求の処理は、次の一連の操作を含むことができる。:即ち、
・ODS−W1:VMが2つのセクタ(d1、d2)に関する書き込み要求を発行する。
・ODS−W2:ODSドライバは、d1を、ディスク上のODSイメージのdisk_dataセクション内に格納する。
・ODS−W3:ODSドライバは、d2を、ディスク上のODSイメージのdisk_dataセクション内に格納する。
・ODS−W4:ODSドライバは、ビット(d1)をSin_backingからSin_odsに更新する。
・ODS−W5:ODSドライバは、ビット(d2)をSin_backingからSin_odsに更新する。
・ODS−W6:ODSドライバは、書き込み操作の完了をVMに確認応答する。
ビット(d1)及びビット(d2)は同じセクタに属することができるので、ODS−W4及びODS−W5は、単一の更新で実施できることに留意されたい。最悪の場合の分析を考慮して、最悪の場合の分析のために、ODS−W4及びODS−W5を分離する。
上記のいずれかのステップの後で、ホストが故障し得る。本開示は、ODSが、故障に関係なくデータの完全性を保持することを示す。特に、ODSは、RAWイメージ形式に生じ得るよりも多くの複雑さをもたすものではない。つまり、ODSにおけるデータの完全性は、少なくともRAWイメージ形式におけるデータの完全性と同じくらいに良好である。
VMがRAWイメージ形式を使用する場合、このディスク書き込みの処理は、以下の一連の操作を含む。即ち、
・RAW−W1:VMが2つのセクタ(d1、d2)に関する書き込み要求を発行する。
・RAW−W2:RAWドライバは、d1をディスク上に格納する。
・RAW−W3:RAWドライバは、d2をディスク上に格納する。
・RAW−W4:ODSドライバは、書き込み操作の完了をVMに確認応答する。
VMの書き込み操作の前に、d1及びd2の「古い」コンテンツがバッキング・イメージ内に格納される。VMの書き込み操作の後、それらの「新しい」コンテンツが、ODSイメージ内に格納される。ここで、ODSの故障例を1つずつ考慮する。:即ち、
・ODS−W1の後の故障。この場合、ODSの挙動は、RAW−W1の後でRAWイメージ形式に停電があるのと同等である。その影響は、書き込み操作が単純に失われることであり、ドライバがまだ書き込みの完了をVMに確認応答していなかったので、これは許容される正しい挙動である。
・ODS−W2の後の故障。この場合、d1はODSイメージに書き込まれるが、ビット(d1)は更新されず、Sin_backingのままである。電力の復旧後、VMの次のd1に対する読み出しは、あたかもODSイメージ内の新しいd1コンテンツが存在しないかのように、バッキング・イメージからそのコンテンツを取得する。この挙動は正しく、RAW−W1の後でRAWイメージ形式に停電があるのと同等である。その影響は、書き込み操作が単純に失われることであり、ドライバがまだ書き込みの完了をVMに確認応答していなかったので、これは許容される正しい挙動である。
・ODS−W3の後の故障。上記の場合と同様に、電力の復旧後、VMの次のd1又はd2に対する読み出しは、あたかもODSイメージ内に新しいコンテンツが存在しないかのように、バッキング・イメージから古いコンテンツを入手する。この挙動は正しく、RAW−W1の後でRAWイメージ形式に停電があるのと同等である。
・ODS−W4の後の故障。電力の復旧後、VMの次のd1に対する読み出しはODSイメージからその新しいコンテンツを入手するのに対して、VMの次のd2に対する読み出しは、バッキング・イメージからその古いコンテンツを入手する(ビット(d1)=Sin_odsであり、且つ、ビット(d2)=Sin_backingであるため)。この挙動は正しくRAW−W2の後でRAWイメージ形式に停電があるのと同等である。
・ODS−W5の後の故障。電力の復旧後、VMの次のd1又はd2に対する読み出しは、ODSイメージから新しいコンテンツを入手する(ビット(d1)=Sin_odsであり、且つ、ビット(d2)=Sin_odsであるため)。この挙動は正しく、RAW−W3の後でRAWイメージ形式に停電があるのと同等である、即ち、書き込み操作は完了しているが、まだ確認応答されていない。
・ODS−W6の後の故障。電力の復旧後、VMの次のd1又はd2に対する読み出しは、ODSイメージから新しいコンテンツを入手する(ビット(d1)=Sin_odsであり、且つ、ビット(d2)=Sin_odsであるため)。この挙動は正しく、RAW−W4の後でRAWイメージ形式に停電があるのに相当する。
上記の分析は、1つの実施形態における本開示のODSが、コピー・オン・ライト中にデータの完全性を保持し得ることを証明する。また、同様のプロセスの後、1つの実施形態における本開示のODSが、最初にODSイメージのディスク・データ・セクションを更新し、次いでビットマップ・セクションを更新する、正しい更新シーケンスに従うことにより、コピー・オン・リード中にデータの完全性を保持し得ることも証明することができる。
1つの実施形態における本開示のODSの実装は、ディスクの入力/出力(I/O)オーバーヘッドを低減させることができる。例えば、RAWイメージ形式に比べると、ODSの単純な実装では、ビットマップの読み出し及び書き込み時にオーバーヘッドが生じ得る。最悪の場合、VMからの一組の連続した書き込み要求が、ホストのファイル・システム上に、次の書き込みシーケンス、即ち、書き込みs1、書き込みビット(s1)、書き込みs2、書き込みビット(s2)、書き込みs3、書き込みビット(s3)等を生成し得る。ここで、s1、s2、及びs3は、連続した論理ブロック・アドレスを有するセクタであり、ビット(si)は、ビットマップ内のsiの対応するビットである。この例において、ディスク・ヘッドは、ODSイメージのディスク・データ・セクションとビットマップ・セクションとの間を前後に移動することができる。本開示の1つの実施形態においては、最も一般的な場合における、データの完全性を損なわずに、ビットマップの更新と関連したオーバーヘッドをなくすための技術が提示される。
クラウド環境において、VMのイメージ・テンプレートのサイズは、典型的には、そのVMに対して割り当てられる一時ストレージ・スペース(ephemeral storage space)よりもずっと小さい。例えば、DAS上で実行されている周知のVMに許容される最大のイメージ・テンプレート・サイズは10GBであり、一方、そのVMに与えられる一時ストレージ・スペース・スペースは、170GB又はそれ以上である。イメージ・テンプレートに基づいてVMのルート・ディスクを拡張すること、又は、付加的な仮想ディスクをVMに取り付けることのいずれかにより、VMに付加的な一時ストレージ・スペースを与えることができる。別の周知のクラウドは、企業の顧客をターゲットとしており、より柔軟な構成を提供する。このクラウドにより、VMが10GBよりもずっと大容量のルート・ディスクを使用することが可能になる。
以下は、クラウドにおいて、Linuxイメージ・テンプレートを準備するプロセスである。イメージ・テンプレートは、RAWイメージ形式を用いる。初期のイメージ・テンプレート・サイズは50GBであると仮定する。イメージ・テンプレートは最初に、必要なソフトウェアがインストールされ、十分に試験される。次いで、resize2fsツールを用いて、イメージ・テンプレート内のext3ファイル・システムをその最小サイズにサイズ変更する(例えば、50GBから12GBに至るまで)。最後に、最小のファイル・システム・サイズに適合するように、イメージ・テンプレートを切り捨てる(例えば、50GBから12GBまで)。サイズ変更ステップ及び切り捨てステップは、インストール及び試験の際に生成された不要なデータ(garbage data)を取り除き、最小サイズのイメージ・テンプレートを形成する。小容量のイメージ・テンプレートは、イメージ・テンプレートに基づいて新しいVMを作成する際に、NASからDASに転送されるデータの量を減らす助けとなる。
上記の例を受けて、12GBのイメージ・テンプレートを用いて、ユーザの支払額に応じて、ルート・ディスクのサイズが変わり得るVMを作成することができる。例えば、次のQEMUコマンドは、NFS上に格納された12GBのイメージ・テンプレートに基づいて、DAS上に100GBのODSイメージを作成する。即ち、
qemu-img create -f ods -b/nfs/template.raw vm.ods 100G
fdiskを用いて仮想ディスクのパーティション・サイズを12GBから100GBに拡張した後、resize2fsを用いて、ODSイメージ内のext3ファイル・システムを12GBから100GBに拡張することができ、これが、VMの大容量のルート・ファイル・システムとなる。ファイル・システムの拡張のためにresize2fsを用いることは、ブロックの再配置を必要としないため、迅速な操作であることに留意されたい。
表1に示されるODSイメージ形式において、ディスク・データ・サイズは、VMにより認識されるODSイメージのサイズであり、有効バッキング・イメージ・サイズは、バッキング・イメージのサイズである。上記の例においては、ディスク・データ・サイズ=100Gであり、有効バッキング・イメージ・サイズ=12Gである。
図2は、ODSイメージをバッキング・イメージより大容量のものにし得る概念を示す。そのバッキング論理ブロック・アドレス(LBA)がバッキング・イメージのサイズを上回るデータ・セクタの場合、そのコンテンツはバッキング・イメージ内に存在することができず、ODSイメージ内にのみ存在することができる。セクタの状態は先験的に知られているので、ODSイメージのビットマップ・セクションにおいてセクタの状態を捕捉する必要はない。その結果、ビットマップのサイズは、ODSイメージのサイズではなく、バッキング・イメージのサイズに比例する。
10GBのバッキング・イメージを指し示す2TBのODSイメージの場合、ビットマップのサイズはわずか2.5Mである。サイズが小さいため、ビットマップ全体をメモリ内に容易にキャッシュすることができ、それにより、ディスクからビットマップを繰り返し読み出すオーバーヘッドが回避される。周知のクラウドにおいて、10GBは、DAS上で実行されているVMに許容される最大のイメージ・テンプレート・サイズである。その論理ブロック・アドレス(LBA)がバッキング・イメージのサイズを上回るセクタSの場合、VMからの読み出し要求を処理するとき、ODSドライバは、単にLBAに基づいて、このセクタがバッキング・イメージ内に存在し得ないことを知っており、従って、ODSイメージのディスク・データ・セクションからこのセクタを読み出す。セクタSについてVMからの書き込み要求を処理するとき、ODSドライバは、データをディスク・データ・セクションに直接書き込み、ビットマップを更新する必要はない(実際には、ビットマップ内のセクタSについての対応するビットさえ存在しない)。
イメージ・テンプレートはresize2fsにより最小サイズに低減され、イメージ・テンプレート内のデータは、テンプレートの性質上、大部分が読み出し専用であるので(例えば、プログラム実行ファイル)、VMターゲット・セクタからの大部分のディスク書き込み要求は、そのアドレスがバッキング・イメージのサイズを上回るものである。これらの書き込み要求について、ODSドライバは、データをローカル・ディスク(例えば、DAS)に直接書き込み、ビットマップの更新におけるオーバーヘッドは存在しない。
本開示の1つの実施形態において、多くのデータ・セクタがゼロで埋められている疎(sparse)イメージ・テンプレートについて1つの最適化が以下に説明される。RAWイメージ・テンプレートimage.rawについては、qemu−imgツールを用いて、そのバッキング・イメージがimage.rawであるODSイメージ・テンプレートimage.odsを作成することができる。image.odsのサイズは、image.rawのサイズと同一である。image.odsを作成するとき、qemu−imgは、ゼロで埋められたセクタSを検索し、ビットマップ内のその状態をSin_odsに設定することができる。非ゼロのセクタについての状態は、Sin_backingに設定される。実行時に、VMが、その状態がSin_odsであるセクタSを読み出すとき、ODSドライバは、ODSイメージのディスク・データ・セクションから読み出しを行い、ゼロで埋められたセクタが戻されるが、これは望ましい挙動である。このことは、ODSイメージがホストのファイル・システム上に疎ファイルとして格納され、セクタSは以前に書き込まれたことがなく、従って、ホストのオペレーティング・システム(OS)がゼロで埋められたセクタを戻すことに起因している。
ODSイメージ・テンプレートimage.odsは、image.rawと共にNAS上に格納される。ホスト上に新しいVMを作成するとき、ホストは、image.odsをストレージ・サーバ(例えば、NAS)からローカル・ストレージ(例えば、DAS)にコピーし、image.odsをより大きいターゲット・サイズにサイズ変更する。ディスク・データ・セクションが空であり、従ってimage.odsのサイズは小さいので、image.odsのコピーは高速である。具体的には、10GBのimage.rawについて、image.odsは、わずかに約2.5MBである。image.odsのより大きい仮想ディスクへのサイズ変更は、表1内のdisk_data_sizeフィールドをより大きい値に更新することだけを含むことができる。VMがブートすると、ODSドライバは、disk_data_sizeフィールドにより示されるサイズまで、ディスク・データ・セクションを自動的に切り捨てる。
VMがブートすると、ODSドライバは、ODSイメージのビットマップ・セクションを、ディスクから、データ・セクタの初期状態を収容するメモリ内にロードする。本開示において、これらの2つのビットマップのコピーは、それぞれ、オンディスク状態(on-disk state)及びインメモリ状態(in-memory state)と呼ばれる。実行時に、ODSドライバは、インメモリ状態を常に最新に保持するが、ディスクのI/Oオーバーヘッドを減らすために、オンディスク状態の更新をゆっくりと(lazily)行うことができる。しかしながら、停電時に、オンディスク状態内の古い情報がデータの完全性を損なうことはないことが保証される。
VMが、そのインメモリ状態がSin_odsであるセクタを読み出すとき、ODSドライバは、そのセクタをODSイメージから読み出し、それをVMに戻す。付加的なオーバーヘッドは関与しない。VMが、そのインメモリ状態がSin_backingであるセクタを読み出すとき、ODSドライバは、そのセクタをバッキング・イメージから読み出し、それをVMに戻す。VMが戻されたデータの処理を続行した後、バッググラウンドにおいて(即ち、非同期的に)、ODSドライバは、セクタのコンテンツをODSイメージのディスク・データ・セクション内に書き込み、セクタのインメモリ状態をSin_backingからSin_odsに更新する。しかしながら、セクタのオンディスク状態は更新されず、Sin_backingのままであり、それにより、ディスクのI/Oオーバーヘッドが低減される。インメモリ状態の「ダーティ(dirty)」ビットをフラッシュし、オンディスク状態を、定期的に(例えば、1時間ごとに)又はVMがシャットダウンしたときに、ゆっくりと更新することができる。オンディスク状態が更新される前にホストが停電した場合、電力の復旧後、ODSドライバは、古いオンディスク状態をメモリ内に再ロードし、セクタの状態はSin_backingとして認められる。このセクタに対するVMの次の読み出しを処理するとき、ODSドライバは、再びコピー・オン・リード・プロセスを繰り返す:即ち、バッキング・イメージからセクタを読み出し、それをVMに戻し、非同期的にODSイメージに書き込み、インメモリ状態をSin_backingからSin_odsに更新する。コピー・オン・ライト中にオンディスク状態を直ちに更新せずに、VMは、復旧後に依然として正しいセクタ・コンテンツを入手するが、VMは、既にODSイメージにコピーされたセクタのコンテンツを無視し得る。
VMがセクタに書き込むとき、ODSドライバは、オンディスク状態(インメモリ状態ではなく)をチェックして、適切なアクションを判断する。セクタのオンディスク状態がSin_odsである場合(セクタのインメモリ状態もまたSin_odsである)、ODSドライバは、セクタをODSイメージに直接書き込み、書き込み操作が完了したことをVMに通知する。ビットマップの更新オーバーヘッドは関与しない。セクタのオンディスク状態がSin_backingである場合(セクタのインメモリ状態は、Sin_backing又はSin_odsである)、ODSドライバは、セクタをODSイメージに書き込み、オンディスク状態をSin_odsに更新し(インメモリ状態が現在Sin_backingである場合、同じくそのインメモリ状態をSin_odsに更新する)、書き込み操作の完了をVMに通知する。この場合、ODSドライバは、オンディスク状態を更新するオーバーヘッドを受けることがある。
別の実施形態において、メモリ・オーバーヘッドを低減させる非同期的式実装を提供することができる。QEMU内の全てのブロック・デバイス・ドライバは、同期I/Oと非同期I/Oの両方を行うためのAPIを提供する、BlockDriverインターフェースを実装する。同期I/Oは、ブロック・デバイスが、一度に1つの未処理のI/O要求だけを処理することを可能にする。非同期I/Oは、ブロック・デバイス・ドライバに、コールバック関数を通じてI/O操作の完了をVMに通知させることにより、ブロック・デバイスが、複数の未処理のI/O要求を同時に処理することを可能にする。
1つの実施形態における本開示のODSは、非同期インターフェースを実装する。幾つかの厄介な場合では、同一のデータ・セクタに対するコピー・オン・ライト及びコピー・オン・リードの実行は、慎重に処理される。VMが、そのインメモリ状態がSin_backingであるデータ・セクタdに対する読み出し要求Rをサブミットし、次いで読み出しが終了する前に、同一のデータ・セクタdに対する書き込み要求Wをサブミットすると仮定する。これを処理するとき、ODSドライバは、次の順序で操作を終了すると仮定する。:即ち、
1.Rに関するコピー・オン・リード操作の一部として、セクタの古いコンテンツをバッキング・イメージから読み出す。
2.Wに関するコピー・オン・ライト操作の一部として、セクタの新しいコンテンツをODSイメージに書き込む。
3.Rに関するコピー・オン・リード操作の一部として、セクタの古いコンテンツをODSイメージに書き込む。
同一のデータ・セクタに関してコピー・オン・ライト及びコピー・オン・リードを行う際に、競合状態が生じ得る。ODSイメージ内に残されるのは、セクタの古いコンテンツであり、これは正しくない結果である。この及び他の類似した競合状態を適切に処理するために、データ・セクタdに関してコピー・オン・リードを実施する前に、ODSドライバは、dに関して1つの未処理のコピー・オン・ライト操作が存在するかどうかをチェックする。存在する場合、コピー・オン・リード操作を断念する。同様に、データ・セクタdに関してコピー・オン・ライトを実施する前に、ODSドライバは、dに関して1つの未処理のコピー・オン・リード操作が存在するかどうかをチェックする。存在する場合、コピー・オン・ライト操作は、未処理のコピー・オン・リード操作が終了するまで遅延され、これにより、新しいコンテンツがディスク上に残されることが保証される。
1つの実施形態における本開示のODSは、次の最適化を実施することができる。:即ち、
・ODSイメージのビットマップ・セクションのサイズは、ODSイメージのサイズではなくバッキング・イメージのサイズに比例する。10GBのバッキング・イメージを指し示す2TBのODSイメージについては、ビットマップのサイズはわずか2.5MBである。10GBは、DAS上で実行されている周知のクラウドのVMに許容される最大イメージ・テンプレート・サイズであることに留意されたい。
・ビットマップのサイズが小さいため、ビットマップの完全なコピーをメモリ内に保持して、オンディスク・ビットマップを繰り返し読み出す際のオーバーヘッドを回避することができる。
・ひとたびプリフェッチが終了すると、ODSイメージは、RAWイメージとほとんど同じように働く。VMにより発行されるディスク読み出し又は書き込み要求は、インメモリ・ビットマップのチェック又はオンディスク・ビットマップの更新におけるいずれのオーバーヘッドもなしに、ODSイメージのディスク・データ・セクションに対して実行される。
・その論理ブロック・アドレスがバッキング・イメージのサイズを上回るセクタに関するVMの読み出し又は書き込み要求を処理するとき、ODSドライバは、インメモリ・ビットマップのチェック又はオンディスク・ビットマップの更新におけるいずれのオーバーヘッドもなしに、ODSイメージのディスク・データ・セクションを直接読み出す又は書き込む。
・インメモリ状態が既にSin_odsであるセクタに関するVMの読み出し要求を処理するとき、セクタは、オンディスク・ビットマップの更新におけるオーバーヘッドなしに、ODSイメージから直接読み出される。
・コピー・オン・リード操作は、インメモリ・ビットマップを更新するだけであり、オンディスク・ビットマップを直ちに更新するわけではない。
・コピー・オン・リード操作は、データをVMに戻すクリティカル・パス上にない。VMがバッキング・イメージから読み出されたデータの処理を続行する間、データは、バックグラウンドにおいて、ODSイメージに非同期的に保存される。
・オンディスク状態が既にSin_odsであるセクタに関するVMの書き込み要求を処理するとき、オンディスク・ビットマップの更新におけるオーバーヘッドは存在しない。
・バッキング・イメージ内のセクタが完全にゼロで埋められている場合、ODSイメージのオンディスク・ビットマップにおける初期状態をSin_odsに設定できるので、セクタの読み出し又は書き込みは、あたかもそのセクタが既にODSイメージ内にあるかのように扱われ、オンディスク・ビットマップの更新におけるオーバーヘッドは存在しない。
・ODSイメージのサイズ変更は、表1に示されるレイアウト内のdisk_data_sizeフィールドを更新することのみを必要とする、一定時間操作である。
1つの実施形態における本開示のODSの考えは、コピー・オン・ライト、コピー・オン・リード、及びプリフェッチを含む。理論的には、コピー・オン・リード及びプリフェッチを、QEMUにより既にサポートされている既存のコピー・オン・ライト形式(例えば、CoW及びQCOW2)で実装することが可能であり、このことにより、新しいイメージ形式を導入する複雑性が回避される。1つの実施形態における本開示の新しいODSイメージ形式は、最も一般的な場合、高い性能を達成する。COW形式は、ODS形式とほとんど同一である。COW形式はまた、ヘッダ、ビットマップ・セクション、及びディスク・データ・セクションを含む。COWドライバの現在の実装は、QEMUのcache=noneオプション及びcache=writethroughオプションを無視する。その結果、これは、停電の場合に、ディスク・データを破損し得る。この実装問題は、潜在的に解決することができるが、COW形式自体は、そのディスク・データ・セクションが4KBページ境界上に整列されないという、基本的な限界を有する。VMの読み出し又は書き込み要求が仮想ディスクの4KBページ境界上に整合される場合でも、要求がCOWイメージのディスク・データ・セクション上で動作するように変換された後、要求は、もはやホスト・ファイル・システムの4KBページ境界上に整合され得ない。ホストのページ・キャッシュは4KBページ上で動作するので、不整合(misaligned)要求により、ホスト上に複数のディスクI/Oがもたらされ得る。例えば、ホスト内で、VMにより発行されたうまく整合された4KB書き込みが、不整合の4KB書き込みに変換されることがあり、これは、非効率的な読み出し−修正−書き込み挙動、即ち、8KBを読み出し、4KBを修正し、8KBを書き込み戻す挙動をもたらす。1つの実施形態における本開示のODS形式は、表1内に示されるパディング(padding)・セクションを付加して、bitmap(ビットマップ)セクション及びdisk_data(ディスク・データ)セクションが、4KBページ境界上に適切に整合されることを保証することにより、この問題に対処する。
QCOW2は、QEMUの「ネイティブ形式」である。QCOW2は、疎ファイルに対してホスト・ファイル・システムのサポートを利用する代わりに、疎イメージ・ファイルをサポートするために、それぞれの2レベル索引を実装するという点で、COW及びODSとは著しく異なる。この索引は、論理ブロック・アドレスを、ブロックのコンテンツが実際に格納されているイメージ・ファイル内の位置にマッピングする。このアドレス・マッピングの柔軟性により、QCOW2が、スナップショット及び圧縮のような高度な機能を提供することが可能になる。
他方、QCOW2の2レベル索引は、特に付加的なディスクが索引を読み出そうとする又は更新しようとするときにも、オーバーヘッドを受ける。ODSにおける最適化に比べて、コピー・オン・リード及びプリフェッチにより強化されたQCOW2の潜在的な実装には、次の制限がある:即ち、
・索引のサイズは、(小容量の)バッキング・イメージのサイズではなく、(大容量の)QCOW2イメージのサイズに比例する。その結果、索引をメモリ内に完全にキャッシュすることができない。
・プリフェッチが終了した後でも、VMにより発行される読み出し要求を処理するために、依然としてオンディスク索引を読み出す必要があり、これは、追加のディスクI/O操作を意味する。
・プリフェッチが終了した後でも、VMにより発行される書き込み要求を処理するために、オンディスク索引を読み出す(及び潜在的に書き込む)必要がある。
・その論理ブロック・アドレスがバッキング・イメージのサイズを上回るセクタに関するVMの読み出し又は書き込み要求を処理するとき、依然として索引の読み出し又は書き込みを行う必要がある。
・コピー・オン・リード及びプリフェッチ操作は、索引全体をメモリ内に保持することができないので、オンディスク索引をより頻繁に更新する可能性が高い。
本開示のODSにおける最適化により、最も一般的な場合、オンディスク・ビットマップの更新におけるオーバーヘッドがなくなる。これとは対照的に、QCOW2の2レベル索引によっては、同じレベルの最適化を達成することはできない。QCOW2の高度な機能(即ち、スナップショット、圧縮、及び暗号化)はクラウドにおいて使用されないので、1つの実施形態における本開示は、より良好な性能を提供するより単純なイメージ形式、即ちODS形式を選ぶことができる。QCOW2のスナップショット能力は、クラウドにとって有用となる可能性が最も高い。クラウドは、典型的には、2つのスナップショット様の機能:即ち、1)信頼できるバックアップ、及び、2)イメージ様のものをバンドルし、即ち、ルート・ファイル・システムのスナップショットを取り、それをイメージ・テンプレートに変換して、将来再利用するためにそのイメージ・テンプレートをクラウドに登録すること、を提供する。しかしながら、QCOW2のスナップショットは、DAS上のQCOW2イメージ内に格納され、従って、バックアップ・メカニズムとしては信頼できるものではなく、別のホスト上に新しいVMを作成するためのイメージ・テンプレートとして用いることができない。
1つの実施形態における本開示は、高速の仮想マシン(VM)作成及びクラウドにおける良好な実行時性能の両方をサポートすることができる。既存の解決策には、2つの制限:即ち、1)作成前にイメージ全体をコピーすることに起因する、遅いVM作成時間(例えば、KVMにおけるrawイメージ形式ドライバ)、2)遠隔ストレージ・サーバからデータを繰り返し読み出すことに起因する、実行時の高ネットワーク・トラフィック及び劣った性能(例えば、KVMにおけるqcow2イメージ形式ドライバ)、のうちの少なくとも1つがある。
1つの実施形態において、本開示のオンデマンド型イメージ・ストリーミング(ODS)は、高速のVMプロビジョニング及び良好な実行時性能の両方を提供することができる。本開示のODSは、新しい「ods」イメージ形式及び対応するドライバを用いて、ハイパーバイザを強化することができる。幾つかの既存のクラウドにおいて用いられるrawイメージ形式に比べて、ODSは、プロビジョニング時のみならず、VMの寿命全体においても、ストレージ・サーバ上に導入するネットワーク・トラフィック及び入力/出力(I/O)負荷が少ない。幾つかの既存のクラウドにおいて用いられるrawイメージ形式とは異なり、ODSは、ネットワークにわたってイメージ・テンプレートの完全なコピーを作成することなく、VMをブートすることができる。ODSは、VMを即時にブートし、次いで、VMがデータ・ブロックにアクセスすると、オンデマンドで、ストレージ・サーバからデータ・ブロックをフェッチすることができる。
コピー・オン・ライトのみを実施し、コピー・オン・リードは実施しないので、同一のデータ・ブロックをストレージ・サーバから繰り返し読み出すことができるQCOW2イメージ形式とは異なり、1つの実施形態における本開示のODSは、多くとも一回データ・ブロックをストレージ・サーバから読み出し、次いでそのブロックを、後で再利用するためにローカル・ディスク上に格納することができる。ODSがQCOW2に優る本開示の別の利点は、ローカル・ディスク内のQCOW2のデータ・レイアウトはrawイメージ形式のものとは異なるが、一方、本開示のODSのデータ・ブロックのレイアウトは、rawイメージ形式のものと同一であり得るという点である。その結果、ODSの実行時性能は、QCOW2のものより優れたものであり得る。
実験は、1)本開示のODSが、ネットワークにわたって17メガバイト(MB)を下回るデータを転送しながら、周知のオペレーティング・システム・サーバを14秒以内でブートできること、及び、2)ODSの実行時性能が、rawイメージ形式と同じように良好であるという結果を示す。
別の実施形態において、本開示のODSは、ディスク、ネットワーク、及びCPUのようなリソースが他の点ではアイドル状態であるとき又はアイドル状態である間、バックグラウンドにおいて、VMイメージ全体をストレージ・サーバからプリフェッチする高度な機能をさらに含むことができる。この機能は、VM作成時に待機し、VMイメージ全体をコピーするのではなく、ネットワーク待ち時間を隠し、リソースの消費を均等に分散させる。
本開示のODSを、クラウド環境において用いることができる。ODSはまた、非クラウド環境において用いることもできる。さらに、ODSは、例えば、高性能のCoW形式として働くように、コピー・オン・ライトだけをイネーブルにした状態で用いることができる。さらに、ODSの実装は、ゲストVM(ハイパーバイザ等の上で実行されている選択されたVM)に対してトランスペアレントにすることができ、従って、広範囲に適用可能である。
本開示のODSを、ハイパーバイザの一部として、又は、ハイパーバイザ若しくは同様の機能への拡張機能として実装し、例えば、ゲストVMに対するいかなる修正もなしに、ハイパーバイザの全ての機能を提供することができる。ODSの能力、即ち、コピー・オン・ライト、コピー・オン・リード、及びプリフェッチは、いずれの既存のハイパーバイザによっても提供されない。
ODSイメージのビットマップ・セクションのサイズは、ODSイメージのサイズではなく、バッキング・イメージのサイズに比例する。さらに、ビットマップのサイズが小さいことに起因して、ビットマップの完全なコピーをメモリ内に保持することができ、このことは、オンディスク・ビットマップを繰り返し読み出す際のオーバーヘッドを回避する。1つの態様において、コピー・オン・リード操作は、インメモリ・ビットマップを更新するだけでよく、オンディスク・ビットマップを直ちに更新する必要はなく、このことは、ディスクのI/Oオーバーヘッドを減らす助けとなる。
その論理ブロック・アドレスがバッキング・イメージのサイズを上回るセクタに関するVMの読み出し及び/又は書き込み要求を処理するとき、ODSドライバは、インメモリ・ビットマップのチェック及び/又はオンディスク・ビットマップの更新における如何なるオーバーヘッドもなしに、ODSイメージのディスク・データ・セクションに直接読み出す及び/又は書き込む。また、ひとたびプリフェッチが終了すると、VMにより発行されたディスク読み出し及び/又は書き込み要求は、インメモリ・ビットマップのチェック及び/又はオンディスク・ビットマップの更新におけるいずれのオーバーヘッドもなしに、ODSイメージのディスク・データ・セクションに対して実行される。
別の態様において、コピー・オン・リード操作が、データをVMに戻すクリティカル・パス上になくてもよく、VMがバッキング・イメージから読み出されたデータの処理を続行している間、バックグラウンドにおいて、データをODSイメージに非同期的に保存することができる。
さらに別の態様において、バッキング・イメージ内のデータ・セクタが完全にゼロで埋められている場合、ODSイメージのオンディスク・ビットマップにおける初期状態は、あたかもセクタがODSイメージ内に既に存在するかのように設定され、このことは、オンディスク・ビットマップの更新、及びストレージ・サーバからのデータ・セクタの読み出しにおけるオーバーヘッドを回避する。
当業者には認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においては、これらを全て、一般的に、「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
1つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、機器若しくは装置、又はこれらのいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下のもの、即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又はこれらのいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、機器若しくは装置によって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能ないずれかの有形媒体とすることができる。
コンピュータ可読信号媒体は、例えばベースバンドに、又は搬送波の一部として、コンピュータ可読プログラム・コードが組み入れられた伝搬データ信号を含むことができる。このような伝搬信号は、電磁気、光又はそれらのいずれかの適切な組み合わせを含むがこれらに限定されない、種々の形態のうちのいずれかをとることもできる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを通信、伝搬又搬送することができる、いずれかのコンピュータ可読媒体とすることができる。
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、RF等、又はこれらのいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。
本発明の態様についての操作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のようなオブジェクト指向型プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。全体がユーザのコンピュータ上で実行される場合もあり、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようになる。
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることがあることにも留意すべきである。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
本開示のシステム及び方法は、1つ又は複数のプロセッサ及び/又はコア、メモリ、及びコンピュータ処理システムを実装する他のシステム・コンポーネント(図には明示的に示されていない)、又はコンピュータ・プログラム製品を実行することができるコンピュータを収容する処理ユニットを含むコンピュータ・システムおいて実施若しくは実行することができる。コンピュータ・プログラム製品は、例えば、ハード・ディスク、コンパクト・ディスクのようなコンパクト・ストレージ媒体、又は実行のためにコンピュータ・プログラム製品を処理システムに提供するための、当業者には周知の又は周知になるであろういずれかの技術により、処理ユニットによって読み出すことができる他のストレージ・デバイスのような媒体を含むことができる。
コンピュータ・プログラム製品は、本明細書で説明される方法の実施を可能にし、且つ、コンピュータ・システム内にロードされたとき、方法を実行することができる、それぞれの機能の全てを含むことができる。コンピュータ・プログラム、ソフトウェア・プログラム、プログラム、又はソフトウェアは、本文脈においては、情報処理機能を有するシステムに、直接的に、又は(a)別の言語、コード、若しくは表記法への変換、及び/又は(b)異なる材料形態の複製、のいずれか又はその両方の後において、特定の機能を実行させるように意図された命令のセットの、いずれかの言語、コード、又は表記法でのいずれかの表現を意味する。
本開示のシステム及び方法を実行するコンピュータ処理システムはまた、出力表示を提示し、且つ、ユーザがデータを入力し、例えば、キーボード及びマウス・デバイス又はポインティング・デバイスなどの入力デバイスと協働して処理システムと対話することができる表示を提供するための、モニタ又は表示画面のような表示装置を含むこともできる。コンピュータ処理システムはまた、プリンタ、スキャナ、スピーカ及びいずれかの他のデバイスなどの1つ又は複数の周辺機器に、直接的に又は遠隔接続を介して接続又は結合することもできる。コンピュータ処理システムは、ローカル・イーサネット、WAN接続、インターネット等のいずれか1つ又は複数を介して、又は異なるコンピューティング・システムを接続し、それらが互いに通信するのを可能にするいずれかの他のネットワーキング方法を介して、サーバ、他の遠隔コンピュータ処理システム、ネットワーク・ストレージ・デバイスのような1つ又は複数の他の処理システムに接続又は結合することができる。本開示のシステム及び方法の種々の機能及びモジュールは、異なる処理システム上、又は、例えばネットワーク上に局所的に若しくは分散して格納されたデータにアクセスするいずれかの単一のプラットフォーム上に実装又は分散実行することができる。
本明細書で用いられる用語は、特定の実施形態を説明するためのものであり、本発明を限定することを意図するものではない。本明細書で用いられる場合、単数形の不定冠詞(「a」、「an」)及び定冠詞(「the」)は、文脈から明らかにそうではないことが示されていない限り、複数形も含むことが意図される。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書において用いられる場合、言及した特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数のその他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
以下の特許請求の範囲における全ての「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等のものは、明確に特許請求されている他の特許請求された要素と組み合わせてその機能を実行するための、いかなる構造、材料又は動作をも含むことが意図される。本発明の説明は、例証及び説明の目的で提示されたものであるが、網羅的であることを意図するものでもなく、開示された形態の発明に限定することを意図するものでもない。本発明の範囲及び思想から逸脱することのない多くの修正及び変形が、当業者には明らかであろう。実施形態は、本発明の原理及び実際の適用を最も良く説明するように、及び、当業者が、企図される特定の使用に適するように種々の修正を伴う種々の実施形態について本発明を理解することを可能にするように、選択され、説明された。
本開示の種々の態様が、プログラム、ソフトウェア、又は、コンピュータ、プロセッサ及び/又はマシン上で実行されたときに、コンピュータ若しくはマシンに方法のステップを実行させる、コンピュータ若しくはマシン使用可能媒体若しくは可読媒体において具体化されたコンピュータ命令として具体化することができる。本開示において説明される種々の機能及び方法を実行するために、マシンにより実行可能な命令のプログラムを実体的に具体化する、マシン可読のプログラム・ストレージ・デバイスも提供される。
本開示のシステム及び方法は、汎用コンピュータ又は専用コンピュータ・システム上で実装又は実行することができる。コンピュータ・システムは、いずれのタイプの周知の又は周知になるであろうシステムとすることができ、且つ、典型的には、プロセッサ、メモリ・デバイス、ストレージ・デバイス、入力/出力デバイス、内部バス、及び/又は通信ハードウェア及びソフトウェア等と共に他のコンピュータ・システムと通信するための通信インターフェースを含むことができる。
本出願において用いることができる「コンピュータ・システム」及び「コンピュータ・ネットワーク」という用語は、固定型及び/又は携帯型のコンピュータ、ハードウェア、ソフトウェア、周辺機器、及びストレージ・デバイスの種々の組み合わせを含むことができる。コンピュータ・システムは、協働して実行するようにネットワーク化された又は他の方法で接続された複数の個々のコンポーネントを含むことができる。本出願のコンピュータ・システムのハードウェア及びソフトウェア・コンポーネントは、デスクトップ、ラップトップなどの固定型デバイス及び携帯型デバイス、及び/又はサーバを含むことができ、且つ、これらの内部に含まれ得る。モジュールは、デバイスのコンポーネント、ソフトウェア、プログラム、又は何らかの「機能」を実装するシステムとすることができ、これらは、ソフトウェア、ハードウェア、ファームウェア、電子回路等として具体化することができる。
上述の実施形態は、説明に役立つ実例であり、本発明がこれらの特定の実施形態に制限されると解釈すべきではない。従って、添付の特許請求の範囲内に定められるような本発明の思想又は範囲から逸脱することなく、当業者により、種々の変更及び修正を行うことができる。
102:ストレージ・サーバ
104:イメージ・テンプレート、rawイメージ・データ
106、310、508:仮想マシン(VM)
108:ホスト・コンピュータ(計算ノード、ホスト・マシン)
110:ネットワーク
112:ローカル・ディスク
114:仮想ディスク
116:通常ファイル(ODSファイル)
118:イメージ・メタデータ
202:ODSヘッダ
204:ビットマップ
206:バッキング・イメージ
208:イメージ・データのためのスペース
210:拡張されたディスク・データのためのスペース
302:オペレーティング・システム・カーネル
304:ハードウェア・プロセッサ
306:ハイパーバイザ・プログラム
308:仮想イメージ形式
502:ソース・ホスト
504:ODSイメージ
506:ターゲット・ホスト
510:ローカル・ディスク
512:ターゲットVM
514:ローカル・ディスク
516:ODSイメージ

Claims (25)

  1. 仮想マシンのオンデマンド型イメージ・ストリーミングのための方法であって、
    選択された仮想マシンと関連したイメージ・メタデータを、それぞれ1つ又は複数の仮想マシンに対応する1つ又は複数のイメージ・テンプレートを格納するストレージ・サーバから、ホスト・コンピュータのローカル・ストレージにコピーするステップであって、前記ホスト・コンピュータのローカル・ストレージは、最初に、前記選択された仮想マシンのイメージ・テンプレートを含まず、前記イメージ・メタデータは、最初に、前記選択された仮想マシンに関連したイメージ・テンプレートへの参照のみを有するヘッダ部分を含む、コピーするステップと、
    前記コピーされたイメージ・メタデータを用いて、前記ホスト・コンピュータにおいて前記選択された仮想マシンをブートするステップであって、ブート時に必要に応じて前記ストレージ・サーバからの前記イメージ・テンプレートにアクセスすることによってブートするステップと、
    前記選択された仮想マシンが、前記ホスト・コンピュータにおいて前記選択された仮想マシンの実行を続行するのに必要とされるデータを、前記必要とされるデータが前記ホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、前記ストレージ・サーバ上の前記イメージ・テンプレートから読み出すことを可能にするステップと、
    前記イメージ・テンプレートの前記読み出されたデータが前記ホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、前記イメージ・テンプレートの前記読み出されたデータを、前記ストレージ・サーバから前記ホスト・コンピュータのローカル・ストレージにコピーするステップであって、同じデータに対する後の読み出しは前記ホスト・コンピュータのローカル・ストレージから行われる、コピーするステップと、
    前記読み出されたデータが前記ホスト・コンピュータのローカル・ストレージ上に格納されていることを示すように、ビットマップ内のビットを設定するステップであって、該ビットマップは、前記イメージ・メタデータの一部を形成する、設定するステップと、
    リソースのアイドル時間を用いて、前記選択された仮想マシンと関連した前記イメージ・テンプレートのデータを、前記ストレージ・サーバから前記ホスト・コンピュータのローカル・ストレージにプリフェッチするステップと、
    を含む方法。
  2. 前記イメージ・メタデータは、最初に、前記イメージ・テンプレートへの参照、及びビットを前記イメージ・テンプレートの対応するセクタにマッピングする前記ビットマップを含む、請求項1に記載の方法。
  3. イメージのプリフェッチ中に応答時間が監視され、応答時間が閾値を上回った場合、プリフェッチが一時的に停止される、請求項1に記載の方法。
  4. 前記ビットマップのサイズは、前記ホスト・コンピュータのローカル・ストレージ上に格納された前記対応するイメージのサイズではなく、前記ストレージ・サーバ上の前記イメージ・テンプレートのサイズに比例する、請求項1に記載の方法。
  5. 前記ビットマップの完全なコピーは、メモリ内に保持することができる、請求項1に記載の方法。
  6. その論理ブロック・アドレスが前記ストレージ・サーバ上の前記イメージ・テンプレートのサイズを上回るセクタに対する、前記選択された仮想マシンの読み出し及び/又は書き込み要求は、前記ビットマップのチェック及び/又は前記ビットマップの更新を行わずに、直接、前記セクタを読み出すこと及び/又は前記ホスト・コンピュータのローカル・ストレージに書き込むことによって処理される、請求項1に記載の方法。
  7. 前記プリフェッチの終了後、前記選択された仮想マシンにより発行される1つ又は複数のディスク読み出し及び/又は書き込み要求は、前記ビットマップのチェック及び/又は前記ビットマップの更新を行わずに、直接、前記ホスト・コンピュータのローカル・ストレージ上に格納されたイメージ・データを用いて実行される、請求項1に記載の方法。
  8. 前記ビットマップは、前記ホスト・コンピュータにおいてメモリ内及びディスク上に保持され、コピー・オン・リード操作は、前記インメモリ・ビットマップを更新するだけであり、前記オンディスク・ビットマップを即時に更新しない、請求項1に記載の方法。
  9. コピー・オン・リード操作は、前記データを前記仮想マシンに戻すクリティカル・パス上になく、前記データは、前記仮想マシンがバッキング・イメージから読み出された前記データの処理を続行する間、バックグラウンドにおいて、ODSイメージに非同期的に保存される、請求項1に記載の方法。
  10. 前記ストレージ・サーバ上の前記イメージ・テンプレート内のデータ・セクタが完全にゼロで埋められている場合、前記ホスト・コンピュータのローカル・ストレージ上に格納されている前記ビットマップ内の前記データ・セクタの初期状態は、あたかも前記データ・セクタが前記ホスト・コンピュータのローカル・ストレージに既にコピーされているように設定される、請求項1に記載の方法。
  11. 前記方法は、ハイパーバイザにおいて実装され、前記選択された仮想マシンに対する修正なしに、前記ハイパーバイザの機能を提供する、請求項1に記載の方法。
  12. 仮想マシンのオンデマンド型イメージ・ストリーミングのための方法であって、
    選択された仮想マシンと関連したイメージ・メタデータを、前記仮想マシンに対応するイメージ・テンプレートを格納するソース・コンピュータから、ターゲット・コンピュータにコピーするステップであって、前記ターゲット・コンピュータは、最初に、前記仮想マシンの前記イメージ・テンプレートを含まず、前記イメージ・メタデータは、最初に、前記選択された仮想マシンに関連したイメージ・テンプレートへの参照のみを有するヘッダ部分を含む、コピーするステップと、
    前記コピーされたイメージ・メタデータを用いて、前記ターゲット・コンピュータにおける前記仮想マシンをブートするステップであって、ブート時に必要に応じて前記ソース・コンピュータからの前記イメージ・テンプレートにアクセスすることによってブートするステップと、
    前記ターゲット・コンピュータにおける仮想マシンが、前記ターゲット・コンピュータにおいて前記仮想マシンの実行を続行するのに必要とされる、前記ソース・コンピュータ上の前記イメージ・テンプレートのデータを、前記イメージ・テンプレートの必要とされるデータが前記ターゲット・コンピュータ上に格納されていない場合に読み出すのを可能にするステップと、
    前記イメージ・テンプレートの前記読み出されたデータが前記ターゲット・コンピュータ上に格納されていない場合に、前記イメージ・テンプレートの前記読み出されたデータを前記ソース・コンピュータから前記ターゲット・コンピュータにコピーするステップであって、同じデータの後の読み出しは、前記ターゲット・コンピュータにおいて前記コピーされたデータを読み出す、コピーするステップと、
    前記読み出されたデータが前記ターゲット・コンピュータ上に格納されていることを示すように、ビットマップ内のビットを設定するステップであって、該ビットマップは、前記イメージ・メタデータの一部を形成する、設定するステップと、
    を含む方法。
  13. 前記イメージ・メタデータは、最初に、前記イメージ・テンプレートへの参照、及びビットを前記イメージ・テンプレートの対応するセクタにマッピングする前記ビットマップを含む、請求項12に記載の方法。
  14. 前記ビットマップ内の前記ビットをチェックすることにより、前記仮想マシンの実行に必要とされる前記データが前記ターゲット・コンピュータ上に格納されているかどうかを判断するステップをさらに含み、前記ビットマップ内の前記ビットに応じて、前記仮想マシンは、前記ソース・コンピュータ又は前記ターゲット・コンピュータからデータを読み出す、請求項12に記載の方法。
  15. リソースのアイドル時間を利用して、前記仮想マシンと関連した前記イメージ・テンプレートのデータを、前記ソース・コンピュータから前記ターゲット・コンピュータにプリフェッチするステップをさらに含む、請求項12に記載の方法。
  16. 前記ステップは、前記ソース・コンピュータから前記ターゲット・コンピュータへの前記仮想マシンのライブ・マイグレーションのために実施され、別個のストレージ・サーバは用いられない、請求項12に記載の方法。
  17. 選択された仮想マシンと関連したイメージ・メタデータを、それぞれ1つ又は複数の仮想マシンに対応する1つ又は複数のイメージ・テンプレートを格納するストレージ・サーバから、ホスト・コンピュータのローカル・ストレージにコピーするステップであって、前記ホスト・コンピュータのローカル・ストレージは、最初に、前記選択された仮想マシンのイメージ・テンプレートを含まず、前記イメージ・メタデータは、最初に、前記選択された仮想マシンに関連したイメージ・テンプレートへの参照のみを有するヘッダ部分を含む、コピーするステップと、
    前記コピーされたイメージ・メタデータを用いて、前記ホスト・コンピュータにおいて前記選択された仮想マシンをブートするステップであって、ブート時に必要に応じて前記ストレージ・サーバからの前記イメージ・テンプレートにアクセスすることによってブートするステップと、
    前記選択された仮想マシンが、前記ホスト・コンピュータにおいて前記選択された仮想マシンの実行を続行するのに必要とされるデータを、前記必要とされるデータが前記ホスト・コンピュータのローカル・ストレージ上に格納されていない場合に、前記ストレージ・サーバ上の前記イメージ・テンプレートから読み出すことを可能にするステップと、
    前記イメージ・テンプレートの前記読み出されたデータが前記ホスト・コンピュータのローカル・ストレージ上に格納されていない場合、前記イメージ・テンプレートの前記読み出されたデータを、前記ストレージ・サーバから前記ホスト・コンピュータのローカル・ストレージにコピーするステップであって、同じデータに対する後の読み出しは、前記ホスト・コンピュータのローカル・ストレージから行われる、コピーするステップと、
    前記読み出されたデータが前記ホスト・コンピュータのローカル・ストレージ上に格納されていることを示すように、ビットマップ内のビットを設定するステップであって、該ビットマップは、前記イメージ・メタデータの一部を形成する、設定するステップと、
    を含む、仮想マシンのオンデマンド型イメージ・ストリーミングのための方法を実施するための、マシンにより実行可能な命令のプログラムを格納するコンピュータ可読ストレージ媒体。
  18. 前記イメージ・メタデータは、最初に、前記イメージ・テンプレートへの参照を含む、請求項17に記載のコンピュータ可読ストレージ媒体。
  19. 前記イメージ・メタデータは、ビットを前記イメージ・テンプレートの対応するセクタにマッピングする前記ビットマップをさらに含む、請求項18に記載のコンピュータ可読ストレージ媒体。
  20. 前記ビットマップ内の前記ビットをチェックすることにより、前記選択された仮想マシンの実行に必要とされる前記イメージ・テンプレートの前記データが前記ホスト・コンピュータのローカル・ストレージ上に格納されているかどうかを判断するステップをさらに含み、前記ビットマップ内の前記ビットに応じて、前記選択された仮想マシンは、前記ストレージ・サーバ上の前記イメージ・テンプレート又は前記ホスト・コンピュータのローカル・ストレージ上のコピーされたイメージ・テンプレートを読み出す、請求項17に記載のコンピュータ可読ストレージ媒体。
  21. リソースのアイドル時間を利用して、前記選択された仮想マシンと関連した前記イメージ・テンプレートのデータを、前記ストレージ・サーバから前記ホスト・コンピュータのローカル・ストレージにプリフェッチするステップをさらに含む、請求項17に記載のコンピュータ可読ストレージ媒体。
  22. 仮想マシンのオンデマンド型イメージ・ストリーミングのためのシステムであって、
    選択された仮想マシンと関連したイメージ・メタデータを、前記仮想マシンに対応するイメージ・テンプレートを格納するソース・コンピュータからコピーするように動作可能であり、最初に、前記仮想マシンの前記イメージ・テンプレートを含まず、前記イメージ・メタデータは、最初に、前記選択された仮想マシンに関連したイメージ・テンプレートへの参照のみを有するヘッダ部分を含む、ターゲット・コンピュータと、
    前記ターゲット・コンピュータにローカルに取り付けられたストレージ・デバイスと、を含み、
    前記ターゲット・コンピュータは、
    前記コピーされたイメージ・メタデータを用いて、ブート時に必要に応じて前記ソース・コンピュータからの前記イメージ・テンプレートにアクセスすることによって、前記ターゲット・コンピュータにおける前記仮想マシンをブートし、且つ、前記ターゲット・コンピュータにおける前記仮想マシンが、前記ターゲット・コンピュータにおいて前記仮想マシンの実行を続行するのに必要とされる、前記ソース・コンピュータ上の前記イメージ・テンプレートのデータを、前記イメージ・テンプレートの前記必要とされるデータが前記ターゲット・コンピュータ上に格納されていない場合に読み出すことを可能にし、
    前記イメージ・テンプレートの前記読み出されたデータが前記ターゲット・コンピュータ上に格納されていない場合に、前記イメージ・テンプレートの前記読み出されたデータを、前記ソース・コンピュータから、前記ターゲット・コンピュータにローカルに取り付けられた前記ストレージ・デバイスにコピーし、同じデータの後の読み出しは前記ターゲット・コンピュータにローカルに取り付けられた前記ストレージ・デバイスから行われ、
    前記読み出されたデータが前記ターゲット・コンピュータ上に格納されていることを示すように、前記イメージ・メタデータの一部を形成するビットマップ内のビットを設定する、
    ようにさらに動作可能である、システム。
  23. 前記イメージ・メタデータは、最初に、前記イメージ・テンプレートへの参照を含む、請求項22に記載のシステム。
  24. 前記イメージ・メタデータは、ビットを前記イメージ・テンプレートの対応するセクタにマッピングする前記ビットマップをさらに含む、請求項23に記載のシステム。
  25. リソースのアイドル時間を利用して、前記仮想マシンと関連した前記イメージ・テンプレートのデータを、前記ソース・コンピュータから前記ターゲット・コンピュータにプリフェッチすることをさらに含む、請求項22に記載のシステム。
JP2013528192A 2010-09-10 2011-06-06 仮想マシンのオンデマンド型イメージ・ストリーミング Expired - Fee Related JP5657121B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/879,594 US8490088B2 (en) 2010-09-10 2010-09-10 On demand virtual machine image streaming
US12/879,594 2010-09-10
PCT/US2011/039209 WO2012033554A1 (en) 2010-09-10 2011-06-06 On demand virtual machine image streaming

Publications (3)

Publication Number Publication Date
JP2013542486A JP2013542486A (ja) 2013-11-21
JP2013542486A5 JP2013542486A5 (ja) 2014-08-14
JP5657121B2 true JP5657121B2 (ja) 2015-01-21

Family

ID=45807931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013528192A Expired - Fee Related JP5657121B2 (ja) 2010-09-10 2011-06-06 仮想マシンのオンデマンド型イメージ・ストリーミング

Country Status (6)

Country Link
US (1) US8490088B2 (ja)
JP (1) JP5657121B2 (ja)
CN (1) CN103098043B (ja)
DE (1) DE112011103026B4 (ja)
GB (1) GB2498129B (ja)
WO (1) WO2012033554A1 (ja)

Families Citing this family (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352482B2 (en) 2009-07-21 2013-01-08 Vmware, Inc. System and method for replicating disk images in a cloud computing based virtual machine file system
US8352490B2 (en) 2009-10-22 2013-01-08 Vmware, Inc. Method and system for locating update operations in a virtual machine disk image
US20110126197A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
GB2499956B (en) * 2010-11-23 2018-02-14 Servicenow Inc Direct migration of software images with streaming technique
CN102073462B (zh) * 2010-11-29 2013-04-17 华为技术有限公司 虚拟存储迁移方法、系统和虚拟机监控器
US8566496B2 (en) * 2010-12-03 2013-10-22 Lsi Corporation Data prefetch in SAS expanders
CN102567042B (zh) * 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和系统
US9223605B2 (en) * 2011-07-01 2015-12-29 V3 Systems Holdings, Inc. Virtual machine allocation internal and external to physical environment
US9326001B2 (en) * 2011-03-22 2016-04-26 International Business Machines Corporation Scalable image distribution in virtualized server environments
US9058196B2 (en) * 2011-04-12 2015-06-16 Red Hat Israel, Ltd. Host machine level template caching in virtualization environments
US20120272236A1 (en) * 2011-04-20 2012-10-25 Ayal Baron Mechanism for host machine level template caching in virtualization environments
EP2737398A4 (en) * 2011-07-29 2015-01-07 Hewlett Packard Development Co MIGRATION OF VIRTUAL MACHINES
US9367453B1 (en) * 2011-09-30 2016-06-14 Emc Corporation System and method for migrating cache data
US9367452B1 (en) 2011-09-30 2016-06-14 Emc Corporation System and method for apportioning storage
TWI539296B (zh) * 2011-12-12 2016-06-21 和沛科技股份有限公司 虛擬機器的搬移位置計算程序的觸發方法及其應用程式
US8938550B2 (en) * 2011-12-15 2015-01-20 Microsoft Corporation Autonomous network streaming
US8832296B2 (en) 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US9021096B2 (en) * 2012-01-23 2015-04-28 International Business Machines Corporation Performing maintenance operations on cloud computing node without requiring to stop all virtual machines in the node
US8880687B1 (en) * 2012-02-06 2014-11-04 Netapp, Inc. Detecting and managing idle virtual storage servers
TWI507891B (zh) * 2012-03-23 2015-11-11 Egis Technology Inc 具雲端儲存空間管理功能之電子裝置、雲端儲存系統、其方法及其電腦程式產品
US9342537B2 (en) 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US9805197B2 (en) * 2012-06-11 2017-10-31 Ent. Services Development Corporation Lp Secure host operating system running a virtual guest operating system
US20140050407A1 (en) 2012-08-17 2014-02-20 International Business Machines Corporation Virtual Machine Image Access De-Duplication
US9858095B2 (en) 2012-09-17 2018-01-02 International Business Machines Corporation Dynamic virtual machine resizing in a cloud computing infrastructure
US9507586B2 (en) * 2012-10-05 2016-11-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtual machine based controller and upgrade mechanism
US9110762B2 (en) 2012-12-04 2015-08-18 Microsoft Technology Licensing, Llc Virtual machine-preserving host updates
US9058299B2 (en) * 2013-01-08 2015-06-16 Red Hat Israel, Ltd. Efficient copying between storage devices
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9633027B1 (en) 2013-03-14 2017-04-25 EMC IP Holding Company LLC High speed backup
US9098322B2 (en) * 2013-03-15 2015-08-04 Bmc Software, Inc. Managing a server template
EP3005123A4 (en) 2013-06-03 2017-01-18 Hewlett-Packard Enterprise Development LP Restoring a file system object
CN103324446A (zh) * 2013-06-07 2013-09-25 曙光信息产业(北京)有限公司 一种高性能弹性容量虚拟机磁盘的实现方法
US10489175B2 (en) * 2013-06-10 2019-11-26 Amazon Technologies, Inc. Pre-configure and pre-launch compute resources
US20150067283A1 (en) * 2013-08-27 2015-03-05 International Business Machines Corporation Image Deduplication of Guest Virtual Machines
US9563385B1 (en) * 2013-09-16 2017-02-07 Amazon Technologies, Inc. Profile-guided data preloading for virtualized resources
US9841927B2 (en) * 2013-09-23 2017-12-12 Red Hat Israel, Ltd Remote direct memory access with copy-on-write support
CN103631903B (zh) * 2013-11-22 2017-09-01 曙光信息产业股份有限公司 一种数据库同步数据的系统
US20150154042A1 (en) * 2013-12-04 2015-06-04 Hitachi, Ltd. Computer system and control method for virtual machine
US10503531B2 (en) 2013-12-24 2019-12-10 Red Hat, Inc. Loading runtime configuration files into virtual machine instances which when executed transform a stored virtual machine image into a customized configuration
KR102237566B1 (ko) * 2014-01-23 2021-04-07 한국전자통신연구원 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법
US9851918B2 (en) * 2014-02-21 2017-12-26 Red Hat Israel, Ltd. Copy-on-write by origin host in virtual machine live migration
US9672165B1 (en) * 2014-05-21 2017-06-06 Veritas Technologies Llc Data management tier coupling primary storage and secondary storage
CN105446827B (zh) * 2014-08-08 2018-12-14 阿里巴巴集团控股有限公司 一种数据库故障时的数据存储方法和设备
US9774672B2 (en) 2014-09-03 2017-09-26 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9448731B2 (en) 2014-11-14 2016-09-20 Commvault Systems, Inc. Unified snapshot storage management
US9804965B2 (en) * 2014-12-03 2017-10-31 Electronics And Telecommunications Research Institute Virtual machine host server apparatus and method for operating the same
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9495189B2 (en) * 2014-12-30 2016-11-15 Vmware, Inc. Live replication of a virtual machine exported and imported via a portable storage device
CN104598170B (zh) * 2015-01-30 2017-12-05 华为技术有限公司 确定读写路径的方法和装置
US10459802B2 (en) 2015-01-30 2019-10-29 Hewlett-Packard Development Company, L.P. Backup image restore
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US11061705B2 (en) 2015-03-16 2021-07-13 Bmc Software, Inc. Maintaining virtual machine templates
US9984088B1 (en) 2015-03-31 2018-05-29 Maginatics Llc User driven data pre-fetch
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9900386B2 (en) * 2015-04-09 2018-02-20 International Business Machines Corporation Provisioning data to distributed computing systems
WO2016186617A1 (en) * 2015-05-15 2016-11-24 Hewlett-Packard Development Company, L.P. Data copying
EP3311286A4 (en) * 2015-06-17 2019-01-16 Intel Corporation DATA PROCESSING DEVICE AND METHOD WITH PERSISTENT MEMORY
US10284433B2 (en) 2015-06-25 2019-05-07 International Business Machines Corporation Data synchronization using redundancy detection
US9910906B2 (en) 2015-06-25 2018-03-06 International Business Machines Corporation Data synchronization using redundancy detection
CN105335253B (zh) * 2015-10-28 2019-01-15 北京百度网讯科技有限公司 创建虚拟机系统盘快照的方法和装置
CN105278999A (zh) * 2015-11-19 2016-01-27 国云科技股份有限公司 一种安全高效虚拟机软件部署的方法
CN105426216B (zh) * 2015-12-11 2019-01-15 中南大学 一种基于透明计算的智能终端软件更新方法
CN105468541B (zh) * 2015-12-11 2019-01-08 中南大学 一种面向透明计算智能终端的缓存管理方法
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10230785B1 (en) * 2015-12-28 2019-03-12 Amazon Technologies, Inc. Post data synchronization for domain migration
CN105677256A (zh) * 2016-01-08 2016-06-15 中电科华云信息技术有限公司 基于本地缓存的虚拟磁盘系统及调度方法
US10503753B2 (en) 2016-03-10 2019-12-10 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
CN112486858A (zh) * 2016-03-17 2021-03-12 华为技术有限公司 一种数据预取方法以及装置
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US9880872B2 (en) 2016-06-10 2018-01-30 GoogleLLC Post-copy based live virtual machines migration via speculative execution and pre-paging
US10416892B2 (en) 2016-06-24 2019-09-17 International Business Machines Corporation Fileset-based data locality enablement in distributed file systems
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10218811B1 (en) 2016-06-29 2019-02-26 Oath (Ameericas) Inc. Systems and methods for utilizing unused network capacity for prefetch requests
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
WO2018011881A1 (ja) * 2016-07-12 2018-01-18 株式会社日立製作所 ストレージ装置及び計算機システム
US10089135B2 (en) * 2016-08-09 2018-10-02 International Business Machines Corporation Expediting the provisioning of virtual machines based on cached repeated portions of a template
CN106293535B (zh) * 2016-08-12 2020-04-03 浪潮(北京)电子信息产业有限公司 一种nas的性能优化方法及装置
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US20180095975A1 (en) * 2016-09-30 2018-04-05 Hewlett Packard Enterprise Development Lp Managing file formats
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10303486B2 (en) * 2017-03-03 2019-05-28 Microsoft Technology Licensing, Llc Capturing pre-fetch blocks of an operating system to improve boot performance in a cloud environment
US10482632B2 (en) * 2017-04-28 2019-11-19 Uih America, Inc. System and method for image reconstruction
US20190079788A1 (en) * 2017-09-08 2019-03-14 Cisco Technology, Inc. Predictive image storage system for fast container execution
EP3502877B1 (en) * 2017-09-29 2021-03-03 Huawei Technologies Co., Ltd. Data loading method and apparatus for virtual machines
US11783262B2 (en) * 2017-11-22 2023-10-10 Canon Medical Systems Corporation Automatic detection and generation of medical imaging data analytics
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10540112B2 (en) 2018-02-06 2020-01-21 Nutanix, Inc. System and method for migrating virtual machines with storage while in use
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US20210334003A1 (en) * 2018-02-14 2021-10-28 Commvault Systems, Inc. Private snapshots based on sparse files and data replication
US10740022B2 (en) * 2018-02-14 2020-08-11 Commvault Systems, Inc. Block-level live browsing and private writable backup copies using an ISCSI server
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
CN112470121A (zh) * 2018-11-05 2021-03-09 惠普发展公司,有限责任合伙企业 经由数据块下载恢复映像
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US10802813B2 (en) 2018-12-19 2020-10-13 Atlassian Pty Ltd. Systems and methods for updating virtual machines
JP7197783B2 (ja) 2019-01-11 2022-12-28 富士通株式会社 情報処理システム、管理装置および管理プログラム
US11163614B1 (en) * 2019-01-26 2021-11-02 Evolute, Inc. Systems and methods for migrating virtual machines to containers
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11409619B2 (en) 2020-04-29 2022-08-09 The Research Foundation For The State University Of New York Recovering a virtual machine after failure of post-copy live migration
CN113835822A (zh) 2020-06-23 2021-12-24 中兴通讯股份有限公司 跨云平台虚拟机迁移方法、装置、存储介质及电子装置
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
CN112988077B (zh) * 2021-04-27 2021-07-23 云宏信息科技股份有限公司 一种虚拟磁盘复制方法和计算机可读存储介质
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11880282B2 (en) 2021-09-15 2024-01-23 Trilio Data, Inc. Container-based application data protection method and system
CN113885808B (zh) * 2021-10-28 2024-03-15 合肥兆芯电子有限公司 映射信息记录方法以及存储器控制电路单元与存储装置
US20240073275A1 (en) * 2022-08-29 2024-02-29 Vertiv It Systems, Inc. Writeback to a virtual media mapped image in html5

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062517B2 (en) 2002-08-14 2006-06-13 Hitachi, Ltd. Method and apparatus for centralized computer management
US7849462B2 (en) 2005-01-07 2010-12-07 Microsoft Corporation Image server
US7506071B2 (en) 2005-07-19 2009-03-17 International Business Machines Corporation Methods for managing an interactive streaming image system
US7653794B2 (en) * 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
KR20070111603A (ko) * 2006-05-18 2007-11-22 이상규 클라이언트 및 서버의 보안시스템
EP2137629A4 (en) 2007-03-20 2010-12-29 Sanggyu Lee MOBILE VIRTUAL MACHINE IMAGE
US8069341B2 (en) 2007-06-29 2011-11-29 Microsoft Corporation Unified provisioning of physical and virtual images
WO2009085977A2 (en) 2007-12-20 2009-07-09 Virtual Computer, Inc. Virtual computing management systems and methods
US8843602B2 (en) 2008-05-29 2014-09-23 Co-Conv, Corp. Network boot system
US20090328030A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Installing a management agent with a virtual machine
CN101419535B (zh) * 2008-11-19 2010-07-14 北京航空航天大学 虚拟机的分布式虚拟磁盘系统
US8341620B2 (en) 2009-06-25 2012-12-25 Microsoft Corporation Streaming optimized virtual application images
US8356149B2 (en) * 2009-10-30 2013-01-15 Hewlett-Packard Development Company, L.P. Memory migration
US8438564B2 (en) * 2010-03-30 2013-05-07 Lenovo (Singapore) Pte. Ltd. Systems and methods for minimizing client computer system set-up time

Also Published As

Publication number Publication date
GB201305422D0 (en) 2013-05-08
WO2012033554A1 (en) 2012-03-15
DE112011103026T5 (de) 2013-06-13
US20120066677A1 (en) 2012-03-15
GB2498129A (en) 2013-07-03
US8490088B2 (en) 2013-07-16
CN103098043B (zh) 2015-04-22
DE112011103026B4 (de) 2022-03-03
JP2013542486A (ja) 2013-11-21
CN103098043A (zh) 2013-05-08
GB2498129B (en) 2017-11-08

Similar Documents

Publication Publication Date Title
JP5657121B2 (ja) 仮想マシンのオンデマンド型イメージ・ストリーミング
US9569200B2 (en) Live operating system update mechanisms
US10817333B2 (en) Managing memory in devices that host virtual machines and have shared memory
US9317314B2 (en) Techniques for migrating a virtual machine using shared storage
US9563513B2 (en) O(1) virtual machine (VM) snapshot management
US9697130B2 (en) Systems and methods for storage service automation
US8478725B2 (en) Method and system for performing live migration of persistent data of a virtual machine
US8635395B2 (en) Method of suspending and resuming virtual machines
US8930947B1 (en) System and method for live migration of a virtual machine with dedicated cache
US9639432B2 (en) Live rollback for a computing environment
US9547562B1 (en) Boot restore system for rapidly restoring virtual machine backups
US8943498B2 (en) Method and apparatus for swapping virtual machine memory
US8966188B1 (en) RAM utilization in a virtual environment
US20120084775A1 (en) Techniques for Streaming Virtual Machines from a Server to a Host
US20150205542A1 (en) Virtual machine migration in shared storage environment
JP2014515148A (ja) 仮想記憶ディスク技術
Omote et al. Improving agility and elasticity in bare-metal clouds
US20120272236A1 (en) Mechanism for host machine level template caching in virtualization environments
US9058196B2 (en) Host machine level template caching in virtualization environments
US9053033B1 (en) System and method for cache content sharing
US9009416B1 (en) System and method for managing cache system content directories
US20230195533A1 (en) Prepopulating page tables for memory of workloads during live migrations
US11762573B2 (en) Preserving large pages of memory across live migrations of workloads
Opsahl A Comparison of Management of Virtual Machines with z/VM and ESX Server

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140212

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140603

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140624

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140624

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141104

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20141104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141125

R150 Certificate of patent or registration of utility model

Ref document number: 5657121

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees