(57)【特許請求の範囲】
【請求項１】
マイグレーション元データ処理エンティティにインストールされたソフトウェア・イメージをマイグレーション先データ処理エンティティにマイグレーションするためのマイグレーション方法であって、
スタンドアロンの予備的なオペレーティング・システムを提供する予備的なブートストラップ・プログラムから前記マイグレーション先データ処理エンティティをブートするステップ（Ａ３０６、Ａ４０６、Ａ５０６、Ａ６０６）と、
前記ソフトウェア・イメージをリモートの大容量メモリとして前記マイグレーション先データ処理エンティティにマウントするステップ（Ａ３０７、Ａ４０７、Ａ５０７、Ａ６０７）と、
前記ソフトウェア・イメージのプライマリ・ブートストラップ・プログラムを前記マイグレーション先データ処理エンティティのローカルの大容量メモリにコピーするステップ（Ａ３０８、Ａ４０８、Ａ５０８、Ａ６０８）であって、前記プライマリ・ブートストラップ・プログラムは、前記ソフトウェア・イメージを前記マイグレーション先データ処理エンティティにマイグレーションするように適合されたストリーミング機能を含む、ステップ（Ａ３０８、Ａ４０８、Ａ５０８、Ａ６０８）と、
前記ローカルの大容量メモリ上の前記プライマリ・ブートストラップ・プログラムから前記マイグレーション先データ処理エンティティをリブートし、それによって、前記ストリーミング機能をロードするステップ（Ａ３０９、Ａ４０９、Ａ５０９、Ａ６０９）と、
前記マイグレーション先データ処理エンティティ上のメモリ・ブロックにアクセスする各要求を前記ストリーミング機能によって処理するステップ（Ａ３１０、Ａ４１０、Ａ５１０、Ａ６１０）であって、前記ストリーミング機能は、前記ローカルの大容量メモリ内に前記メモリ・ブロックがないことに応じて前記メモリ・ブロックを前記ソフトウェア・イメージからダウンロードし（７１８〜７３０）、前記メモリ・ブロックを前記ローカルの大容量メモリに記憶するか、または前記ローカルの大容量メモリ内に前記メモリ・ブロックがある場合は前記メモリ・ブロックを前記ローカルの大容量メモリから取得する（７３３）、ステップ（Ａ３１０、Ａ４１０、Ａ５１０、Ａ６１０）と
を含む、マイグレーション方法。
【請求項２】
更新モードでメモリ・ブロックにアクセスする各要求に関して、
前記ローカルの大容量メモリ内の前記メモリ・ブロックを更新するステップ（７４８）をさらに含む請求項１に記載のマイグレーション方法。
【請求項３】
前記ソフトウェア・イメージのサイズに対応する数の前記メモリ・ブロックを前記ローカルの大容量メモリに記憶することに応じて、各メモリ・ブロックを前記ローカルの大容量メモリから直接取得するために前記ストリーミング機能を無効化するステップ（７４２〜７４５、７６９〜７７２）
をさらに含む請求項１または２に記載のマイグレーション方法。
【請求項４】
前記マイグレーション先データ処理エンティティまたは前記マイグレーション元データ処理エンティティあるいはその両方の負荷を監視するステップ（７５１）と、
前記負荷が閾値未満になることに応じて、前記ローカルの大容量メモリに記憶されていない選択されたメモリ・ブロックの組を前記ソフトウェア・イメージからダウンロードし（７５４〜７６６）、前記選択されたメモリ・ブロックを前記ローカルの大容量メモリに記憶するステップと
をさらに含む請求項１ないし３のいずれかに記載のマイグレーション方法。
【請求項５】
前記マイグレーション先データ処理エンティティがマイグレーション先物理コンピュータであり、予備的なブートストラップ・プログラムから前記マイグレーション先データ処理エンティティをブートする前記ステップ（Ａ３０６、Ａ５０６）が、
ネットワーク・ブートストラップ・プログラムから前記マイグレーション先物理コンピュータをブートするステップ（Ａ３０６、Ａ５０６）
を含む請求項１ないし４のいずれかに記載のマイグレーション方法。
【請求項６】
前記マイグレーション先データ処理エンティティがマイグレーション先ハイパーバイザ上で実行されるマイグレーション先仮想マシンであり、予備的なブートストラップ・プログラムから前記マイグレーション先データ処理エンティティをブートする前記ステップ（Ａ４０６、Ａ６０６）が、
前記マイグレーション先仮想マシンの外部のブート仮想ディスクに記憶された前記予備的なブートストラップ・プログラムから前記マイグレーション先仮想マシンをブートするステップ（Ａ４０６、Ａ６０６）
を含む請求項１ないし４のいずれかに記載のマイグレーション方法。
【請求項７】
前記ブート仮想ディスクに記憶された前記予備的なブートストラップ・プログラムから前記マイグレーション先仮想マシンをブートする前記ステップ（Ａ４０６、Ａ６０６）が、
前記マイグレーション先ハイパーバイザによって前記ブート仮想ディスクに記憶される前記予備的なブートストラップ・プログラムをダウンロードするステップ（Ａ４０６、Ａ６０６）
を含む請求項６に記載のマイグレーション方法。
【請求項８】
前記ブート仮想ディスクに記憶された前記予備的なブートストラップ・プログラムから前記マイグレーション先仮想マシンをブートする前記ステップ（Ａ４０６、Ａ６０６）が、
前記ブート仮想ディスクを指すように前記マイグレーション先仮想マシンのブート・セクタを変更するステップ（Ａ４０６、Ａ６０６）
を含む請求項６または７に記載のマイグレーション方法。
【請求項９】
前記マイグレーション元データ処理エンティティがマイグレーション元物理コンピュータであり、前記マイグレーション方法が、
前記ソフトウェア・イメージをマウントすることなくさらなるスタンドアロンの予備的なオペレーティング・システムを提供するさらなる予備的なブートストラップ・プログラムから前記マイグレーション元物理コンピュータをブートするステップ（Ａ３０３、Ａ５０３）と、
前記マイグレーション先データ処理エンティティによる前記ソフトウェア・イメージのリモート・アクセスのために一貫した状態の前記ソフトウェア・イメージを準備するステップ（Ａ３０４、Ａ５０４）と
をさらに含む請求項１ないし８のいずれかに記載のマイグレーション方法。
【請求項１０】
さらなる予備的なブートストラップ・プログラムから前記マイグレーション元物理コンピュータをブートする前記ステップ（Ａ３０３、Ａ５０３）が、
さらなるネットワーク・ブートストラップ・プログラムから前記マイグレーション元物理コンピュータをブートするステップ（Ａ３０３、Ａ５０３）
を含む請求項９に記載のマイグレーション方法。
【請求項１１】
前記マイグレーション元データ処理エンティティがマイグレーション元ハイパーバイザ上で実行されるマイグレーション元仮想マシンであり、前記マイグレーション方法が、
前記マイグレーション先データ処理エンティティによる前記ソフトウェア・イメージのリモート・アクセスのために一貫した状態の前記ソフトウェア・イメージを準備するステップ（Ａ４０４、Ａ６０４）であって、前記ソフトウェア・イメージは、前記マイグレーション元仮想マシンがオフにされた状態で準備される、ステップ（Ａ４０４、Ａ６０４）
をさらに含む請求項１ないし８のいずれかに記載のマイグレーション方法。
【請求項１２】
コンピュータ・プログラムがデータ処理システム（１００）で実行されるときに、前記データ処理システムに請求項１ないし１１のいずれかに記載の方法のステップを実行させるためのコードを含むコンピュータ・プログラム（３００、４００、５００、６００）。
【請求項１３】
請求項１ないし１１のいずれかに記載の方法のステップを実行するための手段（３００、４００、５００、６００）を含むシステム（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１つまたは複数の実施形態によるソリューションは、データ処理の分野に関する。より具体的には、このソリューションは、ソフトウェア・イメージのマイグレーションに関する。
【背景技術】
【０００２】
ソフトウェア・イメージのマイグレーションは、多数のコンピュータを含む大規模なデータ処理システムにおける重大な作業である。一般的に、ソフトウェア・イメージは、物理的な形式のコンピュータ中か、または仮想マシンによってエミュレートされるコンピュータ中のどちらかに存在するソフトウェア・モジュール（例えば、そのコンピュータのオペレーティング・システム、アプリケーション・プログラム、またはデータ、あるいはそれらすべて）を含む構造である。
【０００３】
ソフトウェア・イメージをマイグレーションするプロセス（または単にマイグレーション・プロセス）は、段階的なタイプであるか、または直接的なタイプである可能性がある。段階的なマイグレーション・プロセスにおいては、マスタ・コンピュータのマスタ・ソフトウェア・イメージがキャプチャされ、中央リポジトリに記憶され、そして、サーバ・コンピュータが、任意の所望のマイグレーション先クライアントへのマスタ・ソフトウェア・イメージのデプロイを制御する。対称的に、直接的なマイグレーション・プロセスにおいては、１つまたは複数のマイグレーション元クライアントのソフトウェア・イメージが、マイグレーション先クライアントに直接転送され、直接的なマイグレーション・プロセスは、（いかなる中央リポジトリも必要とせずにマイグレーション元クライアントから直接行われることができ、対応する負荷を複数のマイグレーション元クライアントに分散させる可能性があるので）より高速で、より単純である。
【０００４】
特に、直接的なマイグレーション・プロセスに関して、さまざまな手法が、当技術分野で提案されている。
【０００５】
特に、コールド・タイプのマイグレーション・プロセスにおいては、マイグレーション元クライアントは、（ソフトウェア・イメージがマイグレーション元クライアントの一貫性のある状態を反映することを保証するように）そのクライアントのソフトウェア・イメージをキャプチャするために停止される。コールド・マイグレーション・プロセスは、同種のプラットフォームかまたは異種のプラットフォームかのどちらかを有するマイグレーション元クライアントとマイグレーション先クライアントの間でうまく機能する可能性があるが、コールド・マイグレーション・プロセスは、マイグレーション元クライアントとマイグレーション先クライアントの両方がソフトウェア・イメージ全体をマイグレーションするために必要とされる（数時間ほどの）時間の間中ずっと利用できないので非常に低速である。その代わりに、ホット・タイプのマイグレーション・プロセスにおいては、マイグレーション元クライアントは、そのクライアントの一貫性のある状態をキャプチャするために必要な時間の間だけ休止される（一方で、マイグレーション先クライアントへのソフトウェア・イメージの実際の転送は、通常通り動作することができるマイグレーション元クライアントに対して透過的に行われる）。ホット・マイグレーション・プロセスは、（マイグレーション元クライアントが、そのクライアントの状態をキャプチャするために必要とされる数分ほどの時間の間だけ利用できないままであるので）マイグレーション元クライアントにおいては高速であるが、ホット・マイグレーション・プロセスは、同種のプラットフォーム上で実行される仮想マシンの間でのみ適用可能である。同様に、ライブ・タイプのマイグレーション・プロセスにおいては、マイグレーション元クライアントは、そのクライアントの状態を共有ファイルにカプセル化するために必要とされる時間の間だけ休止される。ライブ・マイグレーション・プロセスは、（マイグレーション元クライアントが利用できない時間が数秒ほどであるので）マイグレーション元クライアントにおいては非常に高速であるが、ライブ・マイグレーション・プロセスは、やはり、同種のプラットフォーム上で実行される仮想マシンの間でのみ適用可能である。いずれにせよ、ホット・マイグレーション・プロセスとライブ・マイグレーション・プロセスの両方において、マイグレーション先クライアントは、ソフトウェア・イメージ全体がそのクライアントに転送され終わった後（すなわち、マイグレーション・プロセスの開始から数時間後）にのみ利用可能である。
【０００６】
さらに、米国特許第７，５１２，８３３号（この特許の開示全体は参照により本明細書に援用される）は、オペレーティング・システムを、異なるハードウェア構成を有するコンピュータにクローニングするための方法を開示する。この目的のために、オペレーティング・システムのマスタ・イメージが、そのオペレーティング・システムが既にインストールされたマスタ・コンピュータのディスクの内容をキャプチャすることによって作成され、次いで、マスタ・イメージのファイル、ドライバ、およびレジストリの設定が、マスタ・イメージを異なるコンピュータ上でブート可能にするために、ソフトウェアおよびハードウェアの非互換性を排除する最低限の基本的レベルにそぎ落とされる。
【０００７】
米国特許出願第２００８／０３０１４２５号（この特許出願の開示全体は参照により本明細書に援用される）は、ホストのリモートのブートをサポートするための方法を開示する。この目的のために、ホストの管理コントローラが、リモートのアクセス対象からホストに最初のオペレーティング・システムのイメージのカーネルをロードするリモート・アクセス・イニシエータ（remote access initiator）を含み、そして、カーネルが、そのカーネル独自のリモート・アクセス・イニシエータを用いて、リモートのアクセス対象から別のオペレーティング・システムのイメージをロードする。これは、マザーボード上のＬＡＮ（LANon motherboard）（ＬＯＭ）機器をまったく持たないとしても、ホストのリモートのブートを可能にする。
【０００８】
米国特許出願第２００６／００３１５４７号（この特許出願の開示全体は参照により本明細書に援用される）は、オペレーティング・システムおよびアプリケーション・プログラムの統合されたオンデマンドの配信のための方法を開示する。この目的のために、オペレーティング・システムが、ストリーミング・サーバ上の対応するイメージからクライアントにストリーミングで配信され−すなわち、それらのイメージのブロックが（既に受信されたブロックが使用されている間にさらなるブロックがプリフェッチされるようにして）必要とされるときにネットワークからダウンロードされ、場合によってはローカル・キャッシュ機能が追加され、アプリケーション・プログラムが、同様に、別個のイメージからストリーミングで配信される。−各ユーザに関して組み合わされたオペレーティング・システムおよびアプリケーション・プログラムのイメージをビルドする必要がないように−オペレーティング・システムの管理は、コンピュータに固有である一方、アプリケーション・プログラムの管理はユーザに固有である。
【０００９】
米国特許出願第２０１０／０１７４８９４号（この特許出願の開示全体は参照により本明細書に援用される）は、ディスクレス・タイプの対象コンピュータのオペレーティング・システムを構成するための方法を開示する。この目的のために、ドナー・コンピュータ（donor computer）の構成イメージが、仮想ディスクにコピーされ、次いで、その構成イメージが、−仮想ディスクからのその構成イメージの次のブートを可能にするように−対象コンピュータのハードウェア構成に応じて修正される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第７，５１２，８３３号
【特許文献２】米国特許出願第２００８／０３０１４２５号
【特許文献３】米国特許出願第２００６／００３１５４７号
【特許文献４】米国特許出願第２０１０／０１７４８９４号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ストリーミング技術を用いたソフトウェア・イメージの直接的なマイグレーション方法、システム、またはコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【００１２】
大まかに言えば、本発明の１つまたは複数の実施形態によるソリューションは、ストリーミング技術を用いてソフトウェア・イメージをマイグレーションするという考えに基づく。
【００１３】
特に、本発明の特定の実施形態によるソリューションの１つまたは複数の態様が、独立請求項に記載されており、同じソリューションの有利な特徴が、従属請求項に記載されており、これらの請求項の表現は、参照により本明細書にそのまま援用される（本発明の実施形態によるソリューションの特定の態様に関連して与えられる任意の有利な特徴は、ソリューションのあらゆるその他の態様に準用される）。
【００１４】
より具体的には、本発明の実施形態によるソリューションの態様は、マイグレーション元データ処理エンティティ（例えば、マイグレーション元コンピュータまたはマイグレーション元仮想マシン）にインストールされたソフトウェア・イメージをマイグレーション先データ処理エンティティ（例えば、マイグレーション先コンピュータまたはマイグレーション先仮想マシン）にマイグレーションするためのマイグレーション方法を提供する。マイグレーション方法は、以下のステップを含む。マイグレーション先データ処理エンティティが、スタンドアロンの予備的なオペレーティング・システムを提供する予備的なブートストラップ・プログラムから（例えば、ネットワーク・ブートストラップ・プログラムまたは一時的なブートストラップ仮想ディスクから）ブートされる。次に、ソフトウェア・イメージが、（例えば、リモート・アクセス・イニシエータとして働くことによって）リモートの大容量メモリとしてマイグレーション先データ処理エンティティにマウントされる。ソフトウェア・イメージのプライマリ・ブートストラップ・プログラムが、（例えば、ソフトウェア・イメージをアクセス・オン・コピー（access-on-copy）モードでマウントすることによって）マイグレーション先データ処理エンティティのローカルの大容量メモリにコピーされ、プライマリ・ブートストラップ・プログラムは、ソフトウェア・イメージをマイグレーション先データ処理エンティティにマイグレーションするように適合されたストリーミング機能を含む。マイグレーション先データ処理エンティティが、ローカルの大容量メモリ上のプライマリ・ブートストラップ・プログラムからリブートされ、それによって、ストリーミング機能をロードする。次いで、マイグレーション先データ処理エンティティ上のメモリ・ブロックにアクセスする各要求が、ストリーミング機能によって処理され、ストリーミング機能は、ローカルの大容量メモリ内にメモリ・ブロックがないことに応じてメモリ・ブロックをソフトウェア・イメージからダウンロードし、そのメモリ・ブロックをローカルの大容量メモリに記憶し、そうでない場合、ストリーミング機能は、メモリ・ブロックをローカルの大容量メモリから取得する。
【００１５】
本発明の実施形態によるソリューションのさらなる態様は、コンピュータ・プログラムがデータ処理システムで実行されるときに、データ処理システムにこのマイグレーション方法のステップを実行させるためのコード手段を含むコンピュータ・プログラムを提供し、本発明の実施形態によるソリューションのさらに別の態様は、コンピュータ・プログラムを具現化する非一時的コンピュータ可読媒体を含むコンピュータ・プログラム製品を提供し、コンピュータ・プログラムは、データ処理システムの作業メモリに直接ロード可能なコード手段を含み、それによって、同じマイグレーション方法を実行するようにデータ処理システムを構成する。
【００１６】
本発明の実施形態によるソリューションの別の態様は、マイグレーション方法のステップを実行するための手段を含むシステムを提供する。
【００１７】
本発明の１つまたは複数の実施形態によるソリューション、ならびにそのソリューションの特徴および利点は、添付の図面（単純化するために、対応する要素が等しいまたは同様の参照符号によって表され、それらの要素の説明は繰り返されず、各エンティティの名前は、概して、そのエンティティの種類とそのエンティティの属性−そのエンティティの値、内容、および表現−の両方を表すために使用される）と併せて読まれるべき、純粋に非限定的な目安として与えられる以下の詳細な説明を参照して最も深く理解される。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態によるソリューションが適用可能なデータ処理システムの概略構成図である。
【図２】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図３】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図４】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図５】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図６】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図７】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図８】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図９】本発明の実施形態によるマイグレーション・プロセスの概念図である。
【図１０】本発明の対応する実施形態によるソリューションの異なる例示的な実装を示す図である。
【図１１】本発明の対応する実施形態によるソリューションの異なる例示的な実装を示す図である。
【図１２】本発明の対応する実施形態によるソリューションの異なる例示的な実装を示す図である。
【図１３】本発明の対応する実施形態によるソリューションの異なる例示的な実装を示す図である。
【図１４】本発明の実施形態によるソリューションの実装に関連する作業のフローを示すアクティビティ図である。
【発明を実施するための形態】
【００１９】
特に図１を参照すると、本発明の実施形態によるソリューションが適用可能なデータ処理システム（または単にシステム）１００の概略構成図が示される。システム１００は、ネットワーク１０５−例えば、ローカル・エリア・ネットワーク（ＬＡＮ）−に基づく分散型アーキテクチャを有する。複数のコンピュータが、ネットワーク１０５を介して互いに接続される。特に、サーバ・コンピュータ１１０は、直接的なタイプのマイグレーション・プロセスを制御し、ソフトウェア・イメージが、異なるクライアント・コンピュータ１１５−単純化するために図には２つだけ示される−の間で直接転送され、各ソフトウェア・イメージは、１つまたは複数のソフトウェア・モジュール（例えば、オペレーティング・システム、アプリケーション・プログラム、またはデータ、あるいはそれらすべて）を含む構造である。各マイグレーション・プロセス中、マイグレーション元クライアント−（物理）コンピュータ１１５か、またはそのコンピュータ１１５上で実行される仮想マシンかのどちらかからなる−が、そのマイグレーション元クライアントに既にインストールされている対応するソフトウェア・イメージを提供し、マイグレーション先クライアント−やはり（物理）コンピュータ１１５か、またはそのコンピュータ１１５上で実行される仮想マシンかのどちらかからなる−が、マイグレーション元クライアントからソフトウェア・イメージをダウンロードし、インストールする。この点で、用語、マイグレーション元クライアントおよびマイグレーション先クライアントは、（例えば、次のマイグレーション・プロセスにおいてマイグレーション先クライアントとして動作する可能性があるマイグレーション・プロセスのマイグレーション元クライアント、または次のマイグレーション・プロセスにおいてマイグレーション元クライアントとして動作する可能性があるマイグレーション・プロセスのマイグレーション先クライアントによる）異なるマイグレーション・プロセスにおいて時間が経つにつれて変わり得る動的な役割を特定するに過ぎず、さらに、任意の数のマイグレーション元クライアントまたはマイグレーション先クライアントあるいはその両方が、（単一のマイグレーション元クライアントが複数のマイグレーション先クライアントに同時にサービスを提供するとしても）同時にアクティブである可能性があることが指摘される。
【００２０】
システム１００の全般的な（サーバまたはクライアント）コンピュータは、（構造がシステムにおけるコンピュータの実際の機能に応じて好適にスケーリングされるようにして）システム・バス１２０に並列に接続されたいくつかのユニットによって形成される。詳細に言えば、１つまたは複数のマイクロプロセッサ（μＰ）１２５がコンピュータの動作を制御し、ＲＡＭ１３０がマイクロプロセッサ１２５によって作業メモリとして直接使用され、ＲＯＭ１３５がコンピュータの基本コードを記憶する。いくつかの周辺ユニットが、（それぞれのインターフェースによって）ローカル・バス１４０のまわりにクラスタ化される。特に、大容量メモリが、１つまたは複数のハードディスク１４５、および光ディスク１５５（例えば、ＤＶＤまたはＣＤ）を読むためのドライブ１５０により構成される。さらに、コンピュータは、入力ユニット１６０（例えば、キーボードおよびマウス）ならびに出力ユニット１６５（例えば、モニタおよびプリンタ）を含む。アダプタ１７０が、コンピュータをネットワーク１０５に接続するために使用される。ブリッジ・ユニット１７５が、システム・バス１２０とローカル・バス１４０とのインターフェースをとる。各マイクロプロセッサ１２５およびブリッジ・ユニット１７５は、情報を送信するためにシステム・バス１２０へのアクセスを要求するマスタ・エージェントとして動作することができる。アービタ１８０が、システム・バス１２０への相互排他的なアクセスの許可を管理する。
【００２１】
本発明の実施形態によるマイグレーション・プロセスの概念図が、図２〜図９に示される。
【００２２】
図２から始めると、マイグレーション・プロセスは、マイグレーション元クライアント２１５ｓからマイグレーション先クライアント２１５ｔへのものである。この目的のために、マイグレーション元クライアント２１５ｓのマイグレーション元ディスク２４５ｓが、（例えば、対応する物理コンピュータをセーフ・モードでブートすることによって、または対応する仮想マシンをオフにすることによって）マイグレーション先クライアント２１５ｔによるそのマイグレーション元ディスク２４５ｓのリモート・アクセスのために一貫した状態のマイグレーション元クライアント２１５ｓのソフトウェア・イメージを提供するように準備される。次に、マイグレーション先クライアント２１５ｔが、（例えば、ネットワーク・ブートストラップ・プログラムから対応する物理コンピュータをブートすることによって、または一時的なブートストラップの仮想ディスクから対応する仮想マシンをブートすることによって）そのマイグレーション先クライアント２１５ｔの基本的な機能だけを提供するスタンドアロンの予備的なオペレーティング・システム（または最小限のオペレーティング・システム）を提供する（外部の）予備的なブートストラップ・プログラムからブートされ、このようにして、マイグレーション先クライアント２１５ｔのブートは、そのマイグレーション先クライアント２１５ｔがどのような状態であっても−すなわち、（機能する）オペレーティング・システムが利用可能でないときでさえも−常に可能である。
【００２３】
図３に移ると、マイグレーション元ディスク２４５ｓが、マイグレーション先クライアント２１５ｔにリモートでマウントされ、次に、マイグレーション元ディスク２４５ｓに含まれるプライマリ・ブートストラップ・プログラム２５０ｓが、対応するプライマリ・ブートストラップ・プログラム２５０ｔを得るために（例えば、マイグレーション元ディスク２４５ｓをコピー・オン・アクセス（copy-on-access）モードでマウントすることによって）マイグレーション先クライアント２１５ｔのマイグレーション先ディスク２４５ｔにコピーされる。
【００２４】
この時点で、図４に示されるように、マイグレーション先クライアント２１５ｔは、（マイグレーション先クライアント２１５ｔのすべての機能を提供する完全なオペレーティング・システムを提供するように）マイグレーション先ディスク２４５ｔ上のプライマリ・ブートストラップ・プログラム２５０ｔから通常通りリブートされる。マイグレーション先クライアント２１５ｔのブートストラップは、プライマリ・ブートストラップ・プログラム２５０ｔに含まれるストリーミング・ドライバ２５５ｔのローディングを引き起こす（このストリーミング・ドライバ２５５ｔは、そのマイグレーション先クライアント２１５ｔの標準的なファイル・システムのドライバをオーバーライドする）。
【００２５】
ここで図５を参照すると、マイグレーション先クライアント２１５ｔの動作中のマイグレーション先クライアント２１５ｔ上のメモリ・ブロックにアクセスするあらゆる要求は、したがって、ストリーミング・ドライバ２５５ｔによって処理され、メモリ・ブロックは、マイグレーション先クライアント２１５ｔによってアクセスされる必要がある任意の種類の情報（例えば、オペレーティング・システムかまたはアプリケーション・プログラムかのどちらかに関連する１つもしくは複数のセクタ、ファイル、ライブラリ、ディレクトリ、またはそれらの組み合わせもしくは一部）を含み得る。
【００２６】
要求されたメモリ・ブロックがマイグレーション先ディスク２４５ｔ内にないときは、図６の場合のように、ストリーミング・ドライバ２５５ｔが、当該メモリ・ブロックをマイグレーション元イメージ２４５ｓからダウンロードし、そのメモリ・ブロックをマイグレーション先ディスク２４５ｔに記憶する。
【００２７】
対照的に、要求されたメモリ・ブロックがマイグレーション先ディスク２４５ｔにおいて既に利用可能であるときは、図７の場合のように、ストリーミング・ドライバ２５５ｔは、当該メモリ・ブロックをマイグレーション先ディスク２４５ｔから直接取得する。
【００２８】
図８に移ると、メモリ・ブロックがマイグレーション先クライアント２１５ｔに書き込まれる必要がある場合、更新は、マイグレーション先ディスク２４５ｔに記憶されたメモリ・ブロックに対してのみ適用される−このメモリ・ブロックは、このメモリ・ブロックの書き込みの前に読まれたはずであるのでマイグレーション先ディスク２４５ｔにおいて必ず利用可能である。したがって、マイグレーション先ディスク２４５ｔは、マイグレーション・プロセスがまだ進行中であるときでさえも（そのメモリ・ブロックがマイグレーション先クライアント２１５ｔに既に完全に転送されたので）通常通りに更新されることができる。
【００２９】
最後に図９を参照すると、最終的に、マイグレーション元ディスク２４５ｓのすべてのメモリ・ブロックが、マイグレーション先ディスク２４５ｔに記憶される。この時点で、（マイグレーション元ディスク２４５ｓのすべてのメモリ・ブロックが、その間のあり得るローカルの更新が追加されるようにしてマイグレーション元クライアント２１５ｓからマイグレーション先クライアント２１５ｔに転送され終わったので）マイグレーション・プロセスが完了する。マイグレーション先クライアント２１５ｔの動作は、今や、（マイグレーション先ディスク２４５ｔから直接のメモリ・ブロックにアクセスするように、ストリーミング機能２５５ｔが無効化されることができる状態で）マイグレーション元クライアント２１５ｓから完全に独立している。
【００３０】
上述のソリューションは、マイグレーション元クライアント２１５ｓが、マイグレーション先クライアント２１５ｔによるマイグレーション元ディスク２４５ｓのリモート・アクセスのためにマイグレーション元ディスク２４５ｓを準備するために必要とされる短い時間の間だけ利用できないままであるので非常に高速である（いかなる中央リポジトリも必要とせずにマイグレーション元クライアント２１５ｓから直接行われ、負荷を複数のマイグレーション元クライアントに分散させる可能性がある）直接的なマイグレーション・プロセスを提供する。さらに、この場合、マイグレーション先クライアント２１５ｔも、短い時間の後で利用可能である。さらに言えば、マイグレーション先クライアント２１５ｔは、今や、プライマリ・ブートストラップ・プログラム２５０ｓがマイグレーション先ディスク２４５ｔにコピーされた直後に（マイグレーション・プロセスがまだ進行中であったとしても）使用されることができる。そのとき、マイグレーション先クライアント２１５ｔの動作は、（マイグレーション先クライアント２１５ｔがマイグレーション元ディスク２４５ｓからさらにダウンロードされるべきであるメモリ・ブロックにアクセスするときにマイグレーション先クライアント２１５ｔの性能がわずかに落ちるだけで）マイグレーション先ディスク２４５ｔでマイグレーション元ディスク２４５ｓのその他のメモリ・ブロックが利用できるか否かにかかわらずまったく通常通りであるが、マイグレーション元ディスク２４５ｓのマイグレーション先ディスク２４５ｔへの転送が完了すると、マイグレーション先クライアント２１５ｔは、従来のマイグレーション・プロセスが実行されたかのように（マイグレーション元クライアント２１５ｓをまったく必要とせずに）自律的に機能する。
【００３１】
この点で、上述のストリーミング機能は、オンデマンドでオペレーティング・システムまたはアプリケーション・プログラムあるいはその両方を提供するための、当技術分野で知られているストリーミング技術とは無関係であることに留意されたい。さらに言えば、知られているストリーミング技術においては、オペレーティング・システムまたはアプリケーション・プログラムあるいはその両方のイメージのブロックは、それらのブロックを直ちに使用するためにのみマイグレーション先クライアントにダウンロードされる。しかし、これらのブロックは、マイグレーション先クライアントに持続的に記憶されず（すなわち、これらのブロックは、使用された後に、およびいずれにせよマイグレーション先クライアントがオフにされた後に消える）、したがって、マイグレーション先クライアントは、サーバ・コンピュータから切断されることができない。実際は、ブロックがプリフェッチされるときでさえも、それらのブロックは、それらのブロックの（あり得る）次の使用までしかマイグレーション先クライアント上に残らず、同様に、メモリ・ブロックのローカル・キャッシュが実装されるときでさえも、ほんのわずかなメモリ・ブロックのみが、それらのブロックの再使用のためにローカル・キャッシュ内に残る（いずれにせよ、ローカル・キャッシュ内の最も長い間使用されていないメモリ・ブロックが、新しいメモリ・ブロックを記憶するために結局追い出される）。対照的に、このストリーミング機能においては、マイグレーション元ディスク２４５ｓのすべてのメモリ・ブロックが、（それらのメモリ・ブロックがマイグレーション元クライアント２１５ｓからダウンロードされると）マイグレーション先ディスク２４５ｔに必ず記憶され、さらに、この場合、マイグレーション・プロセスは、マイグレーション先クライアント２１５ｔのスタンドアロン動作のためにマイグレーション先クライアント２１５ｔ上にマイグレーション元ディスク２４５ｓの全体のコピーを作成することを目的としている。
【００３２】
その上、最小限のオペレーティング・システムでのマイグレーション先クライアント２１５ｔの最初のブートは、（最小限のオペレーティング・システムがマイグレーション元クライアント２１５ｓのうちの１つと互換性がある−すなわち、その最小限のオペレーティング・システムがそのマイグレーション元クライアント２１５ｓのファイル・システムをサポートする−という条件で）マイグレーション元ディスク２４５ｓを任意のタイプのマイグレーション先クライアント２１５ｔにマイグレーションすることを可能にし、したがって、異種のプラットフォームを用いたマイグレーション元クライアントとマイグレーション先クライアント−例えば、（いずれの場合も、同じハードウェア・アーキテクチャ−例えば、ｘ８６−に基づく）異なるハイパーバイザ上で実行される仮想マシン−の間でさえも非常に高速なマイグレーション・プロセスを得ることが今や可能である。
【００３３】
上述のマイグレーション・プロセスは、（任意の組み合わせの）物理コンピュータと仮想マシンの両方をサポートする単一のメカニズムを提供し、特に、物理コンピュータに対するそのメカニズムの実装は、仮想マシンにも直接適用可能である（その仮想マシンの製品化までの時間に好影響を与える）。
【００３４】
本発明の対応する実施形態によるソリューションの異なる例示的な実装が、図１０〜図１３に示される。この目的のために、各図は、対応するマイグレーション・プロセスを実装するために使用され得る主要なソフトウェア・コンポーネントの役割を表すコラボレーション図を提供する。特に、図は、（対応するコンポーネントによって）システムの静的な構造を示し、（記号「Ａ」が前に付いた増加する連番で示される対応するアクションをそれぞれが表す、一連の交換されるメッセージによって）そのシステムの動的な振る舞いを示す。情報（プログラムおよびデータ）は、概して、ハードディスク上に記憶され、プログラムが実行されているときに各コンピュータの作業メモリに（少なくとも部分的に）ロードされる。プログラムは、例えば、ＤＶＤからハードディスクに最初にインストールされる。
【００３５】
図１０から始めると、マイグレーション元クライアントとマイグレーション先クライアントの両方が（物理）コンピュータである物理−物理（Ｐ２Ｐ）タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号３００によって表される。
【００３６】
特に、サーバ・コンピュータ１１０が、デプロイメント・マネージャ３０５−例えば、ＩＢＭのIBM Tivoli Provisioning Manager for OS Deployment（またはＴＰＭ  ｆｏｒ  ＯＳＤ）のIBMTivoli Provisioning Manager for Images（またはＴＰＭｆＩ）（ＩＢＭおよびＴｉｖｏｌｉはＩＢＭの商標である）−を実行し、デプロイメント・マネージャ３０５は、オペレーティング・システムまたはアプリケーション・プログラムあるいはその両方のサーバ・コンピュータ１１０からシステムのクライアント・コンピュータへのリモートでのデプロイを自動化するために使用される。この目的のために、デプロイメント・マネージャ３０５は、ソフトウェア・イメージ３１０のリポジトリを管理する。ブラウザ３１２が、デプロイメント・マネージャ３０５と情報をやりとりするためにオペレータ３１３によって使用される。
【００３７】
通常通り、選択されたソフトウェア・イメージ３１０が、デプロイメント・マネージャ３０５の制御の下でマイグレーション元コンピュータ３１５ｓにデプロイされる（アクション「Ａ３０１．デプロイ」）。
【００３８】
この時点で、本発明の実施形態によるソリューションにおいては、マイグレーション元コンピュータ３１５ｓ上にインストールされたオペレーティング・システムまたはアプリケーション・プログラムあるいはその両方が、マイグレーション先コンピュータ３１５ｔに直接マイグレーションされることができる。この目的のために、オペレータ３１３は、（デプロイメント・マネージャ３０５上で）マイグレーション・プロセスのためのマイグレーション元コンピュータ３１５ｓおよびマイグレーション先コンピュータ３１５ｔを選択する（アクション「Ａ３０２．マイグレーション」）。それに応じて、デプロイメント・マネージャ３０５は、−例えば、Ｗａｋｅ  ｏｎ  ＬＡＮ（ＷｏＬ）サービスによって−ネットワークを介してマイグレーション元コンピュータ３１５ｓを強制的にブートすることによってマイグレーション元コンピュータ３１５ｓを（必要に応じて）オフにし、それからオンにする（アクション「Ａ３０３．ネットワーク・ブート」）。この目的のために、マイグレーション元コンピュータ３１５ｓは、ネットワーク・ブート・ローダ−例えば、そのマイグレーション元コンピュータ３１５ｓのネットワーク・アダプタに組み込まれたプリブート実行環境（Preboot Execution Environment）（ＰＸＥ）−を起動する。ネットワーク・ブート・ローダは、動的アドレス・サービス−例えば、動的ホスト構成プロトコル（ＤＨＣＰ）に基づく−を利用して、マイグレーション元コンピュータ３１５ｓに対する動的アドレスを取得し、具体的には、ネットワーク・ブート・ローダは、（ＤＨＣＰサーバとして働く）サーバ・コンピュータ１１０によって処理される対応する要求をブロードキャストする。次に、ネットワーク・ブート・ローダは、ネットワーク・ブートストラップ・プログラムのアドレスを返すサーバ・コンピュータ１１０によってやはり処理されるブートストラップ要求をブロードキャストし、ネットワーク・ブート・ローダは、ネットワーク・ブートストラップ・プログラムを−例えば、簡易ファイル転送プロトコル（ＴＦＴＰ）によって−ＲＡＭディスク（すなわち、大容量メモリとして扱われる作業メモリの一部）にダウンロードし、次いで、そのネットワーク・ブートストラップ・プログラムを起動する。ネットワーク・ブートストラップ・プログラム−例えば、Ｗｉｎｄｏｗｓプレインストール環境（ＷｉｎＰＥ）、Ｗｉｎｄｏｗｓはマイクロソフトの商標である−は、（いかなるディスクもマウントせずに）マイグレーション元コンピュータ３１５ｓのための最小限のオペレーティング・システム３２５ｓを提供し、したがって、マイグレーション元コンピュータ３１５ｓは、大容量メモリ内のそのマイグレーション元コンピュータ３１５ｓの状態に変更が加えられる可能性がまったくない完全なセーフ・モードで動作する。最小限のオペレーティング・システム３２５ｓは、−例えば、インターネット小型コンピュータ・システム・インターフェース（InternetSmall Computer System Interface）（ｉＳＣＳＩ）プロトコルに基づいて−リモートでデータにアクセスすることを可能にするためのリモート・アクセス・サーバ３３０ｓと、デプロイメント・マネージャ３０５と情報をやりとりするためのデプロイメント・エージェント３３５ｓとを含む。この時点で、デプロイメント・エージェント３３５ｓは、リモート・アクセス・サーバ３３０ｓを通じたマイグレーション元ディスク３４５ｓのリモート・アクセスのためにクライアント・コンピュータ３１５ｓのソフトウェア・イメージのマイグレーション元ディスク３４５ｓを−問題としている例においては単にそのマイグレーション元ディスク３４５ｓをｉＳＣＳＩターゲットとして定義することによって−準備し、具体的には、マイグレーション元イメージ３４５ｓは、対応するブートストラップ・プログラム３５０ｓを含む。デプロイメント・エージェント３３５ｓは、今や、マイグレーション元コンピュータ３１５ｓの平常動作を可能にするために通常通りにマイグレーション元コンピュータ３１５ｓをオフにし、それからオンにすることができる（アクション「Ａ３０４．準備」）。
【００３９】
この時点で、デプロイメント・エージェント３３５ｓは、対応するメッセージをデプロイメント・マネージャ３０５に送信することによってマイグレーション先コンピュータ３１５ｔへの転送アクションをトリガする（アクション「Ａ３０５．トリガ」）。それに応じて、デプロイメント・マネージャ３０５は、ネットワークを介してマイグレーション先コンピュータ３１５ｔを強制的にブートすることによってマイグレーション先コンピュータ３１５ｔを（必要に応じて）オフにし、それからオンにする（アクション「Ａ３０６．ネットワーク・ブート」）。上述のように、マイグレーション先コンピュータ３１５ｔは、ネットワーク・ブート・ローダ（例えば、ＰＸＥ）を起動し、そのネットワーク・ブート・ローダは、動的アドレス・サービス（例えば、ＤＨＣＰ）を利用して（サーバ・コンピュータ１１０から）マイグレーション先コンピュータ３１５ｔに対する動的アドレスを取得し、次いで、サーバ・コンピュータ１１０からネットワーク・ブートストラップ・プログラムをダウンロードし、そのネットワーク・ブートストラップ・プログラムを起動する。ネットワーク・ブートストラップ・プログラム（例えば、ＷｉｎＰＥ）は、マイグレーション先コンピュータ３１５ｔのための最小限のオペレーティング・システム３２５ｔを提供する。最小限のオペレーティング・システム３２５ｔは、デプロイメント・マネージャ３０５と情報をやりとりするためのデプロイメント・エージェント３３５ｔを含む。デプロイメント・エージェント３３５ｔは、リモート・アクセス・サーバ３３０ｓを通じてマイグレーション元ディスク３４５ｓにリモートでアクセスするためにマイグレーション元ディスク３４５ｓをリモート・ディスクとして（すなわち、問題としている例においてはｉＳＣＳＩイニシエータとして働くことによって）マウントし（アクション「Ａ３０７．マウント」）、マイグレーション元ディスク３４５ｓは、アクセス・オン・コピー・モードでマウントされ、したがって、マイグレーション先コンピュータ３１５ｔによってアクセスされるマイグレーション元ディスク３４５ｓの任意のメモリ・ブロックは、そのマイグレーション先コンピュータ３１５ｔのマイグレーション先ディスク３４５ｔに自動的にコピーされる。特に、デプロイメント・エージェント３３５ｔが、（対応するデプロイメント・エージェントを含む）マイグレーション元ディスク３４５ｓのブートストラップ・プログラム３５０ｓにアクセスし、ブートストラップ・プログラム３５０ｓが、マイグレーション元ディスク３４５ｓの残りをストリーミングで転送するためのストリーミング・ドライバをやはり含む。マイグレーション元ディスク３４５ｓがアクセス・オン・コピー・モードでマウントされたので、これは、ブートストラップ・プログラム３５０ｓをマイグレーション先ディスク３４５ｔに対応するブートストラップ・プログラム３５０ｔとしてコピーすることを引き起こす（アクション「Ａ３０８．コピー」）。
【００４０】
この時点で、デプロイメント・エージェント３３５ｔが、マイグレーション先コンピュータ３１５ｔを通常通りにオフにし、それからオンにする。したがって、マイグレーション先コンピュータ３１５ｔがオンになるときに実行される、マイグレーション先コンピュータ３１５ｔのファームウェアに記憶されたブート・ローダ−例えば、基本入出力システム（ＢＩＯＳ）−が、ここで、マイグレーション先ディスク３４５ｔ内のブートストラップ・プログラム３５０ｔを発見し、その結果、マイグレーション先コンピュータ３１５ｔはそのブートストラップ・プログラム３５０ｔからローカルでブートする（アクション「Ａ３０９．ローカル・ブート」）。このようにして、ブートストラップ・プログラム３５０ｔが、今や、マイグレーション先コンピュータ３１５ｔのための完全なオペレーティング・システムを提供する。特に、完全なオペレーティング・システムは、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む（アクション「Ａ３１０．ストリーミング」）。
【００４１】
図１１に移ると、仮想−仮想（Ｖ２Ｖ）タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号４００によって表される。特に、ここで、マイグレーション元コンピュータおよびマイグレーション先コンピュータは、ハイパーバイザ４０５ｓおよびハイパーバイザ４０５ｔ（例えば、ＶＭＷａｒｅのＷＭＷａｒｅ  ＥＳＸ−ＶＭＷａｒｅはＶＭＷａｒｅの商標である）をそれぞれ実行し、各ハイパーバイザ４０５ｓ、４０５ｔは、（仮想マシンが独占的に制御する）物理コンピュータの見かけを与える抽象的な環境からそれぞれが構成される仮想マシンをエミュレートする仮想化層（virtualization layer）を実装する。この場合、マイグレーション・プロセスは、ハイパーバイザ４０５ｓ上で実行されるマイグレーション元仮想マシン４１５ｓからハイパーバイザ４０５ｔ上で実行されるマイグレーション先仮想マシン４１５ｔへのものである。この目的のために、ハイパーバイザ４０５ｓは、（例えば、ｉＳＣＳＩプロトコルに基づく）リモート・アクセス・サーバ４３０ｓおよび（デプロイメント・マネージャ３０５と情報をやりとりするための）デプロイメント・エージェント４３５ｓを実行し、同様に、ハイパーバイザ４０５ｔは、（デプロイメント・マネージャ３０５と情報をやりとりするための）デプロイメント・エージェント４３５ｔを実行する。
【００４２】
上述のように、サーバ・コンピュータ１１０は、デプロイメント・マネージャ３０５と情報をやりとりするためにオペレータ３１３によって使用されるブラウザ３１２とともに、（ソフトウェア・イメージ３１０のリポジトリを管理する）デプロイメント・マネージャ３０５を実行する。通常通り、選択されたソフトウェア・イメージ３１０が、デプロイメント・マネージャ３０５の制御の下でマイグレーション元仮想マシン４１５ｓにデプロイされる（アクション「Ａ４０１．デプロイ」）。
【００４３】
この時点で、本発明の実施形態によるソリューションにおいては、オペレータ３１３は、（デプロイメント・マネージャ３０５上で）マイグレーション・プロセスのためのマイグレーション元仮想マシン４１５ｓおよびマイグレーション先仮想マシン４１５ｔを選択する（アクション「Ａ４０２．マイグレーション」）。それに応じて、デプロイメント・マネージャ３０５は、デプロイメント・エージェント４３５ｓにマイグレーション元仮想マシン４１５ｓを（必要に応じて）オフにするように命令する。デプロイメント・エージェント４３５ｓは、リモート・アクセス・サーバ４３０ｓを通じたマイグレーション元仮想ディスク４４５ｓのリモート・アクセスを可能にするためにマイグレーション元仮想マシン４１５ｓのソフトウェア・イメージのマイグレーション元仮想ディスク４４５ｓを（問題としている例においては単にそのマイグレーション元仮想ディスク４４５ｓをｉＳＣＳＩターゲットとして定義することによって）準備する。デプロイメント・エージェント４３５ｓは、ここで、マイグレーション元仮想マシン４１５ｓの平常動作を可能にするためにマイグレーション元仮想マシン４１５ｓをオンにすることができる（アクション「Ａ４０４．準備」）。
【００４４】
この時点で、デプロイメント・エージェント４３５ｓは、対応するメッセージをデプロイメント・マネージャ３０５に送信することによってマイグレーション先仮想マシン４１５ｔへの転送アクションをトリガする（アクション「Ａ４０５．トリガ」）。それに応じて、デプロイメント・マネージャ３０５は、デプロイメント・エージェント４３５ｔに、ネットワーク・ブートストラップ・ディスクを（例えば、ＩＳＯ形式で）ダウンロードするように命令し、そのネットワーク・ブートストラップ・ディスクはブートストラップ仮想ディスク４３７に記憶される。次いで、デプロイメント・エージェント４３５ｔは、マイグレーション先仮想マシン４１５ｔを（必要に応じて）オフにする。この時点で、マイグレーション先仮想マシン４１５ｔのマイグレーション先仮想ディスク４４５ｔのブート・セクタ−例えば、マスタ・ブート・レコード（ＭＢＲ）−すなわち、ブート・ローダ（例えば、ＢＩＯＳ）によってロードされるマイグレーション先仮想ディスク４４５ｔの最初のセクタ−が、ブートストラップ仮想ディスク４３７を指すようにデプロイメント・エージェント４３５ｔによって変更される。次に、デプロイメント・エージェント４３５ｔは、マイグレーション先仮想マシン４１５ｔをオンにし、したがって、マイグレーション先仮想ディスク４４５ｔをブート可能なデバイスとして特定し、そのマイグレーション先仮想ディスク４４５ｔのブート・セクタをロードするマイグレーション先仮想マシン４１５ｔのブート・ローダは、今や、ブートストラップ仮想ディスク４３７にリダイレクトされ、それによって、マイグレーション先仮想マシン４１５ｔがそのブートストラップ仮想ディスク４３７からブートするようにする。これは、マイグレーション先仮想マシン４１５ｔのための最小限のオペレーティング・システム４２５ｔを提供するブートストラップ仮想ディスク４３７に記憶されたブートストラップ・プログラム（例えば、ＷｉｎＰＥ）を起動することをともない、特に、最小限のオペレーティング・システム４２５ｔは、−デプロイメント・マネージャ３０５と情報をやりとりするための−デプロイメント・エージェント４３５ｔｖをさらに含む（アクション「Ａ４０６．ネットワーク・ブート」）。デプロイメント・エージェント４３５ｔｖは、リモート・アクセス・サーバ４３０ｓを通じてマイグレーション元仮想ディスク４４５ｓにリモートでアクセスするためにマイグレーション元仮想ディスク４４５ｓをアクセス・オン・コピー・モードのリモート・ディスクとして（すなわち、問題としている例においてはｉＳＣＳＩイニシエータとして働くことによって）マウントする（アクション「Ａ４０７．マウント」）。デプロイメント・エージェント４３５ｔｖは、マイグレーション元仮想ディスク４４５ｓのブートストラップ・プログラム４５０ｓがマイグレーション先仮想ディスク４４５ｔに対応するブートストラップ・プログラム４５０ｔとしてコピーされるようにする−それに応じてブート・セクタをオーバーライドする−ように、（対応するデプロイメント・エージェントおよびストリーミング・ドライバを含む）マイグレーション元仮想ディスク４４５ｓのブートストラップ・プログラム４５０ｓにアクセスする（アクション「Ａ４０８．コピー」）。
【００４５】
この時点で、デプロイメント・エージェント４３５ｔは、ブートストラップ仮想ディスク４３７を削除することができる。デプロイメント・エージェント４３５ｔは、マイグレーション先仮想マシン４１５ｔをオフにし、それからオンにする。したがって、マイグレーション先仮想マシン４１５ｔのブート・ローダは、今や、マイグレーション先仮想ディスク４４５ｔ内のブートストラップ・プログラム４５０ｔを発見し、その結果、マイグレーション先仮想マシン４１５ｔは、そのブートストラップ・プログラム４５０ｔからローカルでブートする（アクション「Ａ４０９．ローカル・ブート」）。このようにして、ブートストラップ・プログラム４５０ｔが、今や、マイグレーション先仮想マシン４１５ｔのための完全なオペレーティング・システムを提供する。特に、完全なオペレーティング・システムは、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む（アクション「Ａ４１０．ストリーミング」）。
【００４６】
ここで図１２を参照すると、物理−仮想（Ｐ２Ｖ）タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号５００によって表される。この場合、マイグレーション・プロセスは、マイグレーション元コンピュータ３１５ｓからマイグレーション先仮想マシン４１５ｔ（ハイパーバイザ４０５ｔ上で実行され、ハイパーバイザ４０５ｔは、さらにデプロイメント・エージェント４３５ｔを実行する）へのものである。
【００４７】
上述のように、サーバ・コンピュータ１１０は、デプロイメント・マネージャ３０５と情報をやりとりするためにオペレータ３１３によって使用されるブラウザ３１２とともに、（ソフトウェア・イメージ３１０のリポジトリを管理する）デプロイメント・マネージャ３０５を実行する。通常通り、選択されたソフトウェア・イメージ３１０が、デプロイメント・マネージャ３０５の制御の下でマイグレーション元コンピュータ３１５ｓにデプロイされる（アクション「Ａ５０１．デプロイ」）。
【００４８】
この時点で、本発明の実施形態によるソリューションにおいては、オペレータ３１３は、（デプロイメント・マネージャ３０５上で）マイグレーション・プロセスのためのマイグレーション元コンピュータ３１５ｓおよびマイグレーション先仮想マシン４１５ｔを選択する（アクション「Ａ５０２．マイグレーション」）。それに応じて、デプロイメント・マネージャ３０５は、リモート・アクセス・サーバ３３０ｓおよびデプロイメント・エージェント３３５ｓを含む最小限のオペレーティング・システム３２５ｓを提供するために、ネットワークを介してマイグレーション元コンピュータ３１５ｓを強制的にブートすることによってマイグレーション元コンピュータ３１５ｓを（必要に応じて）オフにし、それからオンにする（アクション「Ａ５０３．ネットワーク・ブート」）。デプロイメント・エージェント３３５ｓは、リモート・アクセス・サーバ３３０ｓを通じたマイグレーション元ディスク３４５ｓのリモート・アクセスを可能にするために（すなわち、問題としている例においてはｉＳＣＳＩターゲットとして）マイグレーション元ディスク３４５ｓを準備する。デプロイメント・エージェント３３５ｓは、今や、マイグレーション元コンピュータ３１５ｓの平常動作を可能にするために通常通りにマイグレーション元コンピュータ３１５ｓをオフにし、それからオンにすることができる（アクション「Ａ５０４．準備」）。
【００４９】
この時点で、デプロイメント・エージェント３３５ｓは、対応するメッセージをデプロイメント・マネージャ３０５に送信することによってマイグレーション先仮想マシン４１５ｔへの転送アクションをトリガする（アクション「Ａ５０５．トリガ」）。それに応じて、デプロイメント・マネージャ３０５は、デプロイメント・エージェント４３５ｔに、ブートストラップ仮想ディスク４３７をダウンロードするように命令する。次に、デプロイメント・エージェント４３５ｔは、マイグレーション先仮想マシン４１５ｔを（必要に応じて）オフにし、ブートストラップ仮想ディスク４３７を指すようにマイグレーション先仮想ディスク４４５ｔのブート・セクタ（例えば、ＭＢＲ）を変更する。次いで、デプロイメント・エージェント４３５ｔは、−デプロイメント・エージェント４３５ｔｖを含む最小限のオペレーティング・システム４２５ｔを提供するために−マイグレーション先仮想マシン４１５ｔをオンにし、それによって、マイグレーション先仮想マシン４１５ｔがブートストラップ仮想ディスク４３７からブートするようにする（アクション「Ａ５０６．ネットワーク・ブート」）。デプロイメント・エージェント４３５ｔｖは、リモート・アクセス・サーバ３３０ｓを通じてマイグレーション元仮想ディスク３４５ｓにリモートでアクセスするためにマイグレーション元仮想ディスク３４５ｓをアクセス・オン・コピー・モードのリモート・ディスクとして（すなわち、問題としている例においてはｉＳＣＳＩイニシエータとして働くことによって）マウントする（アクション「Ａ５０７．マウント」）。デプロイメント・エージェント４３５ｔｖは、マイグレーション元仮想ディスク３４５ｓのブートストラップ・プログラム３５０ｓがマイグレーション先仮想ディスク４４５ｔに対応するブートストラップ・プログラム４５０ｔとしてコピーされるようにするように、（対応するデプロイメント・エージェントおよびストリーミング・ドライバを含む）マイグレーション元仮想ディスク３４５ｓのブートストラップ・プログラム３５０ｓにアクセスする（アクション「Ａ５０８．コピー」）。
【００５０】
この時点で、デプロイメント・エージェント４３５ｔは、ブートストラップ仮想ディスク４３７を削除することができる。デプロイメント・エージェント４３５ｔは、マイグレーション先仮想マシン４１５ｔをマイグレーション先仮想ディスク４４５ｔからローカルでブートするために、マイグレーション先仮想マシン４１５ｔをオフにし、それからオンにする（アクション「Ａ５０９．ローカル・ブート」）。そのようにして提供されるマイグレーション先仮想マシン４１５ｔのための完全な動作環境は、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む（アクション「Ａ５１０．ストリーミング」）。
【００５１】
最後に、図１３において、仮想−物理（Ｖ２Ｐ）タイプのマイグレーション・プロセスの例示的な実装が示される。このマイグレーション・プロセスを実装するために使用され得るソフトウェア・コンポーネントは、全体として参照番号６００によって表される。この場合、マイグレーション・プロセスは、マイグレーション元仮想マシン４１５ｓ（ハイパーバイザ４０５ｓ上で実行され、ハイパーバイザ４０５ｓは、さらにリモート・アクセス・サーバ４３０ｓおよびデプロイメント・エージェント４３５ｓを実行する）からマイグレーション先コンピュータ３１５ｔへのものである。
【００５２】
上述のように、サーバ・コンピュータ１１０は、デプロイメント・マネージャ３０５と情報をやりとりするためにオペレータ３１３によって使用されるブラウザ３１２とともに、（ソフトウェア・イメージ３１０のリポジトリを管理する）デプロイメント・マネージャ３０５を実行する。通常通り、選択されたソフトウェア・イメージ３１０が、デプロイメント・マネージャ３０５の制御の下でマイグレーション元仮想マシン４１５ｓにデプロイされる（アクション「Ａ６０１．デプロイ」）。
【００５３】
この時点で、本発明の実施形態によるソリューションにおいては、オペレータ３１３は、（デプロイメント・マネージャ３０５上で）マイグレーション・プロセスのためのマイグレーション元仮想マシン４１５ｓおよびマイグレーション先コンピュータ３１５ｔを選択する（アクション「Ａ６０２．マイグレーション」）。それに応じて、デプロイメント・マネージャ３０５は、デプロイメント・エージェント４３５ｓにマイグレーション元仮想マシン４１５ｓを（必要に応じて）オフにするように命令する。デプロイメント・エージェント４３５ｓは、リモート・アクセス・サーバ４３０ｓを通じたマイグレーション元仮想ディスク４４０ｓのリモート・アクセスを可能にするために（すなわち、問題としている例においてはそのマイグレーション元仮想ディスク４４５ｓをｉＳＣＳＩターゲットとして定義することによって）マイグレーション元仮想ディスク４４０ｓを準備する。デプロイメント・エージェント４３５ｓは、ここで、マイグレーション元仮想マシン４１５ｓの平常動作を可能にするためにマイグレーション元仮想マシン４１５ｓをオンにすることができる（アクション「Ａ６０４．準備」）。
【００５４】
この時点で、デプロイメント・エージェント４３５ｓは、対応するメッセージをデプロイメント・マネージャ３０５に送信することによってマイグレーション先コンピュータ３１５ｔへの転送アクションをトリガする（アクション「Ａ６０５．トリガ」）。それに応じて、デプロイメント・マネージャ３０５は、デプロイメント・エージェント３３５ｔを含む最小限のオペレーティング・システム３２５ｔを提供するために、ネットワークを介してマイグレーション先コンピュータ３１５ｔを強制的にブートすることによってマイグレーション先コンピュータ３１５ｔを（必要に応じて）オフにし、それからオンにする（アクション「Ａ６０６．ネットワーク・ブート」）。デプロイメント・エージェント３３５ｔは、リモート・アクセス・サーバ４３０ｓを通じてマイグレーション元仮想ディスク４４５ｓにリモートでアクセスするためにマイグレーション元仮想ディスク４４５ｓをアクセス・オン・コピー・モードのリモート・ディスクとして（すなわち、問題としている例においてはｉＳＣＳＩイニシエータとして働くことによって）マウントする（アクション「Ａ６０７．マウント」）。デプロイメント・エージェント３３５ｔは、マイグレーション元仮想ディスク４４５ｓのブートストラップ・プログラム４５０ｓがマイグレーション先ディスク３４５ｔに対応するブートストラップ・プログラム３５０ｔとしてコピーされるようにするように、（対応するデプロイメント・エージェントおよびストリーミング・ドライバを含む）マイグレーション元仮想ディスク４４５ｓのブートストラップ・プログラム４５０ｓにアクセスする（アクション「Ａ６０８．コピー」）。
【００５５】
この時点で、デプロイメント・エージェント３３５ｔは、マイグレーション先コンピュータ３１５ｔをマイグレーション先ディスク３４５ｔからローカルでブートするために、通常マイグレーション先コンピュータ３１５ｔをオフにし、それからオンにする（アクション「Ａ６０９．ローカル・ブート」）。そのようにして提供されるマイグレーション先コンピュータ３１５ｔのための完全なオペレーティング・システムは、任意のメモリ・ブロックへのアクセスのそれぞれの要求を処理し、そのメモリ・ブロックを−以下で詳細に説明されるように−ストリーミングで提供するストリーミング・ドライバを含む（アクション「Ａ６１０．ストリーミング」）。
【００５６】
上述のストリーミング・プロセスを説明するために、ここで、本発明の実施形態によるソリューションの実装に関連する作業のフローを示すアクティビティ図を示す図１４に対する参照がなされ、特に、アクティビティ図は、方法７００による例示的なストリーミング・プロセスを示す。
【００５７】
方法７００は、マイグレーション先クライアント（すなわち、マイグレーション先コンピュータまたはマイグレーション先仮想マシン）のファイル・システム・ドライバのスイムレーン内の黒い開始の円７０３で始まり、次いで、（例えば、アプリケーション・プログラムから）メモリ・ブロックへのアクセス（すなわち、読み取り）の要求が受信されるとすぐにブロック７０６に進む。それに応じて、ブロック７０９において、ファイル・システム・ドライバが、その要求をストリーミング・ドライバに渡す。
【００５８】
ストリーミング・ドライバのスイムレーンに移ると、ブロック７１２において、要求されたブロックがマイグレーション先（物理または仮想）ディスクにおいて利用可能であるかどうかを判定する検証がなされ、そのために、ストリーミング・ドライバが、この情報を（例えば、各メモリ・ブロックが利用できるかどうかを示す−例えば、５１２バイトの−各メモリ・ブロックに関するビットを含むビットマップで）記憶するロケーション・マップ（location map）にアクセスする。次に、作業のフローは、ブロック７１５において、この検証の結果にしたがって枝分かれする。メモリ・ブロックがマイグレーション先ディスクにおいて利用可能でない（すなわち、ロケーション・マップ内のそのメモリ・ブロックのビットがデアサートされている）場合、ブロック７１８において、ストリーミング・ドライバが、（問題としている例においてはｉＳＣＳＩイニシエータとして働く）リモート・アクセス・ドライバにメモリ・ブロックを要求する。ブロック７２１に進み、リモート・アクセス・ドライバが、マイグレーション元クライアント（すなわち、マイグレーション元コンピュータまたはマイグレーション元仮想マシン）のリモート・アクセス・サーバ−問題としている例においてはマイグレーション元（物理または仮想）ディスクをｉＳＣＳＩターゲットとして提供する−に対応するダウンロード要求を送る。それに応答して、ブロック７２４において、リモート・アクセス・サーバが、マイグレーション先クライアントのリモート・アクセス・ドライバに要求されたメモリ・ブロックを返す。次に、ブロック７２７において、リモート・アクセス・ドライバが、そのようにダウンロードされたメモリ・ブロックをストリーミング・ドライバに返す。ここでブロック７３０を参照すると、ストリーミング・ドライバが、このメモリ・ブロックをマイグレーション先ディスクに記憶し、それに合わせて、そのメモリ・ブロックが利用可能であることを示すために（すなわち、対応するビットをアサートすることによって）ロケーション・マップを更新する。再びブロック７１５を参照すると、メモリ・ブロックがマイグレーション先ディスクにおいて既に利用可能である（すなわち、そのメモリ・ブロックのビットがアサートされている）場合、方法７００は、ブロック７３３へと下り、ブロック７３３において、メモリ・ブロックが、マイグレーション先ディスクから直接取得される。いずれの場合も、作業のフローは、ブロック７３６において（ブロック７３０か、またはブロック７３３かのどちらかから）合流し、このフェーズにおいて、ストリーミング・ドライバが、ファイル・システム・ドライバにメモリ・ブロックを返す。そして今度は、ブロック７３９において、ファイル・システム・ドライバが、要求元のアプリケーション・プログラムにメモリ・ブロックを返す。同時に、ストリーミング・ドライバのスイムレーンのブロック７４２において、（マイグレーション元ディスクのサイズに対応する事前に定義された数の）マイグレーション元ディスクのすべてのメモリ・ブロックがマイグレーション先ディスクにおいて利用可能である（すなわち、ロケーション・マップ内の対応するビットがアサートされている）かどうかを検証するためのテストが、行われる。利用可能である場合、ブロック７４５において、ストリーミング・ドライバが無効化され、その結果、あらゆるメモリ・ブロックの読み取りのすべての次の要求は通常通りにファイル・システム・ドライバによって直接処理され、逆に言えば、いかなるアクションも実行されない。ファイル・システム・ドライバのスイムレーンに戻って、メモリ・ブロックが書き込みのためにやはり要求された場合、要求は、ブロック７４８において、ファイル・システム・ドライバによって直接処理され、具体的には、ここで、ファイル・システム・ドライバが、メモリ・ブロックを（そのメモリ・ブロックがそのメモリ・ブロックの読み取りの後に必ず利用可能である）マイグレーション先ディスクに書き込む。
【００５９】
完全に非同期的に、ブロック７５１において、ストリーミング・ドライバが、マイグレーション先クライアント、マイグレーション元クライアント、またはネットワーク、あるいはそれらすべての負荷を周期的に（例えば、１０〜１００ｍｓごとに）検証し、負荷が事前に定義された閾値未満である（対応するリソースが−例えば、マイグレーション先クライアントまたはマイグレーション元クライアントあるいはその両方でアクションが実行されておらず、ネットワークのトラフィックが低いために−今のところ十分に利用されていないことを示す）場合、作業のフローは、ブロック７５４に進む。このフェーズにおいて、ストリーミング・ドライバは、上述の同じ動作を繰り返すことによって、マイグレーション先ディスクにおいてまだ利用可能でないメモリ・ブロック（例えば、ロケーション・マップ内のビットがデアサートされている最初のメモリ・ブロック）をダウンロードする。簡潔に言えば、対応する要求が、リモート・アクセス・ドライバに送られ、ブロック７５７において、リモート・アクセス・ドライバが、その要求をマイグレーション元クライアントのリモート・アクセス・サーバに渡す。ブロック７６０において、マイグレーション元クライアントのリモート・アクセス・サーバが、要求されたメモリ・ブロックをマイグレーション先ディスクのリモート・アクセス・ドライバに返し、そして今度は、ブロック７６３において、リモート・アクセス・ドライバが、そのメモリ・ブロックをストリーミング・ドライバに返す。ここでブロック７６６を参照すると、ストリーミング・ドライバが、このメモリ・ブロックをマイグレーション先ディスクに記憶し、それに合わせて、そのメモリ・ブロックが利用可能であることを示すためにロケーション・マップを更新する。ここで、ブロック７６９において、マイグレーション元ディスクのすべてのメモリ・ブロックがマイグレーション先ディスクに記憶されているかどうかを検証するためのテストが、行われる。記憶されている場合、ブロック７７２において、ストリーミング・ドライバが無効化されるが、記憶されていない場合は、いかなるアクションも実行されない。どちらの場合も、次に、方法７００は、（ブロック７７２か、またはブロック７６９かのどちらかから）同心の白／黒の停止の円７７５において終了する。
【００６０】
当然ながら、ローカルの具体的な要件を満足するために、当業者は、上述のソリューションに対して、多くの論理的または物理的あるいはその両方の修正および変更を適用する可能性がある。より具体的には、このソリューションがこのソリューションの１つまたは複数の実施形態を参照してある程度の具体性を持って説明されたが、形態および詳細のさまざまな省略、置き換え、および変更、ならびにその他の実施形態が（例えば、プロセスのパラメータに関して）あり得ることを理解されたい。特に、本発明のさまざまな実施形態は、それらの実施形態のより完全な理解をもたらすために上記の説明で述べられた特定の詳細（数値例など）なしに実施される可能性さえあり、逆に、よく知られている特徴は、不必要に詳細であることによって説明を曖昧にしないために省略されたか、または簡略化された可能性がある。さらに、開示されたソリューションの任意の実施形態に関連して説明された特定の要素または方法のステップあるいはその両方は、全体的な設計の選択の問題として、任意のその他の実施形態に組み込まれる可能性があることがはっきりと意図される。
【００６１】
例えば、同様の考えが、同じソリューションが（より多くのステップもしくはその一部のステップからなる同じ機能を有する同様のステップを用いること、必須ではない一部のステップを削除すること、またはさらなる任意的なステップを追加することによって）均等な方法によって実施される場合に当てはまり、さらに、それらのステップは、（少なくとも部分的に）異なる順序で、同時に、またはインターリーブされるようにして実行される可能性がある。
【００６２】
さらに、マイグレーションされるべきマイグレーション元ディスクは、任意のソフトウェア・プログラム（例えば、アプリケーション・プログラムを持たずにオペレーティング・システムだけを）含む可能性がある。いずれにせよ、マイグレーション・プロセスは、ソフトウェア・イメージがマイグレーション元クライアントにどのように（例えば、手動で）デプロイされたかとまったく無関係であり、さらに広く言えば、マイグレーション・プロセスは、デプロイメント・マネージャを有するいかなるサーバ・コンピュータもない簡略化されたシステムで実装される可能性もある。同様に、任意のその他の方法で（マイグレーション元ディスクがアクセス・オン・コピー・モードでマウントされないときに専用の動作さえも用いて）プライマリ・ブートストラップ・プログラムをマイグレーション元ディスクからマイグレーション先ディスクにコピーすることがあり得る。当然、ダウンロードされるべきマイグレーション元ディスクのメモリ・ブロックは、任意のその他の情報を含む可能性があり、または任意のその他のサイズを有する可能性があり、あるいはその両方である可能性があり、加えて、（メモリ・ブロックの起こり得る使用の前にそれらのメモリ・ブロックをマイグレーション先ディスクにダウンロードし、記憶することによって）メモリ・ブロックのプリフェッチを実施することもあり得る。任意の均等な構造が、（例えば、ロケーション・マップをマイグレーション先コンピュータの作業メモリにロードすることを可能にするためにロケーション・マップをチャンクに分割することによって）ストリーミング機能を提供するため、およびマイグレーション先ディスクにおいてメモリ・ブロックが利用できるかどうかを管理するために使用される可能性がある。
【００６３】
上述のケースは例示的であるに過ぎず、それらのケースは限定的に解釈されるべきでなく、例えば、マイグレーション・プロセスは、互いに異なってさえいる任意の種類のハイパーバイザ（例えば、ＥＳＸとＫＶＭ）上で実行される仮想マシンの間のものである可能性がある。
【００６４】
あるいは、マイグレーション先ディスクへのメモリ・ブロックの書き込みもストリーミング・ドライバによって管理することがあり得る。
【００６５】
ストリーミング・ドライバを無効化することに関して異なる条件（例えば、マイグレーション先ディスクの事前に定義された領域が書き込まれたとき）が想定され得るが、ストリーミング・ドライバを（例えば、ロケーション・マップ内の対応するビットのリセットに応じてメモリ・ブロックの最新のバージョンをダウンロードするために）常にアクティブに維持することを妨げるものは何もない。
【００６６】
負荷は、任意のその他の周期で、または特定の期間中に（例えば、夜間に）だけ監視される可能性があり、同様の考えが、負荷がマイグレーション元クライアント、マイグレーション先クライアント、ネットワーク、またはそれらの任意の組み合わせに関してのみ監視される場合に当てはまる。さらに、負荷に関する閾値は、任意のその他の方法で（例えば、異なる重みでその負荷の寄与を重み付けすることによって）定義され得る。同様の考えが、負荷が閾値未満になるときに２つ以上のメモリ・ブロックが同時にダウンロードされる場合に当てはまる。いずれにせよ、この特徴は、任意的であるに過ぎず、簡素な実装においては省略され得る。
【００６７】
マイグレーション先コンピュータのための最小限のオペレーティング・システムは、任意の均等な予備的ブートストラップ・プログラム（例えば、ＢａｒｔＰＥ）からそのマイグレーション先コンピュータをブートすることによって提供される可能性がある。その上、所望の結果が、（例えば、ＲＩＰＬ、ｇＰＸＥ、ＰＸＥＬｉｎｕｘなどに基づく）異なるネットワーク・ブート・プロシージャを用いて、またはさらに別の方法で（例えば、ネットワーク・ブートＣＤから手動でマイグレーション先コンピュータをブートすることによって）達成される可能性もある。
【００６８】
同様の考えが、マイグレーション先仮想マシンのブートに当てはまり、いずれにせよ、マイグレーション先コンピュータの最小限のオペレーティング・システムを提供するための同じ技術（すなわち、ネットワークを介したそのマイグレーション先コンピュータのブート）をマイグレーション先仮想マシンにも適用することが可能である。
【００６９】
いかなる場合も、異なる方法で（例えば、取り外し可能なストレージ・デバイスからブート仮想ディスクをロードすることによって）ブート仮想ディスクを提供することを妨げるものは何もない。
【００７０】
同様に、マイグレーション元コンピュータのための最小限のオペレーティング・システムは、任意の均等な予備的ブートストラップ・プログラム（例えば、ＢａｒｔＰＥ）からそのマイグレーション元コンピュータをブートすることによって提供される可能性がある−マイグレーション元ディスクは、その最小限のオペレーティング・システムに含まれる任意のその他のモジュールによって準備される可能性がある。
【００７１】
その上、所望の結果が、（例えば、ＲＩＰＬ、ｇＰＸＥ、ＰＸＥＬｉｎｕｘなどに基づく）異なるネットワーク・ブート・プロシージャを用いて、またはさらに別の方法で（例えば、ネットワーク・ブートＣＤから手動でマイグレーション元コンピュータをブートすることによって）達成される可能性もある。
【００７２】
あるいは、マイグレーション元ディスクは、マイグレーション元コンピュータのハイパーバイザ上で実行される任意のその他のモジュールによって準備される可能性があり、いずれにせよ、マイグレーション元コンピュータのマイグレーション元ディスクを準備するための（すなわち、最小限のオペレーティング・システムを用いてそのマイグレーション元コンピュータをブートすることに基づく）同じ技術をマイグレーション元仮想マシンにも適用することが可能である。
【００７３】
同様の考えが、（本発明の各実施形態を実装するために使用され得る）プログラムが異なる方法で構築される場合、または追加的なモジュールもしくは機能が提供される場合に当てはまり、同様に、メモリの構造は、その他のタイプである可能性があり、または（必ずしも物理的なストレージ媒体で構成されるとは限らない）均等なエンティティによって置き換えられる可能性がある。プログラムは、任意のデータ処理システムによって、または任意のデータ処理システムに関連して（例えば、仮想マシン内で）使用されるのに好適な任意の形態をとる可能性があり、特に、プログラムは、（オブジェクト・コードか、または−例えば、コンパイルもしくは解釈されるべき−ソース・コードかのいずれかの）外部または常駐ソフトウェア、ファームウェア、またはマイクロコードの形態である可能性がある。さらに、プログラムを任意のコンピュータが使用可能な媒体に実装された製品として提供することが可能であり、媒体は、プログラムを包含、記憶、伝達、伝播、または転送するのに好適な任意の要素である可能性がある。例えば、媒体は、電子式、磁気式、光学式、電磁式、赤外線式、または半導体式である可能性があり、そのような媒体の例は、（プログラムが予めロードされる可能性がある）固定式ディスク、取り外し可能なディスク、テープ、カード、電線、ファイバ、無線接続、ネットワーク、放送波などである。いずれにせよ、本発明の実施形態によるソリューションは、（例えば、半導体材料のチップに集積された）ハードウェア構造を用いるとしても、または別の方法で構成された好適にプログラムされたソフトウェアとハードウェアの組み合わせを用いるとしても、実装されるのに適している。
【００７４】
あるいは、システムは、異なる構造を有するか、もしくは均等なコンポーネントを含み、またはシステムは、その他の有効な特徴を有する。いずれにせよ、システムのあらゆるコンポーネントがより多くの要素に分けられる可能性があり、または２つ以上のコンポーネントが単一の要素にまとめられる可能性があり、さらに、各コンポーネントが、対応する動作の並列的な実行をサポートするために複製される可能性がある。概して、異なるコンポーネントの間の任意のインタラクションは、（別途指定されない限り）連続的である必要はなく、直接的であるか、または１つまたは複数の媒介手段を通じて間接的であるかのどちらかである可能性があることも指摘される。特に、マイグレーション・プロセスは、異なるアーキテクチャ（例えば、広域、グローバル、セルラ、または衛星ネットワーク）に基づき、任意の種類の（有線または無線あるいはその両方の）接続を利用するシステムでやはり実施され得る。いずれにせよ、各コンピュータは、別の構造を有する可能性があり、または（プログラムもしくはその一部を一時的に記憶するキャッシュメモリなどの）同様の要素を含む可能性があり、さらに、コンピュータを（ＰＤＡ、携帯電話などの）任意のコードを実行するエンティティまたは複数のエンティティの組み合わせで置き換えることが可能である。
【図１】
0005907983.tif 000002
【図２】
0005907983.tif 000003
【図３】
0005907983.tif 000004
【図４】
0005907983.tif 000005
【図５】
0005907983.tif 000006
【図６】
0005907983.tif 000007
【図７】
0005907983.tif 000008
【図８】
0005907983.tif 000009
【図９】
0005907983.tif 000010
【図１０】
0005907983.tif 000011
【図１１】
0005907983.tif 000012
【図１２】
0005907983.tif 000013
【図１３】
0005907983.tif 000014
【図１４】
0005907983.tif 000015