(57)【特許請求の範囲】
【請求項１】
プログラムを実行する情報処理装置において、
第１のプログラムと第２のプログラムとを実行する実行部と、
前記情報処理装置が、他の情報処理装置からの指示に応じてプログラム更新処理を実行するスレーブのとき、実行するプログラムを前記第１のプログラムから第１の更新プログラムに更新する第１の処理を実行し、前記情報処理装置が、前記プログラム更新処理を制御するマスタのとき、実行するプログラムを前記第２のプログラムから第２の更新プログラムに更新する処理と、前記第１のプログラムまたは前記第１の更新プログラムにしたがって前記プログラム更新処理の進捗状況を管理装置に通知する処理とを含む第２の処理を実行する更新制御部と、
を有する情報処理装置。
【請求項２】
前記第２の処理は、前記マスタとして前記第１のプログラムにしたがって前記進捗状況の通知処理を実行している第１の状態において、前記第２のプログラムの実行を停止する処理を含み、
前記第１の処理は、前記第１の状態から前記情報処理装置を前記スレーブに設定する第２の状態に切り替え、前記他の情報処理装置からの指示に応じて、前記第１のプログラムの実行を停止して前記第１の更新プログラムの実行を開始する処理を含み、
前記第２の処理はさらに、前記第２の状態から、前記他の情報処理装置からの指示に応じて前記情報処理装置を前記マスタに設定する第３の状態に切り替え、前記第１の更新プログラムにしたがって前記通知処理を再開するとともに、前記第２の更新プログラムの実行を開始する処理を含む、
請求項１記載の情報処理装置。
【請求項３】
前記第１のプログラムと前記第１の更新プログラムは、前記情報処理装置上で動作する第１の仮想マシンによって実行され、前記第２のプログラムと前記第２の更新プログラムは、前記情報処理装置上で動作する第２の仮想マシンによって実行される、
請求項１または２記載の情報処理装置。
【請求項４】
前記更新制御部は、前記情報処理装置が前記マスタであるとき、前記他の情報処理装置で実行される第３のプログラムの更新を前記他の情報処理装置に指示し、前記第１のプログラムまたは前記第１の更新プログラムにしたがって前記第３のプログラムの更新の進捗状況を前記管理装置に通知する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
コンピュータが、
第１のプログラムと第２のプログラムとを実行し、
前記第１のプログラムと前記第２のプログラムの更新処理を実行し、
前記コンピュータが、他のコンピュータからの指示に応じてプログラム更新処理を実行するスレーブのとき、実行するプログラムを前記第１のプログラムから第１の更新プログラムに更新する第１の処理を実行し、
前記コンピュータが、前記プログラム更新処理を制御するマスタのとき、実行するプログラムを前記第２のプログラムから第２の更新プログラムに更新する処理と、前記第１のプログラムまたは前記第１の更新プログラムにしたがって前記プログラム更新処理の進捗状況を管理装置に通知する処理とを含む第２の処理を実行する、
プログラム更新制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびプログラム更新制御方法に関する。
【背景技術】
【０００２】
近年、情報処理システムに含まれる処理装置の多くは、ファームウェアにしたがって動作する。各処理装置のファームウェアを更新する作業を効率化するために、管理装置による管理の下で更新処理が自動的に行われる情報処理システムもある。
【０００３】
ファームウェアの更新方法としては、版数の異なるファームウェアがそれぞれ格納される２つの不揮発性記憶領域を用いた次のような方法がある。この方法では、第１の記憶領域内の版数の古いファームウェアが実行された状態から、処理装置が再起動されると、第２の記憶領域内の版数の新しいファームウェアが読み出されて実行される。これに関連する技術として、再起動後に第２の記憶領域のファームウェアが正常かを判定し、正常であればそのファームウェアを起動し、異常であれば第１の記憶領域のファームウェアを起動する技術が提案されている。
【０００４】
また、情報処理システムの中には、装置の故障発生時や、ファームウェア更新などの保守作業時でも運用を継続できるように、処理装置が冗長化されたものがある。例えば、論理記憶領域へのアクセスを制御する制御装置が冗長化された次のようなシステムが提案されている。このシステムでは、一方の制御装置の制御プログラムの更新中に、この装置に対してホスト計算機からアクセスされると、ホスト計算機に再起動待ちであることを示す情報が通知される。通知を受けたホスト計算機は、他方の制御装置を経由して論理記憶領域へアクセスする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３１８８７１号公報
【特許文献２】特開２００９−４２９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
冗長化された処理装置のファームウェアを更新する際には、例えば、一方の処理装置のファームウェアが更新され、その更新が完了した後に他方の処理装置のファームウェアが更新される。これにより、どちらか一方の処理装置で通常処理を継続したまま、ファームウェアを更新することができる。
【０００７】
また、ファームウェア更新の際には、前述のように処理装置の再起動を伴うことがある。そこで、冗長化された処理装置の一方をファームウェア更新制御のためのマスタにし、他方をスレーブにして、マスタがスレーブのファームウェア更新を制御する方法が考えられる。
【０００８】
ここで、一方の処理装置（「第１の処理装置」とする）にだけ管理端末を接続し、管理端末からの操作によってファームウェア更新を開始させるとともに、その進捗状況を管理端末が随時取得して、管理者が確認できるように表示装置に表示させることが考えられる。この場合、例えば、初期状態でマスタに設定された第１の処理装置は、管理端末からの指示に応じて第２の処理装置のファームウェア更新のためのシーケンスを実行する。シーケンスが完了すると、マスタとスレーブとが入れ替えられ、マスタに設定された第２の処理装置は、第１の処理装置のファームウェア更新のためのシーケンスを実行する。シーケンスが完了すると、再度マスタとスレーブとが入れ替えられ、マスタに設定された第１の処理装置は、ファームウェア更新が完了したことを管理端末に通知する。
【０００９】
しかし、この方法では、第１の処理装置がスレーブに設定されている期間では、第１の処理装置から管理端末へ更新の進捗状況を通知できない。このため、例えば、第１の処理装置でのファームウェア更新時に異常が発生した場合に、管理者がそれに気づいて必要な措置を施すまでに時間がかかってしまう。また、異常が発生していない場合でも、管理者からは進捗が一時的に停止しているように見えるので、有用性が低下する。
【００１０】
特に、各処理装置において複数のファームウェアが実行されている場合には、スレーブに設定された第１の処理装置において各ファームウェアの更新が完了するまでにかかる時間が長くなってしまう。例えば、各処理装置において複数の仮想ＯＳ（Operating System）プログラムが実行され、それらの仮想ＯＳプログラムを更新する場合には、上記の問題が顕著になる。
【００１１】
１つの側面では、本発明は、プログラム更新の進捗状況の通知が不可能な期間を短縮することが可能な情報処理装置およびプログラム更新制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
１つの案では、プログラムを実行する情報処理装置が提供される。この情報処理装置は、実行部と更新制御部とを有する。実行部は、第１のプログラムと第２のプログラムとを実行する。更新制御部は、情報処理装置が、他の情報処理装置からの指示に応じてプログラム更新処理を実行するスレーブのとき、実行するプログラムを第１のプログラムから第１の更新プログラムに更新する第１の処理を実行する。また、更新制御部は、情報処理装置が、プログラム更新処理を制御するマスタのとき、実行するプログラムを第２のプログラムから第２の更新プログラムに更新する処理と、第１のプログラムまたは第１の更新プログラムにしたがってプログラム更新処理の進捗状況を管理装置に通知する処理とを含む第２の処理を実行する。
【００１３】
また、１つの案では、上記の情報処理装置と同様の処理をコンピュータが実行するプログラム更新制御方法が提供される。
【発明の効果】
【００１４】
１つの側面では、プログラム更新の進捗状況の通知が不可能な期間を短縮できる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭおよびＤＥのハードウェア構成例を示す図である。
【図４】ＣＭとＤＥとの接続例を示す図である。
【図５】ＣＭの処理機能の構成例を示すブロック図である。
【図６】ＣＭのファームウェアの更新方法の例を示す図である。
【図７】ファームウェア更新処理の比較例を示すフローチャートである。
【図８】第２の実施の形態におけるファームウェア更新処理の例を示すフローチャートである。
【図９】第２の実施の形態におけるファームウェア更新処理の例を示すシーケンス図（その１）である。
【図１０】第２の実施の形態におけるファームウェア更新処理の例を示すシーケンス（その２）図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。情報処理装置１は、実行部１ａと更新制御部１ｂを有する。実行部１ａと更新制御部１ｂの処理は、例えば、情報処理装置１が備えるプロセッサが所定のプログラムを実行することで実現される。
【００１７】
また、情報処理装置１には、他の情報処理装置２と管理装置３が接続されている。他の情報処理装置２は、後述するように、情報処理装置１でのプログラム更新処理の一部を制御することが可能である。管理装置３は、情報処理装置１でのプログラム更新処理の進捗状況を示す進捗情報を受信し、進捗情報の内容を表示情報などによって管理者に通知する。
【００１８】
実行部１ａは、第１のプログラムと第２のプログラムを実行する（ステップＳ１）。ここで、第１のプログラムは、第１のプログラムと第２のプログラムの更新処理が開始されたときに、上記の進捗情報を管理装置３に通知する処理を実現する。情報処理装置１は、第１のプログラムにしたがい、進捗情報を管理装置３に間欠的に複数回通知可能である。例えば、情報処理装置１は、管理装置３から一定時間ごとに送信される要求に応じて、進捗情報を管理装置３に通知する。
【００１９】
第１のプログラムと第２のプログラムとが実行された状態から、例えば管理装置３から、第１のプログラムと第２のプログラムの更新処理の開始が指示されると、更新制御部１ｂは次のような処理を実行する。なお、情報処理装置１は、更新処理を情報処理装置１自身が制御するマスタと、他の情報処理装置２からの指示に応じて更新処理を実行するスレーブという２つの動作状態に遷移可能である。
【００２０】
更新制御部１ｂは、実行するプログラムを第１のプログラムから第１の更新プログラムに更新する処理を、情報処理装置１がスレーブのときに実行する。第１の更新プログラムとは、第１のプログラムに対応する、第１のプログラムより版数の新しいプログラムである。
【００２１】
一方、更新制御部１ｂは、実行するプログラムを第２のプログラムから第２の更新プログラムに更新する処理を、情報処理装置１がマスタのときに実行する。第２の更新プログラムとは、第２のプログラムに対応する、第２のプログラムより版数の新しいプログラムである。
【００２２】
ここで、情報処理装置１がマスタのとき、情報処理装置１自身が更新処理を制御することから、更新制御部１ｂは、第１のプログラム、または更新後の第１の更新プログラムにしたがって、進捗情報を管理装置３に通知する通知処理を実行できる。一方、情報処理装置１がスレーブのとき、情報処理装置１自身が更新処理を制御していないことから、更新制御部１ｂは、第１のプログラム、または更新後の第１の更新プログラムにしたがって、進捗情報を管理装置３に通知する通知処理を実行できない。
【００２３】
更新制御部１ｂは、情報処理装置１がスレーブのときには、進捗情報の通知処理に関係のある第１のプログラムの更新だけを行い、第２のプログラムの更新を情報処理装置１がマスタのときに行う。これにより、進捗情報を管理装置３に通知できない時間を短縮することができる。
【００２４】
図１の例では、実行するプログラムを第２のプログラムから第２の更新プログラムに更新する処理が、ステップＳ２とステップＳ４とに分割されている。ステップＳ２は、情報処理装置１がマスタである第１の状態において実行され、ステップＳ４は、情報処理装置１がマスタである第３の状態において実行される。そして、ステップＳ２とステップＳ４との間のステップＳ３において、実行するプログラムを第１のプログラムから第１の更新プログラムに更新する処理が実行される。ステップＳ３は、情報処理装置１がスレーブである第２の状態において実行される。
【００２５】
具体的には、第１の状態では、更新制御部１ｂは、第２のプログラムの実行を停止する（ステップＳ２）。このとき、第１のプログラムは実行されたままであり、更新制御部１ｂは、第１のプログラムにしたがって、進捗情報の通知処理を実行する（ステップＳ２ａ）。
【００２６】
次に、更新制御部１ｂは、情報処理装置１の状態をマスタからスレーブに切り替えるとともに、他の情報処理装置をスレーブからマスタに切り替える。これにより、第２の状態に遷移する。第２の状態では、更新制御部１ｂは、他の情報処理装置２からの指示に応じて、第１のプログラムの実行を停止し、第１の更新プログラムの実行を開始する（ステップＳ３）。これにより、第１のプログラムが更新される。また、第２の状態では、進捗情報の通知処理は停止される。
【００２７】
次に、更新制御部１ｂは、他の情報処理装置２からの指示に応じて、情報処理装置１の状態をスレーブからマスタに切り替える。これにより、第３の状態に遷移する。第３の状態では、更新制御部１ｂは、第２の更新プログラムの実行を開始する（ステップＳ４）。これにより、第２のプログラムが更新される。また、第３の状態に遷移することで、進捗情報の通知が不可能な期間が終了する。そのため、更新制御部１ｂは、第１の更新プログラムにしたがって、進捗情報の通知処理を再開する（ステップＳ４ａ）。
【００２８】
このような処理により、情報処理装置１がスレーブとなる第２の状態では、第１のプログラムの更新処理だけが行われる。一方、第２のプログラムの更新処理は、情報処理装置１がマスタとなる第１，第３の状態で行われる。これにより、進捗情報を管理装置３に通知できない時間を短縮することができる。
【００２９】
なお、更新処理の進捗情報の通知先は、管理装置３でなくてもよい。例えば、情報処理装置１に接続または搭載された表示装置に進捗情報が通知されて、進捗情報の内容が表示装置に表示されてもよい。
【００３０】
また、例えば、他の情報処理装置２では、情報処理装置１と同様に第１のプログラムと第２のプログラムが実行されていてもよい。この場合、情報処理装置１と他の情報処理装置２の少なくとも一方が所定の処理を正常に実行できる状態になっていれば、第１のプログラムと第２のプログラムに基づく処理を継続することができる。
【００３１】
例えば、少なくとも上記の第１の状態から第３の状態では、情報処理装置１では第１のプログラムと第２のプログラムに基づく処理全体を正しく実行できない。しかし、第１の状態から第３の状態において、他の情報処理装置２において第１のプログラムと第２のプログラム、またはこれらの更新後のプログラムが実行されていることで、これらのプログラムに基づく処理を他の情報処理装置２が継続したまま、情報処理装置１でのプログラム更新を行うことが可能となる。
【００３２】
［第２の実施の形態］
次に、第２の実施の形態として、２つの仮想ＯＳプログラムがそれぞれ実行されるストレージ制御装置を含むストレージシステムを例示する。このストレージシステムにおいては、少なくとも、一方のストレージ制御装置で実行される２つの仮想ＯＳプログラムが、図１に示した第１のプログラムおよび第２のプログラムの一例である。
【００３３】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ＣＥ（Controller Enclosure）５０と複数のＤＥ（Drive Enclosure）２００ａ，２００ｂ，・・・を含む。ＣＥ５０は、それぞれＤＥ２００ａ，２００ｂ，・・・に接続されたＣＭ（Controller Module）１００ａ，１００ｂを有する。ＣＭ１００ａ，１００ｂには、ホスト装置３０１，３０２が接続されている。
【００３４】
ＣＭ１００ａ，１００ｂは、ホスト装置３０１またはホスト装置３０２からの要求に応じて、ＤＥ２００ａ，２００ｂ，・・・に搭載された記憶装置に対するアクセスを制御するストレージ制御装置である。ＤＥ２００ａ，２００ｂ，・・・にはそれぞれ、ホスト装置３０１，３０２からのアクセス対象となる複数台の記憶装置が搭載されている。本実施の形態では例として、ＤＥ２００ａ，２００ｂ，・・・は、記憶装置としてＨＤＤ（Hard Disk Drive）が搭載されたディスクアレイ装置であるものとする。
【００３５】
また、ＣＭ１００ａには、管理端末４００が接続されている。管理端末４００には、表示装置４０１が接続されている。管理端末４００は、ストレージシステムの管理者によって操作される端末装置である。管理者は、例えば、管理端末４００を操作することで、ＣＭ１００ａ，１００ｂやＤＥ２００ａ，２００ｂ，・・・のファームウェア更新を実行させることができ、表示装置４０１の表示情報からその進捗状況を確認することができる。
【００３６】
ところで、ホスト装置３０１は、ＳＡＮ（Storage Area Network）３１１を介してＣＭ１００ａ，１００ｂに接続されている。ホスト装置３０１は、ＣＭ１００ａ，１００ｂに対してブロック単位でアクセス要求を行う。例えば、ホスト装置３０１は、ＦＣ（Fibre Channel）、ｉＳＣＳＩ（SCSI：Small Computer System Interface）などの通信プロトコルにしたがってＣＭ１００ａ，１００ｂと通信する。
【００３７】
一方、ホスト装置３０２は、ＬＡＮ３１２を介してＣＭ１００ａ，１００ｂに接続されている。ホスト装置３０２は、ＣＭ１００ａ，１００ｂに対してファイル単位でアクセス要求を行う。例えば、ホスト装置３０２は、ＮＦＳ（Network File System）、ＣＩＦＳ（Common Internet File System）などの通信プロトコルにしたがってＣＭ１００ａ，１００ｂと通信する。
【００３８】
ＣＭ１００ａ，１００ｂは、データのアクセス単位が異なる２つの通信プロトコルに対応する“ユニファイド・ストレージ”として動作する。ＣＭ１００ａ，１００ｂは、ブロック単位でのアクセス要求に応じてＤＥ２００ａ，２００ｂ，・・・へのアクセス制御を行う処理機能と、ファイル単位でのアクセス要求に応じてＤＥ２００ａ，２００ｂ，・・・へのアクセス制御を行う処理機能の両方を備える。後述するように、ＣＭ１００ａ，１００ｂは、これら２つの処理機能を、個別の仮想マシン上で実行されるファームウェアによってそれぞれ実現する。
【００３９】
図３は、ＣＭおよびＤＥのハードウェア構成例を示す図である。
ＣＭ１００ａは、ＣＰＵ（Central Processing Unit）１０１ａ、ＲＡＭ（Random Access Memory）１０２ａ、ＳＳＤ（Solid State Drive）１０３ａ、ネットワークインタフェース１０４ａ、読み取り装置１０５ａ、ＣＡ（Channel Adapter）１０６ａ，１０７ａ、ＩＯＣ（In/Out Controller）１０８ａおよびＣＭエクスパンダ１０９ａを備える。
【００４０】
ＣＰＵ１０１ａは、ＣＭ１００ａ全体を統括的に制御する。ＣＰＵ１０１ａは、例えば、１または複数のプロセッサを備える。ＲＡＭ１０２ａは、ＣＭ１００ａの主記憶装置である。ＲＡＭ１０２ａは、ＣＰＵ１０１ａに実行させるプログラムの少なくとも一部や、ＣＰＵ１０１ａの処理に用いられる各種データを一時的に記憶する。
【００４１】
ＳＳＤ１０３ａは、ＣＭ１００ａの補助記憶装置である。ＳＳＤ１０３ａは、ＣＰＵ１０１ａに実行されるファームウェアが格納されるファームウェア領域を含む。このファームウェアには、ブロック単位でのアクセス要求に応じたアクセス制御を実現するための仮想ＯＳプログラムおよびアプリケーションプログラム、ファイル単位でのアクセス要求に応じたアクセス制御を実現するための仮想ＯＳプログラムおよびアプリケーションプログラムが含まれる。
【００４２】
また、ＳＳＤ１０３ａは、例えば、アクセス制御に利用されるキャッシュ領域を含む。なお、ファームウェア領域とキャッシュ領域とは、個別の記憶装置によって実現されてもよい。また、ＣＭ１００ａは、補助記憶装置として、ＳＳＤ１０３ａの代わりにＨＤＤを備えてもよい。
【００４３】
ネットワークインタフェース１０４ａは、図示しないネットワークを介して他の装置と接続し、他の装置との間でデータを送受信する。本実施の形態では、ネットワークインタフェース１０４ａには管理端末４００が接続される。
【００４４】
読み取り装置１０５ａには、可搬型の記録媒体１０５ａａが脱着される。読み取り装置１０５ａは、記録媒体１０５ａａに記録されたデータを読み取ってＣＰＵ１０１ａに送信する。記録媒体１０５ａａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００４５】
ＣＡ１０６ａは、ＳＡＮ３１１を介してホスト装置３０１と接続し、ホスト装置３０１との間でデータを送受信する。ＣＡ１０７ａは、ＬＡＮ３１２を介してホスト装置３０２と接続し、ホスト装置３０２との間でデータを送受信する。
【００４６】
ＩＯＣ１０８ａは、ＣＰＵ１０１ａとＣＭエクスパンダ１０９ａとの間でデータを送受信する。ＣＭエクスパンダ１０９ａは、ＩＯＣ１０８ａとＤＥとの間でデータを中継する。図３の例では、ＣＭエクスパンダ１０９ａはＤＥ２００ａと接続されている。なお、本実施の形態では、ＩＯＣ１０８ａとＤＥとの間ではＳＡＳ（Serial Attached SCSI）プロトコルにしたがってデータが送受信される。したがって、ＣＭエクスパンダ１０９ａはＳＡＳエクスパンダとして動作する。また、ＣＭエクスパンダ１０９ａは、複数のＤＥと接続し、ＩＯＣ１０８ａと複数のＤＥとの間でデータを中継することもできる。
【００４７】
ＣＭ１００ｂは、ＣＰＵ１０１ｂ、ＲＡＭ１０２ｂ、ＳＳＤ１０３ｂ、ネットワークインタフェース１０４ｂ、読み取り装置１０５ｂ、ＣＡ１０６ｂ，１０７ｂ、ＩＯＣ１０８ｂおよびＣＭエクスパンダ１０９ｂを備える。ＣＭ１００ｂは、ＣＭ１００ａと同様のハードウェアによって構成され、ＣＭ１００ｂのＣＰＵ１０１ｂ、ＲＡＭ１０２ｂ、ＳＳＤ１０３ｂ、ネットワークインタフェース１０４ｂ、読み取り装置１０５ｂ、ＣＡ１０６ｂ，１０７ｂ、ＩＯＣ１０８ｂおよびＣＭエクスパンダ１０９ｂは、ＣＭ１００ａのＣＰＵ１０１ａ、ＲＡＭ１０２ａ、ＳＳＤ１０３ａ、ネットワークインタフェース１０４ａ、読み取り装置１０５ａ、ＣＡ１０６ａ，１０７ａ、ＩＯＣ１０８ａおよびＣＭエクスパンダ１０９ａにそれぞれ対応する。また、読み取り装置１０５ｂには、可搬型の記録媒体１０５ｂａが脱着される。
【００４８】
ＤＥ２００ａは、ＩＯＭ（In/Out Module）２０１ａ，２０２ａと複数のＨＤＤ２１１ａ，２１２ａ，２１３ａ，・・・を備える。ＩＯＭ２０１ａ，２０２ａは、ＳＡＳエクスパンダとして機能する。ＩＯＭ２０１ａは少なくとも、ＣＭ１００ａとＨＤＤ２１１ａ，２１２ａ，２１３ａ，・・・との間でデータを中継する。ＩＯＭ２０１ｂは少なくとも、ＣＭ１００ｂとＨＤＤ２１１ａ，２１２ａ，２１３ａ，・・・との間でデータを中継する。ＨＤＤ２１１ａ，２１２ａ，２１３ａ，・・・は、ホスト装置３０１，３０２からのアクセス対象の記憶装置である。
【００４９】
なお、ＩＯＭ２０１ａは、コントローラ２０１ａａとフラッシュメモリ２０１ａｂを備える。フラッシュメモリ２０１ａｂは、ファームウェアが格納されるファームウェア領域を含む。コントローラ２０１ａａは、ファームウェア領域に格納されたファームウェアにしたがって、データ中継などの処理を実行する。
【００５０】
ＩＯＭ２０２ａも、ＩＯＭ２０１ａと同様のハードウェアによって構成される。また、ＣＭエクスパンダ１０９ａ，１０９ｂも、ファームウェアが格納されたファームウェア領域を含むフラッシュメモリと、ファームウェアにしたがって処理を実行するコントローラとを備える。これらのファームウェア領域が設けられる記憶装置は、フラッシュメモリに限らず、他の種類の不揮発性記憶装置であってもよい。
【００５１】
なお、図示しないが、ホスト装置３０１，３０２および管理端末４００は、例えば、プロセッサやＲＡＭなどを備えたコンピュータとして実現される。
図４は、ＣＭとＤＥとの接続例を示す図である。図４の例では、ＣＭ１００ａ，１００ｂに４台のＤＥ２００ａ〜２００ｄが接続されている。
【００５２】
ＣＭ１００ａのＣＭエクスパンダ１０９ａには、ＤＥ２００ａのＩＯＭ２０１ａとＤＥ２００ｂのＩＯＭ２０１ｂが直列に接続されているとともに、ＤＥ２００ｃのＩＯＭ２０１ｃとＤＥ２００ｄのＩＯＭ２０１ｄも直列に接続されている。この場合、ＣＭエクスパンダ１０９ａは、ＩＯＣ１０８ａと、ＩＯＭ２０１ａまたはＩＯＭ２０１ｃとの間でデータを中継する。
【００５３】
一方、ＣＭ１００ｂのＣＭエクスパンダ１０９ｂには、ＤＥ２００ｂのＩＯＭ２０２ｂとＤＥ２００ａのＩＯＭ２０２ａが直列に接続されているとともに、ＤＥ２００ｄのＩＯＭ２０２ｄとＤＥ２００ｃのＩＯＭ２０２ｃも直列に接続されている。この場合、ＣＭエクスパンダ１０９ｂは、ＩＯＣ１０８ｂと、ＩＯＭ２０２ｂまたはＩＯＭ２０２ｄとの間でデータを中継する。
【００５４】
これ以後、例として、ストレージシステムが図４のような構成であるものとして説明する。また、ＣＭ１００ａに接続されているＩＯＭ２０１ａ〜２０１ｄを「０系ＩＯＭ」、ＣＭ１００ｂに接続されているＩＯＭ２０２ａ〜２０２ｄを「１系ＩＯＭ」と記載する場合がある。
【００５５】
図５は、ＣＭの処理機能の構成例を示すブロック図である。ＣＭ１００ａは、ハイパーバイザ１１０ａと、仮想マシン１２０ａ，１３０ａを有する。
ハイパーバイザ１１０ａの処理は、ＣＭ１００ａのＣＰＵ１０１ａがハイパーバイザプログラムを実行することで実現される。ハイパーバイザ１１０ａは、仮想マシン１２０ａ，１３０ａを構築し、それらの動作を管理する。また、ハイパーバイザ１１０ａは、起動制御部１１１ａを有する。起動制御部１１１ａは、仮想マシン１２０ａ，１３０ａのＢＩＯＳ（Basic Input/Output System）に相当する機能であり、仮想マシン１２０ａ，１３０ａにおけるプログラムの起動を制御する。
【００５６】
仮想マシン１２０ａ，１３０ａは、ハイパーバイザ１００ａの管理の下で動作する。また、ＣＭ１００ａは、仮想マシン１２０ａにおいて実現される処理機能として、仮想ＯＳ１２１ａ，アクセス制御部１２２ａおよび更新制御部１２３ａを有する。仮想ＯＳ１２１ａの処理は、仮想マシン１２０ａがＯＳプログラムを実行することで実現される。アクセス制御部１２２ａおよび更新制御部１２３ａの処理は、仮想マシン１２０ａが仮想ＯＳ１２１ａ上でそれぞれ所定のアプリケーションプログラムを実行することで実現される。
【００５７】
アクセス制御部１２２ａは、ホスト装置３０１からブロック単位でアクセス要求を受け付け、その要求内容にしたがってＤＥ２００ａ〜２００ｄ内のＨＤＤにアクセスする。
更新制御部１２３ａは、管理端末４００からの指示に応じて、ストレージシステムにおけるファームウェアの更新処理を制御する。また、更新制御部１２３ａは、管理端末４００からの指示に応じて、ファームウェア更新処理の進捗状況を示す情報を管理端末４００に通知する。
【００５８】
また、ＣＭ１００ａは、仮想マシン１３０ａにおいて実現される処理機能として、仮想ＯＳ１３１ａおよびアクセス制御部１３２ａを有する。仮想ＯＳ１３１ａの処理は、仮想マシン１３０ａがＯＳプログラムを実行することで実現される。アクセス制御部１３２ａの処理は、仮想マシン１３０ａが仮想ＯＳ１３１ａ上で所定のアプリケーションプログラムを実行することで実現される。
【００５９】
アクセス制御部１３２ａは、ホスト装置３０２からファイル単位でアクセス要求を受け付け、その要求内容にしたがってＤＥ２００ａ〜２００ｄ内のＨＤＤにアクセスする。アクセス制御部１３２ａは、例えば、ファイル単位のアクセス要求をブロック単位のアクセス要求に変換することでＨＤＤにアクセスする。なお、アクセス制御部１３２ａは、例えば、ブロック単位のアクセスをアクセス制御部１２２ａに依頼することで、ＨＤＤにアクセスしてもよい。
【００６０】
一方、ＣＭ１００ａは、ＣＭ１００ｂと同様の機能を有する。すなわち、ＣＭ１００ｂは、ハイパーバイザ１１０ｂと、ハイパーバイザ１１０ｂの制御の下で動作する仮想マシン１２０ｂ，１３０ｂを有する。ハイパーバイザ１１０ｂは、仮想マシン１２０ｂ，１３０ｂにおけるプログラムの起動を制御する起動制御部１１１ｂを有する。
【００６１】
ＣＭ１００ｂは、仮想マシン１２０ｂにおいて実現される処理機能として、仮想ＯＳ１２１ｂ，アクセス制御部１２２ｂおよび更新制御部１２３ｂを有する。仮想ＯＳ１２１ｂ，アクセス制御部１２２ｂおよび更新制御部１２３ｂは、それぞれ仮想ＯＳ１２１ａ，アクセス制御部１２２ａおよび更新制御部１２３ａと同様の処理を実行する。
【００６２】
また、ＣＭ１００ｂは、仮想マシン１３０ｂにおいて実現される処理機能として、仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂを有する。仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂは、それぞれ仮想ＯＳ１３１ａおよびアクセス制御部１３２ａと同様の処理を実行する。
【００６３】
ここで、アクセス制御部１２２ａとアクセス制御部１２２ｂは、ホスト装置３０１からのアクセス要求に応じて、それぞれ同じ論理ボリュームにアクセスすることが可能である。また、アクセス制御部１３２ａとアクセス制御部１３２ｂも、ホスト装置３０２からのアクセス要求に応じて、それぞれ同じ論理ボリュームにアクセスすることが可能である。なお、論理ボリュームとは、ＤＥ２００ａ〜２００ｄ内の任意のＨＤＤによる物理記憶領域によって実現される論理記憶領域である。
【００６４】
すなわち、ストレージシステムにおいては、ホスト装置３０１，３０２からＤＥ２００ａ〜２００ｄ内のＨＤＤへのアクセスを制御する制御装置が、ＣＭ１００ａ，１００ｂによって冗長化されている。そして、ＣＭ１００ａ，１００ｂの少なくとも一方が正常に動作していれば、ホスト装置３０１，３０２は、ＤＥ２００ａ〜２００ｄ内のＨＤＤにアクセスすることができる。
【００６５】
例えば、ホスト装置３０１，３０２においてマルチパスが設定されている場合には、ホスト装置３０１，３０２は、ＣＭ１００ａ，１００ｂのうち正常に動作しているＣＭを選択して、そのＣＭを介してＤＥ２００ａ〜２００ｄ内のＨＤＤにアクセスする。あるいは、ＣＭ１００ａ，１００ｂの一方が運用系として動作し、他方が待機系として動作し、ホスト装置３０１，３０２は、運用系として動作するＣＭを介してＤＥ２００ａ〜２００ｄ内のＨＤＤにアクセスしてもよい。また、このような動作を可能とするために、例えば、アクセス制御部１２２ａとアクセス制御部１２２ｂとの間、および、アクセス制御部１３２ａとアクセス制御部１３２ｂとの間で、ＤＥ２００ａ〜２００ｄ内のＨＤＤへのアクセス制御に利用されるキャッシュ領域の内容が同期されていてもよい。
【００６６】
また、更新制御部１２３ａ，１２３ｂについては、一方がマスタとして動作し、他方がマスタからの制御の下で動作するスレーブとして動作する。換言すると、ＣＭ１００ａ，１００ｂにおけるファームウェアの更新処理は、更新制御部１２３ａ，１２３ｂのうちのマスタの制御の下で実行される。
【００６７】
以下の説明では、更新制御部１２３ａがマスタまたはスレーブであることと、ＣＭ１００ａがマスタまたはスレーブであることとを同じ意味で用いる。また、更新制御部１２３ｂがマスタまたはスレーブであることと、ＣＭ１００ｂがマスタまたはスレーブであることとを同じ意味で用いる。すなわち、マスタのＣＭは、ファームウェア更新処理についての制御側装置であり、スレーブのＣＭは、ファームウェア更新処理についての被制御側装置である。
【００６８】
また、図５に示すように、本実施の形態では、ＣＭ１００ａに管理端末４００が接続されている。この場合、ＣＭ１００ａ内の更新制御部１２３ａは、管理端末４００と通信して、管理端末４００からの指示に応じてファームウェア更新処理を開始したり、ファームウェア更新処理の進捗状況を示す情報を管理端末４００からの要求に応じて送信する。なお、ＣＭ１００ｂに管理端末が接続された場合には、ＣＭ１００ｂ内の更新制御部１２３ｂが管理端末と通信して上記の処理を実行する。
【００６９】
なお、以下の説明では、ＣＭ１００ａを「ＣＭ＃０」、ＣＭ１００ｂを「ＣＭ＃１」、仮想ＯＳ１２１ａ，１２１ｂを「仮想ＯＳ＃０」、仮想ＯＳ１３１ａ，１３１ｂを「仮想ＯＳ＃１」と記載する場合がある。
【００７０】
図６は、ＣＭのファームウェアの更新方法の例を示す図である。ＣＭ１００ａのＳＳＤ１０３ａには、ファームウェアを格納するためのファームウェア領域１４０があらかじめ確保されている。ファームウェア領域１４０は、それぞれ異なる版数のファームウェアが格納される２つのファームウェア領域１４１，１４２に区分されている。
【００７１】
図６の例では、ファームウェア領域１４１に版数の古いファームウェア１５１ａ，１５２ａが格納され、ファームウェア領域１４２に版数の新しいファームウェア１５１ｂ，１５２ｂが格納されている。ファームウェア１５１ａ，１５１ｂは、仮想ＯＳ１２１ａ（仮想ＯＳ＃０）に対応する仮想ＯＳプログラム、および仮想ＯＳ１２１ａ上で動作するアクセス制御部１２２ａおよび更新制御部１２３ａにそれぞれ対応するアプリケーションプログラムを含む。ファームウェア１５２ａ，１５２ｂは、仮想ＯＳ１３１ａ（仮想ＯＳ＃１）に対応する仮想ＯＳプログラム、および仮想ＯＳ１３１ａ上で動作するアクセス制御部１３２ａに対応するアプリケーションプログラムを含む。なお、仮想ＯＳプログラムとアプリケーションプログラムは、それぞれ個別のプログラムモジュールとしてファームウェア領域１４１，１４２に格納されていてもよい。
【００７２】
ＣＭ１００ａの不揮発性記憶領域（例えば、ＳＳＤ１０３ａ内の所定領域）には、起動フラグ１１２ａが記憶される。起動フラグ１１２ａは、ＣＭ１００ａが起動したときにＣＰＵ１０１ａがファームウェア領域１４１，１４２のどちらのファームウェアを実行するかを示すフラグ情報である。
【００７３】
例えば、ファームウェア領域１４１のファームウェア１５１ａ，１５２ａが実行されている状態で、更新制御部１２３ａによって起動フラグ１１２ａがファームウェア領域１４２を示すように書き換えられる。そして、ＣＭ１００ｂからの指示によってＣＭ１００ａが再起動される（すなわち、電源がオフにされた後、オンにされる）。すると、ハイパーバイザ１１０ａが起動し、これに伴って起動制御部１１１ａが起動する。起動制御部１１１ａは、起動フラグ１１２ａに基づいて、ファームウェア領域１４２からファームウェア１５１ｂ，１５２ｂを読み出す。これにより、ファームウェア１５１ｂ、１５２ｂがＣＰＵ１０１ａによって実行される。このように、ファームウェアの読み出し元領域が切り替えられることで、ファームウェアが更新される。
【００７４】
なお、ＣＭ１００ｂでも、上記と同様にファームウェアの読み出し元領域の切り替えによってファームウェアが更新される。また、ＣＭエクスパンダ１０９ａ，１０９ｂやＩＯＭ２０１ａ〜２０１ｄ、２０２ａ〜２０２ｄも、内部のフラッシュメモリに２つのファームウェア領域を備え、再起動後のファームウェアの読み出し領域の切り替えによってファームウェアを更新する。
【００７５】
次に、ストレージシステムにおけるファームウェアの更新手順について説明する。まず、図７を用いてファームウェア更新処理の比較例とその問題点について説明し、その後の図８〜図１０を用いて第２の実施の形態におけるファームウェア更新処理について説明する。
【００７６】
図７は、ファームウェア更新処理の比較例を示すフローチャートである。図７の処理の開始時には、ＣＭ１００ａがマスタであり、ＣＭ１００ｂがスレーブであるものとする。
図７に示す比較例では、まず、ＣＭ１００ｂ（ＣＭ＃１）およびこれに接続された１系ＩＯＭにおけるファームウェア更新が行われる（ステップＳ１１〜Ｓ１４）。そして、その後にＣＭ１００ａ（ＣＭ＃０）およびこれに接続された０系ＩＯＭにおけるファームウェア更新が行われる（ステップＳ１６〜Ｓ１８，Ｓ２０）。
【００７７】
具体的には、ＣＭ１００ａの更新制御部１２３ａの制御により、ＣＭ１００ｂに接続された１系ＩＯＭ（ＩＯＭ２０２ａ〜２０２ｄ）のファームウェアが更新される（ステップＳ１１）。次に、更新制御部１２３ａの制御により、アクセス制御部１３２ｂの動作が停止され、仮想ＯＳ１３１ｂ（ＣＭ＃１の仮想ＯＳ＃１）の動作が停止される（ステップＳ１２）。
【００７８】
次に、更新制御部１２３ａの制御により、仮想ＯＳ１２１ｂ（ＣＭ＃１の仮想ＯＳ＃０）の更新が行われる（ステップＳ１３）。具体的には、ＣＭ１００ｂの起動フラグが書き替えられ、アクセス制御部１２２ｂおよび更新制御部１２３ｂの動作が停止され、仮想ＯＳ１２１ｂの動作が停止される。そして、ＣＭ１００ｂが再起動されることで、新しい版数のファームウェアにしたがって仮想ＯＳ１２１ｂ、アクセス制御部１２２ｂおよび更新制御部１２３ｂが起動する。なお、ステップＳ１３では、ＣＭ１００ｂの再起動によりＣＭエクスパンダ１０９ｂのファームウェアも更新される。
【００７９】
次に、更新制御部１２３ａの制御により、新しい版数のファームウェアにしたがって仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂが起動する。これにより、仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂが組み込まれる（ステップＳ１４）。
【００８０】
以上の処理が完了すると、更新制御部１２３ａは、ＣＭ１００ｂをマスタに切り替え、ＣＭ１００ａをスレーブに切り替える（ステップＳ１５）。そして、ＣＭ１００ｂの更新制御部１２３ｂの制御により、アクセス制御部１３２ａの動作が停止され、仮想ＯＳ１３１ａ（ＣＭ＃０の仮想ＯＳ＃１）の動作が停止される（ステップＳ１６）。
【００８１】
さらに、更新制御部１２３ｂの制御により、仮想ＯＳ１２１ａ（ＣＭ＃０の仮想ＯＳ＃０）の更新が行われる（ステップＳ１７）。具体的には、ＣＭ１００ａの起動フラグ１１２ａが書き替えられ、アクセス制御部１２２ａおよび更新制御部１２３ａの動作が停止され、仮想ＯＳ１２１ａの動作が停止される。そして、ＣＭ１００ａが再起動されることで、新しい版数のファームウェアにしたがって仮想ＯＳ１２１ａ、アクセス制御部１２２ａおよび更新制御部１２３ａが起動する。なお、ステップＳ１７では、ＣＭ１００ａの再起動によりＣＭエクスパンダ１０９ａのファームウェアも更新される。
【００８２】
次に、更新制御部１２３ｂの制御により、新しい版数のファームウェアにしたがって仮想ＯＳ１３１ａおよびアクセス制御部１３２ａが起動する。これにより、仮想ＯＳ１３１ａおよびアクセス制御部１３２ａが組み込まれる（ステップＳ１８）。
【００８３】
以上の処理が完了すると、更新制御部１２３ｂは、ＣＭ１００ａをマスタに切り替え、ＣＭ１００ｂをスレーブに切り替える（ステップＳ１９）。そして、ＣＭ１００ａの更新制御部１２３ａの制御により、ＣＭ１００ａに接続された０系ＩＯＭ（ＩＯＭ２０１ａ〜２０１ｄ）のファームウェアが更新される（ステップＳ２０）。
【００８４】
以上の処理によれば、ステップＳ１１〜Ｓ１４において、ＣＭ１００ａでのアクセス制御処理を継続したまま、ＣＭ１００ｂおよび１系ＩＯＭにおけるファームウェア更新を実行できる。また、ステップＳ１６〜Ｓ２０において、ＣＭ１００ｂでのアクセス制御処理を継続したまま、ＣＭ１００ａおよび０系ＩＯＭにおけるファームウェア更新を実行できる。これにより、ホスト装置３０１，３０２からの要求に応じたアクセス制御処理を停止せずにファームウェアを更新する、いわゆる「活性ファームウェア更新」を行うことが可能となる。
【００８５】
ところで、上記の処理では、ＣＭ１００ａがマスタであるステップＳ１１〜Ｓ１４，Ｓ２０では、更新制御部１２３ａは、管理端末４００からの要求に応じてファームウェア更新の進捗状況を示す進捗情報を送信できる。しかし、ＣＭ１００ａがスレーブであるステップＳ１６〜Ｓ１８では、ファームウェア更新の進捗を更新制御部１２３ａが制御できない状態となる。このため、この期間では、更新制御部１２３ａは、管理端末４００から要求されても進捗情報を送信できない。
【００８６】
したがって、ステップＳ１６〜Ｓ１８では、管理端末４００は表示装置４０１に表示させる進捗状況の表示情報を更新できず、管理者はファームウェア更新が進んでいるのか停止しているのかを判断できない。ステップＳ１６〜Ｓ１８では、２つの仮想ＯＳプログラムが再起動されるので、単独のＯＳプログラムが再起動される場合と比較して処理が完了するまでの時間が長くなる。そのため、それらの再起動処理に異常が発生した場合に、管理者がその異常発生に気が付くまでに時間がかかり、異常に対する処置を施すのが遅くなる。また、異常が発生しなかったとしても、表示装置４０１における進捗状況の表示情報が長時間変化しなくなるので、有用性が低下する。
【００８７】
また、ステップＳ１５でマスタの切り替えが行われる前には、例えば、更新制御部１２３ａから管理端末４００に対して、進捗情報の送信要求を停止させる停止時間が通知される。管理端末４００は、通知された停止時間が経過するまで進捗情報の送信要求の送信を停止することで、無駄な通信を行わないようにできる。この停止時間は、２つの仮想ＯＳプログラムおよびアプリケーションプログラムのすべての再起動が完了するまでの最大時間に設定される。このため、実際にはその停止時間が経過する前にすべての再起動が完了していたとしても、管理端末４００からの進捗情報の送信要求の送信は再開されない。したがって、表示装置４０１において進捗状況の表示情報の更新が再開されるまでの時間が必要以上に長くなる可能性もある。
【００８８】
そこで、第２の実施の形態に係るストレージシステムでは、マスタをＣＭ１００ａからＣＭ１００ｂに変更するタイミングを変更して、ＣＭ１００ａがスレーブである期間では仮想ＯＳ１２１ａの更新だけが実行されるようにする。これにより、表示装置４０１において進捗状況の表示情報の更新が再開されるまでの時間を短縮する。
【００８９】
なお、ＣＭ１００ａがスレーブの状態でも、更新制御部１２３ａが起動しているステップＳ１６，Ｓ１８では、管理端末４００からの要求に応じて更新制御部１２３ａが進捗情報を送信できる仕様にすることはできる。この場合、進捗情報を送信できない期間はステップＳ１７の期間に限定される。しかし、管理端末４００は、ステップＳ１７の実行開始および完了のタイミングを認識していないので、ステップＳ１６〜Ｓ１８の全期間において、管理端末４００が進捗情報を要求したときに進捗情報が必ず送信されるとは限らない。
【００９０】
もし管理端末４００が進捗情報を要求したときに進捗情報が送信されない場合、管理端末４００はファームウェア更新に異常が発生したと誤判定してしまう。このような誤判定を防止するためには、上記のような停止時間の通知によって、ステップＳ１６〜Ｓ１８の全期間において管理端末４００が進捗情報を要求しないようにすることが望ましい。したがって、ＣＭ１００ａがスレーブでも更新制御部１２３ａが起動していれば進捗情報を送信できる場合でも、表示装置４０１において進捗状況の表示情報の更新が再開されるまでの時間が長くなるという上記と同様の問題が発生する。
【００９１】
図８は、第２の実施の形態におけるファームウェア更新処理の例を示すフローチャートである。この図８では、図７と同様の処理が実行される処理ステップには同じ符号を付して示す。
【００９２】
図８の処理では、図７におけるステップＳ１５〜Ｓ１９が、ステップＳ１５ａ〜Ｓ１９ａに置き換えられている。ステップＳ１５ａ，１６ａ，１７ａ，１８ａ，１９ａの処理内容は、それぞれ図７のステップＳ１６，Ｓ１５，Ｓ１７，Ｓ１９，Ｓ１８と同様である。すなわち、図８の処理では、ステップＳ１６ａでマスタがＣＭ１００ｂに切り替えられる前に、ステップＳ１５ａにおいて、進捗表示に関係のない仮想ＯＳ１３１ａ（ＣＭ＃０の仮想ＯＳ＃１）が停止される。また、ステップＳ１９ａで仮想ＯＳ１３１ａの組み込みが行われる前に、ステップＳ１８ａにおいてマスタがＣＭ１００ａに切り替えられる。
【００９３】
これにより、表示装置４０１において進捗状況の表示情報を更新できない期間が短縮される。また、ステップＳ１６ａでマスタが切り替えられる前に、更新制御部１２３ａから管理端末４００に対して停止時間を通知する場合には、その通知時間は１つの仮想ＯＳプログラムとその上で実行されるアプリケーションプログラムの再起動が完了するまでの最大時間に設定されればよい。これにより、管理端末４００からの進捗情報の要求が抑止される期間が短縮され、その結果、進捗状況の表示情報を更新できない期間が短縮される。なお、この効果は、ＣＭ１００ａがスレーブでも更新制御部１２３ａが起動していれば進捗情報を送信できる仕様になっている場合でも得られる。
【００９４】
次に、第２の実施の形態におけるファームウェア更新処理の詳細について、シーケンス図を用いて説明する。図９，図１０は、第２の実施の形態におけるファームウェア更新処理の例を示すシーケンス図である。なお、図９の初期状態では、ＣＭ１００ａがマスタであり、ＣＭ１００ｂがスレーブであるものとする。
【００９５】
［ステップＳ３１］ＣＭ１００ａのＳＳＤ１０３ａ、ＣＭエクスパンダ１０９ａおよびＩＯＭ２０１ａ〜２０１ｄの各ファームウェア領域に、新たな版数のファームウェアが格納される。
【００９６】
［ステップＳ３２］ＣＭ１００ｂのＳＳＤ１０３ｂ、ＣＭエクスパンダ１０９ｂおよびＩＯＭ２０２ａ〜２０２ｄの各ファームウェア領域に、新たな版数のファームウェアが格納される。
【００９７】
［ステップＳ３３］管理端末４００は、管理者の操作に応じて、ファームウェア更新処理の開始指示をＣＭ１００ａの更新制御部１２３ａに対して送信する。
［ステップＳ３４］管理端末４００は、更新制御部１２３ａに対する進捗情報の送信要求の送信を開始する。更新制御部１２３ａは、例えば、送信要求を一定時間ごとに送信する。更新制御部１２３ａは、送信要求に応じて、現在の進捗状況を示す進捗情報を管理端末４００に送信する。管理端末４００は、受信した進捗情報に基づいて表示装置４０１上の表示情報を更新する。
【００９８】
［ステップＳ３５］更新制御部１２３ａは、ＣＭ１００ｂの更新制御部１２３ｂに対してＩＯＭのファームウェア更新を指示する。更新制御部１２３ｂは、ＩＯＭ２０２ａ〜２０２ｄのそれぞれのファームウェア領域に関する起動フラグを書き替え、ＩＯＭ２０２ａ〜２０２ｄを再起動させる。これにより、ＩＯＭ２０２ａ〜２０２ｄのファームウェアが更新される。
【００９９】
［ステップＳ３６］更新制御部１２３ａは、更新制御部１２３ｂに対して仮想ＯＳ１３１ｂ（ＣＭ＃１のＯＳ＃１）の停止を指示する。更新制御部１２３ｂは、アクセス制御部１３２ｂの動作が停止し、仮想ＯＳ１３１ｂの動作を停止する。
【０１００】
［ステップＳ３７］更新制御部１２３ａは、更新制御部１２３ｂに対して仮想ＯＳ１２１ｂ（ＣＭ＃１の仮想ＯＳ＃０）およびＣＭエクスパンダ１０９ｂの更新を指示する。
具体的には、更新制御部１２３ａは、まず、ＣＭ１００ｂの起動フラグの書き替えと、ＣＭエクスパンダ１０９ｂのファームウェア領域に関する起動フラグの書き換えを指示する。更新制御部１２３ｂは、指示された処理を実行する。次に、更新制御部１２３ａは、ＣＭ１００ｂを再起動させる。
【０１０１】
ＣＭ１００ｂが再起動すると、仮想ＯＳ１２１ｂ、アクセス制御部１２２ｂおよび更新制御部１２３ｂに対応する新しい版数のファームウェアがＣＰＵ１０１ｂによって実行される。これらのファームウェアにしたがって仮想ＯＳ１２１ｂ、アクセス制御部１２２ｂおよび更新制御部１２３ｂが起動する。また、ＣＭエクスパンダ１０９ｂは新しい版数のファームウェアの実行を開始する。これにより、仮想ＯＳ１２１ｂ、アクセス制御部１２２ｂ、更新制御部１２３ｂおよびＣＭエクスパンダ１０９ｂが更新される。
【０１０２】
［ステップＳ３８］更新制御部１２３ａは、更新制御部１２３ｂに対して仮想ＯＳ１３１ｂ（ＣＭ＃１の仮想ＯＳ＃１）の組み込みを指示する。更新制御部１２３ｂは、これらに対応するファームウェアの実行を起動制御部１１１ｂに依頼する。これにより、仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂに対応する新しい版数のファームウェアがＣＰＵ１０１ｂによって実行される。これらのファームウェアにしたがって仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂが起動する。これにより、仮想ＯＳ１３１ｂおよびアクセス制御部１３２ｂが更新される。
【０１０３】
［ステップＳ３９］更新制御部１２３ａは、アクセス制御部１３２ａおよび仮想ＯＳ１３１ａ（ＣＭ＃０の仮想ＯＳ＃１）を停止させる。
［ステップＳ４０］更新制御部１２３ａは、管理端末４００に対して停止時間を通知する。停止時間は、仮想ＯＳ１２１ａ、アクセス制御部１２２ａおよび更新制御部１２３ａに対応する新しい版数のファームウェアの起動が完了するまでの時間とされる。停止時間としては、例えば、あらかじめ記憶された値が送信される。
【０１０４】
［ステップＳ４１］管理端末４００は、停止時間の通知を受けると、進捗情報の送信要求の送信を停止するとともに、時間のカウントを開始する。管理端末４００は、通知された停止時間の分だけ時間が経過するまで、送信要求の送信を停止する。
【０１０５】
［ステップＳ５１］更新制御部１２３ａは、更新制御部１２３ｂに対してマスタへの切り替えを指示する。これにより、ＣＭ１００ｂはマスタに遷移し、ＣＭ１００ａはスレーブに遷移する。
【０１０６】
［ステップＳ５２］更新制御部１２３ｂは、更新制御部１２３ａに対して仮想ＯＳ１２１ａ（ＣＭ＃０の仮想ＯＳ＃０）およびＣＭエクスパンダ１０９ａの更新を指示する。
具体的には、更新制御部１２３ｂは、まず、ＣＭ１００ａの起動フラグ１１２ａの書き替えと、ＣＭエクスパンダ１０９ａのファームウェア領域に関する起動フラグの書き換えを指示する。更新制御部１２３ａは、指示された処理を実行する。次に、更新制御部１２３ｂは、ＣＭ１００ａを再起動させる。
【０１０７】
ＣＭ１００ａが再起動すると、仮想ＯＳ１２１ａ、アクセス制御部１２２ａおよび更新制御部１２３ａに対応する新しい版数のファームウェアがＣＰＵ１０１ａによって実行される。これらのファームウェアにしたがって仮想ＯＳ１２１ａ、アクセス制御部１２２ａおよび更新制御部１２３ａが起動する。また、ＣＭエクスパンダ１０９ａは新しい版数のファームウェアの実行を開始する。これにより、仮想ＯＳ１２１ａ、アクセス制御部１２２ａ、更新制御部１２３ａおよびＣＭエクスパンダ１０９ａが更新される。
【０１０８】
［ステップＳ５３］ステップＳ５２の処理が完了すると、更新制御部１２３ｂは、更新制御部１２３ａに対してマスタへの切り替えを指示する。これにより、ＣＭ１００ａはマスタに遷移し、ＣＭ１００ｂはスレーブに遷移する。
【０１０９】
［ステップＳ５４］管理端末４００は、停止時間の分だけ時間が経過したことを検知すると、更新制御部１２３ａに対する進捗情報の送信要求の送信を再開する。ＣＭ１００ａはマスタに遷移しているので、更新制御部１２３ａは、送信要求に応じて進捗情報を管理端末４００に送信する。管理端末４００は、受信した進捗情報に基づいて表示装置４０１上の表示情報を更新する。
【０１１０】
以後、管理端末４００は、ファームウェア更新全体の完了を示す進捗情報を受信するまで、送信要求を一定時間ごとに送信する。
［ステップＳ５５］更新制御部１２３ａは、仮想ＯＳ１３１ａ（ＣＭ＃０の仮想ＯＳ＃１）を組み込む。具体的には、更新制御部１２３ａは、仮想ＯＳ１３１ａおよびアクセス制御部１３２ａに対応するファームウェアの実行を起動制御部１１１ａに依頼する。これにより、仮想ＯＳ１３１ａおよびアクセス制御部１３２ａに対応する新しい版数のファームウェアがＣＰＵ１０１ａによって実行される。これらのファームウェアにしたがって仮想ＯＳ１３１ａおよびアクセス制御部１３２ａが起動する。これにより、仮想ＯＳ１３１ａおよびアクセス制御部１３２ａが更新される。
【０１１１】
［ステップＳ５６］更新制御部１２３ａは、ＩＯＭ２０１ａ〜２０１ｄのそれぞれのファームウェア領域に関する起動フラグを書き替え、ＩＯＭ２０１ａ〜２０１ｄを再起動させる。これにより、ＩＯＭ２０１ａ〜２０１ｄのファームウェアが更新される。
【０１１２】
［ステップＳ５７］ステップＳ５６の処理が完了した後に、管理端末４００から進捗情報の送信要求が送信されると、更新制御部１２３ａは、ファームウェア更新全体の完了を示す進捗情報を送信する。管理端末４００は、表示装置４０１にファームウェア更新が完了したことを示す表示情報を表示させる。これにより、ファームウェア更新処理が終了される。
【０１１３】
以上の処理により、ＣＭ１００ａの更新制御部１２３ａが進捗情報を送信できず、表示装置４０１において進捗状況の表示情報が更新されない期間が短縮される。したがって、管理者にとっての有用性が向上する。また、この期間に進捗の異常が発生した場合に、管理者はより早いタイミングで異常の発生を認識し、必要な作業を実行できる。したがって、異常を短時間で復旧できるとともに、作業効率が向上する。
【０１１４】
なお、上記の各実施の形態に示した装置（情報処理装置１、ＣＭ１００ａ，１００ｂおよび管理端末４００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１１７】
１  情報処理装置
１ａ  実行部
１ｂ  更新制御部
２  他の情報処理装置
３  管理装置
Ｓ１，Ｓ２，Ｓ２ａ，Ｓ３，Ｓ４，Ｓ４ａ  ステップ
【図１】
0006555096.tif 000002
【図２】
0006555096.tif 000003
【図３】
0006555096.tif 000004
【図４】
0006555096.tif 000005
【図５】
0006555096.tif 000006
【図６】
0006555096.tif 000007
【図７】
0006555096.tif 000008
【図８】
0006555096.tif 000009
【図９】
0006555096.tif 000010
【図１０】
0006555096.tif 000011