(57)【要約】      （修正有）【課題】業務処理の実行を停止することなく、ソフトウェアのインストールやアップグレードを行う。【解決手段】ハイパーバイザ型の仮想マシンモニターＶＭＭ１３０と、ＶＭＭ上に業務を行う仮想マシン（ＶＭ）１１０と、インストールまたはアップグレードを行う仮想マシン（ＶＭ）１２０とを備える。ＶＭ１２０はＶＭ１１０の複製である。ＶＭ１２０は、自己に対して新規のソフトウェアを、例えばインストールした後、ＶＭ１１０上の動的に更新されるデータ格納場所の情報が保存されているｉｎｄｅｘテーブル１１４を段階的に自己に移行し、完全に移行した段階でＶＭ１１０からＶＭ１２０へ処理を切り替える。各ノードでインストール前（即ち旧バージョン）で動作するＶＭ１１０は、他のノードのＶＭと通信し、切り替え先のインストール後の新バージョンについて全ノードで合意し、全ノード一斉に新バージョンに切り替える。【選択図】図１
2011170528.tif 000002
【特許請求の範囲】
【請求項１】
共通のネットワークに接続された複数のノードの各々に適用される分散型情報処理システムであって、
ハイパーバイザ型の仮想マシンモニターと、前記仮想マシンモニター上で業務を行う第１の仮想マシンと、前記第１の仮想マシンの少なくとも一部の構成要素と同じ構成要素を有してインストールまたはアップグレードを行う第２の仮想マシンと、を備え、
前記第２の仮想マシンは、新バージョンのソフトウェアへの切り替えを行うに際して、前記新バージョンのソフトウェアをインストール処理するか、若しくは既存のソフトウェアをアップグレード処理した後、前記第１の仮想マシン上の動的に更新されるデータの格納場所の情報が保存されているｉｎｄｅｘテーブルの情報を、自己が備えるｉｎｄｅｘテーブルへ段階的に移行し、前記移行が完了した時点で、処理の制御を、前記第１の仮想マシンから前記第２の仮想マシンへ切り替えて実行することを特徴とする分散型情報処理システム。
【請求項２】
前記第２の仮想マシンは、自己が実行する新バージョンのソフトウェアへの切り替えを行うに際して、前記のインストール処理またはアップグレード処理を実行する前から存在した旧バージョンのソフトウェアを使用して前記他のノードに属する他の第２の仮想マシンと通信し、前記他のノードが全て第１の仮想マシンから第２の仮想マシンへの切り替えを完了したことを確認すると共に前記新バージョンのソフトウェアについての前記複数の全ノードの合意を取得した後に、自己が実行するプログラムを、前記新バージョンのソフトウェアに切り替えることを特徴とする請求項１に記載の分散型情報処理システム。
【請求項３】
前記第２の仮想マシンは、他の前記ノードの１つから、新バージョンのソフトウェアへの切り替え通知を受けたときに、前記他のノードが全て第１の仮想マシンから第２の仮想マシンへの切り替えを完了したことを確認すると共に前記新バージョンのソフトウェアについての前記複数の全ノードの合意を取得した後に、自己が実行するプログラムを、前記新バージョンのソフトウェアに切り替えることを特徴とする請求項１または請求項２記載の分散型情報処理システム。
【請求項４】
前記第２の仮想マシンは、前記新バージョンのソフトウェアへの切り替えが完了した後、前記複数のノードのうち、旧バージョンで動作中のノードに対するデータの送信を一旦保留し、前記旧バージョンで動作中のノードから前記新バージョンのソフトウェアへの切り替え完了通知を受信した時点で、前記データの送信を再開する事を特徴とする請求項２または請求項３記載の分散型情報処理システム。
【請求項５】
前記のインストール処理またはアップグレード処理が失敗した場合、前記他のノードの全てに該失敗の事実を通知すると共に、該失敗となった時点が、前記自己が実行する処理の前記第１の仮想マシンから前記第２の仮想マシンへの切り替え前であれば、前記第１の仮想マシンから前記第２の仮想マシンへの切り替えを中止し、また、該失敗となった時点が、前記自己が実行する処理の前記第１の仮想マシンから前記第２の仮想マシンへの切り替え後であれば、前記第１の仮想マシンから前記第２の仮想マシンへの切り替え処理を逆に行うことで前記ｉｎｄｅｘテーブルの最新化を行うと共に前記第２の仮想マシンから第１の仮想マシンへの切り替えを行うことにより、自己の状態を前記インストール処理または前記アップグレード処理を行う前の状態に戻すことを特徴とする請求項１乃至３のいずれか１項に記載の分散型情報処理システム。
【請求項６】
前記他のノードの１つから送信されたインストール処理またはアップグレード処理の失敗通知を受信した時点で、該受信時点が、前記自己が実行する処理の前記第１の仮想マシンから前記第２の仮想マシンへの切り替え前であれば、前記第１の仮想マシンから前記第２の仮想マシンへの切り替えを中止し、また、該失敗となった時点が、前記自己が実行する処理の前記第１の仮想マシンから前記第２の仮想マシンへの切り替え後であれば、前記第１の仮想マシンから前記第２の仮想マシンへの切り替え処理を逆に行うことで前記ｉｎｄｅｘテーブルの最新化を行うと共に前記第２の仮想マシンから前記第１の仮想マシンへの切り替えを行うことにより、自己の状態を前記インストール処理または前記アップグレード処理を行う前の状態に戻すことを特徴とする請求項１乃至３のいずれか１項に記載の分散型情報処理システム。
【請求項７】
共通のネットワークで接続された複数のノードと、該ノードに接続されたストレージとを備え、かつ前記複数のノードの全ての構成を請求項１乃至６のいずれか１項に記載の分散型情報処理システムの構成としたことを特徴とする分散ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散型情報処理システム及び分散ストレージシステムに係り、特に、業務処理を停止することなく、ソフトウェアのインストール及びアップグレードを行うことができる分散型情報処理システム及び分散ストレージシステムに関する。
【背景技術】
【０００２】
従来、分散型情報処理システムは、複数のノードを備えるが、実際の業務の遂行に際しては、該複数のノードの各々に対して、処理プログラム（以下、単に「ソフトウェア」と呼称する）を、新バージョンのソフトウェア等へ切替える処理、即ち、ソフトウェアの更新処理を行う必要が生じる。一般に、分散型情報処理システムにおける上記のソフトウェア更新処理は、動的に行うことができるように構成されていることが好ましい。
通常、一般的な分散型情報処理システムの各ノードに対応した仮想マシンの種類には、ハイパーバイザ型の仮想マシンモニター（以下、「ＶＭＭ」と略称する）と、このＶＭＭ上で業務処理を行う仮想マシン（以下、「ＶＭ１」と略称する）と、インストールまたはアップグレードを行う仮想マシン（以下、「ＶＭ２」と略称する）とが有る。
【０００３】
また、分散型情報処理システムが、ソフトウェアを新バージョンの処理ソフトウェアに切り替える際には、新バージョンのソフトウェアのインストール後、若しくはソフトウェアのアップグレード後のバージョン（新バージョンとなる）について、全ノードで合意し、全ノード一斉に新バージョンのソフトウェアに切り替える必要が有り、この点が、本発明に際しての１つの課題であった。
また、分散型情報処理システムは、システム内において旧バージョンで動作するノードと新バージョンで動作するノードとが混在する状況でも業務処理を継続できることが好ましく、この点も、本発明に際しての１つの課題であった。
さらに、分散型情報処理システムは、インストールまたはアップグレードに失敗した場合には、インストールまたはアップグレードする前の状態に復元できることが必要であり、この点も、本発明に際しての１つの課題であった。
【０００４】
なお、この分野の公知技術として、特許文献１には、第１および第２のゲストオペレーティングシステムが、各仮想マシン３１０Ａ、３１０Ｂ中で稼動する仮想化技術を使用して、クライアント２０２と通信を行うために、オンラインサービス３１２Ａが依拠する同じハードウェア３０２上で、更新済みサービス３１２Ｂをテストすることができる技術が開示されており、前記の両サービスは同時に実行されることが好ましいとしている。
また、特許文献２には、汎用サーバシステムにおいて動作するソフトウェアを更新する際、サービスを停止させず、関連するサーバに対して同時に更新、更新解除を可能とする技術が開示されている。
また、特許文献３には、バージョンアップ後にオンライン稼働を開始した新バージョンモジュールの障害発生時に、旧バージョンモジュールへの復旧を容易に実現する技術が開示されている。
【０００５】
また、特許文献４には、現ファームウェアの処理プロセスＰＰＲ0からの応答通知を受けた現ファームウェアの監視プロセスＭＰＲ0が、即座に新ファームウェアの処理プロセスＰＰＲ1 に対して処理の同期点再開要求を行い、新ファームウェアへの切替（即ち、バージョンアップを実現する技術が開示されている。
さらに、特許文献５には、１つの共通アプリケーションプログラム又はアプリケーションコード５０及びその実行可能バージョン（場合によっては修正のある）は、複数のコンピュータ又はマシンＭ１、Ｍ２．．．Ｍｎ全体で同時に又は並行して実行する技術を開示している。この技術では、本質的には、修正された構造は、個々のマシンの各々上で同一のメモリ構造及びコンテンツを複製することになる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１０７５００号公報
【特許文献２】特開２００６−２６８１７２号公報
【特許文献３】特開平９−６２６２６号公報
【特許文献４】特開平１１−７３８２号公報
【特許文献５】特表２００９−５１２０３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、分散型情報処理システムに課せられている１つの課題は、前述のとおり、ソフトウェアのインストール及びアップグレードである。一般的に、全てのノードのソフトウェアを一斉にインストールまたはアップグレードする場合には、システムで稼働中の業務処理の実行を停止させ、全てのノードの処理を停止させた後、各ノードにソフトウェアを適用する必要が有り、また、適用するソフトウェアによっては、各ノードの再起動が必要になる場合が有る。
しかしながら、上記背景技術で述べた従来の分散型情報処理システムにあっては、複数の独立したノードとストレージとの対で構成される分散ストレージシステムでは、クライアントからの書き込みが完了した後も、各ノード間でデータを交換しているため、全てのノードを停止させるには、このようなデータ交換処理の実行が終了するまで待機しなければならないといった問題点が有った。
【０００８】
また、一部のノードの業務を停止させてからソフトウェアを適用し、適用が完了したら業務を開始し、他のノードのソフトウェアの適用を順次行う方法を適用するには、該適用の過程で、異なるバージョンのノードが混在した状態になるといった問題点があった。
即ち、異なるバージョン同士では、データ構造や通信プロトコルが異なっている場合が多く、このような場合、新バージョンでは、旧バージョンとの違いを意識することは可能ではあっても、旧バージョンは、新バージョンの一部機能については未知であったために、新バージョンとの違いを解消するための互換機能を組み込んでおくことは困難であり、このため、新バージョンと旧バージョンとが混在する場合には、ノード間でデータを正しくやり取りできず、最悪の場合、システム内のデータを破壊してしまうといった問題点が有った。
さらに、ソフトウェアをインストールまたはアップグレードする処理の失敗や更新プログラムのバグなどで、ソフトウェアを更新する前に戻す場合、これまでの更新処理で変更した部分を一つ一つ復元していくなどの煩雑な作業が発生するといった問題点が有った。
【０００９】
本発明は、
（１）  同一ハードウェア上に業務を行う仮想マシンとインストール・アップグレードを行う仮想マシンを同時に動作させることと、
（２）  インストールまたはアップグレードが完了すると、業務を行う仮想マシンを切り替えることと、
（３）  その後、システム内の他のノードと連携し、動作する新しいバージョンについて合意し、全てのノードで一斉に切り替えることと、
（４）  動的ソフトエア更新方法としては、前記（１）〜（３）の構成要件において、アップグレードを取り消す現象や要求が発生した場合、仮想マシンを切り替える前であれば業務を行う仮想マシンだけを残してインストール及びアップグレードを行う仮想マシンを削除し、仮想マシンを切り替えた後であればインストールまたはアップグレードを行った仮想マシンと、業務を行っていた仮想マシンとでｉｎｄｅｘテーブルの複製を行うことと、
を主たる構成要件としている。
【００１０】
なお、本発明との関連箇所として、前述の特許文献１及び特許文献５には、前記の構成要件（１）が開示され、前述の特許文献４には前記の構成要件（２）が開示されている。しかしながら、上記特許文献には、いずれも前記の構成要件（３）は開示していない。ここで、構成要件（３）は、本発明の、「業務を停止することなくソフトウェアのインストールまたはアップグレードを行う」という課題を解決するために必須の要素である。
さらに、特許文献１〜５のいずれにおいても、前記の構成要件（４）は開示していないが、構成要件（４）は、本発明の、ソフトウェアを更新前に戻すことができるようにする」という課題を解決するために必須の構成要件である。
【００１１】
本発明は、上記課題を解決するための分散型情報処理システム及び分散ストレージシステムを提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明に係る分散型情報処理システムは、共通のネットワークに接続された複数のノードの各々に適用される分散型情報処理システムであって、ハイパーバイザ型の仮想マシンモニター（以下、「ＶＭＭ」と呼称する）と、前記ＶＭＭ上で業務を行う第１の仮想マシン（以下、「ＶＭ１」と呼称する）と、前記ＶＭ１の少なくとも一部の構成要素と同じ構成要素を有してインストールまたはアップグレードを行う仮想マシン（以下、「ＶＭ２」と呼称する）と、を備え、前記ＶＭ２は、新バージョンのソフトウェアへの切り替えを行うに際して、前記新バージョンのソフトウェアをインストール処理するか、若しくは既存のソフトウェアをアップグレード処理した後、ＶＭ１上の動的に更新されるデータの格納場所の情報が保存されているｉｎｄｅｘテーブルの情報を、自己が備えるｉｎｄｅｘテーブルへ段階的に移行し、前記移行が完了した時点で、処理の制御を、前記ＶＭ１から前記ＶＭ２へ切り替えて実行することを特徴とする。
【００１３】
また、本発明に係る分散ストレージシステムは、共通のネットワークで接続された複数のノードと、該ノードに接続されたストレージとを備え、かつ前記複数のノードの全ての構成を請求項１乃至６のいずれか１項に記載の分散型情報処理システムの構成としたことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、同一ハードウェア上で、業務処理を行う仮想マシンと、インストール及びアップグレードを行う仮想マシンとを同時に動作させ、インストールまたはアップグレードが完了すると、業務を行う仮想マシンに切り替えると共に、システム内の他のノードと連携し、動作する新しいバージョンについて合意し、全てのノードで一斉に切り替えるように構成したので、業務処理の実行を停止することなく、ソフトウェアのインストールやアップグレードを行うことができる効果が有る。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る分散型情報処理システムの全体構成を示す構成図である。
【図２】本発明の実施形態に係る分散型情報処理システムが適用される分散ストレージシステムの１構成例を示す構成図である。
【図３】図２に示すシステムの、ストレージ付近の構成を示す構成図である。
【図４】図２，３に示すシステムの、ＶＭＭ１００（単一ノード）におけるＶＭ切り替え動作の概要を示す説明図（１／２）である。
【図５】図２，３に示すシステムの、ＶＭＭ１００（単一ノード）におけるＶＭ切り替え動作の概要を示す説明図（２／２）である。
【図６】図２，３に示すシステムの、ＶＭＭ１００（単一ノード）におけるＶＭ切り替え動作の詳細を示す説明図（１／２）である。
【図７】図２，３に示すシステムの、ＶＭＭ１００（単一ノード）におけるＶＭ切り替え動作の詳細を示す説明図（２／２）である。
【図８】図２，３に示すシステムの、全てのノードにおけるバージョン切り替え動作を示す説明図（１／２）である。
【図９】図２，３に示すシステムの、全てのノードにおけるバージョン切り替え動作を示す説明図（２／２）である。
【図１０】本発明の実施形態に係る分散型情報処理システムが適用される分散ストレージシステムの他の１構成例を示す構成図である。
【発明を実施するための形態】
【００１６】
本発明の分散型情報処理システムは、システム上の複数のノードに対して、業務を停止することなく、全ノードのソフトウェアを更新する処理（即ち、動的ソフトウェア更新処理）を行う。
分散システム上の各ノードは、ハイパーバイザ型の仮想マシンモニター（ＶＭＭ）と、ＶＭＭ上に業務を行う仮想マシン（ＶＭ１）と、インストールまたはアップグレードを行う仮想マシン（ＶＭ２）とを備える。ここで、ＶＭ２はＶＭ１の複製であり、ＶＭ２は自己に対して新規のソフトウェアをインストールするか、または既存のソフトウェアをアップグレードし、この処理の完了後、ＶＭ１上の動的に更新されるデータ格納場所の情報が保存されているテーブル（以下、「ｉｎｄｅｘテーブル」と称する）を段階的にＶＭ２へ移行し、完全に移行した段階でＶＭ１からＶＭ２へ処理を切り替える。
【００１７】
また、各ノードでインストール前またはアップグレード前のバージョン（即ち旧バージョン）で動作するＶＭ２が、他のノードのＶＭ２と通信し、切り替え先のインストール後またはアップグレード後のバージョン（即ち新バージョン）について全ノードで合意し、全ノード一斉に新バージョンに切り替える。
以上の処理により、分散システム上で稼働中の業務を停止させることなく、全ノードを旧バージョンから新バージョンに切り替えられるようにしている。
また、システム内において旧バージョンで動作するノードと、新バージョンで動作するノードとが混在する状況でも業務を継続することができるようにしている。
【００１８】
さらに、万一、前記のインストールまたはアップグレードに失敗した場合、ＶＭ１からＶＭ２への切り替え前であれば、ＶＭ１からＶＭ２への切り替えをしなければ、インストールまたはアップグレードする前の状態に戻すことを可能にし、また、ＶＭ１からＶＭ２への切り替え後であれば、前述の、ＶＭ１からＶＭ２への切り替えを逆に行うことでｉｎｄｅｘテーブルの最新化を行い、ＶＭ２からＶＭ１への切り替えをすることによってインストールまたはアップグレードする前の状態に戻すことを可能にしている。
以下、本発明の分散型情報処理システム及び分散ストレージシステムの実施形態について、図面を参照して詳細に説明する。
【００１９】
図１は、本発明の実施形態に係る分散型情報処理システムの全体構成を示す構成図である。
同図において、本実施形態の分散型情報処理システムは、ハードウェア１４０上で動作し、ハイパーバイザ型の仮想マシンモニターであるＶＭＭ１３０上で稼働する、業務担当の仮想マシンのＶＭ１００と、データを記憶するストレージ２００と、を備えて構成される。
ＶＭ１００は、仮想マシンであるＶＭ１１０及びＶＭ１２０と、ＶＭ１１０とＶＭ１２０間で共有される共有ボリューム１３２と、ネットワークをＶＭ１１０からＶＭ１２０へ切り替えるネットワーク切り替え部１３１と、を備える。
【００２０】
ＶＭ１１０は、データ分割部１１１と、データ保存部１１２と、後述するｉｎｄｅｘテーブル１１４をＶＭ１２０へ複製する複製部１１３と、スナップショットの索引を保持するｉｎｄｅｘテーブル１１４と、変更監視部１１５と、ＶＭ切り替え部１１６と、変更管理テーブル１１７と、キー生成部１１ｄと、を備える。
ＶＭ１２０は、データ分割部１２１と、データ保存部１２２と、複製部１２３と、ｉｎｄｅｘテーブル１２４と、変更監視部１２５と、ＶＭ切り替え部１２６と、変更管理テーブル１２７と、旧バージョン動作部１２８と、ＶＭ切り替え完了通知通信部１２９と、新旧バージョン切り替え部１２ａと、完了通知テーブル１２ｂと、バージョン情報１テーブル１２ｃと、を備える。
【００２１】
複製部１１３は、スナップショット取得部１１３ａと、スナップショット送信部１１３ｂと、更新データ取得部１１３ｃと、更新データ送信部１１３ｄと、複製完了通知送信部１１３ｅと、スナップショット適用部１１３ｆと、スナップショット受信部１１３ｇと、更新データ適用部１１３ｈと、更新データ受信部１１３ｉと、複製完了通知受信部１１３ｊと、を備える。
複製部１２３は、スナップショット取得部１２３ａと、スナップショット送信部１２３ｂと、更新データ取得部１２３ｃと、更新データ送信部１２３ｄと、複製完了通知送信部１２３ｅと、スナップショット適用部１２３ｆと、スナップショット受信部１２３ｇと、更新データ適用部１２３ｈと、更新データ受信部１２３ｉと、複製完了通知受信部１２３ｊと、を備える。
【００２２】
以下、本発明の実施形態に係る分散型情報処理システムの機能を、主な構成要素の機能に基づいて説明する。
まず、複製部１１３及び複製部１２３の機能を、各構成要素の機能に基づいて説明する。
スナップショット取得部１１３ａは、特定の時点でのスナップショットを取得する。  スナップショット送信部１１３ｂは、スナップショット取得部１１３ａによって取得したスナップショットをＶＭ１２０へ送信する。
スナップショット受信部１２３ｇは、スナップショット送信部１１３ｂによって送信されたスナップショットをＶＭ１２０において受信する。
【００２３】
スナップショット適用部１２３ｆは、スナップショット受信部１２３ｇによって取得したスナップショットをＶＭ１２０のｉｎｄｅｘテーブル１２４に適用する。  
更新データ取得部１１３ｃは、ＶＭ１１０のｉｎｄｅｘテーブル１１４のスナップショットを取得し、ＶＭ１２０のｉｎｄｅｘテーブル１２４に適用したことを確認すると、変更監視部１１５に対して、ｉｎｄｅｘテーブル１１４の更新部分情報を記録する変更管理テーブル１１７を参照して更新部分情報と更新データを取得するように指示し、返ってきた更新部分情報と更新データとを、更新データ送信部１１３ｄを用いてＶＭ１２０へ送信する。
【００２４】
更新データ送信部１１３ｄは、更新データ取得部１１３ｃによって取得した更新部分情報と更新データとを、ＶＭ１２０へ送信する。
更新データ受信部１２３ｉは、更新データ送信部１１３ｄによって送信された更新部分情報と更新データとを、ＶＭ１２０において受信する。
更新データ適用部１２３ｈは、更新データ受信部１２３ｉによって取得した更新部分情報と更新データをＶＭ１２０のｉｎｄｅｘテーブル１２４に適用する。
複製完了通知送信部１１３ｅは、変更監視部１１５によって新たな更新部分が存在しないことを確認すると、ＶＭ１２０に対して、ｉｎｄｅｘテーブル１１４の複製が完了したことを通知する。
【００２５】
複製完了通知受信部１２３ｊは、複製完了通知送信部１１３ｅによって送信された通知を受け取ると、ＶＭ切り替え部１２６に対して、ｉｎｄｅｘテーブル１２４の複製が完了したことを通知する。
ＶＭ切り替え部１２６は、ＶＭＭ１３０に対して、業務を行っているＶＭ１１０のネットワークをＶＭ１２０へ、共有ボリューム１３２の接続をＶＭ１１０からＶＭ１２０へ、それぞれ切り替えるべきことを指示し、ネットワークと共有ボリューム１３２の切り替えが完了するとＶＭ切り替え完了通知通信部１２９へ通知する。
変更監視部１１５は、スナップショット取得部１１３ａによってｉｎｄｅｘテーブル１１４のスナップショットを取得した時点から、ｉｎｄｅｘテーブル１１４の変更を監視する。
【００２６】
ＶＭ切り替え部１２６は、複製完了通知受信部１２３ｊからのｉｎｄｅｘテーブル１１４複製完了の通知を受けて、ＶＭＭ１３０に対してＶＭの切り替えを指示し、共有ボリューム１３２の接続をＶＭ１１０からＶＭ１２０へ切り替え、旧バージョン動作部１２８の動作を開始させる。
ネットワーク切り替え部１３１は、ＶＭ１２０のＶＭ切り替え部１２６からのＶＭ切り替え指示を受け、業務中のデータを受信していたネットワークをＶＭ１１０からＶＭ１２０へ切り替える。
旧バージョン動作部１２８は、ＶＭ１１０からＶＭ１２０へ切り替えた直後において、ＶＭ切り替えが完了していないノードが存在したときのために、ＶＭ１２０上で旧バージョンと同様の動作をするものである。これにより、旧バージョンの動作をするノードと新バージョンの動作をするノードとが混在して実行される状態を無くしている。
【００２７】
ＶＭ切り替え完了通知通信部１２９は、自身のノードにおいて、ＶＭ切り替え部１２６からＶＭ切り替え完了の通知を受けたとき、システム内の全ノードに対してＶＭ切り替え完了を通知する。また、他のノードからのＶＭ切り替え完了通知を完了通知テーブル１２ｂに記録し、完了通知テーブル１２ｂから全ノードのＶＭ切り替えが完了しているか否かを判断し、全てのノードのＶＭ切り替えが完了していれば、旧バージョンから新バージョンへの切り替え処理を開始する。
新旧バージョン切り替え部１２ａは、ＶＭ切り替え完了通知通信部１２９から、全てのノードのＶＭ切り替えが完了したことを通知されると、例えば一般的な既知の合意アルゴリズム（２相コミットなど）によって、全ノードで切り替え先となる新バージョンについて合意する。全ノードで合意ができた時点で、各々のノードは、旧バージョンの動作から新バージョンの動作へと処理動作を切り替える。但し、切り替えが完了した各ノードは、切り替え前で旧バージョンで動作注のノードに対するデータの送信は保留し、この保留の対象ノードが新バージョンへの切り替えが通知された時点で、保留していたデータの送信を開始する。
【００２８】
（動作の説明）
図２は、本発明の実施形態に係る分散型情報処理システムが適用される分散ストレージシステムの１構成例を示す構成図である。
図３は、図２に示す分散ストレージシステム（本発明に係る分散ストレージシステム）の、ストレージ付近の構成を示す構成図である。
ノード１〜ｎの各々は、単一ノードであり、ＶＭＭ１００（図１）の構成を備える。
また、ノード１〜ｎの各々は、広域ネットワーク１００００に通信可能に接続されており、さらに、ノード１〜ｎは、それぞれノードの符号にストレージ番号が対応するストレージ１〜ｎと接続されている（この１〜ｎはストレージ番号）。このストレージ１〜ｎの各々には、ストレージ２００（図１）が適用されるものとする。
【００２９】
以下では、図１に示す分散型情報処理システムの構成において、特にノードｉ（ｉは１〜ｎ）の構成要素を示す場合は、図１に示す構成要素の符号の前にノード番号を附すものとする。例えば、ノード１の複製部１１３は、複製部１１１３と記載する。但し、特に特定のノードを指定した既述ではなく、ノード全体に対して適用される既述の場合は、前記のノード番号の記載は省略する。
以下、図１を参照しながら、図２，３に示す構成図を用いて、本実施形態に係る分散型情報処理システムの動作を説明する。
図３に示すように、例えば、ＶＭＭ１１００（ノード１）のＯＳ１１１０内には、キー生成部１１１ｄ、データ分割部１１１１、データ保存部１１１２、ｉｎｄｅｘテーブル１１１４を備え、後述するようなデータ書き込み処理を行う。データが書き込まれると、キー生成部１１１ｄによってデータのキーが作成され、ｉｎｄｅｘテーブル１１１４に登録される。続いてデータ分割部１１１１によってデータが分割され、その分割されたデータをデータ保存部１１１２が各ノード１００のストレージ２００へ保存し、その保存した場所をｉｎｄｅｘテーブルｎ１１４に保存する。他のノード（２〜ｎ）についても上記のノード１と同様である。
【００３０】
図４，５は、図２，３に示すシステムの、ＶＭＭ１００（単一ノード）におけるＶＭ切り替え動作の概要を示す説明図である。
図４，５に示すように、各ノードにハイパーバイザ型の仮想マシンモニター（ＶＭＭ１００）が充当されており、その上に業務を行う仮想マシン（ＶＭ１１０）が配されている。ソフトウェアのインストールまたはアップグレード時、ソフトウェアを適用するための仮想マシン（ＶＭ１２０）をＶＭ１１０のＯＳイメージの複製として新たに作成する。
ＶＭ１２０にソフトウェアを適用した後、ＶＭ１１０上の設定情報とｉｎｄｅｘテーブル１１４を共有ボリューム１３２経由でＶＭ１２０に引き継ぎ、業務で実行中のネットワークをＶＭ１１０からＶＭ１２０へ切り替え、業務を行うＶＭを切り替える。この切り替え直後は、更新後のバージョンでは動作せず、更新前のバージョンで動作することになる。全てのノードのソフトウェアのインストール若しくはアップグレードが完了した後、新バージョンによる動作に切り替える。
【００３１】
図６，７は、図２，３に示すシステムの、ＶＭＭ１００（単一ノード）におけるＶＭ切り替え動作の詳細を示す説明図である。
図６，７に示すように、ＶＭ１１０からＶＭ１２０を複製後、ＶＭ１２０においてインストールまたはアップグレード処理中のとき、ＶＭ１１０では業務の処理と並行して、ｉｎｄｅｘテーブル１１４複製処理や変更監視処理の起動や変更管理テーブル１１７の生成などの業務の引継ぎの準備を開始する。
ＶＭ１２０のインストール処理の完了を契機に、スナップショット取得部１１３ａはＶＭ１１０上のｉｎｄｅｘテーブル１１４のスナップショット（その時点におけるｉｎｄｅｘテーブルのデータ）を取得し、取得したスナップショットをスナップショット送信部１１３ｂによってＶＭ１２０へ送信し、送信されたスナップショットをスナップショット受信部１２３ｇによって受信し、受信したスナップショットをスナップショット適用部１２３ｆによってＶＭ１２０上のｉｎｄｅｘテーブル１２４に反映する。
【００３２】
ＶＭ１１０上のｉｎｄｅｘテーブル１１４のスナップショットを取得したことを契機に変更監視部１１５は、ｉｎｄｅｘテーブル１１４の変更箇所の記録を開始する。
また、ＶＭ１２０のｉｎｄｅｘテーブル１２４に対するＶＭ１１０のｉｎｄｅｘテーブル１１４のスナップショット適用完了を契機に、更新データ取得部１１３ｃは、変更監視部１１５に変更箇所を問い合わせ、ｉｎｄｅｘテーブル１１４の変更箇所情報と変更データを取得し、取得した変更箇所情報と変更データを更新データ送信部１１３ｄによってＶＭ１２０へ送信し、送信された変更箇所情報と変更データを更新データ受信部１２３ｉによって受信し、受信した変更箇所情報と変更データを更新データ適用部１２３ｈによってＶＭ１２０上のｉｎｄｅｘテーブル１２４に反映する。
【００３３】
業務を行っているときは、ＶＭ１１０のｉｎｄｅｘテーブル１１４が頻繁に変化するので、上記の手段によって更新データを随時ＶＭ１２０のｉｎｄｅｘテーブル１２４に適用する。この操作を繰り返し、ＶＭ１１０の更新データが無くなった時点で、変更監視部１１５が、複製完了通知送信部１１３ｅに対して複製完了通知を送り、複製完了通知送信部１１３ｅは、ＶＭ１２０に対してｉｎｄｅｘテーブル１１４の複製完了通知を送信する。ＶＭ１２０の複製完了通知受信部１２３ｊは、複製完了通知を受信するとＶＭ切り替え部１２６にｉｎｄｅｘテーブル１１４複製完了を通知する。
ＶＭ切り替え部１２６は、複製完了通知受信部１２３ｊからｉｎｄｅｘテーブル１１４の複製完了の通知を受け取ると、ＶＭＭ１３０のネットワーク切り替え部１３１に対してＶＭ１１０での業務で使用中のネットワークをＶＭ１２０へ切り替えるように指示し、ＶＭＭ１３０に共有ボリューム１３２の接続をＶＭ１１０からＶＭ１２０へ切り替えるように指示する。ネットワーク切り替え部１３１からネットワーク切り替え完了の通知を受け取ると、ＶＭ切り替え完了通知通信部１２９へＶＭの切り替えが完了したことを通知する。  
【００３４】
ネットワーク切り替え部１３１は、ＶＭ切り替え部からの指示により、業務で接続中のＶＭ１１０のネットワークをＶＭ１２０へ切り替える。ネットワークの切り替えが完了すると、ＶＭ切り替え部１２６にネットワークの切り替えが完了したことを通知する。  
図８，９は、図２，３に示すシステムの、全てのノードにおけるバージョン切り替え動作を示す説明図である。
旧バージョン動作部１２８は、ネットワークが切り替わると同時に動作を開始し、まだインストールが完了していないノードと同様の処理を行う。この処理によって、異なるバージョンが混在しても問題なく業務を継続できる。
ＶＭ切り替え完了通知通信部１２９は、ＶＭ切り替え部１２６からＶＭの切り替えの完了が通知されると、完了通知テーブル１２ｂを生成し、全てのノードに対して自身のノードのＶＭの切り替えが完了したことを通知する。他のノードからのＶＭ切り替え完了通知を受信すると完了通知テーブル１２ｂに対応するノードに完了と記録する。
【００３５】
各ノードのＶＭ切り替え完了通知部１２９は、完了通知テーブル１２ｂを参照し、システム内の全てのノードがＶＭの切り替えを完了していることを判断すると、新旧バージョン切り替え部１２ａに全ノードのＶＭが切り替わったことを通知する。
新旧バージョン切り替え部１２ａは、各ノードのバージョンを管理しているバージョン情報テーブル１２ｃと一般的な合意アルゴリズム（２相コミットなど）を使用し、各ノードで切り替える新しいバージョンについての合意を行う。この合意の処理は、最初に任意のノードを調停者とし、調停者のノード１２０がＶＭ切り替えバージョン情報と切り替え可能メッセージを、全てのノード（１１２０〜ｎ１２０）へ送付する。
【００３６】
送付されたバージョン情報を受け取ったノード（１１２０〜ｎ１２０）は、自己の切り替え先のバージョン情報と一致しているか否かを判断し、正しければＯＫを示す情報を調停者のノード１２０へ返信する。調停者のノード１２０は、全てのノード（１１２０〜ｎ１２０）から、前記ＯＫ示す情報が返信されたことを確認すると、全てのノード（１１２０〜ｎ１２０）に対して新しいバージョンへの動作の切り替えを指示し、調停者のノード１２０も新しいバージョンへの動作に切り替える。各ノードでは、この切り替えが完了すると、全てのノードへ、新しいバージョンへの切り替えが完了したことを通知し、この通知を受け取った各ノードは、バージョン情報テーブル１２ｃに、対応するノードと、前記新しいバージョンのバージョン情報とを記録する。各ノードの切り替えるタイミングは異なるため、新バージョンで動作するノードと旧バージョンで動作するノードが混在した状態になる。そのため、バージョン情報テーブル１２ｃを参照し、切り替えが完了していないノードへのデータの送信を保留し、切り替えが完了した時点でデータの送信を再開させる。
【００３７】
図１０は、本発明の実施形態に係る分散型情報処理システムが適用される分散ストレージシステムの他の１構成例を示す構成図である。
図１０に示す構成のシステムでは、プログラムのバグや通信の遅延などにより、インストールまたはアップグレードの処理に失敗した場合、あるいはインストールまたはアップグレードの処理を取り消す場合に、全ノードへインストールまたはアップグレードの処理の取り消しを通知し、ＶＭ１２０への切り替えが済んでいないノードについてはＶＭ１２０への切り替え処理を停止し、ＶＭ１１０での業務の処理を継続させ、ＶＭ１２０への切り替えが済んでいるノードについてはＶＭ１２０のｉｎｄｅｘテーブル１２４をＶＭ１１０へ複製し、ＶＭ１１０で業務の処理を継続させる。これにより、システムを、インストールまたはアップグレードする前の状態に復元できる。
【００３８】
特定のノードで、インストールまたはアップグレードを取り消す現象や要求が発生した場合、当該ノードから全ノードへインストールまたはアップグレードの処理の取り消しを通知する。
インストールまたはアップグレードの処理の取り消し通知を受信したＶＭ１２０への切り替えが済んでいないノードは、ＶＭ１２０への切り替え処理を停止し、ＶＭ１１０での業務の処理を継続させ、ＶＭ１２０を消滅させる。
インストールまたはアップグレードの処理の取り消し通知を受信したＶＭ１２０への切り替えが済んでいるノードは、ＶＭ１２０のｉｎｄｅｘテーブル１２４をＶＭ１１０へ複製するため、図７においてＶＭ１１０とＶＭ１２０を入れ替えて成るシステム（即ち、図１０に示す構成のシステム）にて、段階的にｉｎｄｅｘテーブル１２４を複製する。
【００３９】
スナップショット取得部１２３ａは、ＶＭ１２０上のｉｎｄｅｘテーブル１２４のスナップショットを取得し、取得したスナップショットをスナップショット送信部１２３ｂによってＶＭ１１０へ送信し、送信されたスナップショットをスナップショット受信部１１３ｇによって受信し、受信したスナップショットをスナップショット適用部１１３ｆによってＶＭ１１０上のｉｎｄｅｘテーブル１１４に反映する。
変更監視部１２５は、ＶＭ１２０上のｉｎｄｅｘテーブル１２４のスナップショットを取得したことを契機にｉｎｄｅｘテーブル１２４の変更箇所の記録を開始する。
更新データ取得部１２３ｃは、ＶＭ１１０のｉｎｄｅｘテーブル１１４に対するＶＭ１２０のｉｎｄｅｘテーブル１２４のスナップショット適用完了を契機に変更監視部１２５に変更箇所を問い合わせ、ｉｎｄｅｘテーブル１２４の変更箇所情報と変更データとを取得し、該取得した変更箇所情報と変更データとを更新データ送信部１２３ｄを介してＶＭ１１０へ送信する。
【００４０】
更新データ受信部１１３ｉは、該送信された変更箇所情報と変更データとを受信し、該受信した変更箇所情報と変更データとを更新データ適用部１１３ｈによってＶＭ１１０上のｉｎｄｅｘテーブル１１４に反映する。
業務を行っている最中では、ＶＭ１２０のｉｎｄｅｘテーブル１１４が頻繁に変化するので、上記の手段によって更新データを随時ＶＭ１１０のｉｎｄｅｘテーブル１１４に適用する。この操作を繰り返し、ＶＭ１２０の更新データが無くなった時点で、変更監視部１２５が、複製完了通知送信部１２３ｅに対して複製完了通知を送り、複製完了通知送信部１２３ｅは、ＶＭ１１０に対してｉｎｄｅｘテーブル１２４の複製完了通知を送信する。
ＶＭ１１０の複製完了通知受信部１１３ｊは、この複製完了通知を受信すると、ＶＭ切り替え部１１６に対してｉｎｄｅｘテーブル複製完了を通知する。
【００４１】
ＶＭ切り替え部１１６は、複製完了通知受信部１１３ｊからｉｎｄｅｘテーブル１２４の複製完了の通知を受け取ると、ＶＭＭ１３０のネットワーク切り替え部１３１に対してＶＭ１２０での業務で使用中のネットワークをＶＭ１１０へ切り替えるように指示し、ＶＭＭ１３０に共有ボリューム１３２の接続をＶＭ１２０からＶＭ１１０へ切り替えるように指示する。また、ネットワーク切り替え部１３１から、ネットワーク切り替え完了の通知を受け取る。
ネットワーク切り替え部１３１は、ＶＭ切り替え部１１６からの指示により、業務で接続中のＶＭ１２０のネットワークを、ＶＭ１１０との接続に切り替える。このネットワークの切り替えが完了すると、ネットワーク切り替え部１３１は、ＶＭ切り替え部１１６にネットワークの切り替えが完了したことを通知する。
【００４２】
本実施形態に係る分散型情報処理システムによれば、同一ハードウェア上に業務を行う仮想マシンとインストール及びアップグレードを行う仮想マシンとを同時に動作させ、インストールまたはアップグレードが完了すると、業務を行う仮想マシンを切り替えて、システム内の他のノードと連携し、動作する新しいバージョンについて合意し、全てのノードで一斉に切り替えるように構成したので、業務を停止することなくソフトウェアのインストール及びアップグレードができる効果が有る。
【００４３】
また、インストールまたはアップグレードが完了した仮想マシンは、最初に旧バージョンで動作させることと、全てのノードで、旧バージョンでの動作から新バージョンでの動作に切り替えることに合意された後、各ノードで動作するバージョンを切り替える際には、新バージョンでの動作に切り替えたノードは、旧バージョンで動作するノードに送信するデータを保留し、旧バージョンで動作するノードから新バージョンに切り替わったことを通知された時点でデータの送信を再開するように構成したので、システム内において旧バージョンで動作するノードと新バージョンで動作するノードとが混在する状況にあっても、業務を継続することができる効果が有る。
【００４４】
さらに、仮想マシンを切り替える前であれば、業務を行う仮想マシンだけを残して、インストール及びアップグレードを行う仮想マシンの方を削除すればよく、仮想マシンを切り替えた後であれば、インストールまたはアップグレードを行った仮想マシンと、業務を行っていた仮想マシンとでｉｎｄｅｘテーブルの複製を行うように構成したので、ソフトウェアを更新前に戻すことができる効果が有る。
【００４５】
上述の各装置は内部に、コンピュータシステムを有している。そして、上述した各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００４６】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【産業上の利用可能性】
【００４７】
本発明に係る分散型情報処理システムは、分散型情報処理システム及び該システムを適用した分散ストレージシステムの構築に適用可能であり、特に、業務処理を停止することなく、ソフトウェアのインストール及びアップグレードを行うことができる分散型情報処理システム及び該システムを適用した分散ストレージシステムの構築に好適である。
【符号の説明】
【００４８】
１〜ｎ  ノード
１１０，１２０  ＶＭ（仮想マシン）
１１１，１２１  データ分割部
１１２，１２２  データ保存部
１１３，１２３  複製部
１１４，１２４  ｉｎｄｅｘテーブル
１１５，１２５  変更監視部
１１６，１２６  ＶＭ切り替え部
１１７，１２７  変更管理テーブル
１１ｄ  キー生成部
１２８  旧バージョン動作部
１２９  ＶＭ切り替え完了通知通信部
１３０  ＶＭＭ（仮想マシンモニター）
１３１  ネットワーク切り替え部
１３２  共有ボリューム
【図１】
2011170528.tif 000003
【図２】
2011170528.tif 000004
【図３】
2011170528.tif 000005
【図４】
2011170528.tif 000006
【図５】
2011170528.tif 000007
【図６】
2011170528.tif 000008
【図７】
2011170528.tif 000009
【図８】
2011170528.tif 000010
【図９】
2011170528.tif 000011
【図１０】
2011170528.tif 000012