JP5911504B2 - ストリーミング技術に基づくソフトウェア・イメージのアップグレード - Google Patents

ストリーミング技術に基づくソフトウェア・イメージのアップグレード Download PDF

Info

Publication number
JP5911504B2
JP5911504B2 JP2013542437A JP2013542437A JP5911504B2 JP 5911504 B2 JP5911504 B2 JP 5911504B2 JP 2013542437 A JP2013542437 A JP 2013542437A JP 2013542437 A JP2013542437 A JP 2013542437A JP 5911504 B2 JP5911504 B2 JP 5911504B2
Authority
JP
Japan
Prior art keywords
memory
block
software image
memory block
target software
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.)
Active
Application number
JP2013542437A
Other languages
English (en)
Other versions
JP2013545204A (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 JP2013545204A publication Critical patent/JP2013545204A/ja
Application granted granted Critical
Publication of JP5911504B2 publication Critical patent/JP5911504B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明の1つ又は複数の実施形態による解決法は、データ処理分野に関する。より具体的には、この解決法は、ソフトウェア・イメージのマイグレーションに関する。
ソフトウェア・イメージのマイグレーションは、現代のデータ処理システムにおいて一般的な活動であり、概して言えば、ソフトウェア・イメージとは、コンピュータの大容量メモリ(mass memory)上にインストールされたソフトウェア・モジュール(例えば、そのオペレーティング・システム、アプリケーション・プログラム、及び/又はデータ)を含む構造である。例えば、典型的なシナリオは、コンピュータをリフレッシュして、そのオペレーティング・システムを新しいバージョンにアップグレードすることである。
コンピュータ上に現在インストールされているオペレーティング・システム(ソース・オペレーティング・システムと呼ばれる)から、別のオペレーティング・システム(ターゲット・オペレーティング・システムと呼ばれる)への移行を目的とする標準的なマイグレーション手順は、一般に、以下のステップを要する。最初に、コンピュータのスナップショットを取り、これを外部デバイス(例えば、取り外し可能ディスク又は遠隔サーバ)に格納する。次いで、マイグレーション・ツールを実行して、コンピュータの構成情報を収集する(この構成情報もまた、外部デバイスに格納される)。この時点で、ターゲット・オペレーティング・システムをコンピュータ上にインストールすることが可能になる。次いで、マイグレーション・ツールを再び実行し、格納された構成情報をターゲット・オペレーティング・システムに適用する。ターゲット・オペレーティング・システムにおいて何らか問題に直面した場合には(例えば、コンピュータの誤操作)、ソース・オペレーティング・システムのスナップショットをコンピュータ上に復元して、その元の状態に戻す。
しかしながら、上述したマイグレーションの手順には、幾つかの欠点がある。
具体的には、マイグレーション手順は、非常に低速である。実際は、ターゲット・オペレーティング・システムのインストールには(30−60分のオーダーの)長い時間がかかり、この間、コンピュータは完全に利用不能となる。さらに、ソース・オペレーティング・システムの復元もまた、必要な場合には長い時間がかかる(その間、同様にコンピュータは利用不能となる)。ソース・オペレーティング・システムのスナップショットを取るためにさらなる時間も費やされ、この操作は、常に、ターゲット・オペレーティング・システムをインストールする前に実施しなければならない(問題が起こった場合にソース・オペレーティング・システムを復元できるようにするため)。
マイグレーション手順はまた、ソース・オペレーティング・システムを格納するために(外部デバイス上に)大規模なストレージ空間も必要とし、構成情報を格納するために更なるストレージ空間が必要である。
加えて、ひとたびターゲット・オペレーティング・システムがコンピュータ上にインストールされると、マイグレーション・ツールにより収集されなかった(例えば、忘れられたため)いずれの構成情報も失われる。従って、もはやこの構成情報を復旧することができない。実際は、その構成情報にアクセスする唯一の可能性は、ソース・オペレーティング・システムのスナップショットを復元することであるが、この作業には非常に時間がかかるため、実際には、ほとんど実施されていない。逆に、このようなことが起こった場合、無くなった構成情報を手作業で適用しようと試みるのが一般的な方法である。しかしながら、この作業では間違い及び/又は見落としが非常に起こりやすい。
特許文献1は、代わりに、イン・プレース型(in-place)マイグレーション・プロセスを記載する。この目的のために、構成情報を保存するのに必要とされるストレージ空間を推定し、構成情報を格納するのに十分になるように、コンピュータのハード・ディスク内に空きストレージ空間を作成する。次いで、ターゲット・ソフトウェア・イメージをコンピュータ上にインストールする(例えば、ブート可能なCD又はネットワーク・ブート・イメージを用いて)。この時点で、構成情報を、空きストレージ空間からターゲット・ソフトウェア・イメージに復元することが可能である。
このことにより、例えばネットワーク・サーバ上に構成情報を格納する必要をなくすことが可能になり、このようにして、マイグレーション・プロセスを、複数のコンピュータ上で並行して進行させることができる。さらに、構成情報のマイグレーションは、ネットワーク接続なしでも実施することができる。しかしながら、本文書に説明される方法には、上記で指摘した他の全ての欠点がある。
米国特許US−B−6,920,555号明細書
データ処理エンティティを、データ処理エンティティの大容量メモリ上にインストールされたソース・ソフトウェア・イメージから、外部ソース上に格納されたターゲット・ソフトウェア・イメージにマイグレートするための方法を提供する。
大まかに言えば、本発明の1つ又は複数の実施形態による解決法は、マイグレーション・プロセスの際に大容量メモリの元のコンテンツを保持するという考えに基づいている。
特定的には、本発明の特定の実施形態による解決法の1つ又は複数の態様は独立請求項において示されており、同じ解決法の有利な特徴が従属請求項に示されており、その表現は、本明細書において一語一句たがわず引用により組み込まれる(本発明の実施形態による解決法の特定の態様を参照して提供されるあらゆる有利な特徴は、そのあらゆる他の態様に準用して適用される)。
より具体的には、本発明の実施形態による解決法の一態様は、データ処理エンティティ(例えば、コンピュータなど)を、データ処理エンティティの大容量メモリ(mass memory)上にインストールされたソース・ソフトウェア・イメージから、外部ソース(例えば、遠隔イメージ・リポジトリ)上に格納されたターゲット・ソフトウェア・イメージにマイグレートするための方法を提供する。各々のソフトウェア・イメージは複数のメモリ・ブロックを含み、各々のメモリ・ブロックは、ソフトウェア・イメージ内に対応するイメージ・アドレスを有する。大容量メモリは、各々がメモリ・ブロックを格納するための複数のメモリ位置を含み、メモリ位置は、大容量メモリ内に対応するメモリ・アドレスを有する。本方法は、以下のステップを含む。大容量メモリの部分を解放する(例えば、ソース・ソフトウェア・イメージを縮小することによって)。ターゲット・ソフトウェア・イメージのブート位置に格納されたメモリ・ブロックを解放された部分内に再配置し、ブート位置は、データ処理エンティティをブートして、(外部ソースからターゲット・ソフトウェア・イメージをダウンロードするように適合された)ストリーミング機能をロードするために必要とされるメモリ・ブロックを含む、ターゲット・ソフトウェア・イメージのブート・ブロックのイメージ・アドレスと等しいメモリ・アドレスを有するメモリ位置である。ブート・ブロックが、対応するブート位置に格納される。データ処理エンティティは、対応するブート位置におけるブート・ブロックからブートされる(それにより、ストリーミング機能がロードされる)。ストリーミング機能によって、ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを読み出す各要求を実行し、ストリーミング機能は、大容量メモリにおいて選択されたメモリ・ブロックが利用可能でない場合には、外部ソースから選択されたメモリ・ブロックをダウンロードし、かつ、解放された部分内に選択されたメモリ・ブロックを格納し、又は、他の場合には、大容量メモリから選択されたメモリ・ブロックを取り出す。
本発明の実施形態による解決法の更に別の態様は、コンピュータ・プログラムがデータ処理システム上で実行されるときに、データ処理システムに、本方法のステップを実施させるためのコード手段を含む、コンピュータ・プログラムを提供し、本発明の実施形態による解決法の更に別の態様は、コンピュータ・プログラムを具体化する、非一時的コンピュータ可読媒体を含む、コンピュータ・プログラム製品を提供し、このコンピュータ・プログラムは、データ処理システムの作業メモリ内に直接ロード可能なコード手段を含むことにより、本方法を実施するようにデータ処理システムを構成する。
本発明の実施形態による解決法の別の態様は、上述の方法のステップを実施するための手段を含むシステムを提供する。
本発明の1つ又は複数の実施形態による解決法、並びにその更なる特徴及び利点は、添付図面と共に読まれるべき、純粋に非制限的な表示によって与えられる、以下の詳細な説明を参照することによって最も良く理解されるであろう(ここでは、簡単にするために、対応する要素は同一又は類似の参照記号により示され、その説明は繰り返されず、さらに各エンティティの名前はそのタイプ及び属性の両方、例えば、その値、コンテンツ及び表現などを示すために一般的に用いられる)。
本発明の実施形態による解決法が適用可能なコンピュータの概略的なブロック図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。 本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図を示す。 本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図を示す。 本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図を示す。 本発明の実施形態による準備プロセスを実施するのに用いることができる主要ソフトウェア・コンポーネントの役割を表す協調図を示す。
特に図1を参照すると、本発明の実施形態による解決法が適用可能な、コンピュータ100の概略的なブロック図が示される。コンピュータ100(例えば、PC)は、システム・バス105に並列接続された幾つかのユニットにより形成される。詳細には、1つ又は複数のマイクロプロセッサ(μP)110はコンピュータ100の動作を制御し、RAM115は、マイクロプロセッサ110によって作業メモリとして用いられ、ROM120は、コンピュータ100の基本コードを格納する。ローカル・バス125の周りに(それぞれのインターフェースによって)幾つかの周辺ユニットが集まっている。特定的には、大容量メモリは、1つ又は複数のハード・ディスク130と、光ディスク140(例えば、DVD又はCD)を読み出すためのドライブ135とを含む。さらに、コンピュータ100は、入力ユニット145(例えば、キーボード及びマウスなど)と、出力ユニット150(例えば、モニタ及びプリンタなど)とを含む。アダプタ155は、コンピュータ100をネットワーク(図には示されない)と接続するために用いられる。ブリッジ・ユニット160は、システム・バス105をローカル・バス125とインターフェース接続する。各マイクロプロセッサ110及びブリッジ・ユニット160は、情報を伝送するためにシステム・バス105へのアクセスを要求するマスター・エージェントとして機能することができる。仲裁手段(arbiter)165が、システム・バス105に対する相互排除(mutual exclusion)によりアクセスの許可を管理する。
本発明の実施形態による解決法は、コンピュータ100上にインストールされたソフトウェア・イメージをマイグレートするために用いられる(例えば、そのオペレーティング・システムを新しいバージョンにアップグレードするために)。一般に、各々のソフトウェア・イメージは、1つ又は複数のソフトウェア・モジュール(例えば、オペレーティング・システム、アプリケーション・プログラム、及び/又はデータ)を含み、ソフトウェア・イメージは、ソフトウェア・イメージ内の対応するアドレス(イメージ・アドレスと呼ばれる)を有するメモリ・ブロック(例えば、各々が1−10MBの)の組により形成される。
より具体的には、本発明の実施形態による解決法の例示的なアプリケーションの一般的な概要を表す協調図が、図2−図8に示される。協調図は、関与する主要ソフトウェア・コンポーネントの役割を示し、特定的には、(その全体が参照記号200によって示される)その静的構造及び(記号「A」で始まる連続的なシーケンス番号によって示される、各々が対応する動作を表す一連の交換メッセージによって)動的挙動を示すものである。
図2から始めると、ソース・ソフトウェア・イメージ205sがハード・ディスク130上にインストールされ、ソース・ソフトウェア・イメージ205sは、図示されないハード・ディスク130の1つ又は複数の論理パーティション(例えば、1次ブート可能パーティション及び可能な付加的パーティション)を含む。ハード・ディスク130は、各々がメモリ・ブロックを格納するための、ハード・ディスク130内に(メモリ・アドレスと呼ばれる)対応するアドレスを有するメモリ位置の組に編成される。ソース・ソフトウェア・イメージ205sは、ソース・オペレーティング・システム210sと、配置(deployment)エージェント215(以下に説明される)とを含み、これらは、少なくとも部分的に作業メモリ115内にロードされる。
コンピュータ100のユーザ220は、コンピュータ100を、例えば遠隔イメージ・リポジトリなどの外部ソース上で利用可能なターゲット・ソフトウェア・イメージ225にマイグレートする要求を配置エージェント215に提出する(動作「A1:マイグレート」)。これに応答して、配置エージェント215は、例えばソース・オペレーティング・システム210sの組み込み関数を利用することにより、ソース・ソフトウェア・イメージ205sを縮小する(動作「A2:縮小」)。
その結果、図3に示されるように、ハード・ディスク130の部分230が解放される。この時点で、配置エージェント215は、(ブート・アドレスと呼ばれる、対応するイメージ・アドレスによって識別される)ターゲット・ソフトウェア・イメージ225のブート・ブロックの組をダウンロードし、ターゲット・ソフトウェア・イメージ225のブート・ブロックは、以下に述べられる、配置エージェントのストリーミング・ドライバをロードしようとして、ターゲット・ソフトウェア・イメージ225のブート・シーケンスを始動させるのに必要とされるメモリ・ブロックを含む(動作「A3:ダウンロード」)。次いで、配置エージェント215は、(ターゲット・ソフトウェア・イメージ225のブート・アドレスと等しいメモリ・アドレスを有する)ターゲット・ソフトウェア・イメージ225のブート位置に格納される、ソース・ソフトウェア・イメージ205sのメモリ・ブロックを、再配置されたメモリ位置235sと呼ばれる、解放された部分230の対応するメモリ位置に再配置する(動作「A4:再配置」)。ここで、配置エージェント215は、暗灰色で識別され、かつ、参照記号240tで示されるターゲット・ソフトウェア・イメージ225のブート・ブロックを、そのブート位置に格納することができる。このように、ハード・ディスク130において、ブート・ブロック240tは、ターゲット・ソフトウェア・イメージ225のブート・シーケンスの際に見出されることが期待されるまさにその場所に配置される。それにも関わらず、オーバーライドされる対応するメモリ・ブロックは再配置されたメモリ位置235s内に保存されているため、このことはソース・ソフトウェア・イメージ205sにおけるいかなる情報の損失ももたらさない。(動作「A5:格納」)。この時点で、配置エージェント215は、コンピュータ100の電源をオフにしてからオンにし、コンピュータ100を、そのブート位置におけるターゲット・ソフトウェア・イメージ225のブート・ブロック240tから再ブートする(動作「A6:再ブート」)。
従って、図4に示されるように、そのブート・ブロック240tに対応する、ターゲット・ソフトウェア・イメージ225のターゲット・オペレーティング・システム210tの部分、及び、配置エージェント215のストリーミング・ドライバが、作業メモリ115内にロードされる。次いで、配置エージェント215は、ソース・ソフトウェア・イメージ205sのユーザの構成を、コンピュータ100上にインストールされているターゲット・ソフトウェア・イメージ225に転送し、例えば、ソース・ソフトウェア・イメージ205sの構成情報を、(ターゲット・オペレーティング・システム210t内にマウントされた)ハード・ディスク130から収集し、次いで、ターゲット・ソフトウェア・イメージ225のローカル・バージョンに適用する、即ち、対応するメモリ・ブロックにおいて、解放された部分230に書き込む(動作「A7:転送」)。ここで、コ(ターゲット・ソフトウェア・イメージ225のローカル・バージョンを実行する)ンピュータ100は、ストリーミング・ドライバによるストリーミングの際に提供されたターゲット・ソフトウェア・イメージ225のあらゆるメモリ・ブロックと共に、正常に使用することができ、この目的のために、以下に詳細に説明されるように、ストリーミング・ドライバは、メモリ・ブロックを、利用可能な場合はハード・ディスク130から取り出すこと、又は、他の場合には外部ソースからダウンロードする(同時に、これを解放された部分230に格納する)ことにより読み出し、いずれの場合にも、メモリ・ブロックを解放された部分230に格納することにより、これに書き込む。次いで、ユーザ220は、コンピュータ100が正しく動作するかどうかを検証するために、ターゲット・ソフトウェア・イメージ225のローカル・バージョンによりコンピュータ100を広範にテストすることができる(動作「A8:ストリーミング」)。
ここで図5を参照すると、ユーザ220がターゲット・ソフトウェア・イメージ225のローカル・バージョンによるコンピュータ100の動作に満足すると、ユーザ220は、対応する要求を配置エージェント215に提出することにより、マイグレーションをコミットする(動作「A9:コミット」)。これに応答して、配置エージェント215は、(利用可能な場合は解放された部分230から、又は、他の場合には外部ソースから)ターゲット・ソフトウェア・イメージ225のローカル・バージョンの全てのメモリ・ブロックを、対応するイメージ・アドレスと等しいメモリ・アドレスを有する、ハード・ディスク130内の実際のメモリ位置にコピーする(動作「A10:コピー」)。
従って、図6に示されるように、ここで、(参照記号205tで示される)ターゲット・ソフトウェア・イメージのローカル・バージョンが、ソース・ソフトウェア・イメージをオーバーライドすることにより、ハード・ディスク130上に完全にインストールされる。ここで、コンピュータ100は、ターゲット・ソフトウェア・イメージ205tから再ブートし、正常に動作することができる(動作「A11:再ブート」)。
逆に、図7に示されるように、ユーザが、ターゲット・ソフトウェア・イメージ225のローカル・バージョンによるコンピュータ100の動作に満足しない場合、ユーザは、対応する要求を配置エージェント215に提出することにより、ソース・ソフトウェア・イメージ205sにロール・バックすることができる(動作「A12:ロール・バック」)。これに応答して、配置エージェント215は、再配置された位置235sから、ソース・ソフトウェア・イメージ205sのメモリ・ブロックをターゲット・ソフトウェア・イメージ225のブート位置に復元する(動作「A13:復元」)。次いで、配置エージェント215は、ソース・ソフトウェア・イメージ205sを拡大して、その元のサイズに復元し、これにより、解放された部分230に格納されたターゲット・ソフトウェア・イメージ225のメモリ・ブロックをオーバーライドする(動作「A14:拡大」)。この時点で、配置エージェント215は、コンピュータ100の電源をオフにしてからオンにする。
従って、図8に示されるように、コンピュータ100はソース・ソフトウェア・イメージ205sから再ブートし、これにより、再びソース・オペレーティング・システム210sをロードする(動作「A15:再ブート」)。
上述した解決法により、コンピュータは、非常に短時間のうちに、即ち、ブート・ブロックがハード・ディスク内に格納された直後に(例えば、10−200メガバイトの典型的なサイズのブート・ブロックについては1−2分後)、ターゲット・ソフトウェア・イメージと共に使用可能状態になり、その後、ハード・ディスクにおけるターゲット・ソフトウェア・イメージの他のメモリ・ブロックが利用可能かどうかに関係なく、コンピュータの動作は完全に正常であり(通常通りハード・ディスクから直接ブートされる)、依然として外部ソースからダウンロードされるメモリ・ブロックにコンピュータがアクセスする際、コンピュータの性能が僅かに低下するだけである(性能の低下は、一度メモリ・ブロックにアクセスできると、ますます多くのメモリ・ブロックが既にハード・ディスク上で利用可能であるため、時間の経過と共に低減する)。さらに、コンピュータを使用可能状態にするのに必要とされる時間は、ターゲット・ソフトウェア・イメージのサイズに依存しない。
このマイグレーション手順は、いずれの付加的なストレージ空間も必要としない。実際は、ソース・ソフトウェア・イメージは、ハード・ディスク上に留まるので、ターゲット・ソフトウェア・イメージへの適用のために、その構成情報を直接ハード・ディスクから収集することができる。
さらに、ソース・ソフトウェア・イメージは、ユーザがターゲット・ソフトウェア・イメージへのマイグレーションのコミットを決定するまで、そのままの形で保持される。従って、ターゲット・ソフトウェア・イメージは、依然として、ソース・ソフトウェア・イメージの構成情報にアクセス可能である(マイグレーションがコミットされるまで)。このように、(開始時に忘れられていた場合でも)ターゲット・ソフトウェア・イメージを用いたコンピュータのテストの際のいずれかの時点で、何らかの構成情報を(ソース・ソフトウェア・イメージから)収集し、(ターゲット・ソフトウェア・イメージに)適用することが可能であり、これにより、マイグレーション・プロセスの際に何らかの構成情報が失われるリスクが回避されるか又は少なくとも実質的に低減される。
上述した解決法はまた、ソース・オペレーティング・システムが依然としてハード・ディスク上で利用可能であるため、(必要な場合に)ソース・オペレーティング・システムを非常に短時間で復元することを可能にし、実際に、この操作は、(ターゲット・ソフトウェア・イメージのブート・ブロックを格納するために)再配置されたソース・ソフトウェア・イメージのメモリ・ブロックを復元することしか必要としない。さらに、この解決法は、問題が起こった場合に復元するために、前もってソース・ソフトウェア・イメージの何らかのスナップショットを取っておく必要がない(これに対応して、時間が節約される)。
ここで図9−図11を参照すると、マイグレーション・プロセスが方法300により表される、本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図が示される。
方法300は、開始黒丸302で開始し、次いで、ユーザが、コンピュータをターゲット・ソフトウェア・イメージにマイグレートする要求を(配置エージェントに)提出するとすぐに、ブロック304に移る。これに応答して、ブロック306において、配置エージェントは、ソース・ソフトウェア・イメージを縮小し、ハード・ディスクの部分を解放し、例えば、この結果は、まだいずれのファイルにも割り当てられていない未使用のストレージ空間を復旧することにより、又は、一時ファイルを削除することにより、(ソース・オペレーティング・システムの組み込み関数を用いて)達成することができる。ブロック308に進むと、配置エージェントは、(ターゲット・ソフトウェア・イメージと関連して内部に指定されたように)外部ソースから、ターゲット・ソフトウェア・イメージのブート・ブロックをダウンロードする。例えば、Microsoft Windowsにおいて、ブート・ブロックは、(ストリーミング・ドライバに加えて)マスター・ブート記録(Master Boot Record、MBR)と、ブート・セクタと、bootmgr.exeファイルと、boot\bcdファイルと、システム・レジストリと、winload.exeファイルと、システム・レジストリにおいて指定されるドライバ・ファイルとを含む。この目的のために、ターゲット・ソフトウェア・イメージが遠隔サーバのイメージ・リポジトリ内に格納されている場合、配置エージェントは、Internet Small Computer System Interface(iSCSI)プロトコルなどに基づいて、遠隔サーバの遠隔アクセス・サーバと対話する遠隔アクセス・イニシエータとして働くことができる。
ここでブロック310を参照すると、配置エージェントは、ターゲット・ソフトウェア・イメージのブート位置に格納されたソース・ソフトウェア・イメージのメモリ・ブロックを、解放された部分内に再配置する。特定的には、ターゲット・ソフトウェア・イメージのブート位置に格納されたメモリ・ブロックを連続的に読み出し、解放された部分の最初のメモリ位置に、同じ順序でコピーする。
引き続きブロック312に進むと、配置エージェントは、ストリーミング・ドライバのための制御構造で、解放された部分を初期化する。この目的のために、配置エージェントはブロック・マップを作成し、このブロック・マップは、ターゲット・ソフトウェア・イメージの各メモリ・ブロックを、それが格納されるハード・ディスクにおけるメモリ位置(最初に、ターゲット・ソフトウェア・イメージのメモリ・ブロックがハード・ディスクにおいて利用可能でないことを示す)と関連付けるために用いられる。特定的には、解放された部分(より正確には、メモリ位置及び制御構造の再配置後の有用な部分)が、ターゲット・ソフトウェア・イメージ全体を格納できるサイズを有する場合、これは、ターゲット・ソフトウェア・イメージのためのローカル・リポジトリとして機能することができる。この場合、ブロック・マップはビットマップとすることができ、ビットマップは、ターゲット・ソフトウェア・イメージの各イメージ・アドレスについてのエントリを有し、このエントリは、対応するメモリ・ブロックが、解放された部分内の同じ位置(即ち、イメージ・アドレスに、ハード・ディスク内の解放された部分の有用な部分のオフセットを加えたものと等しいメモリ・アドレスを有するメモリ位置)に格納されているかどうかを示す可用性フラグを含み、最初に、全ての可用性フラグは、(対応するメモリ・ブロックが解放された部分内に格納されていないことを示すように)デアサートされている。逆に、解放された部分が、ソフトウェア・イメージ全体を格納することができないサイズを有する場合、これは、ターゲット・ソフトウェア・イメージのためのローカル・キャッシュとして機能することができる。この場合、ブロック・マップは、ルックアップ・テーブルとすることができ、このルックアップ・テーブルは、解放された部分の有用な部分の各メモリ位置のメモリ・アドレスについてのエントリを有し、このエントリは、内部に格納されたターゲット・ソフトウェア・イメージのメモリ・ブロックのイメージ・アドレスと、メモリ・ブロックが(外部ソースにおける元のバージョンに対して)更新されたかどうかを示す更新フラグとを含み、最初に、ルックアップ・テーブルの全てのエントリは、(解放された部分内にメモリ・ブロックが格納されていないことを示すための)ヌル(null)値と等しいイメージ・アドレスを有する。さらに、配置エージェントは、ターゲット・ソフトウェア・イメージのブート・アドレスを指定する、ブート・リストを作成する。配置エージェントはまた、以下に説明されるような(最初はゼロに設定されている)コピー・カウンタも作成し、このコピー・カウンタは、マイグレーションがコミットされた後にハード・ディスク内の正しい位置にコピーされたターゲット・ソフトウェア・イメージの最後のメモリ・ブロックのイメージ・アドレスを指定する。ここでブロック314に移ると、配置エージェントは、ターゲット・ソフトウェア・イメージのブート・ブロックを、そのブート位置に格納する(ブート・リスト内に示されるように)。
ブロック316において、配置エージェントはコンピュータの電源をオフにしてからオンにし、コンピュータが、そのブート位置におけるターゲット・ソフトウェア・イメージのブート・ブロックから再ブートするようにする。実際に、電源オンのときに実行される、コンピュータのファームウェア内に格納されるブート・ローダ、例えば基本入力/出力システム(Basic Input/Output System、BIOS)などが、ハード・ディスクをブート可能なデバイスとして識別し、従って、BIOSはMBRをロードし、MBRはブート・セクタをロードし、ブート・セクタはbootmgr.exeファイルを見つけて始動し、bootmgr.exeファイルはboot\bcdを見つけて読み出し、システム・レジストリ、winload.exeファイル、及びシステム・レジスタにおいて指定されたドライバ・ファイルのメモリ位置を判断し、次にこれらをロードし、次いで、winload.exeファイルは、配置エージェントのストリーミング・ドライバを始動し、(以下に説明されるように、ターゲット・ソフトウェア・イメージのいずれかのメモリ・ブロックにアクセスするあらゆる要求に応えるために)ターゲット・オペレーティング・システムの標準的なファイル・システム・ドライバをオーバーライドする。引き続きブロック318に進むと、配置エージェントは、(ハード・ディスクにアクセスし、次いでソース・ソフトウェア・イメージにアクセスするのを可能にするように)ターゲット・オペレーティング・システムからコンピュータ上にハード・ディスクをマウントする。
この時点で、配置エージェントは、ソース・ソフトウェア・イメージのユーザの構成をターゲット・ソフトウェア・イメージに転送し、例えば、ソース・ソフトウェア・イメージのユーザの構成は、設定(オペレーティング・システム又はアプリケーション・プログラムの外観及び挙動に関するものなど)、及び/又はデータ(周辺ドライバ、クッキー、及びアドレス帳など)を含む。この目的のために、ブロック320において、配置エージェントは、適切なマイグレーション・ツール、例えばWindowsにおけるUserState Migration Tool(USMT)のScanState.exeプログラムを実行することにより、ソース・ソフトウェア・イメージの構成情報を収集する。この場合、対応するイメージ・アドレスにおいてソース・ソフトウェア・イメージのメモリ・ブロック(それぞれ、構成メモリ・ブロック及び構成イメージ・アドレスと呼ばれる)を読み出す(マイグレーション・ツールによる)各要求について、ブロック322において、ストリーミング・ドライバは、構成メモリ・ブロックが解放された部分内に再配置されているかどうかを検証する(即ち、構成イメージ・アドレスが、そのブート・リスト内に示される、ターゲット・ソフトウェア・イメージのブート・アドレスの1つと等しい場合)。再配置されている場合、ブロック324において、ストリーミング・ドライバは、対応する再配置されたメモリ位置を指し示すように、構成イメージ・アドレスを更新する。次いで、方法300は、ブロック326に下り、構成メモリ位置が再配置されていない場合には、ブロック322からも直接同じ時点に到達する。この時点で、ストリーミング・ドライバは、(更新された可能性がある)構成イメージ・アドレスと等しいメモリ・アドレスを有するメモリ位置から、構成メモリ・ブロックを取り出す。引き続きブロック328に進むと、ストリーミング・ドライバは、(問題となっている例におけるUSMTのLoadState.exeプログラムを実行することにより)収集した構成情報をターゲット・ソフトウェア・イメージに適用し、この目的のために、ストリーミング・ドライバは、ターゲット・ソフトウェア・イメージの対応するメモリ・ブロックをハード・ディスク内に書き込む(以下に説明されるように)。
ここで、(ターゲット・ソフトウェア・イメージを実行して)コンピュータ100を正常に使用することができる。特定的には、方法300は、(対応する選択されたイメージ・アドレスにおける)ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを読み出す要求が(例えば、アプリケーション・プログラムから)ターゲット・オペレーティング・システムに提出されるとすぐに、ブロック330に下る。読み出し要求は、選択されたメモリ・ブロックがハード・ディスク上で既に利用可能になっているかどうかを検証するブロック332において、ストリーミング・ドライバに渡される。この目的のために、ストリーミング・ドライバは、最初に、選択されたイメージ・アドレスを(ブート・リスト内に示されるような)ターゲット・ソフトウェア・イメージのブート・アドレスと比較して、選択されたメモリ・ブロックがブート・ブロックであるかどうか、そして、常に対応するブート位置に格納されているかどうかを判断する。ブート・ブロックでない場合、ストリーミング・ドライバは、選択されたイメージ・アドレスをコピー・カウンタと比較して、選択されたイメージ・アドレスがコピー・カウンタと等しいか又はこれを上回るかどうかを判断し、次に、選択されたメモリ・ブロックが既にハード・ディスク内の正しい位置にコピーされている(以下に説明されるように、マイグレーションがコミットされた後で)。逆に、異なる操作が、解放された部分の動作モードに従って実施される。特定的には、解放された部分がローカル・リポジトリとして動作する場合、ストリーミング・ドライバは、ビットマップ内の対応する可用性フラグを取り出し、選択されたメモリ・ブロックが解放された部分内に格納されているか又は格納されていないかを判断し(それぞれ、可用性フラグがアサートされる場合又はデアサートされる場合)、一方、解放された部分がローカル・キャッシュとして動作する場合は、ストリーミング・ドライバは、ルックアップ・テーブルにおいて選択されたイメージ・アドレスを探し、選択されたメモリ・ブロックが解放された部分内に格納されているか又は格納されていないかを判断する(それぞれ、選択されたイメージ・アドレスが見つかった場合又は見つからない場合)。次いで、アクティビティの流れは、検証の結果に従ってブロック334で分岐する。
選択されたメモリ・ブロックがハード・ディスクにおいて利用可能でない場合、ブロック336において、ストリーミング・ドライバは、選択されたメモリ・ブロックを外部ソースからダウンロードする。方法300は、ここで、解放された部分の動作モードに従って、代替的に実行される2つの分岐に分かれる。特定的には、解放された部分がローカル・リポジトリとして動作する場合、ブロック338において、ストリーミング・ドライバは、選択されたメモリ・ブロックを、解放された部分の対応するメモリ位置(選択されたイメージ・アドレスにそのオフセットを加えたものに等しいメモリ・アドレスを有する)に格納し、同時に、ビットマップにおける対応する可用性フラグがアサートされる(選択されたメモリ・ブロックが、今やハード・ディスクにおいて利用可能であることを示すために)。逆に、解放された部分がローカル・キャッシュとして動作する場合、ブロック340において、ストリーミング・ドライバは、解放された部分内の空きメモリ位置(即ち、ヌル値と等しい、ルックアップ・テーブルにおける対応するイメージ・アドレスを有する)を探す。ブロック342に下り、空きメモリ位置が利用可能でない場合、ブロック344において、ストリーミング・ドライバは、解放された部分のメモリ位置を削除(evict)し、削除されることになるメモリ位置は、情報のいかなる損失も回避するように、外部ソースからダウンロードされた後に更新されていないメモリ・ブロックを格納するもの(対応する更新フラグのデアサートにより示されるような)の中からのみ、例えば、最長時間未使用(Least Recently Used、LRU)アルゴリズムに従って選択される。次いで、方法300は、ブロック346に下り、空きメモリ位置が見つかった場合には、ブロック342からも直接同じ時点に到達する。この時点で、ストリーミング・ドライバは、選択されたメモリ・ブロックを、解放された部分の最初の空きメモリ位置に格納し、同時に、ルックアップ・テーブルにおいて、対応するエントリが、選択されたイメージ・アドレスに設定され(今や選択されたメモリ・ブロックが内部で利用可能であることを示すために)、対応する更新フラグがデアサートされる(選択されたメモリ・ブロックが更新されていないことを示すために)。
ブロック334に戻ると、代わりに、選択されたメモリ・ブロックがハード・ディスクにおいて(対応するブート・ブロックにおいて、ハード・ディスク内の正しい位置において、又は解放された部分において)利用可能である場合、方法は、ブロック348に下る。この段階において、ストリーミング・ドライバは、選択されたメモリ・ブロックをハード・ディスクから取り出す。特定的には、選択されたメモリ・ブロックがブート・ブロックである(即ち、選択されたイメージ・アドレスが、ブート・リスト内に示されるブート・アドレスの1つである)場合、選択されたメモリ・ブロックは、(選択されたイメージ・アドレスと等しいメモリ・アドレスを有する)対応するブート位置から取り出される。同様に、選択されたメモリ・ブロックが既にハード・ディスク内の正しい位置にコピーされている(即ち、選択されたイメージ・アドレスがコピー・カウンタを下回る)場合、選択されたメモリ・ブロックは、(選択されたイメージ・アドレスと等しいメモリ・アドレスを有する)その正しい位置から取り出される。代わりに、選択されたメモリが解放された部分内に格納されている場合、選択されたメモリ・ブロックは、選択されたイメージ・アドレスに解放された部分のオフセットを加えたものに等しいメモリ・アドレスを有する、解放された部分におけるメモリ位置から取り出される(解放された部分がローカル・リポジトリとして動作する場合)か、又は、選択されたイメージ・アドレスを格納するルックアップ・テーブルのエントリと関連したメモリ・アドレスを有するメモリ位置から取り出される(解放された部分がローカル・キャッシュとして動作する場合)。いずれの場合も、アクティビティの流れは、ブロック338、ブロック346、又はブロック348から、ブロック350において合流し、この時点で、ストリーミング・ドライバは、選択されたメモリ・ブロックをファイル・システム・ドライバに戻し、ファイル・システム・ドライバは、次にそれをアプリケーション・プログラムに戻す。
方法300は、代わりに、(対応する選択されたイメージ・アドレスにおける)ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを書き込む要求が、(例えば、アプリケーション・プログラムから)ターゲット・オペレーティング・システムに提出されるとすぐに、ブロック352に下る。ブロック354において、書き込み要求は、ストリーミング・ドライバに渡され、ストリーミング・ドライバは、選択されたメモリ・ブロックが、上記のようにハード・ディスク上で既に利用可能であるかどうかを検証する。次いで、ブロック356において、アクティビティの流れは、検証の結果に従って分岐する。
選択されたメモリ・ブロックがハード・ディスクにおいて利用可能でない場合、ストリーミング・ドライバは、上述した同じ操作を繰り返すことにより、選択されたメモリ・ブロックをハード・ディスク内に格納する。特定的には、解放された部分がローカル・リポジトリとして動作する場合、ブロック358において、ストリーミング・ドライバは、選択されたメモリ・ブロックを、(選択されたイメージ・アドレスにそのオフセットを加えたものに等しいメモリ・アドレスを有する)解放された部分の対応するメモリ位置に格納し、同時に、ビットマップにおける対応する可用性フラグがアサートされる。逆に、解放された部分がローカル・キャッシュとして動作する場合、ブロック360において、ストリーミング・ドライバは、解放された部分における空きメモリ位置を探す。ブロック362に下り、空きメモリ位置が見つからない場合、ブロック364において、ストリーミング・ドライバは、(更新されていないメモリ・ブロックを格納するものの中で)解放された部分のメモリ位置を削除する。次いで、方法300は、ブロック366に下り、空きメモリ位置が見つからない場合、ブロック362からも直接同じ時点に到達する。この時点で、ストリーミング・ドライバは、選択されたメモリ・ブロックを解放された部分の最初の空きメモリ位置に格納し、同時に、ルックアップ・テーブルにおいて、対応するエントリが選択されたイメージ・アドレスに設定され、対応する更新フラグがデアサートされる。
ブロック356に戻ると、代わりに、選択されたメモリ・ブロックがハード・ディスクにおいて利用可能である場合、方法は、ブロック368に下る。この段階において、ストリーミング・ドライバは、選択されたメモリ・ブロックを対応するメモリ位置に格納する。特定的には、選択されたメモリ・ブロックがブート・ブロックである(即ち、選択されたイメージ・アドレスが、ブート・リスト内に示されるブート・アドレスの1つである)場合、選択されたメモリ・ブロックは、(選択されたイメージ・アドレスと等しいメモリ・アドレスを有する)対応するブート位置に格納される。同様に、選択されたメモリ・ブロックが既にハード・ディスク内の正しい位置にコピーされている(即ち、選択されたイメージ・アドレスがコピー・カウンタを下回る)場合、選択されたメモリ・ブロックは、(選択されたイメージ・アドレスと等しいメモリ・アドレスを有する)その正しい位置に格納される。代わりに、選択されたメモリが解放された部分内に格納されている場合、選択されたメモリ・ブロックは、選択されたイメージ・アドレスに解放された部分のオフセットを加えたものに等しいメモリ・アドレスを有する、解放された部分におけるメモリ位置に格納される(解放された部分がローカル・リポジトリとして動作する場合)か、又は、選択されたイメージ・アドレスを格納するルックアップ・テーブルのエントリと関連したメモリ・アドレスを有するメモリ位置に格納される(解放された部分がローカル・キャッシュとして動作する場合)。
次いで、(即時使用のためにのみコンピュータ上にダウンロードされる、ソフトウェア・イメージをオン・デマンドで提供するための当技術分野において周知のストリーミング技術とは違って)このストリーミング技術は、可能な限り多くのターゲット・ソフトウェア・イメージのメモリ・ブロックをハード・ディスク上に格納することに向けられる。さらに、解放された部分がローカル・リポジトリとして動作する場合、ダウンロードされたメモリ・ブロックは、(それらの使用後、コンピュータの電源がオフにされたときにも消滅することなく)ハード・ディスク上に永続的に格納されるため、次に使用するためにそれらを再びダウンロードする必要はない。
ここで、ターゲット・ソフトウェア・イメージへのマイグレーションをコミットする要求が配置エージェントに提出されると、方法300は、(ブロック358、ブロック366、又はブロック368から合流することにより)、ブロック370に下る。これに応答して、ブロック372において、配置エージェントは、(例えば、バックアップのために)ソース・ソフトウェア・イメージのスナップショットを取ることができる。この目的のために、ソース・ソフトウェア・イメージのあらゆるメモリ・ブロックがハード・ディスクから取り出され、特定的には、メモリ・ブロックが再配置されていない場合は対応するメモリ位置から、又は、他の場合には対応する再配置されたメモリ位置から、メモリ・ブロックが取り出される。次いで、メモリ・ブロックは、外部デバイス(例えば、取り外し可能ディスク)上に格納される。従って、この場合、実際に必要とされ得る場合にのみ、ソース・ソフトウェア・イメージのスナップショットを取ることが可能である。
次いで、ターゲット・ソフトウェア・イメージの各メモリ・ブロックについて、ループが実施される。ループは、上述のようなストリーミング・ドライバは、対応する現在のイメージ・アドレス(コピー・カウンタに1を加えたものに等しい)におけるターゲット・ソフトウェア・イメージの現在のメモリ・ブロックが、ハード・ディスク上で(この場合は、ブート位置又は解放された部分においてのみ)既に利用可能であるかどうかを検証する、ブロック374で開始する。次いで、ブロック376において、アクティビティの流れは、検証の結果に従って分岐する。
現在のメモリ・ブロックがハード・ディスクにおいて利用可能でない場合、ブロック378において、ストリーミング・ドライバは、外部ソースから現在のメモリ・ブロックをダウンロードする。逆に、アクティビティの流れは、ブロック376からブロック380に下る。この時点で、現在のメモリ・ブロックがブート・ブロックでない場合、ブロック382において、ストリーミング・ドライバは、それを解放された部分から取り出し、特定的には、現在のメモリ・ブロックは、現在のイメージ・アドレスに解放された部分のオフセットを加えたものに等しいメモリ・アドレスを有するメモリ位置から取り出される(解放された部分がローカル・リポジトリとして動作する場合)か、又は、現在のイメージ・アドレスを格納するルックアップ・テーブルのエントリと関連したメモリ・アドレスを有するメモリ位置から取り出される(解放された部分がローカル・キャッシュとして動作する場合)。次いで、方法300は、ブロック378又はブロック382から、ブロック384に下る。この段階において、現在のメモリ・ブロックは、(現在のイメージ・アドレスと等しいメモリ・アドレスを有する)正しいメモリ位置にコピーされ、次いで、コピー・カウンタが1だけ増加され、同時に、解放された部分がローカル・キャッシュとして動作する場合、(そのイメージ・アドレスをヌル値に設定することにより)ルックアップ・テーブルにおける対応するエントリが削除される。ここで、アクティビティの流れはブロック386に移り、現在のメモリ・ブロックがブート・ブロックである場合、いずれの操作も実施することなく、ブロック380からも直接同じ時点に到達する(これが正しい位置に既に格納されているので)。ここで、ターゲット・ソフトウェア・イメージの全てのメモリ・ブロックが処理されたかどうかを検証するために、テストが行われる。処理されていない場合、アクティビティの流れはブロック372に戻り、ターゲット・ソフトウェア・イメージの次のメモリ・ブロックに対して同じ操作を繰り返す。逆に、配置エージェントがストリーミング・ドライバをディスエーブルにする(同じく、これをターゲット・ソフトウェア・イメージのブート・シーケンスから取り除く)、ブロック388に下ることによってループが終了する。この時点で、ブロック390において、配置エージェントはコンピュータの電源をオフにしてからオンにし、(もはや外部ソースを必要とせずに)コンピュータを、その正常な動作のために、ターゲット・ソフトウェア・イメージから再ブートする。
このコピー手順は、コンピュータの動作に対して実質的に不透明であるように、バックグラウンドで実施することができ、このようにして、コンピュータは、ターゲット・ソフトウェア・イメージのあらゆるメモリ・ブロックが内部にコピーされた後、今やその正しい位置においてメモリ・ブロックにアクセスされるという相違点だけを有した状態で、正常に作業を継続することができる。より具体的には、ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロック(対応する選択されたイメージ・アドレスにおける)にアクセスする(読み出す又は書き込む)要求がオペレーティング・システムに提出されると、そのアクセス要求は、再びストリーミング・ドライバに渡され、ストリーミング・ドライバは、選択されたメモリ・ブロックが既にコピーされている(即ち、選択されたイメージ・アドレスがコピー・カウンタを下回るか又はこれと等しい)かどうかを検証する。コピーされている場合には選択されたイメージ・アドレスと等しいメモリ・アドレスを有するメモリ位置において、選択されたメモリ・ブロックにアクセスされ、他の場合には上述したものと同じ操作を繰り返すことにより、選択されたメモリ・ブロックが読み出される又は書き込まれる。
例えば、コンピュータの作業負荷に応じて、コピー手順の操作を繰り返すことができる。この目的のために、コンピュータの作業負荷が監視され(例えば、10−100msごとに)、(例えば、現在のところ、いずれの操作も実施されていないために)コンピュータの作業負荷が所定の閾値を下回る場合、上述した操作を繰り返すことにより、ターゲット・ソフトウェア・イメージの1つ又は複数のメモリ・ブロックがコピーされる。このように、コンピュータの操作に与えるコピー手順の影響を最小にすることが可能である。その結果、(コンピュータの再ブートしか必要としないため)ターゲット・ソフトウェア・イメージへの実際の切り換えが非常に高速になる。
代替的に、方法300は、代わりに、ひとたびソース・ソフトウェア・イメージをロール・バックする要求が配置エージェントに提出されると、(ブロック358、ブロック366、又はブロック368から)ブロック392に下る。これに応答して、ブロック394において、配置エージェントは、(再配置されたメモリ位置からこれらを連続的に読み出し、かつ、ブート・リスト内に示されるように、ターゲット・ソフトウェア・イメージの対応するブート位置に同じ順序でコピーすることにより)ソース・ソフトウェア・イメージのメモリ・ブロックを、再配置された位置からターゲット・ソフトウェア・イメージのブート位置に復元する。次いで、ブロック396において、配置エージェントは、(例えば、再び、ソース・オペレーティング・システムの組み込み関数を利用することにより)ソース・ソフトウェア・イメージを拡大してその元のサイズに復元し、次いで、ターゲット・ソフトウェア・イメージのいずれかのメモリ・ブロックをオーバーライドする。この時点で、ブロック398において、配置エージェントはコンピュータの電源をオフにしてからオンにし、コンピュータを、その正常な動作のためにソース・ソフトウェア・イメージから再ブートするようにする。
どちらの場合も、方法300は、(ブロック390又はブロック398のいずれかから到達する)同心の白色及び黒色の停止円399で終了する。
上述した解決法は、あらゆるソフトウェア・イメージのブート・ブロックの知識を必要とする。この目的のために、例えば、これに応じて、ソフトウェア・イメージを準備することが可能である。この点に関して、本発明の実施形態による解決法に用いられる一般的なソフトウェア・イメージの準備プロセスを実施するのに用いることができる主要ソフトウェア・コンポーネント(全体に参照記号400として示される)の役割を表す協調図を示す、図12への参照がなされる。
準備プロセスは、(それぞれ、参照記号415s及び430sにより示される、その作業メモリ及び大容量メモリを有する)サーバ・コンピュータ405sを含むシステムにおいて実施される。サーバ・コンピュータ405sは、配置マネージャ435、例えば、IBMコーポレーションによるIBM Tivoli Provisioning Manager for OS Development(又は、TPM for OSD)のIBM Tivoli Provisioning Manager for Images(又はTPMfI)などを実行する(IBM及びTivoliは、IBMコーポレーションの商標である)。配置マネージャ435は、マスター・ソフトウェア・イメージ(又は単にマスター・イメージ)440のリポジトリを管理し、各々のマスター・イメージ440は、対応するソフトウェア・イメージの基本バージョン(例えば、以前にインストールされている、ドナー・コンピュータのハード・ディスクのコンテンツを捕捉することにより作成された)を提供し、ここで、ドナー・コンピュータのいずれかの構成に関する特定のコンテンツは取り除かれている(例えば、ドライバ及びレジストリ設定)。サーバ・コンピュータ405sはまた、モデル445のリポジトリを含み、各々のモデル445は、代わりに、ソフトウェア・イメージを配置する必要があるコンピュータの対応する構成についての特定のコンテンツを含む。さらに、配置マネージャ435は、データの遠隔アクセスを可能にするために、(例えば、iSCSIプロトコルに基づいて)遠隔アクセス・サーバ450と対話する。
操作者455は、対応する補助コンピュータ405aにより表される、コンピュータの特定のタイプに対するソフトウェア・イメージ(選択されたマスター・イメージ440及び選択されたモデル445を含む)を選択する(動作「B1:選択」)。補助コンピュータ405a(それぞれ、参照記号415a及び430aで示される、その作業メモリ及び大容量メモリを有する)は、配置マネージャ435との対話のために、配置エージェント460を実行する。これに応答して、配置マネージャ435は、選択されたソフトウェア・イメージの識別子を送ることにより、補助コンピュータ405a上の配置エージェント460をウェークアップする(動作「B2:ウェークアップ」)。その結果、配置エージェント460は、遠隔アクセス・サーバ450を通じて遠隔的にアクセスするための遠隔ディスクとして(即ち、問題となる例におけるiSCSIイニシエータとして働くことによって)、選択されたソフトウェア・イメージをマウントする。その結果、補助コンピュータ405aによる排他的アクセスのための一時的ソフトウェア・イメージ(又は、単に一時的イメージ)465が作成され、一時的イメージ465は、単に選択されたマスター・イメージ440及び選択されたモデル445のメモリ・ブロックを指し示すインデックス構造によって、つまり、そのコピーを作成することなく、定められる。一時的イメージ465は、イネーブルにされたブロック追跡機能とともにマウントされ、アクセスされる一時的イメージ465のあらゆるメモリ・ブロックのイメージ・アドレスを追跡する(動作「B3:マウント」)。
この時点で、配置エージェント460は、(配置エージェントのロードまでの)一時的イメージ465上の補助コンピュータ405aのブート・シーケンスをシミュレートする。例えば、Microsoft Windowsにおいて、配置エージェント460は、MBRと、ブート・セクタと、bootmgr.exeファイルと、boot\bcdファイルと、システム・レジストリと、winload.exeファイルと、システム・レジストリにおいて指定されるドライバ・ファイルと、ストリーミング・ドライバとを読み出す(動作「B4:シミュレートされたブート」)。シミュレートされたブート・シーケンスが完了すると、配置エージェント460は、一時的イメージ465をアンマウントする(動作「B5:アンマウント」)。次いで、配置エージェント460は、一時的イメージ465を配置マネージャ435にコミットする(動作「B6:コミット」)。これに応答して、配置マネージャ435は、(単にそのインデックス構造によって定められる)一時的イメージ465から新しいソフトウェア・イメージ(又は単に新しいイメージ)470を構築する。さらに、新しいイメージ470は、シミュレートされたブート手順の間にアクセスされたメモリ・ブロックのリストと関連付けられ、このメモリ・ブロックは対応するブート・ブロックを定める(動作「B7:構築」)。
当然ながら、ローカル及び特定の要求を満たすために、当業者は、上述の解決法に多くの論理的及び/又は物理的な修正及び改変を適用することができる。より具体的には、この解決法は、その1つ又は複数の実施形態を参照して、ある程度詳細に説明されているが、(例えば数値に関して)その形及び細部における様々な省略、置換及び変更、並びに他の実施形態が可能であることを理解すべきである。特に、本発明のより完全な理解を提供するために先の記載に示されている特定の詳細なしに、本発明の異なる実施形態が実施されてもよい。反対に、不必要な詳細によって説明を分かりにくくしないために、周知の特徴が省略又は簡略化されていることがある。さらに、開示される解決法のあらゆる実施形態と関連して記載される特定の要素及び/又は方法ステップは、一般的な設計選択の問題として、他のいずれの実施形態にも組み込まれてもよいことが明確に意図されている。
例えば(より多くのステップ若しくはその部分と同じ機能を有する類似のステップを用いること、必須でない幾つかのステップを除去すること、又はさらなる随意的なステップを付加することによって)同じ解決法が同等の方法によって実施される場合も、類似の考察が適用される。さらに、これらのステップは(少なくとも部分的に)異なる順序で行われても、同時に又は交互に行われてもよい。
ソフトウェア・イメージは、あらゆるソフトウェア・プログラム(例えば、何らかのアプリケーション・プログラムを有さないオペレーティング・システムのみ)を含むことができる。同様に、メモリ・ブロックは、いずれの種類の情報(例えば、1つ又は複数のセクタ、ファイル、ライブラリ、ディレクトリ、それらの組み合わせ又はそれらの部分)を含むことができる。さらに、ターゲット・ソフトウェア・イメージは、いずれかの同等の外部ソース(例えば、取り外し可能なストレージ・デバイス)から提供することができる。いずれの場合も、提案される技術は、異なるオペレーティング・システムをインストールするため、コンピュータを同じオペレーティング・システムの旧バージョンにダウングレードするため、災害復旧のためにコンピュータのスナップショットを復元するため、又は他のいずれかの理由のために用いることができる。
同じ技術を、いずれかのブート・シーケンスを有する、他のいずれかのオペレーティング・システムに適用することもできる。例えば、Linux(Linus Torvaldsの商標である)において、ブート・ブロックは、GRBUブート・ローダを含むMBRと、カーネル及びinitrdファイル・システムを含む/bootディレクトリとを含む。この場合、ブート・シーケンスの際に、BIOSがGRBUを含むMBRをロードし、GRBUは/bootディレクトリを見出して、カーネル及びinitrdファイル・システムをロードし、GRBUはカーネルをブートし、カーネルはinitrdファイル・システムを始動し、initrdファイル・システムはストリーミング・ドライバを始動する。
いずれの場合にも、上述したストリーミング機能は、(いずれの配置エージェントがない場合でも)あらゆる同等の構造により実装することができる。さらに、(例えば、補助コンピュータを実際にブートし、ブート・シーケンスの間にアクセスされるメモリ・ブロックを追跡することによってそのブート・ブロックを識別することによって)ソフトウェア・イメージを異なる方法で準備することができる。
提案される技術はまた、外部ソースにより提供された通りのターゲット・ソフトウェア・イメージをインストールするために(例えば、コンピュータの以前のスナップショットを復元するために)用いられてもよい。
この場合、ソース・ソフトウェア・イメージのいずれの構成情報の転送を回避することも可能である。
いずれの場合にも、構成情報は、他のいずれのタイプの情報(例えば、アプリケーション・プログラム、文書など)を含むこともできる。同等の技術を用いて(単に幾つかのファイルをコピーすることにより、手動でも)、構成情報を、ソース・ソフトウェア・イメージから収集すること、及び/又はターゲット・ソフトウェア・イメージに適用することも可能である。
(メモリ・ブロックをハード・ディスク内の正しい位置にコピーすることにより)ターゲット・ソフトウェア・イメージへのマイグレーションをコミットする操作は、他のいずれかの方法で実施することもできる。
例えば、コンピュータのテスト中でさえ、メモリ・ブロックを継続的にダウンロードすることができる。さらに、単一の動作で(例えば、メモリ・ブロックがダウンロードされた後で、その全てを同時にコピーすることにより)ターゲット・ソフトウェア・イメージへのマイグレーションをコミットすることも可能である。
作業負荷は、他のいずれかの頻度で監視されても、又は特定の期間(例えば夜間)にのみ監視されてもよい。コンピュータ、サーバ、ネットワーク、又はこれらのいずれかの組み合わせに対して作業負荷が監視される場合にも、同様の考察が適用される。さらに、作業負荷に対する閾値は、いずれの他の方法で(例えば、異なる重みによってその寄与を重み付けすることによって)定めることができる。作業負荷が閾値を下回るときには、2つ又はそれ以上のメモリ・ブロックが同時にダウンロードされる場合にも、同様の考察が適用される。
正しい位置にコピーされる間のターゲット・ソフトウェア・イメージのメモリ・ブロックのコヒーレンスを保証するために、同等のアルゴリズムを実装することができる。
代替的に、ターゲット・ソフトウェア・イメージが完全にダウンロードされた後でさえ、(例えば、メモリ・ブロックの最新バージョンをダウンロードするために)ストリーミング・ドライバを常にイネーブルな状態に保持することが可能である。
ソース・ソフトウェア・イメージへのロール・バックのための他の手順が考えられる場合も、同様の考察が適用される。
ハード・ディスクの解放された部分を、(例えば、幾つかのファイルを圧縮することなどにより)いずれかの他の方法で得ることも可能である。いずれの場合にも、ハード・ディスクの一部分(例えば、その幾つかのパーティション)のみを縮小することができる。
ストリーミング・ドライバにより用いられるいずれの同等の制御構造を実装することもできる(解放された部分が、ローカル・リポジトリ又はローカル・キャッシュとして動作する場合)。
(本発明の各々の実施形態を実施するために用いられ得る)プログラムが異なる方法で構築される場合又は付加的なモジュール若しくは機能が与えられる場合にも、類似の考察が適用される。同様に、メモリ構造は他のタイプのものとすることができ、又は、同等のエンティティ(必ずしも物理的ストレージ媒体からなっていなくてもよい)によって置換することができる。プログラムは、いずれかのデータ処理システムによって又はそれと関連して(例えば、仮想マシン内で)用いられるのに適したいずれの形を取ることもできる。特に、プログラムは、外部若しくは常駐のソフトウェア、ファームウェア、又はマイクロコード(例えば、コンパイル又は解釈されるオブジェクト・コード又はソース・コード)の形とすることができる。さらに、いずれのコンピュータ使用可能媒体において実装される製造物品としてプログラムを提供することが可能である。媒体は、プログラムを収容し、格納し、通信し、伝搬し、又は転送するのに適したいずれの要素とすることもできる。例えば、媒体は、電子、磁気、光学、電磁気、赤外線若しくは半導体のタイプのものとすることができる。このような媒体の例は、(プログラムを予めロードすることができる)固定ディスク、取り外し可能ディスク、テープ、カード、配線、ファイバ、無線接続、ネットワーク、放送波などである。いずれの場合にも、本発明の実施形態による解決法は、ハードウェア構造(例えば、半導体材料のチップに集積されたもの)、又は他の方法で構成されたものに好適にプログラムされたソフトウェア及びハードウェアの組み合わせによる実施にも適する。
代替的に、このシステムは、異なる構造を有するか、又は同等の構成要素を含むか、又は他の動作特徴を有する。いずれの場合にも、そのあらゆる構成要素がさらに多くの要素に分けられてもよく、又は、2つ又はそれ以上の構成要素を組み合わせて単一の要素にしてもよい。さらに、対応する動作の並行実行をサポートために、各々の構成要素を複製することができる。異なる構成要素間のあらゆる対話は(他に特に規定がない限り)一般的に継続的である必要はなく、対話は直接的なものであっても、又は1つ又は複数の仲介物を通じた間接的なものであってもよいことも指摘される。特に、このシステムは、異なるアーキテクチャ(例えば、広域ネットワーク、グローバル・ネットワーク、セルラー・ネットワーク、又は衛星ネットワークなど)に基づくことができ、あらゆるタイプの(有線及び/又は無線の)接続を利用することができる。いずれの場合にも、各々のコンピュータは、別の構造を有することができ、又は類似の要素(フラッシュ・メモリに基づく、いずれの他の大容量メモリなど)を含むことができる。さらに、コンピュータを、物理マシン若しくは仮想マシンに基づくいずれかのデータ処理エンティティ(例えば、PDA、携帯電話等)又は複数のエンティティの組み合わせによって置換することが可能である。
100:コンピュータ
105:システム・バス
110:マイクロプロセッサ
115:RAM(作業メモリ)
120:ROM
125:ローカル・バス
130:ハード・ディスク
135:ドライブ
140:光ディスク
145:入力ユニット
150:出力ユニット
155:アダプタ
160:ブリッジ・ユニット
165:仲裁手段
205s:ソース・ソフトウェア・イメージ
205t:ターゲット・ソフトウェア・イメージ
210s:ソース・オペレーティング・システム
210t:ターゲット・オペレーティング・システム
215、460:配置エージェント
220:ユーザ
225:ターゲット・ソフトウェア・イメージ
230:解放された部分
235s:再配置されたメモリ位置
240t:ブート・ブロック
405a:補助コンピュータ
405s:サーバ・コンピュータ
415a、415s:作業メモリ
430a、430s:大容量メモリ
435:配置マネージャ
440:マスター・イメージ
445:モデル
450:遠隔アクセス・サーバ
455:操作者
465:一時的イメージ
470:新しいイメージ

Claims (15)

  1. データ処理エンティティ(100)を、前記データ処理エンティティの大容量メモリ(130)上にインストールされたソース・ソフトウェア・イメージ(205s)から、外部ソース(225)上に格納されたターゲット・ソフトウェア・イメージにマイグレートするための方法(300)であって、前記ソフトウェア・イメージの各々は複数のメモリ・ブロックを含み、前記メモリ・ブロックの各々は前記ソフトウェア・イメージ内に対応するイメージ・アドレスを有し、前記大容量メモリは、各々が前記メモリ・ブロックを格納するための複数のメモリ位置を含み、前記メモリ位置は前記大容量メモリ内に対応するメモリ・アドレスを有する、方法において、
    前記大容量メモリの部分を解放する(306)ステップと、
    前記ターゲット・ソフトウェア・イメージのブート位置に格納された前記メモリ・ブロックを前記解放された部分内に再配置する(310)ステップであって、前記ブート位置は、前記データ処理エンティティをブートして、前記外部ソースから前記ターゲット・ソフトウェア・イメージをダウンロードするように適合されたストリーミング機能(215)をロードするのに必要とされる前記メモリ・ブロックを含む、前記ターゲット・ソフトウェア・イメージのブート・ブロックの前記イメージ・アドレスと等しいメモリ・アドレスを有する前記メモリ位置である、ステップと、
    前記対応するブート位置に前記ブート・ブロックを格納する(314)ステップと、
    前記対応するブート位置における前記ブート・ブロックから前記データ処理エンティティをブートし(316)、それにより、前記ストリーミング機能をロードするステップと、
    前記ストリーミング機能によって、前記ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを読み出す各要求を実行する(330−350)ステップであって、前記ストリーミング機能は、前記大容量メモリにおいて前記選択されたメモリ・ブロックが利用可能でない場合には、前記外部ソースから前記選択されたメモリ・ブロックをダウンロードし(336)、かつ、前記解放された部分内に前記選択されたメモリ・ブロックを格納し(338−346)、又は、他の場合には、前記大容量メモリから前記選択されたメモリ・ブロックを取り出す(348)、ステップと、
    を含む方法。
  2. 前記ストリーミング機能(215)により、前記ターゲット・ソフトウェア・イメージの更に別の選択されたメモリ・ブロックを書き込む各々の要求を実行する(352−368)ステップであって、前記ストリーミング機能は、前記更に別の選択されたメモリ・ブロックが前記ブート・ブロックの1つである場合には、前記更に別の選択されたメモリ・ブロックを前記対応するブート位置に格納し(354−368)、又は、他の場合には、前記解放された部分内に格納する、ステップをさらに含む、請求項1に記載の方法(300)。
  3. 前記方法は、前記データ処理エンティティを前記ブートした(316)後に、
    前記ソース・ソフトウェア・イメージから構成情報を収集する(318−326)ステップと、
    対応するメモリ・ブロックを前記解放された部分内に格納することにより、前記構成情報を前記ターゲット・ソフトウェア・イメージに適用する(328)ステップと、
    をさらに含む、請求項項に記載の方法(300)。
  4. 前記ソース・ソフトウェア・イメージから前記構成情報を収集する(318−326)ステップは、
    前記ソース・ソフトウェア・イメージの構成メモリ・ブロックの組を取り出す(320−324)ステップであって、前記構成メモリ・ブロックの各々は、内部に再配置された場合には前記解放された部分から取り出され、又は、他の場合には前記対応するメモリ位置から取り出される、ステップを含む、請求項3に記載の方法(300)。
  5. 前記方法は、前記マイグレートを前記ターゲット・ソフトウェア・イメージにコミットする要求(370)に応答して、
    前記ブート・ブロックとは異なる前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てを、前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有するメモリ位置にコピーする(372−386)ステップをさらに含む、請求項に記載の方法(300)。
  6. 前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てをコピーする(374−386)ステップは、
    前記解放された部分において現在のメモリ・ブロックが利用可能でない場合には前記外部ソースから前記現在のメモリ・ブロックをダウンロードし(378)、又は、他の場合には前記解放された部分から前記現在のメモリ・ブロックを取り出す(382)こと、及び、
    前記現在のメモリ・ブロックを、前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有する前記メモリ位置に格納する(384)こと、
    によって、前記ターゲット・ソフトウェア・イメージの少なくとも1つの現在のメモリ・ブロックをコピーする(374−384)ステップを繰り返すことを含む、請求項5に記載の方法(300)。
  7. 前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てをコピーする(374−386)ステップは、
    データ処理エンティティの作業負荷を監視する(374)ステップを含み、前記ターゲット・ソフトウェア・イメージの前記少なくとも1つの現在のメモリ・ブロックをコピーする(374−384)ステップは、前記作業負荷が閾値を下回ったときに実施される、請求項6に記載の方法(300)。
  8. 前記マイグレートを前記ターゲット・ソフトウェア・イメージにコミットする前記要求(370)の後、前記ストリーミング機能は、前記大容量メモリにおいて利用可能な前記選択されたメモリ・ブロックを、前記選択されたメモリ・ブロックが内部にコピーされた後で前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有する前記メモリ位置から、又は、他の場合には前記解放された部分から取り出し(348)、かつ、前記更に別の選択されたメモリ・ブロックが内部にコピーされた後で前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有する前記メモリ位置に、又は、他の場合には前記解放された位置に格納する(366)、請求項に記載の方法(300)。
  9. 前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てをコピーした(372−386)後で、前記ストリーミング機能をディスエーブルにする(388)ステップをさらに含む、請求項5から請求項8までのいずれかに記載の方法(300)。
  10. 前記ターゲット・ソフトウェア・イメージへのロール・バック要求(392)に応答して、
    前記再配置されたメモリ・ブロックを前記ターゲット・ソフトウェア・イメージのブート位置に復元する(394)ステップと、
    前記大容量メモリの前記解放された部分を復元する(396)ステップと、
    をさらに含む、請求項1から請求項9までのいずれかに記載の方法(300)。
  11. 前記大容量メモリの部分を解放する(306)ステップは、
    前記ソース・ソフトウェア・イメージを縮小する(306)ステップを含む、請求項1から請求項10までのいずれかに記載の方法(300)。
  12. 前記解放された部分(230)は、前記ターゲット・ソフトウェア・イメージ(225)の前記メモリ・ブロックの全てを格納するのに十分なサイズを有し、前記選択されたメモリ・ブロックを格納する(338−346)ステップ及び前記更に別の選択されたメモリ・ブロックを格納する(354−368)ステップは、
    前記選択されたメモリ・ブロック又は前記更に別の選択されたメモリ・ブロックを、前記対応するイメージ・アドレスに前記大容量メモリ内の前記解放された部分のオフセットを加えたものに等しい前記メモリ・アドレスを有する、前記解放された部分のメモリ位置に格納することを含む、請求項2または8のいずれかに記載の方法(300)。
  13. 前記解放された部分(230)は、前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの部分のみを格納するのに十分なサイズを有し、前記選択されたメモリ・ブロックを格納する(338−346)ステップ及び前記更に別の選択されたメモリ・ブロックを格納する(354−368)ステップは、
    前記選択されたメモリ・ブロック又は前記更に別の選択されたメモリ・ブロックを格納するために、前記解放された部分において利用可能な空きメモリ位置を探す(340;360)ステップと、
    前記空きメモリ位置が見つからなかった場合、前記解放された部分の選択されたメモリ位置を削除することによって、前記空きメモリ位置を作成する(344;364)ステップであって、前記選択されたメモリ位置は、前記ダウンロード後に書き込まれないメモリ・ブロックを格納する前記解放された部分の前記メモリ位置の中で選択される、ステップと、
    前記空きメモリ位置に、前記選択されたメモリ・ブロック又は前記更に別の選択されたメモリ・ブロックを格納する(346;366)ステップと、
    を含む、請求項2、8または12のいずれかに記載の方法(300)。
  14. コンピュータ・プログラムがデータ処理システム(100)上で実行されるときに、データ処理システムに、請求項1から請求項13までのいずれかに記載の方法(300)のステップを実施させるためのコードを含むコンピュータ・プログラム(200)。
  15. 請求項1から請求項13までのいずれかに記載の方法(300)のステップを実施するための手段(200)を含むシステム(100)。
JP2013542437A 2010-12-13 2011-11-10 ストリーミング技術に基づくソフトウェア・イメージのアップグレード Active JP5911504B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10194709 2010-12-13
EP10194709.1 2010-12-13
PCT/EP2011/069873 WO2012079864A1 (en) 2010-12-13 2011-11-10 Upgrade of software images based on streaming technique

Publications (2)

Publication Number Publication Date
JP2013545204A JP2013545204A (ja) 2013-12-19
JP5911504B2 true JP5911504B2 (ja) 2016-05-11

Family

ID=44983528

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013542437A Active JP5911504B2 (ja) 2010-12-13 2011-11-10 ストリーミング技術に基づくソフトウェア・イメージのアップグレード

Country Status (7)

Country Link
US (2) US9058235B2 (ja)
JP (1) JP5911504B2 (ja)
CN (1) CN103250134B (ja)
CA (1) CA2817109C (ja)
DE (1) DE112011104356B4 (ja)
GB (1) GB2499964B (ja)
WO (1) WO2012079864A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
GB2499956B (en) 2010-11-23 2018-02-14 Servicenow Inc Direct migration of software images with streaming technique
JP5904505B2 (ja) 2010-12-09 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想ディスクを暗号化及び復号するためのコンピュータ可読ストレージ媒体
CN103250134B (zh) 2010-12-13 2016-09-07 国际商业机器公司 基于流技术的软件映像更新
JP5767565B2 (ja) 2010-12-14 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理)
US9678769B1 (en) 2013-06-12 2017-06-13 Amazon Technologies, Inc. Offline volume modifications
US10409625B1 (en) * 2013-09-17 2019-09-10 Amazon Technologies, Inc. Version management for hosted computing workspaces
US10671545B2 (en) 2014-06-28 2020-06-02 Vmware, Inc. Asynchronous encryption and decryption of virtual machine memory for live migration
US9760443B2 (en) 2014-06-28 2017-09-12 Vmware, Inc. Using a recovery snapshot during live migration
US9766930B2 (en) 2014-06-28 2017-09-19 Vmware, Inc. Using active/passive asynchronous replicated storage for live migration
US9672120B2 (en) 2014-06-28 2017-06-06 Vmware, Inc. Maintaining consistency using reverse replication during live migration
US9626212B2 (en) * 2014-06-28 2017-04-18 Vmware, Inc. Live migration of virtual machines with memory state sharing
US9898320B2 (en) 2014-06-28 2018-02-20 Vmware, Inc. Using a delta query to seed live migration
CN104407918B (zh) * 2014-11-29 2017-06-27 中国航空工业集团公司第六三一研究所 一种航空电子***任务数据的保存和恢复方法
US10585654B2 (en) * 2015-12-04 2020-03-10 Vmware, Inc. Deployment of processing components of computing infrastructure using annotated command objects
CN105468541B (zh) * 2015-12-11 2019-01-08 中南大学 一种面向透明计算智能终端的缓存管理方法
US10114702B2 (en) * 2016-01-06 2018-10-30 International Business Machines Corporation Method and system to discover and manage distributed applications in virtualization environments
CN105677256A (zh) * 2016-01-08 2016-06-15 中电科华云信息技术有限公司 基于本地缓存的虚拟磁盘***及调度方法
EP3286648B1 (en) 2016-02-12 2020-08-26 Hewlett-Packard Enterprise Development LP Assembling operating system volumes
US10579358B2 (en) * 2016-11-10 2020-03-03 Cisco Technology, Inc. Space-optimized software installation using in-place extractable archive image
US20220413825A1 (en) * 2021-06-29 2022-12-29 EMC IP Holding Company LLC Immutable edge devices

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075858A (en) 1995-10-27 2000-06-13 Scm Microsystems (U.S.) Inc. Encryption key system and method
US5991876A (en) 1996-04-01 1999-11-23 Copyright Clearance Center, Inc. Electronic rights management and authorization system
US6098158A (en) 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
US6567774B1 (en) 1998-01-30 2003-05-20 Compaq Computer Corporation Method and system for configuring and updating networked client stations using a virtual disk and a snapshot disk
US6385721B1 (en) 1999-01-22 2002-05-07 Hewlett-Packard Company Computer with bootable hibernation partition
US6973447B1 (en) 2000-03-23 2005-12-06 International Business Machines Corporation System apparatus and method for supporting multiple partitions including multiple systems in boot code
US8140683B2 (en) 2000-12-07 2012-03-20 International Business Machines Corporation Method and system for selecting an operating system at user login on a target device
US6920555B1 (en) 2001-03-10 2005-07-19 Powerquest Corporation Method for deploying an image into other partition on a computer system by using an imaging tool and coordinating migration of user profile to the imaged computer system
US7428636B1 (en) 2001-04-26 2008-09-23 Vmware, Inc. Selective encryption system and method for I/O operations
FR2824646B1 (fr) 2001-05-09 2003-08-15 Canal Plus Technologies Procede de selection d'une image de logiciel executable
US7103747B2 (en) 2001-06-28 2006-09-05 Hewlett-Packard Development Company, L.P. Memory table and memory manager for use in managing memory
US20030126242A1 (en) 2001-12-28 2003-07-03 Chang Albert H. Network boot system and method using remotely-stored, client-specific boot images created from shared, base snapshot image
US7209874B2 (en) 2002-02-25 2007-04-24 Zoran Corporation Emulator-enabled network connectivity to a device
US7379982B2 (en) 2002-04-15 2008-05-27 Bassam Tabbara System and method for custom installation of an operating system on a remote client
JP2003316595A (ja) 2002-04-23 2003-11-07 Casio Comput Co Ltd インストール方法、ファイル更新方法、プログラム及びコンピュータシステム
US7313793B2 (en) * 2002-07-11 2007-12-25 Microsoft Corporation Method for forking or migrating a virtual machine
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7062517B2 (en) 2002-08-14 2006-06-13 Hitachi, Ltd. Method and apparatus for centralized computer management
US6857011B2 (en) * 2002-10-31 2005-02-15 Paragon Development Systems, Inc. Method of remote imaging
JP2004192329A (ja) * 2002-12-11 2004-07-08 Fuji Photo Film Co Ltd プログラム書換え方法および端末装置
US6857069B1 (en) 2003-03-24 2005-02-15 Cisco Technology, Inc. Modified operating system boot sequence for iSCSI device support
US7360072B1 (en) 2003-03-28 2008-04-15 Cisco Technology, Inc. iSCSI system OS boot configuration modification
US6925533B2 (en) 2003-05-07 2005-08-02 International Business Machines Corporation Virtual disk image system with local cache disk for iSCSI communications
US7281247B2 (en) * 2003-06-24 2007-10-09 Microsoft Corporation Software image creation in a distributed build environment
US20070220494A1 (en) * 2003-11-06 2007-09-20 Intuwave Limited A Method of Rapid Software Application Development for a Wireless Mobile Device
US20050160150A1 (en) * 2004-01-20 2005-07-21 Su-Hwa Kao Apparatus and method for managing and transporting virtual disks over a network to networked stations
JP4900760B2 (ja) 2004-03-31 2012-03-21 株式会社日立製作所 Osイメージのデプロイメントマシン及び方法
JP4604543B2 (ja) * 2004-04-30 2011-01-05 日本電気株式会社 計算機、計算機起動方法、管理サーバ装置およびプログラム
US8230095B2 (en) 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
US7424601B2 (en) 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US7664834B2 (en) 2004-07-09 2010-02-16 Maxsp Corporation Distributed operating system management
US7269722B1 (en) 2004-07-26 2007-09-11 Sun Microsystems, Inc. Preview of UNIX boot process from multi-user level
US8346886B2 (en) 2004-09-08 2013-01-01 Red Hat, Inc. System, method, and medium for configuring client computers to operate disconnected from a server computer while using a master instance of the operating system
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7509530B2 (en) 2005-01-19 2009-03-24 Sonic Solutions Method and system for use in restoring an active partition
US7512833B1 (en) 2005-05-09 2009-03-31 Adam C. Murphy Universal imaging utility program
US7536541B2 (en) 2006-03-07 2009-05-19 Novell Inc. Parallelizing multiple boot images with virtual machines
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8234359B2 (en) * 2006-05-24 2012-07-31 Absolute Software Corp. System and method for remotely re-imaging a computer system
JP4725798B2 (ja) 2006-06-21 2011-07-13 日本電気株式会社 コンピュータシステム、ネットワークブートシステム、osイメージ切替方法、osイメージ切替プログラム
JP4584196B2 (ja) 2006-06-27 2010-11-17 九州日本電気ソフトウェア株式会社 情報処理システム、情報処理方法、およびプログラム
US7809919B2 (en) 2006-07-26 2010-10-05 Hewlett-Packard Development Company, L.P. Automatic data block misalignment detection and correction in a computer system utilizing a hard disk subsystem
JP4366698B2 (ja) 2006-07-27 2009-11-18 日本電気株式会社 計算機、計算機システム、及びディスクイメージ配布方法
US8387038B2 (en) 2006-08-14 2013-02-26 Caterpillar Inc. Method and system for automatic computer and user migration
JP4818868B2 (ja) 2006-10-05 2011-11-16 日本電信電話株式会社 仮想端末を利用した検疫ネットワークシステム、仮想端末を検疫する方法、及び、仮想端末を検疫するためのプログラム
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US9038062B2 (en) 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8032351B2 (en) 2006-11-30 2011-10-04 Symantec Corporation Running a virtual machine directly from a physical machine using snapshots
US20080141015A1 (en) 2006-12-06 2008-06-12 Glen Edmond Chalemin System and method for operating system deployment in a peer-to-peer computing environment
US8312115B2 (en) 2006-12-21 2012-11-13 1E Limited Network booting apparatus and method
JP2010522370A (ja) 2007-03-20 2010-07-01 サンギュ イ 移動型仮想マシンイメージ
US8331366B2 (en) * 2007-04-11 2012-12-11 Dell Products L.P. System and method for deployment of a software image to a plurality of target devices
US8245022B2 (en) 2007-06-01 2012-08-14 Dell Products L.P. Method and system to support ISCSI boot through management controllers
US20090049160A1 (en) 2007-08-14 2009-02-19 Dell Products L.P. System and Method for Deployment of a Software Image
US8375440B2 (en) 2007-10-15 2013-02-12 Microsoft Corporation Secure bait and switch resume
US8782637B2 (en) * 2007-11-03 2014-07-15 ATM Shafiqul Khalid Mini-cloud system for enabling user subscription to cloud service in residential environment
US20090164994A1 (en) 2007-12-20 2009-06-25 Virtual Computer, Inc. Virtual computing management systems and methods
US7953833B2 (en) * 2008-01-31 2011-05-31 Wanova Technologies Ltd. Desktop delivery for a distributed enterprise
CN100578461C (zh) 2008-03-12 2010-01-06 中兴通讯股份有限公司 一种引导程序的备份方法及其备份装置
US20090240953A1 (en) 2008-03-19 2009-09-24 Safenet, Inc. On-disk software image encryption
JP5062687B2 (ja) 2008-03-31 2012-10-31 Eugrid株式会社 情報処理装置
US7882342B1 (en) * 2008-03-31 2011-02-01 Symantec Corporation Systems and methods for imaging a computer system
JP5290287B2 (ja) * 2008-05-29 2013-09-18 株式会社シー・オー・コンヴ ネットワークブートシステム
SG158757A1 (en) 2008-07-10 2010-02-26 Fast And Safe Technology Pte L Method and apparatus for protecting data in computers
US8434093B2 (en) * 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8510352B2 (en) * 2008-10-24 2013-08-13 Microsoft Corporation Virtualized boot block with discovery volume
US8701106B2 (en) 2008-11-30 2014-04-15 Red Hat Israel, Ltd. Hashing storage images of a virtual machine
US20100174894A1 (en) 2009-01-07 2010-07-08 Lenovo (Singapore) Pte, Ltd. Method, Apparatus, and System for Configuring an Operating System on a Target Computer
US8429639B2 (en) * 2009-02-10 2013-04-23 Microsoft Corporation Image-based software update
JP2010231567A (ja) 2009-03-27 2010-10-14 Fujitsu Ltd ストレージスイッチ、記憶領域サイズ変更方法
US20100318987A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Bootstrapping streamed and virtualized applications
US8639917B1 (en) * 2009-10-20 2014-01-28 Vmware, Inc. Streaming a desktop image over wide area networks in which the desktop image is segmented into a prefetch set of files, streaming set of files and leave-behind set of files
US9130912B2 (en) * 2010-03-05 2015-09-08 International Business Machines Corporation System and method for assisting virtual machine instantiation and migration
US8312296B2 (en) 2010-03-10 2012-11-13 Dell Products L.P. System and method for recovering from an interrupted encryption and decryption operation performed on a volume
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
US8407662B2 (en) * 2010-06-25 2013-03-26 Wyse Technology Inc. Apparatus and method for network driver injection into target image
US8560825B2 (en) 2010-06-30 2013-10-15 International Business Machines Corporation Streaming virtual machine boot services over a network
GB2499956B (en) 2010-11-23 2018-02-14 Servicenow Inc Direct migration of software images with streaming technique
JP5904505B2 (ja) 2010-12-09 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想ディスクを暗号化及び復号するためのコンピュータ可読ストレージ媒体
CN103250134B (zh) 2010-12-13 2016-09-07 国际商业机器公司 基于流技术的软件映像更新
CN102567042B (zh) * 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和***
JP5767565B2 (ja) 2010-12-14 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理)

