JP2015501995A - ストリーミング技術を用いた複数ターゲット上でのソフトウェア・イメージの展開方法およびシステム - Google Patents
ストリーミング技術を用いた複数ターゲット上でのソフトウェア・イメージの展開方法およびシステム Download PDFInfo
- Publication number
- JP2015501995A JP2015501995A JP2014546684A JP2014546684A JP2015501995A JP 2015501995 A JP2015501995 A JP 2015501995A JP 2014546684 A JP2014546684 A JP 2014546684A JP 2014546684 A JP2014546684 A JP 2014546684A JP 2015501995 A JP2015501995 A JP 2015501995A
- Authority
- JP
- Japan
- Prior art keywords
- data processing
- target data
- memory block
- selected memory
- processing entity
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】ストリーミング技術を用いた複数ターゲット上でのソフトウェア・イメージの展開を提供する。【解決手段】ターゲット・データ処理システムの複数のターゲット・データ処理エンティティ上にソース・データ処理システムからソフトウェア・イメージを展開する方法であって、ソフトウェア・イメージは、個々にアクセス可能な複数のメモリ・ブロックを備え、メモリ・ブロックの事前定義されたサブセットが、ブートストラップ・モジュールを定義しており、この方法が、ブートストラップ・モジュールを、ソース・データ処理システムから、ターゲット・データ処理エンティティのうちのメインのターゲット・データ処理エンティティ上にダウンロードする(406)ステップと、メイン・ターゲット・データ処理エンティティをブートストラップ・モジュールからブートし、それにより、ブートストラップ・モジュールに含まれるストリーミング・ドライバをロードする(407〜409)ステップと、メイン・ターゲット・データ処理エンティティ上のソフトウェア・イメージの選択メモリ・ブロックにアクセスする各要求に、ストリーミング・ドライバにより応じる(410〜422)ステップであって、ストリーミング・ドライバが、選択メモリ・ブロックにアクセスする要求の最初のものに応じて、ソース・データ処理システムから選択メモリ・ブロックをダウンロードし(413〜414)てメイン・ターゲット・データ処理エンティティに選択メモリ・ブロックを格納する(415〜416)か、またはその他の場合、メイン・ターゲット・データ処理エンティティ内の選択メモリ・ブロックにアクセスする(417)、ステップと、ブートストラップ・モジュールを、ターゲット・データ処理エンティティのうちの一組のセカンダリ・ターゲット・データ処理エンティティの各々に提供する(423〜427)ステップと、ブートストラップ・モジュールから各セカンダリ・ターゲット・データ処理エンティティをブートし(428〜429)、これにより、ストリーミング・ドライバをロードするステップと、セカンダリ・ターゲット・データ処理エンティティ上のソフトウェア・イメージの追加の選択メモリ・ブロックにアクセスする各要求に、ストリーミング・ドライバにより応じる(430〜448)ステップであって、ストリーミング・ドライバが、追加の選択メモリ・ブロックにアクセスする要求の最初のものに応じて、メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックを取得し(433〜440)てセカンダリ・ターゲット・データ処理エンティティに追加の選択メモリ・ブロックを格納する(441〜442)か、またはその他の場合、セカンダリ・ターゲット・データ処理エンティティ内の追加の選択メモリ・ブロックにアクセスする(443)、ステップと、を含む。【選択図】図5
Description
本発明の1つ以上の実施形態による解決策は、データ処理分野に関する。特に、本解決策は、ソフトウェア・イメージの展開に関する。
ソフトウェア・イメージは、最新のデータ処理システムの重要な機能である。一般的に、ソフトウェア・イメージは、(物理的または仮想的)データ処理マシンにあるファイルをカプセル化する構造であり、例えば、そのオペレーティング・システム、アプリケーション・プログラム、もしくはデータまたはそのいずれかの組み合わせを格納する。ソフトウェア・イメージは、非常に簡単な方法で移動、コピー、複製、保護およびプロファイルするのに適している。これらの利点は、ソフトウェア・イメージが仮想マシンで使用される際に明確に知覚される(すなわち、ソフトウェアによる物理マシンのエミュレーション)。確かに、この場合、単に新しい仮想マシンを作成し、次に所望のソフトウェア・イメージからそれをブートすることで、いかなる種類の仮想マシンでもオンデマンドで準備できる。例えば、(複数のデータ処理サービスがクライアント・コンピュータに、その物理的実装には全く依存せずに提供される)クラウド・コンピューティングにおいて、このことは特に有用である。
ソフトウェア・イメージは、一般に、ソース・データ処理システム(例えば、ソース・サーバ)で格納され、そこから、複数のターゲット・データ処理エンティティ(例えば、ターゲット・サーバ上でホストされるターゲット仮想マシン)に展開される。ターゲット・サーバは、一般にソース・サーバから離れている。したがって、そのターゲット仮想マシン上へのソフトウェア・イメージの展開は、比較的長時間のプロセスとなる。
この問題に対処するために、他のターゲット仮想マシンにソフトウェア・イメージ(または、少なくともその一部)を提供するよう、いくつかのターゲット仮想マシンを使用することが提案されている。例えば、特許文献1、特許文献2および特許文献3で記述されている(これらの全体の開示は参照によって本明細書に組み込まれている)。また、他のターゲット・サーバによるアクセスのために、ソース・サーバからターゲット・サーバに至るネットワーク経路に沿って、ソフトウェア・イメージをキャッシュすることも可能である。例えば、非特許文献1で記述されている(これらの全体の開示は参照によって本明細書に組み込まれている)。
いずれの場合でも、それぞれの新しいターゲット仮想マシンは、完全なソフトウェア・イメージが展開された後(一般的には、数時間後)にのみ使用可能となる。
あるいは、各ターゲット仮想マシン上でソフトウェア・イメージ全体を展開するのではなく、そのメモリ・ブロックをオンデマンドでダウンロードすることが可能である。ダウンロードしたメモリ・ブロックを、ローカル・キャッシュに一時的に保存して、場合により、次の使用のために先読みすることができる。特に、非特許文献2(これらの全体の開示は参照によって本明細書に組み込まれている)で記述しているとおり、同一ソフトウェア・イメージの複数のインスタンスが同一ターゲット・サーバで同時に使用されると、そのメモリ・ブロックは、より高速のターゲット仮想マシンの以前のアクセスパターンに従ってより低速のターゲット仮想マシンによって先読みすることができる(これはそれらのパターンが非常に似ているためである)。
Datacast:A Scalable and Efficient Group Data Delivery Service for Data Centers、Chuanxiong Guo他(マイクロソフト社)、Microsoft Technologyレポート(MSR−TR−2011−76)
Optimizing Multi−Deployment On Clouds By Means Of Self−Adaptive Prefetching、Nicolae、Bogdan他;Cappello、Franck他、Lecture Notes in Computer Science(Artificial Intelligence and Lecture Notes in BioinformaticsのサブシリーズLecture Notesを含む)、v 6852 LNCS、n パート1、p.503〜513、2011、Euro−Par 2011 並列処理−第17回国際会議、紀要、Springer Verlag
しかしながら、上記技術では、ソフトウェア・イメージのメモリ・ブロックは、それらを即時使用する場合のみ、各ターゲット仮想マシンにダウンロードされる。したがって、これらのメモリ・ブロックは、使用後、およびいかなる場合でもターゲット仮想マシンの電源を切った後には消滅するため、次回使用するためには再度ダウンロードする必要がある(ターゲット・サーバはソース・サーバから決して切断できない)。メモリ・ブロックを(場合によっては、先読みを使って)ローカル・キャッシュに格納する場合でも、そのうちわずかなものしか再利用のためにローカル・キャッシュには残らない(いかなる場合でも、ローカル・キャッシュで最長時間未使用のメモリ・ブロックは新しいメモリ・ブロックを格納するために最終的に排除される)。
概して、本発明の1つ以上の実施形態による解決策は、メモリ・ブロックを既にダウンロードした場所からそのメモリ・ブロックを取得することによって、ソフトウェア・イメージを展開するという考えに基づいている。
特に、本発明の特定の実施形態による解決策の1つ以上の態様は、独立請求項に記載されており、同解決策の有利な特徴は、従属請求項に記載されており、全ての請求項の文言は参照によって本明細書にそのまま組み込まれる(本発明の実施形態による解決策の特定の態様を参照して提供される任意の有利な特徴は、解決策の他の全ての態様に準用される)。
より詳細には、本発明の実施形態による解決策の態様は、ターゲット・データ処理システムの複数のターゲット・データ処理エンティティにソース・データ処理システムからのソフトウェア・イメージを展開する方法を提供し、ターゲット・データ処理エンティティの1つがメイン・ターゲット・データ処理エンティティ(ソフトウェア・イメージのメモリ・ブロックはソース・データ処理システムからダウンロードされ、最初のアクセスでローカルに格納される)であり、他のターゲット・データ処理エンティティはセカンダリ・ターゲット・データ処理エンティティ(ソフトウェア・イメージのメモリ・ブロックはメイン・ターゲット・データ処理エンティティから取得され、最初のアクセスでローカルに格納される)である。
本発明の一実施形態による解決策の追加の態様は、対応するコンピュータ・プログラムを提供する。
本発明の一実施形態による解決策のさらなる態様は、対応するコンピュータ・プログラム製品を提供する。
本発明の一実施形態による解決策の異なる態様は、対応するデータ処理システムを提供する。
本発明の1つ以上の実施形態による解決策と、さらなる特徴およびその利点は、添付の図面と併せて読むよう、純粋に非限定的な指示として与えられる、以下の詳細な説明を参照することで最もよく理解される(明確化のために、対応する要素は、同一または類似の符号を付して示し、その説明は省略し、各エンティティの名前は一般に、その種類と、値、内容および表示といった属性との両方を表すよう用いられる)。
特に図1を参照すると、本発明の一実施形態による解決策を実施するために使用できる展開インフラストラクチャ100の図形表現が示される。
展開インフラストラクチャ100は、ネットワーク105、例えば、ローカル・エリア・ネットワーク(LAN:Local Area Network)に基づく分散アーキテクチャを有する。複数のデータ処理システム(例えば、サーバ・コンピュータ)は、ネットワーク105を介して相互に接続されている。特に、ソース・サーバ・コンピュータ(または単にソース・サーバ)110は、1つ以上のターゲット・サーバ・コンピュータ(または単にターゲット・サーバ)115上でのソフトウェア・イメージ(例えば、各々がオペレーティング・システムと複数のアプリケーション・プログラムとを含む各々)の展開をコントロールする。
各(ソースまたはターゲット)サーバ110、115は、システム・バス120に並列接続されたユニットを複数含む。詳細には、1つ以上のマイクロプロセッサ(μP)125は、サーバ110、115の動作をコントロールする。RAM130は、マイクロプロセッサ115によるワーキング・メモリとして用いられ、ROM135は、サーバ110、115のブートストラップのための基本コードを格納する。複数の周辺ユニットは、(それぞれのインターフェースを介して)ローカル・バス140の周りに集められる。特に、大容量メモリは、1つ以上のハード・ディスク145と、光ディスク155の読み込み/書き込みを行うドライブ150とを備えている。また、サーバ110、115は、入力ユニット160(例えば、キーボードおよびマウス)と出力ユニット165(例えば、モニタおよびプリンタ)とを備える。ネットワーク・アダプタ170を用いて、サーバ110、115をネットワーク105に接続する。ブリッジ・ユニット175は、システム・バス120をローカル・バス140とインターフェース接続する。各マイクロプロセッサ125およびブリッジ・ユニット175は、情報を伝達するためのシステム・バス120へのアクセスを要求するマスタ・エージェントとして動作可能である。アービタ180は、システム・バス120への相互排他をもったアクセスの許可を管理する。
本発明の一実施形態による解決策の適用の概念図を図2A〜4Cに示す。
図2Aにおいて、ターゲット・サーバ115のうちの1つでホストされる複数のターゲット仮想マシンにソース・サーバ110から展開する汎用ソフトウェア・イメージを、符号SIで示す。
ソフトウェア・イメージSIは、複数のメモリ・ブロックを備えており、それらの各々は、(読み込みもしくは書き込みまたはその両方用に)個々にアクセス可能である。メモリ・ブロックは、1つ以上のセクタ、ファイル、ライブラリ、ディレクトリ、それらの組み合わせまたは一部などの任意の種類の情報を含んでもよい(例えば、それぞれ520バイトで構成)。メモリ・ブロックのサブセットは、ターゲット仮想マシンをブートして(以下に記述する)ストリーミング・ドライバをロードするのに必要なメモリ・ブロックを(互いに隣接していなくとも、それぞれの正しい位置に)備えるブートストラップ・モジュールBtを定義する。
図2Bに移る。ターゲット仮想マシンのうちのメインのターゲット仮想マシン(メイン仮想マシンVMmと表記される)が、ソフトウェア・イメージSIの展開のために選択される(例えば、ソフトウェア・イメージSIを最初に展開するためにターゲット・サーバ115上に作成する第1のターゲット仮想マシン)。ブートストラップ・モジュールBtは、ソース・サーバ110からメイン仮想マシンVMmにダウンロードされる。この時点でメイン仮想マシンVMmは、ブートストラップ・モジュールBtからブートされ、その結果、包含されるストリーミング・ドライバがロードされる(図示せず)。
図2Cを参照する。メイン仮想マシンVMmの動作中にソフトウェア・イメージSIの選択メモリ・ブロック(符号MBsで示される)にアクセスするそれぞれの要求には、以降、ストリーミング・ドライバが応じる。特に、メモリ・ブロックMBsが、メイン仮想マシンVMmで初めて要求されると、ストリーミング・ドライバは、ソース・サーバ110からメモリ・ブロックMBsをダウンロードし、メイン仮想マシンVMmに格納する。
その他の場合、図3Aで示すとおり、選択されたメモリ・ブロックは、(後の同一メモリ・ブロックMBsの場合と同様に)次回アクセスされる際に、すでにメイン仮想マシンVMmに格納されている。したがって、以降、メモリ・ブロックMBsは、(ソース・サーバ105から再度ダウンロードする必要なく)メイン仮想マシンVMmにおいて直接アクセスすることができる。
上述したストリーミング技術により、ソフトウェア・イメージの残りの展開がまだ進行中であっても、各ターゲット仮想マシンを非常に短い時間で、すなわちブートストラップ・モジュールがダウンロードされた直後(例えば、10〜200メガバイトの典型的なサイズのブートストラップ・モジュールでは1〜2分後)に使用できるようになる。その後、ターゲット仮想マシンの動作は、内蔵のソフトウェア・イメージの他のメモリ・ブロックが使用できるかどうかに関わらず、完全に正常なものとなり、ソース・サーバからまだダウンロードされていないメモリ・ブロックにアクセスする際にターゲット仮想マシンのパフォーマンスが若干低下するだけである。また、メイン仮想マシンの使用を準備するのに必要な時間は、ソフトウェア・イメージのサイズとは無関係である。ソフトウェア・イメージのメモリ・ブロックが一度アクセスされると、さらに多くのメモリ・ブロックがメイン仮想マシンで予め利用可能になるため、メイン仮想マシン上にソフトウェア・イメージをダウンロードするネットワークの使用度も、時間とともに(例えば、対数法則に従い)減少する。
図3Bに移る。ターゲット仮想マシンのうちのセカンダリ・ターゲット仮想マシン(セカンダリ仮想マシンVMsと表記される)が、同一ソフトウェア・イメージSIの展開のために選択される(例えば、ソフトウェア・イメージSIを次に展開するためにターゲット・サーバ115上に作成する次のターゲット仮想マシン)。ブートストラップ・モジュールBtは、セカンダリ仮想マシンVMsに、(例えば、ソース・サーバ110から再度ダウンロードすることで)提供される。上記のとおり、セカンダリ仮想マシンVMsは、ブートストラップ・モジュールBtからブートされ、その結果、包含されるストリーミング・ドライバがロードされる(図示せず)。
図3Cを参照する。セカンダリ仮想マシンVMsの動作中に(上記の同一メモリ・ブロックMBsと同様に)ソフトウェア・イメージSIの追加の選択メモリ・ブロックにアクセスするそれぞれの要求には、ここでもやはりストリーミング・ドライバが応じる。
ただし、本発明の実施形態による解決策において、メモリ・ブロックMBsがセカンダリ仮想マシンVMs上で初めて要求されると、ここで、ストリーミング・ドライバが、メイン仮想マシンVMmから直接読み込まれるまたはソース・サーバ110からダウンロードして上記のように格納されるメモリ・ブロックMBsを使って、メイン仮想マシンVMmからメモリ・ブロックMBsを取得し、セカンダリ仮想マシンVMsに格納する。
その他の場合、図4Aで示すとおり、選択メモリ・ブロックは、(後の同一メモリ・ブロックMBsの場合と同様に)次回アクセスされる際に、すでにセカンダリ仮想マシンVMsに格納されている。したがって、以降、メモリ・ブロックMBsは、(メイン仮想マシンVMmから再度取得する必要なく)セカンダリ仮想マシンVMsにおいて直接アクセスすることができる。
これにより、各メモリ・ブロックが、ここで、メイン仮想マシンに一度だけダウンロードされるため、ソース・サーバからメモリ・ブロックをダウンロードする必要性が急激に低下する。
また、(メインおよびセカンダリ)ターゲット仮想マシンが(同一ソフトウェア・イメージに基づいているため)非常に似ていることから、共通の挙動を示す(すなわち、実質的に同一の順序で実質的に同一のメモリ・ブロックにアクセスする)可能性が非常に高い。したがって、各セカンダリ仮想マシンが必要とするメモリ・ブロックがメイン仮想マシンですでに格納されている(その結果、メイン仮想マシンから直接、素早く取得できる)可能性が非常に高い。
上記の解決策がメイン仮想マシンに与える影響は、ほとんどの実際的な状況において無視できる。実際に、セカンダリ仮想マシンの要求に応じるメイン仮想マシンのオーバーヘッドは、(メイン仮想マシンにまだ格納されていない少数の追加メモリ・ブロックをセカンダリ仮想マシンのためにダウンロードすることしか、本解決策は必要とせず、いずれにせよそのメモリ・ブロックは、メイン仮想マシン自体が後にアクセスする可能性があるため)実質的に動作を損なわない。
なお、上記の解決策は、標準的なキャッシング技術とは何も関係ないことに留意すべきである。実際、キャッシング技術では、メモリ・ブロックは、要求に応じてダウンロードされ、(起こり得る)次回の使用に向けて一時的な形でローカルに格納される。逆に、メイン仮想マシンは、メモリ・ブロックをダウンロードし、それ自体の動作のために恒久的に内部に格納する(そのため、この結果は、セカンダリ仮想マシンによってメモリ・ブロックが必ずしも要求されなくても自動的に得られる)。言い換えると、セカンダリ仮想マシンによって要求されるメモリ・ブロックは、メイン仮想マシンそのものによって既にアクセスされていることから、メイン仮想マシンに格納されているはずである(あるいは、各セカンダリ仮想マシンによって既にアクセスされたメモリ・ブロックは、そこに格納されており、メイン仮想マシンに要求される必要が全くない)。
上記のすべてにより、ソース・サーバの負荷とネットワーク・トラフィックとを大きく低減して上述のストリーミング技術が改善される。
さらに、これにより、ストリーミング技術を(例えば、クラウド・コンピューティング・インフラストラクチャをサポートするよう)容易に拡張できる。
ここで図4Bを参照すると、本発明の特定の実施形態において、メモリ・ブロックはさらに、図中の薄い色で表されるメモリ・ブロックMBuのように、メイン仮想マシンVMmで更新され得る。したがって、(更新した)メモリ・ブロックMBuは、セカンダリ仮想マシンVMsで最初に要求されると、(メモリ・ブロックMBuがソフトウェア・イメージSIのオリジナル・バージョンと異なるため)メイン仮想マシンVMmから取得できない。この場合、メモリ・ブロックMBuのオリジナル・バージョンは、ソース・サーバ110からメイン仮想マシンVMmにダウンロードされ、(メイン仮想マシンVMmに格納することなく)セカンダリ仮想マシンVMsに戻される。
あるいは、図4Cで示すとおり、更新したメモリ・ブロックすべてのオリジナル・バージョンを、メイン仮想マシンVMmの専用ブロック・レポジトリBRに保存することができる。この場合、更新したメモリ・ブロックが(上記の同一メモリ・ブロックMBuのように)セカンダリ仮想マシンVMsで初めて要求されると、ここではそのオリジナルのバージョンを、ブロック・レポジトリBRから抽出して、セカンダリ仮想マシンVMsに直接戻すことができる。
ブロック・レポジトリは、(ソース・サーバの作業負荷とネットワーク・トラフィックとの対応する減少により、ただし、メイン仮想マシンのメモリ容量の対応する浪費と引き換えに)ソース・サーバから更新されたメモリ・ブロックを再度ダウンロードする必要性がなくなる。
ここで図5を参照すると、本発明の一実施形態による解決策を実装するために使用できるメイン・ソフトウェア・モジュールのブロック図が示される。情報(プログラムおよびデータ)は、典型的には、異なるサーバ・コンピュータのハード・ディスクに格納され、プログラム実行中に作業メモリに(少なくとも部分的に)ロードされる。プログラムは、最初に、ハード・ディスク、例えば、光ディスクにインストールされる。
特に、ソース・サーバ110は、展開マネージャ305、例えば、IBMコーポレーションのIBM Tivoli(IBM社の登録商標)Provisioning Manager for OS Deployment(TPM for OSD)のIBM Tivoli Provisioning Manager for Images(TPMfI)(IBM社の登録商標)を実行する。展開マネージャ305は、ターゲット・サーバ115(図では1つのみ示す)へのソフトウェア・イメージの展開を自動化するために用いられる。ソフトウェア・イメージは、おのおの所定形式(例えば、VMDKまたはVHD仕様に準拠)に従って単一ファイルまたは複数ファイルで対応するレポジトリ310に格納される。このために、ソース・サーバ110はさらに、レポジトリ310に格納されたソフトウェア・イメージに外部からアクセスするために使用するリモート・アクセス・サーバ315rを(例えば、インターネット・スモール・コンピュータ・システム・インターフェース(iSCSI:Internet Small Computer System Interface)プロトコルに基づき)実行する。
ターゲット・サーバ115に移ると、(ハードウェア上で直接実行されている)ホスト・オペレーティング・システム317がソフトウェア・プラットフォームを定義し、そのプラットフォーム上で他のプログラムが実行できる。特に、展開エージェント320は、展開マネージャ305と対話するために、ホスト・オペレーティング・システム317上で実行される。また、仮想化レイヤ325が、ターゲット・サーバ115の仮想化を実装するためにホスト・オペレーティング・システム317上で実行される。市場で入手可能な仮想化レイヤ325の例として、VMware社のVMware(VMware社の商標)およびCitrix Systems社のXen(Citrix Systems社の商標)がある。仮想化レイヤ325は、同一ソフトウェア・イメージSIが展開されるメイン仮想マシンVMmと1つ以上のセカンダリ仮想マシンVMs(図では1つのみ示す)とを備える複数の仮想マシンのホストとなる。
各(メインおよびセカンダリ)仮想マシンVMm、VMsは、(仮想マシンVMm、VMsが唯一コントロールする)物理マシンのハードウェアをエミュレートする抽象構造で構成される。特に、このエミュレートしたハードウェアは、(物理ディスクをエミュレートする)仮想ディスク330m、330sを備え、これは仮想マシンVMm、VMs上で展開したソフトウェア・イメージSIのメモリ・ブロックを格納するために使用される(まずブートストラップ・モジュールのメモリ・ブロックから始まり、他のメモリ・ブロックにアクセスされるとすぐにそのメモリ・ブロックが追加される)。
各仮想マシンVMm、VMsにおいて、ゲスト・オペレーティング・システム335m、335sがそのエミュレートされたハードウェア上で実行され、そのソフトウェア・プラットフォームを定義し、その上で他のプログラムが実行され得る(まずブートストラップ・モジュールが提供する最小限の機能から始まり、他の機能が使用されるとすぐにその機能が追加される)。特に、メイン仮想マシンVMmは、(ソフトウェア・イメージSIの一部を格納する)仮想ディスク330mに外部からアクセスするために使用される別のリモート・アクセス・サーバ315lを(例えば、同じiSCSIプロトコルに基づき)実行する。いずれの場合でも、各仮想マシンVMm、VMsは、仮想ディスク330m、330sのメモリ・ブロックに対する(読み込み、もしくは書き込み、またはその両方のための)アクセスをコントロールするための(符号340m、340sで示す)対応するストリーミング・ドライバを実行する。特に、メイン仮想マシンVMmのストリーミング・ドライバ340mは、(ソース・サーバ110からソフトウェア・イメージSIのメモリ・ブロックをダウンロードするために)リモート・アクセス・サーバ315rと対話するよう構成される。代わりに、セカンダリ仮想マシンVMsのストリーミング・ドライバ335sは、(メイン仮想マシンVMmからソフトウェア・イメージSIのメモリ・ブロックを取得するために)リモート・アクセス・サーバ315lと対話するように構成される。このために、ストリーミング・ドライバ340m、340sはマッピング・テーブル345m、345sをコントロールする。ソフトウェア・イメージSIの各メモリ・ブロックについて、マッピング・テーブル345m、345sは、メモリ・ブロックが既にアクセスされ、その結果、仮想ディスク330m、330sに格納されている(アクセス・フラグがアサートされている)か、格納されていない(アクセス・フラグがアサート解除されている)か、を示すアクセス・フラグを備える。
(以下で詳細に説明するとおり)仮想マシンVMm、VMsにおいて更新されたメモリ・ブロックを管理するために、マッピング・テーブル345m、345sは、各メモリ・ブロックの更新フラグをさらに含む。更新フラグは、メモリ・ブロックが仮想マシンVMm、VMsにおいて更新されており、その結果、ソフトウェア・イメージSIのオリジナル・バージョンと異なっている(更新フラグがアサートされている)か、異なっていない(更新フラグがアサート解除されている)か、を示す。オプションとして、各仮想マシンVMm、VMsは、(符号BRm、BRsで示す)ブロック・レポジトリを備えることができる。各更新メモリ・ブロックについて、ブロック・レポジトリBRm、BRsは、その連続した場所に(ソフトウェア・イメージSIと同じように)オリジナルのバージョンを格納する。この場合、各更新メモリ・ブロックについて、マッピング・テーブル345m、345sは、ブロック・レポジトリBRm、BRsにおけるオリジナル・バージョンのアドレスも含む。
本発明の一実施形態による解決策の実装に関するアクティビティのフローを記述するアクティビティ図を図6〜10に示す。特に、アクティビティ図は、方法400を使用して、複数のターゲット仮想マシンに特定のソフトウェア・イメージを展開するために実装する例示的プロセスを示す。
方法400は、ソース・サーバのスイムレーンの黒の開始円401で始まり、その後、ブロック402に移り、ここで、システム管理者は、このソフトウェア・イメージと、展開マネージャによってソフトウェア・イメージを展開するターゲット・サーバを(例えば、ウェブ・インターフェースによって)選択する。これを受けて、展開マネージャは、ブロック403で、(ソフトウェア・イメージを格納する仮想ディスクを備える)対応するターゲット仮想マシンを作成するようターゲット・サーバの展開エージェントに指示する。同時に、対応する情報が展開マネージャによって、(例えば、ターゲット・サーバ上のこのターゲット仮想マシンと、そこに展開されるソフトウェア・イメージとを識別するレコードが追加される展開マップに)保存される。アクティビティのフローは、次に、ブロック404において、ターゲット・サーバで既に展開されているソフトウェア・イメージのインスタンス数(展開マップで示される)に応じて分岐する。特に、この時点で、ターゲット・サーバ上におけるソフトウェア・イメージの最初の展開であれば(つまり、ターゲット・サーバ上の同一ソフトウェア・イメージに関して構成マップに他のレコードがない場合)、ブロック405〜422が実行されるのに対して、この時点で、ターゲット・サーバ上におけるソフトウェア・イメージの次の展開であれば(つまり、ターゲット・サーバ上の同一ソフトウェア・イメージに関して構成マップに少なくとも1つ別のレコードがある場合)、ブロック423〜448が実行される。
ここで、ブロック405(ソフトウェア・イメージの最初の展開)について検討する。ターゲット仮想マシンを、(例えば、マッピング・テーブル内のレコードの対応するフラグをアサートすることで)ソフトウェア・イメージの展開のためのメイン仮想マシンとして設定する。次に、展開マネージャは、ターゲット・サーバにブートストラップ・モジュールをアップロードし、ブロック406で、メイン仮想マシンの仮想ディスクに(ブートストラップ中に見つかることが予想される場所に)メモリ・ブロックを格納するよう展開エージェントに指示する。この時点で、展開マネージャは、ブロック407で、メイン仮想マシンをオンにするよう展開エージェントに指示する。
メイン仮想マシンのスイムレーンのブロック408に移動すると、ブートストラップ・モジュールから通常どおりブートすることで、ゲスト・オペテーティング・システムの対応部分と、そのマッピング・テーブルとともにストリーミング・ドライバとをロードする。例えば、Microsoft Windows(マイクロソフト社の商標)において、ブートストラップ・モジュールBtは、マスタ・ブート・レコード(MBR:Master Boot Record)、ブート・セクタ、bootmgr.exeファイル、boot\bcdファイル、システム・レジストリ、winload.exeファイル、システム・レジストリで指定されたドライバ(対応するリモート・アクセス・サーバおよびストリーミング・ドライバとの対話を行うためのリモート・アクセス・ドライバを備える)を含む。ストリーミング・ドライバのマッピング・テーブルは、ブートストラップ・モジュールのメモリ・ブロックのアクセス・フラグがアサートされ、他のメモリ・ブロックのアクセス・フラグがアサート解除され、メモリ・ブロックすべての更新フラグがアサート解除された状態に初期化される。ストリーミング・ドライバは、選択したメモリ・ブロックにアクセスする各要求に応えるために、(仮想ディスクに格納されているものとしてソフトウェア・イメージ全体を見る)ゲスト・オペレーティング・システムの標準ファイル・システム・ドライバをオーバーライドする。特に、ブートストラップ・モジュールは、ソース・サーバのリモート・アクセス・サーバとストリーミング・ドライバを対話させるようデフォルトで設定されている。また、ブートストラップ・モジュールは、(ソフトウェア・イメージに含まれる)リモート・アクセス・サーバを起動するようデフォルトで構成されており、その結果、これがブロック409で生じる。
ここでブロック410を参照すると、選択メモリ・ブロックにアクセスするアクセス要求がファイル・システム・ドライバに(初めにリモート・アクセス・ドライバをロードし、後にメイン仮想マシンを動作させるために)送信されるとすぐに、この要求はストリーミング・ドライバに渡される。その後、アクセス要求の様式に応じて、アクティビティのフローがブロック411で分岐する。特に、アクセス要求が選択メモリ・ブロックを読み込むためであれば、ブロック412〜418が実行されるのに対して、アクセス要求が選択メモリ・ブロックを書き込むためであれば、ブロック419〜422が実行される。
ここで、ブロック412(読み込みアクセス要求)について検討する。選択メモリ・ブロックがメイン仮想マシンで(一般に)最初にアクセスされているかどうかを確認するテストが行われる(マッピング・テーブルで示される)。そうである場合(すなわち、選択メモリ・ブロックのアクセス・フラグがアサート解除されているとき)、ストリーミング・ドライバは、リモート・アクセス・ドライバにアクセス要求を渡す。次に、(当該の例で、iSCSIイニシエータとして機能する)リモート・アクセス・ドライバは、ブロック413でソース・サーバのリモート・アクセス・サーバに、対応するダウンロード要求を送信する。ブロック414に続き、ソース・サーバのリモート・アクセス・サーバは、メイン仮想マシンに選択メモリ・ブロックをダウンロードする。ブロック415でストリーミング・ドライバは、(リモート・アクセス・ドライバから受信した)選択メモリ・ブロックを仮想ディスクに格納する。次に、ブロック416で、ストリーミング・ドライバは、対応するアクセス・フラグをアサートすることでマッピング・テーブルを更新する。ブロック412を再度参照すると、逆に(すなわち、選択メモリ・ブロックのアクセス・フラグがアサートされている場合)、ストリーミング・ドライバは、ブロック417で仮想ディスクから、選択メモリ・ブロックを直接読み込む。両方の場合において、方法400は、次に、(ブロック416からか、ブロック417からのいずれかで)ブロック418に移り、ここで、ストリーミング・ドライバは、選択メモリ・ブロックをファイル・システム・ドライバに戻し、このドライバが、次にリクエスタに戻す。
代わりに、ブロック419(書き込みアクセス要求)を考慮すると、アクティビティのフローは、ストリーミング・ドライバの実装に応じて分岐する。特に、ストリーミング・ドライバがブロック・レポジトリをサポートし、選択メモリ・ブロックがまだ更新されていない(すなわち、その更新フラグがアサート解除されている)場合、方法400はブロック420に下降する。この段階で、選択メモリ・ブロックのオリジナルのコピーは、ブロック・レポジトリの最初の空き位置に仮想ディスクからコピーされる。同時に、ブロック・レポジトリのこの位置のアドレスは、マッピング・テーブルにおいて、選択メモリ・ブロックに関連付けられる。次に、方法400はブロック421に進む。ストリーミング・ドライバがブロック・レポジトリをサポートしないか、選択メモリ・ブロックがすでに更新されている場合、ブロック419からも同じ点に直接達する。いずれの場合も、ストリーミング・ドライバは、(初めて格納するか、以前のバージョンを変更するかのいずれかで)選択メモリ・ブロックの所望の値を仮想ディスクに書き込む。次に、ブロック422で、ストリーミング・ドライバは、対応するアクセス・フラグと、(必要であれば)対応する更新フラグとをアサートすることでマッピング・テーブルを更新する。
両方の場合とも、アクティビティのフローは、次の選択メモリ・ブロックにアクセスする要求を待つブロック410に(ブロック418またはブロック422から)戻る。
代わりに、ブロック423(ソフトウェア・イメージの次の展開)について検討する。ターゲット仮想マシンを、(例えば、マッピング・テーブル内のレコードの対応するフラグをアサート解除されたままとすることで)ソフトウェア・イメージの展開のためのセカンダリ仮想マシンとして設定する。その後、ストリーミング・ドライバの実装に応じて、アクティビティのフローがブロック424で分岐する。特に、ストリーミング・ドライバがブロック・レポジトリをサポートしない場合、上記の展開マネージャは、ブロック425でブートストラップ・モジュールをターゲット・サーバにアップロードする。逆に(ストリーミング・ドライバがブロック・レポジトリをサポートする場合)、ブロック426で、展開マネージャは、展開エージェントに対して、メイン仮想マシンからブートストラップ・モジュールのオリジナルのバージョンを再生成するよう指示する。このために、ブートストラップ・モジュールの各メモリ・ブロックは、仮想ディスクから読み出される(対応する更新フラグがアサート解除されている場合)か、その他の場合、ブロック・レポジトリから抽出される。
両方の場合において、方法400は(ブロック425から、またはブロック426から)ブロック427に進む。この時点で、展開マネージャは、展開エージェントに対して、ストリーミング・ドライバを(展開マップで示すとおり、同一ターゲット・サーバ上の同一ソフトウェア・イメージの)メイン仮想マシンのリモート・アクセス・サーバと対話させ、リモート・アクセス・サーバを起動しないよう、(ダウンロードまたは再生成した)ブートストラップ・モジュールを構成する指示を行う。次に、展開マネージャは、展開エージェントに対して、(更新された)ブートストラップ・モジュールのメモリ・ブロックをセカンダリ仮想マシンの仮想ディスクに格納するよう指示する。ここでブロック428を参照すると、展開マネージャは、展開エージェントに対して、セカンダリ仮想マシンをオンにするよう指示する。
セカンダリ仮想マシンのスイムレーンのブロック429に移動すると、セカンダリ仮想マシンは、ブートストラップ・モジュールから通常どおりブートし、その結果、ゲスト・オペテーティング・システムの対応部分と(上記のように初期化した)マッピング・テーブルを伴うストリーミング・ドライバとをロードし、ストリーミング・ドライバは、この場合もやはり、ターゲット仮想マシンの(追加の)選択メモリ・ブロックにアクセスする各要求に応えるために、ゲスト・オペレーティング・システムの標準ファイル・システム・ドライバをオーバーライドする。
ここでブロック430を参照すると、選択メモリ・ブロックにアクセスするアクセス要求がファイル・システム・ドライバに(セカンダリ仮想マシンを動作させるために)送信されるとすぐに、上記のように、この要求はストリーミング・ドライバに渡される。その後、アクセス要求の様式に応じて、アクティビティのフローがブロック431で分岐する。特に、アクセス要求が選択メモリ・ブロックを読み込むものであれば、ブロック432〜444が実行されるのに対して、アクセス要求が選択メモリ・ブロックを書き込むものであれば、ブロック445〜448が実行される。
ここで、ブロック432(読み込みアクセス要求)について検討する。選択メモリ・ブロックがセカンダリ仮想マシンで(一般に)最初にアクセスされているかどうかを確認するテストが行われる(マッピング・テーブルで示される)。そうである場合(すなわち、選択メモリ・ブロックのアクセス・フラグがアサート解除されているとき)、ストリーミング・ドライバは、リモート・アクセス・ドライバにアクセス要求を渡す。次に、(この場合もやはりiSCSIイニシエータとして機能する)リモート・アクセス・ドライバは、ブロック433でメイン仮想マシンのリモート・アクセス・サーバに対応する取得要求を送信する。
メイン仮想マシンのスイムレーンに移動すると、(リモート・アクセス・サーバから取得要求を受信する)ストリーミング・ドライバは、メイン仮想マシンで選択メモリ・ブロックが更新されているかどうかを確認するために、ブロック434でテストを実行する(マッピング・テーブルで示される)。そうである場合(すなわち、選択メモリ・ブロックがダウンロード前に書き込まれているか、あるいはダウンロード後に変更されているかを示すために、選択メモリ・ブロックの更新フラグがアサートされている場合)、アクティビティのフローが、ストリーミング・ドライバの実装に応じてブロック435で分岐する。特に、ストリーミング・ドライバがブロック・レポジトリをサポートしていない場合、方法400はブロック436に下降する。この段階で、ストリーミング・ドライバは、アクセス要求をリモート・アクセス・ドライバに渡し、このドライバが次に、ソース・サーバのリモート・アクセス・サーバに対応するダウンロード要求を送信する。ブロック437に続き、ソース・サーバのリモート・アクセス・サーバは、メイン仮想マシンに選択メモリ・ブロックをダウンロードする。ブロック435を再度参照すると、逆に(つまり、メイン・ストリーミング・ドライバがブロック・レポジトリをサポートしている場合)、ブロック438において、ストリーミング・ドライバは、マッピング・テーブルで示すブロック・レポジトリの場所から選択メモリ・ブロックのオリジナル・バージョンを直接抽出する。代わってブロック434に戻ると、選択メモリ・ブロックがメイン仮想マシンにおいて更新されていない(すなわち、その更新フラグがアサート解除されている)場合、方法400はブロック439に下降する。この段階で、選択メモリ・ブロックは、上記同様の操作を繰り返すことで、メイン仮想マシン上で読み込まれる(すなわち、初めてアクセスされる場合はソース・サーバから選択メモリ・ブロックをダウンロードして仮想ディスクに格納し、またはその他の場合は、仮想ディスクから選択メモリ・ブロックを読み込む)。いずれの場合でも、方法400は、(ブロック437、ブロック438またはブロック439から)ブロック440で再度合流し、ここで、ストリーミング・ドライバは、選択メモリ・ブロックをリモート・アクセス・サーバに渡し、次に、このサーバがセカンダリ仮想マシンのリモート・アクセス・ドライバに戻す。セカンダリ仮想マシンのスイムレーンに戻ると、ブロック441で、ストリーミング・ドライバは、(リモート・アクセス・ドライバから受信した)選択メモリ・ブロックを仮想ディスクに格納する。次に、ブロック442で、ストリーミング・ドライバは、対応するアクセス・フラグをアサートすることでマッピング・テーブルを更新する。
ブロック432に再度戻ると、選択メモリ・ブロックがセカンダリ仮想マシンで既にアクセスされている(すなわち、そのアクセス・フラグがアサートされている)場合、ストリーミング・ドライバは、ブロック443で、ターゲット仮想ディスクから選択メモリ・ブロックを直接読み取る。
両方の場合において、方法400は、次に、(ブロック442からか、ブロック443からのいずれかで)ブロック444に移り、ここで、ストリーミング・ドライバは、選択メモリ・ブロックをファイル・システム・ドライバに戻し、このドライバが、次にリクエスタに戻す。
代わりに、ブロック445(書き込みアクセス要求)について検討する。ブロック419〜422を参照して上述したのと全く同じ動作がブロック445〜448で実行される(そのため、説明は繰り返さない)。
両方の場合とも、アクティビティのフローは、次の選択メモリ・ブロックにアクセスする要求を待つブロック430に(ブロック444またはブロック448から)戻る。
完全に非同期な形で、ソース・サーバのスイムレーンのブロック449で、システム管理者は、対応するソフトウェア・イメージが(展開マップで示すとおり)少なくとも部分的にすでに展開されているターゲット仮想マシン(以降、旧仮想マシンと呼ぶ)の1つを、削除するために展開マネージャを通して選択する。これに応じて、(展開マップで示される)旧仮想マシンのタイプを確認するテストがブロック450で行われる。特に、旧仮想マシンが、そのソフトウェア・イメージに対する対応するターゲット・サーバ上のメイン仮想マシンであれば、方法400はブロック451に移る。この段階で、同一ターゲット・サーバ上のこのソフトウェア・イメージのセカンダリ仮想マシン数を確認する他のテストが行われる(展開マップで示される)。ソフトウェア・イメージのセカンダリ仮想マシンが1つ以上、ターゲット・サーバ上で利用できる場合、そのうちの1つが(旧仮想マシンの代わりに新しいメイン仮想マシンとするよう)ブロック452で選択される。特に、選択セカンダリ・ターゲット仮想マシンは、ソフトウェア・イメージが(少なくとも部分的に)展開されているターゲット・サーバの中で最も古いものである。こうすると、選択されるセカンダリ仮想マシンは、その仮想ディスクに既に格納されたメモリ・ブロックの数が最も多いものとなる可能性が高い。ブロック453に進むと、ここで、選択セカンダリ仮想マシンは、(マッピング・テーブルにおいてレコードの対応するフラグをアサートすることで)ターゲット・サーバ上のソフトウェア・イメージの新しいメイン仮想マシンとして設定される。次に、展開マネージャは、展開エージェントに対して、ブロック454で、ストリーミング・ドライバをソース・サーバのリモート・アクセス・サーバと対話させ、リモート・アクセス・サーバを起動するよう、新しいメイン仮想マシンでブートストラップ・モジュールを構成する指示を行う。その後、展開マネージャは、ブロック455で、展開エージェントに対して、新しいメイン仮想マシンのリモート・アクセス・サーバを起動するよう指示する。また、展開マネージャは、展開エージェントに対して、ブロック456で、(展開マップで示されるように)他のセカンダリ仮想マシンがある場合、そのストリーミング・ドライバを新しいメイン仮想マシンのリモート・アクセス・サーバと対話させるよう、他のセカンダリ仮想マシンのブートストラップ・モジュールを構成するよう指示する。
その後、方法400は、ソース・サーバのスイムレーンのブロック457に続く。同ポイントには、(旧仮想マシンがソフトウェア・イメージに対してターゲット・サーバ上のメイン仮想マシンでない場合)ブロック450から、または、(旧仮想マシンがソフトウェア・イメージに対してターゲット・サーバ上のメイン仮想マシンであるが、同一ソフトウェア・イメージに対してターゲット・サーバ上に利用可能なセカンダリ仮想マシンがない場合)ブロック451からも直接達する。いずれの場合でも、展開マネージャは、展開エージェントに対して、旧仮想マシンをオフにして、ターゲット・サーバから削除するよう指示する。同時に、対応するレコードが展開マップから削除される。
その後、方法400は、同心円状の白/黒の停止円458で終了する。
当然ながら、ローカルおよび特定の要件を満たすために、当業者は、上記解決策に対して、多くの論理的もしくは物理的またはその両方の修正および変更を適用することができる。さらに詳細には、本解決策は、その1つ以上の実施形態を参照して、ある程度特定して説明したものの、形態および詳細における様々な省略、置換、および変更、ならびに他の実施形態が可能であることを理解すべきである。特に、本発明の異なる実施形態は、それをより完全に理解させるために前述の説明に記載した(例えば、数値などの)特定の詳細なしに実施してもよい。逆に、周知の特性については、不必要に細かい説明により不明瞭とならないように、省略または簡略化していることがある。また、開示した解決策のいずれかの実施形態に関連して説明した特定の要素もしくは方法ステップまたはその両方は、一般的な設計選択の事柄として他の実施形態に組み込むこともできることが明確に意図されている。いずれの場合でも、序数または他の修飾子は、同じ名前の要素を単に区別するためのラベルとして使用しているが、それ自体は優先度、先行性または順序を暗示するものではない。また、含む、備える、有する、内包する、伴う(およびそれらの任意の形態)という用語は、オープンで非網羅的な(すなわち、列挙した項目に限定されない)意味を意図するべきであり、基づく、依存する、従う、応じる(およびそれらの任意の形態)という用語は、非独占的な関係として(すなわちさらなる変数も含まれ得る)意図されるべきであり、1つのという用語は、(他に明確に示さない限り)1つ以上の項目としても意図されるべきである。
例えば、本発明の実施形態は、(任意のタイプの(下記参照))ターゲット・データ処理システムの(任意数の任意のタイプの(下記参照))複数のターゲット・データ処理エンティティ上に、(任意のタイプの(下記参照))ソース・データ処理システムから(例えば、何らのアプリケーション・プログラムもなしに、オペレーティング・システムのみ備えるなど、任意のタイプの)ソフトウェア・イメージを展開する方法を提供する。ソフトウェア・イメージは、個々にアクセス可能な(任意数で任意のサイズの)複数のメモリ・ブロックを含む。メモリ・ブロックの(任意数で任意の位置にある)事前定義したサブセットが、(例えば、Linux(Linus Torvaldsの商標)のGRBUブート・ローダを含むMBR、カーネルおよびinitrdファイル・システムを含む/bootディレクトリを含むなど、任意のオペレーティング・システムの任意のタイプの)ブートストラップ・モジュールを定義する。この方法は以下のステップを含む。ブートストラップ・モジュールは、(任意の方法で)ソース・データ処理システムからターゲット・データ処理エンティティのうちのメインのターゲット・データ処理エンティティ上にダウンロードされる。メイン・ターゲット・データ処理エンティティは、ブートストラップ・モジュールからブートされ、それにより、ブートストラップ・モジュールに含まれるストリーミング・ドライバをロードする。メイン・データ処理エンティティ上のソフトウェア・イメージの選択メモリ・ブロックにアクセスする各要求は、ストリーミング・ドライバにより応じられる。ストリーミング・ドライバは、選択メモリ・ブロックにアクセスする要求の最初のものに応じて、ソース・データ処理システムから選択メモリ・ブロックをダウンロードして、選択メモリ・ブロックをメイン・ターゲット・データ処理エンティティに格納する。代わりに、ストリーミング・ドライバは、それ以外の場合、メイン・ターゲット・データ処理エンティティの選択メモリ・ブロックにアクセスする。ブートストラップ・モジュールはまた、(例えば、ソース・データ処理システムからダウンロードする、他のターゲット・データ処理エンティティからコピーする、またはローカルに再生成するなど、任意の方法で)ターゲット・データ処理エンティティのうちの一組の(1つ以上の)セカンダリ・ターゲット・データ処理エンティティの各々に提供される。各セカンダリ・ターゲット・データ処理エンティティは、ブートストラップ・モジュールからブートされ、それにより、ストリーミング・ドライバをロードする。セカンダリ・データ処理エンティティ上のソフトウェア・イメージの追加の選択メモリ・ブロックにアクセスする各要求には、ストリーミング・ドライバが応じる。ストリーミング・ドライバは、追加の選択メモリ・ブロックにアクセスする要求の最初のものに応じて、メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックを取得して、追加の選択メモリ・ブロックをセカンダリ・ターゲット・データ処理エンティティに格納する。代わりに、ストリーミング・ドライバは、それ以外の場合、セカンダリ・ターゲット・データ処理エンティティの追加の選択メモリ・ブロックにアクセスする。
ただし、同解決策は、(さらなるステップまたはその一部の同一機能をもつ同様のステップを用いる、非本質的な一部のステップを除く、またはさらにオプションのステップを追加することで)等価な方法で実装してもよい。また、これらステップは、異なる順序で、同時に、または(少なくとも部分的に)交互に実行してもよい。例えば、ソース・データ処理システムからメモリ・ブロックをメイン・ターゲット・データ処理エンティティにダウンロードすること、もしくは、バックグラウンドで(例えば、対応する作業負荷が小さい場合)セカンダリ・ターゲット・データ処理エンティティによりメイン・ターゲット・データ処理エンティティからメモリ・ブロックを取得すること、またはその両方が可能である。また、ソフトウェア・イメージの全てのメモリ・ブロックが対応するターゲット・データ処理エンティティに格納されると、ストリーミング・ドライバを無効にすることも可能である。
本発明の一実施形態において、ターゲット・データ処理エンティティは、ターゲット・データ処理システム上でホストされるターゲット仮想マシンである。
ただし、仮想マシンは、他の何らかの方法(例えば、ターゲット・サーバのハードウェア上で直接実行されているハイパーバイザのコントロール下)で実装することができる。いずれの場合においても、物理マシン(例えば、ソース・サーバからリモートである同じデータ処理センタのコンピュータ)への同方法の適用は除外されない。
本発明の一実施形態において、メイン・ターゲット・データ処理エンティティをブートするステップは、メイン・データ処理エンティティ上でソフトウェア・イメージに含まれるアクセス・サーバを起動することを含む。追加の選択メモリ・ブロックにアクセスする各要求に対応するステップは、追加の選択メモリ・ブロックにアクセスする最初の要求に応じて、メイン・データ処理エンティティのアクセス・サーバへ、セカンダリ・データ処理エンティティのストリーミング・ドライバにより、追加の選択メモリ・ブロックを取得する要求を送信することと、メイン・データ処理エンティティのアクセス・サーバから、追加の選択メモリ・ブロックを、セカンダリ・データ処理エンティティのストリーミング・ドライバに戻すこととを含む。
ただし、アクセス・サーバは、(例えば、AoEプロトコルに基づく)他の何らかのタイプであってもよい。いずれの場合でも、メモリ・ブロックは、任意の方法で(例えば、専用サービスを介して)セカンダリ・データ処理エンティティによりメイン・ターゲット・データ処理エンティティから取得してもよい。
本発明の一実施形態において、ターゲット・データ処理エンティティのうちのメインのターゲット・データ処理エンティティ上にブートストラップ・モジュールをダウンロードするステップは、選択メモリ・ブロックにアクセスする最初の要求に応えて、ソース・データ処理システムから各選択メモリ・ブロックをダウンロードするようストリーミング・ドライバを構成することを含む。ターゲット・データ処理エンティティのうちの一組のセカンダリ・ターゲット・データ処理エンティティの各々にブートストラップ・モジュールを提供するステップは、追加の選択メモリ・ブロックにアクセスする最初の要求に応えて、メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックそれぞれを取得するようストリーミング・ドライバを構成することを含む。
ただし、ブートストラップ・モジュールは、任意の形(例えば、反対のデフォルト動作またはデフォルト動作なし)に構成してもよい。いずれの場合でも、(メイン・ターゲット・データ処理エンティティと、セカンダリ・ターゲット・データ処理エンティティとに対して)2つの異なるブートストラップ・モジュールを有する可能性を排除するものではない。
本発明の一実施形態において、本方法はさらに以下のステップを含む。ターゲット・データ処理エンティティのうちの最初のものが、ターゲット・データ処理システム上でのソフトウェア・イメージの最初の展開のために提供される。最初のターゲット・データ処理エンティティは、メイン・ターゲット・データ処理エンティティとして設定される。ターゲット・データ処理エンティティのうちの(1つ以上の)次のものの組が、ターゲット・データ処理システム上でのソフトウェア・イメージの次の展開のために提供される。次のターゲット・データ処理エンティティはそれぞれ、セカンダリ・ターゲット・データ処理エンティティとして設定される。
ただし、メインおよびセカンダリ・ターゲット・データ処理エンティティは、異なる方法で(例えば、格納されているメモリ・ブロックの対応数に応じて動的に)選択してもよい。
本発明の一実施形態において、本方法はさらに以下のステップを含む。ターゲット・データ処理システムからメイン・ターゲット・データ処理エンティティを削除する要求が受信される。セカンダリ・ターゲット・データ処理エンティティの1つが選択される。選択したセカンダリ・ターゲット・データ処理エンティティは、新しいメイン・ターゲット・データ処理エンティティとして設定される。メイン・ターゲット・データ処理エンティティは、ターゲット・データ処理システムから削除される。
ただし、メイン・ターゲット・データ処理エンティティを動的に変更できない基本的な実装が考えられる。
本発明の一実施形態において、セカンダリ・ターゲット・データ処理エンティティの1つを選択するステップは、セカンダリ・ターゲット・データ処理エンティティの最も古いものを選択することを含む。
ただし、セカンダリ・ターゲット・データ処理エンティティの選択は、任意の他の追加または代替の基準(例えば、格納されているメモリ・ブロックの数)に基づいてもよい。
本発明の一実施形態において、選択メモリ・ブロックにアクセスする各要求に応じるステップは、メイン・ターゲット・データ処理エンティティにおいて更新された各選択メモリ・ブロックの指示を保存することを含む。メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックを取得するステップは、追加の選択メモリ・ブロックがメイン仮想マシンにおいて更新されたかどうかを確認することと、追加の選択メモリ・ブロックがメイン仮想マシンにおいて更新されている場合は、ソース・データ処理システムから追加の選択メモリ・ブロックをメイン・データ処理エンティティにダウンロードし、その他の場合は、メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックを読み込むこととを含む。
ただし、更新したメモリ・ブロックに関する情報は、他の何らかの方法(例えば、更新されたメモリ・ブロックの別個のリスト)で提供してもよい。いずれの場合でも、ソフトウェア・イメージがターゲット・データ処理エンティティにおいて更新できない基本的な実装を排除するものではない。
本発明の一実施形態において、追加の選択メモリ・ブロックにアクセスする各要求に応じるステップは、セカンダリ・ターゲット・データ処理エンティティにおいて更新された追加の選択メモリ・ブロックそれぞれの指示を保存することを含む。
ただし、この情報は、メイン・ターゲット・データ処理エンティティでのみ(例えば、動的に変更することができない場合に)収集してもよい。
本発明の一実施形態において、選択メモリ・ブロックにアクセスする各要求に応じるステップは、メイン・ターゲット・データ処理エンティティにおいて更新された各選択メモリ・ブロックのオリジナル・バージョンを保存することを含む。メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックを取得するステップは、追加の選択メモリ・ブロックがメイン仮想マシンにおいて更新されたかどうかを確認することと、追加の選択メモリ・ブロックがメイン・ターゲット・データ処理エンティティにおいて更新されていない場合は、追加の選択メモリ・ブロックを、またはその他の場合は、そのオリジナル・バージョンを戻すこととを含む。
ただし、ブロック・レポジトリは、(例えば、既にダウンロードされたソフトウェア・イメージの全体のコピーを格納するなど)任意の構造を有していてもよく、また、新しいセカンダリ・ターゲット・データ処理エンティティを作成するためにも使用してもよい。
本発明の一実施形態において、追加の選択メモリ・ブロックにアクセスする各要求に応じるステップは、セカンダリ・ターゲット・データ処理エンティティにおいて更新された追加の選択メモリ・ブロックそれぞれのオリジナル・バージョンを保存することを含む。
ただし、この動作は、メイン・ターゲット・データ処理エンティティでのみ(例えば、動的に変更することができない場合に)実施してもよい。
本発明の一実施形態は、データ処理システム(例えば、ターゲット・サーバの各々、ソース・サーバまたは展開インフラストラクチャ全体)に、コンピュータ・プログラムがシステム上で実行される際に提案する方法のステップを実施させるコード手段を備えるコンピュータ・プログラムを提供する。
ただし、プログラムは、単に、各々ソフトウェア・イメージからなってもよく、あるいはスタンドアロン・モジュールとしてか、展開マネージャのプラグインとしてか、展開マネージャそのもので直接実装してもよい。いずれの場合でも、プログラムが異なる方法で構成される場合、あるいは追加のモジュールまたは機能が設けられている場合は、同様の考慮事項が適用される。同様に、メモリ構造は、他の型であってもよく、あるいは(必ずしも物理記憶媒体で構成されていない)同等のエンティティで置き換えてもよい。プログラムは、任意のデータ処理システムによって、または(例えば仮想マシン内で)それと関連して使用するのに適した任意の形態をとることができ、これにより、所望の動作を実施するようデータ処理システムを構成する。特に、プログラムは、(オブジェクト・コードまたはソース・コードのいずれかで、例えば、コンパイルまたは解釈されるよう)外部または常駐ソフトウェア、ファームウェア、またはマイクロコードの形態であってもよい。また、任意のコンピュータで使用可能な媒体上にプログラムを(特に、非一時的媒体上の製造物として)提供することができる。この媒体は、プログラムを包含、格納、通信、伝播、または転送するのに適した任意の要素とすることができる。例えば、媒体は、電子、磁気、光学、電磁気、赤外線、または半導体の型であってもよい。このような媒体の例として、(プログラムが事前ロードされることのある)ハード・ディスク、リムーバブル・ディスク、テープ、カード、ワイヤ、ファイバ、無線接続、ネットワーク、放送波などがある。いずれの場合でも、本発明の実施形態による解決策は、(例えば、半導体材料のチップに集積した)ハードウェア構造、または適切にプログラムした、あるいはその他の構成を行ったソフトウェアとハードウェアとの組み合わせでの実装に向いている。
本発明の一実施形態は、同方法のステップを実施する手段(例えば、ターゲット・サーバの各々、ソース・サーバまたは展開インフラストラクチャ全体)を備えるデータ処理システムを提供する。
ただし、データ処理システムが異なる構造を有するか、同等の構成要素を備えるか、または他の作動特性を有している場合は、同様の考慮事項が適用される。いずれの場合でも、それらすべての構成要素は、複数の要素に分離してもよく、2つ以上の構成要素を単一の要素にまとめてもよい。また、各構成要素は、対応動作の実行を並行してサポートするために複製してもよい。また、(特に断らない限り)異なる構成要素間の対話は、一般に連続的である必要はなく、直接的であっても、または1つ以上の仲介物を介して間接的であってもよいことを指摘しておく。さらに詳細には、同方法は、任意の型の(有線もしくは無線またはその両方の)接続を利用する、あるいはスタンドアロン型の異なるアーキテクチャ(例えば、ローカル、ワイド・エリア、グローバル、セルラまたは衛星ネットワーク)に基づくデータ処理システム上で実施してもよい。いずれの場合においても、データ処理システムは、別の構造であってもよく、(例えば、プログラムまたはその一部を一時的に格納するキャッシュ・メモリのような)類似の要素を備えていてもよい。また、データ処理システムを、(PDA、携帯電話等の)物理的マシンまたは仮想マシンのいずれかに基づく任意のコード実行エンティティ、あるいは(多層アーキテクチャ、グリッド・コンピューティング・インフラストラクチャ等の)複数のエンティティの組み合わせと置き換えることができる。
Claims (13)
- ターゲット・データ処理システムの複数のターゲット・データ処理エンティティ上にソース・データ処理システムからソフトウェア・イメージを展開する方法(400)であって、前記ソフトウェア・イメージは、個々にアクセス可能な複数のメモリ・ブロックを備え、前記メモリ・ブロックの事前定義されたサブセットが、ブートストラップ・モジュールを定義しており、前記方法が、
前記ブートストラップ・モジュールを、前記ソース・データ処理システムから、前記ターゲット・データ処理エンティティのうちのメインのターゲット・データ処理エンティティ上にダウンロードする(406)ステップと、
前記メイン・ターゲット・データ処理エンティティを前記ブートストラップ・モジュールからブートし、それにより、前記ブートストラップ・モジュールに含まれるストリーミング・ドライバをロードする(407〜409)ステップと、
前記メイン・ターゲット・データ処理エンティティ上の前記ソフトウェア・イメージの選択メモリ・ブロックにアクセスする各要求に、前記ストリーミング・ドライバにより応じる(410〜422)ステップであって、前記ストリーミング・ドライバが、前記選択メモリ・ブロックにアクセスする前記要求の最初のものに応じて、前記ソース・データ処理システムから前記選択メモリ・ブロックをダウンロードし(413〜414)て前記メイン・ターゲット・データ処理エンティティに前記選択メモリ・ブロックを格納する(415〜416)か、またはその他の場合、前記メイン・ターゲット・データ処理エンティティ内の前記選択メモリ・ブロックにアクセスする(417)、ステップと、
前記ブートストラップ・モジュールを、前記ターゲット・データ処理エンティティのうちの一組のセカンダリ・ターゲット・データ処理エンティティの各々に提供する(423〜427)ステップと、
前記ブートストラップ・モジュールから各セカンダリ・ターゲット・データ処理エンティティをブートし(428〜429)、これにより、前記ストリーミング・ドライバをロードするステップと、
前記セカンダリ・ターゲット・データ処理エンティティ上の前記ソフトウェア・イメージの追加の選択メモリ・ブロックにアクセスする各要求に、前記ストリーミング・ドライバにより応じる(430〜448)ステップであって、前記ストリーミング・ドライバが、前記追加の選択メモリ・ブロックにアクセスする前記要求の最初のものに応じて、前記メイン・ターゲット・データ処理エンティティから前記追加の選択メモリ・ブロックを取得し(433〜440)て前記セカンダリ・ターゲット・データ処理エンティティに前記追加の選択メモリ・ブロックを格納する(441〜442)か、またはその他の場合、前記セカンダリ・ターゲット・データ処理エンティティ内の前記追加の選択メモリ・ブロックにアクセスする(443)、ステップと、
を含む方法。 - 前記ターゲット・データ処理エンティティが、前記ターゲット・データ処理システム上でホストされるターゲット仮想マシンである、請求項1に記載の方法(400)。
- 前記メイン・ターゲット・データ処理エンティティをブートする(407〜409)前記ステップが、
前記メイン・ターゲット・データ処理エンティティ上で前記ソフトウェア・イメージに含まれるアクセス・サーバを起動する(409)ことを含み、
追加の選択メモリ・ブロックにアクセスする各要求に応じる(430〜448)前記ステップが、
前記追加の選択メモリ・ブロックにアクセスする前記最初の要求に応じて、前記追加の選択メモリ・ブロックを取得する要求を、前記セカンダリ・ターゲット・データ処理エンティティの前記ストリーミング・ドライバにより、前記メイン・ターゲット・データ処理エンティティの前記アクセス・サーバに送信する(433)ことと、
前記追加の選択メモリ・ブロックを、前記メイン・ターゲット・データ処理エンティティの前記アクセス・サーバから前記セカンダリ・ターゲット・データ処理エンティティの前記ストリーミング・ドライバに戻す(434〜440)ことと、
を含む、請求項1または2に記載の方法(400)。 - 前記ブートストラップ・モジュールを、前記ターゲット・データ処理エンティティのうちのメインのターゲット・データ処理エンティティ上にダウンロードする(406)前記ステップが、
前記選択メモリ・ブロックにアクセスする前記最初の要求に応じて、前記ソース・データ処理システムから各選択メモリ・ブロックをダウンロードするように前記ストリーミング・ドライバを構成する(406)ことを含み、
前記ブートストラップ・モジュールを、前記ターゲット・データ処理エンティティのうちの一組のセカンダリ・ターゲット・データ処理エンティティの各々に提供する(428〜429)前記ステップが、
前記追加の選択メモリ・ブロックにアクセスする前記最初の要求に応じて、前記メイン・ターゲット・データ処理エンティティから追加の選択メモリ・ブロックそれぞれを取得するように前記ストリーミング・ドライバを構成する(427)こと
を含む、請求項3に記載の方法(400)。 - 前記ターゲット・データ処理エンティティのうちの最初のターゲット・データ処理エンティティを、前記ターゲット・データ処理システム上での前記ソフトウェア・イメージの最初の展開のために提供する(403)ステップと、
前記最初のターゲット・データ処理エンティティを前記メイン・ターゲット・データ処理エンティティとして設定する(405)ステップと、
前記ターゲット・データ処理エンティティのうちの次のターゲット・データ処理エンティティの組を、前記ターゲット・データ処理システム上での前記ソフトウェア・イメージの次の展開のために提供する(403)ステップと、
次のターゲット・データ処理エンティティそれぞれをセカンダリ・ターゲット・データ処理エンティティとして設定する(423)ステップと、
をさらに含む、請求項1乃至4のいずれかに記載の方法(400)。 - 前記ターゲット・データ処理システムから前記メイン・ターゲット・データ処理エンティティを削除する要求を受信する(449)ステップと、
前記セカンダリ・ターゲット・データ処理エンティティの1つを選択する(450〜452)ステップと、
前記選択したセカンダリ・ターゲット・データ処理エンティティを新しいメイン・ターゲット・データ処理エンティティとして設定する(453〜456)ステップと、
前記ターゲット・データ処理システムから前記メイン・ターゲット・データ処理エンティティを削除する(457)ステップと、
をさらに含む、請求項1乃至5のいずれかに記載の方法(400)。 - 前記セカンダリ・ターゲット・データ処理エンティティの1つを選択する(450〜452)前記ステップが、
前記セカンダリ・ターゲット・データ処理エンティティのうちの最も古いものを選択する(452)ステップ
を含む、請求項6に記載の方法(400)。 - 選択メモリ・ブロックにアクセスする各要求に応じる(410〜422)前記ステップが、
前記メイン・ターゲット・データ処理エンティティにおいて更新された各選択メモリ・ブロックの指示を保存する(422)ことを含み、
前記メイン・ターゲット・データ処理エンティティから前記追加の選択メモリ・ブロックを取得する(433〜440)前記ステップが、
前記追加の選択メモリ・ブロックが前記ターゲット仮想マシンにおいて更新されたかどうかを確認する(434)ことと、
前記追加の選択メモリ・ブロックが前記ターゲット仮想マシンにおいて更新された場合は、前記追加の選択メモリ・ブロックを前記ソース・データ処理システムから前記メイン・ターゲット・データ処理エンティティ上にダウンロードし(436〜437)、またはその他の場合は、前記メイン・ターゲット・データ処理エンティティから前記追加の選択メモリ・ブロックを読み込む(439)ことと、
を含む、請求項1乃至7のいずれかに記載の方法(400)。 - 追加の選択メモリ・ブロックにアクセスする各要求に応じる(430〜448)前記ステップが、
前記セカンダリ・ターゲット・データ処理エンティティにおいて更新された追加の選択メモリ・ブロックそれぞれの指示を保存する(448)こと
を含む、請求項8に記載の方法(400)。 - 選択メモリ・ブロックにアクセスする各要求に応じる(410〜422)前記ステップが、
前記メイン・ターゲット・データ処理エンティティにおいて更新された各選択メモリ・ブロックのオリジナル・バージョンを保存する(420)ことを含み、
前記メイン・ターゲット・データ処理エンティティから前記追加の選択メモリ・ブロックを取得する(433〜440)前記ステップが、
前記追加の選択メモリ・ブロックが前記メイン・ターゲット・データ処理エンティティにおいて更新されたかどうかを確認する(434)ことと、
前記追加の選択メモリ・ブロックが前記メイン・ターゲット・データ処理エンティティにおいて更新されていない場合は、前記追加の選択メモリ・ブロックを、またはその他の場合は、その前記オリジナル・バージョンを戻す(438〜439)ことと、
を含む、請求項1乃至7のいずれかに記載の方法(400)。 - 追加の選択メモリ・ブロックにアクセスする各要求に応じる(430〜448)前記ステップが、
前記セカンダリ・ターゲット・データ処理エンティティにおいて更新された追加の選択メモリ・ブロックそれぞれのオリジナル・バージョンを保存する(446)こと
を含む、請求項10に記載の方法(400)。 - コンピュータ・プログラム(300)であって、前記コンピュータ・プログラムがデータ処理システム(100)上で実行される際に、請求項1乃至11のいずれかに記載の前記方法(400)の前記ステップを前記データ処理システムに実施させるコード手段を備えるコンピュータ・プログラム。
- データ処理システム(100)であって、請求項1乃至11のいずれかに記載の前記方法(400)の前記ステップを実施するように構成された手段(300)を備えるデータ処理システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11193151 | 2011-12-13 | ||
EP11193151.5 | 2011-12-13 | ||
PCT/IB2012/056948 WO2013088302A1 (en) | 2011-12-13 | 2012-12-04 | Deployment of a software image on multiple targets with streaming technique |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015501995A true JP2015501995A (ja) | 2015-01-19 |
Family
ID=48573143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014546684A Pending JP2015501995A (ja) | 2011-12-13 | 2012-12-04 | ストリーミング技術を用いた複数ターゲット上でのソフトウェア・イメージの展開方法およびシステム |
Country Status (6)
Country | Link |
---|---|
US (2) | US8930685B2 (ja) |
JP (1) | JP2015501995A (ja) |
CN (1) | CN104011677B (ja) |
DE (1) | DE112012004893B4 (ja) |
GB (1) | GB2512006B (ja) |
WO (1) | WO2013088302A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9053339B2 (en) * | 2010-10-27 | 2015-06-09 | Hytrust, Inc. | System and method for secure storage of virtual machines |
US9092596B2 (en) * | 2012-05-11 | 2015-07-28 | Onyx Protected Systems, Llc | Computer system for preventing the disabling of content blocking software functionality therein, and method therefor |
JP6217034B2 (ja) * | 2013-07-31 | 2017-10-25 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 関連プラグインの管理方法、装置およびシステム |
CN106462457A (zh) * | 2014-02-07 | 2017-02-22 | 瑞典爱立信有限公司 | 虚拟化应用集群 |
EP3103012B1 (en) | 2014-02-07 | 2022-04-06 | Telefonaktiebolaget LM Ericsson (publ) | A technique for operating a system controller of a virtualized application cluster |
WO2016003415A1 (en) * | 2014-06-30 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Securely sending a complete initialization package |
US9547564B1 (en) | 2014-11-10 | 2017-01-17 | Amazon Technologies, Inc. | Automated deployment of applications |
US11119745B2 (en) | 2014-11-10 | 2021-09-14 | Amazon Technologies, Inc. | Automated deployment of applications |
US10459709B1 (en) | 2014-11-10 | 2019-10-29 | Amazon Technologies, Inc. | Automated deployment of applications |
US10228958B1 (en) * | 2014-12-05 | 2019-03-12 | Quest Software Inc. | Systems and methods for archiving time-series data during high-demand intervals |
US10114702B2 (en) * | 2016-01-06 | 2018-10-30 | International Business Machines Corporation | Method and system to discover and manage distributed applications in virtualization environments |
US10467019B2 (en) | 2017-11-22 | 2019-11-05 | Hewlett Packard Enterprise Development Lp | Serving images to server groups |
DE102018116572A1 (de) * | 2018-07-09 | 2020-01-09 | Infineon Technologies Ag | Schutz gegen seitenkanalangriffe |
CN113094679A (zh) * | 2021-04-01 | 2021-07-09 | 深圳鸿祥源科技有限公司 | 一种基于5g网络的遥感试验观测处理设备 |
CN115099291B (zh) * | 2022-08-29 | 2022-11-11 | 同方德诚(山东)科技股份公司 | 一种建筑节能监测方法 |
CN115186014B (zh) * | 2022-09-13 | 2022-12-02 | 江苏巨信众汇数字科技有限公司 | 用于教育实训的数据处理方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496911B2 (en) * | 2001-06-22 | 2009-02-24 | Invensys Systems, Inc. | Installing supervisory process control and manufacturing software from a remote location and maintaining configuration data links in a run-time environment |
US6813587B2 (en) * | 2001-06-22 | 2004-11-02 | Invensys Systems, Inc. | Remotely monitoring/diagnosing distributed components of a supervisory process control and manufacturing information application from a central location |
US7281247B2 (en) | 2003-06-24 | 2007-10-09 | Microsoft Corporation | Software image creation in a distributed build environment |
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 |
US7788713B2 (en) | 2004-06-23 | 2010-08-31 | Intel Corporation | Method, apparatus and system for virtualized peer-to-peer proxy services |
US7702789B2 (en) | 2005-11-03 | 2010-04-20 | International Business Machines Corporation | Apparatus, system, and method for reassigning a client |
US20080086540A1 (en) * | 2006-10-06 | 2008-04-10 | James Scott | Method and system for executing a normally online application in an offline mode |
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 |
US8782637B2 (en) * | 2007-11-03 | 2014-07-15 | ATM Shafiqul Khalid | Mini-cloud system for enabling user subscription to cloud service in residential environment |
US7953833B2 (en) | 2008-01-31 | 2011-05-31 | Wanova Technologies Ltd. | Desktop delivery for a distributed enterprise |
US8434093B2 (en) | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
US8856294B2 (en) | 2009-06-01 | 2014-10-07 | Oracle International Corporation | System and method for converting a Java application into a virtual server image for cloud deployment |
CN102110009B (zh) | 2009-12-28 | 2014-06-11 | 中国移动通信集团公司 | 一种在虚拟化平台中部署应用的方法及虚拟平台管理器 |
US20110213687A1 (en) | 2010-02-26 | 2011-09-01 | James Michael Ferris | Systems and methods for or a usage manager for cross-cloud appliances |
US9130912B2 (en) | 2010-03-05 | 2015-09-08 | International Business Machines Corporation | System and method for assisting virtual machine instantiation and migration |
US8996667B2 (en) | 2010-04-27 | 2015-03-31 | International Business Machines Corporation | Deploying an operating system |
US9612814B2 (en) * | 2012-02-02 | 2017-04-04 | Sungard Availability Services, Lp | Network topology-aware recovery automation |
-
2012
- 2012-10-29 US US13/663,239 patent/US8930685B2/en not_active Expired - Fee Related
- 2012-12-04 DE DE112012004893.8T patent/DE112012004893B4/de active Active
- 2012-12-04 WO PCT/IB2012/056948 patent/WO2013088302A1/en active Application Filing
- 2012-12-04 GB GB1412336.8A patent/GB2512006B/en active Active
- 2012-12-04 JP JP2014546684A patent/JP2015501995A/ja active Pending
- 2012-12-04 CN CN201280061514.7A patent/CN104011677B/zh active Active
-
2013
- 2013-01-14 US US13/741,312 patent/US9104431B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE112012004893T5 (de) | 2014-09-11 |
US8930685B2 (en) | 2015-01-06 |
GB201412336D0 (en) | 2014-08-27 |
CN104011677A (zh) | 2014-08-27 |
GB2512006B (en) | 2015-07-22 |
US9104431B2 (en) | 2015-08-11 |
DE112012004893B4 (de) | 2021-05-12 |
US20130151834A1 (en) | 2013-06-13 |
WO2013088302A1 (en) | 2013-06-20 |
US20130151835A1 (en) | 2013-06-13 |
CN104011677B (zh) | 2017-02-01 |
GB2512006A (en) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015501995A (ja) | ストリーミング技術を用いた複数ターゲット上でのソフトウェア・イメージの展開方法およびシステム | |
JP5649184B2 (ja) | ブート・ブロックの再配置によって複数のソフトウェア・イメージを管理するための方法、コンピュータ・プログラムおよびシステム | |
JP5767565B2 (ja) | ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理) | |
JP5026509B2 (ja) | マシンから仮想マシンへの変換 | |
JP5911504B2 (ja) | ストリーミング技術に基づくソフトウェア・イメージのアップグレード | |
US9086892B2 (en) | Direct migration of software images with streaming technique | |
US9329855B2 (en) | Desktop image management for virtual desktops using a branch reflector | |
US8612737B2 (en) | System and method for supporting multiple hardware platforms with a single disk image | |
AU2012200600B2 (en) | "Converting machines to virtual machines" |