(58)【調査した分野】(Int.Cl.,DB名)
前記ソフトウェア・イメージのサイズに対応する数の前記メモリ・ブロックを前記ローカルの大容量メモリに記憶することに応じて、各メモリ・ブロックを前記ローカルの大容量メモリから直接取得するために前記ストリーミング機能を無効化するステップ(742〜745、769〜772)
をさらに含む請求項1または2に記載のマイグレーション方法。
前記マイグレーション先データ処理エンティティがマイグレーション先物理コンピュータであり、予備的なブートストラップ・プログラムから前記マイグレーション先データ処理エンティティをブートする前記ステップ(A306、A506)が、
ネットワーク・ブートストラップ・プログラムから前記マイグレーション先物理コンピュータをブートするステップ(A306、A506)
を含む請求項1ないし4のいずれかに記載のマイグレーション方法。
前記マイグレーション先データ処理エンティティがマイグレーション先ハイパーバイザ上で実行されるマイグレーション先仮想マシンであり、予備的なブートストラップ・プログラムから前記マイグレーション先データ処理エンティティをブートする前記ステップ(A406、A606)が、
前記マイグレーション先仮想マシンの外部のブート仮想ディスクに記憶された前記予備的なブートストラップ・プログラムから前記マイグレーション先仮想マシンをブートするステップ(A406、A606)
を含む請求項1ないし4のいずれかに記載のマイグレーション方法。
前記マイグレーション元データ処理エンティティがマイグレーション元ハイパーバイザ上で実行されるマイグレーション元仮想マシンであり、前記マイグレーション方法が、
前記マイグレーション先データ処理エンティティによる前記ソフトウェア・イメージのリモート・アクセスのために一貫した状態の前記ソフトウェア・イメージを準備するステップ(A404、A604)であって、前記ソフトウェア・イメージは、前記マイグレーション元仮想マシンがオフにされた状態で準備される、ステップ(A404、A604)
をさらに含む請求項1ないし8のいずれかに記載のマイグレーション方法。
【背景技術】
【0002】
ソフトウェア・イメージのマイグレーションは、多数のコンピュータを含む大規模なデータ処理システムにおける重大な作業である。一般的に、ソフトウェア・イメージは、物理的な形式のコンピュータ中か、または仮想マシンによってエミュレートされるコンピュータ中のどちらかに存在するソフトウェア・モジュール(例えば、そのコンピュータのオペレーティング・システム、アプリケーション・プログラム、またはデータ、あるいはそれらすべて)を含む構造である。
【0003】
ソフトウェア・イメージをマイグレーションするプロセス(または単にマイグレーション・プロセス)は、段階的なタイプであるか、または直接的なタイプである可能性がある。段階的なマイグレーション・プロセスにおいては、マスタ・コンピュータのマスタ・ソフトウェア・イメージがキャプチャされ、中央リポジトリに記憶され、そして、サーバ・コンピュータが、任意の所望のマイグレーション先クライアントへのマスタ・ソフトウェア・イメージのデプロイを制御する。対称的に、直接的なマイグレーション・プロセスにおいては、1つまたは複数のマイグレーション元クライアントのソフトウェア・イメージが、マイグレーション先クライアントに直接転送され、直接的なマイグレーション・プロセスは、(いかなる中央リポジトリも必要とせずにマイグレーション元クライアントから直接行われることができ、対応する負荷を複数のマイグレーション元クライアントに分散させる可能性があるので)より高速で、より単純である。
【0004】
特に、直接的なマイグレーション・プロセスに関して、さまざまな手法が、当技術分野で提案されている。
【0005】
特に、コールド・タイプのマイグレーション・プロセスにおいては、マイグレーション元クライアントは、(ソフトウェア・イメージがマイグレーション元クライアントの一貫性のある状態を反映することを保証するように)そのクライアントのソフトウェア・イメージをキャプチャするために停止される。コールド・マイグレーション・プロセスは、同種のプラットフォームかまたは異種のプラットフォームかのどちらかを有するマイグレーション元クライアントとマイグレーション先クライアントの間でうまく機能する可能性があるが、コールド・マイグレーション・プロセスは、マイグレーション元クライアントとマイグレーション先クライアントの両方がソフトウェア・イメージ全体をマイグレーションするために必要とされる(数時間ほどの)時間の間中ずっと利用できないので非常に低速である。その代わりに、ホット・タイプのマイグレーション・プロセスにおいては、マイグレーション元クライアントは、そのクライアントの一貫性のある状態をキャプチャするために必要な時間の間だけ休止される(一方で、マイグレーション先クライアントへのソフトウェア・イメージの実際の転送は、通常通り動作することができるマイグレーション元クライアントに対して透過的に行われる)。ホット・マイグレーション・プロセスは、(マイグレーション元クライアントが、そのクライアントの状態をキャプチャするために必要とされる数分ほどの時間の間だけ利用できないままであるので)マイグレーション元クライアントにおいては高速であるが、ホット・マイグレーション・プロセスは、同種のプラットフォーム上で実行される仮想マシンの間でのみ適用可能である。同様に、ライブ・タイプのマイグレーション・プロセスにおいては、マイグレーション元クライアントは、そのクライアントの状態を共有ファイルにカプセル化するために必要とされる時間の間だけ休止される。ライブ・マイグレーション・プロセスは、(マイグレーション元クライアントが利用できない時間が数秒ほどであるので)マイグレーション元クライアントにおいては非常に高速であるが、ライブ・マイグレーション・プロセスは、やはり、同種のプラットフォーム上で実行される仮想マシンの間でのみ適用可能である。いずれにせよ、ホット・マイグレーション・プロセスとライブ・マイグレーション・プロセスの両方において、マイグレーション先クライアントは、ソフトウェア・イメージ全体がそのクライアントに転送され終わった後(すなわち、マイグレーション・プロセスの開始から数時間後)にのみ利用可能である。
【0006】
さらに、米国特許第7,512,833号(この特許の開示全体は参照により本明細書に援用される)は、オペレーティング・システムを、異なるハードウェア構成を有するコンピュータにクローニングするための方法を開示する。この目的のために、オペレーティング・システムのマスタ・イメージが、そのオペレーティング・システムが既にインストールされたマスタ・コンピュータのディスクの内容をキャプチャすることによって作成され、次いで、マスタ・イメージのファイル、ドライバ、およびレジストリの設定が、マスタ・イメージを異なるコンピュータ上でブート可能にするために、ソフトウェアおよびハードウェアの非互換性を排除する最低限の基本的レベルにそぎ落とされる。
【0007】
米国特許出願第2008/0301425号(この特許出願の開示全体は参照により本明細書に援用される)は、ホストのリモートのブートをサポートするための方法を開示する。この目的のために、ホストの管理コントローラが、リモートのアクセス対象からホストに最初のオペレーティング・システムのイメージのカーネルをロードするリモート・アクセス・イニシエータ(remote access initiator)を含み、そして、カーネルが、そのカーネル独自のリモート・アクセス・イニシエータを用いて、リモートのアクセス対象から別のオペレーティング・システムのイメージをロードする。これは、マザーボード上のLAN(LANon motherboard)(LOM)機器をまったく持たないとしても、ホストのリモートのブートを可能にする。
【0008】
米国特許出願第2006/0031547号(この特許出願の開示全体は参照により本明細書に援用される)は、オペレーティング・システムおよびアプリケーション・プログラムの統合されたオンデマンドの配信のための方法を開示する。この目的のために、オペレーティング・システムが、ストリーミング・サーバ上の対応するイメージからクライアントにストリーミングで配信され−すなわち、それらのイメージのブロックが(既に受信されたブロックが使用されている間にさらなるブロックがプリフェッチされるようにして)必要とされるときにネットワークからダウンロードされ、場合によってはローカル・キャッシュ機能が追加され、アプリケーション・プログラムが、同様に、別個のイメージからストリーミングで配信される。−各ユーザに関して組み合わされたオペレーティング・システムおよびアプリケーション・プログラムのイメージをビルドする必要がないように−オペレーティング・システムの管理は、コンピュータに固有である一方、アプリケーション・プログラムの管理はユーザに固有である。
【0009】
米国特許出願第2010/0174894号(この特許出願の開示全体は参照により本明細書に援用される)は、ディスクレス・タイプの対象コンピュータのオペレーティング・システムを構成するための方法を開示する。この目的のために、ドナー・コンピュータ(donor computer)の構成イメージが、仮想ディスクにコピーされ、次いで、その構成イメージが、−仮想ディスクからのその構成イメージの次のブートを可能にするように−対象コンピュータのハードウェア構成に応じて修正される。
【発明を実施するための形態】
【0019】
特に
図1を参照すると、本発明の実施形態によるソリューションが適用可能なデータ処理システム(または単にシステム)100の概略構成図が示される。システム100は、ネットワーク105−例えば、ローカル・エリア・ネットワーク(LAN)−に基づく分散型アーキテクチャを有する。複数のコンピュータが、ネットワーク105を介して互いに接続される。特に、サーバ・コンピュータ110は、直接的なタイプのマイグレーション・プロセスを制御し、ソフトウェア・イメージが、異なるクライアント・コンピュータ115−単純化するために図には2つだけ示される−の間で直接転送され、各ソフトウェア・イメージは、1つまたは複数のソフトウェア・モジュール(例えば、オペレーティング・システム、アプリケーション・プログラム、またはデータ、あるいはそれらすべて)を含む構造である。各マイグレーション・プロセス中、マイグレーション元クライアント−(物理)コンピュータ115か、またはそのコンピュータ115上で実行される仮想マシンかのどちらかからなる−が、そのマイグレーション元クライアントに既にインストールされている対応するソフトウェア・イメージを提供し、マイグレーション先クライアント−やはり(物理)コンピュータ115か、またはそのコンピュータ115上で実行される仮想マシンかのどちらかからなる−が、マイグレーション元クライアントからソフトウェア・イメージをダウンロードし、インストールする。この点で、用語、マイグレーション元クライアントおよびマイグレーション先クライアントは、(例えば、次のマイグレーション・プロセスにおいてマイグレーション先クライアントとして動作する可能性があるマイグレーション・プロセスのマイグレーション元クライアント、または次のマイグレーション・プロセスにおいてマイグレーション元クライアントとして動作する可能性があるマイグレーション・プロセスのマイグレーション先クライアントによる)異なるマイグレーション・プロセスにおいて時間が経つにつれて変わり得る動的な役割を特定するに過ぎず、さらに、任意の数のマイグレーション元クライアントまたはマイグレーション先クライアントあるいはその両方が、(単一のマイグレーション元クライアントが複数のマイグレーション先クライアントに同時にサービスを提供するとしても)同時にアクティブである可能性があることが指摘される。
【0020】
システム100の全般的な(サーバまたはクライアント)コンピュータは、(構造がシステムにおけるコンピュータの実際の機能に応じて好適にスケーリングされるようにして)システム・バス120に並列に接続されたいくつかのユニットによって形成される。詳細に言えば、1つまたは複数のマイクロプロセッサ(μP)125がコンピュータの動作を制御し、RAM130がマイクロプロセッサ125によって作業メモリとして直接使用され、ROM135がコンピュータの基本コードを記憶する。いくつかの周辺ユニットが、(それぞれのインターフェースによって)ローカル・バス140のまわりにクラスタ化される。特に、大容量メモリが、1つまたは複数のハードディスク145、および光ディスク155(例えば、DVDまたはCD)を読むためのドライブ150により構成される。さらに、コンピュータは、入力ユニット160(例えば、キーボードおよびマウス)ならびに出力ユニット165(例えば、モニタおよびプリンタ)を含む。アダプタ170が、コンピュータをネットワーク105に接続するために使用される。ブリッジ・ユニット175が、システム・バス120とローカル・バス140とのインターフェースをとる。各マイクロプロセッサ125およびブリッジ・ユニット175は、情報を送信するためにシステム・バス120へのアクセスを要求するマスタ・エージェントとして動作することができる。アービタ180が、システム・バス120への相互排他的なアクセスの許可を管理する。
【0021】
本発明の実施形態によるマイグレーション・プロセスの概念図が、
図2〜
図9に示される。
【0022】
図2から始めると、マイグレーション・プロセスは、マイグレーション元クライアント215sからマイグレーション先クライアント215tへのものである。この目的のために、マイグレーション元クライアント215sのマイグレーション元ディスク245sが、(例えば、対応する物理コンピュータをセーフ・モードでブートすることによって、または対応する仮想マシンをオフにすることによって)マイグレーション先クライアント215tによるそのマイグレーション元ディスク245sのリモート・アクセスのために一貫した状態のマイグレーション元クライアント215sのソフトウェア・イメージを提供するように準備される。次に、マイグレーション先クライアント215tが、(例えば、ネットワーク・ブートストラップ・プログラムから対応する物理コンピュータをブートすることによって、または一時的なブートストラップの仮想ディスクから対応する仮想マシンをブートすることによって)そのマイグレーション先クライアント215tの基本的な機能だけを提供するスタンドアロンの予備的なオペレーティング・システム(または最小限のオペレーティング・システム)を提供する(外部の)予備的なブートストラップ・プログラムからブートされ、このようにして、マイグレーション先クライアント215tのブートは、そのマイグレーション先クライアント215tがどのような状態であっても−すなわち、(機能する)オペレーティング・システムが利用可能でないときでさえも−常に可能である。
【0023】
図3に移ると、マイグレーション元ディスク245sが、マイグレーション先クライアント215tにリモートでマウントされ、次に、マイグレーション元ディスク245sに含まれるプライマリ・ブートストラップ・プログラム250sが、対応するプライマリ・ブートストラップ・プログラム250tを得るために(例えば、マイグレーション元ディスク245sをコピー・オン・アクセス(copy-on-access)モードでマウントすることによって)マイグレーション先クライアント215tのマイグレーション先ディスク245tにコピーされる。
【0024】
この時点で、
図4に示されるように、マイグレーション先クライアント215tは、(マイグレーション先クライアント215tのすべての機能を提供する完全なオペレーティング・システムを提供するように)マイグレーション先ディスク245t上のプライマリ・ブートストラップ・プログラム250tから通常通りリブートされる。マイグレーション先クライアント215tのブートストラップは、プライマリ・ブートストラップ・プログラム250tに含まれるストリーミング・ドライバ255tのローディングを引き起こす(このストリーミング・ドライバ255tは、そのマイグレーション先クライアント215tの標準的なファイル・システムのドライバをオーバーライドする)。
【0025】
ここで
図5を参照すると、マイグレーション先クライアント215tの動作中のマイグレーション先クライアント215t上のメモリ・ブロックにアクセスするあらゆる要求は、したがって、ストリーミング・ドライバ255tによって処理され、メモリ・ブロックは、マイグレーション先クライアント215tによってアクセスされる必要がある任意の種類の情報(例えば、オペレーティング・システムかまたはアプリケーション・プログラムかのどちらかに関連する1つもしくは複数のセクタ、ファイル、ライブラリ、ディレクトリ、またはそれらの組み合わせもしくは一部)を含み得る。
【0026】
要求されたメモリ・ブロックがマイグレーション先ディスク245t内にないときは、
図6の場合のように、ストリーミング・ドライバ255tが、当該メモリ・ブロックをマイグレーション元イメージ245sからダウンロードし、そのメモリ・ブロックをマイグレーション先ディスク245tに記憶する。
【0027】
対照的に、要求されたメモリ・ブロックがマイグレーション先ディスク245tにおいて既に利用可能であるときは、
図7の場合のように、ストリーミング・ドライバ255tは、当該メモリ・ブロックをマイグレーション先ディスク245tから直接取得する。
【0028】
図8に移ると、メモリ・ブロックがマイグレーション先クライアント215tに書き込まれる必要がある場合、更新は、マイグレーション先ディスク245tに記憶されたメモリ・ブロックに対してのみ適用される−このメモリ・ブロックは、このメモリ・ブロックの書き込みの前に読まれたはずであるのでマイグレーション先ディスク245tにおいて必ず利用可能である。したがって、マイグレーション先ディスク245tは、マイグレーション・プロセスがまだ進行中であるときでさえも(そのメモリ・ブロックがマイグレーション先クライアント215tに既に完全に転送されたので)通常通りに更新されることができる。
【0029】
最後に
図9を参照すると、最終的に、マイグレーション元ディスク245sのすべてのメモリ・ブロックが、マイグレーション先ディスク245tに記憶される。この時点で、(マイグレーション元ディスク245sのすべてのメモリ・ブロックが、その間のあり得るローカルの更新が追加されるようにしてマイグレーション元クライアント215sからマイグレーション先クライアント215tに転送され終わったので)マイグレーション・プロセスが完了する。マイグレーション先クライアント215tの動作は、今や、(マイグレーション先ディスク245tから直接のメモリ・ブロックにアクセスするように、ストリーミング機能255tが無効化されることができる状態で)マイグレーション元クライアント215sから完全に独立している。
【0030】
上述のソリューションは、マイグレーション元クライアント215sが、マイグレーション先クライアント215tによるマイグレーション元ディスク245sのリモート・アクセスのためにマイグレーション元ディスク245sを準備するために必要とされる短い時間の間だけ利用できないままであるので非常に高速である(いかなる中央リポジトリも必要とせずにマイグレーション元クライアント215sから直接行われ、負荷を複数のマイグレーション元クライアントに分散させる可能性がある)直接的なマイグレーション・プロセスを提供する。さらに、この場合、マイグレーション先クライアント215tも、短い時間の後で利用可能である。さらに言えば、マイグレーション先クライアント215tは、今や、プライマリ・ブートストラップ・プログラム250sがマイグレーション先ディスク245tにコピーされた直後に(マイグレーション・プロセスがまだ進行中であったとしても)使用されることができる。そのとき、マイグレーション先クライアント215tの動作は、(マイグレーション先クライアント215tがマイグレーション元ディスク245sからさらにダウンロードされるべきであるメモリ・ブロックにアクセスするときにマイグレーション先クライアント215tの性能がわずかに落ちるだけで)マイグレーション先ディスク245tでマイグレーション元ディスク245sのその他のメモリ・ブロックが利用できるか否かにかかわらずまったく通常通りであるが、マイグレーション元ディスク245sのマイグレーション先ディスク245tへの転送が完了すると、マイグレーション先クライアント215tは、従来のマイグレーション・プロセスが実行されたかのように(マイグレーション元クライアント215sをまったく必要とせずに)自律的に機能する。
【0031】
この点で、上述のストリーミング機能は、オンデマンドでオペレーティング・システムまたはアプリケーション・プログラムあるいはその両方を提供するための、当技術分野で知られているストリーミング技術とは無関係であることに留意されたい。さらに言えば、知られているストリーミング技術においては、オペレーティング・システムまたはアプリケーション・プログラムあるいはその両方のイメージのブロックは、それらのブロックを直ちに使用するためにのみマイグレーション先クライアントにダウンロードされる。しかし、これらのブロックは、マイグレーション先クライアントに持続的に記憶されず(すなわち、これらのブロックは、使用された後に、およびいずれにせよマイグレーション先クライアントがオフにされた後に消える)、したがって、マイグレーション先クライアントは、サーバ・コンピュータから切断されることができない。実際は、ブロックがプリフェッチされるときでさえも、それらのブロックは、それらのブロックの(あり得る)次の使用までしかマイグレーション先クライアント上に残らず、同様に、メモリ・ブロックのローカル・キャッシュが実装されるときでさえも、ほんのわずかなメモリ・ブロックのみが、それらのブロックの再使用のためにローカル・キャッシュ内に残る(いずれにせよ、ローカル・キャッシュ内の最も長い間使用されていないメモリ・ブロックが、新しいメモリ・ブロックを記憶するために結局追い出される)。対照的に、このストリーミング機能においては、マイグレーション元ディスク245sのすべてのメモリ・ブロックが、(それらのメモリ・ブロックがマイグレーション元クライアント215sからダウンロードされると)マイグレーション先ディスク245tに必ず記憶され、さらに、この場合、マイグレーション・プロセスは、マイグレーション先クライアント215tのスタンドアロン動作のためにマイグレーション先クライアント215t上にマイグレーション元ディスク245sの全体のコピーを作成することを目的としている。
【0032】
その上、最小限のオペレーティング・システムでのマイグレーション先クライアント215tの最初のブートは、(最小限のオペレーティング・システムがマイグレーション元クライアント215sのうちの1つと互換性がある−すなわち、その最小限のオペレーティング・システムがそのマイグレーション元クライアント215sのファイル・システムをサポートする−という条件で)マイグレーション元ディスク245sを任意のタイプのマイグレーション先クライアント215tにマイグレーションすることを可能にし、したがって、異種のプラットフォームを用いたマイグレーション元クライアントとマイグレーション先クライアント−例えば、(いずれの場合も、同じハードウェア・アーキテクチャ−例えば、x86−に基づく)異なるハイパーバイザ上で実行される仮想マシン−の間でさえも非常に高速なマイグレーション・プロセスを得ることが今や可能である。
【0033】
上述のマイグレーション・プロセスは、(任意の組み合わせの)物理コンピュータと仮想マシンの両方をサポートする単一のメカニズムを提供し、特に、物理コンピュータに対するそのメカニズムの実装は、仮想マシンにも直接適用可能である(その仮想マシンの製品化までの時間に好影響を与える)。
【0034】
本発明の対応する実施形態によるソリューションの異なる例示的な実装が、
図10〜
図13に示される。この目的のために、各図は、対応するマイグレーション・プロセスを実装するために使用され得る主要なソフトウェア・コンポーネントの役割を表すコラボレーション図を提供する。特に、図は、(対応するコンポーネントによって)システムの静的な構造を示し、(記号「A」が前に付いた増加する連番で示される対応するアクションをそれぞれが表す、一連の交換されるメッセージによって)そのシステムの動的な振る舞いを示す。情報(プログラムおよびデータ)は、概して、ハードディスク上に記憶され、プログラムが実行されているときに各コンピュータの作業メモリに(少なくとも部分的に)ロードされる。プログラムは、例えば、DVDからハードディスクに最初にインストールされる。
【0035】
図10から始めると、マイグレーション元クライアントとマイグレーション先クライアントの両方が(物理)コンピュータである物理−物理(P2P)タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号300によって表される。
【0036】
特に、サーバ・コンピュータ110が、デプロイメント・マネージャ305−例えば、IBMのIBM Tivoli Provisioning Manager for OS Deployment(またはTPM for OSD)のIBMTivoli Provisioning Manager for Images(またはTPMfI)(IBMおよびTivoliはIBMの商標である)−を実行し、デプロイメント・マネージャ305は、オペレーティング・システムまたはアプリケーション・プログラムあるいはその両方のサーバ・コンピュータ110からシステムのクライアント・コンピュータへのリモートでのデプロイを自動化するために使用される。この目的のために、デプロイメント・マネージャ305は、ソフトウェア・イメージ310のリポジトリを管理する。ブラウザ312が、デプロイメント・マネージャ305と情報をやりとりするためにオペレータ313によって使用される。
【0037】
通常通り、選択されたソフトウェア・イメージ310が、デプロイメント・マネージャ305の制御の下でマイグレーション元コンピュータ315sにデプロイされる(アクション「A301.デプロイ」)。
【0038】
この時点で、本発明の実施形態によるソリューションにおいては、マイグレーション元コンピュータ315s上にインストールされたオペレーティング・システムまたはアプリケーション・プログラムあるいはその両方が、マイグレーション先コンピュータ315tに直接マイグレーションされることができる。この目的のために、オペレータ313は、(デプロイメント・マネージャ305上で)マイグレーション・プロセスのためのマイグレーション元コンピュータ315sおよびマイグレーション先コンピュータ315tを選択する(アクション「A302.マイグレーション」)。それに応じて、デプロイメント・マネージャ305は、−例えば、Wake on LAN(WoL)サービスによって−ネットワークを介してマイグレーション元コンピュータ315sを強制的にブートすることによってマイグレーション元コンピュータ315sを(必要に応じて)オフにし、それからオンにする(アクション「A303.ネットワーク・ブート」)。この目的のために、マイグレーション元コンピュータ315sは、ネットワーク・ブート・ローダ−例えば、そのマイグレーション元コンピュータ315sのネットワーク・アダプタに組み込まれたプリブート実行環境(Preboot Execution Environment)(PXE)−を起動する。ネットワーク・ブート・ローダは、動的アドレス・サービス−例えば、動的ホスト構成プロトコル(DHCP)に基づく−を利用して、マイグレーション元コンピュータ315sに対する動的アドレスを取得し、具体的には、ネットワーク・ブート・ローダは、(DHCPサーバとして働く)サーバ・コンピュータ110によって処理される対応する要求をブロードキャストする。次に、ネットワーク・ブート・ローダは、ネットワーク・ブートストラップ・プログラムのアドレスを返すサーバ・コンピュータ110によってやはり処理されるブートストラップ要求をブロードキャストし、ネットワーク・ブート・ローダは、ネットワーク・ブートストラップ・プログラムを−例えば、簡易ファイル転送プロトコル(TFTP)によって−RAMディスク(すなわち、大容量メモリとして扱われる作業メモリの一部)にダウンロードし、次いで、そのネットワーク・ブートストラップ・プログラムを起動する。ネットワーク・ブートストラップ・プログラム−例えば、Windowsプレインストール環境(WinPE)、Windowsはマイクロソフトの商標である−は、(いかなるディスクもマウントせずに)マイグレーション元コンピュータ315sのための最小限のオペレーティング・システム325sを提供し、したがって、マイグレーション元コンピュータ315sは、大容量メモリ内のそのマイグレーション元コンピュータ315sの状態に変更が加えられる可能性がまったくない完全なセーフ・モードで動作する。最小限のオペレーティング・システム325sは、−例えば、インターネット小型コンピュータ・システム・インターフェース(InternetSmall Computer System Interface)(iSCSI)プロトコルに基づいて−リモートでデータにアクセスすることを可能にするためのリモート・アクセス・サーバ330sと、デプロイメント・マネージャ305と情報をやりとりするためのデプロイメント・エージェント335sとを含む。この時点で、デプロイメント・エージェント335sは、リモート・アクセス・サーバ330sを通じたマイグレーション元ディスク345sのリモート・アクセスのためにクライアント・コンピュータ315sのソフトウェア・イメージのマイグレーション元ディスク345sを−問題としている例においては単にそのマイグレーション元ディスク345sをiSCSIターゲットとして定義することによって−準備し、具体的には、マイグレーション元イメージ345sは、対応するブートストラップ・プログラム350sを含む。デプロイメント・エージェント335sは、今や、マイグレーション元コンピュータ315sの平常動作を可能にするために通常通りにマイグレーション元コンピュータ315sをオフにし、それからオンにすることができる(アクション「A304.準備」)。
【0039】
この時点で、デプロイメント・エージェント335sは、対応するメッセージをデプロイメント・マネージャ305に送信することによってマイグレーション先コンピュータ315tへの転送アクションをトリガする(アクション「A305.トリガ」)。それに応じて、デプロイメント・マネージャ305は、ネットワークを介してマイグレーション先コンピュータ315tを強制的にブートすることによってマイグレーション先コンピュータ315tを(必要に応じて)オフにし、それからオンにする(アクション「A306.ネットワーク・ブート」)。上述のように、マイグレーション先コンピュータ315tは、ネットワーク・ブート・ローダ(例えば、PXE)を起動し、そのネットワーク・ブート・ローダは、動的アドレス・サービス(例えば、DHCP)を利用して(サーバ・コンピュータ110から)マイグレーション先コンピュータ315tに対する動的アドレスを取得し、次いで、サーバ・コンピュータ110からネットワーク・ブートストラップ・プログラムをダウンロードし、そのネットワーク・ブートストラップ・プログラムを起動する。ネットワーク・ブートストラップ・プログラム(例えば、WinPE)は、マイグレーション先コンピュータ315tのための最小限のオペレーティング・システム325tを提供する。最小限のオペレーティング・システム325tは、デプロイメント・マネージャ305と情報をやりとりするためのデプロイメント・エージェント335tを含む。デプロイメント・エージェント335tは、リモート・アクセス・サーバ330sを通じてマイグレーション元ディスク345sにリモートでアクセスするためにマイグレーション元ディスク345sをリモート・ディスクとして(すなわち、問題としている例においてはiSCSIイニシエータとして働くことによって)マウントし(アクション「A307.マウント」)、マイグレーション元ディスク345sは、アクセス・オン・コピー・モードでマウントされ、したがって、マイグレーション先コンピュータ315tによってアクセスされるマイグレーション元ディスク345sの任意のメモリ・ブロックは、そのマイグレーション先コンピュータ315tのマイグレーション先ディスク345tに自動的にコピーされる。特に、デプロイメント・エージェント335tが、(対応するデプロイメント・エージェントを含む)マイグレーション元ディスク345sのブートストラップ・プログラム350sにアクセスし、ブートストラップ・プログラム350sが、マイグレーション元ディスク345sの残りをストリーミングで転送するためのストリーミング・ドライバをやはり含む。マイグレーション元ディスク345sがアクセス・オン・コピー・モードでマウントされたので、これは、ブートストラップ・プログラム350sをマイグレーション先ディスク345tに対応するブートストラップ・プログラム350tとしてコピーすることを引き起こす(アクション「A308.コピー」)。
【0040】
この時点で、デプロイメント・エージェント335tが、マイグレーション先コンピュータ315tを通常通りにオフにし、それからオンにする。したがって、マイグレーション先コンピュータ315tがオンになるときに実行される、マイグレーション先コンピュータ315tのファームウェアに記憶されたブート・ローダ−例えば、基本入出力システム(BIOS)−が、ここで、マイグレーション先ディスク345t内のブートストラップ・プログラム350tを発見し、その結果、マイグレーション先コンピュータ315tはそのブートストラップ・プログラム350tからローカルでブートする(アクション「A309.ローカル・ブート」)。このようにして、ブートストラップ・プログラム350tが、今や、マイグレーション先コンピュータ315tのための完全なオペレーティング・システムを提供する。特に、完全なオペレーティング・システムは、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む(アクション「A310.ストリーミング」)。
【0041】
図11に移ると、仮想−仮想(V2V)タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号400によって表される。特に、ここで、マイグレーション元コンピュータおよびマイグレーション先コンピュータは、ハイパーバイザ405sおよびハイパーバイザ405t(例えば、VMWareのWMWare ESX−VMWareはVMWareの商標である)をそれぞれ実行し、各ハイパーバイザ405s、405tは、(仮想マシンが独占的に制御する)物理コンピュータの見かけを与える抽象的な環境からそれぞれが構成される仮想マシンをエミュレートする仮想化層(virtualization layer)を実装する。この場合、マイグレーション・プロセスは、ハイパーバイザ405s上で実行されるマイグレーション元仮想マシン415sからハイパーバイザ405t上で実行されるマイグレーション先仮想マシン415tへのものである。この目的のために、ハイパーバイザ405sは、(例えば、iSCSIプロトコルに基づく)リモート・アクセス・サーバ430sおよび(デプロイメント・マネージャ305と情報をやりとりするための)デプロイメント・エージェント435sを実行し、同様に、ハイパーバイザ405tは、(デプロイメント・マネージャ305と情報をやりとりするための)デプロイメント・エージェント435tを実行する。
【0042】
上述のように、サーバ・コンピュータ110は、デプロイメント・マネージャ305と情報をやりとりするためにオペレータ313によって使用されるブラウザ312とともに、(ソフトウェア・イメージ310のリポジトリを管理する)デプロイメント・マネージャ305を実行する。通常通り、選択されたソフトウェア・イメージ310が、デプロイメント・マネージャ305の制御の下でマイグレーション元仮想マシン415sにデプロイされる(アクション「A401.デプロイ」)。
【0043】
この時点で、本発明の実施形態によるソリューションにおいては、オペレータ313は、(デプロイメント・マネージャ305上で)マイグレーション・プロセスのためのマイグレーション元仮想マシン415sおよびマイグレーション先仮想マシン415tを選択する(アクション「A402.マイグレーション」)。それに応じて、デプロイメント・マネージャ305は、デプロイメント・エージェント435sにマイグレーション元仮想マシン415sを(必要に応じて)オフにするように命令する。デプロイメント・エージェント435sは、リモート・アクセス・サーバ430sを通じたマイグレーション元仮想ディスク445sのリモート・アクセスを可能にするためにマイグレーション元仮想マシン415sのソフトウェア・イメージのマイグレーション元仮想ディスク445sを(問題としている例においては単にそのマイグレーション元仮想ディスク445sをiSCSIターゲットとして定義することによって)準備する。デプロイメント・エージェント435sは、ここで、マイグレーション元仮想マシン415sの平常動作を可能にするためにマイグレーション元仮想マシン415sをオンにすることができる(アクション「A404.準備」)。
【0044】
この時点で、デプロイメント・エージェント435sは、対応するメッセージをデプロイメント・マネージャ305に送信することによってマイグレーション先仮想マシン415tへの転送アクションをトリガする(アクション「A405.トリガ」)。それに応じて、デプロイメント・マネージャ305は、デプロイメント・エージェント435tに、ネットワーク・ブートストラップ・ディスクを(例えば、ISO形式で)ダウンロードするように命令し、そのネットワーク・ブートストラップ・ディスクはブートストラップ仮想ディスク437に記憶される。次いで、デプロイメント・エージェント435tは、マイグレーション先仮想マシン415tを(必要に応じて)オフにする。この時点で、マイグレーション先仮想マシン415tのマイグレーション先仮想ディスク445tのブート・セクタ−例えば、マスタ・ブート・レコード(MBR)−すなわち、ブート・ローダ(例えば、BIOS)によってロードされるマイグレーション先仮想ディスク445tの最初のセクタ−が、ブートストラップ仮想ディスク437を指すようにデプロイメント・エージェント435tによって変更される。次に、デプロイメント・エージェント435tは、マイグレーション先仮想マシン415tをオンにし、したがって、マイグレーション先仮想ディスク445tをブート可能なデバイスとして特定し、そのマイグレーション先仮想ディスク445tのブート・セクタをロードするマイグレーション先仮想マシン415tのブート・ローダは、今や、ブートストラップ仮想ディスク437にリダイレクトされ、それによって、マイグレーション先仮想マシン415tがそのブートストラップ仮想ディスク437からブートするようにする。これは、マイグレーション先仮想マシン415tのための最小限のオペレーティング・システム425tを提供するブートストラップ仮想ディスク437に記憶されたブートストラップ・プログラム(例えば、WinPE)を起動することをともない、特に、最小限のオペレーティング・システム425tは、−デプロイメント・マネージャ305と情報をやりとりするための−デプロイメント・エージェント435tvをさらに含む(アクション「A406.ネットワーク・ブート」)。デプロイメント・エージェント435tvは、リモート・アクセス・サーバ430sを通じてマイグレーション元仮想ディスク445sにリモートでアクセスするためにマイグレーション元仮想ディスク445sをアクセス・オン・コピー・モードのリモート・ディスクとして(すなわち、問題としている例においてはiSCSIイニシエータとして働くことによって)マウントする(アクション「A407.マウント」)。デプロイメント・エージェント435tvは、マイグレーション元仮想ディスク445sのブートストラップ・プログラム450sがマイグレーション先仮想ディスク445tに対応するブートストラップ・プログラム450tとしてコピーされるようにする−それに応じてブート・セクタをオーバーライドする−ように、(対応するデプロイメント・エージェントおよびストリーミング・ドライバを含む)マイグレーション元仮想ディスク445sのブートストラップ・プログラム450sにアクセスする(アクション「A408.コピー」)。
【0045】
この時点で、デプロイメント・エージェント435tは、ブートストラップ仮想ディスク437を削除することができる。デプロイメント・エージェント435tは、マイグレーション先仮想マシン415tをオフにし、それからオンにする。したがって、マイグレーション先仮想マシン415tのブート・ローダは、今や、マイグレーション先仮想ディスク445t内のブートストラップ・プログラム450tを発見し、その結果、マイグレーション先仮想マシン415tは、そのブートストラップ・プログラム450tからローカルでブートする(アクション「A409.ローカル・ブート」)。このようにして、ブートストラップ・プログラム450tが、今や、マイグレーション先仮想マシン415tのための完全なオペレーティング・システムを提供する。特に、完全なオペレーティング・システムは、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む(アクション「A410.ストリーミング」)。
【0046】
ここで
図12を参照すると、物理−仮想(P2V)タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号500によって表される。この場合、マイグレーション・プロセスは、マイグレーション元コンピュータ315sからマイグレーション先仮想マシン415t(ハイパーバイザ405t上で実行され、ハイパーバイザ405tは、さらにデプロイメント・エージェント435tを実行する)へのものである。
【0047】
上述のように、サーバ・コンピュータ110は、デプロイメント・マネージャ305と情報をやりとりするためにオペレータ313によって使用されるブラウザ312とともに、(ソフトウェア・イメージ310のリポジトリを管理する)デプロイメント・マネージャ305を実行する。通常通り、選択されたソフトウェア・イメージ310が、デプロイメント・マネージャ305の制御の下でマイグレーション元コンピュータ315sにデプロイされる(アクション「A501.デプロイ」)。
【0048】
この時点で、本発明の実施形態によるソリューションにおいては、オペレータ313は、(デプロイメント・マネージャ305上で)マイグレーション・プロセスのためのマイグレーション元コンピュータ315sおよびマイグレーション先仮想マシン415tを選択する(アクション「A502.マイグレーション」)。それに応じて、デプロイメント・マネージャ305は、リモート・アクセス・サーバ330sおよびデプロイメント・エージェント335sを含む最小限のオペレーティング・システム325sを提供するために、ネットワークを介してマイグレーション元コンピュータ315sを強制的にブートすることによってマイグレーション元コンピュータ315sを(必要に応じて)オフにし、それからオンにする(アクション「A503.ネットワーク・ブート」)。デプロイメント・エージェント335sは、リモート・アクセス・サーバ330sを通じたマイグレーション元ディスク345sのリモート・アクセスを可能にするために(すなわち、問題としている例においてはiSCSIターゲットとして)マイグレーション元ディスク345sを準備する。デプロイメント・エージェント335sは、今や、マイグレーション元コンピュータ315sの平常動作を可能にするために通常通りにマイグレーション元コンピュータ315sをオフにし、それからオンにすることができる(アクション「A504.準備」)。
【0049】
この時点で、デプロイメント・エージェント335sは、対応するメッセージをデプロイメント・マネージャ305に送信することによってマイグレーション先仮想マシン415tへの転送アクションをトリガする(アクション「A505.トリガ」)。それに応じて、デプロイメント・マネージャ305は、デプロイメント・エージェント435tに、ブートストラップ仮想ディスク437をダウンロードするように命令する。次に、デプロイメント・エージェント435tは、マイグレーション先仮想マシン415tを(必要に応じて)オフにし、ブートストラップ仮想ディスク437を指すようにマイグレーション先仮想ディスク445tのブート・セクタ(例えば、MBR)を変更する。次いで、デプロイメント・エージェント435tは、−デプロイメント・エージェント435tvを含む最小限のオペレーティング・システム425tを提供するために−マイグレーション先仮想マシン415tをオンにし、それによって、マイグレーション先仮想マシン415tがブートストラップ仮想ディスク437からブートするようにする(アクション「A506.ネットワーク・ブート」)。デプロイメント・エージェント435tvは、リモート・アクセス・サーバ330sを通じてマイグレーション元仮想ディスク345sにリモートでアクセスするためにマイグレーション元仮想ディスク345sをアクセス・オン・コピー・モードのリモート・ディスクとして(すなわち、問題としている例においてはiSCSIイニシエータとして働くことによって)マウントする(アクション「A507.マウント」)。デプロイメント・エージェント435tvは、マイグレーション元仮想ディスク345sのブートストラップ・プログラム350sがマイグレーション先仮想ディスク445tに対応するブートストラップ・プログラム450tとしてコピーされるようにするように、(対応するデプロイメント・エージェントおよびストリーミング・ドライバを含む)マイグレーション元仮想ディスク345sのブートストラップ・プログラム350sにアクセスする(アクション「A508.コピー」)。
【0050】
この時点で、デプロイメント・エージェント435tは、ブートストラップ仮想ディスク437を削除することができる。デプロイメント・エージェント435tは、マイグレーション先仮想マシン415tをマイグレーション先仮想ディスク445tからローカルでブートするために、マイグレーション先仮想マシン415tをオフにし、それからオンにする(アクション「A509.ローカル・ブート」)。そのようにして提供されるマイグレーション先仮想マシン415tのための完全な動作環境は、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む(アクション「A510.ストリーミング」)。
【0051】
最後に、
図13において、仮想−物理(V2P)タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号600によって表される。この場合、マイグレーション・プロセスは、マイグレーション元仮想マシン415s(ハイパーバイザ405s上で実行され、ハイパーバイザ405sは、さらにリモート・アクセス・サーバ430sおよびデプロイメント・エージェント435sを実行する)からマイグレーション先コンピュータ315tへのものである。
【0052】
上述のように、サーバ・コンピュータ110は、デプロイメント・マネージャ305と情報をやりとりするためにオペレータ313によって使用されるブラウザ312とともに、(ソフトウェア・イメージ310のリポジトリを管理する)デプロイメント・マネージャ305を実行する。通常通り、選択されたソフトウェア・イメージ310が、デプロイメント・マネージャ305の制御の下でマイグレーション元仮想マシン415sにデプロイされる(アクション「A601.デプロイ」)。
【0053】
この時点で、本発明の実施形態によるソリューションにおいては、オペレータ313は、(デプロイメント・マネージャ305上で)マイグレーション・プロセスのためのマイグレーション元仮想マシン415sおよびマイグレーション先コンピュータ315tを選択する(アクション「A602.マイグレーション」)。それに応じて、デプロイメント・マネージャ305は、デプロイメント・エージェント435sにマイグレーション元仮想マシン415sを(必要に応じて)オフにするように命令する。デプロイメント・エージェント435sは、リモート・アクセス・サーバ430sを通じたマイグレーション元仮想ディスク440sのリモート・アクセスを可能にするために(すなわち、問題としている例においてはそのマイグレーション元仮想ディスク445sをiSCSIターゲットとして定義することによって)マイグレーション元仮想ディスク440sを準備する。デプロイメント・エージェント435sは、ここで、マイグレーション元仮想マシン415sの平常動作を可能にするためにマイグレーション元仮想マシン415sをオンにすることができる(アクション「A604.準備」)。
【0054】
この時点で、デプロイメント・エージェント435sは、対応するメッセージをデプロイメント・マネージャ305に送信することによってマイグレーション先コンピュータ315tへの転送アクションをトリガする(アクション「A605.トリガ」)。それに応じて、デプロイメント・マネージャ305は、デプロイメント・エージェント335tを含む最小限のオペレーティング・システム325tを提供するために、ネットワークを介してマイグレーション先コンピュータ315tを強制的にブートすることによってマイグレーション先コンピュータ315tを(必要に応じて)オフにし、それからオンにする(アクション「A606.ネットワーク・ブート」)。デプロイメント・エージェント335tは、リモート・アクセス・サーバ430sを通じてマイグレーション元仮想ディスク445sにリモートでアクセスするためにマイグレーション元仮想ディスク445sをアクセス・オン・コピー・モードのリモート・ディスクとして(すなわち、問題としている例においてはiSCSIイニシエータとして働くことによって)マウントする(アクション「A607.マウント」)。デプロイメント・エージェント335tは、マイグレーション元仮想ディスク445sのブートストラップ・プログラム450sがマイグレーション先ディスク345tに対応するブートストラップ・プログラム350tとしてコピーされるようにするように、(対応するデプロイメント・エージェントおよびストリーミング・ドライバを含む)マイグレーション元仮想ディスク445sのブートストラップ・プログラム450sにアクセスする(アクション「A608.コピー」)。
【0055】
この時点で、デプロイメント・エージェント335tは、マイグレーション先コンピュータ315tをマイグレーション先ディスク345tからローカルでブートするために、通常マイグレーション先コンピュータ315tをオフにし、それからオンにする(アクション「A609.ローカル・ブート」)。そのようにして提供されるマイグレーション先コンピュータ315tのための完全なオペレーティング・システムは、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む(アクション「A610.ストリーミング」)。
【0056】
上述のストリーミング・プロセスを説明するために、ここで、本発明の実施形態によるソリューションの実装に関連する作業のフローを示すアクティビティ図を示す
図14に対する参照がなされ、特に、アクティビティ図は、方法700による例示的なストリーミング・プロセスを示す。
【0057】
方法700は、マイグレーション先クライアント(すなわち、マイグレーション先コンピュータまたはマイグレーション先仮想マシン)のファイル・システム・ドライバのスイムレーン内の黒い開始の円703で始まり、次いで、(例えば、アプリケーション・プログラムから)メモリ・ブロックへのアクセス(すなわち、読み取り)の要求が受信されるとすぐにブロック706に進む。それに応じて、ブロック709において、ファイル・システム・ドライバが、その要求をストリーミング・ドライバに渡す。
【0058】
ストリーミング・ドライバのスイムレーンに移ると、ブロック712において、要求されたブロックがマイグレーション先(物理または仮想)ディスクにおいて利用可能であるかどうかを判定する検証がなされ、そのために、ストリーミング・ドライバが、この情報を(例えば、各メモリ・ブロックが利用できるかどうかを示す−例えば、512バイトの−各メモリ・ブロックに関するビットを含むビットマップで)記憶するロケーション・マップ(location map)にアクセスする。次に、作業のフローは、ブロック715において、この検証の結果にしたがって枝分かれする。メモリ・ブロックがマイグレーション先ディスクにおいて利用可能でない(すなわち、ロケーション・マップ内のそのメモリ・ブロックのビットがデアサートされている)場合、ブロック718において、ストリーミング・ドライバが、(問題としている例においてはiSCSIイニシエータとして働く)リモート・アクセス・ドライバにメモリ・ブロックを要求する。ブロック721に進み、リモート・アクセス・ドライバが、マイグレーション元クライアント(すなわち、マイグレーション元コンピュータまたはマイグレーション元仮想マシン)のリモート・アクセス・サーバ−問題としている例においてはマイグレーション元(物理または仮想)ディスクをiSCSIターゲットとして提供する−に対応するダウンロード要求を送る。それに応答して、ブロック724において、リモート・アクセス・サーバが、マイグレーション先クライアントのリモート・アクセス・ドライバに要求されたメモリ・ブロックを返す。次に、ブロック727において、リモート・アクセス・ドライバが、そのようにダウンロードされたメモリ・ブロックをストリーミング・ドライバに返す。ここでブロック730を参照すると、ストリーミング・ドライバが、このメモリ・ブロックをマイグレーション先ディスクに記憶し、それに合わせて、そのメモリ・ブロックが利用可能であることを示すために(すなわち、対応するビットをアサートすることによって)ロケーション・マップを更新する。再びブロック715を参照すると、メモリ・ブロックがマイグレーション先ディスクにおいて既に利用可能である(すなわち、そのメモリ・ブロックのビットがアサートされている)場合、方法700は、ブロック733へと下り、ブロック733において、メモリ・ブロックが、マイグレーション先ディスクから直接取得される。いずれの場合も、作業のフローは、ブロック736において(ブロック730か、またはブロック733かのどちらかから)合流し、このフェーズにおいて、ストリーミング・ドライバが、ファイル・システム・ドライバにメモリ・ブロックを返す。そして今度は、ブロック739において、ファイル・システム・ドライバが、要求元のアプリケーション・プログラムにメモリ・ブロックを返す。同時に、ストリーミング・ドライバのスイムレーンのブロック742において、(マイグレーション元ディスクのサイズに対応する事前に定義された数の)マイグレーション元ディスクのすべてのメモリ・ブロックがマイグレーション先ディスクにおいて利用可能である(すなわち、ロケーション・マップ内の対応するビットがアサートされている)かどうかを検証するためのテストが、行われる。利用可能である場合、ブロック745において、ストリーミング・ドライバが無効化され、その結果、あらゆるメモリ・ブロックの読み取りのすべての次の要求は通常通りにファイル・システム・ドライバによって直接処理され、逆に言えば、いかなるアクションも実行されない。ファイル・システム・ドライバのスイムレーンに戻って、メモリ・ブロックが書き込みのためにやはり要求された場合、要求は、ブロック748において、ファイル・システム・ドライバによって直接処理され、具体的には、ここで、ファイル・システム・ドライバが、メモリ・ブロックを(そのメモリ・ブロックがそのメモリ・ブロックの読み取りの後に必ず利用可能である)マイグレーション先ディスクに書き込む。
【0059】
完全に非同期的に、ブロック751において、ストリーミング・ドライバが、マイグレーション先クライアント、マイグレーション元クライアント、またはネットワーク、あるいはそれらすべての負荷を周期的に(例えば、10〜100msごとに)検証し、負荷が事前に定義された閾値未満である(対応するリソースが−例えば、マイグレーション先クライアントまたはマイグレーション元クライアントあるいはその両方でアクションが実行されておらず、ネットワークのトラフィックが低いために−今のところ十分に利用されていないことを示す)場合、作業のフローは、ブロック754に進む。このフェーズにおいて、ストリーミング・ドライバは、上述の同じ動作を繰り返すことによって、マイグレーション先ディスクにおいてまだ利用可能でないメモリ・ブロック(例えば、ロケーション・マップ内のビットがデアサートされている最初のメモリ・ブロック)をダウンロードする。簡潔に言えば、対応する要求が、リモート・アクセス・ドライバに送られ、ブロック757において、リモート・アクセス・ドライバが、その要求をマイグレーション元クライアントのリモート・アクセス・サーバに渡す。ブロック760において、マイグレーション元クライアントのリモート・アクセス・サーバが、要求されたメモリ・ブロックをマイグレーション先ディスクのリモート・アクセス・ドライバに返し、そして今度は、ブロック763において、リモート・アクセス・ドライバが、そのメモリ・ブロックをストリーミング・ドライバに返す。ここでブロック766を参照すると、ストリーミング・ドライバが、このメモリ・ブロックをマイグレーション先ディスクに記憶し、それに合わせて、そのメモリ・ブロックが利用可能であることを示すためにロケーション・マップを更新する。ここで、ブロック769において、マイグレーション元ディスクのすべてのメモリ・ブロックがマイグレーション先ディスクに記憶されているかどうかを検証するためのテストが、行われる。記憶されている場合、ブロック772において、ストリーミング・ドライバが無効化されるが、記憶されていない場合は、いかなるアクションも実行されない。どちらの場合も、次に、方法700は、(ブロック772か、またはブロック769かのどちらかから)同心の白/黒の停止の円775において終了する。
【0060】
当然ながら、ローカルの具体的な要件を満足するために、当業者は、上述のソリューションに対して、多くの論理的または物理的あるいはその両方の修正および変更を適用する可能性がある。より具体的には、このソリューションがこのソリューションの1つまたは複数の実施形態を参照してある程度の具体性を持って説明されたが、形態および詳細のさまざまな省略、置き換え、および変更、ならびにその他の実施形態が(例えば、プロセスのパラメータに関して)あり得ることを理解されたい。特に、本発明のさまざまな実施形態は、それらの実施形態のより完全な理解をもたらすために上記の説明で述べられた特定の詳細(数値例など)なしに実施される可能性さえあり、逆に、よく知られている特徴は、不必要に詳細であることによって説明を曖昧にしないために省略されたか、または簡略化された可能性がある。さらに、開示されたソリューションの任意の実施形態に関連して説明された特定の要素または方法のステップあるいはその両方は、全体的な設計の選択の問題として、任意のその他の実施形態に組み込まれる可能性があることがはっきりと意図される。
【0061】
例えば、同様の考えが、同じソリューションが(より多くのステップもしくはその一部のステップからなる同じ機能を有する同様のステップを用いること、必須ではない一部のステップを削除すること、またはさらなる任意的なステップを追加することによって)均等な方法によって実施される場合に当てはまり、さらに、それらのステップは、(少なくとも部分的に)異なる順序で、同時に、またはインターリーブされるようにして実行される可能性がある。
【0062】
さらに、マイグレーションされるべきマイグレーション元ディスクは、任意のソフトウェア・プログラム(例えば、アプリケーション・プログラムを持たずにオペレーティング・システムだけを)含む可能性がある。いずれにせよ、マイグレーション・プロセスは、ソフトウェア・イメージがマイグレーション元クライアントにどのように(例えば、手動で)デプロイされたかとまったく無関係であり、さらに広く言えば、マイグレーション・プロセスは、デプロイメント・マネージャを有するいかなるサーバ・コンピュータもない簡略化されたシステムで実装される可能性もある。同様に、任意のその他の方法で(マイグレーション元ディスクがアクセス・オン・コピー・モードでマウントされないときに専用の動作さえも用いて)プライマリ・ブートストラップ・プログラムをマイグレーション元ディスクからマイグレーション先ディスクにコピーすることがあり得る。当然、ダウンロードされるべきマイグレーション元ディスクのメモリ・ブロックは、任意のその他の情報を含む可能性があり、または任意のその他のサイズを有する可能性があり、あるいはその両方である可能性があり、加えて、(メモリ・ブロックの起こり得る使用の前にそれらのメモリ・ブロックをマイグレーション先ディスクにダウンロードし、記憶することによって)メモリ・ブロックのプリフェッチを実施することもあり得る。任意の均等な構造が、(例えば、ロケーション・マップをマイグレーション先コンピュータの作業メモリにロードすることを可能にするためにロケーション・マップをチャンクに分割することによって)ストリーミング機能を提供するため、およびマイグレーション先ディスクにおいてメモリ・ブロックが利用できるかどうかを管理するために使用される可能性がある。
【0063】
上述のケースは例示的であるに過ぎず、それらのケースは限定的に解釈されるべきでなく、例えば、マイグレーション・プロセスは、互いに異なってさえいる任意の種類のハイパーバイザ(例えば、ESXとKVM)上で実行される仮想マシンの間のものである可能性がある。
【0064】
あるいは、マイグレーション先ディスクへのメモリ・ブロックの書き込みもストリーミング・ドライバによって管理することがあり得る。
【0065】
ストリーミング・ドライバを無効化することに関して異なる条件(例えば、マイグレーション先ディスクの事前に定義された領域が書き込まれたとき)が想定され得るが、ストリーミング・ドライバを(例えば、ロケーション・マップ内の対応するビットのリセットに応じてメモリ・ブロックの最新のバージョンをダウンロードするために)常にアクティブに維持することを妨げるものは何もない。
【0066】
負荷は、任意のその他の周期で、または特定の期間中に(例えば、夜間に)だけ監視される可能性があり、同様の考えが、負荷がマイグレーション元クライアント、マイグレーション先クライアント、ネットワーク、またはそれらの任意の組み合わせに関してのみ監視される場合に当てはまる。さらに、負荷に関する閾値は、任意のその他の方法で(例えば、異なる重みでその負荷の寄与を重み付けすることによって)定義され得る。同様の考えが、負荷が閾値未満になるときに2つ以上のメモリ・ブロックが同時にダウンロードされる場合に当てはまる。いずれにせよ、この特徴は、任意的であるに過ぎず、簡素な実装においては省略され得る。
【0067】
マイグレーション先コンピュータのための最小限のオペレーティング・システムは、任意の均等な予備的ブートストラップ・プログラム(例えば、BartPE)からそのマイグレーション先コンピュータをブートすることによって提供される可能性がある。その上、所望の結果が、(例えば、RIPL、gPXE、PXELinuxなどに基づく)異なるネットワーク・ブート・プロシージャを用いて、またはさらに別の方法で(例えば、ネットワーク・ブートCDから手動でマイグレーション先コンピュータをブートすることによって)達成される可能性もある。
【0068】
同様の考えが、マイグレーション先仮想マシンのブートに当てはまり、いずれにせよ、マイグレーション先コンピュータの最小限のオペレーティング・システムを提供するための同じ技術(すなわち、ネットワークを介したそのマイグレーション先コンピュータのブート)をマイグレーション先仮想マシンにも適用することが可能である。
【0069】
いかなる場合も、異なる方法で(例えば、取り外し可能なストレージ・デバイスからブート仮想ディスクをロードすることによって)ブート仮想ディスクを提供することを妨げるものは何もない。
【0070】
同様に、マイグレーション元コンピュータのための最小限のオペレーティング・システムは、任意の均等な予備的ブートストラップ・プログラム(例えば、BartPE)からそのマイグレーション元コンピュータをブートすることによって提供される可能性がある−マイグレーション元ディスクは、その最小限のオペレーティング・システムに含まれる任意のその他のモジュールによって準備される可能性がある。
【0071】
その上、所望の結果が、(例えば、RIPL、gPXE、PXELinuxなどに基づく)異なるネットワーク・ブート・プロシージャを用いて、またはさらに別の方法で(例えば、ネットワーク・ブートCDから手動でマイグレーション元コンピュータをブートすることによって)達成される可能性もある。
【0072】
あるいは、マイグレーション元ディスクは、マイグレーション元コンピュータのハイパーバイザ上で実行される任意のその他のモジュールによって準備される可能性があり、いずれにせよ、マイグレーション元コンピュータのマイグレーション元ディスクを準備するための(すなわち、最小限のオペレーティング・システムを用いてそのマイグレーション元コンピュータをブートすることに基づく)同じ技術をマイグレーション元仮想マシンにも適用することが可能である。
【0073】
同様の考えが、(本発明の各実施形態を実装するために使用され得る)プログラムが異なる方法で構築される場合、または追加的なモジュールもしくは機能が提供される場合に当てはまり、同様に、メモリの構造は、その他のタイプである可能性があり、または(必ずしも物理的なストレージ媒体で構成されるとは限らない)均等なエンティティによって置き換えられる可能性がある。プログラムは、任意のデータ処理システムによって、または任意のデータ処理システムに関連して(例えば、仮想マシン内で)使用されるのに好適な任意の形態をとる可能性があり、特に、プログラムは、(オブジェクト・コードか、または−例えば、コンパイルもしくは解釈されるべき−ソース・コードかのいずれかの)外部または常駐ソフトウェア、ファームウェア、またはマイクロコードの形態である可能性がある。さらに、プログラムを任意のコンピュータが使用可能な媒体に実装された製品として提供することが可能であり、媒体は、プログラムを包含、記憶、伝達、伝播、または転送するのに好適な任意の要素である可能性がある。例えば、媒体は、電子式、磁気式、光学式、電磁式、赤外線式、または半導体式である可能性があり、そのような媒体の例は、(プログラムが予めロードされる可能性がある)固定式ディスク、取り外し可能なディスク、テープ、カード、電線、ファイバ、無線接続、ネットワーク、放送波などである。いずれにせよ、本発明の実施形態によるソリューションは、(例えば、半導体材料のチップに集積された)ハードウェア構造を用いるとしても、または別の方法で構成された好適にプログラムされたソフトウェアとハードウェアの組み合わせを用いるとしても、実装されるのに適している。
【0074】
あるいは、システムは、異なる構造を有するか、もしくは均等なコンポーネントを含み、またはシステムは、その他の有効な特徴を有する。いずれにせよ、システムのあらゆるコンポーネントがより多くの要素に分けられる可能性があり、または2つ以上のコンポーネントが単一の要素にまとめられる可能性があり、さらに、各コンポーネントが、対応する動作の並列的な実行をサポートするために複製される可能性がある。概して、異なるコンポーネントの間の任意のインタラクションは、(別途指定されない限り)連続的である必要はなく、直接的であるか、または1つまたは複数の媒介手段を通じて間接的であるかのどちらかである可能性があることも指摘される。特に、マイグレーション・プロセスは、異なるアーキテクチャ(例えば、広域、グローバル、セルラ、または衛星ネットワーク)に基づき、任意の種類の(有線または無線あるいはその両方の)接続を利用するシステムでやはり実施され得る。いずれにせよ、各コンピュータは、別の構造を有する可能性があり、または(プログラムもしくはその一部を一時的に記憶するキャッシュメモリなどの)同様の要素を含む可能性があり、さらに、コンピュータを(PDA、携帯電話などの)任意のコードを実行するエンティティまたは複数のエンティティの組み合わせで置き換えることが可能である。