(57)【要約】【課題】制御プログラムの一斉更新を高速化すること。【解決手段】複数の処理部２１、２２、２３の各々に設定された制御プログラムを更新する更新制御装置１０が提供される。更新制御装置１０は、複数の処理部２１、２２、２３における制御プログラムの更新順序及び進捗状況を示す更新情報１１ａと、複数の処理部２１、２２、２３の各々に提供される新たな制御プログラムとを記憶する記憶部１１と、複数の処理部２１、２２、２３に新たな制御プログラムを提供し、複数の処理部２１、２２、２３のうち更新が完了した処理部の情報を進捗状況として更新情報１１ａに記録し、進捗状況に基づいて、更新情報１１ａが示す更新順序で制御プログラムが更新されるように複数の処理部２１、２２、２３における再起動のタイミングを制御する制御部１２とを有する。【選択図】図１
2018025995.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理部の各々に設定された制御プログラムを更新する更新制御装置であって、
前記複数の処理部における前記制御プログラムの更新順序及び進捗状況を示す更新情報と、前記複数の処理部の各々に提供される新たな制御プログラムとを記憶する記憶部と、
前記複数の処理部に前記新たな制御プログラムを提供し、前記複数の処理部のうち更新が完了した処理部の情報を前記進捗状況として前記更新情報に記録し、前記進捗状況に基づいて、前記更新情報が示す更新順序で前記制御プログラムが更新されるように前記複数の処理部における再起動のタイミングを制御する制御部と
を有する、更新制御装置。
【請求項２】
前記更新情報は、前記複数の処理部が前記新たな制御プログラムを取得する順序を示す情報を含み、
前記制御部は、前記取得する順序で前記複数の処理部が前記新たな制御プログラムを取得するように前記複数の処理部を制御する
請求項１に記載の更新制御装置。
【請求項３】
前記更新情報は、前記制御プログラムの更新に関する処理を実行する動作モードを前記複数の処理部に設定する順序を示す情報を含み、
前記制御部は、前記設定する順序で前記複数の処理部の動作モードが設定されるように前記複数の処理部を制御する
請求項２に記載の更新制御装置。
【請求項４】
前記複数の処理部の各々は、前記制御プログラムを格納するための記憶領域を有し、起動時に前記記憶領域から前記制御プログラムを読み出して前記設定を有効にし、
前記更新情報は、前記複数の処理部が前記新たな制御プログラムを前記記憶領域に格納する処理の実行順序を示す情報を含み、
前記制御部は、前記格納する処理の実行順序で前記複数の処理部が前記新たな制御プログラムを前記記憶領域に格納するように前記複数の処理部を制御する
請求項３に記載の更新制御装置。
【請求項５】
前記更新情報は、前記複数の処理部が前記再起動を実行する順序を示す情報を含み、
前記複数の処理部のうち同時に前記再起動を実行可能な２以上の処理部がある場合、前記再起動を実行する順序を示す情報には、該２以上の処理部が同じタイミングで前記再起動するように該順序が規定され、
前記制御部は、前記２以上の処理部が同じタイミングで前記再起動を実施するように前記複数の処理部を制御する
請求項１〜４のいずれか１項に記載の更新制御装置。
【請求項６】
前記更新制御装置は、データを一時的に格納する記憶領域を有するストレージ装置と、前記記憶領域に格納されたデータを可搬記録媒体にバックアップするライブラリ装置とに接続され、
前記制御部は、前記複数の処理部として、前記ストレージ装置に含まれる処理部の集合と、前記ライブラリ装置に含まれる処理部の集合とを管理し、前記ライブラリ装置について前記制御プログラムの更新を実施している間、前記ストレージ装置の運用を継続させる
請求項１〜５のいずれか１項に記載の更新制御装置。
【請求項７】
複数の処理部の各々に設定された制御プログラムを更新するコンピュータに、
記憶部から、前記複数の処理部における前記制御プログラムの更新順序及び進捗状況を示す更新情報と、前記複数の処理部の各々に提供される新たな制御プログラムとを取得し、
前記複数の処理部に前記新たな制御プログラムを提供し、前記複数の処理部のうち更新が完了した処理部の情報を前記進捗状況として前記更新情報に記録し、前記進捗状況に基づいて、前記更新情報が示す更新順序で前記制御プログラムが更新されるように前記複数の処理部における再起動のタイミングを制御する
処理を実行させる、更新制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、更新制御装置、及び更新制御プログラムに関する。
【背景技術】
【０００２】
データの処理や記憶などに利用されるコンピュータシステムには、様々な処理要素（コンポーネント）が含まれる。例えば、ネットワークを介して複数のコンピュータが接続されるコンピュータシステムの場合、各コンピュータは、そのコンピュータシステムのコンポーネントとなりうる。また、コンピュータに搭載されている制御装置、記憶装置、通信装置、電源装置などは、そのコンピュータのコンポーネントとなりうる。
【０００３】
上記のコンポーネントは、例えば、そのコンポーネントが提供する機能に応じて予め設定されたファームウェアに従って動作する。ファームウェアは、コンポーネントの動作を制御する制御プログラムの一例である。コンピュータシステムの多くは、複数のコンポーネントが相互に連携して動作する。そのため、１つのコンポーネントに設定されたファームウェアを更新すると他のコンポーネントの動作に影響することがある。
【０００４】
機能やセキュリティを向上させるためにコンポーネントのファームウェアは適宜更新される。このとき、一部のコンポーネントに対するファームウェアの更新が他のコンポーネントの動作を不安定にして障害を誘発するリスクを回避するため、例えば、全ての関連するコンポーネントに対して一斉にファームウェアを更新する方法がある。
【０００５】
但し、複数のコンポーネントのファームウェアを一斉に更新する場合、更新順序を間違えると一部のコンポーネントで正しくファームウェアが更新されず、更新後に正常動作しなくなるリスクがある。
【０００６】
なお、複数の画像処理装置のファームウェアを更新する方法に関し、更新される機能に基づいて更新順序を決定する方法が提案されている。他にも、エンジンファームウェアとアップデートモジュールとの整合に基づいて更新順序を決定する方法が提案されている。また、電子機器のファームウェアをアップデートする際に、電子機器をリブートする適切な時間を決定する方法が提案されている。この方法では、電子機器の状態（実行中のプロセスの実行時間など）に応じて適切な時間が決定される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１６７６９２号公報
【特許文献２】特開２０１２−７３８６２号公報
【特許文献３】特表２００５−５０２９７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記のように更新順序がある場合、先に実施される更新処理の時間を予測値にマージンを加えた時間を予め待ち時間として設定しておき、後に実施される更新処理は、先の更新処理を開始後、待ち時間の経過を待って開始される。高い信頼性が求められるコンピュータシステムの場合にはファームウェアの更新が失敗するリスクを低減するために上記のマージンが大きく設定される。そのため、ファームウェアの更新にかかる時間が長くなる。
【０００９】
１つの側面によれば、本開示の目的は、制御プログラムの一斉更新を高速化できる更新制御装置、及び更新制御プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
一態様によれば、複数の処理部の各々に設定された制御プログラムを更新する更新制御装置が提供される。更新制御装置は、複数の処理部における制御プログラムの更新順序及び進捗状況を示す更新情報と、複数の処理部の各々に提供される新たな制御プログラムとを記憶する記憶部と、複数の処理部に新たな制御プログラムを提供し、複数の処理部のうち更新が完了した処理部の情報を進捗状況として更新情報に記録し、進捗状況に基づいて、更新情報が示す更新順序で制御プログラムが更新されるように複数の処理部における再起動のタイミングを制御する制御部とを有する。
【発明の効果】
【００１１】
制御プログラムの一斉更新を高速化できる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係る更新制御装置の一例を示した図である。
【図２】第２実施形態に係る仮想テープライブラリシステムの一例を示した図である。
【図３】第２実施形態に係る仮想テープ制御装置のハードウェアの一例を示した図である。
【図４】第２実施形態に係る監視サーバのハードウェアの一例を示した図である。
【図５】第２実施形態に係るＦ／Ｗ更新制御の説明に用いるコンポーネントモデルを示した図である。
【図６】第２実施形態に係る監視サーバの機能の一例を示した図である。
【図７】第２実施形態に係るＣＯＭＰ情報の一例を示した図である。
【図８】第２実施形態に係る進行管理テーブルの一例を示した図である。
【図９】第２実施形態に係るコード表の一例を示した図である。
【図１０】第２実施形態に係る事前処理の流れを示したフロー図である。
【図１１】第２実施形態に係る更新処理の流れを示したフロー図である。
【図１２】第２実施形態に係るエージェントが実行する処理の流れを示したシーケンス図である。
【図１３】第２実施形態に係るエージェントが各段階で実行する処理の流れを示したフロー図である。
【図１４】第２実施形態に係る更新処理の進行過程の一例を示した図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１４】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。第１実施形態は、複数の処理部にそれぞれ組み込まれている制御プログラムを一斉に更新する方法に関する。図１は、第１実施形態に係る更新制御装置の一例を示した図である。なお、図１に示した更新制御装置１０は、第１実施形態に係る更新制御装置の一例である。
【００１５】
図１に示すように、更新制御装置１０は、記憶部１１及び制御部１２を有する。
記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、或いは、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置である。制御部１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）、ＦＰＧＡ（Field Programmable Gate Array）などのプロセッサである。制御部１２は、例えば、記憶部１１又は他のメモリに記憶されたプログラムを実行する。
【００１６】
更新制御装置１０は、処理部２１、２２、２３の各々に設定された制御プログラムを更新する。１台又は複数台のコンピュータそれ自体、或いは、コンピュータに含まれるコンポーネントは、処理部２１、２２、２３の一例である。
【００１７】
上記のコンポーネントとしては、例えば、ＣＭ（Controller Module）、ＢＩＯＳ（Basic Input/Output System）チップ、ＬＡＮ（Local Area Network）インターフェースカードなどがある。さらに、上記のコンポーネントとしては、ＳＣＳＩ（Small Computer System Interface）コントローラ、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）コントローラ、ＦＣ（Fibre Channel）インターフェースカードなどがある。
【００１８】
記憶部１１は、更新情報１１ａ及び処理部２１、２２、２３の各々に提供される新たな制御プログラムを記憶する。更新情報１１ａは、処理部２１、２２、２３における制御プログラムの更新順序及び進捗状況を示す情報である。
【００１９】
例えば、更新情報１１ａは、図１（Ａ）に示すように、更新順序と、更新対象となる処理部を識別するための情報と、進捗情報とを対応付ける情報である。なお、図１の例では、説明の都合上、更新対象の処理部を識別するための情報を符号で表現している。進捗状況としては、例えば、制御プログラムの更新完了を示す「更新済」と、制御プログラムの更新が完了していない「未更新」とがある。
【００２０】
新たな制御プログラムは、図１（Ｂ）に示すように、更新対象となる処理部２１、２２、２３のそれぞれに対して用意される。図１の例では、処理部２１に対して制御プログラムＦＷ＃１１、処理部２２に対して制御プログラムＦＷ＃１２、処理部２３に対して制御プログラムＦＷ＃１３が用意されている。なお、コンピュータや上述したコンポーネントの動作を制御するファームウェアは制御プログラムの一例である。
【００２１】
制御部１２は、処理部２１、２２、２３に新たな制御プログラムを提供する。処理部２１は、制御プログラムを格納するための格納領域２１ａを有する。処理部２２は、制御プログラムを格納するための格納領域２２ａを有する。処理部２３は、制御プログラムを格納するための格納領域２３ａを有する。格納領域２１ａ、２２ａ、２３ａは、それぞれ処理部２１、２２、２３が有するメモリ（非図示）上の領域である。
【００２２】
図１の例では、制御部１２から処理部２１に制御プログラムＦＷ＃１１が提供される。制御プログラムＦＷ＃１１の提供を受けた処理部２１は、その制御プログラムＦＷ＃１１を格納領域２１ａに格納する。格納領域２１ａに格納された制御プログラムＦＷ＃１１は、処理部２１の再起動時に読み込まれる。そして、再起動した処理部２１は、格納領域２１ａから読み込んだ制御プログラムＦＷ＃１１に従って動作する。
【００２３】
同様に、制御部１２から処理部２２に制御プログラムＦＷ＃１２が提供される。制御プログラムＦＷ＃１２の提供を受けた処理部２２は、その制御プログラムＦＷ＃１２を格納領域２２ａに格納する。格納領域２２ａに格納された制御プログラムＦＷ＃１２は、処理部２２の再起動時に読み込まれる。そして、再起動した処理部２２は、格納領域２２ａから読み込んだ制御プログラムＦＷ＃１２に従って動作する。処理部２３についても同様である。
【００２４】
制御部１２は、処理部２１、２２、２３のうち更新が完了した処理部の情報を進捗状況として更新情報１１ａに記録する。例えば、処理部２１に対する制御プログラムＦＷ＃１１の提供、及び処理部２１の再起動が完了すると、制御部１２は、処理部２１に対応する更新情報１１ａの進捗状況欄に「更新済」と記録する。
【００２５】
制御部１２は、進捗状況に基づいて、更新情報１１ａが示す更新順序で制御プログラムが更新されるように複数の処理部２１、２２、２３における再起動のタイミングを制御する。例えば、制御部１２は、図１（Ｃ）に示すように、制御プログラムＦＷ＃１１、ＦＷ＃１２、ＦＷ＃１３をそれぞれ処理部２１、２２、２３に提供した後、更新順序が「１」の処理部２１に対して再起動を許可する。
【００２６】
処理部２１が制御プログラムＦＷ＃１１を読み込んで動作を開始した後、制御部１２は、更新情報１１ａを更新し、更新順序が「２」の処理部２２に対して再起動を許可する。処理部２２が制御プログラムＦＷ＃１２を読み込んで動作を開始した後、制御部１２は、更新情報１１ａを更新し、更新順序が「３」の処理部２３に対して再起動を許可する。処理部２３が制御プログラムＦＷ＃１３を読み込んで動作を開始した後、制御部１２は、更新情報１１ａを更新する。
【００２７】
図１の例では、更新順序が１から３まで規定され、各更新順序に対して更新対象の処理部が割り当てられているが、同時に更新を実施できる処理部が複数ある場合には、同じ更新順序に複数の処理部が割り当てられていてもよい。例えば、更新順序「２」に処理部２２、２３が割り当てられている場合、制御部１２は、処理部２１が制御プログラムＦＷ＃１１を読み込んで動作を開始した後、更新情報１１ａを更新し、処理部２２、２３に対して同じタイミングで再起動を許可する。
【００２８】
上記のように、更新情報１１ａを利用することで、複数の処理部に対して一斉に制御プログラムを更新する際に安全で効率的に処理を進めることができる。
例えば、制御プログラムＦＷ＃１１による更新を前提として制御プログラムＦＷ＃１２の更新が可能となる場合、制御プログラムＦＷ＃１１の更新が未完了の状態で制御プログラムＦＷ＃１２の更新が実施されると更新処理が失敗する。しかし、更新情報１１ａを利用することで、このような失敗を回避することができる。さらに、更新情報１１ａに基づいて順次更新処理を進めることができ、更新処理の高速化に寄与する。
【００２９】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。第２実施形態は、仮想テープライブラリシステムにおけるファームウェア（Ｆ／Ｗ）の更新方法に関する。
【００３０】
［２−１．仮想テープライブラリシステム］
図２を参照しながら、第２実施形態に係る仮想テープライブラリシステムについて説明する。図２は、第２実施形態に係る仮想テープライブラリシステムの一例を示した図である。
【００３１】
図２に示すように、第２実施形態に係る仮想テープライブラリシステムは、仮想テープライブラリ装置１００、監視サーバ２００、及びホストコンピュータ３００を有する。また、仮想テープライブラリ装置１００は、仮想テープ制御装置１０１、記憶装置１０２、及びテープライブラリ１０３を有する。
【００３２】
監視サーバ２００は、仮想テープライブラリ装置１００におけるＦ／Ｗの更新状況を監視し、Ｆ／Ｗの更新タイミングなどを制御するコンピュータである。ホストコンピュータ３００は、仮想テープライブラリ装置１００にデータの読み書きを依頼するコンピュータである。仮想テープライブラリ装置１００は、ホストコンピュータ３００から依頼を受けてデータの読み書きを実行する装置である。
【００３３】
テープライブラリ１０３は、ライブラリ制御装置１３１、テープドライブ１３２、及びロボット１３３を有する。ライブラリ制御装置１３１は、テープドライブ１３２、及びロボット１３３を制御し、テープ１３２ａ、１３２ｂに対するデータの読み書きを実行する。テープ１３２ａ、１３２ｂは、データを記録するための磁気テープ媒体である。
【００３４】
なお、ここでは、説明の都合上、磁気テープ媒体を例に挙げるが、ＤＶＤ（Digital Versatile Disc）やＢＤ（Blu-ray Disc；登録商標）などの光ディスクを利用するシステムにも第２実施形態の技術を適用可能である。
【００３５】
テープドライブ１３２は、テープ１３２ａ、１３２ｂにデータを書き込み、テープ１３２ａ、１３２ｂからデータを読み出すドライブ装置である。ロボット１３３は、テープ１３２ａ、１３２ｂなどの磁気テープ媒体を収納する収納ラックから磁気テープ媒体を取り出してテープドライブ１３２に装填する装置である。ライブラリ制御装置１３１は、仮想テープ制御装置１０１による制御に応じてテープライブラリ１０３の動作を制御する。
【００３６】
記憶装置１０２は、ＨＤＤやＳＳＤ（Solid State Drive）などの記録媒体を複数組み合わせて冗長化したＲＡＩＤ装置である。そのため、記憶装置１０２は、磁気テープ媒体に比べて高速なデータの読み書きが可能である。また、記憶装置１０２は、ＲＡＩＤコントローラを有する。また、記憶装置１０２は、テープライブラリ１０３に書き込まれるデータを一時的に格納するキャッシュ（ＴＶＣ：Tape Volume Cache）として利用される。
【００３７】
例えば、仮想テープ制御装置１０１は、ホストコンピュータ３００からテープライブラリ１０３にデータを書き込むように依頼を受けた際、そのデータを一時的に記憶装置１０２に格納する。また、仮想テープ制御装置１０１は、ホストコンピュータ３００からデータの読み出しを依頼された際、そのデータが記憶装置１０２にある場合には、記憶装置１０２のデータを用いてホストコンピュータ３００に応答する。
【００３８】
上記のように、記憶装置１０２をキャッシュとして利用することで、ホストコンピュータ３００に対する応答を高速化することができる。なお、仮想テープ制御装置１０１は、予め設定されたタイミング（例えば、所定期間の経過や記憶装置１０２の残容量などの条件を満たしたタイミング）で記憶装置１０２のデータをテープライブラリ１０３に移動する。
【００３９】
上述した仮想テープ制御装置１０１のハードウェアは、例えば、図３に示すようなハードウェア要素を含む。図３は、第２実施形態に係る仮想テープ制御装置のハードウェアの一例を示した図である。なお、図３に例示したハードウェアは一例であり、仮想テープライブラリシステムの構造や用途に応じて一部の要素を変更してもよい。
【００４０】
図３に示すように、仮想テープ制御装置１０１は、通信デバイス１１１、データ処理デバイス１１２、及び給電デバイス１１３を有する。
通信デバイス１１１は、例えば、ＬＡＮインターフェースカード、ＦＣインターフェースカード、ＳＣＳＩコントローラなどであり、監視サーバ２００、ホストコンピュータ３００、テープライブラリ１０３との通信に利用されるデバイスである。データ処理デバイス１１２は、ＣＰＵ、ＦＰＧＡ、ＣＭなどのデータ処理機能を搭載したデバイスである。給電デバイス１１３は、電源のオン／オフ、電圧制御、省電力制御などの給電機能を搭載したデバイスである。
【００４１】
また、上記の監視サーバ２００が有する機能は、図４に例示したコンピュータのハードウェアを利用して実現されうる。図４は、第２実施形態に係る監視サーバのハードウェアの一例を示した図である。監視サーバ２００が有する機能は、コンピュータプログラムを用いて図４に示すハードウェアを制御することにより実現されうる。なお、ホストコンピュータ３００の機能も図４に例示したハードウェアを用いて実現可能である。
【００４２】
図４に示すように、このハードウェアは、主に、ＣＰＵ９０２と、ＲＯＭ（Read Only Memory）９０４と、ＲＡＭ９０６と、ホストバス９０８と、ブリッジ９１０とを有する。さらに、このハードウェアは、外部バス９１２と、インターフェース９１４と、入力部９１６と、出力部９１８と、記憶部９２０と、ドライブ９２２と、接続ポート９２４と、通信部９２６とを有する。
【００４３】
ＣＰＵ９０２は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、又はリムーバブル記録媒体９２８に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ＲＯＭ９０４は、ＣＰＵ９０２に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。ＲＡＭ９０６には、例えば、ＣＰＵ９０２に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
【００４４】
これらの要素は、例えば、高速なデータ伝送が可能なホストバス９０８を介して相互に接続される。一方、ホストバス９０８は、例えば、ブリッジ９１０を介して比較的データ伝送速度が低速な外部バス９１２に接続される。また、入力部９１６としては、例えば、マウス、キーボード、タッチパネル、タッチパッドなどが用いられる。
【００４５】
出力部９１８としては、例えば、ＣＲＴ（Cathode Ray Tube）、ＬＣＤ（Liquid Crystal Display）、ＰＤＰ（Plasma Display Panel）、又はＥＬＤ（Electro-Luminescence Display）などのディスプレイ装置が用いられる。また、出力部９１８として、プリンタなどが用いられることもある。
【００４６】
記憶部９２０は、各種のデータを格納するための装置である。記憶部９２０としては、例えば、ＨＤＤなどの磁気記憶デバイスが用いられる。また、記憶部９２０として、ＳＳＤやＲＡＭディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
【００４７】
ドライブ９２２は、着脱可能な記録媒体であるリムーバブル記録媒体９２８に記録された情報を読み出し、又はリムーバブル記録媒体９２８に情報を書き込む装置である。リムーバブル記録媒体９２８としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
【００４８】
接続ポート９２４は、例えば、ＵＳＢ（Universal Serial Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ、ＲＳ−２３２Ｃポートなど、外部接続機器９３０を接続するためのポートである。外部接続機器９３０としては、例えば、プリンタなどが用いられる。
【００４９】
通信部９２６は、ネットワーク９３２に接続するための通信デバイスである。通信部９２６としては、例えば、有線又は無線ＬＡＮ用の通信回路、ＷＵＳＢ（Wireless USB）用の通信回路、光通信用の通信回路やルータ、ＡＤＳＬ（Asymmetric Digital Subscriber Line）用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられうる。通信部９２６に接続されるネットワーク９３２は、有線又は無線により接続されたネットワークであり、例えば、インターネット、ＬＡＮなどを含む。
【００５０】
（Ｆ／Ｗの更新順序）
上記のように、仮想テープライブラリシステムには様々なハードウェア要素が含まれる。また、それらハードウェア要素の多くはＦ／Ｗに従って動作する。第２実施形態は、このようなハードウェア要素のＦ／Ｗを更新する技術に関する。
【００５１】
複数のハードウェア要素について一斉にＦ／Ｗを更新する場合、Ｆ／Ｗを更新するハードウェア要素の間には依存関係があるため、Ｆ／Ｗの更新順序を間違えると一部のハードウェア要素が正常に動作しなくなるリスクがある。仮想テープライブラリ装置１００の更新順序は、例えば、給電デバイス１１３、記憶装置１０２、通信デバイス１１１、テープライブラリ１０３、データ処理デバイス１１２の順になる。
【００５２】
上記の順序は一例であるが、給電デバイス１１３は各ハードウェア要素に対する電源の供給を制御するために最初にＦ／Ｗの更新が実施される。また仮想テープ制御装置１０１やライブラリ制御装置１３１が記憶装置１０２の内容を参照するため、仮想テープ制御装置１０１やテープライブラリ１０３より先にＦ／Ｗの更新が実施される。通信デバイス１１１はＦ／Ｗの提供に利用されるため、Ｆ／Ｗの提供が完了した後で通信の間隙にＦ／Ｗの更新が実施される。
【００５３】
記憶装置１０２が正常に稼働している場合、ホストコンピュータ３００から仮想テープライブラリ装置１００に送信されるデータは記憶装置１０２にキャッシュしておける。そのため、テープライブラリ１０３は適時にＦ／Ｗの更新を実施する。テープライブラリ１０３の起動時にテープドライブ１３２の状態を認識する処理が実行されるため、テープライブラリ１０３のＦ／Ｗを更新する際には、まず、テープドライブ１３２のＦ／Ｗが更新される。そして、ロボット１３３のＦ／Ｗが更新される。
【００５４】
テープドライブ１３２及びロボット１３３のＦ／Ｗが更新され、テープドライブ１３２及びロボット１３３が正常に動作している状態でライブラリ制御装置１３１のＦ／Ｗが更新される。データ処理デバイス１１２は、起動時にテープライブラリ１０３の状態を認識する。そのため、テープライブラリ１０３のＦ／Ｗが更新された後、データ処理デバイス１１２のＦ／Ｗが更新される。
【００５５】
なお、Ｆ／Ｗの更新対象となるデータ処理デバイス１１２として、ＢＩＯＳ、ＬＡＮインターフェースカード、ＦＣインターフェースカード、ＲＡＩＤコントローラがあるとする。この場合、入出力制御を担うＢＩＯＳのＦ／Ｗが最初に更新され、ＬＡＮインターフェースカードやＦＣインターフェースカードのＦ／Ｗが更新され、その後、ＲＡＩＤコントローラのＦ／Ｗが更新される。また、仮想テープ制御装置１０１の全体的な動作を制御するＦ／Ｗを更新する場合、上記の各ハードウェア要素についてＦ／Ｗの更新が完了した後で更新処理が実行される。
【００５６】
上記のように、様々なハードウェア要素が連携して動作するシステムの場合、Ｆ／Ｗの更新順序がある。そのため、先にＦ／Ｗを更新するハードウェア要素の更新完了を待って、後に更新を実施するハードウェア要素がＦ／Ｗの更新処理を開始する。更新順序の制御方法としては、例えば、先の更新処理が開始されてから、予め設定された待機時間が経過した後、後の更新処理が開始される仕組みを採用することができる。
【００５７】
但し、仮想テープライブラリシステムのように更新失敗のリスクを回避することが求められるシステムの場合には待機時間が十分に長く設定されるため、全てのハードウェア要素についてＦ／Ｗの更新が完了するまでにかかる時間が長くなる。Ｆ／Ｗの更新により運用が停止している期間が長くなるとユーザの利便性が損なわれる。そのため、第２実施形態に係る仮想テープライブラリシステムでは、待機時間を設定するのではなく、更新処理の進行状況を好適に管理し、Ｆ／Ｗの更新時間を短縮する仕組みを提供する。
【００５８】
（コンポーネントモデル）
以下では、説明を簡単にするために、仮想テープライブラリ装置１００をＦ／Ｗの更新対象にする。また、仮想テープライブラリ装置１００のハードウェア要素を図５に例示したコンポーネントモデルで表現する。図５は、第２実施形態に係るＦ／Ｗ更新制御の説明に用いるコンポーネントモデルを示した図である。
【００５９】
図５に例示したコンポーネントモデルでは、仮想テープライブラリ装置１００のハードウェア要素がコンポーネント１０７、１０８で表現される。コンポーネント１０７は、メインユニット１７１を有する。また、コンポーネント１０８は、メインユニット１８１、サブユニット１８２を有する。
【００６０】
例えば、コンポーネント１０７は、仮想テープ制御装置１０１、記憶装置１０２に相当する。そして、メインユニット１７１は、例えば、通信デバイス１１１、データ処理デバイス１１２、給電デバイス１１３、記憶装置１０２のＲＡＩＤコントローラに相当する。また、コンポーネント１０８は、テープライブラリ１０３に相当する。メインユニット１８１は、ライブラリ制御装置１３１に相当する。サブユニット１８２は、テープドライブ１３２、ロボット１３３に相当する。なお、ここでは説明の都合上、上記の対応関係を例示したが、コンポーネント、ユニット、ハードウェア要素の関係はこれに限定されない。
【００６１】
図５に示すように、メインユニット１７１は、プロセッサ１７１ａ及びメモリ１７１ｂを有する。メインユニット１８１は、プロセッサ１８１ａ及びメモリ１８１ｂを有する。サブユニット１８２は、プロセッサ１８２ａ及びメモリ１８２ｂを有する。メモリ１７１ｂ、１８１ｂ、１８２ｂにはＦ／Ｗが格納される。プロセッサ１７１ａ、１８１ａ、１８２ａは、それぞれ、メモリ１７１ｂ、１８１ｂ、１８２ｂに格納されているＦ／Ｗを読み込んで動作を制御する。メインユニット１７１、１８１は、監視サーバ２００と通信可能である。
【００６２】
以下、上記のコンポーネントモデルを用いて説明を進める。
［２−２．監視サーバの機能］
図６を参照しながら、監視サーバ２００の機能について説明する。図６は、第２実施形態に係る監視サーバの機能の一例を示した図である。
【００６３】
図６に示すように、監視サーバ２００は、記憶部２０１、事前処理部２０２、及び更新処理部２０３を有する。記憶部２０１の機能は、上述したＲＡＭ９０６や記憶部９２０などを用いて実現できる。事前処理部２０２及び更新処理部２０３の機能は、上述したＣＰＵ９０２などを用いて実現できる。
【００６４】
記憶部２０１には、ＣＯＭＰ情報２０１ａ、進行管理テーブル２０１ｂ、Ｆ／Ｗデータ２０１ｃが格納される。ＣＯＭＰ情報２０１ａは、Ｆ／Ｗの更新対象となるコンポーネント１０７、１０８に関する情報である。進行管理テーブル２０１ｂは、Ｆ／Ｗの更新状況（更新順序及び更新処理の進行状況）を管理するためのテーブルである。Ｆ／Ｗデータ２０１ｃは、コンポーネント１０７、１０８に提供されるＦ／Ｗの実体である。
【００６５】
Ｆ／Ｗの更新処理は、エージェントを利用して実行される。エージェントは、複数の処理を同時に並行して実行するために利用される論理的な処理主体であり、例えば、タスク、プロセス、スレッドなどである。図７に示すように、上述したコンポーネントモデルの場合、Ｆ／Ｗの更新対象はコンポーネント１０７のメインユニット１７１、コンポーネント１０８のメインユニット１８１及びサブユニット１８２である。図７は、第２実施形態に係るＣＯＭＰ情報の一例を示した図である。
【００６６】
この場合、Ｆ／Ｗの更新処理を同時に並行して実行できるようにするため、メインユニット１７１、１８１に関する処理をそれぞれ実行するエージェントＡ１７１、Ａ１８１、及びサブユニット１８２に関する処理を実行するエージェントＡ１８２が利用される。エージェントＡ１７１は、メインユニット１７１との間でコマンドのやりとりを実施して、Ｆ／Ｗの更新処理を進める。同様に、エージェントＡ１８１、Ａ１８２は、それぞれメインユニット１８１、サブユニット１８２との間でコマンドのやりとりを実施して、Ｆ／Ｗの更新処理を進める。
【００６７】
ＣＯＭＰ情報２０１ａは、上記のようなエージェント（エージェントＡ１７１、Ａ１８１、Ａ１８２）と、ユニット（メインユニット１７１、１８１、サブユニット１８２）との関係を規定する情報である。図７に示すように、ＣＯＭＰ情報２０１ａは、コンポーネントとユニットとを対応付ける。
【００６８】
また、ＣＯＭＰ情報２０１ａは、各エージェントの種別（メイン、サブ）、及びサブエージェント（エージェントＡ１８２）の所属先（エージェントＡ１８１）を含む。但し、メインユニットに対応するエージェントの種別が「メイン」、サブユニットに対応するエージェントの種別が「サブ」である。また、そのサブユニットが属するメインユニットに対応するエージェント（メイン）に、種別が「サブ」のエージェントが所属する。さらに、ＣＯＭＰ情報２０１ａは、各ユニットにおける更新後のＦ／Ｗ版数を含む。
【００６９】
進行管理テーブル２０１ｂには、図８に示すように、Ｆ／Ｗ版数に関する情報と、処理段階（保守モード設定、Ｆ／Ｗ取得、Ｆ／Ｗ組込み、再起動、保守モード解除、更新完了）に関する情報とが含まれる。図８は、第２実施形態に係る進行管理テーブルの一例を示した図である。
【００７０】
Ｆ／Ｗ版数の項目は「更新」、「稼働」に分かれている。「更新」の欄には、更新により新たに組み込まれるＦ／Ｗ版数が記録される。「稼働」の欄には、更新処理の開始時に「更新」欄のＦ／Ｗ版数が記録される。
【００７１】
保守モード設定は、対象となるユニットにおける通常運用時の処理を禁止する動作モード（保守モード）に設定する処理である。つまり、保守モードは、対象となるユニットがＦ／Ｗの更新に関する処理を実行する動作モードである。
【００７２】
例えば、対象となるユニットが記憶装置１０２やテープライブラリ１０３である場合、保守モードは、ホストコンピュータ３００から依頼されるアクセス要求の受付を禁止する動作モードである。Ｆ／Ｗ取得は、各ユニットが監視サーバ２００からＦ／Ｗを取得（ダウンロード）する処理である。Ｆ／Ｗ組込みは、各ユニットがメモリ上のＦ／Ｗ格納領域に新たなＦ／Ｗを格納し、起動時に新たなＦ／Ｗを読み込むように設定する処理である。
【００７３】
再起動は、各ユニットが一旦動作を停止し、再び起動する処理である。この起動時に各ユニットは新たなＦ／Ｗを読み込む。保守モード解除は、上記の保守モードから、ホストコンピュータ３００によるアクセス要求を受け付ける動作モードに設定を変更する処理である。更新完了は、全てのエージェントによる更新の処理が完了し、Ｆ／Ｗの更新対象となる全てのユニットが保守モードを解除して運用を再開した状態を示す。
【００７４】
保守モード設定、Ｆ／Ｗ取得、Ｆ／Ｗ組込み、再起動、保守モード解除の各項目は「順位」、「状態」に分かれている。「順位」の欄には、更新順序を規定するコード値（順位指定コード）が記録される。「状態」の欄には、各段階における処理の進行状況に応じてコード値（動作状態コード）が記録される。順位指定コード及び動作状態コードは、各エージェントについて進行管理テーブル２０１ｂに記録される。そのため、進行管理テーブル２０１ｂの内容は、各ユニットにおける更新処理の進行状況を反映したものとなる。
【００７５】
なお、順位指定コード及び動作状態コードのコード値は図９のように意味付けられている。図９は、第２実施形態に係るコード表の一例を示した図である。図９の例では、コード値として、９９、０、１０、１１、…、１９などの値が予め設定されている。
【００７６】
順位指定コードのコード値は、原則として、小さいほど高順位であることを意味している。但し、順位指定コードのコード値が９９の場合、該当する段階の処理（対象処理）を実行しない（非実行）こと、又は対象処理を実行するか否かを判定しない（開始判定への不参加）ことを意味する。また、順位指定コードのコード値が０の場合、対象処理を先行条件なく（他のエージェントの進行状況と無関係に）実行することを意味する。
【００７７】
また、順位指定コードのコード値１０は、対象処理を１番目の順位で実行することを意味する。このように、順位指定コードにおける０と９９を除くコード値は、対象処理を実行する順位を意味する。また、図９の例では、対象処理の実行順位を意味する順位指定コードのコード値を２桁以上の数字で表現する。なお、説明の都合上、以下では、０を除くコード値の桁数を２桁とする。
【００７８】
順位指定コードで１桁目が０のコード値は、属性がメインのエージェントが対象処理を実行する順位を表す。一方、１桁目が１から９までのコード値は、属性がサブのエージェントが対象処理を実行する順位を表す。例えば、順位指定コードのコード値１１は、１番目に対象処理を実行するメインのエージェントに所属するサブのエージェントの中で、１番目に対象処理を実行することを意味する。このように、コード値の１桁目及び２桁目以上の桁に意味を持たせることで、対象処理の実行順序を階層的に管理できる。
【００７９】
動作状態コードのコード値は、対象処理の実行状態を表す。動作状態コードのコード値９９は、対象処理が終了した状態（対象処理の終了状態）を表す。また、動作状態コードのコード値０は、対象処理が未実行の状態（対象処理の未実行）又は先行条件なく対象処理が実行されうる状態（無条件実行）を表す。
【００８０】
動作状態コードのコード値１０は、１番目に対象処理を実行するエージェントが対象処理を実行中の状態（対象処理の実行中）を表す。つまり、動作状態コードのコード値１０は、順位指定コードのコード値１０に対応する実行順序の処理が実行中の状態を表す。動作状態コードのコード値１１以降も同様に、そのコード値と同じ順位指定コードのコード値に対応する実行順序の処理が実行中の状態を表す。このように、順位指定コードと動作状態コードとを関連付けて管理することで、対象処理の実行状態を容易に管理できる。
【００８１】
なお、複数のエージェントに同じ順位指定コードが割り当てられることがある。同じ順位指定コードが割り当てられている複数のエージェントは、対応するユニットに対して同時に該当する処理を実行させることができる。
【００８２】
図８の例では、エージェントＡ１８１、Ａ１８２の再起動、保守モード解除の欄に同じ値が割り当てられている。この場合、エージェントＡ１８１は、サブユニット１８２の再起動と同じタイミングでメインユニット１８１を再起動させることができる。他方、エージェントＡ１８２は、メインユニット１８１の再起動と同じタイミングでサブユニット１８２を再起動させることができる。保守モード解除の処理についても同様である。
【００８３】
再び図６を参照する。事前処理部２０２は、Ｆ／Ｗの更新を実施する際に、事前に進行管理テーブル２０１ｂにコード値を設定し、各ユニットに提供されるＦ／Ｗを準備する。なお、コード値の初期値はユーザ又は管理者が予め設定する。そして、事前処理部２０２は、予め設定された初期値に基づいて進行管理テーブル２０１ｂにコード値を設定する。
【００８４】
また、事前処理部２０２は、メインユニット１７１、１８１、サブユニット１８２に対応するエージェントＡ１７１、Ａ１８１、Ａ１８２を生成する。また、メインユニット１７１、１８１、サブユニット１８２に提供されるＦ／Ｗの集合が１つのファイルとして用意されている場合、事前処理部２０２は、その集合から各ユニットに提供されるＦ／Ｗを抽出する。このように、事前処理部２０２は、エージェントＡ１７１、Ａ１８１、Ａ１８２がＦ／Ｗの更新処理を実行できる状態に事前準備を実施する。
【００８５】
更新処理部２０３は、事前処理部２０２が生成したエージェントＡ１７１、Ａ１８１、Ａ１８２を起動させ、エージェントＡ１７１、Ａ１８１、Ａ１８２を介してＦ／Ｗの更新処理を実行する。エージェントＡ１７１、Ａ１８１、Ａ１８２は、それぞれ進行管理テーブル２０１ｂを参照し、順位指定コードに基づく実行順序でＦ／Ｗの提供やＦ／Ｗの組込み制御などを実施する。
【００８６】
［２−３．処理の流れ］
以下、フロー図やシーケンス図などを参照しながら、事前処理部２０２及び更新処理部２０３が実行する処理の内容及び処理の流れについて、さらに説明する。
【００８７】
（事前処理の流れ）
図１０を参照しながら、事前処理部２０２が実行する処理（事前処理）の流れについて説明する。図１０は、第２実施形態に係る事前処理の流れを示したフロー図である。
【００８８】
（Ｓ１０１）事前処理部２０２は、コード値を設定済の進行管理テーブル２０１ｂが記憶部２０１にあるか否かを判定する。設定済の進行管理テーブル２０１ｂがある場合、処理はＳ１０６へと進む。一方、設定済の進行管理テーブル２０１ｂがない場合、処理はＳ１０２へと進む。
【００８９】
（Ｓ１０２）事前処理部２０２は、各ユニットに割り当てるエージェントを生成し、生成したエージェントを各ユニットに割り当てる。
例えば、事前処理部２０２は、メインユニット１７１に割り当てるエージェントＡ１７１を生成し、メインユニット１７１にエージェントＡ１７１を割り当てる。そして、事前処理部２０２は、ＣＯＭＰ情報２０１ａのメインユニット１７１に対応する欄に、エージェントＡ１７１の種別（メイン）及び識別情報を記録する（図７を参照）。同様に、事前処理部２０２は、エージェントＡ１８１、Ａ１８２を生成し、エージェントＡ１８１、Ａ１８２の情報をＣＯＭＰ情報２０１ａに記録する。
【００９０】
（Ｓ１０３）事前処理部２０２は、進行管理テーブル２０１ｂを生成する。このとき、事前処理部２０２は、図８に示したように、Ｆ／Ｗ版数、保守モード設定、Ｆ／Ｗ取得、Ｆ／Ｗ組込み、再起動、保守モード解除、更新完了の各項目に対応するコード値の記入欄を有する進行管理テーブル２０１ｂを生成する。コード値の記入欄は、Ｓ１０２で生成されたエージェント毎に設けられる。図８の例では、エージェントＡ１７１、Ａ１８１、Ａ１８２にそれぞれ対応する記入欄が設けられている。
【００９１】
なお、事前処理部２０２は、Ｆ／Ｗ版数の項目については「更新」、「稼働」の欄を設け、保守モード設定、Ｆ／Ｗ取得、Ｆ／Ｗ組込み、再起動、保守モード解除の項目については「順位」、「状態」の欄を設ける。Ｆ／Ｗ版数の「更新」欄には、更新後に各ユニットに組み込まれるＦ／Ｗの版数が記録される。また、Ｆ／Ｗ版数の「稼働」欄には、更新処理の開始時に「更新」欄のＦ／Ｗ版数が記録される。「順位」欄には順位指定コードのコード値が記録される。「状態」欄には、動作状態コードのコード値が記録される。
【００９２】
但し、Ｓ１０３の時点で、事前処理部２０２は、全ての欄に０を入れた進行管理テーブル２０１ｂを生成する。
（Ｓ１０４）事前処理部２０２は、ＣＯＭＰ情報２０１ａ（図７を参照）に予め設定されているＦ／Ｗ版数の値を進行管理テーブル２０１ｂにおけるＦ／Ｗ版数の「更新」欄に設定する。例えば、事前処理部２０２は、エージェントＡ１７１に対応するＦ／Ｗ版数の「更新」欄にＣＯＭＰ情報２０１ａから読み出した値「Ｖ０１」を設定する。エージェントＡ１８１、Ａ１８２に対応する「更新」欄の値も同様に設定される。
【００９３】
（Ｓ１０５）事前処理部２０２は、進行管理テーブル２０１ｂの各項目にある「順位」欄に予め設定されている順位指定コードのコード値を設定する。
例えば、保守モードの設定を実施する際、メインユニット１８１をメインユニット１７１に先行して実施する必要がある場合、エージェントＡ１８１に対応するコード値は、エージェントＡ１７１に対応するコード値より小さい値に設定される。図８の例では、保守モード設定の「順位」欄で、エージェントＡ１７１に対応するコード値は３０に設定され、エージェントＡ１８１に対応するコード値は２０に設定されている。この場合、コード値が小さいエージェントＡ１８１の処理が先行して実行される。
【００９４】
また、エージェントＡ１８１に所属するサブのエージェントＡ１８２に対しては、エージェントＡ１８１に対応するコード値と２桁目が同じコード値（この例では２１）が設定される。そのため、エージェントＡ１７１よりもコード値が小さいエージェントＡ１８２の処理がエージェントＡ１７１の処理に先行して実行される。つまり、この例では、保守モードの設定に関して、コンポーネント１０８の処理がコンポーネント１０７の処理に先行して実行される。
【００９５】
このように、コード値の桁に意味を持たせることで、コンポーネントに対応するユニットのグループ単位で処理の実行順序を管理することができる。事前処理部２０２は、保守モード設定の他、Ｆ／Ｗ取得、Ｆ／Ｗ組込み、再起動、保守モード解除についても同様に「順位」欄に順位指定コードのコード値を記録する。なお、同じ項目について順位指定コードのコード値が同じ値に設定されている場合、同じ値に設定されているエージェントは並行して対象処理を実行することができる。
【００９６】
（Ｓ１０６）事前処理部２０２は、エージェントとユニットとの間の接続を確認する。例えば、事前処理部２０２は、エージェントＡ１７１がメインユニット１７１に対して所定のコマンドを送るように指示し、メインユニット１７１からエージェントＡ１７１に正常な応答が返るかを確認する。正常な応答が返ってきている場合、事前処理部２０２は、メインユニット１７１とエージェントＡ１７１とが正常に接続されていると判断する。事前処理部２０２は、エージェントＡ１８１、Ａ１８２についても同様に接続を確認する。
【００９７】
なお、接続の確認には、ＬＡＮ通信の際に利用されるユーティリティのコマンド（例えば、"ping"（ネットワークレベルの動作確認）、"get unit status"、"show"（システムレベルの動作確認）など）を利用することができる。その他にも、監視サーバ２００とコンポーネント１０７、１０８との接続方法によっては、ＳＣＳＩコマンドなどを接続の確認に利用することもできる。
【００９８】
（Ｓ１０７）事前処理部２０２は、Ｆ／Ｗの集合から各ユニットに対応するＦ／Ｗを抽出し、該当エージェントに割り当てる。
例えば、コンポーネント１０７、１０８に対応するＦ／Ｗの集合が１つのファイルで与えられている場合、事前処理部２０２は、そのファイルからメインユニット１７１、１８１、サブユニット１８２にそれぞれ提供されるＦ／Ｗを抽出する。そして、事前処理部２０２は、メインユニット１７１、１８１、サブユニット１８２に対応するエージェントＡ１７１、Ａ１８１、Ａ１８２のそれぞれに対し、抽出したＦ／Ｗを割り当てる。
【００９９】
Ｓ１０７の処理が完了すると、図１０に示した一連の処理は終了する。
（更新処理の流れ）
上記の事前処理が完了すると、更新処理部２０３により更新処理の実行が開始される。以下、図１１を参照しながら、更新処理部２０３が実行する処理（更新処理）の流れについて説明する。図１１は、第２実施形態に係る更新処理の流れを示したフロー図である。
【０１００】
（Ｓ１１１）更新処理部２０３は、進行管理テーブル２０１ｂにあるＦ／Ｗ版数の「稼働」欄に値（現時点で各ユニットに組み込まれているＦ／Ｗの版数）を設定する。メインユニット１７１、１８１、サブユニット１８２に現在組み込まれているＦ／Ｗの版数が「Ｖ００」である場合、更新処理部２０３は、Ｆ／Ｗ版数の「更新」欄に「Ｖ００」を設定する。なお、ここではＦ／Ｗ版数「Ｖ００」のＦ／ＷをＦ／Ｗ版数「Ｖ０１」のＦ／Ｗに更新する例（図８を参照）について説明する。
【０１０１】
（Ｓ１１２）更新処理部２０３は、事前処理部２０２が生成したエージェントＡ１７１、Ａ１８１、Ａ１８２を起動する。更新処理部２０３が起動したエージェントＡ１７１、Ａ１８１、Ａ１８２は、それぞれメインユニット１７１、１８１、サブユニット１８２に対するＦ／Ｗの更新処理を実行する。なお、エージェントＡ１７１、Ａ１８１、Ａ１８２によるＦ／Ｗの更新処理については後述する。
【０１０２】
（Ｓ１１３）更新処理部２０３は、進行管理テーブル２０１ｂを参照し、保守モード解除の「状態」欄を監視する。保守モード解除の「状態」欄に記録されるコード値は、メインユニット１７１、１８１、サブユニット１８２に設定された保守モードが解除されたか否かを示す。後述するように、このコード値は、メインユニット１７１、１８１、サブユニット１８２におけるＦ／Ｗの組込みや再起動が完了した後、エージェントＡ１７１、Ａ１８１、Ａ１８２により更新される。
【０１０３】
（Ｓ１１４）更新処理部２０３は、保守モード解除の「状態」欄にコード値９９があるかを確認する。コード値９９は、対象処理の終了状態を示す（図９を参照）。つまり、保守モード解除の「状態」欄にコード値９９が記録されている場合、そのコード値９９が記録されている欄に対応するエージェントが保守モード解除の処理を終了したことを示す。
【０１０４】
更新処理部２０３は、保守モード解除の処理についてコード値９９のエージェント（保守モード解除の処理を終了したエージェント）があるか否かを判定する。このとき、更新処理部２０３は、「更新完了」欄のコード値が９９ではないエージェント（更新処理が未完了のエージェント）について上記の判定を実施する。保守モード解除の処理についてコード値９９のエージェントがある場合、処理はＳ１１５へと進む。一方、保守モード解除の処理についてコード値９９のエージェントがない場合、処理はＳ１１３へと進む。
【０１０５】
（Ｓ１１５）更新処理部２０３は、保守モード解除の「状態」欄にあるコード値９９に対応するエージェント（該当エージェント）について、進行管理テーブル２０１ｂにある「更新完了」欄のコード値を９９に設定する。つまり、更新処理部２０３は、保守モード解除の処理を完了したユニットについて更新処理が全て完了したと認識し、そのユニットについてＦ／Ｗの更新が完了したことを示すコード値を進行管理テーブル２０１ｂ（該当エージェントの「更新完了」欄）に記録する。
【０１０６】
（Ｓ１１６）更新処理部２０３は、進行管理テーブル２０１ｂの「更新完了」欄が全てコード値９９になったか否かを判定する。進行管理テーブル２０１ｂの「更新完了」欄が全てコード値９９になっている場合（メインユニット１７１、１８１、サブユニット１８２におけるＦ／Ｗの更新が完了している場合）、処理はＳ１１７へと進む。一方、進行管理テーブル２０１ｂの「更新完了」欄が全てコード値９９になっていない場合、処理はＳ１１３へと進む。
【０１０７】
（Ｓ１１７、Ｓ１１８）更新処理部２０３は、進行管理テーブル２０１ｂにあるＦ／Ｗ版数の「稼働」欄を各ユニットに新たに組み込まれたＦ／Ｗの版数「Ｖ０１」に更新する。そして、更新処理部２０３は、コンポーネント１０７、１０８の運転を再開するように制御する。つまり、ホストコンピュータ３００によるコンポーネント１０７、１０８へのアクセスが許容され、仮想テープライブラリ装置１００の運用が再開される。Ｓ１１８の処理が完了すると、図１１に示した一連の処理は終了する。
【０１０８】
（エージェントが実行する処理の流れ）
ここで、図１２及び図１３を参照しながら、エージェントが実行する処理（Ｓ１１２の処理に対応）の流れについて説明する。
【０１０９】
図１２は、第２実施形態に係るエージェントが実行する処理の流れを示したシーケンス図である。図１３は、第２実施形態に係るエージェントが各段階で実行する処理の流れを示したフロー図である。なお、説明の都合上、ここでは、メインユニット１７１に対応するエージェントＡ１７１が実行する処理の流れについて説明する。但し、他のエージェントも更新処理を同様に実行する。
【０１１０】
まず、図１２を参照する。
（Ｓ１２１）エージェントＡ１７１は、メインユニット１７１に対して動作状態を確認するコマンドを送信する。例えば、エージェントＡ１７１は、メインユニット１７１との間のネットワークが正常に動作しているかを確認するコマンド（"ping"など）や、メインユニット１７１のシステム状態を参照するコマンド（"get unit status"など）を送信する。これらのコマンドを受信したメインユニット１７１は、そのコマンドに対する応答をエージェントＡ１７１に返す。
【０１１１】
（Ｓ１２２）メインユニット１７１の正常動作が確認できると、エージェントＡ１７１は、進行管理テーブル２０１ｂを参照し、メインユニット１７１について保守モード設定の処理を実行可能であるか否かを判断する（実行可否の判断）。実行可能と判断した場合、エージェントＡ１７１は、処理をＳ１２３へと進める。一方、現時点で実行不可と判断した場合、エージェントＡ１７１は、一定時間（例えば、１〜５秒）待機し、再び実行可否の判断を実施する。なお、実行可否の判断に関する処理については後述する。
【０１１２】
（Ｓ１２３）エージェントＡ１７１は、メインユニット１７１の動作モードを保守モード（メインユニット１７１における通常運用時の処理を禁止する動作モード）に設定するコマンドをメインユニット１７１に送信する。このコマンドを受信したメインユニット１７１は、動作モードを保守モードに切替え、保守モードへの切替えが完了したことを示す応答をエージェントＡ１７１に返す。
【０１１３】
メインユニット１７１から応答を受信したエージェントＡ１７１は、進行管理テーブル２０１ｂにある保守モード設定の項目について、エージェントＡ１７１に対応する「状態」欄にコード値９９を記録する。つまり、エージェントＡ１７１は、メインユニット１７１における保守モード設定の処理が終了したことを示す動作状態コードのコード値９９（図９を参照）を進行管理テーブル２０１ｂに記録する。
【０１１４】
（Ｓ１２４）エージェントＡ１７１は、進行管理テーブル２０１ｂを参照し、メインユニット１７１についてＦ／Ｗ取得の処理を実行可能であるか否かを判断する（実行可否の判断）。実行可能と判断した場合、エージェントＡ１７１は、処理をＳ１２５へと進める。一方、現時点で実行不可と判断した場合、エージェントＡ１７１は、一定時間（例えば、１〜５秒）待機し、再び実行可否の判断を実施する。なお、実行可否の判断に関する処理については後述する。
【０１１５】
（Ｓ１２５）エージェントＡ１７１は、エージェントＡ１７１からＦ／Ｗを受信可能な状態（受信モード）に制御するコマンドをメインユニット１７１に送信する。このコマンドを受信したメインユニット１７１は、受信モードへの切替えを実施し、受信モードへの切替えが完了したことを示す応答をエージェントＡ１７１に返す。
【０１１６】
（Ｓ１２６）Ｓ１２５でメインユニット１７１から応答を受けたエージェントＡ１７１は、メインユニット１７１のＦ／Ｗ更新用に事前処理部２０２が用意したＦ／Ｗをメインに送信する。このＦ／Ｗを受信したメインユニット１７１は、Ｆ／Ｗを正常に受信した旨を示す応答をエージェントＡ１７１に返す。
【０１１７】
メインユニット１７１から応答を受信したエージェントＡ１７１は、進行管理テーブル２０１ｂにあるＦ／Ｗ取得の項目について、エージェントＡ１７１に対応する「状態」欄にコード値９９を記録する。つまり、エージェントＡ１７１は、メインユニット１７１におけるＦ／Ｗ取得の処理が終了したことを示す動作状態コードのコード値９９（図９を参照）を進行管理テーブル２０１ｂに記録する。
【０１１８】
（Ｓ１２７）エージェントＡ１７１は、進行管理テーブル２０１ｂを参照し、メインユニット１７１についてＦ／Ｗ組込みの処理を実行可能であるか否かを判断する（実行可否の判断）。実行可能と判断した場合、エージェントＡ１７１は、処理をＳ１２８へと進める。一方、現時点で実行不可と判断した場合、エージェントＡ１７１は、一定時間（例えば、１〜５秒）待機し、再び実行可否の判断を実施する。なお、実行可否の判断に関する処理については後述する。
【０１１９】
（Ｓ１２８）エージェントＡ１７１は、Ｓ１２６でメインユニット１７１に送信したＦ／Ｗの組込みを実施するように制御するコマンドをメインユニット１７１に送信する。Ｆ／Ｗの組込みは、Ｆ／Ｗをメモリ１７１ｂに格納し、起動時にメモリ１７１ｂからＦ／Ｗを読み込む状態に設定する処理である。このコマンドを受信したメインユニット１７１は、Ｓ１２６でメインユニット１７１から受信したＦ／Ｗの組込みを実施し、Ｆ／Ｗの組込みが完了したことを示す応答をエージェントＡ１７１に返す。
【０１２０】
メインユニット１７１から応答を受信したエージェントＡ１７１は、進行管理テーブル２０１ｂにあるＦ／Ｗ組込みの項目について、エージェントＡ１７１に対応する「状態」欄にコード値９９を記録する。つまり、エージェントＡ１７１は、メインユニット１７１におけるＦ／Ｗ組込みの処理が終了したことを示す動作状態コードのコード値９９（図９を参照）を進行管理テーブル２０１ｂに記録する。
【０１２１】
（Ｓ１２９）エージェントＡ１７１は、進行管理テーブル２０１ｂを参照し、メインユニット１７１について再起動の処理を実行可能であるか否かを判断する（実行可否の判断）。実行可能と判断した場合、エージェントＡ１７１は、処理をＳ１３０へと進める。一方、現時点で実行不可と判断した場合、エージェントＡ１７１は、一定時間（例えば、１〜５秒）待機し、再び実行可否の判断を実施する。なお、実行可否の判断に関する処理については後述する。
【０１２２】
（Ｓ１３０）エージェントＡ１７１は、再起動を実施するように制御するコマンド（"reboot"など）をメインユニット１７１に送信する（再起動指示）。このコマンドを受信したメインユニット１７１は、再起動を実施し、メモリ１７１ｂからＦ／Ｗを読み込んで起動した後、再起動が完了したことを示す応答をエージェントＡ１７１に返す。
【０１２３】
メインユニット１７１から応答を受信したエージェントＡ１７１は、進行管理テーブル２０１ｂにある再起動の項目について、エージェントＡ１７１に対応する「状態」欄にコード値９９を記録する。つまり、エージェントＡ１７１は、メインユニット１７１における再起動の処理が終了したことを示す動作状態コードのコード値９９（図９を参照）を進行管理テーブル２０１ｂに記録する。
【０１２４】
（Ｓ１３１）エージェントＡ１７１は、進行管理テーブル２０１ｂを参照し、メインユニット１７１について保守モード解除の処理を実行可能であるか否かを判断する（実行可否の判断）。実行可能と判断した場合、エージェントＡ１７１は、処理をＳ１３２へと進める。一方、現時点で実行不可と判断した場合、エージェントＡ１７１は、一定時間（例えば、１〜５秒）待機し、再び実行可否の判断を実施する。なお、実行可否の判断に関する処理については後述する。
【０１２５】
（Ｓ１３２）エージェントＡ１７１は、メインユニット１７１の動作モードを保守モードから通常の動作モード（メインユニット１７１における通常運用時の処理を許容する動作モード）に設定するコマンドをメインユニット１７１に送信する。このコマンドを受信したメインユニット１７１は、動作モードを保守モードから通常の動作モードに切替え、保守モードの解除が完了したことを示す応答をエージェントＡ１７１に返す。
【０１２６】
メインユニット１７１から応答を受信したエージェントＡ１７１は、進行管理テーブル２０１ｂにある保守モード解除の項目について、エージェントＡ１７１に対応する「状態」欄にコード値９９を記録する。つまり、エージェントＡ１７１は、メインユニット１７１における保守モード解除の処理が終了したことを示す動作状態コードのコード値９９（図９を参照）を進行管理テーブル２０１ｂに記録する。
【０１２７】
Ｓ１３２の処理が完了すると、図１２に示した一連の処理は終了する。
次に、図１３を参照し、実行可否の判断に関する処理（Ｓ１２２、Ｓ１２４、Ｓ１２７、Ｓ１２９、Ｓ１３１の処理に対応）について説明する。
【０１２８】
（Ｓ１４１）エージェントＡ１７１は、現段階の処理順序を規定する項目（該当項目）の「順位」欄にあるコード値を「状態」欄にコピーする。なお、該当項目は、Ｓ１２２の処理では「保守モード設定」、Ｓ１２４の処理では「Ｆ／Ｗ取得」、Ｓ１２７の処理では「Ｆ／Ｗ組込み」、Ｓ１２９の処理では「再起動」、Ｓ１３１の処理では「保守モード解除」となる。
【０１２９】
（Ｓ１４２）エージェントＡ１７１は、該当項目について、他のエージェント（エージェントＡ１８１、Ａ１８２）に対応する「状態」欄のコード値を参照し、コード値０に対応するエージェントを検索する。
【０１３０】
（Ｓ１４３）コード値０のエージェントがある場合、処理はＳ１４４へと進む。一方、コード値０のエージェントがない場合、処理はＳ１４５へと進む。
（Ｓ１４４）エージェントＡ１７１は、コード値０のエージェントについては該当項目の「順位」欄にあるコード値を参照する。つまり、該当項目に対応する処理の実行可否を判断するに際し、エージェントＡ１７１は、「状態」欄のコード値が０のエージェントについては「順位」欄のコード値を判断の基準に利用する。
【０１３１】
図９に示したように、コード値０は先行条件なく無条件で該当処理を実行することを意味する。つまり、コード値０のエージェントは、他のエージェントが同じ項目の処理を実行中でも無条件に処理を実行できる。言い換えると、コード値０のエージェントは該当項目について他のエージェントとの関連性がない（処理の実行順序に制限がない）。そのため、他のエージェントも該当処理の実行可否を判断する際にコード値０のエージェントを考慮せずとも正常に処理を実行することができる。そこで、エージェントＡ１７１は、コード値０のエージェントについて「順位」欄のコード値を参照する。
【０１３２】
（Ｓ１４５）エージェントＡ１７１は、自身（エージェントＡ１７１）に対応する該当項目の「状態」欄にあるコード値よりもコード値が小さい他のエージェントがあるか否かを判定する。つまり、エージェントＡ１７１は、自身に先行して該当項目の処理を実行するように処理順序が規定されている他のエージェントがあるか否かを判定する。
【０１３３】
エージェントＡ１７１のコード値よりもコード値が小さい他のエージェントがある場合、処理はＳ１４６へと進む。エージェントＡ１７１のコード値よりもコード値が小さい他のエージェントがない場合、処理はＳ１４７へと進む。なお、同じコード値に対応する他のエージェントがある場合も、処理はＳ１４７へと進む。
【０１３４】
（Ｓ１４６）エージェントＡ１７１は、一定時間（例えば、１〜５秒）待機する。Ｓ１４６の処理が完了すると、処理はＳ１４２へと進む。
（Ｓ１４７）エージェントＡ１７１は、現段階の処理（該当項目の処理）を実行する。例えば、Ｓ１２２の処理では「保守モード設定」の処理、Ｓ１２４の処理では「Ｆ／Ｗ取得」の処理、Ｓ１２７の処理では「Ｆ／Ｗ組込み」の処理、Ｓ１２９の処理では「再起動」の処理、Ｓ１３１の処理では「保守モード解除」の処理が実行される。
【０１３５】
（Ｓ１４８）エージェントＡ１７１は、該当項目の「状態」欄にあるコード値を９９に設定する。つまり、エージェントＡ１７１は、該当項目の処理が完了したことを示す動作状態コードを進行管理テーブル２０１ｂに記録する。Ｓ１４８の処理が完了すると、図１３に示した一連の処理は終了する。
【０１３６】
以上、更新処理の流れについて説明した。
（更新処理の進行過程）
ここで、図１４を参照しながら、更新処理の進行過程について説明する。図１４は、第２実施形態に係る更新処理の進行過程の一例を示した図である。
【０１３７】
図１４の例は、エージェントＡ１７１、Ａ１８１、Ａ１８２が「保守モード設定」（Ｐ１）、「Ｆ／Ｗ取得」（Ｐ２）、「Ｆ／Ｗ組込み」（Ｐ３）、「再起動」（Ｐ４）、「保守モード解除」（Ｐ５）の処理順序を制御する様子を示している。
【０１３８】
上述した進行管理テーブル２０１ｂを利用することで、図１４に示すように、エージェントＡ１７１、Ａ１８１、Ａ１８２は、並行して進められる処理を並行に進め、処理の先後関係がある処理は順序を守って処理を進めることができる。そのため、エージェントＡ１７１、Ａ１８１、Ａ１８２の間における処理の先後を考慮しながら、Ｐ１からＰ５までの処理を効率的に進めることが可能になる。
【０１３９】
例えば、コンポーネント１０７とコンポーネント１０８との間では処理の先後が規定されているが、コンポーネント１０８に含まれるメインユニット１８１とサブユニット１８２との間では処理を並行に実行できるとする。この場合、２桁のコード値で管理される進行管理テーブル２０１ｂを利用することで、エージェントＡ１７１における処理と、エージェントＡ１８１、Ａ１８２のグループにおける処理との間のタイミング制御を容易に実現することができる。
【０１４０】
［２−４．変形例］
これまでは、説明の都合上、コンポーネントモデルを利用して全てのコンポーネントのＦ／Ｗを一斉に更新する仕組みについて説明してきた。但し、第２実施形態の技術は、Ｆ／Ｗの対象となるコンポーネントの一部を先に更新し、所定の時間後に残りのコンポーネントを更新するような時間差制御を実施するシステムにも適用可能である。
【０１４１】
例えば、バックエンドのテープライブラリ１０３が担う役割の１つは、ＴＶＣとして機能する記憶装置１０２の空き領域が不足しそうなタイミングでデータをバックアップすることにある。また、テープライブラリ１０３は、バックアップのために大容量の可搬記憶媒体であるテープ１３２ａ、１３２ｂにデータを移動する役割も担う。
【０１４２】
こうした役割を考慮すると、ホストコンピュータ３００から依頼されるアクセス要求に対しての即応性が低いテープライブラリ１０３についてはＦ／Ｗの更新タイミングに時間差を設けることが可能である。例えば、テープライブラリ１０３の更新処理を先に実施し、その間に生じたアクセス要求については記憶装置１０２で対応し、その更新処理が完了したタイミングで記憶装置１０２のＦ／Ｗを更新する仕組みなども実現可能である。
【０１４３】
上記のように、コンポーネントやユニットの役割に応じて更新処理のタイミングをずらすことで、一部のコンポーネントやユニットによる運用の継続が可能になり、Ｆ／Ｗの更新に伴う運用の停止時間を短縮することが可能になる。
【０１４４】
なお、テープライブラリ１０３の更新タイミングに時間差を設ける場合、テープライブラリ１０３を制御する仮想テープ制御装置１０１内のハードウェア要素もテープライブラリ１０３と同じ更新タイミングに設定することができる。更新タイミングをずらす場合、運用を継続するユニットについては進行管理テーブル２０１ｂの該当欄にコード値９９を記録しておき、Ｆ／Ｗを更新するユニットについて更新処理部２０３が上述した更新処理を実行する。このように、進行管理テーブル２０１ｂを利用することで、細かく更新タイミングを制御する操作が容易になるという利点もある。
【０１４５】
以上、第２実施形態について説明した。
【符号の説明】
【０１４６】
１０  更新制御装置
１１  記憶部
１１ａ  更新情報
１２  制御部
２１、２２、２３  処理部
２１ａ、２２ａ、２３ａ  格納領域
ＦＷ＃１１、ＦＷ＃１２、ＦＷ＃１３  制御プログラム
【図１】
2018025995.tif 000003
【図２】
2018025995.tif 000004
【図３】
2018025995.tif 000005
【図４】
2018025995.tif 000006
【図５】
2018025995.tif 000007
【図６】
2018025995.tif 000008
【図７】
2018025995.tif 000009
【図８】
2018025995.tif 000010
【図９】
2018025995.tif 000011
【図１０】
2018025995.tif 000012
【図１１】
2018025995.tif 000013
【図１２】
2018025995.tif 000014
【図１３】
2018025995.tif 000015
【図１４】
2018025995.tif 000016