以下、実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、ネットワーク3を介して、複数の装置2a,2bと接続している。装置2aの名称は、装置Xであり、装置2bの名称は、装置Yであるとする。
情報処理装置1は、装置X,Yそれぞれに格納されているファームウェアの更新を制御する。新しい版数のファームウェア(以下、「新しいファームウェア」と略称する)の提供元は、情報処理装置1でもよいし、他の装置でもよい。装置Xと装置Yは、情報処理装置1の制御の下で、新しいファームウェアの受信や、受信した新しいファームウェアを記憶領域に記録するといった一連のファームウェアの更新処理を行う。
装置X,Yのそれぞれにおけるファームウェア更新処理は、複数の部分処理に分割される。図1の例では、装置Xでのファームウェア更新処理は、部分処理x1,x2に分割され、装置Yでのファームウェア更新処理は、部分処理y1,y2に分割される。そして、情報処理装置1は、部分処理x1,x2,y1,y2を単位として実行を制御する。
情報処理装置1は、記憶部1aおよび制御部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。制御部1bは、例えば、プロセッサである。プロセッサには、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。また、制御部1bは、マルチプロセッサであってもよい。
記憶部1aは、管理情報4を記憶する。管理情報4には、部分処理x1,x2,y1,y2の実行順が登録される。また、管理情報4には、部分処理x1,x2,y1,y2のうちの一部の部分処理について、2以上の装置(ここでは装置X,Y)における部分処理が完了した後に実行することを示す実行開始条件が登録される。制御部1bは、管理情報4に基づいて、部分処理x1,x2,y1,y2の実行を制御する。
ここで、実行開始条件が登録される部分処理とは、例えば、他の装置の他の部分処理との間で互いに並行して実行できないという制約がある部分処理である。図1の例では、装置Xの部分処理x2と、装置Yの部分処理y2との間で、互いに並行して実行できないという制約がある。そこで、部分処理x2,y2の少なくとも一方についての実行開始条件が管理情報4に登録される。
具体的には、図1の例では、部分処理y2の実行開始条件として、装置Xの部分処理x2と装置Yの部分処理y1の両方が完了した後に実行することが登録される。制御部1bは、このような実行開始条件に基づいて、例えば、部分処理y1が完了したとき、部分処理x2が完了しているかを判定する。部分処理x2が完了していない場合、制御部1bは、部分処理x2が完了するまで部分処理y2の実行開始を待ち合わせる。そして、制御部1bは、部分処理x2が完了すると、部分処理y2の実行を開始させる。
一方、実行開始条件が登録されていない部分処理同士は、異なる装置間で並行して実行されるように処理順を設定可能である。上記のような実行開始条件が登録されている場合、少なくとも部分処理x2,y1は並行して実行可能である。すなわち、上記のような実行開始条件を設定することで、部分処理x2,y2を並行して実行できないという制約を守りながら、部分処理x2,y1が並列に実行され得る実行順を設定することが可能になる。これにより、装置X,Yのファームウェア更新処理の並列度を高めることができる。
図1の例では、ケース(2)として示すように、装置Xの部分処理x1の実行と装置Yの部分処理y1の実行とが同時に開始され、これらが並行して実行される。また、装置Xの部分処理x2と部分処理y1も並行して実行可能になっている。一方、図1では、ケース(1)として、装置Xのファームウェア更新処理の完了後に装置Yのファームウェア更新処理を実行した場合の比較例を示している。ケース(2)では、ケース(1)と比較して処理が並行して実行される期間が長くなる。よって、ケース(2)によれば、部分処理x2,y2を並行して実行できないという制約を守りながら、ケース(1)と比較してファームウェア更新処理にかかる時間を時間Tだけ短縮できる。
なお、図1に示す管理情報4では、一例として、部分処理のそれぞれに対して、次の部分処理と、次の部分処理についての実行開始条件とが対応付けられている。部分処理と次の部分処理とが登録されることで、部分処理の処理順が設定される。また、部分処理x2の次に実行すべき部分処理y2の実行を開始する条件として、部分処理y1が完了したことが登録される。これは、部分処理y2の実行を開始する条件として、異なる装置の部分処理、すなわち装置Xの部分処理x2と装置Yの部分処理y1の完了が設定されていることを表す。同様に、部分処理y1の次に実行すべき部分処理y2の実行を開始する条件として、部分処理x2が完了したことが登録される。これも同様に、部分処理y2の実行を開始する条件として、異なる装置の部分処理、すなわち装置Xの部分処理x2と装置Yの部分処理y1の完了が設定されていることを表す。
以上説明した第1の実施の形態によれば、装置間での部分処理の実行に関する制約を守りつつ、ファームウェア更新処理の並列度を高めることができる。その結果、複数の装置でのファームウェア更新処理全体の時間を短縮することができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、管理装置100、サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600を有する。また、サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600が、1つのシステムを構築していると考えてもよい。
管理装置100とサーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600とは、互いにネットワーク700を介して接続されている。ネットワーク700は、例えば、LAN(Local Area Network)である。
管理装置100は、新しいファームウェアをサーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600に提供するコンピュータである。また、管理装置100は、サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600で行われるファームウェアの更新処理を制御する。
サーバ200は、スイッチ300,400を介してストレージ装置500およびテープ装置600と通信するサーバコンピュータである。サーバ200は、例えば、ストレージ装置500が提供する記憶領域に対してアクセスする。
スイッチ300,400は、サーバ200とストレージ装置500およびテープ装置600との間や、ストレージ装置500とテープ装置600との間で送受信されるデータを中継する中継装置である。
ストレージ装置500は、CM(Controller Module)とDE(Device Enclosure)を有する装置である。例えば、DEは、複数のHDDを有する。CMは、サーバ200からのアクセス要求に応じて、DEに対するアクセスを制御する。また、CMは、DEに格納されたデータをテープ装置600に送信し、テープ装置600の磁気テープに記録させる。
テープ装置600は、コントローラとテープドライブを有する。コントローラは、テープドライブに挿入された磁気テープに対するアクセスを制御する。
サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600は、ファームウェアに従って動作する。サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600の動作を制御するファームウェアは、各装置が有する不揮発性記憶装置に格納されている。また、サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600は、プロセッサを有し、プロセッサの処理によってファームウェアの更新処理を実行する。
次に、管理装置のハードウェア例について説明する。
図3は、管理装置のハードウェア例を示す図である。管理装置100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107を有する。各ユニットは管理装置100のバスに接続されている。
プロセッサ101は、管理装置100全体を制御する。プロセッサ101は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。また、プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、管理装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、管理装置100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。管理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、管理装置100に接続されたディスプレイ104aに画像を出力する。ディスプレイ104aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。管理装置100は、ディスプレイ104aを一体に備えてもよい。
入力信号処理部105は、管理装置100に接続された入力デバイス105aから入力信号を取得し、プロセッサ101に出力する。入力デバイス105aとしては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。管理装置100には、複数の種類の入力デバイスが接続されてもよい。管理装置100は、入力デバイス105aを一体に備えてもよい。
読み取り装置106は、可搬型の記録媒体106aに記録されたプログラムやデータを読み取る装置である。記録媒体106aとして、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体106aとして、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、プロセッサ101からの命令に従って、記録媒体106aから読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク700を介して、サーバ200、スイッチ300,400、ストレージ装置500およびテープ装置600と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
次に、第2の実施の形態におけるファームウェア更新制御について、比較例と比較しながら説明する。なお、比較例においても図2で説明した各装置が用いられるものとする。
まず、図4,5を用いて、ファームウェア更新制御の比較例について説明する。この比較例では、装置毎にファームウェアを更新する順番を決めて、ファームウェアが更新される。
図4は、更新制御テーブルの例を示す図である。更新制御テーブル900は、比較例で用いるテーブルであり、管理装置100に格納される。更新制御テーブル900は、装置、アップデート状態、開始条件および完了後の処理の項目を含む。
装置の項目には、装置を示す情報が登録される。アップデート状態の項目には、ファームウェアの更新状態を示す情報が登録される。アップデート状態の項目には、未実施、実施中、完了の何れかが登録される。開始条件の項目には、ファームウェアの更新を開始させてよいか否かを示す情報が登録される。開始条件の項目には、ファームウェアの更新を開始させてよいことを示す“可”、または、ファームウェアの更新を開始させてはいけないことを示す“不可”の何れかが登録される。管理装置100は、開始条件の項目に“可”が登録されている装置に対して、ファームウェア更新を実行させる。完了後の処理の項目には、ある装置でファームウェアの更新が完了した後に、管理装置100が次に実行すべき処理の内容が登録される。完了後の処理の項目に登録される処理内容は、次にどの装置に対応する開始条件を“可”にするかを示すものであり、これは実質的に、次にファームウェアの更新を実行させる装置を示している。
例えば、更新制御テーブル900には、装置が“サーバ”、アップデート状態が“未実施”、開始条件が“可”、完了後の処理が“ストレージ装置の開始条件を可とする”、“テープ装置の開始条件を可とする”という情報が登録される。これは、サーバ200のアップデート状態が“未実施”であり、ファームウェアの更新を開始してよい(開始条件が“可”)ということを示す。また、サーバ200のファームウェアの更新が完了した後に、ストレージ装置500およびテープ装置600の開始条件を可とすることを示す。また、ストレージ装置500およびテープ装置600の開始条件が不可から可に変更されることで、ストレージ装置500およびテープ装置600のファームウェアの更新が可能になる。
更新制御テーブル900には、完了後の処理の項目を利用して、装置毎にファームウェアを更新する順番が設定される。図4の例では、初めに、サーバ200とスイッチ300でファームウェアの更新を行う旨の情報が更新制御テーブル900に登録される。次に、サーバ200のファームウェアの更新が完了すると、ストレージ装置500とテープ装置600でファームウェアの更新を行う旨の情報が更新制御テーブル900に登録される。また、スイッチ300のファームウェアの更新が完了すると、スイッチ400でファームウェアの更新を行う旨の情報が更新制御テーブル900に登録される。
また、更新する順番は、装置間の関係に基づいて設定される。例えば、スイッチ300とスイッチ400を同時にファームウェアの更新を行わないように、更新する順番を設定する。これは、同時にファームウェアの更新を行うと通信ができなくなるからである。そのため、先にスイッチ300でファームウェアの更新を行い、次に、スイッチ400でファームウェアの更新を行うように、更新制御テーブル900に登録される。
図5は、ファームウェアの更新の比較例を示す図である。この図5では、図4のように情報が登録された更新制御テーブル900に基づいて、管理装置100がファームウェア更新の実行を制御した場合を示す。
初めに、サーバ200とスイッチ300でファームウェアの更新が行われる。サーバ200のファームウェアの更新が完了すると、ストレージ装置500とテープ装置600でファームウェアの更新が行われる。また、スイッチ300のファームウェアの更新が完了すると、スイッチ400でファームウェアの更新が行われる。
このように、更新制御テーブル900に基づいて、ファームウェアの更新が実行される。しかし、このように装置単位でファームウェアの更新順を制御する場合には、ファームウェアの更新が全ての装置で完了するまでの時間が長いという問題がある。これは、ある装置と別の装置のファームウェア更新を同時に実行できないという制約がある場合、必ずしも各装置でのファームウェア更新処理の全体を並列に実行できない訳ではないからである。
例えば、スイッチ300,400で同時にファームウェア更新を実行できない理由は、スイッチ300,400の中継動作が同時に停止してはいけないからである。しかし、スイッチ300,400のファームウェア更新処理の中で中継動作が停止してしまうのは再起動の期間だけであり、その他の期間では中継動作は継続している。このため、上記の比較例では、実際にはスイッチ300,400が同時に再起動しないように制御されればよいにもかかわらず、スイッチ300でのファームウェア更新処理の全体が完了しないとスイッチ400でのファームウェア更新を開始できない。よって、ファームウェアの更新のために余計な時間がかかっていると言える。
そこで、第2の実施の形態では、各装置で行われるファームウェアの更新処理を複数のフェーズに分割する。そして、フェーズを実行単位として実行順が決定される。また、装置間でのフェーズ実行に関する制約を考慮して、装置間で並行して実行できるフェーズは並行して実行できるように実行順が決定される。
図6は、フェーズの例を示す図である。本実施の形態では、各装置でのファームウェア更新処理は、準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズの4つのフェーズに分割される。
準備フェーズは、更新処理の準備のためのフェーズである。例えば、対象装置の保守状態への移行、関連する他の装置との切り離し(通信の切断など)、管理装置100からの新しいファームウェアの受信および不揮発性記録媒体への格納などが行われる。適用フェーズは、新しいファームウェアを適用するための更新処理本体が開始されるフェーズである。例えば、管理装置100からファームウェア更新を指示するコマンドが受信される。
再起動フェーズは、再起動して新しいファームウェアに従った処理を開始するフェーズである。例えば、管理装置100からのコマンドに応じて電源切断および再起動が行われ、新しいファームウェアが読み込まれ、そのファームウェアに従った処理が開始される。再起動が完了すると、管理装置100に完了が通知される。後処理フェーズは、更新処理を完了させるフェーズである。例えば、対象装置の保守状態からの復帰、関連する他の装置との通信の再開などが行われる。
図7は、管理テーブルの例(その1)を示す図である。管理テーブル111aは、管理装置100のRAM102またはHDD103に格納される。管理テーブル111aは、仮想装置、フェーズ、アップデート状態、開始条件および完了後の処理の項目を含む。
管理テーブル111aを用いた管理装置100の制御では、各装置の各フェーズは「仮想装置」として識別される。例えば、サーバ200での準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズは、それぞれ仮想装置a1,a2,a3,a4として識別される。同様に、スイッチ300での準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズは、それぞれ仮想装置b11,b12,b13,b14として識別される。スイッチ400での準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズは、それぞれ仮想装置b21,b22,b23,b24として識別される。ストレージ装置500での準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズは、それぞれ仮想装置c1,c2,c3,c4として識別される。テープ装置600での準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズは、それぞれ仮想装置d1,d2,d3,d4として識別される。
管理テーブル111aの仮想装置の項目には、仮想装置を示す情報が登録される。仮想装置の項目は、図4に示した更新制御テーブル900における装置の項目に対応する。管理装置100は、装置の代わりに仮想装置を実行単位として認識することで、図4の更新制御テーブル900を用いた場合と同様のアルゴリズムによって更新制御を行うことができる。
フェーズの項目には、フェーズを示す情報が登録される。前述のようにフェーズには、準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズがある。なお、管理テーブル111aには、フェーズの項目は必ずしも必要ない。各仮想装置に対応するフェーズにおける管理装置100側の処理内容は、別途管理される。
アップデート状態の項目には、フェーズの実施状態を示す情報が登録される。アップデート状態の項目には、未実施、実施中、完了の何れかが登録される。このように、管理テーブル111aにアップデート状態の項目を設けることで、各フェーズの実施状態を管理することができる。
開始条件の項目には、フェーズを開始させてよいか否かを示す情報が登録される。開始条件の項目には、フェーズを開始させてよいことを示す“可”、または、フェーズを開始させていけないことを示す“不可”の何れかが登録される。開始条件の項目が可であるフェーズを探索し、探索されたフェーズを対応する装置に実行させる。
完了後の処理の項目には、フェーズが完了した後に、管理装置100が次に実行すべき処理の内容が登録される。完了後の処理の項目に登録される処理内容は、次にどの装置のどのフェーズに対応する開始条件を“可”にするかを示すものであり、これは実質的に、次に実行させるフェーズを示している。すなわち、完了後の処理の項目に登録された処理内容によって、フェーズの実行順が規定される。
また、完了後の処理の項目には、処理の実行を開始するための実行開始条件が登録される場合もある。例えば、仮想装置a4に対応するフェーズについては、完了後に実行する処理として「仮想装置c3の開始条件を可とする」という処理が登録され、その実行開始条件として「仮想装置c2が完了ならば」という条件が登録されている。これは、仮想装置a4に対応するフェーズが完了したとき、仮想装置c2に対応するフェーズが完了したという条件が満たされた場合に、仮想装置c3の開始条件を可とする処理が実行されることを示す。
なお、完了後の処理の項目に実行開始条件が登録されていない場合でも、実際には「仮想装置に対応するフェーズが完了した場合」という条件が付与されていると言うことができる。例えば、仮想装置a1に対応するフェーズに関しては、このフェーズが完了したという条件が満たされた場合に、仮想装置a2の開始条件を可とする処理が実行される。すなわち、完了後の処理の項目に実行開始条件が登録されている場合、その実行開始条件が満たされたときに実行される次のフェーズには、「異なる複数の装置でのフェーズが完了した場合に実行される」という実行のための条件が付与されていることを意味する。
完了後の処理の項目には、実行順と実行開始条件が、装置間でのフェーズの実行に関する制約に基づいて登録される。例えば、スイッチ300とスイッチ400が同時に再起動フェーズを実行すると、再起動の間、通信が行われなくなる。そこで、完了後の処理の項目には、複数のフェーズの中で、装置間で並行して実行してはいけないフェーズが並行して実行されないように、実行順と実行開始条件が設定される。一方、完了後の実行条件の項目には、並行して実行してよいフェーズはできるだけ並行して実行されるように、実行順と実行開始条件が設定される。これにより、フェーズを実行単位として各装置でのファームウェア更新処理が効率よく実行されるようになる。
なお、管理テーブル111aにおいては、初期状態では、すべてのフェーズに対応するアップデート状態の項目には未実施が登録される。また、最初に実行されるフェーズに対応する開始条件の項目にのみ可が登録され、それ以外のフェーズに対応する開始条件の項目には不可が登録される。
図8は、第2の実施の形態の具体例と比較例とを比較する図である。図8の上部は、図5で示した比較例の図と同じである。図8の下部は、第2の実施の形態の具体例を示している。図8の下部は、図7に示した管理テーブル111aの登録内容に基づいてフェーズが実行された場合の例を示す。
図8の上部の比較例では、スイッチ300でのファームウェア更新が完了した後、スイッチ400でのファームウェア更新が開始される。これに対して、図8の下部の例では、スイッチ300での準備フェーズ(仮想装置b11)とスイッチ400での準備フェーズ(仮想装置b21)とが並列に開始される。さらに、スイッチ300での適用フェーズ(仮想装置b12)および再起動フェーズ(仮想装置b13)が続けて実行され、スイッチ400での適用フェーズ(仮想装置b22)も続けて実行される。しかし、スイッチ400での再起動フェーズ(仮想装置b23)は、スイッチ300の再起動フェーズ(仮想装置b13)とは並列に実行されないようにスケジューリングされている。例えば、スイッチ400の適用フェーズ(仮想装置b22)が完了したとき、管理装置100は、スイッチ300の再起動フェーズ(仮想装置b13)が完了しているという次のフェーズに関する実行開始条件を満たしているかを判定する。実行開始条件が満たされていない場合、管理装置100は、スイッチ300の再起動フェーズ(仮想装置b13)が完了するまで次のフェーズの実行を待ち合わせる。そして、スイッチ300の再起動フェーズ(仮想装置b13)が完了すると、管理装置100は、スイッチ400の再起動フェーズ(仮想装置b23)を開始させる。このような制御により、スイッチ300,400でのファームウェア更新処理の並列度が高まり、更新時間が時間T1だけ短縮される。
また、図8の上部の比較例では、サーバ200でのファームウェア更新が完了した後、ストレージ装置500およびテープ装置600でのファームウェア更新が開始される。この理由は、ストレージ装置500およびテープ装置600でのファームウェア更新の途中において、サーバ200との通信が必要だからであるとする。ただし、サーバ200との通信が必要なタイミングは、ストレージ装置500およびテープ装置600での再起動の直前であるものとする。
この場合、図8の下部のように実行順が制御される。サーバ200でのファームウェア更新と並行して、ストレージ装置500での準備フェーズ(仮想装置c1)および適用フェーズ(仮想装置c2)と、テープ装置600での準備フェーズ(仮想装置d1)および適用フェーズ(仮想装置d2)が実行される。また、ストレージ装置500およびテープ装置600それぞれでの適用フェーズ(仮想装置c2,d2)の次に実行させるフェーズについては、サーバ200での後処理フェーズ(仮想装置a4)が完了するという実行開始条件が設定されている。管理装置100は、ストレージ装置500およびテープ装置600それぞれでの適用フェーズ(仮想装置c2,d2)が完了すると、この実行開始条件が満たされているかを判定する。満たされていない場合、管理装置100は、次のフェーズの実行を待ち合わせる。そして、サーバ200での後処理フェーズ(仮想装置a4)が完了すると、管理装置100は、ストレージ装置500およびテープ装置600それぞれでの再起動フェーズ(仮想装置c3,d3)の実行を開始させる。これにより、ストレージ装置500およびテープ装置600は、再起動の直前でサーバ200と通信できる。
以上の制御により、サーバ200、ストレージ装置500およびテープ装置600でのファームウェア更新処理の時間も短縮される。その結果、全ての装置でのファームウェア更新が完了するまでの時間が短縮される。このように、第2の実施の形態によれば、ファームウェアの更新時間を短縮できる。
次に、転送データ量の制約を考慮する場合について説明する。例えば、図8では、5つの装置に新しいファームウェアを一斉に送信する場合を例示したが、この場合、転送中のデータの総量が転送性能に基づく限度を超え、送信時間が増大したり、送信に失敗する可能性がある。そこで、以下の図9,10に示す例では、同時に転送されるデータ量が一定以下になるようにフェーズの実行順が設定される。
図9は、管理テーブルの例(その2)を示す図である。管理テーブル111bと管理テーブル111aとは、登録されている内容が異なるだけなので、項目の説明を省略する。
図9の例では、初期状態では、スイッチ300の準備フェーズ(仮想装置b11)に対応する開始条件が“可”に設定される一方、スイッチ400の準備フェーズ(仮想装置b21)に対応する開始条件は“不可”に設定される。そして、スイッチ300の準備フェーズ(仮想装置b11)についての完了後の処理として、「仮想装置b21の開始条件を可とする」という処理内容が登録される。これにより、スイッチ300の準備フェーズ(仮想装置b11)が実行された後にスイッチ400の準備フェーズ(仮想装置b21)が実行されるようになる。
図10は、転送データ量の制約を考慮する場合の具体例を示す図である。図10の上部は、比較例を示している。比較例は、装置毎に更新する順番が設定されている場合である。すなわち、図4の更新制御テーブル900を用いて、ファームウェアの更新を行う場合である。
初めに、スイッチ300に新しいファームウェアが転送される。そして、スイッチ300でファームウェアの更新が完了すると、スイッチ400に新しいファームウェアが転送される。ここで、スイッチ300にファームウェアを転送してから、スイッチ400に新しいファームウェアを転送するまでの間、スイッチ400はファームウェアの更新を行わないので、効率が悪い。
図10の下部では、管理テーブル111bを用いて、スイッチ300の準備フェーズ(仮想装置b11)とスイッチ400の準備フェーズ(仮想装置b21)とを同時に実行させないようする場合を示している。すなわち、スイッチ300とスイッチ400とに新しいファームウェアを一斉に送信させない場合を示している。管理装置100は、管理テーブル111bに基づいて、スイッチ300の準備フェーズ(仮想装置b11)が完了すると、スイッチ400の準備フェーズ(仮想装置b21)を開始させる。これにより、各準備フェーズでのファームウェア転送タイミングが分散し、同時に転送されるデータ量を抑制できる。
これとともに、スイッチ300での適用フェーズ(仮想装置b12)の実行も開始される。すなわち、スイッチ300での適用フェーズ以降のファームウェア更新処理が、スイッチ400でのファームウェア更新処理と並列に実行される。このような制御により、スイッチ400は、スイッチ300で行われる全てのフェーズが完了する前に、準備フェーズを実行することができる。よって、図10の上部の場合よりも図10の下部の場合の方が、ファームウェアの更新を効率良く実行し、ファームウェア更新全体にかかる時間を短縮できる。
次に、別の具体例を示す。上記の管理テーブル111a,111bでは、各装置でのファームウェア更新処理を4つのフェーズに分割した。しかし、例えば、装置によっては、ファームウェアを更新しても再起動をしなくてよい場合(再起動フェーズがない場合)や、保守状態に移行せず、他の装置との通信を切り離さなくてもよい場合(準備フェーズ、後処理フェーズがない場合)がある。また、隣接するフェーズの処理内容を分離できない場合もある。すなわち、ファームウェア更新処理が上記のような4つのフェーズに分割できない場合がある。このような場合について、説明する。
図11は、管理テーブルの例(その3)を示す図である。管理テーブル111cと管理テーブル111aとは、登録されている内容が異なるだけなので、項目の説明を省略する。管理テーブル111cでは、スイッチ300での適用フェーズと再起動フェーズとを分離できないため、スイッチ300での適用フェーズ(仮想装置b12)にスイッチ300の再起動が含まれ、スイッチ300での再起動フェーズが存在しない場合を示している。また、スイッチ300,400を同時に再起動できないという制約があるものとする。
図12は、一部のフェーズが存在しない場合の具体例を示す図である。管理装置100は、図11に示した管理テーブル111cに基づいて、スイッチ300,400でファームウェアの更新に伴う各フェーズを実行させる。
図12の例では、スイッチ300での準備フェーズ(仮想装置b11)および適用フェーズ(仮想装置b12)と、スイッチ400での準備フェーズ(仮想装置b21)および適用フェーズ(仮想装置b22)とが、並列に実行される。また、例えば、スイッチ400の適用フェーズ(仮想装置b22)が完了したとき、管理装置100は、スイッチ300の適用フェーズ(仮想装置b12)が完了しているという次のフェーズに関する実行開始条件を満たしているかを判定する。実行開始条件が満たされていない場合、管理装置100は、スイッチ300の適用フェーズ(仮想装置b12)が完了するまで次のフェーズの実行を待ち合わせる。そして、スイッチ300の適用フェーズ(仮想装置b12)が完了すると、管理装置100は、スイッチ400の再起動フェーズ(仮想装置b23)を開始させる。
以上の例のように、各装置でのファームウェア更新処理を同じ数のフェーズに分割できない場合でも、装置間でのフェーズの実行に関する制約を考慮しながら、各装置のフェーズを効率的に実行できる。
次に、管理装置100の機能例について説明する。
図13は、管理装置の機能例を示す図である。管理装置100は、記憶部110、監視部120およびフェーズ制御部130を有する。
記憶部110は、例えば、RAM102またはHDD103に確保した記憶領域として実装される。記憶部110は、管理テーブルを記憶する。上述では管理テーブル111a,111b,111cを例示したが、以下、管理テーブルを総称して、管理テーブル111とする。
監視部120およびフェーズ制御部130は、例えば、プロセッサ101が実行するプログラムのモジュールとして実装される。
監視部120は、管理テーブル111に基づいて、制御対象の各装置で実行されるフェーズの実行状態を監視する。監視部120は、管理テーブル111に基づき、実行が完了したフェーズがある場合には、次に実行するフェーズの実行開始条件を満たすか否かを判定する。条件を満たす場合、監視部120は、次のフェーズの実行を制御するための制御プロセスをフェーズ制御部130に起動させる。
フェーズ制御部130は、監視部120からの指示に応じて、制御対象の装置にフェーズを実行させるための制御プロセスを実行する。制御プロセスとしては、準備フェーズ、適用フェーズ、再起動フェーズ、後処理フェーズの実行をそれぞれ制御するための準備プロセス131、適用プロセス132、再起動プロセス133、後処理プロセス134がある。実際には、準備プロセス131、適用プロセス132、再起動プロセス133、後処理プロセス134の内容は、装置の機種ごとに異なる。また、各制御プロセスには、装置に対する所定の処理の実行指示や、装置からの応答の受信が含まれる。
次に、第2の実施の形態で行われるファームウェアの更新の制御についてフローチャートを用いて説明する。
図14は、ファームウェアの更新処理の例を示すフローチャートである。図14の処理は、定期的に実行される。以下、図14に示す処理をステップ番号に沿って説明する。
(S11)監視部120は、未実施処理を実行する。未実施処理では、監視部120は、管理テーブル111において開始条件が可である仮想装置が存在する場合、実施中の状態にし、その仮想装置に対応するフェーズの実行を開始させる。
(S12)監視部120は、実施中処理を実行する。実施中処理では、監視部120は、管理テーブル111において実施中の仮想装置に対応するフェーズが完了しているかを判定し、完了している場合、完了の状態にする。
(S13)監視部120は、完了処理を実行する。完了処理では、監視部120は、管理テーブル111において完了の状態になっている仮想装置について、完了後の処理の項目に登録されている内容の処理を実行する。
(S14)監視部120は、管理テーブル111のアップデート状態の項目を参照し、全ての仮想装置に対応するフェーズが完了しているか否かを判定する。完了している場合、処理を終了する。完了していない場合、処理をステップS11に進める。
図15は、未実施処理の例を示すフローチャートである。図15に示す処理は、ステップS11の処理に対応する。以下、図15に示す処理をステップ番号に沿って説明する。
(S21)監視部120は、管理テーブル111を参照し、アップデート状態の項目が未実施で、開始条件の項目が可である仮想装置が存在するか否かを判定する。存在する場合、処理をステップS22に進める。存在しない場合、処理を終了する。
(S22)監視部120は、管理テーブル111のアップデート状態の項目に実施中を設定する。
(S23)監視部120は、ステップS22で実施中に設定した仮想装置に対応するフェーズの実行を制御するための制御プロセスを実行するようにフェーズ制御部130に指示する。フェーズ制御部130は、指示された制御プロセスの実行を開始する。これにより、ステップS22で実施中に設定した仮想装置に対応するフェーズが、該当する装置において開始される。
例えば、フェーズ制御部130は、実施中に設定した仮想装置に対応するフェーズが準備フェーズの場合、保守状態への移行や他の装置との通信を切断するように、当該フェーズを実行させる実行対象装置に指示する。なお、フェーズ制御部130は、他の装置との通信を切断する場合、実行対象装置に、切断する順番を適切に行うように指示する。また、フェーズ制御部130は、通信の切断が完了したことの通知を受けると、新しいファームウェアを実行対象装置に送信する。フェーズ制御部130は、新しいファームウェアの受信を完了したことの通知を受けると、制御プロセスを終了する。
また、実施中に設定した仮想装置に対応するフェーズが適用フェーズの場合、フェーズ制御部130は、新しいファームウェアを適用するように、アップデートコマンドを実行対象装置に送信する。フェーズ制御部130は、適用処理が完了したことの通知を受けると、制御プロセスを終了する。
また、実施中に設定した仮想装置に対応するフェーズが再起動フェーズの場合、フェーズ制御部130は、再起動コマンドを、実行対象装置に送信する。フェーズ制御部130は、新しいファームウェアを用いて正常に再起動したことの通知を受けると、制御プロセスを終了する。
また、実施中に設定した仮想装置に対応するフェーズが後処理フェーズの場合、フェーズ制御部130は、保守状態の解除や他の装置との通信を再開するように、実行対象装置に指示する。フェーズ制御部130は、指示に対応する処理が完了したことの通知を受けると、制御プロセスを終了する。
図16は、実施中処理の例を示すフローチャートである。図16に示す処理は、ステップS12の処理に対応する。以下、図16に示す処理をステップ番号に沿って説明する。
(S31)監視部120は、管理テーブル111を参照し、アップデート状態の項目が実施中の仮想装置が存在するか否かを判定する。存在する場合、処理をステップS32に進める。存在しない場合、処理を終了する。
(S32)監視部120は、アップデート状態の項目が実施中の仮想装置に対応するフェーズの中に、実行が完了しているフェーズが1つでもあるか否かを判定する。具体的には、監視部120は、アップデート状態の項目が実施中の仮想装置に対応するフェーズのそれぞれについて、各フェーズの実行を制御するための制御プロセスが終了しているかをフェーズ制御部130に問い合わせる。その結果、制御プロセスが終了している場合に、対応するフェーズの実行が完了していると判定される。該当するフェーズの中に実行が完了しているフェーズが1つ以上ある場合、処理をステップS33に進める。実行が完了しているフェーズがない場合、処理を終了する。
(S33)監視部120は、管理テーブル111において、実行が完了しているフェーズを示す仮想装置に対応するアップデート状態の項目を、実施中から完了に変更する。そして、処理を終了する。
図17は、完了処理の例を示すフローチャートである。図17に示す処理は、ステップS13の処理に対応する。以下、図17に示す処理をステップ番号に沿って説明する。
(S41)監視部120は、管理テーブル111を参照し、アップデート状態が完了である仮想装置が存在するか否かを判定する。存在する場合、処理をステップS42に進める。存在しない場合、処理を終了する。
(S42)監視部120は、アップデート状態が完了である仮想装置の中から1つを選択する。
(S43)監視部120は、選択した仮想装置に対応する完了後の処理の項目を参照し、実行開始条件を満たしているか否かを判定する。満たしている場合、処理をステップS44に進める。満たしていない場合、処理をステップS45に進める。なお、完了後の処理の項目に実行開始条件が登録されていない場合、無条件に処理がステップS44に進められる。
(S44)監視部120は、選択した仮想装置に対応する完了後の処理の項目に登録されている内容に従い、次に実行すべきフェーズを示す仮想装置に対応する管理テーブル111の開始条件の項目に可を設定する。
(S45)監視部120は、アップデート状態が完了である仮想装置をすべて選択済みか否かを判定する。すべて選択済みの場合、処理を終了する。未選択の仮想装置が存在する場合、処理をステップS42に進める。
以上の図14〜17に示した処理により、フェーズを実行単位として各装置でのファームウェア更新処理の実行を制御することができる。
なお、第1の実施の形態の情報処理は、情報処理装置1に用いられるプロセッサに、プログラムを実行させることで実現できる。第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、監視部120およびフェーズ制御部130に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。監視部120およびフェーズ制御部130の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、RAM102やHDD103に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。