(57)【要約】【課題】  冗長化されたコントローラを有するストレージサブシステムにおいて、コストを抑えつつ、業務を停止することなくファームウェア置換を行うストレージサブシステムを等提供する。【解決手段】  本発明のストレージサブシステムは、ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラと、ホストコンピュータの発行したＩ／Ｏ要求を基に、ストレージに対して書込み／読出し処理を行う第２のコントローラと、第１のコントローラのファームウェア置換時において、ホストコンピュータが第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、第１のコントローラから第２のコントローラに切替えるホストインタフェース切替部とを含む。【選択図】      図１
2009230484.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラと、
前記ホストコンピュータの発行したＩ／Ｏ要求を基に、前記ストレージに対して書込み／読出し処理を行う第２のコントローラと、
前記第１のコントローラのファームウェア置換時において、ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、前記第１のコントローラから前記第２のコントローラに切替えるホストインタフェース切替部と
を含むストレージサブシステム。
【請求項２】
前記第１のコントローラに含まれ、前記ホストコンピュータと前記第１のコントローラとの間のＩ／Ｏ処理を行う第１のホストインタフェース制御部と、
前記第２のコントローラに含まれ、前記ホストコンピュータと前記第２のコントローラとの間のＩ／Ｏ処理を行う第２のホストインタフェース制御部と
を含み、
前記ホストインタフェース切替部は、前記第１のコントローラのファームウェア置換時に、前記ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求の入力先を、前記第１のホストインタフェース制御部から前記第２のホストインタフェース制御部に切替える
請求項１に記載のストレージサブシステム。
【請求項３】
前記ホストインタフェース切替部は前記第１のコントローラに含まれる第１のホストインタフェース切替部であり、
前記第２のコントローラに含まれ、前記第２のコントローラのファームウェア置換時に、前記ホストコンピュータが前記第２のコントローラに対して発行したＩ／Ｏ要求の入力先を前記第２のホストインタフェース制御部から前記第１のホストインタフェース制御部に切替える第２のホストインタフェース切替部
を含む請求項２に記載のストレージサブシステム。
【請求項４】
前記第２のコントローラは、前記ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求を処理した後、前記第１のコントローラがＩ／Ｏ要求を処理したものと偽装して前記ホストコンピュータにＩ／Ｏ要求に対する処理の終了通知を出力する
請求項１乃至３のいずれかに記載のストレージサブシステム。
【請求項５】
前記第２のコントローラは、Ｉ／Ｏ要求に対する処理の終了通知におけるフレームの送信元識別子のフィールドに、前記第１のコントローラのホスト接続ポートの識別子を組込む
請求項４に記載のストレージサブシステム。
【請求項６】
ストレージサブシステムに対してＩ／Ｏ要求を発行するホストコンピュータと、
前記ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラと、前記ホストコンピュータの発行したＩ／Ｏ要求を基に、前記ストレージに対して書込み／読出し処理を行う第２のコントローラと、前記第１のコントローラのファームウェア置換時において、ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、前記第１のコントローラから前記第２のコントローラに切替えるホストインタフェース切替部とを含む前記ストレージサブシステムと
を含むストレージシステム。
【請求項７】
ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラのファームウェア置換時に、
前記ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、前記第１のコントローラから、ホストの発行したＩ／Ｏ要求を基に前記ストレージに対して書込み／読出し処理を行う第２のコントローラに切替える
ストレージサブシステムのファームウェア置換方法。
【請求項８】
第１のコントローラのファームウェア置換時に、
前記ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求の入力先を、
前記第１のコントローラに含まれ、前記ホストコンピュータと前記第１のコントローラとの間のホストインタフェースのＩ／Ｏ処理を行う第１のホストインタフェース制御部から、
前記第２のコントローラに含まれ、前記ホストコンピュータと前記第２のコントローラとの間のホストインタフェースのＩ／Ｏ処理を行う第２のホストインタフェース制御部に切替える
請求項８に記載のストレージサブシステムのファームウェア置換方法。
【請求項９】
前記第２のコントローラのファームウェア置換時に、前記ホストコンピュータが前記第２のコントローラに対して発行したＩ／Ｏ要求の入力先を前記第２のホストインタフェース制御部から前記第１のホストインタフェース制御部に切替える
請求項８に記載のストレージサブシステムのファームウェア置換方法。
【請求項１０】
前記ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求を前記第２のコントローラが処理した後、前記第１のコントローラがＩ／Ｏ要求を処理したものと偽装して前記ホストコンピュータにＩ／Ｏ要求に対する処理の終了通知を出力する
請求項７乃至９のいずれかに記載のストレージサブシステムのファームウェア置換方法。
【請求項１１】
前記第２のコントローラは、Ｉ／Ｏ要求に対する処理の終了通知におけるフレームの送信元識別子のフィールドに、前記第１のコントローラのホスト接続ポートの識別子を組込む
請求項１０に記載のストレージサブシステムのファームウェア置換方法。
【請求項１２】
コンピュータに、
ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラのファームウェア置換時に、
前記ホストコンピュータが前記第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、前記第１のコントローラから、ホストの発行したＩ／Ｏ要求を基に前記ストレージに対して書込み／読出し処理を行う第２のコントローラに切替える制御を行う手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージサブシステム、ストレージシステム、ファームウェア置換方法、及びプログラムに関する。本発明は、特に、冗長化されたコントローラを有するストレージサブシステム、ストレージシステム、ストレージサブシステムのファームウェア置換方法、及びプログラムに関する。
【背景技術】
【０００２】
ストレージサブシステム、例えば、ディスクアレイサブシステムは、コントローラのファームウェアを置換した場合、置換後の新しいファームウェアで動作させるためにディスクアレイサブシステムのコントローラの再起動が必要になる。ディスクアレイサブシステムは、コントローラの再起動中にはＩ／Ｏ要求を処理することができないため、業務そのものを停止する必要がある。ここで、障害に備えて、ディスクアレイサブシステムがコントローラを冗長化（例えば、２重化）している場合がある。この場合でも、ホストコンピュータとディスクアレイサブシステム間のアクセスパスがシングルパス構成の場合、例えば、片方のコントローラのファームウェア交換時に、保守員がアクセスパスを他方のコントローラに物理的に切替える必要がある。具体的には、保守員が、片方のコントローラからケーブルを抜き取り、他方のコントローラに接続する必要がある。その結果、ディスクアレイサブシステムは、業務を停止する必要がある。
【０００３】
業務停止を回避する方法として例えば以下の方法がある。２４時間３６５日業務停止できないユーザのディスクアレイサブシステムは、障害に備えて、コントローラのみならずホストコンピュータとディスクアレイサブシステムとの間のアクセスパスを冗長化（例えば、２重化）することができる。また、ホストコンピュータは、片方のパスに障害が発生した場合に、他方のパスに切替えるパス冗長化ドライバ（パス冗長化ソフトウェア）を導入できる。この障害対策用の冗長構成を利用して、ディスクアレイサブシステムの一方のコントローラの再起動時に、ホストコンピュータは、他方のコントローラにＩ／Ｏ要求を発行するようにアクセスパスを切替えることができる。この処理により、ディスクアレイサブシステムは、業務を停止することなくファームウェアの置換を行うことができる。
【０００４】
しかし、この方法は、アクセスパスの冗長化のためのハードウェアとホストコンピュータへのパス冗長化ドライバの導入を行う必要があるため、工数、コストがかかる。
【０００５】
特許文献１は、活性ファームウェア交換装置を開示している。活性ファームウェア交換装置は、コントローラ・モジュールＣＭ０とＣＭ１それぞれにおいて、２個のＣＰＵを搭載している。活性ファームウェア交換装置は、ＣＰＵ単位でのファームウェア活性交換を行うように制御し、ファームウェア活性交換中のパス切れを防止する。これにより、特許文献１は、活性ファームウェア交換装置が、ホスト装置が切断されていないコントロール部にだけコマンドを発行し、ファームウェアの交換が完了したら元の並列運転に戻すという複雑な制御を必要としない、としている。
【０００６】
また、本発明に関連する技術文献として、特許文献２が挙げられる。特許文献２は、ストレージ装置を開示している。ストレージ装置は、１つのディスクアダプタあるいは１つの相互結合網において障害が発生したときにもディスク装置が使用できるように、１つのディスク装置に２つのディスクアダプタが異なる相互結合網で接続されている。
【０００７】
【特許文献１】特開２００６−３３８２１７号公報（要約、第１図、段落００１０，００１７）
【特許文献２】特開２００５−１４９４３６号公報（段落００２１）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した特許文献１に記載の活性ファームウェア交換装置は、コストがかかるという課題があった。即ち、活性ファームウェア交換装置は、１つのコントローラ・モジュールあたり２つのＣＰＵと２つのファームウェア保持部を搭載すること、それに伴う搭載面積増加、発熱対策、消費電力対策などでコストがかかる。
【０００９】
本発明の目的は、上記課題を解決するストレージサブシステム、ストレージシステム、ファームウェア置換方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明のストレージサブシステムは、ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラと、ホストコンピュータの発行したＩ／Ｏ要求を基に、ストレージに対して書込み／読出し処理を行う第２のコントローラと、第１のコントローラのファームウェア置換時において、ホストコンピュータが第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、第１のコントローラから第２のコントローラに切替えるホストインタフェース切替部とを含む。
【００１１】
本発明のストレージシステムは、ストレージサブシステムに対してＩ／Ｏ要求を発行するホストコンピュータと、ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラと、ホストの発行したＩ／Ｏ要求を基に、ストレージに対して書込み／読出し処理を行う第２のコントローラと、第１のコントローラのファームウェア置換時において、ホストコンピュータが第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、第１のコントローラから第２のコントローラに切替えるホストインタフェース切替部と、を含むストレージサブシステムとを含む。
【００１２】
本発明のプログラムは、コンピュータに、ホストコンピュータの発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージに対して書込み／読出し処理を行う第１のコントローラのファームウェア置換時に、ホストコンピュータが第１のコントローラに対して発行したＩ／Ｏ要求の処理先を、第１のコントローラから、ホストの発行したＩ／Ｏ要求を基にストレージに対して書込み／読出し処理を行う第２のコントローラに切替える制御を行う手段として機能させるためのプログラムである。
【発明の効果】
【００１３】
本発明は、冗長化されたコントローラを有するストレージサブシステムにおいて、コストの増加を抑えつつ、業務を停止することなくファームウェア置換を行うストレージサブシステム等を提供することができる。
【発明を実施するための最良の形態】
【００１４】
次に、本発明の概要について説明する。
【００１５】
図１は、本発明の概要構成を説明する図である。本発明のストレージシステム１０１は、ホストコンピュータ００１とストレージサブシステム０１１とを含む。ストレージサブシステム０１１は、コントローラ０２０とコントローラ０３０とストレージ０５３とを含む。コントローラ０２０は、ホストインタフェース切替部０２１を含む。
【００１６】
コントローラ０２０は、一般的に、第１のコントローラと呼ぶことができ、ホストコンピュータ００１の発行したＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を基に、ストレージ０５３に対して書込み／読出し処理を行う。
【００１７】
コントローラ０３０は、一般的に、第２のコントローラと呼ぶことができ、ホストコンピュータ００１の発行したＩ／Ｏ要求を基に、ストレージ０５３に対して書込み／読出し処理を行う。
【００１８】
ホストインタフェース切替部０２１は、コントローラ０２０のファームウェア置換時において、ホストコンピュータ００１がコントローラ０２０に対して発行したＩ／Ｏ要求の処理先を、コントローラ０２０からコントローラ０３０に切替える。
【００１９】
これにより、本発明は、冗長化されたコントローラ０２０，０３０を有するストレージサブシステム０１１が、コストを抑えつつ、業務を停止することなくコントローラ０２０のファームウェア置換を行うことができる、という効果を有する。
【００２０】
次に、本発明の実施の形態について図面を参照して詳細に説明する。まず、本発明の実施の形態の構成について説明する。
【００２１】
図２は、ディスクアレイシステム１００の構成を示す図である。
【００２２】
ディスクアレイシステム１００は、一般的なストレージシステム１０１であってよい。ディスクアレイシステム１００は、ホストコンピュータ００１と、ディスクアレイサブシステム０１０と、両者間を接続するホストインタフェースケーブル０７０，０７１とを含む。また、ディスクアレイシステム１００は、保守用端末０８０と、ディスクアレイサブシステム０１０のＳＶＰ０２４，０３４と保守用端末０８０とを接続するＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ケーブルとを含む。
【００２３】
ホストコンピュータ００１は、アプリケーション００２と、ファイルシステム００３と、上位ドライバ００４と、パス冗長化ドライバ００５と、下位ドライバ００６と、ＨＢＡ００７，００８と、接続ポート００７ａ，００８ａとを含む。
【００２４】
アプリケーション００２は、ホストコンピュータ００１のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、図示せず）が実行する任意のアプリケーションプログラムである。アプリケーション００２は、論理ディスク０５０，０５１，０５２に対するファイルの書込み／読出し要求のコマンドを含むＩ／Ｏ要求をファイルシステム００３に出力する。
【００２５】
ファイルシステム００３は、上位ドライバ００４と共同して、ファイルのファイル名と論理ディスク０５０，０５１，０５２上の格納位置との対応付けを行う。格納位置は、例えば、Ｔａｒｇｅｔ  ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）、ＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）である。
【００２６】
上位ドライバ００４は、ファイルシステム００３を介してアプリケーション００２から入力したＩ／Ｏ要求をパス冗長化ドライバ００５に出力する。
【００２７】
パス冗長化ドライバ００５は、上位ドライバ００４から入力したＩ／Ｏ要求を下位ドライバ００６に出力する。また、パス冗長化ドライバ００５は、ＨＢＡ００７又は００８（Ｈｏｓｔ Ｂｕｓ Ａｄａｐｔｅｒ）を介してディスクアレイサブシステム０１０が制御する論理ディスク０５０，０５１，０５２に対するＩ／Ｏ要求の実行結果を下位ドライバ００６から入力する。そして、パス冗長化ドライバ００５は、正常終了又異常終了の判断を行う。ここで、パス冗長化ドライバ００５が、異常終了の原因がパスの構成要素（ＨＢＡ００７，００８、ホストインタフェースケーブル０７０，０７１、コントローラ０２０，０３０等）における障害（故障）と判断したとする。この場合、パス冗長化ドライバ００５は、代替パスを用いて異常終了したＩ／Ｏ要求のリトライ処理を行う。
【００２８】
下位ドライバ００６は、ＨＢＡ００７，００８を制御しＩ／Ｏ処理を行う。
【００２９】
ＨＢＡ００７，００８（Ｈｏｓｔ Ｂｕｓ Ａｄａｐｔｅｒ）は、それぞれ接続ポート００７ａ，００８ａと、ホストインタフェースケーブル０７０，０７１を介してディスクアレイサブシステム０１０に接続される。
【００３０】
接続ポート００７ａ，００８ａは、ホストインタフェースケーブル０７０，０７１が接続されるポートである。接続ポート００７ａ，００８ａは、それぞれ、識別子「Ｉ−ａ」と「Ｉ−ｂ」とが割当てられている。
【００３１】
ディスクアレイサブシステム０１０は、ホスト接続ポート０２８，０３８と、コントローラ０２０，０３０と、論理ディスク０５０，０５１，０５２とを含む。ディスクアレイサブシステム０１０は、一般的なストレージサブシステム０１１であってよい。
【００３２】
ホスト接続ポート０２８，０３８は、それぞれ、ホストインタフェースケーブル０７０，０７１と後述のホストインタフェース切替部０２１，０３１とに接続される。ホスト接続ポート０２８，０３８は、それぞれ、識別子「Ｔ−２０」と「Ｔ−３０」とが割当てられている。
【００３３】
コントローラ０２０，０３０は、冗長構成のコントローラであり、いずれも同じ構成、機能を備えている。以下、コントローラ０２０を中心に説明するが、同じ説明が、コントローラ０３０にも当てはまる。コントローラ０３０と、ホストインタフェース切替部０３１と、ホストインタフェース制御部０３２の説明は特に必要な場合を除いて省略する。同様に、ＣＰＵ０３３と、ＳＶＰ０３４と、メモリ領域０３５と、ファームウェア記憶領域０３６と、ディスク制御部０３７と内部バス０６１の説明は特に必要な場合を除いて省略する。
【００３４】
コントローラ０２０は、内部バス０４１を介して論理ディスク０５０，０５１，０５２に接続されている。コントローラ０２０は、ホストコンピュータ００１の発行したＩ／Ｏ要求を基に、論理ディスク０５０，０５１，０５２に対して書込み／読出し処理を行う。
【００３５】
コントローラ０２０は、ホストインタフェース切替部０２１と、ホストインタフェース制御部０２２と、ＣＰＵ０２３と、ＳＶＰ０２４（Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｓｏｒ）とを含む。また、コントローラ０２０は、メモリ領域０２５と、ファームウェア記憶領域０２６と、ディスク制御部０２７とを含む。
【００３６】
ホストインタフェース切替部０２１は、ホストインタフェース制御部０２２と接続するか、内部バス０６０を介してコントローラ０３０のホストインタフェース制御部０３２に接続するかを切替えることができる。よって、ホストインタフェース切替部０２１は、コントローラ０２０のファームウェア置換時において、ホストコンピュータ００１がコントローラ０２０に対して発行したＩ／Ｏ要求の処理先を、コントローラ０２０からコントローラ０３０に切替えることができる。即ち、ホストインタフェース切替部０２１は、Ｉ／Ｏ要求の処理先をホストインタフェース制御部０２２からホストインタフェース制御部０３２に切替え、Ｉ／Ｏ要求をホストインタフェース制御部０３２に出力することができる。尚、ホストインタフェース切替部０２１は第１のホストインタフェース切替部、ホストインタフェース切替部０３１は、第２のホストインタフェース切替部と呼ぶことができる。
【００３７】
ホストインタフェース制御部０２２については、ホストインタフェース制御部０３２と共に説明する。ホストインタフェース制御部０２２，０３２は、ホストコンピュータ００１とコントローラ０２０，０３０との間のホストインタフェースのＩ／Ｏ処理（入出力、フレームの解体、組立等）を行う。
【００３８】
ホストインタフェース制御部０２２は、ホストコンピュータ００１がコントローラ０３０に対して発行したＩ／Ｏ要求をコントローラ０３０に代わってコントローラ０２０が処理した場合に、以下のように動作する。ホストインタフェース制御部０２２は、コントローラ０３０がＩ／Ｏ要求を処理したものと偽装してホストコンピュータ００１にＩ／Ｏ要求に対する処理の終了通知を出力する。即ち、まず、ファームウェアを実行するＣＰＵ０２３が、コントローラ０３０のホスト接続ポート０３８の識別子（Ｔ−３０）を準備する。ホストインタフェース制御部０２２は、Ｉ／Ｏ要求に対する処理の終了通知におけるフレームの送信元識別子のフィールドに、コントローラ０３０のホスト接続ポート０３８の識別子（Ｔ−３０）を組込む。
【００３９】
逆に、ホストインタフェース制御部０３２は、ホストコンピュータ００１がコントローラ０２０に対して発行したＩ／Ｏ要求をコントローラ０２０に代わってコントローラ０３０が処理した場合に、以下のように動作する。ホストインタフェース制御部０３２は、コントローラ０２０がＩ／Ｏ要求を処理したものと偽装してホストコンピュータ００１にＩ／Ｏ要求に対する処理の終了通知を出力する。即ち、まず、ファームウェアを実行するＣＰＵ０３３が、コントローラ０２０のホスト接続ポート０２８の識別子（Ｔ−２０）を準備する。ホストインタフェース制御部０３２は、Ｉ／Ｏ要求に対する処理の終了通知におけるフレームの送信元識別子のフィールドに、コントローラ０２０のホスト接続ポート０２８の識別子（Ｔ−２０）を組込む。
【００４０】
ＣＰＵ０２３は、中央処理装置である。ＣＰＵ０２３は、プログラム記憶媒体（本実施の形態では、ファームウェア記憶領域０２６）に記憶されたプログラム（ファームウェア）を図示しない内部記憶部に格納する。ＣＰＵ０２３は、内部記憶部に格納されたプログラム（ファームウェア）を実行することにより、コントローラ０２０全体の制御を行う。以下、ＣＰＵ０２３と記載したときは、ファームウェアを実行しているＣＰＵ０２３を示すものとする。
【００４１】
ＳＶＰ０２４（Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｓｏｒ）は、ディスクアレイサブシステム０１０全体の管理／監視を行う。また、ＳＶＰ０２４は、ユーザインタフェースを提供する保守用端末０８０とＬＡＮケーブル０７２で接続されている。
【００４２】
メモリ領域０２５は、各種制御情報の格納領域や作業領域、データキャッシュとして使用されるメモリである。
【００４３】
ファームウェア記憶領域０２６は不揮発メモリもしくは媒体（例、光ディスク、フレキシブルディスク）であり、ファームウェアを記憶する。
【００４４】
ディスク制御部０２７は内部バス０４１を介して論理ディスク０５０，０５１，０５２の入出力処理を行う。
【００４５】
コントローラ０２０とコントローラ０３０は内部バス０４０を介して接続され、相互に各種制御情報やＩ／Ｏ処理に伴うデータの交換を行うことができる。
【００４６】
図３は、制御情報を示す図である。制御情報は、ホストコンピュータ００１が発行するＩ／Ｏ要求をディスクアレイサブシステム０１０が処理する際に使用する各種制御情報であり、メモリ領域０２５に格納されている。代行処理に必要となる制御情報は、ホスト接続ポート０２８，０３８の識別子と、ＨＢＡ００７，００８の接続ポート００７ａ，００８ａの識別子とを含む。又、代行処理に必要となる制御情報は、Ｔａｒｇｅｔ  ＩＤと、ＬＵＮと、論理ディスク番号とを含む。
【００４７】
ホスト接続ポート０２８，０３８の識別子は、コントローラ０２０，０３０それぞれのホスト接続ポート０２８，０３８を一意に識別するための情報である。ホスト接続ポート０２８，０３８の識別子は、ディスクアレイサブシステム０１０の工場出荷時に格納される。
【００４８】
ＨＢＡ００７，００８の接続ポート００７ａ、００８ａの識別子は、ホストコンピュータ００１のＨＢＡ００７，００８それぞれの接続ポート００７ａ，００８ａを一意に識別するための情報である。接続ポート００７ａ，００８ａの識別子は、ＨＢＡ００７，００８の工場出荷時にＨＢＡ００７，００８に格納される。そして、ＨＢＡ００７，００８がホストインタフェースケーブル０７０，０７１を介してディスクアレイサブシステム０１０に接続されるときに、ディスクアレイサブシステム０１０がＨＢＡ００７，００８から接続ポート００７ａ、００８ａの識別子を読出す。そして、ディスクアレイサブシステム０１０は、メモリ領域０２５へ接続ポート００７ａ、００８ａの識別子を格納する。
【００４９】
Ｔａｒｇｅｔ  ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）とＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）は、両方の情報を用いることにより論理デバイスを一意に識別することができる情報である。ディスクアレイサブシステム０１０は、ホストコンピュータ００１のＩ／Ｏ要求を入力し、そのＩ／Ｏ要求のフレーム内部にあるＴａｒｇｅｔ  ＩＤとＬＵＮを入力する。そのとき、ディスクアレイサブシステム０１０は、Ｔａｒｇｅｔ  ＩＤとＬＵＮに論理ディスク番号を割り当て、メモリ領域０２５に格納する。尚、論理デバイスと論理ディスクは同じものである。論理デバイスは、ホストコンピュータ００１から見たときの名称である。
【００５０】
論理ディスク番号は、ディスクアレイサブシステム０１０内で論理ディスク０５０，０５１，０５２を一意に識別するための情報である。ディスクアレイサブシステム０１０は、論理ディスク番号が重ならないように論理ディスク番号を生成する。
【００５１】
ＣＰＵ０２３，０３３は、Ｉ／Ｏ要求に含まれるコマンド解析時において図３の制御情報を参照することにより、ホストコンピュータ００１とホスト接続ポート０２８，０３８との接続関係がわかる。また、ＣＰＵ０２３，０３３は、論理ディスク０５０，０５１，０５２に対するＩ／Ｏ要求を処理、制御するための一連の関係がわかる。即ち、ＣＰＵ０２３，０３３は、ホストコンピュータ００１からＴａｒｇｅｔ  ＩＤ及びＬＵＮを入力し、対応する論理ディスク番号を調べ、論理ディスク０５０，０５１，０５２にアクセスする。
【００５２】
図４は、ホストコンピュータ００１とコントローラ０２０，０３０間のＩ／Ｏに使用されるフレームの概略図である。ホストコンピュータ００１のＨＢＡ００７とコントローラ０２０のホスト接続ポート０２８との間で受け渡しされるフレームには、送信先識別子及び送信元識別子が存在する。
【００５３】
図４（ａ）は、ホストコンピュータ００１のＨＢＡ００７の接続ポート００７ａ（識別子：Ｉ−ａ）から、コントローラ０２０のホスト接続ポート０２８（識別子：Ｔ−２０）へ転送されるフレームの概略図の例である。
【００５４】
図４（ｂ）は、コントローラ０２０のホスト接続ポート０２８（識別子：Ｔ−２０）から、ホストコンピュータ００１のＨＢＡ００７の接続ポート００７ａ（識別子：Ｉ−ａ）へ転送されるフレームの概略図の例である。
【００５５】
上位ドライバ００４とＣＰＵ０２３が、識別子をフレームに組込む。尚、図４では省略したが、フレームは、データのフィールドに、ホストコンピュータ００１のコマンド（例えば、書込み／読出し要求等の種別を示す）、Ｔａｒｇｅｔ  ＩＤ、及びＬＵＮを格納することができる。
【００５６】
以上で、本発明の実施の形態の構成の説明を終了する。
【００５７】
次に、本発明の実施の形態の動作について説明する。本実施の形態では、コントローラ０２０のファームウェア置換を行う場合について説明する。コントローラ０３０のファームウェア置換は、コントローラ０２０とコントローラ０３０の処理を入れ換えることにより行うことができる。
【００５８】
図５は、コントローラ０２０のファームウェアダウンロード処理を示すフローチャートである。まず、ＳＶＰ０２４が、保守用端末０８０からファームウェアを入力する（Ｓ１０１）。次に、ＳＶＰ０２４が、ファームウェアの正当性がＯＫか判断する。即ち、ＳＶＰ０２４が、転送されたファームウェアに矛盾などが無いか判断する（Ｓ１０２）。ファームウェアの正当性がＯＫの場合（Ｓ１０２，Ｙｅｓ）、ＳＶＰ０２４は、ファームウェアをファームウェア記憶領域０２６へ格納し（Ｓ１０３）、コントローラ０２０のファームウェアダウンロード処理は終了する。ファームウェアの正当性がＯＫではない場合（Ｓ１０２，Ｎｏ）、コントローラ０２０のファームウェアダウンロード処理は、異常終了処理へ移行する（Ｓ１０４）。
【００５９】
図６は、コントローラ０２０のファームウェア置換処理を示すフローチャートである。図６、図７に示す切替え処理のステップ（Ｓ２０７，Ｓ２０９，Ｓ３０７）は、切替前から切替えたい方向に切替わっている場合もある。例えば、Ｓ３０７の処理の前に、ホストインタフェース切替部０２１がホストインタフェース制御部０３２へ切替わっていることもある。切替え処理のステップ（Ｓ２０７，Ｓ２０９，Ｓ３０４，Ｓ３０７，Ｓ３０９）は、マルチタスク環境下で他のタスクにより知らない間に切替が行われていた場合に対応して、切替を確実にするための処理である。このようなマルチタスク環境下に無い場合、例えば、Ｓ２０７，Ｓ２０９，Ｓ３０７の処理は省略可能である。以下、ホストコンピュータ００１からのＩ／Ｏ要求が論理ディスク０５０に対するデータ読出しであり、当該Ｉ／Ｏ要求が正常に処理される場合を想定して説明する。
【００６０】
まず、コントローラ０２０が、コントローラ０３０へファームウェア置換開始通知を出力する（Ｓ２０１）。即ち、ＣＰＵ０２３は内部バス０４０を経由して、コントローラ０２０のファームウェアの置換処理を開始することを、コントローラ０３０のＣＰＵ０３３へ通知する。コントローラ０２０は、コントローラ０２０のファームウェア置換に伴う再起動中はホストコンピュータ００１から発行される新たなＩ／Ｏ要求を処理することができない。そのため、コントローラ０２０はコントローラ０３０に代行処理を依頼するためにＳ２０１の処理を行う。尚、ＣＰＵ０２３は、ファームウェアを実行することによりコントローラ０２０内の各部の制御等の機能を実現する。以下、動作の説明においても、ＣＰＵ０２３と記載した場合は、ファームウェアを実行しているＣＰＵ０２３を示すものとする。
【００６１】
次に、コントローラ０２０が、コントローラ０３０へ制御情報を出力する（Ｓ２０２）。即ち、ＣＰＵ０２３が、メモリ領域０２５に格納された制御情報を、内部バス０４０を経由してコントローラ０３０のＣＰＵ０３３へ出力する。
【００６２】
次に、コントローラ０２０が、未処理のＩ／Ｏ要求があるか判断する（Ｓ２０３）。即ち、ＣＰＵ０２３が、自身が処理中のホストコンピュータ００１からのＩ／Ｏ要求の有無を判断する。
【００６３】
次に、未処理のＩ／Ｏ要求がある場合は（Ｓ２０３，Ｙｅｓ）、コントローラ０２０が、ホストインタフェース切替部０２１をホストインタフェース制御部０２２へ切替える（Ｓ２０７）。即ちＣＰＵ０２３が、ホストインタフェース制御部０２２を介してホストインタフェース切替部０２１を制御し、ホストインタフェース切替部０２１がホストインタフェース制御部０２２と接続するように接続を切替える。尚、このときＣＰＵ０２３は、ホストインタフェース切替部０２１をロックし、ホストインタフェース切替部０２１は、Ｓ２０８の処理が終わるまで切替を行うことはできない。これにより、後述のＳ３０４、Ｓ３０７、Ｓ３０９のコントローラ０３０からの切替え指示によりコントローラ０２０のＳ２０８の処理が中断することは無い。
【００６４】
次に、コントローラ０２０が、未処理のＩ／Ｏ要求を処理する（Ｓ２０８）。即ち、まず、ＣＰＵ０２３が、Ｉ／Ｏ要求に対してコマンド解析を行う。例えば、ホストコンピュータ００１がコントローラ０２０に出力したＩ／Ｏ要求において、ホストコンピュータ００１がＴａｒｇｅｔ  ＩＤ＝０、ＬＵＮ＝２を指定していたとする。ＣＰＵ０２３は、図３に示す制御情報を参照し、論理ディスク番号＝０５０に対するデータ読出しであると解釈する。
【００６５】
そして、ＣＰＵ０２３は、メモリ領域０２５のデータキャッシュ領域を確保し、ディスク制御部０２７を制御して、論理ディスク０５０からデータを読出す。ＣＰＵ０２３は、当該データを、内部バス０４０を介してメモリ領域０２５のデータキャッシュ領域に格納する。そして、ＣＰＵ０２３は、ホストインタフェース制御部０２２、ホストインタフェース切替部０２１、ホスト接続ポート０２８、ホストインタフェースケーブル０７０を介して、ホストコンピュータ００１のＨＢＡ００７に当該データを出力する。
【００６６】
尚、ステップＳ２０７の説明では、データキャッシュ領域をメモリ領域０２５のみに確保したが、ＣＰＵ０２３は、共有キャッシュとして、同時にメモリ領域０３５上にも確保してもよい。そして、ＣＰＵ０２３は、論理ディスク０５０から読出したデータを、内部バス０４０を介してメモリ領域０２５のデータキャッシュ領域に格納するとともに、メモリ領域０３５のデータキャッシュ領域に格納（キャッシュへのデータ二重書き）してもよい。
【００６７】
次に、コントローラ０２０が、ホストインタフェース切替部０２１をホストインタフェース制御部０２２へ切替える（Ｓ２０９）。即ちＣＰＵ０２３が、ホストインタフェース制御部０２２を介してホストインタフェース切替部０２１を制御し、ホストインタフェース切替部０２１がホストインタフェース制御部０２２と接続するように接続を切替える。尚、このときＣＰＵ０２３は、ホストインタフェース切替部０２１をロックし、ホストインタフェース切替部０２１は、Ｓ２１０の処理が終わるまで切替を行うことはできない。これにより、後述のＳ３０４、Ｓ３０７、Ｓ３０９のコントローラ０３０からの切替え指示によりコントローラ０２０のＳ２１０の処理が中断することは無い。
【００６８】
次に、コントローラ０２０が、ホストコンピュータ００１へＩ／Ｏ要求に対するの終了報告を出力する（Ｓ２１０）。即ち、ＣＰＵ０２３は、当該Ｉ／Ｏ要求に対する処理に対する正常終了報告を、ホストインタフェース制御部０２２、ホストインタフェース切替部０２１、ホスト接続ポート０２８、ホストインタフェースケーブル０７０を介して、ホストコンピュータ００１のＨＢＡ００７に出力する。
【００６９】
そして、コントローラ０２０のファームウェア置換処理は、再びＳ２０３に戻る。ＣＰＵ０２３は、処理中のＩ／Ｏ要求がある限り、ステップＳ２０３、ステップＳ２０７、ステップＳ２０８、ステップＳ２０９、ステップＳ２１０の処理を繰り返す。
【００７０】
ステップ２０３において、未処理のＩ／Ｏ要求が無い場合（Ｓ２０３，Ｎｏ）、コントローラ０２０はコントローラ０２０の再起動を実施する（Ｓ２０４）。ここで、未処理のＩ／Ｏ要求が無い場合（Ｓ２０３，Ｎｏ）、ＣＰＵ０２３には、処理中のＩ／Ｏ要求は無い。また、コントローラ０２０のファームウェアダウンロード処理（図５）によって、ファームウェア記憶領域０２６は、新しいファームウェアを格納している。そして、ＣＰＵ０２３は、ファームウェアの置換を行うために、ＣＰＵ０２３の再起動を実施する。
【００７１】
そして、コントローラ０２０は、コントローラ０２０のファームウェアを置換する（Ｓ２０５）。即ち、ＣＰＵ０２３は、再起動の段階でファームウェア記憶領域０２６から新しいファームウェアを読み込んで内部記憶部に格納し、新しいファームウェアにてコントローラ０２０の制御を開始する。
【００７２】
コントローラ０２０が再度起動したら、コントローラ０２０が、コントローラ０３０へファームウェア置換終了通知を出力する（Ｓ２０６）。そして、コントローラ０２０のファームウェア置換処理は、終了する。
【００７３】
図７は、コントローラ０２０に代わってコントローラ０３０が行う処理を示すフローチャートである。コントローラ０２０がファームウェア置換に伴う再起動を行っているときに、ホストコンピュータ００１がコントローラ０２０に対して新たなＩ／Ｏ要求を発行する場合がある。このとき、コントローラ０３０は、通常の処理（ホストコンピュータ００１がコントローラ０３０に発行したＩ／Ｏ要求に対するの処理）に加え、図７に示された処理を行う。即ち、コントローラ０３０は、並列処理を行う。
【００７４】
これより先の説明は、以下の場合を想定して行う。まず、ホストコンピュータ００１のＩ／Ｏ要求が、ＨＢＡ００７、ホストインタフェースケーブル０７０を介して、コントローラ０２０のホスト接続ポート０２８に入力する。Ｉ／Ｏ要求は、Ｔａｒｇｅｔ ＩＤ＝０、ＬＵＮ＝２である論理ディスク０５０に対するデータ読出しであり、当該Ｉ／Ｏ要求は、正常に処理されるものとする。
【００７５】
まず、コントローラ０３０は、コントローラ０２０からファームウェア置換開始通知を入力したか判断する（Ｓ３０１）。即ち、ＣＰＵ０３３は、内部バス０４０を経由した、コントローラ０２０からのファームウェア置換処理開始通知の有無を判断し、置換処理開始通知があれば、Ｓ３０２以降で処理を行う。
【００７６】
次に、コントローラ０３０がファームウェア置換開始通知を入力していない場合（Ｓ３０１，Ｎｏ）、コントローラ０３０の代行処理は、再びＳ３０１の処理に戻る。コントローラ０３０が、コントローラ０２０からファームウェア置換開始通知を入力している場合（Ｓ３０１，Ｙｅｓ）、コントローラ０３０は、コントローラ０２０から制御情報を入力する（Ｓ３０２）。即ち、ＣＰＵ０３３は、ＣＰＵ０２３から内部バス０４０を経由して、メモリ領域０２５に格納された制御情報を入力し、メモリ領域０３５に格納する。
【００７７】
次に、コントローラ０３０のＣＰＵ０３３は、コントローラ０２０からファームウェア置換終了通知を入力したか判断する（Ｓ３０３）。
【００７８】
次に、コントローラ０３０がファームウェア置換終了通知を入力している場合（Ｓ３０３，Ｙｅｓ）、コントローラ０３０の代行処理は、Ｓ３０９の処理へ移行する。
【００７９】
コントローラ０３０がファームウェア置換終了通知を入力していない場合（Ｓ３０３，Ｎｏ）、コントローラ０３０は、ホストインタフェース切替部０２１をホストインタフェース制御部０３２へ切替える（Ｓ３０４）。コントローラ０３０がファームウェア置換終了通知を入力していない場合（Ｓ３０３，Ｎｏ）、コントローラ０２０がファームウェアの置換処理中であり、コントローラ０２０は、Ｉ／Ｏ要求を処理できない状態である。そこでＣＰＵ０３３は、ホストインタフェース切替部０２１をホストインタフェース制御部０３２へ切替える。これにより、例えば、Ｉ／Ｏ要求が、ホストコンピュータ００１のＨＢＡ００７からホストインタフェースケーブル０７０を介してコントローラ０２０のホスト接続ポート０２８に入力した場合に、ＣＰＵ０３３が、ＣＰＵ０２３に代わって代行処理を実施することが可能となる。
【００８０】
具体的には、ＣＰＵ０３３は、ホストインタフェース制御部０３２、内部バス０６０を介してホストインタフェース切替部０２１を制御し、ホストインタフェース切替部０２１がホストインタフェース制御部０３２と接続するように接続を切替える。このとき、ホストインタフェース切替部０２１がロックされている場合がある。Ｓ３０７，Ｓ３０９の処理についても、ホストインタフェース切替部０２１がロックされている場合がある。
【００８１】
図８は、Ｓ３０４，Ｓ３０７，Ｓ３０９の処理を説明するフローチャートである。ＣＰＵ０３３は、ホストインタフェース切替部０２１へ切替命令を出力する（Ｓ４０１）。そして、ホストインタフェース切替部０２１が切替わらなかった場合（Ｓ４０２，Ｎｏ）、ＣＰＵ０３３は、Ｓ４０１の処理に戻る。ホストインタフェース切替部０２１が切替わった場合（Ｓ４０２，Ｎｏ）、ＣＰＵ０３３は、Ｓ３０４，Ｓ３０７，又はＳ３０９の処理を終了する。
【００８２】
次に、コントローラ０３０は、ホストインタフェース切替部０２１経由のＩ／Ｏ要求を入力したかどうかを判断する（Ｓ３０５）。即ち、ＣＰＵ０３３は、ホストコンピュータ００１のＨＢＡ００７から、ホストインタフェースケーブル０７０を介して、コントローラ０２０のホスト接続ポート０２８に入力するＩ／Ｏ要求の有無を判断する。
【００８３】
ホストインタフェース切替部０２１経由のＩ／Ｏ要求を入力していない場合（Ｓ３０５，Ｎｏ）、コントローラ０３０の代行処理はＳ３０３の処理へ戻る。
【００８４】
ホストインタフェース切替部０２１経由のＩ／Ｏ要求を入力している場合（Ｓ３０５，Ｙｅｓ）、コントローラ０３０は、コントローラ０２０から入力した制御情報を基にＩ／Ｏ要求を処理する（Ｓ３０６）。まず、ホストインタフェース切替部０２１経由のＩ／Ｏ要求を入力している場合（Ｓ３０５，Ｙｅｓ）、コントローラ０２０が、ファームウェア置換処理中であり、Ｉ／Ｏ要求を処理できない状態である。そして、Ｉ／Ｏ要求が、ＨＢＡ００７から、ホストインタフェースケーブル０７０、コントローラ０２０のホスト接続ポート０２８、ホストインタフェース切替部０２１、内部バス０６０を介してホストインタフェース制御部０３２に入力した状態である。
【００８５】
この状態で、ＣＰＵ０３３は、Ｓ３０２でメモリ領域０３５に格納したコントローラ０２０の制御情報を使用し、コントローラ０２０のＣＰＵ０２３に代わってＩ／Ｏ要求の代行処理を実施する。具体的には、ＣＰＵ０３３は、Ｉ／Ｏ要求に対するコマンド解析を実施する。例えば、ホストコンピュータ００１がコントローラ０２０に出力したＩ／Ｏ要求において、ホストコンピュータ００１がＴａｒｇｅｔ  ＩＤ＝０、ＬＵＮ＝２を指定していたとする。ＣＰＵ０３３は、図３に示す制御情報を参照し、論理ディスク番号＝０５０の論理デバイスに対するデータ読出しであると解釈する。
【００８６】
ＣＰＵ０３３は、メモリ領域０３５のデータキャッシュ領域を確保した後、ディスク制御部０３７を制御して、論理ディスク０５０からデータを読出す。ＣＰＵ０３３は、データを、内部バス０４０を介してメモリ領域０３５のデータキャッシュ領域に格納する。ＣＰＵ０３３は、ホストインタフェース制御部０３２、内部バス０６０、ホストインタフェース切替部０２１、ホスト接続ポート０２８、ホストインタフェースケーブル０７０を介して、当該データをホストコンピュータ００１のＨＢＡ００７に出力する。
【００８７】
次に、コントローラ０３０は、ホストインタフェース切替部０２１をホストインタフェース制御部０３２へ切替える（Ｓ３０７）。即ち、ＣＰＵ０３３は、ホストインタフェース制御部０３２、内部バス０６０を介してホストインタフェース切替部０２１を制御し、ホストインタフェース切替部０２１がホストインタフェース制御部０３２と接続するように接続を切替える。
【００８８】
次に、コントローラ０３０は、Ｉ／Ｏ要求に対する処理の終了通知をホストコンピュータ００１へ出力する（Ｓ３０８）。即ち、ＣＰＵ０３３は、ホストコンピュータ００１に対しＩ／Ｏ要求に対する処理に対する正常終了報告を行う。ＣＰＵ０３３は、正常終了報告をホストインタフェース制御部０３２、内部バス０６０、ホストインタフェース切替部０２１、ホスト接続ポート０２８、ホストインタフェースケーブル０７０を経由して、ホストコンピュータ００１のＨＢＡ００７に出力する。
【００８９】
このとき、コントローラ０３０は、コントローラ０２０がＩ／Ｏ要求を処理したものと偽装してホストコンピュータ００１に対してＩ／Ｏ要求に対する処理の終了通知を出力する。即ち、ＣＰＵ０３３の制御の下、ホストインタフェース制御部０３２が、Ｉ／Ｏ要求に対する処理の偽装した終了通知を行うフレームを組立てる。図２に示すように、ＣＰＵ０３３とホストインタフェース制御部０３２は、コントローラ０３０に含まれる。そのため、ホストインタフェース制御部０３２は、本来であればホストコンピュータ００１へ出力するＩ／Ｏ要求のフレームの送信元識別子として、ホスト接続ポート０３８の識別子であるＴ−３０をフレームに組込むところである。しかしながら、Ｓ３０８においてはこれと異なる。ＣＰＵ０３３は、図３の制御情報を参照して、図４（ｂ）に示すように、送信元識別子として、コントローラ０２０のホスト接続ポート０２８の識別子であるＴ−２０をフレームに組込むことをホストインタフェース制御部０３２に指示する。これを受けて、ホストインタフェース制御部０３２は、Ｔ−２０をフレームに組込む。これにより、ディスクアレイサブシステム０１０は、ホストコンピュータ００１のＨＢＡ００７に対するデータ転送の論理的な値を保証しつつ、コントローラ０２０のファームウェアの代替処理を実現することができる。
【００９０】
次に、コントローラ０３０は、ホストインタフェース切替部０２１をホストインタフェース制御部０２２へ切替える（Ｓ３０９）。即ち、ＣＰＵ０３３は、ホストインタフェース制御部０３２、内部バス０６０を介してホストインタフェース切替部０２１を制御し、ホストインタフェース切替部０２１がホストインタフェース制御部０２２と接続するように接続を切替える。
【００９１】
Ｓ３０９の処理が完了すると、コントローラ０２０に代わってコントローラ０３０が行う処理は、終了する。
【００９２】
以上で、本発明の実施の形態の動作の説明を終了する。
【００９３】
次に、本発明の実施の形態の変形例について説明する。
【００９４】
本発明の実施の形態は、ホストコンピュータ００１とディスクアレイサブシステム０１０との間のアクセスパスとして、ホストインタフェースケーブル０７０，０７１を含む構成、即ち、冗長パス構成を示した。しかしながら、本発明は、図１に示すように、シングルパス構成を含んでもよい。アクセスパスがシングルパスの場合、パス冗長化ドライバ００５は不要である。
【００９５】
次に、本発明の実施の形態の効果について説明する。
【００９６】
本発明の実施の形態は、冗長化されたコントローラ０２０，０３０を有するディスクアレイサブシステム０１０において、コストを抑えつつ、業務を停止することなくファームウェア置換を行うディスクアレイサブシステム０１０を提供することができる。その理由は、ディスクアレイサブシステム０１０がホストインタフェース切替部０２１を含むためである。即ち、ホストコンピュータ００１が、ファームウェア置換を行っていない方のコントローラ０３０にＩ／Ｏ要求を出力する処理を行うのではなく、ディスクアレイサブシステム０１０内で、Ｉ／Ｏ要求を処理するコントローラ０２０，０３０を切替えるためである。
【００９７】
具体例として、本発明の実施形態は以下のような効果を有する。
【００９８】
本発明の実施の形態は、ホストコンピュータ００１が、ファームウェア置換を行っていない方のコントローラ０３０にＩ／Ｏ要求を出力するように制御を行う必要が無い。そのため、本発明の実施の形態は、ホストコンピュータ００１にパス冗長化ドライバ００５（パス冗長化ソフトウェア）を導入する必要が無く（存在していても勿論問題ない）、コストを抑えられる。障害対策のためにパス冗長化ドライバ００５が実装されているホストコンピュータ００１が一般的であるため、本発明の実施の形態はパス冗長化ドライバ００５が存在する構成例を示した。
【００９９】
また、本発明の実施の形態は、アクセスパスがシングルパス構成のディスクアレイサブシステム０１０の場合に、アクセスパスを冗長化する必要が無いため、アクセスパス冗長化のためのハードウェアが不要である。そのため、本発明の実施の形態は、コストを抑えられる。
【０１００】
また、本発明の実施の形態は、ホストコンピュータ００１上でのパス冗長化ドライバ００５の操作が不要になるため、システム管理者の操作が不要となり、保守員のみでファームウェア置換作業を実施できる。
【０１０１】
また、上述の効果は、ディスクアレイサブシステム０１０に接続しているホストコンピュータ００１が多数存在する場合、より大きくなる。これに対し、本発明の実施の形態は、アクセスパスの切替えるために全てのホストコンピュータ００１へ、パス冗長化ドライバ００５を導入すること、アクセスパス冗長化のためのハードウェアの導入すること、システム管理者の操作、が不要となる。そのため、本実施の形態は、コストを抑えられる。
【０１０２】
また、特開２００６−３３８２１７号公報に記載の技術と比較して、本実施の形態は、コスト面で有利である。特開２００６−３３８２１７号公報に記載の技術は、１つのコントローラ・モジュール当たり２つのＣＰＵを搭載し、２つのＣＰＵを切替えて使用している。そのため、２つのＣＰＵと２つのファームウェア保持部を搭載すること、それに伴う搭載面積増加、発熱対策、消費電力対策などでコストが増加する。これに対し、本発明の実施の形態は、既存の冗長化コントローラ０２０，０３０を利用し、ホストからのＩ／Ｏ要求に対する処理を行うコントローラ０２０，０３０をホストインタフェース切替部０２１，０３１により切替える。これにより、本発明の実施の形態は、ＣＰＵ等を増やす必要が無いため、コストの増加を抑えつつ、業務を停止することなくファームウェア置換を行うことができる。
【０１０３】
また、本発明の実施の形態は、ホストコンピュータ００１のＨＢＡ００７に対するデータ転送の物理的及び論理的な経路を保証しつつ、コントローラ０３０がコントローラ０２０のファームウェア代替処理を実現することができる。即ち、ＣＰＵ０３３は、データ転送をホスト接続ポート０２８から転送することができる。これにより本発明の実施の形態は、ホストコンピュータ００１のＨＢＡ００７に対するデータ転送の物理的な経路を保証し、コントローラ０２０のファームウェアの代替処理を実現することができる。また、ＣＰＵ０３３は、データ転送の際にフレームの送信元識別子にコントローラ０２０のホスト接続ポート０２８の識別子であるＴ−２０を書込んで転送する。これにより、本発明の実施の形態は、ホストコンピュータ００１のＨＢＡ００７に対するデータ転送の論理的な値を保証し、コントローラ０２０のファームウェアの代替処理を実現することができる。
【０１０４】
以上により、本発明の実施の形態は、ホストコンピュータ００１上で稼動する業務を停止すること無く、ディスクアレイサブシステム０１０の機能強化や不具合修正を含むファームウェアを容易に置換できる手段を提供できる。これにより、本発明の実施の形態は、ディスクアレイサブシステム０１０の機能性、信頼性の向上を図ることができる。
【図面の簡単な説明】
【０１０５】
【図１】本発明の概要構成を説明する図である。
【図２】ディスクアレイシステム１００の構成を示す図である。
【図３】制御情報を示す図である。
【図４】ホストコンピュータ００１とコントローラ０２０，０３０間のＩ／Ｏに使用されるフレームの概略図である。
【図５】コントローラ０２０のファームウェアダウンロード処理を示すフローチャートである。
【図６】コントローラ０２０のファームウェア置換処理を示すフローチャートである。
【図７】コントローラ０２０に代わってコントローラ０３０が行う処理を示すフローチャートである。
【図８】Ｓ３０４，Ｓ３０７，Ｓ３０９の処理を説明するフローチャートである。
【符号の説明】
【０１０６】
００１    ホストコンピュータ
００２    アプリケーション
００３    ファイルシステム
００４    上位ドライバ
００５    パス冗長化ドライバ
００６    下位ドライバ
００７，００８    ＨＢＡ
００７ａ，００８ａ    接続ポート
０１０    ディスクアレイサブシステム
０１１    ストレージサブシステム
０２０，０３０    コントローラ
０２１，０３１    ホストインタフェース切替部
０２２，０３２    ホストインタフェース制御部
０２３，０３３    ＣＰＵ
０２４，０３４    ＳＶＰ
０２５，０３５    メモリ領域
０２６，０３６    ファームウェア記憶領域
０２７，０３７    ディスク制御部
０２８，０３８    ホスト接続ポート
０４０，０４１    内部バス
０５０，０５１，０５２    論理ディスク
０５３    ストレージ
０６０，０６１    内部バス
０７０，０７１    ホストインタフェースケーブル
０７２    ＬＡＮケーブル
０８０    保守用端末
１００    ディスクアレイシステム
１０１    ストレージシステム
【図１】
2009230484.tif 000003
【図２】
2009230484.tif 000004
【図３】
2009230484.tif 000005
【図４】
2009230484.tif 000006
【図５】
2009230484.tif 000007
【図６】
2009230484.tif 000008
【図７】
2009230484.tif 000009
【図８】
2009230484.tif 000010