Also Published As

Publication number Publication date
CA2817109A1 (en) 2012-06-21
CN103250134B (zh) 2016-09-07
CN103250134A (zh) 2013-08-14
WO2012079864A1 (en) 2012-06-21
US9058235B2 (en) 2015-06-16
JP2013545204A (ja) 2013-12-19
DE112011104356B4 (de) 2014-05-15
GB2499964A (en) 2013-09-04
CA2817109C (en) 2020-11-03
GB2499964B (en) 2013-12-11
DE112011104356T5 (de) 2013-09-12
US9195452B2 (en) 2015-11-24
US20150052508A1 (en) 2015-02-19
GB201311739D0 (en) 2013-08-14
US20130247020A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
JP5911504B2 (ja) ストリーミング技術に基づくソフトウェア・イメージのアップグレード
JP5649184B2 (ja) ブート・ブロックの再配置によって複数のソフトウェア・イメージを管理するための方法、コンピュータ・プログラムおよびシステム
JP5767565B2 (ja) ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理)
US9235524B1 (en) System and method for improving cache performance
US8930947B1 (en) System and method for live migration of a virtual machine with dedicated cache
US7519806B2 (en) Virtual partition for recording and restoring computer data files
US10296423B2 (en) System and method for live virtual incremental restoring of data from cloud storage
US8627012B1 (en) System and method for improving cache performance
US9104529B1 (en) System and method for copying a cache system
US8185884B2 (en) System and method for offline updation of software in virtual machine (VM) images
US9104431B2 (en) Deployment of a software image on multiple targets with streaming technique
US9547506B2 (en) Synthetic device for installation source media
KR102226558B1 (ko) 맞춤형 통합 확장 펌웨어 인터페이스 드라이버를 설치한 컴퓨터-읽기가능 레코딩 매체 및 그것의 방법
JP2008276555A (ja) 情報処理装置、およびファームウェア更新方法
US9053033B1 (en) System and method for cache content sharing
US9009416B1 (en) System and method for managing cache system content directories
US20140059293A1 (en) Method for protecting a gpt cached disks data integrity in an external operating system environment
KR100947136B1 (ko) 소프트웨어의 증분 프로비져닝
Bettany et al. Understanding windows file systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160208

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: 20160308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160329

R150 Certificate of patent or registration of utility model

Ref document number: 5911504

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150