(57)【要約】      （修正有）【課題】レプリケーション機能を有するシステムにおいて、システムの稼働中にファームウェアを更新する。【解決手段】第１のデータベースと、第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び第２のデータベース内のデータの形式を更新することを要求する更新要求を、第２のデータベースを有する他の情報処理装置に送信する更新部１１２と、更新が完了したことを示す完了通知を他の情報処理装置から受信した場合、第１のデータベース内のデータのうち、ファームウェアの更新中に変更されたデータの形式を、更新後のファームウェア用の形式に変換する変換部１１５と、変換部により形式が変換されたデータを、他の情報処理装置に送信する送信部と、形式が変換されたデータが他の情報処理装置に送信された後、マスタのデータベースを第１のデータベースから第２のデータベースに切り替える切替部１１７とを有する。【選択図】図２
2015156156.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースと、
前記第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び前記第２のデータベース内のデータの形式を更新することを要求する更新要求を、前記第２のデータベースを有する他の情報処理装置に送信する更新部と、
前記更新が完了したことを示す完了通知を前記他の情報処理装置から受信した場合、前記第１のデータベース内のデータのうち、前記ファームウェアの更新中に変更されたデータの形式を、更新後の前記ファームウェア用の形式に変換する変換部と、
前記変換部により形式が変換されたデータを、前記他の情報処理装置に送信する送信部と、
前記形式が変換されたデータが前記他の情報処理装置に送信された後、マスタのデータベースを前記第１のデータベースから前記第２のデータベースに切り替える切替部と、
を有する情報処理装置。
【請求項２】
前記変換部は、
前記第２のデータベース内のデータのうち変更されたデータを前記他の情報処理装置から受信した場合、受信した当該データの形式を、前記第１のデータベースを管理するファームウェア用の形式に変換し、
前記送信部は、
前記変換部により形式が変換されたデータで前記第１のデータベース内のデータを更新する
請求項１記載の情報処理装置。
【請求項３】
前記更新部は、
前記ファームウェア及び当該ファームウェアが管理する前記第１のデータベース内のデータの形式を更新することを要求する更新要求を、前記他の情報処理装置から受信した場合に、前記第１のデータベースを管理するファームウェアを更新し、
前記送信部は、
前記第２のデータベース内のデータのうち変更されたデータを前記他の情報処理装置から受信した場合、受信した当該データで、前記第１のデータベース内のデータを更新する
請求項１又は２記載の情報処理装置。
【請求項４】
第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び前記第２のデータベース内のデータの形式を更新することを要求する更新要求を、前記第２のデータベースを有する他の情報処理装置に送信し、
前記更新が完了したことを示す完了通知を前記他の情報処理装置から受信した場合、前記第１のデータベース内のデータのうち、前記ファームウェアの更新中に変更されたデータの形式を、更新後の前記ファームウェア用の形式に変換し、
前記変換部により形式が変換されたデータを、前記他の情報処理装置に送信し、
マスタのデータベースを前記第１のデータベースから前記第２のデータベースに切り替える、
処理をコンピュータが実行する更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアの更新技術に関する。
【背景技術】
【０００２】
データベースを管理するシステムの信頼性を高める技術として、レプリケーション（Replication）が知られている。レプリケーションとは、管理すべきデータベース（以下、マスタデータベースと呼ぶ）のレプリカを、マスタデータベースを管理するコンピュータとは別のコンピュータが管理し、両者の内容を常に同期させることである。
【０００３】
マスタデータベース及びレプリカの内容は、専用のファームウェア等によって管理される。ファームウェアの機能が拡張される場合には、ファームウェア自体の更新とともに、データベースのフォーマットの変換（例えば、データ長の変更等）が行われることがある。レプリケーション機能を有するシステムにおいては、マスタデータベースを管理するコンピュータ及びレプリカを管理するコンピュータの両方において、ファームウェア自体の更新及びデータベースのフォーマットの変換が行われる。
【０００４】
但し、ファームウェアを更新する際には、通常はコンピュータの再起動が行われる。マスタデータベースを管理するコンピュータが再起動されると、マスタデータベースの更新が停止するため、システムとしてサービスを提供することができない。そのため、システムの稼働を停止せずにファームウェアの更新をすることが好ましい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４９４５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本発明の目的は、１つの側面では、レプリケーション機能を有するシステムにおいて、システムの稼働中にファームウェアを更新するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、第１のデータベースと、第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び第２のデータベース内のデータの形式を更新することを要求する更新要求を、第２のデータベースを有する他の情報処理装置に送信する更新部と、更新が完了したことを示す完了通知を他の情報処理装置から受信した場合、第１のデータベース内のデータのうち、ファームウェアの更新中に変更されたデータの形式を、更新後のファームウェア用の形式に変換する変換部と、変換部により形式が変換されたデータを、他の情報処理装置に送信する送信部と、形式が変換されたデータが他の情報処理装置に送信された後、マスタのデータベースを第１のデータベースから第２のデータベースに切り替える切替部とを有する。
【発明の効果】
【０００８】
１つの側面では、レプリケーション機能を有するシステムにおいて、システムの稼働中にファームウェアを更新できるようになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施の形態におけるシステム概要を示す図である。
【図２】図２は、マスタサーバの構成を示す図である。
【図３】図３は、レプリカサーバの構成を示す図である。
【図４】図４は、ＤＢに格納されるデータの一例を示す図である。
【図５】図５は、メインの処理フローを示す図である。
【図６】図６は、第１の変換テーブルに格納されるデータの一例を示す図である。
【図７】図７は、第２の変換テーブルに格納されるデータの一例を示す図である。
【図８】図８は、フォーマット変換フラグの一例を示す図である。
【図９】図９は、メインの処理フローを示す図である。
【図１０】図１０は、変更テーブルの一例を示す図である。
【図１１】図１１は、仮ＤＢに格納されるデータの一例を示す図である。
【図１２】図１２は、メインの処理フローを示す図である。
【発明を実施するための形態】
【００１０】
レプリケーション機能を有するシステムにおいては、マスタデータベースを管理するマスタサーバのファームウェアと、レプリカを管理するレプリカサーバのファームウェアとを同時に更新すると、ファームウェアの更新中にシステムが停止する。
【００１１】
そこで、まずいずれかのファームウェアを更新し、更新後に残りのファームウェアを更新することを考える。ここでは、まずレプリカサーバのファームウェアを更新し、レプリカサーバのファームウェアを更新した後、マスタサーバのファームウェアを更新することにする。
【００１２】
このようにすると、レプリカサーバのファームウェアの更新中にマスタサーバが稼働しているので、システムは停止しない。そして、レプリカサーバのファームウェアの更新中にマスタデータベースにおいて変更されたデータを、更新が完了した後にレプリカサーバに送信すれば、更新後のファームウェアが管理するレプリカの内容をマスタデータベースの内容と同期させることができる。
【００１３】
しかしながら、この方法を用いると、ファームウェアの更新によってデータベースのフォーマットが変換される場合に問題が発生することがある。例えば、マスタデータベースにおける或るデータ（ここでは、データＡとする）のデータ長が、フォーマットの変更によって４から６に変更されたとする。この場合、レプリカにおけるデータＡはデータ長が６であるにもかかわらず、マスタデータベースにおける、データ長が４であるデータＡによって上書きされてしまう。
【００１４】
そこで、本実施の形態においては、レプリケーション機能を有するシステムにおけるファームウェアの更新を以下のように実行する。図１に、本実施の形態におけるシステム概要を示す。本実施の形態におけるシステムは、マスタサーバ１と、レプリカサーバ２とを有する。マスタサーバ１とレプリカサーバ２とは、例えばＬＡＮ（Local Area Network）等のネットワークによって接続されており、通信によってデータを同期することができる。
【００１５】
図２に、マスタサーバ１の構成を示す。マスタサーバ１は、ＣＰＵ１０と、ＲＡＭ（Random Access Memory）１１と、例えばＨＤＤ（Hard Disk Drive）である記憶装置１２と、バス１００とを有する。ＣＰＵ１０、ＲＡＭ１１及び記憶装置１２は、バス１００によって接続される。
【００１６】
ＲＡＭ１１は、ファームウェア１１１の領域と、更新部１１２の領域と、同期部１１３の領域と、変換テーブル生成部１１４の領域と、変換部１１５の領域と、変換テーブル１１６の領域と、切替部１１７の領域とを含む。
【００１７】
ファームウェア１１１の領域は、記憶装置１２のファームウェア格納部１２３に格納されたデータが展開された領域である。ファームウェア１１１は、ＤＢ１２１に格納されたデータを管理する。更新部１１２は、ファームウェア１１１を更新する処理を行う。同期部１１３は、ＤＢ（DataBase）１２１とレプリカサーバ２におけるＤＢ２２１とを同期する処理を行う。変換テーブル生成部１１４は、変換テーブル１１６を生成する処理を行う。変換部１１５は、変換テーブル１１６に従い、データのフォーマットを変換する処理を行う。切替部１１７は、マスタとレプリカとを切り替える処理を行う。
【００１８】
記憶装置１２は、ＤＢ１２１の領域と、仮ＤＢ１２２の領域と、ファームウェア格納部１２３の領域とを含む。ＤＢ１２１には、システムにおけるハードウェアの情報（例えばシリアル番号等）及びシステムのステータスについての情報（例えば、ＣＰＵ使用率等）等が格納される。仮ＤＢ１２２には、ＤＢ１２１に格納されたデータを、更新後のファームウェア用の形式に変換したデータが格納される。ファームウェア格納部１２３は、ファームウェアについてのデータ（例えば、ファームウェア本体及び機能モジュール等）が格納される。マスタサーバ１のファームウェア１１１を更新する際には、新しい版のファームウェアについてのデータがファームウェア格納部１２３に格納される。そして、更新部１１２が、ファームウェア格納部１２３に格納されたデータを用いてファームウェア１１１を更新する。
【００１９】
図３に、レプリカサーバ２の構成を示す。レプリカサーバ２は、ＣＰＵ２０と、ＲＡＭ２１と、例えばＨＤＤである記憶装置２２と、バス２００とを有する。ＣＰＵ２０、ＲＡＭ２１及び記憶装置２２は、バス２００によって接続される。
【００２０】
ＲＡＭ２１は、ファームウェア２１１の領域と、更新部２１２の領域と、同期部２１３の領域と、切替部２１４の領域とを含む。
【００２１】
ファームウェア２１１の領域は、記憶装置２２のファームウェア格納部２２２に格納されたデータが展開された領域である。ファームウェア２１１は、ＤＢ２２１に格納されたデータを管理する。更新部２１２は、ファームウェア２１１を更新する処理を行う。同期部２１３は、マスタサーバ１におけるＤＢ１２１とＤＢ２２１とを同期する処理を行う。切替部２１４は、マスタとレプリカとを切り替える処理を行う。
【００２２】
記憶装置２２は、ＤＢ２２１の領域と、ファームウェア格納部２２２の領域とを含む。ＤＢ２２１には、システムにおけるハードウェアの情報（例えばシリアル番号等）及びシステムのステータスについての情報（例えば、ＣＰＵ使用率等）等が格納される。ファームウェア格納部２２２は、ファームウェアについてのデータ（例えば、ファームウェア本体及び機能モジュール等）が格納される。レプリカサーバ２のファームウェア２１１を更新する際には、新しい版のファームウェアについてのデータがファームウェア格納部２２２に格納される。そして、更新部２１２は、ファームウェア格納部２２２に格納されたデータを用いて、ファームウェア２１１を更新する。
【００２３】
ＤＢ１２１及びＤＢ２２１には、キーバリューストア（Key-Value Store）の形式でデータが格納される。図４に、ＤＢ１２１及びＤＢ２２１に格納されるデータの一例を示す。図４の例では、キーと、キーに対応するバリューとが格納される。ＤＢ１２１及びＤＢ２２１には、図４に示したようなキーとバリューとのセットが複数格納される。
【００２４】
次に、図５乃至図１２を用いて、図１に示したシステムにおいてファームウェアを更新する際に行われる処理について説明する。
【００２５】
まず、新しい版のファームウェアについてのデータがマスタサーバ１のファームウェア格納部１２３及びレプリカサーバ２のファームウェア格納部２２２に格納される。更新部１１２は、ファームウェアの更新指示を管理者等から受け付けると、変換テーブル１１６の生成を変換テーブル生成部１１４に指示する。これに応じ、変換テーブル生成部１１４は、ファームウェア格納部１２３に格納されたデータを用いて、新しい版のファームウェア用のフォーマットと、古い版のファームウェア用のフォーマット（すなわち、ＤＢ１２１におけるデータのフォーマット）とを比較する。そして、変換テーブル生成部１１４は、変換テーブル１１６を生成する（ステップＳ１）。
【００２６】
変換テーブル１１６は、古い版のファームウェア用のフォーマットを新しい版のファームウェア用のフォーマットに変換するための第１の変換テーブルと、新しい版のファームウェア用のフォーマットを古い版のファームウェア用のフォーマットに変換するための第２の変換テーブルとを含む。第１の変換テーブルは、以下のルールに従って生成される。
【００２７】
（１）第１の変換テーブルには、古い版におけるキー（以下、旧キーと呼ぶ）、旧キーに対応するバリュー、新しい版におけるキー（以下、新キーと呼ぶ）、新キーに対応するバリュー、変化するデータ量、属性（例えば、右詰め及び左詰め等）についての情報及び変換の内容を示す情報が格納される。
（２）新バリューのデータ長から旧バリューのデータ長を引いた値をデータ量とする。
（３）新キーの中に旧キーには無いものが存在する場合、その新キーについては、変換テーブルにエントリを生成しない。
【００２８】
第２の変換テーブルは、以下のルールに従って生成される。
【００２９】
（４）第２の変換テーブルには、旧キー、旧キーに対応するバリュー、新キー、新キーに対応するバリュー、変化するデータ量、属性についての情報及び変換の内容を示す情報が格納される。
（５）旧バリューのデータ長から新バリューのデータ長を引いた値をデータ量とする。
（６）旧キーの中に新キーには無いものが存在する場合、その旧キーについては、変換テーブルにエントリを生成しない。
【００３０】
図６に、第１の変換テーブルに格納されるデータの一例を示す。図６の例では、旧キーと、旧キーに対応するバリューのデータ長と、新キーと、新キーに対応するバリューのデータ長と、データ量と、属性と、変換の内容を示す情報とが格納される。なお、データ量の値が正であり且つ属性が「左詰め」である場合、データの末尾にデータ量の分だけ０詰めされる。データ量の値が正であり且つ属性が「右詰め」である場合、データの先頭にデータ量の分だけ０詰めされる。データ量の値が負であり且つ属性が「左詰め」である場合、データの末尾からデータ量の分だけデータが削除される。データ量の値が負であり且つ属性が「右詰め」である場合、データの先頭からデータ量の分だけデータが削除される。
【００３１】
図７に、第２の変換テーブルに格納されるデータの一例を示す。図７の例では、旧キーと、旧キーに対応するバリューのデータ長と、新キーと、新キーに対応するバリューのデータ長と、データ量と、属性と、変換の内容を示す情報とが格納される。なお、データ量の値が正であり且つ属性が「左詰め」である場合、データの末尾にデータ量の分だけ０詰めされる。データ量の値が正であり且つ属性が「右詰め」である場合、データの先頭にデータ量の分だけ０詰めされる。データ量の値が負であり且つ属性が「左詰め」である場合、データの末尾からデータ量の分だけデータが削除される。データ量の値が負であり且つ属性が「右詰め」である場合、データの先頭からデータ量の分だけデータが削除される。
【００３２】
図５の説明に戻り、変換テーブル生成部１１４は、第１の変換テーブル又は第２の変換テーブルを用いて、フォーマットの変換が有るか判断する（ステップＳ３）。ステップＳ３においては、いずれのエントリについても旧キーと新キーとが同じであり且つデータ量が「０」である場合には、フォーマットの変換が無いと判断される。一方、いずれかのエントリについて旧キーと新キーとが同じではない又はデータ量が「０」ではない場合、フォーマットの変換が有ると判断される。
【００３３】
フォーマットの変換が有る場合（ステップＳ３：Ｙｅｓルート）、変換テーブル生成部１１４は、フォーマット変換フラグを「有り」に設定する（ステップＳ５）。一方、フォーマットの変換が無い場合（ステップＳ３：Ｎｏルート）、変換テーブル生成部１１４は、フォーマット変換フラグを「無し」に設定する（ステップＳ７）。そして、変換テーブル生成部１１４は、フォーマットの変換の有無を更新部１１２に通知する。変換テーブル生成部１１４が管理するフォーマット変換フラグは、例えば図８に示すようなフラグである。
【００３４】
更新部１１２は、ファームウェア２１１を更新することを要求する更新要求をレプリカサーバ２に送信する（ステップＳ９）。レプリカサーバ２における更新部２１２は、更新要求を受信する（ステップＳ１１）。なお、更新要求は、ファームウェア２１１だけでなくＤＢ２２１内のデータのフォーマットを更新することを要求する場合もある。
【００３５】
更新部２１２は、ファームウェア２１１を停止し、ファームウェア格納部２２２に格納された、新しい版のファームウェアについてのデータを用いて、新しい版のファームウェアをＲＡＭ２１に展開し、新しい版のファームウェア２１１を起動する。すなわち、更新部２１２は、ファームウェア２１１を更新する（ステップＳ１３）。また、更新要求においてＤＢ２２１の更新が要求されている場合、更新部２１２は、ＤＢ２２１内のデータのフォーマットを更新する。なお、ステップＳ１３の処理が行われている間、マスタサーバ１は稼働しているので、システムが停止することは無い。
【００３６】
更新部２１２は、ファームウェア２１１の更新が完了したことを示す完了通知を、マスタサーバ１に送信する（ステップＳ１５）。マスタサーバ１における更新部１１２は、完了通知を受信すると（ステップＳ１７）、同期部１１３に処理の実行を指示する。処理は端子Ａ及びＢを介して図９の処理に移行する。
【００３７】
図９の説明に移行し、同期部１１３は、ＤＢ１２１に格納されているいずれかのキーについて、バリューが変更されたか判断する（ステップＳ１９）。なお、同期部１１３は、図１０に示すような変更テーブルを管理しており、このテーブルを用いて、バリューが変更されたか否かを判断する。変更テーブルには、各キーについて、直近に同期をしてからバリューが変更されたか否かを示すフラグが格納されている。バリューが変更された時点において、フラグは「無し」から「有り」に設定される。
【００３８】
いずれのキーについてもバリューが変更されていない場合（ステップＳ１９：Ｎｏルート）、同期をしなくてもよいので、ステップＳ３５の処理に移行する。一方、いずれかのキーについてバリューが変更された場合（ステップＳ１９：Ｙｅｓルート）、同期部１１３は、フォーマット変換フラグが「有り」に設定されているか判断する（ステップＳ２１）。ステップＳ５の処理が実行された場合にはフォーマット変換フラグが「有り」に設定されており、ステップＳ７の処理が実行された場合にはフォーマット変換フラグが「無し」に設定されている。
【００３９】
フォーマット変換フラグが「有り」ではない（すなわち、「無し」である）場合（ステップＳ２１：Ｎｏルート）、同期部１１３は、変更後のデータをＤＢ１２１から抽出する（ステップＳ２３）。ここで、変更後のデータは、変更テーブルにおいてフラグが「有り」に設定されているキーと、キーに対応するバリューと、そのバリューのデータ長とを含む。
【００４０】
一方、フォーマット変換フラグが「有り」である場合（ステップＳ２１：Ｙｅｓルート）、変換部１１５は、変更テーブルにおいてフラグが「有り」に設定されているキーに対応するバリューの形式を、第１の変換テーブルに従い更新後のファームウェア用の形式に変換する。そして、変換部１１５は、変換後のバリューを仮ＤＢ１２２に格納する（ステップＳ２５）。ここで、更新部１１２は、フォーマット変換フラグを「無し」に設定する。
【００４１】
例えば、図４に示したキー「ｄ」に対するバリューの形式を、図６に示した第１の変換テーブルに従って変換すると、図１１に示すバリューが生成され、仮ＤＢ１２２に格納される。図１１の例では、「０１２３」の後に「００００」がパディングされている。
【００４２】
同期部１１３は、変更後のデータを仮ＤＢ１２２から抽出する（ステップＳ２７）。ここで、変更後のデータは、変更テーブルにおいてフラグが「有り」に設定されているキーと、キーに対応するバリューと、そのバリューのデータ長とを含む。
【００４３】
同期部１１３は、ステップＳ２３及びＳ２７において抽出されたデータを、レプリカサーバ２に送信する（ステップＳ２９）。レプリカサーバ２における同期部２１３は、マスタサーバ１から変更後のデータを受信する（ステップＳ３１）。そして、同期部２１３は、受信したデータでＤＢ２２１を更新する（ステップＳ３３）。なお、フォーマットの変換が無い場合には、ＤＢ２２１におけるデータのフォーマットはＤＢ１２１におけるデータのフォーマットと同じである。また、フォーマットの変換が有る場合には、ＤＢ２２１におけるデータのフォーマットはＤＢ１２１におけるデータのフォーマットとは異なるが、ステップＳ２７の処理が行われるので、ＤＢ２２１におけるデータのフォーマットは仮ＤＢ１２２におけるデータのフォーマットと同じである。従って、いずれの場合においても、ファームウェア２１１の更新中にＤＢ１２１において行われた変更を、ＤＢ２２１に反映することができる。
【００４４】
一方、マスタサーバ１における切替部１１７は、レプリカサーバ２に対して制御権の委譲を行う（ステップＳ３５）。そして、レプリカサーバ２における切替部２１４は、制御権を取得する（ステップＳ３７）。これにより、制御権の委譲が再び行われるまでの間は、レプリカサーバ２がマスタサーバに切り替わり、マスタサーバ１がレプリカサーバに切り替わる。但し、説明を簡単にするため、元々マスタサーバであったサーバをマスタサーバ１と呼び、元々レプリカサーバであったサーバをレプリカサーバ２と呼ぶ。
【００４５】
制御権が委譲されると、レプリカサーバ２のＤＢ２２１は変更される可能性がある。同期部２１３は、ＤＢ２２１に格納されているいずれかのキーについて、バリューが変更されたか判断する（ステップＳ３９）。なお、同期部２１３も、同期部１１３と同様、図１０に示すような変更テーブルを管理しており、このテーブルを用いて、バリューが変更されたか否かを判断する。
【００４６】
いずれのキーについてもバリューが変更されていない場合（ステップＳ３９：Ｎｏルート）、同期をしなくてもよいので、処理は端子Ｅを介して図１２のステップＳ５３に移行する。
【００４７】
一方、いずれかのキーについてバリューが変更された場合（ステップＳ３９：Ｙｅｓルート）、同期部２１３は、変更後のデータをＤＢ２２１から抽出し、マスタサーバ１に送信する（ステップＳ４１）。ここで、変更後のデータは、変更テーブルにおいてフラグが「有り」に設定されているキーと、キーに対応するバリューと、そのバリューのデータ長とを含む。マスタサーバ１における同期部１１３は、変更後のデータをレプリカサーバ２から受信する（ステップＳ４３）。同期部１１３は、処理は端子Ｃ及びＤを介して図１２の処理に移行する。
【００４８】
図１２の説明に移行し、同期部１１３は、フォーマット変換フラグが「有り」に設定されているか判断する（ステップＳ４５）。ステップＳ５の処理が実行された場合にはフォーマット変換フラグが「有り」に設定されており、ステップＳ７の処理が実行された場合にはフォーマット変換フラグが「無し」に設定されている。
【００４９】
フォーマット変換フラグが「有り」ではない（すなわち、「無し」である）場合（ステップＳ４５：Ｎｏルート）、ＤＢ２２１内のデータのフォーマットとＤＢ１２１内のデータのフォーマットとが同じである。従って、同期部１１３は、レプリカサーバ２から受信したデータでＤＢ１２１を更新する（ステップＳ４７）。
【００５０】
フォーマット変換フラグが「有り」である場合（ステップＳ４５：Ｙｅｓルート）、ＤＢ２２１内のデータのフォーマットとＤＢ１２１内のデータのフォーマットとは同じではない。よって、同期部１１３は、レプリカサーバ２から受信したデータで仮ＤＢ１２２を更新する（ステップＳ４９）。そして、変換部１１５は、仮ＤＢ１２２内のデータのフォーマットを変換テーブル１１６（ここでは、第２の変換テーブル）に従い変換する。そして、同期部１１３は、変換後のデータでＤＢ１２１を更新する（ステップＳ５１）。
【００５１】
例えば、図１１に示したキー「ｄ」に対するバリューの形式を、図７に示した第２の変換テーブルに従って変換すると、図４に示すバリューが生成され、ＤＢ１２１が更新される。
【００５２】
そして、レプリカサーバ２における更新部２１２は、ファームウェア１１１を更新することを要求する更新要求をマスタサーバ１に送信する（ステップＳ５３）。マスタサーバ１における更新部１１２は、更新要求を受信する（ステップＳ５５）。なお、更新要求は、ファームウェア１１１だけでなくＤＢ１２１内のデータのフォーマットを更新することを要求する場合もある。
【００５３】
更新部１１２は、ファームウェア１１１を停止し、ファームウェア格納部１２３に格納された、新しい版のファームウェアについてのデータを用いて、新しい版のファームウェアをＲＡＭ１１に展開し、新しい版のファームウェア１１１を起動する。すなわち、更新部１１２は、ファームウェア１１１を更新する（ステップＳ５７）。また、更新要求においてＤＢ１２１の更新が要求されている場合、更新部１１２は、ＤＢ１２１内のデータのフォーマットを更新する。なお、ステップＳ５７の処理が行われている間、マスタサーバとして動作するレプリカサーバ２は稼働しているので、システムが停止することは無い。
【００５４】
更新部１１２は、ファームウェア１１１の更新が完了したことを示す完了通知を、レプリカサーバ２に送信する（ステップＳ５９）。また、更新部１１２は、フォーマット変換フラグを「無し」に設定する。
【００５５】
レプリカサーバ２における更新部２１２は、完了通知を受信すると（ステップＳ６１）、同期部２１３に処理の実行を指示する。
【００５６】
同期部２１３は、ＤＢ２２１内のデータをマスタサーバ１に送信する（ステップＳ６３）。なお、本ステップにおいては、変更テーブルにおいてフラグが「有り」に設定されているデータのみをマスタサーバ１に送信してもよい。また、変更テーブルにおいてフラグが「有り」に設定されているデータが無い場合には、本ステップを省略してもよい。
【００５７】
マスタサーバ１における同期部１１３は、ＤＢ２２１内のデータをレプリカサーバ２から受信する（ステップＳ６５）。そして、同期部１１３は、ステップＳ６５において受信したデータでＤＢ１２１を更新する（ステップＳ６７）。
【００５８】
一方、レプリカサーバ２における切替部２１４は、マスタサーバ１に対して制御権の委譲を行う（ステップＳ６９）。そして、マスタサーバ１における切替部１１７は、制御権を取得する（ステップＳ７１）。これにより、マスタサーバ１がレプリカサーバからマスタサーバに切り替わり、レプリカサーバ２がマスタサーバからレプリカサーバに切り替わる。
【００５９】
以上のような処理を行えば、システムを停止することなくファームウェアを更新できるようになる。また、データベース内のデータのフォーマットが変換される（例えば、キーが追加される）場合にも対処できるようになる。
【００６０】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したマスタサーバ１及びレプリカサーバ２の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００６１】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００６２】
なお、上ではレプリカサーバ２が１台である例を示したが、レプリカサーバ２は２台以上であってもよい。
【００６３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００６４】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）第１のデータベースと、（Ｂ）第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び第２のデータベース内のデータの形式を更新することを要求する更新要求を、第２のデータベースを有する他の情報処理装置に送信する更新部と、（Ｃ）更新が完了したことを示す完了通知を他の情報処理装置から受信した場合、第１のデータベース内のデータのうち、ファームウェアの更新中に変更されたデータの形式を、更新後のファームウェア用の形式に変換する変換部と、（Ｄ）変換部により形式が変換されたデータを、他の情報処理装置に送信する送信部と、（Ｅ）形式が変換されたデータが他の情報処理装置に送信された後、マスタのデータベースを第１のデータベースから第２のデータベースに切り替える切替部とを有する。
【００６５】
このようにすれば、ファームウェアの更新時に情報処理装置の再起動等を行わなくてよいので、システムを停止することなくファームウェアを更新できるようになる。また、ファームウェアの更新中に第１のデータベース内のデータが変更されたとしても、変更の内容は第２のデータベースに適切に反映されるようになる。
【００６６】
また、上で述べた変換部は、（ｃ１）第２のデータベース内のデータのうち変更されたデータを他の情報処理装置から受信した場合、受信した当該データの形式を、第１のデータベースを管理するファームウェア用の形式に変換してもよい。そして、上で述べた送信部は、（ｄ１）変換部により形式が変換されたデータで第１のデータベース内のデータを更新してもよい。このようにすれば、ファームウェアのバージョンが情報処理装置間で異なる場合においても、データの変更を適切に反映できるようになる。
【００６７】
また、上で述べた更新部は、（ｂ１）ファームウェア及び当該ファームウェアが管理する第１のデータベース内のデータの形式を更新することを要求する更新要求を、他の情報処理装置から受信した場合に、第１のデータベースを管理するファームウェアを更新してもよい。そして、上で述べた送信部は、（ｄ２）第２のデータベース内のデータのうち変更されたデータを他の情報処理装置から受信した場合、受信した当該データで、第１のデータベース内のデータを更新してもよい。このようにすれば、第１のデータベースを管理するファームウェアを更新した後においても、データの同期を適切に行えるようになる。
【００６８】
本実施の形態の第２の態様に係る更新方法は、（Ｆ）第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び第２のデータベース内のデータの形式を更新することを要求する更新要求を、第２のデータベースを有する他の情報処理装置に送信し、（Ｇ）更新が完了したことを示す完了通知を他の情報処理装置から受信した場合、第１のデータベース内のデータのうち、ファームウェアの更新中に変更されたデータの形式を、更新後のファームウェア用の形式に変換し、（Ｈ）変換部により形式が変換されたデータを、他の情報処理装置に送信し、（Ｉ）マスタのデータベースを第１のデータベースから第２のデータベースに切り替える処理を含む。
【００６９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００７０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７１】
（付記１）
第１のデータベースと、
前記第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び前記第２のデータベース内のデータの形式を更新することを要求する更新要求を、前記第２のデータベースを有する他の情報処理装置に送信する更新部と、
前記更新が完了したことを示す完了通知を前記他の情報処理装置から受信した場合、前記第１のデータベース内のデータのうち、前記ファームウェアの更新中に変更されたデータの形式を、更新後の前記ファームウェア用の形式に変換する変換部と、
前記変換部により形式が変換されたデータを、前記他の情報処理装置に送信する送信部と、
前記形式が変換されたデータが前記他の情報処理装置に送信された後、マスタのデータベースを前記第１のデータベースから前記第２のデータベースに切り替える切替部と、
を有する情報処理装置。
【００７２】
（付記２）
前記変換部は、
前記第２のデータベース内のデータのうち変更されたデータを前記他の情報処理装置から受信した場合、受信した当該データの形式を、前記第１のデータベースを管理するファームウェア用の形式に変換し、
前記送信部は、
前記変換部により形式が変換されたデータで前記第１のデータベース内のデータを更新する
付記１記載の情報処理装置。
【００７３】
（付記３）
前記更新部は、
前記ファームウェア及び当該ファームウェアが管理する前記第１のデータベース内のデータの形式を更新することを要求する更新要求を、前記他の情報処理装置から受信した場合に、前記第１のデータベースを管理するファームウェアを更新し、
前記送信部は、
前記第２のデータベース内のデータのうち変更されたデータを前記他の情報処理装置から受信した場合、受信した当該データで、前記第１のデータベース内のデータを更新する
付記１又は２記載の情報処理装置。
【００７４】
（付記４）
第１のデータベースのレプリカである第２のデータベースを管理するファームウェア及び前記第２のデータベース内のデータの形式を更新することを要求する更新要求を、前記第２のデータベースを有する他の情報処理装置に送信し、
前記更新が完了したことを示す完了通知を前記他の情報処理装置から受信した場合、前記第１のデータベース内のデータのうち、前記ファームウェアの更新中に変更されたデータの形式を、更新後の前記ファームウェア用の形式に変換し、
前記変換部により形式が変換されたデータを、前記他の情報処理装置に送信し、
マスタのデータベースを前記第１のデータベースから前記第２のデータベースに切り替える、
処理をコンピュータが実行する更新方法。
【符号の説明】
【００７５】
１  マスタサーバ    １０  ＣＰＵ
１１  ＲＡＭ    １２  記憶装置
１００  バス    １１１  ファームウェア
１１２  更新部    １１３  同期部
１１４  変換テーブル生成部    １１５  変換部
１１６  変換テーブル    １１７  切替部
１２１  ＤＢ    １２２  仮ＤＢ
１２３  ファームウェア格納部
２  レプリカサーバ    ２０  ＣＰＵ
２１  ＲＡＭ    ２２  記憶装置
２００  バス    ２１１  ファームウェア
２１２  更新部    ２１３  同期部
２１４  切替部    ２２１  ＤＢ
２２２  ファームウェア格納部
【図１】
2015156156.tif 000003
【図２】
2015156156.tif 000004
【図３】
2015156156.tif 000005
【図４】
2015156156.tif 000006
【図５】
2015156156.tif 000007
【図６】
2015156156.tif 000008
【図７】
2015156156.tif 000009
【図８】
2015156156.tif 000010
【図９】
2015156156.tif 000011
【図１０】
2015156156.tif 000012
【図１１】
2015156156.tif 000013
【図１２】
2015156156.tif 000014