(57)【特許請求の範囲】
【請求項１】
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホストとのインタフェースの制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリと、揮発性メモリとを備え、
前記不揮発性メモリに前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、前記情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行うストレージ装置であって、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部から前記活性プログラム交換開始の指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手段と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリのコマンドキューへ転送して蓄積し、前記コマンドキュー内に格納されたコマンドの処理である前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手段と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動し該新ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手段と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手段と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されると、前記起動後のホストコマンド処理を開始する前に、前記起動された新ストレージ制御ファームウェアの指示に基づき前記ホストインタフェース制御部のファームウェアが該ホストインタフェース制御部内に記憶しているホスト情報を前記揮発性メモリにコピーするか、前記不揮発性メモリに記憶しているホスト情報を前記起動された新ストレージ制御ファームウェアが前記揮発性メモリにコピーし、前記揮発性メモリのホスト情報に基づいて新ストレージ制御ファームウェアとホスト間の論理的な接続状態を復元させるホストコネクションの復元を行う第５の手段と、
(f) ：前記復元処理完了後に、活性プログラム交換中に前記コマンドキューに蓄積したコマンドを該コマンドキューから出力して処理を再開する第６の手段と、
を備えていることを特徴とするストレージ装置。
【請求項２】
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホストとのインタフェースの制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリと、揮発性メモリとを備え、
前記不揮発性メモリに前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、前記情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行うストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法であって、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部から前記活性プログラム交換開始の指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリのコマンドキューへ転送して蓄積し、前記コマンドキュー内に格納されたコマンドの処理である前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動し該新ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されると、前記起動後のホストコマンド処理を開始する前に、前記起動された新ストレージ制御ファームウェアの指示に基づき前記ホストインタフェース制御部のファームウェアが該ホストインタフェース制御部内に記憶しているホスト情報を前記揮発性メモリにコピーするか、前記不揮発性メモリに記憶しているホスト情報を前記起動された新ストレージ制御ファームウェアが前記揮発性メモリにコピーし、前記揮発性メモリのホスト情報に基づいて新ストレージ制御ファームウェアとホスト間の論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
(f) ：前記復元処理完了後に、活性プログラム交換中に前記コマンドキューに蓄積したコマンドを該コマンドキューから出力して処理を再開する第６の手順と、
を行うことを特徴とするストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法。
【請求項３】
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホストとのインタフェースの制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリと、揮発性メモリとを備え、
前記不揮発性メモリに前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、前記情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行うストレージ装置に、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部から前記活性プログラム交換開始の指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリのコマンドキューへ転送して蓄積し、前記コマンドキュー内に格納されたコマンドの処理である前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動し該新ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されると、前記起動後のホストコマンド処理を開始する前に、前記起動された新ストレージ制御ファームウェアの指示に基づき前記ホストインタフェース制御部のファームウェアが該ホストインタフェース制御部内に記憶しているホスト情報を前記揮発性メモリにコピーするか、前記不揮発性メモリに記憶しているホスト情報を前記起動された新ストレージ制御ファームウェアが前記揮発性メモリにコピーし、前記揮発性メモリのホスト情報に基づいて新ストレージ制御ファームウェアとホスト間の論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
(f) ：前記復元処理完了後に、活性プログラム交換中に前記コマンドキューに蓄積したコマンドを該コマンドキューから出力して処理を再開する第６の手順と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、ストレージ制御ファームウェアの活性プログラム交換を行うストレージ装置、ストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法及びストレージ制御ファームウェアの活性プログラム交換のためのプログラムに関するものである。
【背景技術】
【０００２】
(1) ：従来例１
図７は従来例１の説明図である。以下、図７に基づき従来例１を説明する。
【０００３】
図７に示した従来例１は、ストレージ群として、例えば、ＲＡＩＤ装置のような磁気ディスク装置群（ディスク群）を備えた１台のディスク制御装置２をホスト１に接続して運用する例である。ディスク制御装置２には、ホスト１との間でインタフェース制御を行うためのホストインタフェースコントローラ（以下、単に「ホストＩ／Ｆ制御部」と記す）３を備えると共に、ディスク制御装置２内には、ディスク群の制御を行うためのファームＡ（ディスク制御ファームウェア）を備えている。なお、前記ファームＡは、前記ディスク群の制御に必要なプログラムをメモリ内に記憶させたものである。
【０００４】
また、前記ホストＩ／Ｆ制御部３には、ホストインタフェース制御を行うためのコントローラ４と、ファームＢ（ホストインタフェース制御ファームウェア）等を備えている。この場合のファームＢは、ホストインタフェース制御を行うためのプログラムを格納したメモリから構成されたファームウェアであり、ファームＡとはプログラムの構成が異なっている。
【０００５】
前記のような構成において、ファームＡ内のプログラムを活性交換する場合、ディスク制御装置２が１台であれば、前記ファームＡのプログラムを活性交換する過程で、ホスト１とのインタフェースを制御するホストＩ／Ｆ制御部３内のコントローラ４によりリセットされる。このため、ホスト１とのコネクション（パス）が一旦切断され、ホスト１からディスクにアクセスできない時間ができてしまう。その間、ディスクの使用が不可能となる。
【０００６】
(2) ：従来例２
図８は従来例２の説明図である。以下、図８に基づき従来例２を説明する。
【０００７】
図８に示した従来例２は、ホスト１に対して、前記従来例１と同じ構成のディスク制御装置を２台（ディスク制御装置２−１及びディスク制御装置２−２）接続し、２重化したシステム（マルチパス構成のシステム）を構成する例である。この場合、ホスト１には、マルチパスの制御を行うためのマルチパス管理部５を備えている。
【０００８】
そして、ディスク制御装置２−１又は２−２内のファームＡのプログラム交換を行う場合、次のようにする。
【０００９】
すなわち、ディスク制御装置２−１内のファームＡの活性プログラム交換時には、ホスト１とディスク制御装置２−２との間のパスからディスク制御装置２−２へアクセスする。また、ディスク制御装置２−２内のファームＡの活性プログラム交換時には、ホスト１とディスク制御装置２−１との間のパスからディスク制御装置２−１へアクセスする。
【００１０】
前記のようなマルチパス構成のシステムにおいては、ホスト側のディスク制御装置へのアクセスのためにマルチパス管理が必要になり、ファームＡの活性プログラム交換時のコネクション切断を異常と判断してしまう。
【００１１】
そこで、前記の場合に異常と判断しないようにするためには、ホスト１内のマルチパス管理部５に、プログラム交換時に一旦パスを使わないようにし、活性プログラム交換後にパスを復旧させる必要があり、オペレータ操作が必要となって制御が複雑になる。
【００１２】
(3) ：従来例３
以下、特許文献１を従来例３として説明する。従来例３は入出力制御装置およびそのファームウェア更新方法に関するものであり、次のような内容が記載されている。
【００１３】
(a) ：上位装置と磁気ディスク装置との間に介装され、上位装置からの入出力信号に応じて磁気ディスク装置に対する書込／読出制御を行なう磁気ディスク制御装置（入出力制御装置）に適用される技術に関し、特に、上位装置との結合動作中にファームウェアを交換（更新）する活性交換機能（更新機能）を有する入出力制御装置、および、そのファームウェア更新方法に関する。（段落番号［０００２］参照）
(b) ：磁気ディスク制御装置（入出力制御装置）を成す全てのファームウェアを活性交換できるようにして、磁気ディスク制御装置を有するシステムを確実に２４時間稼働できるようにするとともに、ポインタテーブル等の書換え、更新を不要にして、ファームウェアの活性交換（更新）に要する時間の短縮をはかった。入出力制御装置およびそのファームウェア更新方法を提供することを目的とする。（段落番号［００２９］参照）
(4) ：従来例４
以下、特許文献２を従来例４として説明する。従来例４は、ディスク制御装置に関するものであり、次のような内容が記載されている。
【００１４】
(a) ：プロセッサ群を全面停止させることなく、プロセッサ群が実行するプログラムを変更することが出来るデイスク制御装置を提供する。（段落番号［０００３］参照）
(b) ：前記チャネルプロセッサと前記ドライブプロセッサは、前記入出力要求を、新しいプログラムをローディング中は旧プログラムを使って処理し、前記チャネルプロセッサと前記ドライブプロセッサは、前記入出力要求を、前記新しいプログラムが前記チャネルプロセッサと前記ドライブプロセッサの両方において使用可能となった後は、前記新しいプログラムを使って処理することを特徴とするディスク制御装置を提供する。（段落番号［０００４］参照）
(5) ：従来例５
以下、特許文献３を従来例５として説明する。従来例５は、ポートを内蔵したストレージに関するものであり、次のような内容が記載されている。
【００１５】
(a) ：ストレージのポートの応答できない時間を短縮することにより、サーバを停止することなく、マイクロプログラム交換を実現することで、交替パスソフトの購入やサーバの停止、起動等のストレージシステム管理者の負担を軽減する。（要約の欄を参照）
(b) ：ＳＡＮ（ストレージエリアネットワーク）環境のストレージにスペアポートを一つ以上設定する。ストレージに設けられたポートのマイクロプログラム交換時、交換対象のポートからそのポートの持つ属性情報をスペアポートにコピーし、スペアポートにサーバとストレージの接続を切り替える。（要約の欄を参照）
【特許文献１】特許第３４３７０８３号公報
【特許文献２】特開２００１−２２９０４２号公報
【特許文献３】特開２００３−１３１８９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
(1) ：従来例１では、ファームＡ内のプログラムを活性交換する場合、ディスク制御装置２が１台であれば、前記ファームＡのプログラムを活性交換する過程で、ホスト１とのインタフェースを制御するホストＩ／Ｆ制御部３内のコントローラ４がリセットされる。このため、ホスト１とのコネクション（パス）が一旦切断され、ホスト１からディスクにアクセスできない時間ができてしまう。その間、ディスクの使用が不可能となる。
【００１７】
(2) ：従来例２では、マルチパス構成のシステムであり、ホスト側のディスク制御装置へのアクセスのためにホスト側でのマルチパス管理が必要になり、ファームＡのプログラム活性交換時のコネクション切断を異常と判断してしまう。
【００１８】
そこで、前記の場合に異常と判断しないようにするためには、ホスト１内のマルチパス管理部に、プログラム交換時に一旦パスを使わないようにし、プログラム交換後にパスを復旧させる必要があり、オペレータ操作が必要となって制御が複雑になる。
【００１９】
(3) ：従来例３は、入出力制御装置およびそのファームウェア更新方法に関するものであり、特に、上位装置との結合動作中にファームウェアを交換（更新）する活性交換機能（更新機能）を有する入出力制御装置、および、そのファームウェア更新方法に関する。
【００２０】
しかし、従来例３には、本発明の構成要件である、「電気的に書き込み可能な不揮発性メモリを使用して、ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、活性プログラム交換を行うストレージ装置」の具体的な構成については記載がなく、本発明の背景技術程度の内容である。
【００２１】
(4) ：従来例４は、プロセッサ群を全面停止させることなく、プロセッサ群が実行するプログラムを変更することが出来るデイスク制御装置に関して記載されている。
【００２２】
しかし、従来例４には、本発明の構成要件である、「電気的に書き込み可能な不揮発性メモリを使用して、ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、活性プログラム交換を行うストレージ装置」の具体的な構成については記載がなく、本発明の背景技術程度の内容である。
【００２３】
(5) ：従来例５は、ストレージのポートの応答できない時間を短縮することにより、サーバを停止することなく、マイクロプログラム交換を実現することで、交替パスソフトの購入やサーバの停止、起動等のストレージシステム管理者の負担を軽減するという内容である。
【００２４】
しかし、従来例５には、本発明の構成要件である、「電気的に書き込み可能な不揮発性メモリを使用して、ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、活性プログラム交換を行うストレージ装置」の具体的な構成については記載がなく、本発明の背景技術程度の内容である。
【００２５】
本発明は従来の課題を解決するためになされたものであり、ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を電気的に書き換え可能な不揮発性メモリに格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行えるようにすることを目的とする。
【課題を解決するための手段】
【００２６】
本発明は前記の目的を達成するため、次のように構成した。
【００２７】
(1) ：ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホストとのインタフェースの制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリと、揮発性メモリとを備え、前記不揮発性メモリに前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、前記情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行うストレージ装置であって、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部から前記活性プログラム交換開始の指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手段と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリのコマンドキューへ転送して蓄積し、前記コマンドキュー内に格納されたコマンドの処理である前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手段と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動し該新ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手段と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手段と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されると、前記起動後のホストコマンド処理を開始する前に、前記起動された新ストレージ制御ファームウェアの指示に基づき前記ホストインタフェース制御部のファームウェアが該ホストインタフェース制御部内に記憶しているホスト情報を前記揮発性メモリにコピーするか、前記不揮発性メモリに記憶しているホスト情報を前記起動された新ストレージ制御ファームウェアが前記揮発性メモリにコピーし、前記揮発性メモリのホスト情報に基づいて新ストレージ制御ファームウェアとホスト間の論理的な接続状態を復元させるホストコネクションの復元を行う第５の手段と、
(f) ：前記復元処理完了後に、活性プログラム交換中に前記コマンドキューに蓄積したコマンドを該コマンドキューから出力して処理を再開する第６の手段と、
を備えていることを特徴とするストレージ装置。
【００２８】
(2) ：ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホストとのインタフェースの制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリと、揮発性メモリとを備え、前記不揮発性メモリに前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、前記情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行うストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法であって、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部から前記活性プログラム交換開始の指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリのコマンドキューへ転送して蓄積し、前記コマンドキュー内に格納されたコマンドの処理である前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動し該新ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されると、前記起動後のホストコマンド処理を開始する前に、前記起動された新ストレージ制御ファームウェアの指示に基づき前記ホストインタフェース制御部のファームウェアが該ホストインタフェース制御部内に記憶しているホスト情報を前記揮発性メモリにコピーするか、前記不揮発性メモリに記憶しているホスト情報を前記起動された新ストレージ制御ファームウェアが前記揮発性メモリにコピーし、前記揮発性メモリのホスト情報に基づいて新ストレージ制御ファームウェアとホスト間の論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
(f) ：前記復元処理完了後に、活性プログラム交換中に前記コマンドキューに蓄積したコマンドを該コマンドキューから出力して処理を再開する第６の手順と、
を行うことを特徴とするストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法。
【００３１】
（作用）
以下、図１を参照しながら前記構成に基づく本発明の作用を説明する。
【００３２】
(a) ：前記(1) 、(2) の作用
前記ホスト１に接続されたストレージ制御装置２では次のような作用がある。
【００３３】
１．ストレージ制御ファームウェア（ファームＡ）の活性プログラム交換開始時、外部からの指示（オペレータ等からの指示）が出された時点以降にホスト１から受け取ったコマンドの処理を停止する。そして、ホスト１から受け取ったコマンドとイベントの順序関係を保持するため、電気的に書き換え可能な不揮発性メモリ７に両者の情報を分けて格納する。また、ホスト１が発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態（該当するコマンドに無効の印を付ける）にする。
【００３４】
２．次に、コマンド処理停止が完了した際、ホストインタフェース制御部（ホストＩ／Ｆ制御部３）からストレージ制御ファームウェア（ファームＡ）への割り込みを抑止し、ホスト１から受け取ったコマンドは前記不揮発性メモリ７へ転送し続け、不揮発性メモリ７内のコマンドキューの入力ポインタは更新し、ストレージ制御ファームウェア（ファームＡ）の処理は行わないように制御を行う。
【００３５】
３．次に、ストレージ制御ファームウェア（ファームＡ）の活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェア（新ファームＡ）を起動して該ストレージ制御ファームウェアを有効にすると共に、不揮発性メモリ７の内容は保持するように制御を行う。
【００３６】
４．新ストレージ制御ファームウェア（新ファームＡ）による起動時は、ホストインタフェース制御部（ホストＩ／Ｆ制御部３）の初期設定を実施しないように、コネクションを切断せずに、ホスト１との論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う。
【００３７】
５．ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェア（新ファームＡ）が起動されたことでホスト１との論理的な接続状態を忘れているため、前記起動後のホストコマンド処理を開始する前に、論理的な接続状態を復元させるホストコネクションの復元を行う。
【００３８】
このようにすれば、ストレージ装置のストレージ制御ファームウェアの活性プログラム交換中に必要な情報を電気的に書き換え可能な不揮発性メモリと、揮発性メモリに格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行える。
【発明の効果】
【００３９】
本発明は次のような効果がある。
【００４０】
(a) ：請求項１、２、３の効果
(1) ：ストレージ装置のストレージ制御ファームウェアの活性プログラム交換中に必要な情報を電気的に書き換え可能な不揮発性メモリと、揮発性メモリに格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行える。
【発明を実施するための最良の形態】
【００４１】
§１：システムの概要の説明
以下、図１に基づき、システムの概要を説明する。
【００４２】
(1) ：図１に示したストレージ装置は、ストレージ（又はストレージ群）と、このストレージ（又はストレージ群）を制御するストレージ制御装置２Ａを備え、このストレージ制御装置２Ａをホスト１に接続して運用する。
【００４３】
そして、ストレージ制御装置２Ａには、ホスト１との間のインタフェース制御を行うホストインタフェース制御部（以下「ホストＩ／Ｆ制御部３」と記す）と、ストレージ（又はストレージ群）の制御を行うプログラムを有するストレージ制御ファームウェア（以下「ファームＡ」と記す）と、ファームＡ（ストレージ制御ファームウェア）がアクセスする揮発性メモリ８を備えている。
【００４４】
(2) ：また、ホストＩ／Ｆ制御部３は、ホスト１間のインタフェース制御を行うプログラムを有するファームＢ（ホストインタフェース制御ファームウェア）を備え、ファームＢ（ホストインタフェース制御ファームウェア）は、ファームＡ（ストレージ制御ファームウェア）の活性プログラム交換中もホストＩ／Ｆ制御部３が動作し続けられるようにする機能を備える。
【００４５】
(3) ：また、ストレージ制御装置２Ａに、ファームＡ（ストレージ制御ファームウェア）の活性プログラム交換後の起動中もクリアされない電気的に書き換え可能な不揮発性メモリ７を備え、不揮発性メモリ７には、ホスト１から受け取ったコマンドを順次格納するコマンドキュー１１と、ファームＡ（ストレージ制御ファームウェア）の活性プログラム交換をする際の順序情報を格納する活性プログラム交換用順序テーブル１２と、ホスト１から受け取ったイベント情報を格納するイベントテーブル１３と、ホスト１の情報を格納するホスト情報領域１４とを備え、ホストＩ／Ｆ制御部３が不揮発性メモリ７を使用して、ファームＡ（ストレージ制御ファームウェア）の活性プログラム交換中に必要な情報を格納し、これらの情報を使用して、ホスト１とのコネクションを切断することなく、ホスト１からのコマンドにエラー応答することなく、ファームＡ（ストレージ制御ファームウェア）の活性プログラム交換を行わせる機能を備えている。
【００４６】
§２：ディスク制御装置の構成の説明
図２はシステム構成図である。以下、前記ストレージ装置の具体例としてディスク装置（ＲＡＩＤ構成の磁気ディスク装置）の例について説明する。
【００４７】
図２に示したように、このシステムは、ホスト１と、該ホスト１にパスにより接続されたディスク制御装置２を備え、前記ディスク制御装置２にはディスク群（ＲＡＩＤ用ディスク群）が接続されたシステムである。
【００４８】
そして、ディスク制御装置２には、ホストインタフェース制御部（以下「ホストＩ／Ｆ制御部」と記す）３と、電気的に書き換え可能な不揮発性メモリ７と、揮発性メモリ８と、ディスク制御用ファームウェア（以下「ファームＡ」と記す）が設けてある。また、書き換え可能な不揮発性メモリ７には、コマンドキュー１１と、活性プログラム交換用順序テーブル１２と、イベントテーブル１３と、ホスト情報格納領域１４等が設けてある。
【００４９】
また、揮発性メモリ８には、制御領域１７と、ホスト管理テーブル１８が設けてある。また、ホストＩ／Ｆ制御部３には、コントローラ４と、ファームＢと、レジスタ群等が設けてある。前記各部の機能等は次の通りである。
【００５０】
(a) ：ディスク制御装置２は、ホスト１との間でコマンドやその他のデータの授受を行い、ディスク群の制御を行ってデータのライトやリードの制御を行うものであり、ホストＩ／Ｆ制御部３が、その際の各種ホストインタフェース制御を行う。
【００５１】
(b) ：ホストＩ／Ｆ制御部３は、ホスト１との間の各種ホストインタフェース制御を行うものである。コントローラ４は、ホストインタフェース制御を行うものである。また、ファームＢ（ホストインタフェース制御用ファームウェア）は、ファームＡとは内部のプログラム構成が異なるものであり、書き換え可能な不揮発性メモリ７に対するデータの書き換えや読み出し等を行うものである。また、レジスタ群は前記ホストインタフェース制御を行う際に、ワーク用として使用するものである。
【００５２】
(c) ：電気的に書き換え可能な不揮発性メモリ７は、ファームＡの活性プログラム交換を行う際に、必要なデータを書き込んだり、或いは書き込んだデータを読み出したりするためのものであり、ホストＩ／Ｆ制御部３の制御でライト／リードの処理が行われる。
【００５３】
この場合、コマンドキュー１１はホストから受け取ったコマンドを順次蓄積するためのものである。活性プログラム交換用順序テーブル１２はファームＡの活性プログラム交換を行う際の順序に従ってデータを蓄積するものである。イベントテーブル１３はホスト１から受け取ったイベントを格納するものである。ホスト情報格納領域１４はホスト１の情報を格納するものである。
【００５４】
なお、電気的に書き換え可能な不揮発性メモリ７は、バッテリバックアップした揮発性メモリ（ＤＲＡＭ、ＳＲＡＭ等）、フラッシュメモリ等で構成する。
【００５５】
(d) ：揮発性メモリ８は、ファームＡがアクセスするメモリであり、制御情報は制御領域１７に格納し、ホスト管理情報はホスト管理テーブル１８に格納するものである。なお、揮発性メモリ８は、ＤＲＡＭ、ＳＲＡＭ等で構成する。
【００５６】
§３：ディスク制御装置の動作の説明
図３はディスク制御装置の動作説明図（その１）であり、Ａ図はコマンドキューの動作、Ｂ図はコマンドとイベントの順序関係保持の動作を示す。図４はディスク制御装置の動作の説明図（その２）であり、Ａ図はキャンセルコマンドの処理を示す。図５はディスク制御装置の動作の説明図（その３）であり、Ａ図は例１の新ファームとホスト間のコネクション復元動作、Ｂ図は例２の新ファームとホスト間のコネクション復元動作を示す。以下、図３乃至図５に基づいて、ディスク制御装置の動作を説明する。
【００５７】
(a) ：コマンドキューの動作（図３のＡ図参照）
ホストＩ／Ｆ制御部３がホスト１からコマンドを受け取ると、そのコマンドを電気的に書き換え可能な不揮発性メモリ７のコマンドキュー１１に順次格納して蓄積する。そして、このコマンドキュー１１は、入力Ｐの位置がコマンドの入力位置を示している。また、出力Ｐは、一旦、コマンドキュー１１に入力されたコマンドが実行されるために取り出されると、その位置が入力Ｐ側へ移動する。
【００５８】
すなわち、処理すべきコマンド群は、入力Ｐと出力Ｐの間にある。このため、ファームＡの活性プログラム交換中は、受信コマンドは処理しないため、出力Ｐの位置は動かない。
【００５９】
(b) ：コマンドとイベントの順序関係保持の動作（図３のＢ図参照）
活性プログラム交換用順序テーブル１２は、ファームＡの活性プログラム交換時の処理順序を保持するために使用するものである。ホストＩ／Ｆ制御部３からは、コマンドキュー１１に入るコマンドだけでなく、ホストＩ／Ｆ制御部３内のレジスタ群で通知されるイベントもあるため、このイベントとコマンドキュー１１に入るコマンドとの順序関係を保持するため、活性プログラム交換用順序テーブル１２と、イベントテーブル１３を使用する。
【００６０】
例えば、活性プログラム交換用順序テーブル１２には、種別とインデックスの欄があり、これらの欄に情報が入れられる。例えば、１番目は種別＝コマンドであり、インデックス＝コマンドキュー内のインデックスとなっている。２番目は種別＝コマンドであり、インデックス＝コマンドキュー内のインデックスとなっている。３番目は種別＝イベントであり、インデックス＝イベントテーブル内インデックスとなっている。以下、同様にして情報が格納される。
【００６１】
また、イベントテーブル１３には、前記活性プログラム交換用順序テーブル１２の３番目のイベントのインデックス情報と、５番目のイベントのインデックス情報がレジスタ群の情報が格納されるようになっている。
【００６２】
(c) ：キャンセルコマンド処理（図４のＡ図参照）
さらに、ホスト１から既に受信済みのコマンドの中から、或るコマンドがキャンセルになったとの指示がホストから出された場合、処理すべきコマンド群からキャンセル対象のコマンド（例えば、コマンド２）を検索して特定し、そのコマンド（例えば、コマンド２）に「無効」印を付ける。
【００６３】
(d) ：例１の新ファームとホスト間のコネクション復元動作（図５のＡ図参照）
ファームＡの新プログラムによる起動（ファームＡの活性プログラム交換後の新プログラムによる新ファームＡの起動）では、ホストＩ／Ｆ制御部３から新ファームＡにコマンドによる割り込みを発生することで、交換された新ファームＡを起動（リブート）し、新ファームＡが有効になる。
【００６４】
この時、電気的に書き換え可能な不揮発性メモリ７内の内容は保持するようにする（Ｗａｒｍ  Ｒｅｂｏｏｔ）。
【００６５】
ホストコネクションの復元動作では、新ファームＡ側は、リブート（起動）されたことで、ホスト１との論理的な接続（Ｌｏｇｉｎ）状態は忘れている。そのため、リブート後のホストコマンド処理を開始する前に論理的な接続（Ｌｏｇｉｎ）状態を復元させる必要がある。その１つの方法は、ホストＩ／Ｆ制御部３から情報を獲得する方法である。
【００６６】
この方法では、新ファームＡがホストＩ／Ｆ制御部３内のファームＢに指示を出し、この指示に基づきファームＢがホストＩ／Ｆ制御部３内のホスト情報テーブルに持っているホスト情報（ホスト情報Ａ、ホスト情報Ｂ等の最新の情報）を揮発性メモリ８内のホスト管理テーブル１８に入れる（コピーする）。
【００６７】
この揮発性メモリ８内のホスト情報を使用して新ファームＡ（活性プログラム交換後の新ディスク制御ファームウェア）とホスト１間のコネクション復元動作を行う。
【００６８】
(e) ：例２の新ファームＡとホスト１間のコネクション復元動作（図５のＢ図参照）
ホストコネクションの復元動作では、新ファームＡ側は、リブート（起動）されたことで、ホスト１との論理的な接続（Ｌｏｇｉｎ）状態は忘れている。そのため、リブート（起動）後のホストコマンド処理を開始する前に論理的な接続（Ｌｏｇｉｎ）状態を復元させる必要がある。
【００６９】
その方法は、新ファームＡが不揮発性メモリ７内のホスト情報格納領域１４に格納してあるホスト情報を、揮発性メモリ８内のホスト管理テーブル１８に入れる（コピーする）。この揮発性メモリ８内のホスト情報を使用して新ファームＡ（活性プログラム交換後の新ディスク制御ファームウェア）とホスト１間のコネクション復元動作を行う。
【００７０】
この場合、図５のＢ図に示したように、電気的に書き換え可能な不揮発性メモリ７のホスト情報格納領域１４には、例えば、ホスト情報Ｃ、ホスト情報Ｄのようなホスト情報が書き込んであるとすると、前記処理により、揮発性メモリ８の接続ホスト情報領域にも、ホスト情報Ｃ、ホスト情報Ｄのようなホスト情報がコピーされ、前記コネクション復元動作が行われる。
【００７１】
§４：活性プログラム交換時のディスク制御装置の処理説明
図６はディスク制御装置の処理フローチャートである。以下、図６に基づいて、ファームＡの活性プログラム交換を行う際のディスク制御装置の処理を説明する。なお、図６において、Ｓ１〜Ｓ６は各処理ステップを示す。
【００７２】
この処理は、ホスト１とのコネクションを切断することなく、更にホスト１からのコマンドにエラー応答することなく、ファームＡ（ディスク制御ファームウェア）の活性プログラム交換を実施するための処理である。
【００７３】
前記活性プログラム交換では、ディスク制御装置２内に、ファームＡのプログラム交換（プログラム書き換え）後のリブート（起動）中もクリアされない書き換え可能な不揮発性メモリ７を保持し、そこに、活性プログラム交換中もホスト１とのコネクションを切断しないようにするための情報を格納する記憶領域を設ける。
【００７４】
また、ホストＩ／Ｆ制御部３は、ファームＡとは別のファームＢを有し、このファームＢの処理によりファームＡの活性プログラム交換中もホストＩ／Ｆ制御部３は動作し続けられるようにしておく（ホスト１との間でコマンドやその他のデータの授受等を続ける。以下にＳ１〜Ｓ６の各処理を説明する。
【００７５】
Ｓ１：活性プログラム交換開始（ホストからのコマンド処理停止：Suspend ）
ホスト１からのコマンド処理停止：Suspend 処理で、外部からの指示が出された時点以降のホスト１からのコマンドを処理しないようにする。前記コマンドは、通常動作中から書き換え可能な不揮発性メモリ７内のコマンドキュー１１の領域に、ホストＩ／Ｆ制御部３から入れるようにしているが、このタイミングで以降のコマンドは起動せずに、コマンドを処理しないようにする。（図３のＡ図参照）
ホストＩ／Ｆ制御部３からは、コマンドキュー１１に入るコマンドだけでなく、ホストＩ／Ｆ制御部３内のレジスタ群で通知されるイベントもあるため、このイベントとコマンドキュー１１に入るコマンドとの順序関係を保持するため、活性プログラム交換用順序テーブル１２と、イベントテーブル１３を使用する。（図３のＢ図参照）更に、ホスト１が発行したコマンドを、その後、ホスト１からキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする。（図４のＡ図参照）。
【００７６】
Ｓ２：内部保持コマンド処理終了（Suspend 完了）
内部保持コマンド処理終了（Suspend 完了）時、すなわち、ファームＡの活性プログラム交換前にホスト１から受けたコマンドの処理を終了させるための内部保持コマンド処理終了時、ホストＩ／Ｆ制御部３からのファームＡへの割り込みを抑止する。ホストＩ／Ｆ制御部３は新規に受信したコマンドは不揮発性メモリ７内のコマンドキュー１１に転送し続け、コマンドキューの入力ポインタ（図３のＡ図の入力Ｐを参照）は更新されるが、ファームＡの処理はされないという動作になる。
【００７７】
Ｓ３：ファームＡの新プログラムによる起動（ファームＡの活性プログラム交換後の新プログラムによる新ファームＡの起動）
この動作では、ホストＩ／Ｆ制御部３から新ファームＡにコマンドによる割り込みを発生することで、交換された新ファームＡを起動（リブート）し、新ファームＡが有効になる。この時、電気的に書き換え可能な不揮発性メモリ７の内容は保持するようにする（Ｗａｒｍ  Ｒｅｂｏｏｔ）。
【００７８】
Ｓ４：ホストＩ／Ｆ制御部の設定動作
新ファームＡによるリブート（活性プログラム交換のリブート）時は、ホストＩ／Ｆ制御部３の初期設定を実施しないようにし、コネクションを切断せずに、ホスト１との論理的な接続（Ｌｏｇｉｎ）状態を保持する。ホストＩ／Ｆ制御部３は、リセットされないため、リブート前の状態のまま動作し続けている。
【００７９】
この場合、ホストＩ／Ｆ制御部３内には、図５のＡ図に示したように、ホスト情報テーブルを備えており、このホスト情報テーブルにホストの情報（新しい情報）を順次更新しながら蓄積しておく。そして、この情報は、後述するホストコネクションの復元動作で使用する。
【００８０】
Ｓ５：ホストコネクションの復元動作
一方、新ファームＡ側は、リブートされたことで、ホストとの論理的な接続（Ｌｏｇｉｎ）状態は忘れている。そのため、リブート後のホストコマンド処理を開始する前に論理的な接続（Ｌｏｇｉｎ）状態を復元させる必要がある。その方法には次の２つの方法がある。
【００８１】
その１つの方法は、ホストＩ／Ｆ制御部３から情報を獲得する方法である。他方の方法は、コネクションに関する情報を新ファームＡ（活性プログラム交換後のファームウェア）が自分で電気的に書き換え可能な不揮発性メモリ７のホスト情報格納領域１４に記憶させておき、新ファームＡのリブート時にその情報を基に復元する方法である。
【００８２】
すなわち、例１の新ファームとホスト間のコネクション復元動作では、新ファームＡがホストＩ／Ｆ制御部３内のファームＢに指示を出し、この指示に基づきファームＢがホストＩ／Ｆ制御部３内のホスト情報テーブルに持っているホスト情報を揮発性メモリ８内のホスト管理テーブル１８に入れる（コピーする）。
【００８３】
また、例２の新ファームＡとホスト１間のコネクション復元動作では、新ファームＡが不揮発性メモリ７内のホスト情報格納領域１４に格納してあるホスト情報を揮発性メモリ８内のホスト管理テーブル１８に入れる（コピーする）。そして、揮発性メモリ８内のホスト情報を使用して新ファームＡ（活性プログラム交換後の新ディスク制御ファームウェア）とホスト１間のコネクション復元動作を行う。
【００８４】
Ｓ６：ホストＩ／Ｆ制御部の起動
この段階まできて、ファームＡの活性プログラム交換中に受信していた、コマンドやイベントを起動する。最初にホストＩ／Ｆ制御部３の新ファームＡへの割り込みを有効にする。ファームＡの活性プログラム交換中に受信したコマンドやイベントの順序性を保証するために、活性プログラム交換用順序テーブル１２の順序に従って起動する。
【００８５】
但し、ここで一気に起動すると、ディスク内部の処理限界を超える可能性があるため、コマンド起動時に処理限界かどうかのチェック（コマンドとイベントの数≧閾値のチェック）を行い、処理限界となるところで起動を一旦停止する。この後のコマンド起動は、一定間隔（内部のタイマで計測）毎の起動確認で処理限界が解除された時や起動コマンド済コマンドの完了時に、活性プログラム交換用順序テーブル１２のコマンドを起動し、活性プログラム交換用順序テーブル１２のコマンドが無くなると、コマンドキュー１１のコマンドを起動する。
【００８６】
§５：プログラムと記録媒体の説明
図２に示したディスク制御装置２のホストＩ／Ｆ制御部３内のコントローラ４、ファームＢ（ホストインタフェース制御ファームウェア）、ファームＡ（ディスク制御用ファームウェア）等は、何れもプログラムを備えている。
【００８７】
これらのプログラムは、例えば、外部から次のようにしてプログラムを格納し、このプログラムをＣＰＵ（図示省略）実行することで前記説明した処理や制御を行うことも可能である。
【００８８】
(a) ：外部の装置で作成されたリムーバブルディスク、又はパーソナルコンピュータの記憶媒体に格納されているプログラム（他の装置で作成したプログラムデータ）を読み取り、ディスク制御装置２の内部の記録媒体に格納する。
【００８９】
(b) ：通信回線を介して他の装置から伝送されたプログラム等のデータを、通信制御部（図示省略）を介して受信し、そのデータをディスク制御装置２の内部の記録媒体に格納する。
【００９０】
（付記）
前記の説明に対し、次の構成を付記する。
【００９１】
（付記１）
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホスト間のインタフェース制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリを備え、
前記不揮発性メモリを使用して、前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記活性プログラム交換を行うストレージ装置であって、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部からの指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手段と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリへ転送し続け、不揮発性メモリ内のコマンドキューの入力ポインタは更新し、前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手段と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動して該ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手段と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手段と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されたことでホストとの論理的な接続状態を忘れているため、前記起動後のホストコマンド処理を開始する前に、論理的な接続状態を復元させるホストコネクションの復元を行う第５の手段と、
を備えていることを特徴とするストレージ装置。
【００９２】
（付記２）
ストレージと、このストレージを制御するストレージ制御装置を備え、前記ストレージ制御装置をホストに接続して運用すると共に、
前記ストレージ制御装置には、ホストとの間のインタフェース制御を行うホストインタフェース制御部と、前記ストレージの制御を行うプログラムを有するストレージ制御ファームウェアを備えたストレージ装置において、
前記ホストインタフェース制御部は、ホスト間のインタフェース制御を行うプログラムを有するホストインタフェース制御ファームウェアを備え、前記ホストインタフェース制御ファームウェアは、前記ストレージ制御ファームウェアの活性プログラム交換中もホストインタフェース制御部が動作し続けられるようにする機能を備えると共に、
前記ストレージ制御装置に、前記ストレージ制御ファームウェアの活性プログラム交換後の起動中もクリアされない電気的に書き換え可能な不揮発性メモリを備え、
前記不揮発性メモリには、ホストから受け取ったコマンドを順次格納するコマンドキューと、前記ストレージ制御ファームウェアの活性プログラム交換をする際の順序情報を格納する活性プログラム交換用順序テーブルと、ホストから受け取ったイベント情報を格納するイベントテーブルと、ホストの情報を格納するホスト情報領域とを備え、
前記ホストインタフェース制御部が前記不揮発性メモリを使用して、前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、これらの情報を使用して、ホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、前記ストレージ制御ファームウェアの活性プログラム交換を行わせる機能を備えていることを特徴とするストレージ装置。
【００９３】
（付記３）
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホスト間のインタフェース制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリを備え、
前記不揮発性メモリを使用して、前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく前記活性プログラム交換を行うストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法であって、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部からの指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリへ転送し続け、不揮発性メモリ内のコマンドキューの入力ポインタは更新し、前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動して該ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されたことでホストとの論理的な接続状態を忘れているため、前記起動後のホストコマンド処理を開始する前に、論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
を備えていることを特徴とするストレージ制御ファームウェアの活性プログラム交換方法。
【００９４】
（付記４）
ストレージと、このストレージを制御するストレージ制御装置を備え、前記ストレージ制御装置をホストに接続して運用すると共に、
前記ストレージ制御装置には、ホストとの間のインタフェース制御を行うホストインタフェース制御部と、前記ストレージの制御を行うプログラムを有するストレージ制御ファームウェアを備えたストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法において、
前記ホストインタフェース制御部は、ホスト間のインタフェース制御を行うプログラムを有するホストインタフェース制御ファームウェアを備え、前記ホストインタフェース制御ファームウェアは、前記ストレージ制御ファームウェアの活性プログラム交換中もホストインタフェース制御部が動作し続けられるようにする機能を備えると共に、
前記ストレージ制御装置に、前記ストレージ制御ファームウェアの活性プログラム交換後の起動中もクリアされない電気的に書き換え可能な不揮発性メモリを備え、
前記ホストインタフェース制御部が前記不揮発性メモリを使用して、前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、これらの情報を使用することにより、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部からの指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリへ転送し続け、不揮発性メモリ内のコマンドキューの入力ポインタは更新し、前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動して該ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されたことでホストとの論理的な接続状態を忘れているため、前記起動後のホストコマンド処理を開始する前に、論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
を備えていることを特徴とするストレージ制御ファームウェアの活性プログラム交換方法。
【００９５】
（付記５）
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホスト間のインタフェース制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリを備え、
前記不揮発性メモリを使用して、前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく前記活性プログラム交換を行うストレージ装置に、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部からの指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリへ転送し続け、不揮発性メモリ内のコマンドキューの入力ポインタは更新し、前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動して該ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されたことでホストとの論理的な接続状態を忘れているため、前記起動後のホストコマンド処理を開始する前に、論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
を実現させるためのプログラム。
【００９６】
（付記６）
ストレージの制御を行い、ホストに接続して運用されるストレージ制御装置に、ホスト間のインタフェース制御を行うホストインタフェース制御部と、ストレージ制御用のプログラムを有するストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリを備え、
前記不揮発性メモリを使用して、前記ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく前記活性プログラム交換を行うストレージ装置に、
(a) ：ストレージ制御ファームウェアの活性プログラム交換開始時、外部からの指示が出された時点以降にホストから受け取ったコマンドの処理を停止し、前記ホストから受け取ったコマンドとイベントの順序関係を保持するため、前記不揮発性メモリに両者の情報を分けて格納すると共に、ホストが発行したコマンドのキャンセルを指示してきた場合、そのキャンセルに対応するコマンドを検索し、無効状態にする第１の手順と、
(b) ：前記コマンド処理停止が完了した際、ホストインタフェース制御部から前記ストレージ制御ファームウェアへの割り込みを抑止し、ホストから受け取ったコマンドは前記不揮発性メモリへ転送し続け、不揮発性メモリ内のコマンドキューの入力ポインタは更新し、前記ストレージ制御ファームウェアの処理は行わないように制御を行う第２の手順と、
(c) ：前記ストレージ制御ファームウェアの活性プログラム交換後の新プログラムを有する新ストレージ制御ファームウェアを起動して該ストレージ制御ファームウェアを有効にすると共に、前記不揮発性メモリの内容は保持するように制御を行う第３の手順と、
(d) ：前記新ストレージ制御ファームウェアによる起動時は、ホストインタフェース制御部の初期設定を実施しないように、コネクションを切断せずに、ホストとの論理的な接続状態を保持することで、ホストインタフェース制御部はリセットされずに起動前の状態のまま動作し続けさせる制御を行う第４の手順と、
(e) ：前記ストレージ制御ファームウェア側は前記新ストレージ制御ファームウェアが起動されたことでホストとの論理的な接続状態を忘れているため、前記起動後のホストコマンド処理を開始する前に、論理的な接続状態を復元させるホストコネクションの復元を行う第５の手順と、
を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【図面の簡単な説明】
【００９７】
【図１】本発明の原理説明図である。
【図２】実施の形態におけるシステム構成図である。
【図３】実施の形態におけるディスク制御装置の動作説明図（その１）であり、Ａ図はコマンドキューの動作、Ｂ図はコマンドとイベントの順序関係保持の動作を示した図である。
【図４】実施の形態におけるディスク制御装置の動作説明図（その２）であり、Ａ図はキャンセルコマンドの処理を示した図である。
【図５】実施の形態におけるディスク制御装置の動作説明図（その３）であり、Ａ図は例１の新ファームとホスト間のコネクション復元動作、Ｂ図は例２の新ファームとホスト間のコネクション復元動作を示した図である。
【図６】実施の形態におけるディスク制御装置の処理フローチャートである。
【図７】従来例１の説明図である。
【図８】従来例２の説明図である。
【符号の説明】
【００９８】
１  ホスト（ホストコンピュータ）
２  ディスク制御装置
２Ａ  ストレージ制御装置
３  ホストＩ／Ｆ制御部（ホストインタフェース制御部）
４  コントローラ
５  マルチパス管理部
７  電気的に書き換え可能な不揮発性メモリ
８  揮発性メモリ
１１  コマンドキュー
１２  活性プログラム交換用順序テーブル
１３  イベントテーブル
１４  ホスト情報格納領域
１７  制御領域
１８  ホスト管理テーブル
【図１】
0004486609.tif 000002
【図２】
0004486609.tif 000003
【図３】
0004486609.tif 000004
【図４】
0004486609.tif 000005
【図５】
0004486609.tif 000006
【図６】
0004486609.tif 000007
【図７】
0004486609.tif 000008
【図８】
0004486609.tif 000009