(57)【要約】【課題】ストレージ装置が有する複数のディスク装置の各々でそれぞれ実行されるディスク装置用の制御プログラムを、ディスク制御装置用の制御プログラムを複雑にすることなく安全に更新できるようにする。【解決手段】ディスク制御装置１１内のＣＰＵ２３は、例えばホスト計算機１３から転送された更新用のＨＤＤファームウェアがホストＩ／Ｆ２０で受信されて、プログラムメモリ２５のバッファ領域に格納されると、当該ファームウェアに付されている更新対象ディスク装置情報に従って、ファームウェア更新の対象となるＨＤＤを特定し、そのＨＤＤのファームウェア保存領域２６に更新用のＨＤＤファームウェアを保存する。ＣＰＵ２３は、次にＨＤＤを起動する処理の中で、当該ＨＤＤのファームウェア保存領域２６に保存された更新用のＨＤＤファームウェアを用いて、当該ＨＤＤのファームウェアを更新する。【選択図】    図１
2004287979.tif 000002
【特許請求の範囲】
【請求項１】
ディスク装置用制御プログラムに従って動作する複数のディスク装置を備え、当該ディスク装置には当該ディスク装置用制御プログラムの更新に用いられる更新用制御プログラムを保存するための更新用制御プログラム保存領域が確保されているストレージ装置に適用されて、前記複数のディスク装置を制御するディスク制御装置であって、
外部装置から転送された、ディスク装置用制御プログラムの更新の対象となるディスク装置が識別可能な更新対象ディスク装置情報を含むヘッダ情報が付加された更新用制御プログラムの受信時に、少なくとも前記更新対象ディスク装置情報に基づいて、前記複数のディスク装置のうちの更新対象となるディスク装置を決定する手段と、
前記決定手段により決定されたディスク装置の前記更新用制御プログラム保存領域に、前記受信された更新用制御プログラムを保存する手段と、
前記ディスク装置の起動時に、当該ディスク装置上で動作するディスク装置用制御プログラムの更新に用いられるべき更新用制御プログラムが当該ディスク装置の前記更新用制御プログラム保存領域に保存されていることを判別する手段と、
前記判別手段の判別結果に応じ、前記ディスク装置の前記更新用制御プログラム保存領域に保存されている更新用制御プログラムにより、当該ディスク装置で動作するディスク装置用制御プログラムを更新する手段と
を具備することを特徴とするディスク制御装置。
【請求項２】
前記更新手段は、前記判別手段の判別結果に応じ、前記ディスク装置の前記更新用制御プログラム保存領域に保存されている更新用制御プログラムを読み出す手段と、前記読み出し手段により前記ディスク装置の前記更新用制御プログラム保存領域から読み出された更新用制御プログラムを当該ディスク装置にダウンロードすることにより、当該ディスク装置で動作するディスク装置用制御プログラムを更新する手段とを含むことを特徴とする請求項１記載のディスク制御装置。
【請求項３】
前記保存手段は、前記ディスク装置の前記更新用制御プログラム保存領域に前記更新用制御プログラムを保存する際、当該ディスク装置で動作するディスク装置用制御プログラムを当該保存される更新用制御プログラムにより更新すべきことを示す「更新あり」指定状態のフラグ情報を当該更新用制御プログラム保存領域に保存し、
前記判別手段は、前記ディスク装置の起動時に、当該ディスク装置の前記更新用制御プログラム保存領域に前記「更新あり」指定状態のフラグ情報が保存されているか否かにより、当該ディスク装置上で動作するディスク装置用制御プログラムの更新に用いられるべき更新用制御プログラムが当該更新用制御プログラム保存領域に保存されているか否かを判別する
ことを特徴とする請求項１記載のディスク制御装置。
【請求項４】
前記更新手段によるディスク装置用制御プログラムの更新に応じて、対応する前記ディスク装置の前記更新用制御プログラム保存領域に保存されている前記フラグ情報の状態を、当該保存領域に保存されている更新更新用制御プログラムによる更新が不要なことを示す「更新なし」指定状態に変更する手段を更に具備することを特徴とする請求項３記載のディスク制御装置。
【請求項５】
前記更新対象ディスク装置情報は、前記複数のディスク装置のうち、当該更新対象ディスク装置情報を含むヘッダ情報が付加された更新用制御プログラムによる更新対象の候補となるディスク装置の識別情報のリストを含み、
前記決定手段は、少なくとも前記ディスク装置識別情報リストに従って更新対象となるディスク装置を決定する
ことを特徴とする請求項３記載のディスク制御装置。
【請求項６】
前記各ディスク装置には、複数の前記更新用制御プログラム保存領域が確保され、
前記ディスク装置識別情報リストは、ディスク装置識別情報と対をなし、当該ディスク装置識別情報で指定されるディスク装置の前記複数の更新用制御プログラム保存領域のうち更新用制御プログラムの保存先となる更新用制御プログラム保存領域を指定するための領域識別情報を含み、
前記保存手段は、前記決定手段により決定されたディスク装置の前記複数の更新用制御プログラム保存領域のうち、前記ディスク装置識別情報リスト中の当該ディスク装置を示すディスク装置識別情報と対をなす領域識別情報の示す更新用制御プログラム保存領域に、前記更新用制御プログラムを保存する
ことを特徴とする請求項３記載のディスク制御装置。
【請求項７】
前記決定手段は、前記外部装置から転送された、前記ディスク装置識別情報リストが付加されたプログラム切り替えコマンドの受信時に、当該コマンドに付加されている前記ディスク装置識別情報リストに従ってディスク装置用制御プログラムの切り替えの対象となるディスク装置を決定し、
前記保存手段は、プログラム切り替えコマンドの受信時には、前記決定手段により決定されたディスク装置の前記複数の更新用制御プログラム保存領域のうち、前記ディスク装置識別情報リスト中の当該ディスク装置を示すディスク装置識別情報と対をなす領域識別情報の示す更新用制御プログラム保存領域に保存されている前記フラグ情報の状態を前記「更新あり」指定状態に変更する
ことを特徴とする請求項６記載のディスク制御装置。
【請求項８】
前記更新対象ディスク装置情報は、当該更新対象ディスク装置情報を含むヘッダ情報が付加された更新用制御プログラムによる更新対象の候補となるディスク装置のタイプを示すディスク装置タイプ情報を含み、
前記決定手段は、少なくとも前記ディスク装置タイプ情報に従って更新対象となるディスク装置を決定する
ことを特徴とする請求項３記載のディスク制御装置。
【請求項９】
前記ディスク装置用制御プログラム及び前記更新用制御プログラムは当該プログラムのレビジョンを示すレビジョン情報を含み、前記更新用制御プログラムに付加される前記ヘッダ情報は、当該更新用制御プログラムのレビジョンを示すレビジョン情報を含み、
前記決定手段は、前記更新用制御プログラムの受信時に、当該プログラムに付加されている前記ヘッダ情報中の前記更新対象ディスク装置情報に基づいて、前記複数のディスク装置のうちの更新対象の候補となるディスク装置を決定する第１の決定手段と、前記第１の決定手段により更新対象の候補として決定されたディスク装置上で動作する現在のディスク装置用制御プログラムのレビジョンと前記ヘッダ情報中のレビジョン情報の示すレビジョンとを比較し、その比較結果に応じて、当該更新対象の候補として決定されたディスク装置を更新対象として決定する第２の決定手段とを含む
ことを特徴とする請求項１記載のディスク制御装置。
【請求項１０】
ディスク装置用制御プログラムに従って動作する複数のディスク装置を備え、当該ディスク装置には当該ディスク装置用制御プログラムの更新に用いられる更新用制御プログラムを保存するための更新用制御プログラム保存領域が確保されているストレージ装置に適用されるディスク装置用制御プログラムの更新方法であって、
外部装置から転送された、ディスク装置用制御プログラムの更新の対象となるディスク装置が識別可能な更新対象ディスク装置情報を含むヘッダ情報が付加された更新用制御プログラムの受信時に、少なくとも前記更新対象ディスク装置情報に基づいて、前記複数のディスク装置のうちの更新対象となるディスク装置を決定するステップと、
前記決定されたディスク装置の前記更新用制御プログラム保存領域に、前記受信された更新用制御プログラムを保存するステップと、
前記ディスク装置の起動時に、当該ディスク装置上で動作するディスク装置用の制御プログラムの更新に用いられるべき更新用制御プログラムが当該ディスク装置の前記更新用制御プログラム保存領域に保存されているか否かを判別するステップと、
前記判別結果に応じ、前記ディスク装置の前記更新用制御プログラム保存領域に保存されている更新用制御プログラムにより、当該ディスク装置で動作するディスク装置用制御プログラムを更新するステップと
を具備することを特徴とするディスク装置用制御プログラムの更新方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のディスク装置を備えたストレージ装置において当該複数のディスク装置を制御するディスク制御装置に係り、特に各ディスク装置でそれぞれ実行されるディスク装置用制御プログラムを更新するのに好適なディスク制御装置及びディスク装置用制御プログラムの更新方法に関する。
【０００２】
【従来の技術】
近年、計算機システムでは、当該システムの外部記憶装置として、複数のディスク装置を備えた、ディスクアレイ装置に代表される大容量のストレージ装置が用いられることが多くなっている。このストレージ装置内の各ディスク装置には、一般にハードディスクドライブ（以下、ＨＤＤと称する）が用いられる。各ＨＤＤは、それぞれＨＤＤ用の制御プログラム（ＨＤＤファームウェア）に従って動作する。また、ストレージ装置内の複数のＨＤＤの各々は、当該ストレージ装置を外部記憶装置として利用するホスト計算機からは個々に認識されず、当該複数のＨＤＤ全体が例えば１つのディスク（論理ディスク）として認識される。
【０００３】
従来、ストレージ装置内の各ＨＤＤでそれぞれ実行されるＨＤＤ用制御プログラムを更新する方法として、以下に述べる２つの方法のいずれかが適用されるのが一般的である。
【０００４】
第１の更新方法では、まず、ストレージ装置内の各ＨＤＤが、当該ストレージ装置から１台ずつ取り外される。取り外されたＨＤＤは専用の治具に接続される。この状態で、プログラム更新の対象となるＨＤＤが有するプログラム（ファームウェア）更新手段が起動される。するとプログラム更新手段は、更新用の制御プログラムを対象となるＨＤＤへ適用し、現在のＨＤＤ用制御プログラム（ファームウェア）を新ＨＤＤ用制御プログラム（新ファームウェア）に更新する。この第１の更新方法は最も汎用的な方法であり、複数のＨＤＤを含むストレージ装置に特殊な仕組みを加える必要はない。しかし、この第１の更新方法では、１台ずつＨＤＤの取り外しを行う手間（作業時間が長時間化）や、ＨＤＤの抜き差しに起因する嵌合不良や実装位置の間違いなど、作業ミスを誘発する危険が大きい。
【０００５】
次に、第２の更新方法は、ストレージ装置が稼動している状態で、プログラム更新の対象となるＨＤＤを含む論理ディスクを一時的にオフラインとすることにより、当該論理ディスクに外部（ホスト計算機など）からアクセスできない状態に設定する。この状態では、プログラム更新の対象となるＨＤＤに外部からアクセスできない。そこで、この状態で、更新の対象となるＨＤＤ用制御プログラムを更新する。この第２の更新方法は、ストレージ装置の部分的な停止のみでＨＤＤ用制御プログラムを更新できる点で優れている。しかし、この第２の更新方法を実現するためには、以下に述べるように、ディスク制御装置の動作に必要なプログラム（ディスク制御装置用制御プログラム）などに相当量の処理の作りこみが必要となる。まず、ＨＤＤが有するプログラム（ファームウェア）更新手段では、ＨＤＤの一時的な停止（モータ停止）を含む更新処理に数十秒以上を要する。このため、例えばＨＤＤへのホスト計算機からのアクセス以外に、内部的なパトロール処理など、全てのアクセスを抑止する特別な仕組みを作り込む必要がある。したがって、ディスク制御装置用制御プログラムが非常に複雑となる。また、ＨＤＤが有するプログラム更新手段の処理手順は、当該ＨＤＤのメーカ或いは製品により異なっていることが多く、必要な処理時間も異なる。このことが、更にディスク制御装置用制御プログラムを複雑にする。
【０００６】
一方、ディスク制御装置（ディスクアレイ制御装置）用制御プログラムを、ディスクアレイ内の１つのＨＤＤの所定領域に格納しておき、装置の電源投入時に、当該所定領域から制御プログラムを読み出して、ディスク制御装置（ディスクアレイ制御装置）のメインメモリをなすＲＡＭにロードすることにより、当該制御プログラムの実行を可能とするディスクアレイ装置が知られている（例えば、特許文献１参照）。このディスクアレイ装置においては、外部接続ポートを介して接続された外部装置から更新用の制御プログラムを受け取って、当該プログラムを上記所定領域に書き込んでおくことにより、次に当該ディスクアレイ装置の電源が投入された際に、ディスク制御装置用の制御プログラムを更新する技術が適用される。この特許文献１に記載されたプログラム更新方法においては、ディスク制御装置用の制御プログラムを、ディスクアレイ装置を停止させることなく当該装置の電源投入時に自動的に更新できる。
【０００７】
【特許文献１】
特開平９−１０１８８７号公報（段落００２２〜００２４，段落００４１〜００４５、図１、図２）
【０００８】
【発明が解決しようとする課題】
上記したように、複数のＨＤＤ（ディスク装置）を備えた従来のストレージ装置において、各ＨＤＤでそれぞれ実行されるＨＤＤ用制御プログラムを更新する方法として、第１及び第２の更新方法が知られている。しかし、第１の更新方法は、ストレージ装置に特殊な仕組みを加える必要はないものの、作業ミスを誘発する危険が大きいという問題がある。一方、第２の更新方法は、ストレージ装置の部分的な停止のみでＨＤＤ用制御プログラムを更新できる点で優れているものの、ディスク制御装置用プログラムが非常に複雑となるという問題がある。
【０００９】
一方、特許文献１に記載された、ディスク制御装置用制御プログラムの更新方法によれば、ディスク制御装置用制御プログラムを、ディスクアレイ装置を停止させることなく更新することができる。そこで、特許文献１に記載されたプログラム更新方法をディスク装置用制御プログラム（ＨＤＤ用制御プログラム）の更新に適用することが考えられる。しかし、ディスク装置（ＨＤＤ）が有するプログラム更新手段の処理手順は、当該ディスク装置のメーカ或いは製品により異なっていることが多く、必要な処理時間も異なることから、上記第２の更新方法と同様に、ディスク制御装置用制御プログラムが複雑となる。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、ストレージ装置が有する複数のディスク装置の各々でそれぞれ実行されるディスク装置用の制御プログラムを更新するための処理手順または処理時間が異なっていても、当該ディスク装置用の制御プログラムを、ディスク制御装置用の制御プログラムを複雑にすることなく安全に更新できる、ディスク制御装置及びディスク装置用制御プログラムの更新方法を提供することにある。
【００１１】
【課題を解決するための手段】
本発明の１つの観点によれば、ディスク装置用制御プログラムに従って動作する複数のディスク装置を備え、当該ディスク装置には当該ディスク装置用制御プログラムの更新に用いられる更新用制御プログラムを保存するための更新用制御プログラム保存領域が確保されているストレージ装置に適用されて、上記複数のディスク装置を制御するディスク制御装置が提供される。このディスク制御装置は、外部装置から転送された、ディスク装置用制御プログラムの更新の対象となるディスク装置が識別可能な更新対象ディスク装置情報を含むヘッダ情報が付加された更新用制御プログラムの受信時に、少なくとも上記更新対象ディスク装置情報に基づいて、上記複数のディスク装置のうちの更新対象となるディスク装置を決定する手段と、この決定手段により決定されたディスク装置の更新用制御プログラム保存領域に、上記受信された更新用制御プログラムを保存する手段と、上記ディスク装置の起動時に、当該ディスク装置上で動作するディスク装置用の制御プログラムの更新に用いられるべき更新用制御プログラムが当該ディスク装置の更新用制御プログラム保存領域に保存されていることを判別する手段と、この判別手段の判別結果に応じ、上記ディスク装置の更新用制御プログラム保存領域に保存されている更新用制御プログラムにより、当該ディスク装置で動作するディスク装置用制御プログラムを更新する手段とを備えたことを特徴とする。
【００１２】
上記構成のディスク制御装置においては、外部装置（例えば、ホスト計算機、或いは保守端末）から受信した更新用制御プログラムが、当該プログラムに付加されているヘッダ情報中の更新対象ディスク装置情報に基づいて決定される更新の対象となるディスク装置の更新用制御プログラム保存領域に一時的に保存される。そして上記構成のディスク制御装置においては、次にストレージ装置全体または当該ストレージ装置内の各ディスク装置が起動される際に、当該ディスク装置上で動作するディスク装置用制御プログラムの更新に用いられるべき更新用制御プログラムが当該ディスク装置の更新用制御プログラム保存領域に保存されているならば、その更新用制御プログラムを用いて、ディスク装置で動作するディスク装置用制御プログラムが更新される。
【００１３】
このように上記構成のディスク制御装置においては、ストレージ装置の各ディスク装置を起動する起動処理の中でディスク装置用制御プログラムが更新されるため、当該ストレージ装置のオンライン状態におけるディスク装置用制御プログラムの更新と比べ安全に且つ簡単に行うことができる。しかも上記構成のディスク制御装置においては、ディスク装置の更新用制御プログラム保存領域に更新用制御プログラムを保存しておくだけで、あとはシステムの都合に合わせてストレージ装置を改めて起動した際に自動的に制御プログラムの更新が行われる。このため、特別なシステムオペレーションなどの作業を必要としない。
【００１４】
また、上記構成のディスク制御装置においては、当該ディスク制御装置で受信された更新用制御プログラムが適用可能なディスク装置が、当該更新用制御プログラムに付されている更新対象ディスク装置情報に従って精度良く特定される。このため、ストレージ装置内の複数のディスク装置が必ずしも同一メーカ製の同一製品型番のディスク装置でなくても、更新対象ディスク装置情報に従って特定されたディスク装置を対象に当該ディスク装置の制御プログラムを確実に更新できる。
【００１５】
ここで、上記保存手段が、ディスク装置の更新用制御プログラム保存領域に更新用制御プログラムを保存する際に、当該ディスク装置で動作するディスク装置用制御プログラムを当該保存される更新用制御プログラムにより更新すべきことを示す「更新あり」指定状態のフラグ情報を当該更新用制御プログラム保存領域に保存する構成とするならば、上記判別手段は、ディスク装置の起動時に、当該ディスク装置の更新用制御プログラム保存領域に上記「更新あり」指定状態のフラグ情報が保存されているか否かにより、当該ディスク装置上で動作するディスク装置用の制御プログラムの更新に用いられるべき更新用制御プログラムが当該更新用制御プログラム保存領域に保存されているか否かを簡単に判別できる。また、上記更新手段によるディスク装置用制御プログラムの更新に応じて、対応するディスク装置の更新用制御プログラム保存領域に保存されているフラグ情報の状態を、当該保存領域に保存されている更新用制御プログラムによる更新が不要なことを示す「更新なし」指定状態に変更する構成とするならば、不要なプログラム更新処理が発生するのを防止できる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。図１は本発明の一実施形態に係るストレージ装置１０の構成を示すブロック図である。図１のストレージ装置１０は、主として、ディスク制御装置１１と、複数のディスク装置、例えばｎ台のＨＤＤ（ハードディスクドライブ）１２−１〜１２−ｎとから構成される。ディスク制御装置１１は、ストレージ装置１０を利用するホスト計算機１３からの指示（例えば、ホスト計算機１３上のファイルシステムからのデータ読み出し／書き込みの指示）に応じて各ＨＤＤ１２−１〜１２−ｎを制御することにより、当該ＨＤＤに対するデータの読み出し／書き込み及びホスト計算機１３との間のデータ送受信を行う。ＨＤＤ１２−１〜１２−ｎには、当該ＨＤＤの識別情報としてのＨＤＤ番号＃１〜＃ｎが割り当てられている。
【００１７】
ディスク制御装置１１は、ホスト計算機１３の他に、保守コンソール１４と接続されている。保守コンソール１４は、ディスク制御装置１１の状態監視、及び当該ディスク制御装置１１への各種の設定操作を含む保守作業に用いられる端末（保守端末）である。
【００１８】
ディスク制御装置１１は、ホストインタフェース制御回路（以下、ホストＩ／Ｆと称する）２０と、ＨＤＤインタフェース制御回路（以下、ＨＤＤ  Ｉ／Ｆと称する）２１と、保守用コンソールインタフェース制御回路（以下、コンソールＩ／Ｆと称する）２２と、ＣＰＵ２３と、バッファメモリ２４と、プログラムメモリ２５とを備えている。ホストＩ／Ｆ２０は、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）またはファイバチャネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）に代表されるホスト計算機接続用インタフェースの制御回路である。ＨＤＤ  Ｉ／Ｆ２１は、ＳＣＳＩまたはファイバチャネルに代表されるＨＤＤ接続用インタフェースの制御回路である。コンソールＩ／Ｆ２２は、ＲＳ２３２ＣまたはＬＡＮに代表される保守コンソール接続用インタフェースの制御回路である。
【００１９】
ＣＰＵ２３は、プログラムメモリ２５に格納されたディスク制御装置用のプログラムコードに従い、ディスク制御装置１１における各種処理動作を実行する。バッファメモリ２４は、ホスト計算機１３から指定された読み書きデータを一時的に保持するのに用いられる。プログラムメモリ２５は、ディスク制御装置１１の各種処理動作に関するプログラム（ディスク制御装置用プログラム）を格納するのに用いられる。プログラムメモリ２５の一部領域は、ＣＰＵ２３が動作する上で使用するワーク領域に割り当てられる。本実施形態において、プログラムメモリ２５は、ホスト計算機１３または保守コンソール１４からＨＤＤ用制御プログラム（以下、ＨＤＤファームウェアと称する）のデータが転送された際に、当該ＨＤＤファームウェアのデータを一時的に保持するバッファとして使用される。なお、ＨＤＤファームウェアのデータを一時的に保持するバッファとして、プログラムメモリ２５に代えてバッファメモリ２４を使用することも可能である。
【００２０】
ＨＤＤ１２−ｉ（ｉ＝１〜ｎ）の記憶領域の一部は、ホスト計算機１３または保守コンソール１４から転送された当該ＨＤＤ１２用のファームウェア（ＨＤＤファームウェア）のデータを、そのファームウェアが当該ＨＤＤ１２に実際に適用されるまでの間保存しておくためのファームウェア保存領域２６として割り当てられる。このファームウェア保存領域２６はユーザ領域と区別して管理される。ＨＤＤ１２−ｉのユーザ領域は、当該ＨＤＤ１２−ｉの全領域から当該領域２６を除いた領域となる。
【００２１】
ディスク制御装置１１（内のホストＩ／Ｆ２０）は、ＳＣＳＩまたはファイバチャネルに代表されるホスト計算機接続用インタフェース３０を介してホスト計算機１３と接続されている。またディスク制御装置１１（内のＨＤＤ  Ｉ／Ｆ２１）は、ＳＣＳＩまたはファイバチャネルに代表されるＨＤＤ接続用インタフェース３１を介して各ＨＤＤ１２−１〜１２−ｎと接続されている。またディスク制御装置１１（内のホスト計算機１３）は、ＲＳ２３２ＣまたはＬＡＮに代表される保守コンソール接続用インタフェース３２を介して保守コンソール１４と接続されている。ディスク制御装置１１内のホストＩ／Ｆ２０、ＨＤＤ  Ｉ／Ｆ２１、コンソールＩ／Ｆ２２、ＣＰＵ２３、バッファメモリ２４及びプログラムメモリ２５は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｂｕｓ）またはＰＣＩ−Ｘに代表される内部バス３３により相互接続されている。
【００２２】
図２は、ホスト計算機１３または保守コンソール１４からディスク制御装置１１に転送されて当該ディスク制御装置１１で受信された更新用のＨＤＤファームウェアデータ４０のデータ構造の一例と、ＨＤＤ１２−ｉのファームウェア保存領域２６に一時的に保存される更新用のＨＤＤファームウェアデータ４１のデータ構造の一例とを対比して示す。
【００２３】
ＨＤＤファームウェアデータ４０は、図２（ａ）に示すように、ファームウェア本体４２とヘッダ情報４３とから構成される。ファームウェア本体４２は、ＨＤＤ１２−ｉで動作するファームウェア（ＨＤＤファームウェア）を更新するのに用いられる更新用のファームウェア（更新ファームウェア）を構成する。ヘッダ情報４３は、ファームウェア本体４２に付加された固定サイズの情報であり、ホスト計算機１３または保守コンソール１４からＨＤＤファームウェアデータ４０を受信した際にディスク制御装置１１で使用される。
【００２４】
ヘッダ情報４３は、ＨＤＤ番号４３１とＨＤＤタイプ情報４３２とレビジョン情報４３３とサイズ情報４３４を含む。ＨＤＤ番号リスト４３１は、対応するファームウェア本体４２が適用可能なＨＤＤ（更新対象ＨＤＤ）１２−ｉの識別情報としてのＨＤＤ番号（更新対象ＨＤＤ番号）のリストを示す更新対象ディスク装置情報である。ここで、「適用」とは、受信したファームウェア本体４２を一時的に対象ＨＤＤ１２−ｉのファームウェア保存領域２６に保存し、次のストレージ装置１０または当該ＨＤＤ１２−ｉの立ち上げ時にそのファームウェア本体４２をファームウェア保存領域２６から読み出して当該ＨＤＤ１２−ｉでの実行に供すること全体を示す。ＨＤＤタイプ情報４３２は、ファームウェア本体４２が適用可能なＨＤＤ１２−ｉのタイプを示し、対象ＨＤＤ１２−ｉのメーカ名及び製品コードを含む。
【００２５】
レビジョン情報４３３は、ファームウェア本体４２のレビジョンを示す。ファームウェア本体４２には、当該ファームウェア本体４２のレビジョンの情報が含まれている。しかし、ファームウェア本体４２中のレビジョン情報の位置は、当該ファームウェア本体が適用されるＨＤＤ（のメーカ、製品コード）などによって異なり、ディスク制御装置１１からは認識できない。そこで本実施形態では、ファームウェア本体４２のレビジョンをディスク制御装置１１から認識可能とするために、ファームウェア本体４２に付加される固定サイズのヘッダ情報４３中の所定位置に、当該ファームウェア本体４２に含まれている当該ファームウェア本体４２のレビジョンの情報がレビジョン情報４３３として設定される構成を適用している。サイズ情報４３４は、ファームウェア本体４２のサイズを例えばバイト数で示す。
【００２６】
一方、ＨＤＤファームウェアデータ４１は、図２（ｂ）に示すように、ファームウェア本体４２’とヘッダ情報４４とから構成される。ファームウェア本体４２’はＨＤＤファームウェアデータ４０中のファームウェア本体４２に一致する。ヘッダ情報４４は、ファームウェア本体４２’に付加された情報であり、ディスク制御装置１１で受信されたＨＤＤファームウェアデータ４０中のファームウェア本体４２をファームウェア本体４２’として対象ＨＤＤ１２−ｉのファームウェア保存領域２６に保存する際に生成されて使用される。ヘッダ情報４４は、ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているレビジョン情報４３３及びサイズ情報４３４に一致するレビジョン情報４３３’及びサイズ情報４３４’と、実行フラグ４４１とを含む。実行フラグ４４１は、次のストレージ装置１０またはＨＤＤ１２−ｉの立ち上げ時に、当該ＨＤＤ１２−ｉのファームウェア保存領域２６に保存されているファームウェア本体（更新用ファームウェア）４２’により、当該ＨＤＤ１２−ｉで実行されるＨＤＤファームウェアを更新するか否かを指示するのに用いられる。ここでは、実行フラグ４４１は、ＯＮで“ファームウェア更新あり”を、ＯＦＦで“ファームウェア更新なし”を示す。
【００２７】
次に、図１のストレージ装置１０の動作について、（１）ＨＤＤファームウェア受信時の処理、（２）ＨＤＤ起動処理を例に、順次説明する。
（１）ＨＤＤファームウェア受信時の処理
まず、ディスク制御装置１１におけるＨＤＤファームウェア受信時の処理について、図３のフローチャートを参照して説明する。今、ホスト計算機１３または保守コンソール１４からストレージ装置１０のディスク制御装置１１に対し、図２（ａ）に示すデータ構造の更新用のＨＤＤファームウェアデータ４０が転送（送信）され、当該ディスク制御装置１１内のホストＩ／Ｆ２０またはコンソールＩ／Ｆ２２で受信されたものとする。なお、ディスク制御装置１１に対してＨＤＤファームウェアデータ４０を転送する外部の装置は、ホスト計算機１３または保守コンソール１４に限らない。
【００２８】
ディスク制御装置１１内のコンソールＩ／Ｆ２２で受信されたＨＤＤファームウェアデータ４０は、ディスク制御装置１１内のプログラムメモリ２５のバッファ領域に保持される。すると、ディスク制御装置１１内のＣＰＵ２３は、プログラムメモリ２５に格納されているディスク制御装置用の制御プログラムに従ってＨＤＤファームウェア受信時の処理を開始し、まずＨＤＤ番号＃ｉを初期値１に設定する（ステップＳ１）。このＨＤＤ番号＃ｉは、ＨＤＤ接続用インタフェース３１を介してディスク制御装置１１と接続されているＨＤＤ１２〜１２−ｎの１つを指定する。次にＣＰＵ２３は、プログラムメモリ２５のバッファ領域に保持された受信ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているＨＤＤ番号リスト４３１を参照する（ステップＳ２）。そしてＣＰＵ２３は、ＨＤＤ番号＃ｉに一致するＨＤＤ番号がＨＤＤ番号リスト４３１に含まれているか否かを判定する（ステップＳ３）。
【００２９】
もし、ＨＤＤ番号＃ｉに一致するＨＤＤ番号がＨＤＤ番号リスト４３１に含まれているならば、ＣＰＵ２３は、当該ＨＤＤ番号＃ｉによって指定されるＨＤＤ１２−ｉが受信ＨＤＤファームウェアデータ４０に従うファームウェア更新の候補となるＨＤＤであると判断する。この場合、ＣＰＵ２３は、ＨＤＤ１２−ｉで現在動作中のＨＤＤファームウェアのレビジョン（現在のレビジョン）を確認する（ステップＳ４）。このレビジョン確認の方法については後述する。そしてＣＰＵ２３は、確認された現在のレビジョンが、受信ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているレビジョン情報４３３の示すレビジョンに一致するか否かを判定する（ステップＳ５）。
【００３０】
もし、上記両レビジョンが一致していないならば、ＣＰＵ２３は、プログラムメモリ２５のバッファ領域に保持されている受信ＨＤＤファームウェアデータ４０がＨＤＤ１２−ｉに適用可能であると判断する。この場合、ＣＰＵ２３は、受信ＨＤＤファームウェアデータ４０のファームウェア本体４２をファームウェア本体４２’として、ＨＤＤ１２−ｉのファームウェア保存領域２６に保存する（ステップＳ６）。またＣＰＵ２３は、“ファームウェア更新あり”指定状態（ＯＮ状態）に設定された実行フラグ４４１を含むヘッダ情報４４をファームウェア保存領域２６に保存して、当該ヘッダ情報４４をファームウェア本体４２’に付加する（ステップＳ７）。これにより、ファームウェア保存領域２６に、ヘッダ情報４４及びファームウェア本体４２’を含むＨＤＤファームウェアデータ４１が保存されたことになる。ここで、ヘッダ情報４４中のレビジョン情報４３３’及びサイズ情報４３４’には、プログラムメモリ２５のバッファ領域に保持された受信ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているレビジョン情報４３３及びサイズ情報４３４が用いられる。
【００３１】
次にＣＰＵ２３は、ＨＤＤ番号＃ｉが最終ＨＤＤ番号（ここではｎ）であるか否か、つまりＨＤＤ番号＃ｉはＨＤＤ１２−１〜１２−ｎのうちのＨＤＤ１２−ｎのＨＤＤ番号＝ｎを指定しているか否かを判定する（Ｓ８）。もし、ＨＤＤ番号＃ｉが最終ＨＤＤ番号でないならば、ＣＰＵ２３はＨＤＤ番号＃ｉを１インクリメントして（ステップＳ９）、ステップＳ２に戻る。
【００３２】
また、上記ステップＳ３でＨＤＤ番号＃ｉに一致するＨＤＤ番号がＨＤＤ番号リスト４３１に含まれていないと判定された場合、ＣＰＵ２３は、プログラムメモリ２５のバッファ領域に保持されている受信ＨＤＤファームウェアデータ４０（中のファームウェア本体４２）はＨＤＤ１２−ｉに適用できないと判断する。この場合、ＣＰＵ２３は上記ステップＳ８に進み、ＨＤＤ番号＃ｉが最終ＨＤＤ番号に一致しないならば、ＨＤＤ番号＃ｉを１インクリメントした後（ステップＳ９）、ステップＳ２に戻る。
【００３３】
また、上記ステップＳ５で上記両レビジョンが一致していると判定された場合にも、ＣＰＵ２３は、上記受信ＨＤＤファームウェアデータ４０はＨＤＤ１２−ｉに適用できないと判断する。この場合、ＣＰＵ２３は上記ステップＳ８に進み、ＨＤＤ番号＃ｉが最終ＨＤＤ番号に一致しないならば、ＨＤＤ番号＃ｉを１インクリメントした後（ステップＳ９）、ステップＳ２に戻る。
【００３４】
このようにして、上記ステップＳ２から始まる処理が、ＨＤＤ番号＃ｉが最終ＨＤＤ番号に一致するまで繰り返された後、上記ステップＳ８に進んだものとする。ここでは、ＨＤＤ番号＃ｉが最終ＨＤＤ番号であると判定される。この場合、ＣＰＵ２３はＨＤＤファームウェア受信時の処理を終了する。
【００３５】
このように本実施形態においては、ストレージ装置１０のディスク制御装置１１で更新用のＨＤＤファームウェアデータ４０を受信した際に、当該ＨＤＤファームウェアデータ４０のヘッダ情報４３に含まれているＨＤＤ番号リスト４３１に設定されたＨＤＤ番号で指定される全てのＨＤＤ１２−ｉについて、当該ＨＤＤファームウェアデータ４０中のファームウェア本体４２（更新用ファームウェア）の適用の可否がレビジョンの比較により判定される。そしてＨＤＤ１２−ｉへの更新用ファームウェアの適用の正当性が確認された場合に限り、ファームウェア本体４２をファームウェア本体４２’として含むＨＤＤファームウェアデータ４１が、当該ＨＤＤ１２−ｉのファームウェア保存領域２６に保存される。ここで、ＨＤＤファームウェアデータ４１のヘッダ情報４４中の実行フラグ４４１（即ちＨＤＤファームウェアデータ４１中のファームウェア本体４２’に付加されているヘッダ情報４４中の実行フラグ４４１）は、“ファームウェア更新あり”を示すＯＮ状態に設定される。
【００３６】
（２）ＨＤＤ起動処理
次に、ストレージ装置１０の立ち上げに伴ってＨＤＤ１２−１〜１２−ｎを起動するＨＤＤ起動処理について、図４のフローチャートを参照して説明する。まず、ストレージ装置１０の立ち上げ時には、ディスク制御装置１１内のＣＰＵ２３は、プログラムメモリ２５に格納されているディスク制御装置用の制御プログラムに従い、ＨＤＤ番号＃ｉを初期値１に設定する（ステップＳ１１）。
【００３７】
次にＣＰＵ２３は、ＨＤＤ番号＃ｉによって指定されるＨＤＤ１２−ｉを起動する（ステップＳ１２）。これにより、ＨＤＤ１２−ｉのモータ、即ちディスクを回転させるスピンドルモータが起動される。
【００３８】
次にＣＰＵ２３は、ＨＤＤ１２−ｉのファームウェア保存領域２６に保存されているＨＤＤファームウェアデータ４１のヘッダ情報４４を読み出す（ステップＳ１３）。そしてＣＰＵ２３は、ヘッダ情報４４中に“ファームウェア更新あり”を示す実行フラグ４４１が設定されているか否かを判定する（ステップＳ１４）。
【００３９】
もし、ＨＤＤファームウェアデータ４１のヘッダ情報４４中に“ファームウェア更新あり”を示す実行フラグ４４１が設定されているならば、ＣＰＵ２３は当該ヘッダ情報４４に含まれているサイズ情報４３４’により指定されるサイズ分（バイト数）のファームウェア本体４２’を、ＨＤＤ１２−ｉのファームウェア保存領域２６からプログラムメモリ２５のバッファ領域に読み出す（ステップＳ１５）。そしてＣＰＵ２３は、プログラムメモリ２５に読み出されたファームウェア本体４２’を、ＨＤＤ１２−ｉがファームウェアメモリとして有している、例えばフラッシュＲＯＭ（ＦＲＯＭ）に代表される書き換え可能な不揮発性メモリ（図示せず）にダウンロードして、当該不揮発性メモリ上のファームウェアを更新させる（ステップＳ１６）。このＨＤＤファームウェア更新処理は、ＨＤＤ１２−ｉが提供するファームウェア更新手順を用いて実現される。ここでは、ＳＣＳＩコマンドの１つである例えばＷＲＩＴＥ  ＢＵＦＦＥＲコマンドをＣＰＵ２３からＨＤＤ１２−ｉに発行することにより、当該ＨＤＤ１２−ｉでのファームウェア更新が行われる。
【００４０】
次にＣＰＵ２３は、更新されたＨＤＤ１２−ｉの不揮発性メモリ上のファームウェアのレビジョンを確認する（ステップＳ１７）。この確認動作は、ＣＰＵ２３からＨＤＤ１２−ｉに対して、ファームウェアのレビジョン確認のためのコマンドを発行することで実現される。次にＣＰＵ２３は、確認されたレビジョンが、ＨＤＤ１２−ｉのファームウェア保存領域２６に保存されているファームウェア本体４２’のレビジョン（即ち、ファームウェア本体４２’に付されているヘッダ情報４４中のレビジョン情報４３３’の示すレビジョン）に一致するか否かを判定する（ステップＳ１８）。
【００４１】
もし、レビジョンが一致していない場合、ＣＰＵ２３はステップＳ１６のＨＤＤファームウェアの更新に失敗したものと判断する。この場合、ＣＰＵ２３はステップＳ１６に戻って、ＨＤＤファームウェアの更新処理を再度実行（リトライ）する（ステップＳ１６）。図４のフローチャートでは省略されているが、このＨＤＤファームウェアの更新処理のリトライは、一定回数を上限に行われる。もし、一定回数のリトライを行ってもＨＤＤファームウェアの更新に成功しなかった場合、ＣＰＵ２３はＨＤＤ１２−ｉの故障であると判断し、当該ＨＤＤ１２−ｉの起動処理を異常終了させる。
【００４２】
一方、レビジョンが一致しているならば、ＣＰＵ２３はステップＳ１６のＨＤＤファームウェアの更新に成功したものと判断する。この場合、ＣＰＵ２３は、ＨＤＤ１２−ｉのファームウェア保存領域２６内のＨＤＤファームウェアデータ４１中のヘッダ情報４４に含まれている実行フラグ４４１の状態を“ファームウェア更新なし”指定状態（ＯＦＦ状態）に変更する（ステップＳ１９）。
【００４３】
上記実施形態では、ＨＤＤ１２−ｉでのファームウェアの更新（ダウンロード）に成功したか否かの判定に、更新されたファームウェアのレビジョンと、その更新に用いられたファームウェア本体４２’のレビジョン（ＨＤＤ１２−ｉのファームウェア保存領域２６に保存されているファームウェア本体４２’に付されているヘッダ情報４４中のレビジョン情報４３３’の示すレビジョン）との一致の有無が用いられている（ステップＳ１７，Ｓ１８）。しかし、ファームウェアの更新に成功したか否かの判定に、他の条件を適用することも可能である。例えば、ヘッダ情報４４（４３）中にファームウェア本体４２’（４２）のチェックサムを持たせ、更新後のチェックサムと当該ヘッダ情報４４中のチェックサムとの一致の有無を判定条件に適用することも可能である。
【００４４】
また、上記実施形態では、ストレージ装置１０のディスク制御装置１１で受信されたＨＤＤファームウェアデータ４０（中のファームウェア本体４２）が適用されるＨＤＤの候補が、当該ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているＨＤＤ番号リスト４３１によって、ＨＤＤ番号により指定される。しかし、ＨＤＤ番号リスト４３１を用いてＨＤＤ番号により指定する代わりに、ヘッダ情報４３中のＨＤＤタイプ情報４３２、つまりメーカ名及び製品コードにより、ＨＤＤファームウェアデータ４０が適用されるＨＤＤ候補が指定される構成とすることも可能である。この場合、ＣＰＵ２３は、ＨＤＤ１２−１〜１２−ｎのうち、受信ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているＨＤＤタイプ情報４３２により示されるメーカ名及び製品コードに合致するＨＤＤのみを、当該ＨＤＤファームウェアデータ４０が適用されるＨＤＤ候補として選択すればよい。ここでは、ＨＤＤタイプ情報４３２（により示されるメーカ名及び製品コードの情報）が、更新対象ディスク装置情報として用いられる。また、ヘッダ情報４３中のＨＤＤ番号リスト４３１及びＨＤＤタイプ情報４３２を組み合わせることも可能である。例えば、ＨＤＤ番号リスト４３１で指定されるＨＤＤのそれぞれについて、当該ＨＤＤが、ＨＤＤタイプ情報４３２により示されるメーカ名及び製品コードに合致するか否かにより、当該ＨＤＤにＨＤＤファームウェアデータ４０を適用する候補とすることの正当性を判定してもよい。
【００４５】
また、上記実施形態では、上述の候補に対して実際にＨＤＤファームウェアデータ４０（に対応するＨＤＤファームウェアデータ４１）を適用する条件に、レビジョンが同一でないことが用いられている（ステップＳ４，Ｓ５）。しかし、レビジョンが同一でなくても、更新用ファームウェアより現在ＨＤＤ１２−ｉで用いられているファームウェアのレビジョンの方が新しい場合には、当該ＨＤＤ１２−ｉへのＨＤＤファームウェアデータ４０（に対応するＨＤＤファームウェアデータ４１）の適用を抑止するようにしてもよい。
【００４６】
さて、ＣＰＵ２３は実行フラグ４４１を“ファームウェア更新なし”指定状態に変更すると（ステップＳ１９）、前記ステップＳ８と同様に、ＨＤＤ番号＃ｉが最終ＨＤＤ番号（＝ｎ）であるか否かを判定する（Ｓ２０）。もし、ＨＤＤ番号＃ｉが最終ＨＤＤ番号でないならば、ＣＰＵ２３はＨＤＤ番号＃ｉを１インクリメントして（ステップＳ２１）、ステップＳ１２に戻る。
【００４７】
また、上記ステップＳ１４で、ヘッダ情報４４中に“ファームウェア更新あり”を示す実行フラグ４４１が設定されていないと判定された場合、即ちヘッダ情報４４中に“ファームウェア更新なし”を示す実行フラグ４４１が設定されている場合、ＣＰＵ２３はＨＤＤファームウェアの更新が不要であると判断する。この場合、ＣＰＵ２３は上記ステップＳ２０に進み、ＨＤＤ番号＃ｉが最終ＨＤＤ番号に一致しないならば、ＨＤＤ番号＃ｉを１インクリメントした後（ステップＳ２１）、ステップＳ１２に戻る。
【００４８】
このようにして、上記ステップＳ１２から始まる処理が、ＨＤＤ番号＃ｉが最終ＨＤＤ番号に一致するまで繰り返された後、上記ステップＳ２０に進んだものとする。ここでは、ＨＤＤ番号＃ｉが最終ＨＤＤ番号であると判定される。この場合、ＣＰＵ２３はＨＤＤ起動処理を終了する。
【００４９】
以上の説明から明らかなように、本実施形態においては、ストレージ装置１０の立ち上げに伴う各ＨＤＤ１２−ｉの起動処理の中でＨＤＤファームウェアを更新するため、当該ストレージ装置１０のオンライン状態におけるＨＤＤファームウェアの更新と比べ安全に且つ簡単に行うことができる。しかも本実施形態においては、ＨＤＤ１２−ｉのファームウェア保存領域２６に予め更新用ファームウェア（ファームウェア本体４２’を含むＨＤＤファームウェアデータ４１）をダウンロードしておくだけで、あとはシステムの都合に合わせてストレージ装置１０を改めて起動した際に自動的にＨＤＤファームウェアの更新が行われる。このため、特別なシステムオペレーションなどの作業を必要としない。
【００５０】
また、本実施形態においては、ディスク制御装置１１で受信されたＨＤＤファームウェアデータ４０（中のファームウェア本体４２）が適用可能なＨＤＤが、当該ＨＤＤファームウェアデータ４０中のヘッダ情報４３に含まれているＨＤＤ番号リスト４３１に従って特定される。このため、ストレージ装置１０内のＨＤＤ１２−１〜１２−ｎが必ずしも同一メーカ製の同一製品型番のＨＤＤでなくても、ＨＤＤ番号リスト４３１に従って特定されたＨＤＤを対象に当該ＨＤＤのファームウェアを確実に更新できる。
【００５１】
［変形例］
上記実施形態では、ＨＤＤ１２−ｉのファームウェア保存領域２６にＨＤＤファームウェアデータ４１が保存されると、現在ＨＤＤ１２−ｉで用いられているＨＤＤファームウェアは、ファームウェア保存領域２６から失われる。このため、更新後のファームウェアに不具合がある場合、或いは更新後のファームウェアが期待した性能を発揮しない場合には、ＨＤＤ１２−ｉのファームウェアを更新前の状態に戻せなくなる。そこで、図１のストレージ装置１０において、ＨＤＤ１２−ｉで実行されるファームウェアを以前に適用されていたファームウェアに戻すことを可能とする、上記実施形態の変形例について説明する。
【００５２】
この変形例では、ＨＤＤ１２−ｉの記憶領域の一部は、図５に示すように、複数、例えばｍ個（ｍは１より大きい整数）の一定サイズのファームウェア保存領域２６−１〜２６−ｍに分割して管理される。このファームウェア保存領域２６−１〜２６−ｍはホスト計算機１３または保守コンソール１４（外部装置）から認識可能である。ファームウェア保存領域２６−１〜２６−ｍは、領域識別情報としての例えば領域番号＃１〜＃ｍにより指定される。また、この変形例では、ＨＤＤファームウェアデータ４０のヘッダ情報４３中のＨＤＤ番号リスト４３１には、ＨＤＤ番号＃ｉだけでなく、図６に示すように、当該ＨＤＤ番号＃ｉと対をなして領域番号＃ｊ（ｊは１〜ｍのいずれか）が設定される。この領域番号＃ｊは、ＨＤＤファームウェアデータ４０に対応するＨＤＤファームウェアデータ４１の保存先を、ＨＤＤ番号＃ｉにより示されるＨＤＤ１２−ｉ内のファームウェア保存領域２６−ｊとすべきことを指定する。
【００５３】
これにより、ホスト計算機１３または保守コンソール１４は、ＨＤＤファームウェアデータ４０のヘッダ情報４３中のＨＤＤ番号リスト４３１により、当該ＨＤＤファームウェアデータ４０に対応するＨＤＤファームウェアデータ４１の保存先として、ＨＤＤ１２−ｉだけでなく当該ＨＤＤ１２−ｉ内のファームウェア保存領域２６−ｊをも指定できる。よって本実施形態の変形例では、ホスト計算機１３または保守コンソール１４は、ＨＤＤ１２−１〜１２−ｎ毎に、それぞれｍ種類のファームウェアをファームウェア保存領域２６−１〜２６−ｍに保存させることができる。この場合、ホスト計算機１３または保守コンソール１４からの指定により、現在ＨＤＤ１２−ｉで適用（実行）されているＨＤＤファームウェアを、ＨＤＤ１２−ｉの例えばファームウェア保存領域２６−ｊに保存されている更新用ファームウェアに切り替える（更新する）ことが可能となる。
【００５４】
以下、このファームウェア切り替えを、（１）ファームウェア切り替えコマンド受信時の処理と、（２）ＨＤＤ起動処理とに分けて、順次説明する。
（１）ファームウェア切り替えコマンド受信時の処理
まず、ディスク制御装置１１におけるファームウェア切り替えコマンド受信時の処理について、図７のフローチャートを参照して説明する。今、ＨＤＤ１２−ｉで実行されているファームウェアに対応するＨＤＤファームウェアデータ４１が、当該ＨＤＤ１２−ｉのファームウェア保存領域２６−ｋ（ｋは１〜ｍのいずれか）に保存されているものとする。また、ホスト計算機１３または保守コンソール１４は、現在ＨＤＤ１２−ｉで実行されているファームウェアを、当該ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊ（ｊ≠ｋ）に保存されているファームウェア本体４２’に切り替えたいものとする。この場合、ホスト計算機１３または保守コンソール１４は、図６のデータ構造のＨＤＤ番号リスト４３１が付加された、ファームウェア切り替えコマンドをディスク制御装置１１に送信する。
【００５５】
ホスト計算機１３または保守コンソール１４からディスク制御装置１１に送信されたファームウェア切り替えコマンドは、ディスク制御装置１１内のホストＩ／Ｆ２０またはコンソールＩ／Ｆ２２で受信される。ディスク制御装置１１内のＣＰＵ２３は、受信されたファームウェア切り替えコマンドを受け取ると、ファームウェア切り替えコマンド受信時の処理を開始し、まずＨＤＤ番号＃ｉを初期値１に設定する（ステップＳ３１）。次にＣＰＵ２３は、ファームウェア切り替えコマンドに付されているＨＤＤ番号リスト４３１を参照する（ステップＳ３２）。そしてＣＰＵ２３は、ＨＤＤ番号＃ｉに一致するＨＤＤ番号がＨＤＤ番号リスト４３１に含まれているか否かを判定する（ステップＳ３３）。
【００５６】
もし、ＨＤＤ番号＃ｉに一致するＨＤＤ番号がＨＤＤ番号リスト４３１に含まれているならば、ＣＰＵ２３は、当該ＨＤＤ番号＃ｉによって指定されるＨＤＤ１２−ｉがファームウェア切り替え（更新）の対象となるＨＤＤであると判断する。この場合、ＣＰＵ２３はＨＤＤ番号＃ｉに一致するＨＤＤ番号と対をなしてＨＤＤ番号リスト４３１に設定されている領域番号を調べる（ステップＳ３４）。この領域番号がファームウェア保存領域２６−ｊを示すｊである、つまり領域番号＃ｊであるものとする。この場合、ＣＰＵ２３は、ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊに保存されているＨＤＤファームウェアデータ４１のヘッダ情報４４中の実行フラグ４４１を“ファームウェア更新あり”を示すＯＮ状態に設定する（ステップＳ３５）。
【００５７】
次にＣＰＵ２３は、上記実施形態と同様に、ＨＤＤ番号＃ｉが最終ＨＤＤ番号（ここではｎ）であるか否か判定する（ステップＳ３６）。もし、ＨＤＤ番号＃ｉが最終ＨＤＤ番号でないならば、ＣＰＵ２３はＨＤＤ番号＃ｉを１インクリメントして（ステップＳ３７）、ステップＳ３２に戻る。このようにして、上記ステップＳ３２から始まる処理が、ＨＤＤ番号＃ｉが最終ＨＤＤ番号に一致するまで繰り返されると、ＣＰＵ２３はファームウェア切り替えコマンド受信時の処理を終了する。
【００５８】
（２）ＨＤＤ起動処理
次に、ストレージ装置１０の立ち上げに伴うＨＤＤ１２−１〜１２−ｎの起動処理を、主として図４のフローチャートと相異する部分について、図８及び図９のフローチャートを参照して説明する。
【００５９】
ＣＰＵ２３は、ＨＤＤ番号＃ｉで指定されるＨＤＤ１２−ｉを起動すると（ステップＳ４２）、領域番号＃ｊを初期値１に設定する（ステップＳ４３）。次にＣＰＵ２３は、ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊに保存されているＨＤＤファームウェアデータ４１のヘッダ情報４４を読み出す（ステップＳ４４）。そしてＣＰＵ２３は、ヘッダ情報４４中に“ファームウェア更新あり”を示す実行フラグ４４１が設定されているか否かを判定する（ステップＳ４５）。
【００６０】
もし、ＨＤＤファームウェアデータ４１のヘッダ情報４４中に“ファームウェア更新あり”を示す実行フラグ４４１が設定されているならば、ＣＰＵ２３は、ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊに保存されているファームウェア本体４２’（更新用ファームウェア）で、現在のＨＤＤファームウェアを更新する処理（ステップＳ４６〜４８）を行う。これにより、ＣＰＵ２３は、ＨＤＤ１２−ｉにおける現在のファームウェアを、ホスト計算機１３または保守コンソール１４から指定された当該ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊに保存されているファームウェアに切り替えることができる。このファームウェア切り替え技術は、ＨＤＤ１２−ｉを利用する用途に応じて、当該ＨＤＤ１２−ｉで実行されるファームウェアを切り替えたい場合にも適用できる。
【００６１】
ＣＰＵ２３は、ファームウェアの更新に成功した場合（ステップＳ４９）、ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊ内のＨＤＤファームウェアデータ４１中のヘッダ情報４４に含まれている実行フラグ４４１の状態を“ファームウェア更新なし”指定状態（ＯＦＦ状態）に変更する（ステップＳ５０）。この場合、ＣＰＵ２３は、図４中のステップＳ２０と同様に、ＨＤＤ番号＃ｉが最終ＨＤＤ番号であるか否かを判定する（ステップＳ５１）。もしＨＤＤ番号＃ｉが最終ＨＤＤ番号でなければ、ＣＰＵ２３はＨＤＤ番号＃ｉを１インクリメントして（ステップＳ５２）、ステップＳ４２に戻る。
【００６２】
一方、ＨＤＤ１２−ｉのファームウェア保存領域２６−ｊから読み出されたＨＤＤファームウェアデータ４１のヘッダ情報４４中に“ファームウェア更新あり”を示す実行フラグ４４１が設定されていないならば（ステップＳ４５）、ＣＰＵ２３は領域番号＃ｊが最終領域番号（＝ｍ）であるか否かを判定する（Ｓ５３）。もし、領域番号＃ｊが最終領域番号でないならば、ＣＰＵ２３は領域番号＃ｊを１インクリメントして（ステップＳ５４）、ステップＳ４４に戻る。これに対し、領域番号＃ｊが最終領域番号であるならば、ＣＰＵ２３は上記ステップＳ５１の判定処理を実行する。
【００６３】
なお、本発明は、上記実施形態及びその変形例に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態及びその変形例には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００６４】
【発明の効果】
以上詳述したように本発明においては、ストレージ装置が有する複数のディスク装置のうち、ディスク制御装置で受信された更新用制御プログラムが適用可能なディスク装置を、当該プログラムに付されている更新対象ディスク装置情報に従って特定し、その特定されたディスク装置の更新用制御プログラム保存領域に、当該受信された更新用制御プログラムを保存し、ストレージ装置の各ディスク装置を起動する起動処理の中で、当該更新用制御プログラム保存領域に保存された更新用制御プログラムを用いて、ディスク装置で動作するディスク装置用制御プログラムを更新する構成とした。これにより、ストレージ装置の各ディスク装置でそれぞれ実行されるディスク装置用制御プログラムを更新するための処理手順または処理時間が異なっていても、当該ディスク装置用制御プログラムを、ディスク制御装置用の制御プログラムを複雑にすることなく安全に更新することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るストレージ装置のブロック構成図。
【図２】図１中のディスク制御装置１１で受信されるＨＤＤファームウェアデータ４０のデータ構造の一例と、ＨＤＤ１２−ｉのファームウェア保存領域２６に一時的に保存されるＨＤＤファームウェアデータ４１のデータ構造の一例とを対比して示す図。
【図３】ディスク制御装置１１におけるＨＤＤファームウェア受信時の処理を説明するためのフローチャート。
【図４】ストレージ装置１０の立ち上げに伴うＨＤＤ起動処理を説明するためのフローチャート。
【図５】ＨＤＤ１２−ｉ（ｉ＝１〜ｎ）の記憶領域の一部にｍ個のファームウェア保存領域２６−１〜２６−ｍが割り当てられる、上記実施形態の変形例を説明するための図。
【図６】上記変形例で適用されるＨＤＤ番号リスト４３１のデータ構造例を示す図。
【図７】上記変形例におけるファームウェア切り替えコマンド受信時の処理を説明するためのフローチャート。
【図８】上記変形例におけるＨＤＤ起動処理を説明するためのフローチャートの一部を示す図。
【図９】上記変形例におけるＨＤＤ起動処理を説明するためのフローチャートの残りを示す図。
【符号の説明】
１０…ストレージ装置、１１…ディスク制御装置、１２−１〜１２−ｎ，１２−ｉ…ＨＤＤ（ディスク装置）、１３…ホスト計算機（外部装置）、１４…保守コンソール（外部装置）、２３…ＣＰＵ、２４…バッファメモリ、２５…プログラムメモリ、２６，２６−１〜２６−ｍ…ファームウェア保存領域（更新用制御プログラム保存領域）、４０，４１…ＨＤＤファームウェアデータ、４２，４２’…ファームウェア本体（更新用制御プログラム）、４３，４４…ヘッダ情報、４３１…ＨＤＤ番号リスト（ディスク装置識別情報リスト）、４３２…ＨＤＤタイプ情報、４３３，４３３’…レビジョン情報、４３４，４３４’…サイズ情報、４４１…実行フラグ。
【図１】
2004287979.tif 000003
【図２】
2004287979.tif 000004
【図３】
2004287979.tif 000005
【図４】
2004287979.tif 000006
【図５】
2004287979.tif 000007
【図６】
2004287979.tif 000008
【図７】
2004287979.tif 000009
【図８】
2004287979.tif 000010
【図９】
2004287979.tif 000011