(57)【要約】  大規模なネットワーク化されたシステム内でのサーバー・ノードへのソフトウェアの展開はイメージベースの展開を使用して提供される。ほとんど不変のイメージは中央サービスにおいて提供され、中央サービスからサーバー・ノードへ転送される。イメージは不変である基本イメージ並びに書き込み可能であって基本部分に対して役割に特有の及び／又はノードに特有の状態を提供するデルタ・イメージを含む。サーバー・ノードが中央サーバーからイメージを受け取ると、サーバー・ノードはインストールなしに完全なイメージを格納する。その後、サーバー・ノードは、格納されたイメージからソフトウェアを直接実行する。
2010541044.tif 000002
【特許請求の範囲】
【請求項１】
大規模なネットワーク化されたシステム内で複数のサーバー・ノードにソフトウェアを展開する方法を実行するためのコンピュータが使用可能な命令を具体化した１つ又は複数のコンピューター可読媒体であって、前記方法は、
不変の部分及び書き込み可能な部分を含む第１のイメージを前記大規模なネットワーク化されたシステム内で中央サービスにおいて提供するステップ（４０２）と、
前記中央サービスから前記複数のサーバー・ノードへ前記第１のイメージを転送するステップ（４０４）と、
各サーバー・ノードにおいて、各サーバー・ノードにおける前記第１のイメージのインストールなしに前記第１のイメージを格納するステップ（４０６）と、
前記１つ又は複数のサーバー・ノードにおいて前記第１のイメージから前記ソフトウェアを直接実行するステップ（４０８）と
を含む、１つ又は複数のコンピューター可読媒体。
【請求項２】
前記第１のイメージは、オペレーティング・システム・イメージ及びアプリケーション・イメージのうち少なくとも１つを含む請求項１に記載の１つ又は複数のコンピューター可読媒体。
【請求項３】
前記第１のイメージの前記不変の部分は基本イメージを含み、前記第１のイメージの前記書き込み可能な部分はデルタ・イメージを含む請求項１に記載の１つ又は複数のコンピューター可読媒体。
【請求項４】
前記デルタ・イメージは役割に特有のデータを含む請求項３に記載の１つ又は複数のコンピューター可読媒体。
【請求項５】
１つ又は複数のサーバー・ノードにおいて前記第１のイメージからソフトウェアを直接実行する前記ステップは、前記１つ又は複数のサーバー・ノードの各々において格納された前記のイメージから前記１つ又は複数のサーバー・ノードを直接ブートするステップを含む請求項１に記載の１つ又は複数のコンピューター可読媒体。
【請求項６】
前記方法は、不変の部分及び書き込み可能な部分を含む第２のイメージを前記中央サービスにおいて提供するステップをさらに含む請求項１に記載の１つ又は複数のコンピューター可読媒体。
【請求項７】
前記第１のイメージは第１の役割においてサーバー・ノードの動作を容易にし、第２のイメージは第２の役割においてサーバー・ノードの動作を容易にする請求項６に記載の１つ又は複数のコンピューター可読媒体。
【請求項８】
前記第１のイメージの前記不変の部分は前記第２のイメージの前記不変の部分である請求項６に記載の１つ又は複数のコンピューター可読媒体。
【請求項９】
前記中央サービスにおいて前記第２のイメージを提供する前記ステップは、前記第１のイメージにソフトウェア更新情報を適用することにより前記中央サービスにおいて前記第２のイメージを生成するステップを含む請求項６に記載の１つ又は複数のコンピューター可読媒体。
【請求項１０】
前記方法はさらに、
少なくとも１つのサーバー・ノードに前記第２のイメージを転送するステップと、
前記少なくとも１つのサーバー・ノードにおいて前記第２のイメージのインストールなしに前記第２のイメージを格納するステップと
を含む請求項６に記載の１つ又は複数のコンピューター可読媒体。
【請求項１１】
前記少なくとも１つのサーバー・ノードが前記第１のイメージを実行し続ける間に、前記第２のイメージは前記少なくとも１つのサーバー・ノードに転送される請求項１０に記載の１つ又は複数のコンピューター可読媒体。
【請求項１２】
前記方法は、前記少なくとも１つのサーバー・ノードにおいて前記第２のイメージから前記ソフトウェアを直接実行するステップをさらに含む請求項１０に記載の１つ又は複数のコンピューター可読媒体。
【請求項１３】
前記少なくとも１つのサーバー・ノードは、前記第１のイメージ及び前記第２のイメージをキャッシュに格納し、前記方法は、前記第２のイメージから前記第１のイメージへ前記少なくとも１つのサーバー・ノードの動作をスイッチするステップをさらに含む請求項１２に記載の１つ又は複数のコンピューター可読媒体。
【請求項１４】
大規模なネットワーク化されたシステムにおいて複数のサーバー・ノードにソフトウェア更新情報を展開する方法を実行するコンピューターが使用可能な命令を具体化した１つ又は複数のコンピューター可読媒体であって、前記方法は、
以前のイメージに前記ソフトウェア更新情報を適用することにより、不変の部分及び書き込み可能な部分を含む新たなイメージを生成するステップ（５０４）と、
中央サービスから前記複数のサーバー・ノードへ前記新たなイメージを転送するステップ（５０６）であって、前記複数のサーバー・ノードの少なくとも一部は前記以前のイメージを実行している、転送するステップと、
前記複数のサーバー・ノードにおいて前記新たなイメージをインストールすることなく前記新たなイメージを格納するステップ（５０８）と、
前記１つ又は複数のサーバー・ノードにおいて前記新たなイメージからソフトウェアを直接実行するステップ（５１０）と
を含む、１つ又は複数のコンピューター可読媒体。
【請求項１５】
前記新たなイメージはオペレーティング・システム・イメージ及びアプリケーション・イメージのうち少なくとも１つを含む請求項１４に記載の１つ又は複数のコンピューター可読媒体。
【請求項１６】
少なくとも１つのサーバー・ノードは前記新たなイメージ及び前記以前のイメージをキャッシュに格納し、前記方法は、前記新たなイメージから前記以前のイメージへ前記少なくとも１つのサーバー・ノードの動作をスイッチするステップをさらに含む請求項１４に記載の１つ又は複数のコンピューター可読媒体。
【請求項１７】
前記新たなイメージを生成する前記ステップは、前記以前のイメージの不変の部分に前記ソフトウェア更新情報を適用するステップを含む請求項１４に記載の１つ又は複数のコンピューター可読媒体。
【請求項１８】
不変の部分及び書き込み可能な部分を含むイメージを格納し、複数のサーバー・ノードへ前記イメージを転送する１つ又は複数の計算装置を含む中央サービス（２０２）と、
前記中央サービスから前記イメージを受け取り、前記イメージをインストールすることなく格納し、前記イメージから直接ブートするように構成された複数のサーバー・ノード（２０４）と
を含むシステム。
【請求項１９】
前記中央サービスは複数のイメージを格納し、前記複数のサーバー・ノードへの前記イメージの展開を管理する請求項１８に記載のシステム。
【請求項２０】
前記イメージはオペレーティング・システム・イメージ及びアプリケーション・イメージのうち少なくとも１つを含む請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模なネットワーク化されたシステムにおけるソフトウェアの展開に関する。
【背景技術】
【０００２】
大規模なネットワーク化されたシステムは、ビジネス及び運用上の機能のためにアプリケーションを実行しデータを維持する様々な設定において使用される通常のシステムである。例えば、データセンターは様々なウェブ・アプリケーション（例えば、電子メールサービス、検索エンジンサービスなど）を提供し得る。大規模なネットワーク化されたシステムは、各ノードが物理的なホスト上で走る物理的な計算機又は仮想的な計算機である多くのサーバー・ノードを含む。そのような大規模システム内に含まれ得る多くのサーバー・ノードが部分的には原因となり、様々なノードへのソフトウェア（オペレーティング・システム（ＯＳ）及びアプリケーションの両方）の展開及び各ノード上でのソフトウェアのメンテナンスは、時間を消費し高価な過程になり得る。特に、ソフトウェアは、従来、インストールと更新が個々のノードにとって特有となるように各ノード上でローカルにインストールされアップグレードされている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
オンライン・プロビジョニング及び／又は更新処理中に検出されるにすぎない多くの故障が生じる場合がある。さらに、計算機が連続的にアップグレードされローカルにパッチを当てられる場合、「ビット崩壊」が生じ得る。ビット崩壊とは、人間又はソフトウェアエラーにより生じ得るローカルのソフトウェア状態（local software state）（例えば、ＯＳ設定状態）に対する変更を指す。この状態が変化する場合、ノードの振る舞いは予測不能になり得る。
【課題を解決するための手段】
【０００４】
この概要は詳細な記述においてさらに以下に述べられる概念のうちの選択されたものについて単純化された形式で紹介するために提供される。この概要は、特許請求された主題の主な特徴又は不可欠な特徴を特定するようには意図されず、特許請求された主題の範囲を決定する際の助けとして使用されるようにも意図されない。
【０００５】
本発明の実施例は、大規模なネットワーク化されたシステム内でサーバー・ノードにソフトウェアを展開（配置）すること（deploying）に関する。実施例は、ほとんど不変のイメージ（image）が中央サービスにおいて提供され、中央サービスからサーバー・ノードまで転送される、イメージベースの展開を使用する。イメージは不変の基本イメージ（base image）と、書き込み可能であってベース部分に対して役割に特有の（role-specific）及び／又はノードに特有の（node-specific）状態を提供するデルタ・イメージとを含む。サーバー・ノードが中央サーバーからイメージを受け取ると、サーバー・ノードはインストールなしに完全な（intact）イメージを格納する。その後、サーバー・ノードは、格納されたイメージからソフトウェアを直接的に実行する。
【０００６】
本発明は、添付の図面に関して以下に詳細に説明される。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施における使用に適した例示的なコンピューター環境のブロック図である。
【図２】本発明の実施例が使用され得る例示的なシステムのブロック図である。
【図３】本発明の実施例による、複数の役割及び複数のバージョンについてソフトウェア・イメージを格納する例示的なノート上（オン・ノード、on-node）キャッシュのブロック図である。
【図４】本発明の実施例による、大規模なネットワーク化されたシステムにおいてサーバー・ノードにソフトウェアを展開する方法を示すフロー図である。
【図５】本発明の実施例による、大規模なネットワーク化されたシステムにおいてサーバー・ノードにソフトウェア更新情報（software updates）を展開する方法を示すフロー図である。
【発明を実施するための形態】
【０００８】
本発明の主題は、法的要件を満たすために特異性をもって本明細書に説明される。しかし、当該説明自体は、本特許の範囲を制限するようには意図されない。むしろ、発明者らは、特許請求された主題が、他の現在又は将来の技術とともに、異なるステップ又は本明細書に記載されるものと類似するステップの組合せを含むように、他の方法で具体化されてもよいことを意図している。さらに、「ステップ」及び／又は「ブロック」なる語は、使用される方法の異なる要素を暗示するように本明細書において使用されてもよいが、これらの語は、個々のステップの順序が明示的に記載されない限り、またそのような場合を除いて、本明細書に開示された様々なステップ中で又はステップ間でいかなる特定の順序も暗示するものとは解釈されるべきでない。
【０００９】
前述のように、本発明の実施例は、イメージベースの展開を使用して、大規模ネットワークシステムにおいてサーバー・ノードにソフトウェア展開を提供する。本明細書にて使用されるように、「イメージ」は任意のカプセル化されたネームスペース（namespace）を指す。
【００１０】
従って、１つの態様では、本発明の実施例は、大規模なネットワーク化されたシステム内で多くのサーバー・ノードにソフトウェアを展開する方法を実行するためのコンピューター使用可能な命令を具体化する、１つ又は複数のコンピューター可読媒体を対象としている。当該方法は、大規模なネットワーク化されたシステム内で中央サービス（central service）において第１のイメージを提供することを含む。第１のイメージは不変の部分及び書き込み可能な部分を含む。当該方法はまた、中央サービスからサーバー・ノードへ第１のイメージを転送することを含む。当該方法は、各サーバー・ノードにおいて第１のイメージのインストールを行うことなく、各サーバー・ノードにおいて第１のイメージを格納することをさらに含む。当該方法は、１つ又は複数のサーバー・ノードにおいて第１のイメージからソフトウェアを直接的に実行することをさらに含む。
【００１１】
本発明の別の実施例では、本発明の一態様は、大規模なネットワーク化されたシステムにおいて多くのサーバー・ノードにソフトウェア更新情報を展開する方法を実行するためのコンピューター使用可能な命令を具体化する、１つ又は複数のコンピューター可読媒体を対象とする。当該方法は、以前のイメージに対してソフトウェア更新情報を適用することにより新たなイメージを生成することを含む。本方法はまた、中央サービスから、少なくとも一部のノードが以前のイメージを実行しているようなサーバー・ノードへ、新たなイメージを転送することを含む。本方法は、新たなイメージをインストールせずに、サーバー・ノードにおいて新たなイメージを格納することをさらに含む。本方法は、１つ又は複数のサーバー・ノードにおいて新たなイメージからソフトウェアを直接実行することをさらに含む。
【００１２】
本発明のさらなる態様は、イメージを格納し複数のサーバー・ノードにイメージを転送する１つ又は複数の計算装置を含む中央サービスを含むシステムを対象としている。当該イメージは不変の部分及び書き込み可能な部分を有する。サーバー・ノードは、中央サービスからイメージを受け取り、イメージをインストールすることなくイメージを格納し、イメージから直接的にブートするように構成される。
【００１３】
本発明の概要について概説したが、本発明の様々な態様が実施され得る例示的な動作環境が本発明の様々な態様についての一般的な状況を提供するために以下に述べられる。特に図１を最初に参照すると、本発明の実施例を実施するための例示的な動作環境が、計算装置１００として一般的に示され指定されている。計算装置１００は適切なコンピューター環境の単なる１つの例であり、本発明の使用又は機能の範囲に関していかなる制限も示唆するようには意図されない。また、計算装置１００は、示されている構成要素のいかなる１つ又は組合せに関していかなる依存性も必要性も有しているものとは解釈されるべきでない。
【００１４】
本発明は、コンピューター又は個人用携帯情報端末もしくは他のハンドヘルド装置などの他の計算機によって実行されるプログラムモジュールなどのコンピューター実行可能命令を含むコンピューター・コード又は計算機使用可能な命令の一般的な文脈において述べられてもよい。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムモジュールは、特定のタスクを実行し又は特定の抽象データ型を実施するコードを指す。本発明は、携帯端末、家電、汎用コンピューター、より特殊な計算装置などを含む様々なシステム構成において実施されてもよい。本発明は、通信網を介してリンクされる遠隔処理装置によってタスクが実行される分散コンピューティング環境で実施されてもよい。
【００１５】
図１に関して、計算装置１００は、直接的に又は間接的に次のデバイスを接続するバス１１０を含む：メモリー１１２、１つ以上のプロセッサー１１４、１つ以上の提示コンポーネント１１６、入出力ポート１１８、入出力コンポーネント１２０及び説明のための電源１２２。バス１１０は、１つ以上のバス（アドレスバス、データバス又はその組合せなど）であってもよいものを表す。図１の様々なブロックは明瞭さのために実線で示されるが、実際には、様々なコンポーネントの描写はそれほど明確ではなく、比喩的には、実線はより正確には灰色であって、曖昧である。例えば、ディスプレイ装置などの提示コンポーネントをＩ／Ｏコンポーネントと考えてもよい。また、プロセッサーはメモリーを有している。我々は、そのようなものが技術の性質であることを認識し、図１の図が本発明の１つ又は複数の実施例に関して使用することができる例示的な計算装置の例にすぎないことを繰り返して述べる。すべてが図１及び「計算装置」への言及の範囲内で考慮されるので、「ワークステーション」、「サーバー」、「ラップトップ」、「携帯端末」などのカテゴリーは区別されない。
【００１６】
計算装置１００は、通常、様々なコンピューター可読媒体を含む。コンピューター可読媒体は、計算装置１００によってアクセスすることができ、揮発性及び不揮発性の媒体、取り外し可能及び取り外し不能の媒体を含む任意の利用可能な媒体であり得る。制限ではなく例として、コンピューター可読媒体は、コンピューター記憶媒体及び通信媒体を含んでもよい。コンピューター記憶媒体は、コンピューター可読命令、データ構造、プログラム・モジュール又は他のデータなどの情報の記憶のための任意の方法又は技術において実装される、揮発性及び不揮発性の媒体の両方、取り外し可能及び取り外し不能な媒体の両方を含む。コンピューター記憶媒体は、所望の情報を格納するために使用することができ、計算装置１００によってアクセスすることができる、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）もしくは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、又は他の媒体を含むが、これらに制限されない。通信媒体は、通常、コンピューター可読命令、データ構造、プログラムモジュール又は他のデータを搬送波又は他の移送機構などの変調データ信号で具体化し、任意の情報配信媒体を含む。用語「変調データ信号」は、信号中に情報を符号化するような方法でその１つ又は複数の特性が設定又は変更された信号を意味する。制限ではなく例として、通信媒体は、有線ネットワークもしくは直接有線接続などの有線媒体、及び、音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体を含む。上記のもののうちのいずれの組合せもコンピューター可読媒体の範囲に含まれるべきである。
【００１７】
メモリー１１２は、コンピューター記憶媒体を揮発性及び／又は不揮発性メモリーの形式で含む。当該メモリーは、取外し可能、取り外し不能又はその組合せであってもよい。例示的なハードウェアデバイスは固体メモリー、ハードドライブ、光ディスクドライブなどを含む。計算装置１００は、メモリー１１２又はＩ／Ｏコンポーネント１２０のような様々なエンティティからデータを読み出す１つ以上のプロセッサーを含む。提示コンポーネント１１６はユーザー又は他の装置にデータ表示を提示する。例示的な提示コンポーネントはディスプレイ装置、スピーカー、印刷コンポーネント、振動コンポーネントなどを含む。
【００１８】
Ｉ／Ｏポート１１８は、計算装置１００がＩ／Ｏコンポーネント１２０を含む他のデバイスに論理的に接続されることを可能にし、それらのうちのいくつかは内蔵されてもよい。例となるコンポーネントは、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナー、プリンターー、ワイヤレス装置などを含む。
【００１９】
次に図２を参照すると、ブロック図は、本発明の実施例に従ってサーバー・ノードにソフトウェアを展開することを容易にするシステム２００を示すように提供される。ここに記述されたこの配置及び他の配置が例としてのみ述べられることが理解されるべきである。他の配置及び要素（例えば、機械、インターフェース、機能、順序及び機能のグループ化）は、図示されたものに加えて、又はその代わりに使用することができ、いくつかの要素はすべて省略されてもよい。さらに、ここに記述された要素の多くは、別個のコンポーネント又は分散されたコンポーネントとして実施され、又は他のコンポーネントと共に実施され、任意の適切な組合せ及び位置において実施され得る機能的なエンティティである。１つ又は複数のエンティティによって行われるものとしてここに記載された様々な機能は、ハードウェア、ファームウェア及び／又はソフトウェアによって実行されてもよい。例えば、様々な機能はメモリーに格納された命令を実行するプロセッサーによって実行されてもよい。
【００２０】
図示されない他のコンポーネントの中で、システム２００は、一般に、中央サービス２０２、サーバー・ノード２０４及びネットワーク２０６を含んでもよい。中央サービス２０２及びサーバー・ノード２０４を含むシステム２００のコンポーネントの各々は、例えば図１に関して記述された計算装置１００のような任意のタイプの計算装置を含んでもよい。当該コンポーネントはネットワーク２０６によって互いに通信してもよく、そのようなネットワークは、１つ又は複数のローカルエリアネットワーク（ＬＡＮ）及び／又は広域ネットワーク（ＷＡＮ）を含んでもよく、これらに制限されない。そのようなネットワーキング環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット及びインターネットにおいてありふれたものである。本発明の範囲内において、システム２００内に任意の数の中央サービス、サーバー・ノード及びネットワークが使用されてもよいことが理解されるであろう。さらに、システム２００の他の多くのコンポーネントは図示されないが、当業者であれば、そのようなコンポーネント及びそれらの相互接続が周知であることを認識するであろう。従って、システム２００に示されないコンポーネントに関する追加の詳細は本明細書においてさらに開示されない。
【００２１】
中央サービス２０２は、システム２００内でサーバー・ノード２０４に対するソフトウェア（ＯＳ及び／又はアプリケーション）の展開を管理するために１つ以上の計算装置（図１の計算装置１００など）を含んでもよい。中央サービス２０２はイメージを構築し格納する責務を負う。さらに、中央サービス２０２はサーバー・ノード２０４にイメージを転送する責務を負う。
【００２２】
本発明の実施例は、少なくとも２つのものが意味されるイメージベースの展開を使用する。第１に、サーバー・ノード２０４はそれぞれ、ノード２０４が実行する予定であるソフトウェアの正確なイメージを送られる。サーバー・ノード２０４は、１つの位置からまずＯＳをインストールし、次に別の位置からのものであり得る追加の支援ソフトウェアをインストールし、最後に第３の位置からアプリケーション・ソフトウェアをインストールすることによってそのソフトウェアをアセンブルするのではない。その代わりに、サーバー・ノード２０４は、実行する準備ができているソフトウェアをパッケージで受け取る。次に、サーバー・ノード２０４は、展開（配置）したイメージからソフトウェアを直接実行する。時間を消費し、エラーを引き起こす傾向があるので、ノード２０４は、計算機にソフトウェアをインストールするためのソースとしてイメージを単に使用することはしない。その代わりに、サーバー・ノード２０４は、実際にイメージからＯＳをブートする。
【００２３】
アプリケーションの状態は、各サーバー・ノード２０４に少なくとも２つの別個のイメージ（すなわち、ＯＳイメージ及びアプリケーション・イメージ）を展開することにより、ＯＳ状態から分離される。イメージは中央サービス２０２において別個に構築され、サーバー・ノード２０４において分離されたままである。アプリケーションはこの分離に気づいている必要がある。従って、１つの実施例では、アプリケーションが実行されるＯＳイメージはアプリケーション・イメージとは異なるドライブ名（ドライブ・レター、drive letter）に現れる。特定のドライブ名割り当ては事前に定義されないが、構成を通じてアプリケーションに利用可能である。
【００２４】
実施例におけるソフトウェア・イメージ（例えばＯＳイメージ又はアプリケーション・イメージ）はそれぞれ、基本イメージ及びデルタ・イメージを含む。基本イメージは不変（又は読み出し専用）である一方、デルタ・イメージは書き込み可能である。デルタ・イメージは、役割に特有の状態及び／又はノードに特有の状態を基本イメージに提供するように働く。役割に特有の及び／又はノードに特有のデータは、中央サービス２０２において展開に先立って、及び／又は個々のサーバー・ノード２０４において展開の後に、デルタ・イメージに書き込まれてもよい。基本イメージ及びデルタ・イメージは、中央サービス２０２において別個に保持され、展開時に合併されてもよい。
【００２５】
基本イメージ及びデルタ・イメージの使用と組み合わされた、別個のイメージへのＯＳ及びアプリケーションの分離は、ノードによって実際に実行される「イメージ」が１組のいくつかの物理ファイルを含むことを意味する。従って、「イメージ」は、ファイル（すべての基本イメージ及びデルタ・イメージ）の全体の組を指す。「ＯＳイメージ」又は「アプリケーション・イメージ」は、それぞれＯＳイメージ又はアプリケーション・イメージに対してディスク・セット（基本イメージ及びデルタ・イメージ）を作り上げるファイルの組をそれぞれ指す。
【００２６】
本発明の１つの実施例では、イメージは、単一のファイル内にカプセル化された生来のホスト・ファイルシステム上に存在することができる仮想計算機ハードディスクを特定する、マイクロソフト（登録商標）仮想ハードディスク（ＶＨＤ）フォーマットを使用して格納される。ＶＨＤフォーマットは、「基本」ＶＨＤファイル及び「デルタ」ＶＨＤファイルという２つのファイルに単一の論理ディスクが保持されるようなディスクの差別化を提供する。本発明の実施例では、役割ごと及びノードごとの状態がデルタＶＨＤに存在している一方、共通の状態は基本ＶＨＤに存在する。基本ＶＨＤは読み出し専用であり、エミュレートされたディスクに対して行われたいかなる変更も、デルタＶＨＤに書き込まれる。ＶＨＤフォーマットはここで具体的に言及されるが、当業者であれば、他のパッケージ技術（例えば、ＷＩＭ）が本発明の実施例の範囲内で使用されてもよいことを認識するであろう。
【００２７】
本発明の実施例によるイメージベースの展開は、以下を含むいくつかの方法で、迅速で信頼できるサーバー・プロビジョニングを可能にする：
・サーバー・ノード２０４上でのインストール段階はなく、したがって、一旦イメージがサーバー・ノード２０４に展開されれば、ノード２０４は割り当てられたソフトウェアへ迅速にブートすることができる。
【００２８】
・イメージは、中央サービス２０２において中心的に組み立てられ、この過程中に生じるいかなるエラーも、ノードごとのインストールの間に生じ得るエラーより容易に検出できる。
【００２９】
・サーバー・ノード２０４は、イメージから直接ブートして、ノード２０４がそれらの現在の役割を実行している間、背景において新たなイメージ（更新情報又は異なる役割のいずれか）を展開することを可能にする。一旦新たなイメージが適所に配置されると、ノード２０４は最小の休止時間でそれらの新たな役割へブートすることができる。ある場合には、旧イメージがノード２０４上でキャッシュされたままであり、必要ならば、ノード２０４は、最小の休止時間でその以前の状態に戻されることができる。
【００３０】
・展開したイメージ中のほとんどのコンテンツはすべてのノード２０４にわたって同一であり、役割ごとの状態及び／又はノードごとの状態は、デルタ・イメージを使用して、共通の状態とは別に分離される。これにより、ＯＳ又はアプリケーション・イメージのそのバージョンを実行するすべての物理的なノード２０４にマルチキャストによって共通の状態（基本イメージ）を同時に送信することを可能にする。これにより、展開によって必要とされるネットワーク帯域幅を低減し、展開（roll-outs）をより迅速に起こすことができる。
【００３１】
・同様に、仮想ホストにおいては、ＯＳデータの大部分はすべての割り当てられたゲスト・ノードにわたって同一であり、当該ホストへＯＳ基本ＶＨＤの１つのコピーのみを送る必要がある。
【００３２】
イメージベースの展開はまた、サーバー・ノード２０４上でのパッチが必要ではないので、「ビット崩壊」問題を低減するのに役立つ。これに代えて、パッチをインストールする必要があるか又はアプリケーションの新たなバージョンが利用可能な場合、イメージの新たなバージョンが中央サービス２０２において作成され、次に、サーバー・ノード２０４に向けられる。これにより、パッチエラーが展開の前に検出され、すべてのサーバー・ノード２０４が同じ組のビットを実行することを保証することが可能になる。通常の動作の間に、所与のノードの状態がある態様で（例えば、ディスクエラーのために）破損している場合、中央サービス２０２は、ノードの状態に関する「真実」を有しているので、当該イメージを再展開して、ノード２０４を既知の良好な状態へと迅速に確実に戻すことができる。
【００３３】
実施例では、イメージベースの展開はまた、同じイメージ形式を両方のモードに使用することにより、物理的ノード及び仮想ノードの両方に対して直接的な展開を可能にして、同じ基本イメージがすべてのサーバー・ノード２０４に展開されることを可能にする。仮想ノードについてイメージを展開するために、イメージは物理的なサーバー・ノード２０４上のルートパーティションに送られ、次に、仮想計算機はエミュレートされた物理ディスクとして添付されたそのイメージにより実行される。物理的なサーバー・ノード２０４についてイメージを展開するために、イメージはノード２０４上で走るメンテナンスＯＳに送られ、当該イメージは物理ディスク上に（ファイルとして）格納される。その後、サーバー・ノード２０４は、ディスク上で元来利用可能なイメージから直接リブートされる。例えば、いくつかの実施例では、サーバー・ノード２０４は、ディスクとしてイメージを元来利用可能にする特別なドライバーを使用して、イメージから直接リブートされる。
【００３４】
イメージベースの展開が動的な状態から定常状態を分離するので、フラッシュ・ドライブの着用限界問題（wear limit problems）は、基本イメージを一度書き込み（すなわち、イメージが中央サービス２０２において構築される場合）、デルタ・イメージへの書き込みを隔離することにより、低減又は（全般的に）回避されてもよい。いくつかの実施例では、白紙の状態のすべての時間から開始して、基本イメージは一度書き込まれてもよいし、デルタ・イメージはＲＡＭに維持されてもよい。これにより、着用限界問題をすべて回避でき、処理状態を把握しない（stateless）フロントエンドのサーバー・ノードにふさわしい動作モードになる。
【００３５】
イメージベースの展開は、さらにディスクレスの動作モードの使用を可能にする。例えば、１つの実施例では、サーバー・ノード２０４は遠隔のディスクイメージ（例えば、インターネット・スモールコンピューターシステムインターフェース（ｉＳＣＳＩ）を使用して）を使用してもよい。別の実施例では、サーバー・ノード２０４はＲＡＭｄｉｓｋとしてイメージを扱って、ＲＡＭからブートする。
【００３６】
以前に示されたように、中央サービス２０２は展開可能なイメージの構築及びサービスのためのコンポーネントを含む。イメージは、中央サービス２０２によってオフラインで（すなわち、アクティブのサーバー・ノード２０４上でではなく）構築される。
【００３７】
ＯＳイメージについては、中央サービス２０２は最初にＯＳ基本イメージを構築する。いくつかの実施例では、複数の（例えば、異なるバージョンの）ＯＳ基本イメージが構築されてもよい。サービス役割（service role）は役割に特有の状態を加えることによりＯＳ基本イメージに基礎を置く。役割に特有の状態の例は、ＯＳのオプションのコンポーネントを可能にすること、外部ソフトウェアの追加及びＯＳ設定の変更を含む。中央サービス２０２は、ＯＳ基本イメージから分離されるがＯＳ基本イメージにリンクされるデルタ・イメージを作成することにより、この役割の特有の状態を展開のために利用可能とする。これとともに、共通のＯＳ基本イメージ及び役割に特有のデルタ・イメージは、中央サービス２０２からサーバー・ノード２０４に送られるＯＳイメージになる。
【００３８】
実施例において、デルタ・イメージを構築する過程は、オフライン仮想計算機中のイメージのブートが後に続く、イメージのオフライン構成を含む。この仮想計算機ブートは、すべてのサーバー・ノード２０４上ではなく、オフライン構成中に一度待ち行列に入れられる「オンライン・アクション」を実行するために使用される。
【００３９】
いくつかの実施例では、中央サービス２０２はまた、ノードに特有のＯＳ構成設定、例えばアプリケーション開発者によって指定された設定などを可能にする。さらに、中央サーバー２０２によって生成されたノードに特有のＯＳ構成設定があってもよい。これらの設定はＯＳイメージと共にサーバー・ノード２０４に展開され、ノードに特有のデルタ・イメージを作成するためにノード２０４において役割に特有のデルタ・イメージのコピーに適用される。ノード２０４はこのイメージからＯＳを直接ブートする。
【００４０】
アプリケーション・イメージは、同様に、基本イメージ及びデルタ・イメージを含む。実施例では、アプリケーション開発者は、それらの２進数及び構成の設定を記述するマニフェスト（manifest）を提供してもよく、この記述はアプリケーションのために基本イメージを構築するために使用される。ノードに特有のアプリケーション構成設定はアプリケーション基本イメージと共にサーバー・ノード２０４に展開され、ノードに特有のデルタ・イメージを作成するためにノード２０４において適用される。サーバー・ノード２０４は、このイメージからアプリケーションを直接実行する。
【００４１】
ＯＳとアプリケーションのパッチ及び更新情報が利用可能な場合、パッチ及び更新情報はサーバー・ノード２０４において個々に適用されない。代わりに、パッチ及び更新情報は、新たな展開イメージを作成するために中央サービス２０２においてオフラインで適用され、その後、それはサーバー・ノード２０４に展開される。中央サービス２０２において新たなイメージを作成し、次に、サーバー・ノード２０４にイメージを展開することによって、この過程は、サーバー・ノード２０４上の失敗したパッチ又は部分的に適用されたパッチの問題を回避する助けとなる。
【００４２】
以前に示されたように、中央サービス２０２において構築されたイメージはサーバー・ノード２０４に展開される。言いかえれば、イメージは中央サービス２０２からシステム２００内の様々なノード２０４に転送されてもよい。いくつかの実施例において、基本イメージはノードごとの状態を含まないので、同じＯＳ及びアプリケーションの基本イメージは多くのサーバー・ノード２０４によって使用することができる。これは、多くのノード２０４が同時にセットアップされる必要がある場合に同じファイルを何度もコピーする必要があることを意味する。ネットワーク帯域幅使用を低減するために、本発明の実施例は、多くのノードにファイルを同時に送るためにマルチキャスト・プロトコルを使用する。
【００４３】
イメージがサーバー・ノード２０４で受け取られた後、ノード２０４はインストールなしに当該イメージを保存する。これにより、サーバー・ノード２０４は、展開されたイメージのキャッシュを保持することが可能になる。言いかえれば、イメージはサーバー・ノード２０４にインストールされないが、その代わりにイメージ形式で保存されるので、サーバー・ノード２０４上にイメージの複数のセット（例えば、ＯＳ及び／又はアプリケーションの異なるバージョン）をキャッシュに入れることが可能である。この設計はシステムへ柔軟性を提供し、様々な機能を可能にする。
【００４４】
最初に、サーバー・ノード２０４が画像のキャッシュを含むことを可能にすることにより、背景において新たなイメージをロールアウトする能力が提供される。特に、ＯＳ又はアプリケーションのイメージの新たなバージョンが展開される準備ができている場合、それらのノード２０４が以前のバージョンを実行している間、新たなバージョンを宛先ノード２０４にコピーすることができる。これは、コピー時間が休止時間ではないことを意味し、ネットワーク帯域幅が問題である場合、コピーはよりゆっくりとしたペースで進めることができ、又は、ネットワーク負荷の一時的中断の間に起こり得ることを意味する（上述のように、ネットワーク帯域幅もまたマルチキャスト送信の使用により保存されてもよい）。イメージのダウンロードはイメージの起動から分断され、ダウンロードされたイメージの確認を可能にし、ノードをイメージの新たなバージョンへいつ切り替えるかを決定する際により多くの自由度を与える。
【００４５】
いくつかの実施例において、イメージの新たなバージョンが展開される場合、以前のバージョンはサーバー・ノード２０４上のイメージ・キャッシュ中に保存される。問題がロールアウト・シーケンス中に生じる場合（例えば、１０００のサーバー・ノード２０４のうちの５００のサーバー・ノード上でイメージを活性化した後に、サービスが通常どおり動作していないと分かった場合）、既に前進させられたノード２０４は、以前のイメージへリブートすることにより非常に迅速に戻されることができる。以前のイメージを再びダウンロードしたり以前のイメージを再インストールしたりする必要はない。一旦その問題が解決されたならば、ロールアウトを繰り返すことができる。（当該解決が新たなイメージへの変更を含んでいない場合、新たなイメージを再度コピーする必要がないことに注意されたい。）
実施例はまた、最後の既知の良好な状態にサーバー・ノード２０４を容易に戻す。ノード２０４上のＯＳボリューム又はアプリケーション・ボリュームに対して行われる変更はデルタ・イメージに格納される。役割が活性化される前に、オリジナルのデルタ・イメージを保存することができ、問題が変更のために生じる場合には、オリジナルのデルタ・イメージは展開サーバー（すなわち、中央サービス２０２）からコピーすることなく回復することができる。
【００４６】
さらに、本発明の実施例は、サーバー・ノード２０４がキャッシュに入れられたイメージを使用して容易に役割を切り替えることを可能にする。特に、１つより多くの役割に対応するイメージは、所与のサーバー・ノード２０４上でキャッシュに入れることができる。従って、ノード２０４をある役割から別の役割へと切り替えることはノード２０４をリブートするのと同じくらい単純である。切り替えを行うことについて再インストールのコストはない。
【００４７】
実施例はさらに、チェックサムを使用して基本イメージに対する変更を識別することを容易にする。いかなる変更もデルタ・イメージに書き込まれるので、基本イメージはサーバー・ノード２０４上で読み出し専用である。これは、エラー（例えば、ディスクエラー）により生じる基本イメージに対する変更をチェックサムを通じて検出することができることを意味する。そのような変更が生じる場合、基本イメージはサーバー・ノード２０４に再びコピーすることができる。
【００４８】
限定ではなく単なる例として、図３は、ノード上の（オンノードの）イメージ・キャッシュ３００のコンテンツの例を示すブロック図を示している。現在の例において、イメージは２つの役割のためにキャッシュに格納される。例えば、役割１はサーバー・ノードが電子メールサービスを提供することを可能にしてもよい一方、役割２はサーバー・ノードが検索エンジンサービスを提供することを可能にしてもよい。以前に示されたように、両方の役割のためにイメージをキャッシュに入れることによって、サーバー・ノードは単にノードをリブートすることにより１つの役割から別の役割へと容易に迅速に切り替えられる。さらに、役割１のバージョン１．０及び１．１の２つのバージョンが存在する一方、役割２については１つのバージョン１．１のみがキャッシュに存在する。上述のように、必要ならば、特定の役割の複数のバージョンをキャッシュに入れることによって、サーバー・ノードは以前のバージョンへと迅速に戻され得る。例えば、役割１のバージョン１．１がアクティブな役割である場合、以前のバージョンがキャッシュに格納されているので、リブートすることにより、役割１のバージョン１．０へと迅速にサーバー・ノードを戻すことができる。
【００４９】
図３に示されるように、役割１のバージョン１．０はＯＳ  ｖｌ．０基本イメージ３０２、ＯＳ  ｖｌ．０デルタ・イメージ３０４、Ａｐｐ  １  ｖｌ．０基本イメージ３０６及びＡｐｐ  １  ｖｌ．０デルタ・イメージ３０８を含む。役割１のバージョン１．１は、ＯＳ  ｖｌ．ｌ基本イメージ３１２、ＯＳ  ｖｌ．ｌデルタ・イメージ３１４、Ａｐｐ  １  ｖｌ．ｌ基本イメージ３１６及びＡｐｐ  １  ｖｌ．ｌデルタ・イメージ３１８を含む。役割２のバージョン１．１は、ＯＳ  ｖｌ．ｌ基本イメージ３１２、ＯＳ  ｖｌ．ｌデルタ・イメージ３２４、Ａｐｐ  ２  ｖｌ．ｌ基本イメージ３２６及びＡｐｐ  ２  ｖｌ．ｌデルタ・イメージ３２８を含む。役割１のバージョン１．１及び役割２のバージョン１．１が両方ともＯＳ  ｖｌ．ｌ基本イメージ３１２を使用し、したがって、そのイメージの１つのコピーのみがキャッシュに格納され、共有されてもよいことに留意されたい。
【００５０】
図４に移ると、本発明の実施例による大規模なネットワーク化されたシステム内でサーバー・ノードにソフトウェアを展開する例示的な方法４００を示すフロー図が提供される。最初に、ブロック４０２で示されるように、ソフトウェア・イメージは、図２の中央サービス２０２のような中央サービスにおいて提供される。ソフトウェア・イメージはＯＳイメージ又はアプリケーション・イメージを含んでもよい。上述のように、ソフトウェア・イメージは読み出し専用である基本イメージ及び書き込み可能であるデルタ・イメージを含む。デルタ・イメージは、役割に特有及び／又はノードに特有の状態を加えることにより、基本イメージに基礎を置くように意図される。いくつかの実施例において、中央サービスは複数のＯＳイメージ及び複数のアプリケーション・イメージを保持し、システム内のサーバー・ノード（例えば、図２のサーバー・ノード２０４）への様々なイメージの展開を管理する。
【００５１】
ブロック４０４で示されるように、イメージは中央サービスからそのイメージについての宛先サーバー・ノードまで転送される。特に、中央サービスにおけるイメージのコピーは、宛先サーバー・ノードの各々に送られる。サーバー・ノードが中央サービスからイメージを受け取ると、ブロック４０６で示されるように、サーバー・ノードはインストールなしにイメージを保存する。以前に示したように、これはサーバー・ノードに対するソフトウェアの従来の展開とは著しい対照をなす。従来、ソフトウェアは各サーバー・ノードにおいてインストールされ、それはソフトウェアから個々のファイルを「解凍すること」及びディスクに個々のファイルをコピーすることを含んでいた。対照的に、本発明の実施例では、イメージはインストールなしにディスクに保存される。従って、ソフトウェアの個々のファイルはサーバー・ノード上に個々のファイルとして存在しないが、代わりに、イメージの一部としてのみ存在する。
【００５２】
ブロック４０８で示されるように、サーバー・ノードは次にイメージから直接的にソフトウェアを実行する。ＯＳイメージの場合には、サーバー・ノードはＯＳイメージから直接ブートする。アプリケーション・イメージの場合には、サーバー・ノードが、イメージからアプリケーションを直接実行する。従って、サーバー・ノードはマシン上でソフトウェアをインストールするためのソースとしてイメージをただ使用するわけではなく、代わりに、ＯＳイメージの場合にはイメージから実際にＯＳをブートし、アプリケーション・イメージの場合にはイメージからのアプリケーションを実行する。
【００５３】
以前に示されたように、ソフトウェアパッチ／更新情報が利用可能な場合、パッチ／更新情報は、個々のノードにおいて適用されるのとは対照的に、中央サービス（例えば、図２の中央サービス２０２）においてイメージに適用される。本発明の実施例によるソフトウェア更新情報を適用する例示的な方法５００は、図５に示される。最初に、ブロック５０２で示されるように、ソフトウェア更新情報は中央サービスで受け取られる。ブロック５０４で示されるように、ソフトウェア更新情報は新たなイメージをオフラインで生成するために中央サービスにおいて以前のイメージのコピーに対して適用される。実施例においては、新たなイメージを生成するために、基本イメージの現在のバージョンがコピーされ、新たな基本イメージがマウントされる。ソフトウェア更新情報が適用され、新たな基本イメージが次にアンマウントされる。役割に特有のデルタ・イメージも再生成されてもよい。新たな基本イメージ及び再生成された役割に特有のデルタ・イメージは、ともにソフトウェア更新情報を備えた生成された新たなイメージを含む。
【００５４】
実施例では、イメージが積極的に改訂され（strongly versioned）てもよいことに留意されたい。従って、以前のイメージは新たなイメージに加えて中央サービスにおいて保持されてもよい。従って、ＯＳイメージ又はアプリケーション・イメージの複数のバージョンが中央サービスにおいて保持されてもよく、中央サービスは、各サーバー・ノードの役割に依存して異なるサーバー・ノードに対して様々なバージョンの展開を管理してもよい。
【００５５】
ソフトウェア更新情報に基づいて中央サービスにおいて新たなイメージを生成した後に、ブロック５０６で示されるように、新たなイメージのコピーは、システム内の各宛先サーバー・ノード（例えば、図２のサーバー・ノード２０４）に転送される。サーバー・ノードは、以前のイメージが実行されている間に新たなイメージを受け取って、イメージ転送中のいかなる休止時間も防止する。ブロック５０８で示されるように、サーバー・ノードはインストールなしにディスクへ新たなイメージを保存する。従って、新たなイメージは、サーバー・ノードが現在実行しているイメージを含むサーバー・ノード上の任意の以前にキャッシュに入れられたイメージに加えて、完全なイメージとしてディスクに保存される。
【００５６】
ブロック５１０で示されるように、サーバー・ノードは次に新たなイメージから直接ソフトウェアを実行する。ＯＳイメージの場合には、サーバー・ノードは、新たなＯＳイメージから直接リブートする。アプリケーション・イメージの場合には、サーバー・ノードは、イメージからアプリケーションを直接実行する。
【００５７】
理解することができるように、本発明の実施例は、大規模なネットワーク化されたシステム内での複数サーバーノードへのイメージ展開及び管理を容易にする。本発明は、限定的ではなく実例となるようにすべての点で意図された特定の実施例に関して記述されてきた。他の実施例は、本発明がその範囲から逸脱することなく関係する技術における当業者にとって明らかであろう。
【００５８】
以上より、本発明が、上述の目的及び対象のすべてを達成するように構成されたものであり、本システム及び本方法にとって明らかでありこれらに固有の他の利点を有することが理解されよう。ある特徴及びサブコンビネーションが有益であって、他の特徴及びサブコンビネーションに関係なく使用されてもよいことが理解される。このことは特許請求の範囲に記載の各請求項から予期され、その範囲内にある。
【図１】
2010541044.tif 000003
【図２】
2010541044.tif 000004
【図３】
2010541044.tif 000005
【図４】
2010541044.tif 000006
【図５】
2010541044.tif 000007
【国際調査報告】
2010541044.tif 000008
2010541044.tif 000009