(57)【特許請求の範囲】
【請求項１】
ホスト装置から送信される要求又はデータに対して所定の処理を実行する第１のコントローラと、
前記第１のコントローラと冗長構成されている第２のコントローラと、
を備え、
前記第１のコントローラ及び前記第２のコントローラは、
それぞれファームウェアを格納するための格納領域
を備え、
前記第１のコントローラ及び前記第２のコントローラは、
いずれも動作状態であり、
前記第１のコントローラは、
前記第１のコントローラのファームウェアのうち更新すべき部分である更新部分の更新処理が失敗したときに、前記第２のコントローラのファームウェアの更新部分の更新処理についても失敗したか否かを確認し、前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了している場合には、前記第２のコントローラの更新部分のファームウェアデータを取得して、前記第１のコントローラの更新部分のファームウェアデータを前記第２のコントローラの更新部分のファームウェアデータに書き換える
ことを特徴とするディスクアレイ装置。
【請求項２】
前記第２のコントローラは、
前記第１のコントローラのファームウェアの更新部分の更新処理が終了した後に、前記第２のコントローラのファームウェアの更新部分の更新処理を開始する
ことを特徴とする請求項１に記載のディスクアレイ装置。
【請求項３】
前記第１のコントローラ及び前記第２のコントローラは、
保守端末から送信されるファームウェア更新データに基づいて、前記第１のコントローラ及び前記第２のコントローラのファームウェアの更新部分の更新処理を実行し、
前記第１のコントローラは、
前記第２のコントローラの前記ファームウェアの更新部分の更新処理についても失敗している場合には、前記保守端末からファームウェア更新データを再度取得して、前記第１のコントローラのファームウェアの更新部分の更新処理を再度実行する
ことを特徴とする請求項１に記載のディスクアレイ装置。
【請求項４】
前記第１のコントローラは、
前記第１のコントローラのファームウェアの更新部分の更新処理が失敗したときに、当該更新処理が失敗したことを外部に明示する
ことを特徴とする請求項１に記載のディスクアレイ装置。
【請求項５】
前記第１のコントローラ及び前記第２のコントローラには、
前記格納領域にそれぞれ１のファームウェアが格納されている
ことを特徴とする請求項１に記載のディスクアレイ装置。
【請求項６】
ホスト装置から送信される要求又はデータに対して所定の処理を実行する第１のコントローラと、前記第１のコントローラと冗長構成されている第２のコントローラと、を有し、前記第１のコントローラ及び前記第２のコントローラは、それぞれファームウェアを格納するための格納領域を有し、前記第１のコントローラ及び前記第２のコントローラは、いずれも動作状態であるディスクアレイ装置のファームウェア更新方法であって、
前記第１のコントローラが、
前記第１のコントローラのファームウェアのうち更新すべき部分である更新部分の更新処理が失敗したときに、前記第２のコントローラのファームウェアの更新部分の更新処理についても失敗したか否かを確認する第１のステップと、
前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了している場合には、前記第２のコントローラの更新部分のファームウェアデータを取得して、前記第１のコントローラの更新部分のファームウェアデータを前記第２のコントローラの更新部分のファームウェアデータに書き換える第２のステップと、
を備えることを特徴とするディスクアレイ装置のファームウェア更新方法。
【請求項７】
前記第１のコントローラは、
前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了していない場合には、その旨の通知を保守端末に送信し、前記保守端末からファームウェア更新データを取得して、前記ファームウェアの更新部分の更新処理を再度実行する
ことを特徴とする請求項１に記載のディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ等のファームウェアを更新するディスクアレイ装置及びそのファームウェア更新方法に関する。
【背景技術】
【０００２】
従来、ディスクアレイ装置におけるコントローラのファームウェアの更新処理は、不具合修正や機能強化などを行う際に実施され、その更新頻度は高い。しかしながら、従来のディスクアレイ装置におけるコントローラのファームウェアの更新処理では、ファームウェア更新中の障害発生などによりファームウェアの書き込みに失敗すると、コントローラの基盤交換が必要となるという問題がある。
【０００３】
このような課題を解決するための装置として、例えば、ファームウェアが書き込まれる媒体を二重に備え、それぞれの媒体に格納されるファームウェアの正常性を定期的に判断し、動作しているファームウェアに障害が発生した場合には、別の媒体に格納されている障害のないファームウェアに動作を切り替えるという方式の装置が存在する。このような方式の装置として、例えば、特許文献１の情報処理装置が開示されている。
【０００４】
具体的に、特許文献１の情報処理装置は、書き替え可能なメモリに格納された運用ファームウェア、その運用ファームウェアで動作するＣＰＵ、運用ファームウェアの１世代前若しくは動作実績のあるファームウェアである修復用ファームウェアを格納する不揮発性メモリ及び監視装置がシステムバスにより接続されたモジュールｎ個と、システム監視装置とを備えている。
【０００５】
特許文献１の情報処理装置では、現在運用している運用ファームウェアでの障害を監視装置が検出したとき、当該監視装置がシステム監視装置に障害を検出したことを通知し、その後、システム監視装置が、ｎ個全てのモジュールの監視装置に対してファームウェアの切り替えを要求する。そして、特許文献１の情報処理装置では、ｎ個全てのモジュールの監視装置が運用ファームウェアを修復用ファームウェアに切り替え、その後、システム監視装置がｎ個全てのモジュールを正常に再起動する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−１９９１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の情報処理装置では、運用ファームウェア及び修復用ファームウェアを備えなければならないために、ファームウェアを格納する媒体が２個必要となり、部品コストの増大や、ハードウェア実装面において実装面積が余計に必要となるという問題がある。
【０００８】
本発明は以上の点を考慮してなされたものであり、信頼性を向上させ得るディスクアレイ装置及びそのファームウェア更新方法を提案するものである。
【課題を解決するための手段】
【０００９】
かかる課題を解決するために本発明は、ホスト装置から送信される要求又はデータに対して所定の処理を実行する第１のコントローラと、前記第１のコントローラと冗長構成されている第２のコントローラと、を備え、前記第１のコントローラ及び前記第２のコントローラは、それぞれファームウェアを格納するための格納領域を備え、前記第１のコントローラ及び前記第２のコントローラは、いずれも動作状態であり、前記第１のコントローラは、前記第１のコントローラのファームウェアのうち更新すべき部分である更新部分の更新処理が失敗したときに、前記第２のコントローラのファームウェアの更新部分の更新処理についても失敗したか否かを確認し、前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了している場合には、前記第２のコントローラの更新部分のファームウェアデータを取得して、前記第１のコントローラの更新部分のファームウェアデータを前記第２のコントローラの更新部分のファームウェアデータに書き換えることを特徴とする。
【００１０】
また、本発明は、ホスト装置から送信される要求又はデータに対して所定の処理を実行する第１のコントローラと、前記第１のコントローラと冗長構成されている第２のコントローラと、を有し、前記第１のコントローラ及び前記第２のコントローラは、それぞれファームウェアを格納するための格納領域を有し、前記第１のコントローラ及び前記第２のコントローラは、いずれも動作状態であるディスクアレイ装置のファームウェア更新方法であって、前記第１のコントローラが、前記第１のコントローラのファームウェアのうち更新すべき部分である更新部分の更新処理が失敗したときに、前記第２のコントローラのファームウェアの更新部分の更新処理についても失敗したか否かを確認する第１のステップと、前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了している場合には、前記第２のコントローラの更新部分のファームウェアデータを取得して、前記第１のコントローラの更新部分のファームウェアデータを前記第２のコントローラの更新部分のファームウェアデータに書き換える第２のステップと、を備えることを特徴とする。
【００１１】
さらに、本発明は、ホスト装置から送信される要求又はデータに対して所定の処理を実行するコントローラを備え、前記コントローラは、ファームウェアを格納するための格納領域を備え、保守端末から送信されるファームウェア更新データに基づいて、前記ファームウェアの更新すべき部分である更新部分の更新処理を実行し、前記ファームウェアの更新部分の更新処理が失敗したときに、前記保守端末からファームウェア更新データを再度取得して、前記のファームウェアの更新部分の更新処理を再度実行することを特徴とする。
【００１２】
従って、ディスクアレイ装置のコントローラのファームウェアを更新する際に、ファームウェアデータを二重に備えることなく、ファームウェアの更新失敗時に自動的に復旧を行うことができる。
【発明の効果】
【００１３】
本発明によれば、信頼性を向上させ得るディスクアレイ装置及びそのファームウェア更新方法を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】ストレージシステムのハードウェア構成を示すブロック図の一例である。
【図２】ファームウェアの説明に供する概念図の一例である。
【図３】ファームウェア更新処理手順を示すフローチャートの一例である。
【図４】ファームウェア更新処理手順を示すフローチャートの一例である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。なお、これにより本発明が限定されるものではない。
【００１６】
（構成）
図１は、本実施の形態によるストレージシステム１のハードウェア構成の一例を示している。ストレージシステム１は、複数のホスト装置２、ディスクアレイ装置３、保守端末４及び記憶装置５を備えて構成されている。記憶装置５は、複数の磁気ディスク装置６を備えて構成されている。
【００１７】
ホスト装置２は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源、情報入力装置、情報出力装置を備えたコンピュータ装置である。ホスト装置２は、所定のネットワークを介してディスクアレイ装置３と接続されている。所定のネットワークとしては、例えば、ＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネット、専用回線、公衆回線等を場合に応じて適宜用いることができる。
【００１８】
ホスト装置２は、例えば、書き込み要求をディスクアレイ装置３に送信して、対応するデータを記憶装置５の磁気ディスク装置６に書き込む。また、ホスト装置２は、例えば、読み出し要求をディスクアレイ装置３に送信して、対応するデータを記憶装置５の磁気ディスク装置６から読み出す。
【００１９】
ディスクアレイ装置３は、例えば、ホスト装置２から送信される各種要求に対する制御を行うコントローラである第１のホストディレクタ（ＨＤ）１１Ａ及び第２のホストディレクタ１１Ｂ、キャッシュメモリ３１Ａ、３１Ｂ（後述）を制御するコントローラである第１のキャッシュモジュール（ＣＨＥ）１２Ａ及び第２のキャッシュモジュール１２Ｂ、記憶装置５の磁気ディスク装置６を制御するコントローラである第１のディスクディレクタ（ＤＤ）１３Ａ及び第２のディスクディレクタ１３Ｂ並びに保守端末４から送信される要求に基づいて保守サービス機能を提供するコントローラである第１のサービスプロセッサ（ＳＶＰ）１４Ａ及び第２のサービスプロセッサ１４Ｂを備えて構成されている。
【００２０】
第１のホストディレクタ１１Ａ及び第２のホストディレクタ１１Ｂは、冗長構成されている。第１のキャッシュモジュール１２Ａ及び第２のキャッシュモジュール１２Ｂは、冗長構成されている。第１のディスクディレクタ１３Ａ及び第２のディスクディレクタ１３Ｂは、冗長構成されている。第１のサービスプロセッサ１４Ａ及び第２のサービスプロセッサ１４Ｂは、冗長構成されている。
【００２１】
なお、以下については、第１、第２のホストディレクタ１１Ａ、１１Ｂ、第１、第２のキャッシュモジュール１２Ａ、１２Ｂ、第１、第２のディスクディレクタ１３Ｂ及び第１、第２のサービスプロセッサ１４Ａ、１４Ｂを、まとめて、「各コントローラ」と表現する場合がある。各コントローラは、それぞれ１ペアの冗長構成であるが、複数ペアによる冗長構成であっても良く、容易に拡張することができる。
【００２２】
第１のホストディレクタ１１Ａは、ホスト装置制御部２１Ａ、マイクロプロセッサ２２Ａ、ＦＲＯＭ（Flash ROM）（格納領域）２３Ａ、ＲＡＭ（Random Access Memory）２４Ａ、通信制御部２５Ａ及びＬＥＤ制御部２６Ａを備えて構成されている。第１のホストディレクタ１１Ａは、所定のケーブルを介して第１のキャッシュモジュール１２Ａと接続されている。
【００２３】
ホスト装置制御部２１Ａは、ホスト装置２から送信される各種要求や、第１のキャッシュモジュール１２Ａから送信される応答をマイクロプロセッサ２２Ａに送信する。ホスト装置制御部２１Ａは、ホスト装置２から送信されるデータを第１のキャッシュモジュール１２Ａ又はホスト装置２に送信する。ホスト装置制御部２１Ａは、ホスト装置２から送信される各種要求に対する応答をホスト装置２に送信し、ホスト装置２から送信される各種要求に基づく指示を第１のキャッシュモジュール１２Ａに送信する。
【００２４】
マイクロプロセッサ２２Ａは、ホスト装置制御部２１Ａから送信される各種要求や通信制御部２５Ａから送信される指示を解釈して、ホスト装置制御部２１Ａ、ＦＲＯＭ２３Ａ、ＲＡＭ２４Ａ、通信制御部２５Ａ及びＬＥＤ制御部２６Ａを制御し、指示、応答を行う。
【００２５】
ＦＲＯＭ２３Ａは、例えば、不揮発性記憶媒体である。ＦＲＯＭ２３Ａには、例えば、１つのファームウェア２７（後述）が組み込まれて格納されている。ファームウェア２７は、ファームウェア更新データ２８（後述）によって更新される。ＲＡＭ２４Ａは、例えば、揮発性記憶媒体である。ＲＡＭ２４Ａには、ＦＲＯＭ２３Ａに格納されているファームウェア２７（後述）や、各種制御プログラムや各種アプリケーションソフトウェア等が、マイクロプロセッサ２２Ａに実行されるために展開される。
【００２６】
通信制御部２５Ａは、各通信制御部２５Ｂ、３６Ａ、３６Ｂ、４５Ａ、４５Ｂ、５５Ａ、５５Ｂと内部バス２９を介して通信可能に接続されており、当該各通信制御部との間で指示や応答、データ等を送受信する。ＬＥＤ制御部２６Ａは、第１のホストディレクタ１１Ａの稼動状態等をＬＥＤの点滅により示す。
【００２７】
第２のホストディレクタ１１Ｂは、第１のホストディレクタ１１Ａと同様に構成されている。なお、第２のホストディレクタ１１Ｂの各構成要素には、第１のホストディレクタ１１Ａの構成要素の同一部分について、同一符号の添え字「Ａ」に代えて、添え字「Ｂ」が付されている。
【００２８】
第１のキャッシュモジュール１２Ａは、キャッシュメモリ３１Ａ、キャッシュ制御部３２Ａ、マイクロプロセッサ３３Ａ、ＦＲＯＭ３４Ａ、ＲＡＭ３５Ａ、通信制御部３６Ａ及びＬＥＤ制御部３７Ａを備えて構成されている。第１のキャッシュモジュール１２Ａは、所定のケーブルを介して第１のディスクディレクタ１３Ａと接続されている。
【００２９】
キャッシュメモリ３１Ａは、例えば、揮発性記憶媒体である。キャッシュメモリ３１Ａには、第１のキャッシュモジュール１２Ａ及び第１のディスクディレクタ１３Ａから送信されるデータが一時的に格納される。
【００３０】
キャッシュ制御部３２Ａは、第１のホストディレクタ１１Ａから送信される指示や、第１のディスクディレクタ１３Ａから送信される応答をマイクロプロセッサ３３Ａに送信する。キャッシュ制御部３２Ａは、キャッシュメモリ３１Ａに格納されたデータを所定のタイミングで第１のディスクディレクタ１３Ａ又は第１のホストディレクタ１１Ａに送信する。キャッシュ制御部３２Ａは、第１のホストディレクタ１１Ａから送信される指示に対する応答を第１のホストディレクタ１１Ａに送信し、第１のホストディレクタ１１Ａから送信される指示に基づく指示を第１のディスクディレクタ１３Ａに送信する。
【００３１】
マイクロプロセッサ３３Ａは、キャッシュ制御部３２Ａや通信制御部３６Ａから送信される指示を解釈して、キャッシュ制御部３２Ａ、ＦＲＯＭ３４Ａ、ＲＡＭ３５Ａ、通信制御部３６Ａ及びＬＥＤ制御部３７Ａを制御し、指示、応答を行う。
【００３２】
ＦＲＯＭ３４Ａは、例えば、不揮発性記憶媒体である。ＦＲＯＭ３４Ａには、例えば、１つのファームウェア２７（後述）が組み込まれて格納されている。ファームウェア２７は、ファームウェア更新データ２８（後述）によって更新される。ＲＡＭ３５Ａは、例えば、揮発性記憶媒体である。ＲＡＭ３５Ａには、ＦＲＯＭ３４Ａに格納されているファームウェア２７（後述）や、各種制御プログラムや各種アプリケーションソフトウェア等が、マイクロプロセッサ３３Ａに実行されるために展開される。
【００３３】
通信制御部３６Ａは、各通信制御部２５Ａ、２５Ｂ、３６Ｂ、４５Ａ、４５Ｂ、５５Ａ、５５Ｂと内部バス２９を介して通信可能に接続されており、当該各通信制御部との間で指示や応答、データ等を送受信する。ＬＥＤ制御部３７Ａは、第１のキャッシュモジュール１２Ａの稼動状態等をＬＥＤの点滅により示す。
【００３４】
第２のキャッシュモジュール１２Ｂは、第１のキャッシュモジュール１２Ａと同様に構成されている。なお、第２のキャッシュモジュール１２Ｂの各構成要素には、第１のキャッシュモジュール１２Ａの構成要素の同一部分について、同一符号の添え字「Ａ」に代えて、添え字「Ｂ」が付されている。
【００３５】
第１のディスクディレクタ１３Ａは、磁気ディスク制御部４１Ａ、マイクロプロセッサ４２Ａ、ＦＲＯＭ４３Ａ、ＲＡＭ４４Ａ、通信制御部４５Ａ及びＬＥＤ制御部４６Ａを備えて構成されている。第１のディスクディレクタ１３Ａは、所定のケーブルを介して記憶装置５と接続されている。
【００３６】
磁気ディスク制御部４１Ａは、第１のキャッシュモジュール１２Ａから送信される指示や記憶装置５から送信される応答をマイクロプロセッサ４２Ａに送信する。ホスト装置制御部４２Ａは、記憶装置５から送信されるデータを第１のキャッシュモジュール１２Ａに送信する。磁気ディスク制御部４１Ａは、第１のキャッシュモジュール１２Ａから送信される指示に対する応答を第１のキャッシュモジュール１２Ａに送信し、磁気ディスク制御部４１Ａは、第１のキャッシュモジュール１２Ａから送信される指示に基づく指示を記憶装置５に送信する。
【００３７】
マイクロプロセッサ４２Ａは、第１のキャッシュモジュール１２Ａや通信制御部４５Ａから送信される指示を解釈して、磁気ディスク制御部４１Ａ、マイクロプロセッサ４２Ａ、ＦＲＯＭ４３Ａ、ＲＡＭ４４Ａ、通信制御部４５Ａ及びＬＥＤ制御部４６Ａを制御し、指示、応答を行う。
【００３８】
ＦＲＯＭ４３Ａは、例えば、不揮発性記憶媒体である。ＦＲＯＭ４３Ａには、例えば、１つのファームウェア２７（後述）が組み込まれて格納されている。ファームウェア２７は、ファームウェア更新データ２８（後述）によって更新される。ＲＡＭ４４Ａは、例えば、揮発性記憶媒体である。ＲＡＭ４４Ａには、ＦＲＯＭ４３Ａに格納されているファームウェア２７（後述）や、各種制御プログラムや各種アプリケーションソフトウェア等が、マイクロプロセッサ４２Ａに実行されるために展開される。
【００３９】
通信制御部４５Ａは、各通信制御部２５Ａ、２５Ｂ、３６Ａ、３６Ｂ、４５Ｂ、５５Ａ、５５Ｂと内部バス２９を介して通信可能に接続されており、当該各通信制御部との間で各種要求やデータを送受信する。ＬＥＤ制御部４６Ａは、第１のディスクディレクタ１３Ａの稼動状態等をＬＥＤの点滅により示す。
【００４０】
第２のディスクディレクタ１３Ｂは、第１のディスクディレクタ１３Ａと同様に構成されている。なお、第１のディスクディレクタ１３Ｂの各構成要素には、第１のディスクディレクタ１３Ａの構成要素の同一部分について、同一符号の添え字「Ａ」に代えて、添え字「Ｂ」が付されている。
【００４１】
第１のサービスプロセッサ１４Ａは、保守Ｉ／Ｆ制御部５１Ａ、マイクロプロセッサ５２Ａ、ＦＲＯＭ５３Ａ、ＲＡＭ５４Ａ、通信制御部５５Ａ及びＬＥＤ制御部５６Ａを備えて構成されている。第１のサービスプロセッサ１４Ａは、所定のケーブルを介して保守端末４と接続されている。
【００４２】
保守Ｉ／Ｆ制御部５１Ａは、保守端末４から送信される各種要求をマイクロプロセッサ５２Ａに送信する。保守Ｉ／Ｆ制御部５１Ａは、保守端末４から送信される各種要求に対する応答を第１の保守端末４に送信する。
【００４３】
マイクロプロセッサ５２Ａは、保守端末４から送信される各種要求や通信制御部５５Ａから送信される指示を解釈して、保守Ｉ／Ｆ制御部５１Ａ、マイクロプロセッサ５２Ａ、ＦＲＯＭ５３Ａ、ＲＡＭ５４Ａ、通信制御部５５Ａ及びＬＥＤ制御部５６Ａを制御し、指示、応答を行う。
【００４４】
ＦＲＯＭ５３Ａは、例えば、不揮発性記憶媒体である。ＦＲＯＭ５３Ａには、例えば、１つのファームウェア２７（後述）が組み込まれて格納されている。ファームウェア２７は、ファームウェア更新データ２８（後述）によって更新される。ＲＡＭ５４Ａは、例えば、揮発性記憶媒体である。ＲＡＭ５４Ａには、ＦＲＯＭ５３Ａに格納されているファームウェア２７（後述）や、各種制御プログラムや各種アプリケーションソフトウェア等が、マイクロプロセッサ５２Ａに実行されるために展開される。
【００４５】
通信制御部５５Ａは、各通信制御部２５Ａ、２５Ｂ、３６Ａ、３６Ｂ、４５Ａ、４５Ｂ、５５Ｂと内部バス２９を介して通信可能に接続されており、当該各通信制御部との間で各種要求やデータを送受信する。ＬＥＤ制御部５６Ａは、第１のサービスプロセッサ１４Ａの稼動状態等をＬＥＤの点滅により示す。
【００４６】
第２のサービスプロセッサ１４Ｂは、第１のサービスプロセッサ１４Ａと同様に構成されている。なお、第２のサービスプロセッサ１４Ｂの各構成要素には、第１のサービスプロセッサ１４Ａの構成要素の同一部分について、同一符号の添え字「Ａ」に代えて、添え字「Ｂ」が付されている。
【００４７】
保守端末４は、ディスクアレイ装置３を保守又は管理するための端末装置である。保守端末４は、ホスト装置２からの各種要求又は保守員の操作に基づいて、例えば、ファームウェア２７（後述）の更新要求やファームウェア更新データ２８（後述）を送信し、その他種々の保守・管理処理を実行する。
【００４８】
記憶装置５の磁気ディスク装置６は、例えば、アレイ状に配列されたＡＴＡ（Advanced Technology Attachment）ハードディスクドライブ、ＳＡＴＡ（Serial-ATA）ハードディスクドライブ、ＳＣＳＩ（Small Computer System Interface）ハードディスクドライブ、ＳＡＳ（Serial Attached SCSI）ハードディスクドライブ、ファイバチャネルハードディスクドライブ等の磁気ディスク装置である。
【００４９】
磁気ディスク装置６は、例えば、ＲＡＩＤ方式で運用されたディスクデバイスが設定され、１又は複数のディスクデバイスにより提供される物理的な記憶領域上に、複数の論理ボリュームを設定することができる。そして、この場合、データは、見かけ上この論理ボリュームに記憶される。
【００５０】
図２は、ファームウェア２７の一例を示した図である。ファームウェア２７は、ブートローダ（Boot Loader）６１、エマージェンシープログラム（Emergency Program）６２、ヘッダ（Header）情報６３、ファームウェアデータ６４及びＣＲＣ（Cyclic Redundancy Check）６５を含んで構成されている。
【００５１】
ブートローダ６１は、ファームウェアデータ６４が壊れている（ファームウェアデータ６４のデータに誤りがある）か否かを判断するためのプログラムである。エマージェンシープログラム６２は、ファームウェアデータ６４が壊れている場合に、実行されるプログラムである。エマージェンシープログラム６２は、内部バス２９による通信制御と、ファームウェアデータ６４の書込み制御と、ＬＥＤの点滅制御とを実行するための小さなプログラムである。ヘッダ情報６３は、ファームウェアレビジョン情報や機種コード、ファームウェアデータ６４のＣＲＣ情報などを含んで構成されている。ファームウェアデータ６４は、ディスク制御装置３の各コントローラに所望の動作を実行させるためのプログラムであり、マイクロコードを含んで構成されている。ＣＲＣ６５は、ファームウェアデータ６４が壊れているか否かをチェックするための情報である。
【００５２】
ここで、ディスク制御装置３の各コントローラの各ＦＲＯＭは、データを更新可能な更新部と、データを更新することができない非更新部とにより構成されている。ブートローダ６１及びエマージェンシープログラム６２は、非更新部に格納されている。ヘッダ情報６３、ファームウェアデータ６４及びＣＲＣ６５は、更新部に格納されている。
【００５３】
ファームウェア更新データ２８は、ファームウェア２７の更新処理の際に、各ＦＲＯＭの更新部に格納されているファームウェアデータ６４を更新するためのデータである。
【００５４】
（ファームウェア更新処理）
次に、本実施形態のストレージシステム１の動作について詳細に説明する。図３及び図４は、本実施形態のストレージシステム１のファームウェア更新処理を示すフローチャートである。
【００５５】
ディスクアレイ装置３は、保守端末４からファームウェア２７の更新要求を受信すると、１ペアの冗長構成のうち片系ずつ更新処理を実行する。例えば、第１、第２のホストディレクタ１１Ａ、１１Ｂの更新処理の場合には、第１のホストディレクタ１１Ａの更新処理が実行された後に、第２のホストディレクタ１１Ｂの更新処理が実行される。
【００５６】
具体的に、第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂは、保守端末４からファームウェア２７の更新要求及びファームウェア更新データ２８を受信すると、図３及び図４に示すファームウェア更新処理手順ＲＴ１を開始して、ファームウェア２７を更新すべき各コントローラにファームウェア更新データ２８を送信する（ステップＳＰ１）。
【００５７】
続いて、ファームウェア２７を更新すべき各コントローラは、自己のコントローラが、冗長構成のコントローラのうち、０系のコントローラ（第１のコントローラ）であるか、１系のコントローラ（第２のコントローラ）であるか判断し、０系のコントローラである場合には、ファームウェア２７の更新処理を実行する（ステップＳＰ２）。
【００５８】
この場合、例えば、第１のホストディレクタ１１Ａ、第１のキャッシュモジュール１２Ａ、第１のディスクディレクタ１３Ａ及び第１のサービスプロセッサ１４Ａは、０系のコントローラとして設定されており、第２のホストディレクタ１１Ｂ、第２のキャッシュモジュール１２Ｂ、第２のディスクディレクタ１３Ｂ及び第２のサービスプロセッサ１４Ｂは、１系のコントローラとして設定されている。
【００５９】
続いて、０系のコントローラは、ファームウェア２７の更新処理が完了するのを待機モードで待ち受ける（ステップＳＰ３）。０系のコントローラは、ファームウェア２７の更新処理が完了すると、対応する１系のコントローラにファームウェア２７の更新処理が完了した旨の通知を送信する。
【００６０】
やがて、１系のコントローラは、０系のコントローラのファームウェア２７の更新処理が完了すると（ステップＳＰ３：ＹＥＳ）、ファームウェア２７の更新処理を実行する（ステップＳＰ４）。なお、１系のコントローラは、対応する０系のコントローラからファームウェア２７の更新処理が完了した旨の通知を受信することにより、０系のコントローラのファームウェア２７の更新処理が完了したことを認識する。
【００６１】
続いて、１系のコントローラは、ファームウェア２７の更新処理が完了するのを待機モードで待ち受ける（ステップＳＰ５）。１系のコントローラは、ファームウェア２７の更新処理が完了すると、対応する０系のコントローラにファームウェア２７の更新処理が完了した旨の通知を送信する。
【００６２】
ここで、０系のコントローラのファームウェア２７の更新処理が実行されている場合には、１系のコントローラは、０系のコントローラのファームウェア２７の更新処理を実行しない。従って、ファームウェア２７の更新処理中に不意の電源切断などが発生し、ファームウェア２７の更新処理が中断したことによって、０系のコントローラ及び１系のコントローラの双方のファームウェア２７のファームウェアデータ６４が同時に壊れるのを未然かつ有効に防止することができる。
【００６３】
やがて、各コントローラは、１系のコントローラのファームウェア２７の更新処理が完了すると（ステップＳＰ５：ＹＥＳ）、ファームウェア２７を実行する（ステップＳＰ６）。続いて、各コントローラは、ファームウェア２７に障害が発生したか否かをチェックする（ステップＳＰ７）。
【００６４】
具体的に、各コントローラは、ファームウェア２７のブートローダ６１を実行し、ヘッダ情報６３のＣＲＣ情報とＣＲＣ６５とが一致するか否かをチェックする。そして、各コントローラは、ヘッダ情報６３のＣＲＣ情報とＣＲＣ６５とが一致する場合には、ファームウェア２７に障害が発生していないと判断する一方、ヘッダ情報６３のＣＲＣ情報とＣＲＣ６５とが一致しない場合には、ファームウェア２７に障害が発生したと判断する。
【００６５】
そして、各コントローラは、ファームウェア２７に障害が発生していない場合には（ステップＳＰ７：ＮＯ）、ステップＳＰ１３に進み、ファームウェアデータ６４を実行して（ステップＳＰ１３）、その後、図３及び図４に示すファームウェア更新処理手順ＲＴ１を終了する（ステップＳＰ１４）。
【００６６】
これに対して、各コントローラは、ファームウェア２７に障害が発生した場合には（ステップＳＰ７：ＹＥＳ）、エマージェンシープログラム６２を実行して、ファームウェアデータ６４が壊れていることを示すために、対応するＬＥＤ制御部において所定のＬＥＤ点滅パターンによりＬＥＤ点滅制御を実行する（ステップＳＰ８）。これにより、ファームウェア２７に障害が発生した各コントローラは、ファームウェアデータ６４が壊れていることを容易に外部に認識させることができる。
【００６７】
また、ファームウェア２７に障害が発生した各コントローラは、自己の状態を示すレジスタ値に「ファームウェアデータ６４が壊れていること」を示すコードを書き込む。なお、第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂは、各コントローラのレジスタ値を確認することにより各コントローラの稼働状態を認識することができる。また、第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂが各コントローラの稼働状態を認識することができることによって、保守端末４上においても、各コントローラの稼働状態を認識することができる。
【００６８】
続いて、ファームウェア２７に障害が発生した各コントローラは、冗長構成の他方のコントローラのファームウェア２７に障害が発生しているか否かをチェックする（ステップＳＰ９）。そして、ファームウェア２７に障害が発生した各コントローラは、冗長構成の他方のコントローラのファームウェア２７に障害が発生している場合には（ステップＳＰ９：ＹＥＳ）、その後、図３及び図４に示すファームウェア更新処理手順ＲＴ１を終了する（ステップＳＰ１４）。
【００６９】
ファームウェア２７に障害が発生した各コントローラは、冗長構成の他方のコントローラのファームウェア２７に障害が発生していない場合（ステップＳＰ９：ＹＥＳ）、すなわち、他方のコントローラのファームウェア２７が正常に更新されている場合には、冗長構成の他方のコントローラのファームウェアデータ６４を受信する（ステップＳＰ１０）。
【００７０】
具体的に、ファームウェア２７に障害が発生した各コントローラは、ファームウェア２７が正常に更新されたか否かの確認要求を冗長構成の他方のコントローラに送信する。冗長構成の他方のコントローラは、ファームウェア２７が正常に更新されているかを確認し、ファームウェア２７が正常に更新されていない場合には、その旨の応答を、確認要求を送信したコントローラに送信する一方、ファームウェア２７が正常に更新されている場合には、その旨及び正常に更新されたファームウェアデータ６４を、確認要求を送信したコントローラに送信する。
【００７１】
続いて、ファームウェア２７に障害が発生した各コントローラは、自己のファームウェア２７に格納されているファームウェアデータ６４を冗長構成の他方のコントローラから受信したファームウェア２７に書き換える（ステップＳＰ１１）。続いて、ファームウェア２７に障害が発生した各コントローラは、自己のコントローラをリブートし（ステップＳＰ１２）、ファームウェアデータ６４を実行して（ステップＳＰ１３）、その後、図３及び図４に示すファームウェア更新処理手順ＲＴ１を終了する（ステップＳＰ１４）。
【００７２】
（動作及び効果）
このようにして、ストレージシステム１では、ファームウェア２７に障害が発生した各コントローラが、冗長構成の他方のコントローラのファームウェア２７に障害が発生しているか否かをチェックし、当該他方のコントローラのファームウェア２７が正常に更新されている場合には、自己のファームウェア２７に格納されているファームウェアデータ６４を冗長構成の他方のコントローラから受信したファームウェア２７に書き換える。
【００７３】
従って、ファームウェア２７の更新に失敗した場合にも、コントローラの交換などの特別な作業を実施することなく、また、特殊なハードウェア構成にすることもなく、自動的にファームウェア２７の更新失敗を復旧することができ、この結果、復旧作業者の作業時間の低減や、ハードウェアコストを低減することができる。
【００７４】
（他の実施例１）
次に、本発明の他の実施例について図面を参照して詳細に説明する。
【００７５】
他の実施例１では、冗長構成の他方のコントローラのファームウェア２７にも障害が発生しており（ステップＳＰ９：ＹＥＳ）、ファームウェア更新処理手順ＲＴ１を終了（ステップＳＰ１４）した後の処理について説明する。
【００７６】
この場合、ファームウェア２７に障害が発生した各コントローラは、「ファームウェアデータ６４が壊れており、かつ、自動的に復旧するのが不可であること」を示す特殊なＬＥＤ点滅パターンで対応するＬＥＤ制御部を点滅させる。なお、ファームウェア２７に障害が発生した各コントローラは、自己の状態を示すレジスタ値に「ファームウェアデータ６４が壊れており、かつ、自動的に復旧するのが不可であること」を示すコードを書き込む。
【００７７】
第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂは、内部バス２９を介して各コントローラのレジスタ値を確認することにより各コントローラの稼働状態を認識することができる。第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂは、各コントローラのうち、「ファームウェアデータ６４が壊れており、かつ、自動的に復旧するのが不可であること」を示すコードを書き込まれたコントローラを認識すると、その旨を保守端末４に送信して、保守操作にて該当するファームウェア２７の復旧を行う必要があることを保守端末４の表示画面に表示させる。従って、保守端末４による保守操作時に、ファームウェア２７の更新処理が失敗し、かつ、復旧操作が必要であることを保守端末４の保守作業員に容易に認識させることができる。
【００７８】
なお、ファームウェア２７に障害が発生した各コントローラは、「ファームウェアデータ６４が壊れており、かつ、自動的に復旧するのが不可であること」を示す旨を、対応するサービスプロセッサ１４に通知するようにしても良い。
【００７９】
保守端末４は、保守作業員によりファームウェア２７の更新の復旧操作がされると、第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂを介してファームウェア２７を復旧すべきコントローラに、ファームウェア再更新要求及びファームウェア更新データ２８を再度送信する。
【００８０】
そして、ファームウェア２７に障害が発生した各コントローラは、第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂからファームウェア再更新指示及びファームウェア更新データ２８を受信すると、ファームウェア２７の更新処理を実行する。
【００８１】
このようにして、ストレージシステム１では、冗長構成の他方のコントローラのファームウェア２７にも障害が発生している場合に、第１のサービスプロセッサ１４Ａ又は第２のサービスプロセッサ１４Ｂが、ファームウェアデータ６４が壊れており、かつ、自動的に復旧するのが不可である旨の通知を保守端末４に送信し、保守端末４からファームウェア更新データ２８を再度受信して、ファームウェア２７の更新処理を再度実行する。
【００８２】
従って、冗長構成の他方のコントローラにおいてもファームウェア２７の更新処理が失敗した場合にも、保守端末４において煩雑な操作を保守作業員に強いることなく、ファームウェア２７の復旧処理を行うことができる。
【００８３】
（他の実施例２）
本実施形態においては、各コントローラがそれぞれ１ペアの冗長構成されている場合について述べたが、本発明はこれに限らず、例えば、小型ディスクアレイ装置には、各コントローラをそれぞれ１台ずつで構成し、ファームウェア２７に障害が発生したときに、サービスプロセッサが、ファームウェアデータ６４が壊れており、かつ、自動的に復旧するのが不可である旨の通知を保守端末４に送信し、保守端末４からファームウェア更新データ２８を再度受信して、ファームウェア２７の更新処理を再度実行するようにしても良い。
【００８４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８５】
（付記１）ホスト装置から送信される要求又はデータに対して所定の処理を実行する第１のコントローラと、前記第１のコントローラと冗長構成されている第２のコントローラと、を備え、前記第１のコントローラ及び前記第２のコントローラは、それぞれファームウェアを格納するための格納領域を備え、前記第１のコントローラ及び前記第２のコントローラは、いずれも動作状態であり、前記第１のコントローラは、前記第１のコントローラのファームウェアのうち更新すべき部分である更新部分の更新処理が失敗したときに、前記第２のコントローラのファームウェアの更新部分の更新処理についても失敗したか否かを確認し、前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了している場合には、前記第２のコントローラの更新部分のファームウェアデータを取得して、前記第１のコントローラの更新部分のファームウェアデータを前記第２のコントローラの更新部分のファームウェアデータに書き換えることを特徴とするディスクアレイ装置である。
【００８６】
（付記２）前記第２のコントローラは、前記第１のコントローラのファームウェアの更新部分の更新処理が終了した後に、前記第２のコントローラのファームウェアの更新部分の更新処理を開始することを特徴とする付記１に記載のディスクアレイ装置である。
【００８７】
（付記３）前記第１のコントローラ及び前記第２のコントローラは、保守端末から送信されるファームウェア更新データに基づいて、前記第１のコントローラ及び前記第２のコントローラのファームウェアの更新部分の更新処理を実行し、前記第１のコントローラは、前記第２のコントローラの前記ファームウェアの更新部分の更新処理についても失敗している場合には、前記保守端末からファームウェア更新データを再度取得して、前記第１のコントローラのファームウェアの更新部分の更新処理を再度実行することを特徴とする付記１に記載のディスクアレイ装置である。
【００８８】
（付記４）前記第１のコントローラは、前記第１のコントローラのファームウェアの更新部分の更新処理が失敗したときに、当該更新処理が失敗したことを外部に明示することを特徴とする付記１に記載のディスクアレイ装置である。
【００８９】
（付記５）前記第１のコントローラ及び前記第２のコントローラには、前記格納領域にそれぞれ１のファームウェアが格納されていることを特徴とする付記１に記載のディスクアレイ装置である。
【００９０】
（付記６）ホスト装置から送信される要求又はデータに対して所定の処理を実行する第１のコントローラと、前記第１のコントローラと冗長構成されている第２のコントローラと、を有し、前記第１のコントローラ及び前記第２のコントローラは、それぞれファームウェアを格納するための格納領域を有し、前記第１のコントローラ及び前記第２のコントローラは、いずれも動作状態であるディスクアレイ装置のファームウェア更新方法であって、前記第１のコントローラが、前記第１のコントローラのファームウェアのうち更新すべき部分である更新部分の更新処理が失敗したときに、前記第２のコントローラのファームウェアの更新部分の更新処理についても失敗したか否かを確認する第１のステップと、前記第２のコントローラの前記ファームウェアの更新部分の更新処理が正常に完了している場合には、前記第２のコントローラの更新部分のファームウェアデータを取得して、前記第１のコントローラの更新部分のファームウェアデータを前記第２のコントローラの更新部分のファームウェアデータに書き換える第２のステップと、を備えることを特徴とするディスクアレイ装置のファームウェア更新方法である。
【００９１】
（付記７）ホスト装置から送信される要求又はデータに対して所定の処理を実行するコントローラを備え、前記コントローラは、ファームウェアを格納するための格納領域を備え、保守端末から送信されるファームウェア更新データに基づいて、前記ファームウェアの更新すべき部分である更新部分の更新処理を実行し、前記ファームウェアの更新部分の更新処理が失敗したときに、前記保守端末からファームウェア更新データを再度取得して、前記のファームウェアの更新部分の更新処理を再度実行することを特徴とするディスクアレイ装置である。
【符号の説明】
【００９２】
１……ストレージシステム、２……ホスト装置、３……ディスクアレイ装置、４……保守端末、５……記憶装置、６……磁気ディスク装置、１１Ａ……第１のホストディレクタ、１１Ｂ……第２のホストディレクタ、１２Ａ……第１のキャッシュモジュール、１２Ｂ……第２のキャッシュモジュール、１３Ａ……第１のディスクディレクタ、１３Ｂ……第２のディスクディレクタ、１４Ａ……第１のサービスプロセッサ、１４Ｂ……第２のサービスプロセッサ、２１Ａ、２１Ｂ……ホスト装置制御部、２２Ａ、２２Ｂ、３３Ａ、３３Ｂ、４２Ａ、４２Ｂ、５２Ａ、５２Ｂ……マイクロプロセッサ、２３Ａ、２３Ｂ、３４Ａ、３４Ｂ、４３Ａ、４３Ｂ、５３Ａ、５３Ｂ……ＦＲＯＭ、２４Ａ、２４Ｂ、３５Ａ、３５Ｂ、４４Ａ、４４Ｂ、５４Ａ、５４Ｂ……ＲＡＭ、２５Ａ、２５Ｂ、３６Ａ、３６Ｂ、４５Ａ、４５Ｂ、５５Ａ、５５Ｂ……通信制御部、２６Ａ、２６Ｂ、３７Ａ、３７Ｂ、４６Ａ、４６Ｂ、５６Ａ、５６Ｂ……ＬＥＤ制御部、２７……ファームウェア、２８……ファームウェア更新データ、２９……内部バス、３１Ａ、３１Ｂ……キャッシュメモリ、４１Ａ、４１Ｂ……磁気ディスク制御部、５１Ａ、５１Ｂ……保守Ｉ／Ｆ制御部、６１……ブートローダ、６２……エマージェンシープログラム、６３……ヘッダ情報、６４……ファームウェアデータ、６５……ＣＲＣ
【図１】
0005152603.tif 000002
【図２】
0005152603.tif 000003
【図３】
0005152603.tif 000004
【図４】
0005152603.tif 000005