(57)【特許請求の範囲】
【請求項１】
上位システムと、
個別のポートアドレスであるＩＤを有するポートを内蔵した複数の制御装置と、
前記複数の制御装置に制御されて共用される記憶装置群と、
前記上位システムと前記ポートを内蔵した複数の制御装置とを接続するインタフェースパスと、から構成され、前記上位システムから前記複数の制御装置及び前記記憶装置にアクセス可能な構成において、
前記複数の制御装置の内、１台以上の制御装置を残し、他の制御装置に障害が発生した際に、正常な制御装置が障害を検出し、前記正常な制御装置が障害の発生した制御装置のポートアドレスを参照し、障害の発生した制御装置の制御情報を引き継ぎ、正常な制御装置は自身の保持するポートアドレスに加えて障害の発生した制御装置のポートアドレスを追加することを前記インタフェースパスを専有する間に行う
ことを特徴とする外部記憶装置。
【請求項２】
請求項１記載の外部記憶装置において、
前記正常な制御装置は、前記障害の発生した制御装置の前記ポートアドレスをリセットすることを特徴とする外部記憶装置。
【請求項３】
請求項１記載の外部記憶装置において、
前記各々の制御装置のポートアドレスと各々の制御装置の制御情報を記憶し制御装置間で情報を伝達するための共有メモリを複数の制御装置毎に設けることを特徴とする外部記憶装置。
【請求項４】
上位システムと、
個別のポートアドレスであるＩＤを有するポートを内蔵した複数の制御装置と、
複数の制御装置に制御されて共用される記憶装置群と、
前記上位システムと前記ポートを内蔵した複数の制御装置とを接続するインタフェースパスと、
前記複数の制御装置毎に設けられ、ポートアドレスをリセットしてＩＤを消去するポートアドレスリセット機構と、から構成され、前記上位システムから前記複数の制御装置及び前記記憶装置にアクセス可能な構成において、
複数の制御装置の内、１台以上の制御装置を残し、他の制御装置に障害が発生した際に、正常な制御装置は、障害を検出して、前記正常な制御装置は、障害の発生した制御装置のポートアドレスを参照し、障害の発生した制御装置の制御情報を引き継ぎ、正常な制御装置は自身の保持するポートアドレスに加えて障害の発生した制御装置のポートアドレスを追加することを前記インタフェースパスを専有する間に行うとともに、
前記制御装置は、障害の発生した他の制御装置の前記ポートアドレスリセット機構によって、障害の発生した制御装置の保持するポートアドレスをリセットし、以降の上位システムからのＩ／Ｏ要求に障害の発生した制御装置は応答せず、ポートアドレスを引き継いだ正常な制御装置で応答する
ことを特徴とする外部記憶装置。
【請求項５】
請求項４記載の外部記憶装置において、
制御装置に障害が発生した場合、上位システムが障害の発生した制御装置に対しＩ／Ｏ要求を実行しておらず、且つ上位システムと制御装置とを接続したインタフェースパスが使用されていない状態において、
正常な制御装置が障害の発生した制御装置に対しセレクションを実行し、正常な制御装置と障害の発生した制御装置との間でインタフェースパスの使用権を獲得することにより、正常な制御装置によるポートアドレス引き継ぎの処理中に、上位システムが障害の発生した制御装置に対してＩ／Ｏ要求を発行することを抑止する
ことを特徴とする外部記憶装置。
【請求項６】
請求項４記載の外部記憶装置において、
制御装置に障害が発生した場合、上位システムが障害の発生した制御装置に対しＩ／Ｏ要求を実行しておらず、且つ正常な制御装置がインタフェースパスを使用している状態において、正常な制御装置が、上位システムから発行されたＩ／Ｏ要求を処理している間に障害発生の制御装置のポートアドレスの引き継ぎ処理を完了し、その後前記Ｉ／Ｏ要求の終了報告を行うことにより、正常な制御装置によるポートアドレス引き継ぎの実行中に、上位システムが障害の発生した制御装置に対してＩ／Ｏ要求を発行することを抑止する
ことを特徴とする外部記憶装置。
【請求項７】
請求項４記載の外部記憶装置において、
制御装置に障害が発生した場合、インタフェースパスが使用中である場合、インタフェースパスに接続されている他のデバイスがインタフェースパスを使用中であるか、アービトレーションフェーズ乃至セレクションフェーズ中であるか、障害発生の制御装置が上位システムのＩ／Ｏ要求を既に受領中であるかのいずれであるかを、正常な制御装置がインタフェースパスのＢＳＹ信号を監視することにより把握し、
前記監視中にインタフェースパスが解放された場合は、正常な制御装置が障害の発生した制御装置に対しセレクションを実行し、正常な制御装置と障害の発生した制御装置との間でインタフェースパスの使用権を獲得し、
前記監視中に正常な制御装置がセレクションされた場合は、正常な制御装置が、上位システムから発行されたＩ／Ｏ要求を処理している間に障害発生の制御装置のポートアドレスの引き継ぎ処理を完了し、その後前記Ｉ／Ｏ要求の終了報告を行い、
前記監視期間中に正常な制御装置が障害発生の制御装置のポートアドレスの引き継ぎ処理を完了する
ことを特徴とする外部記憶装置。
【請求項８】
請求項７記載の外部記憶装置において、
インタフェースパスの使用権の監視時間を、アービトレーションフェーズからセレクションフェーズを経てメッセージアウトフェーズに移行する時間と同等以上に設定し、インタフェースパスの使用権裁定によるＢＳＹ信号ではなく、Ｉ／Ｏを実行処理していることに起因するＢＳＹ信号であることを確認し、障害発生の制御装置のポートアドレス引き継ぎを実行する
ことを特徴とする外部記憶装置。
【請求項９】
上位システムと、個別のポートアドレスであるＩＤを有するポートを内蔵した複数の制御装置及び複数の制御装置に制御されて共用される記憶装置群を有する外部記憶装置と、前記上位システムと前記ポートを内蔵した複数の制御装置とを接続するインタフェースパスと、から構成され、前記上位システムから前記複数の制御装置及び前記記憶装置にアクセス可能な構成において、
複数の制御装置の内、１台以上の制御装置を残し、他の制御装置に障害が発生した際に、障害発生の制御装置は、該制御装置自身の障害を認識し、正常な制御装置により障害発生の制御装置の制御情報の引き継ぎ処理とポートアドレスの追加処理が実行される時間と等しい時間、制御動作を実行せずに待機し、
障害を認識した正常な制御装置が前記引継ぎ処理と前記追加処理を完了後、障害発生の制御装置は、障害発生の制御装置のポートアドレスを消去し、
以降の上位システムが発行するＩ／Ｏ要求には、障害発生の制御装置のポートアドレスが消去されていることにより、障害発生の制御装置のポートアドレスを引き継いだ正常な制御装置が応答する
ことを特徴とする外部記憶装置。
【請求項１０】
請求項９記載の外部記憶装置において、
制御装置の障害発生時、上位システムが障害の発生した制御装置に対しＩ／Ｏ要求を実行しておらず、且つ上位システムと制御装置とを接続したインタフェースパスが使用されていない状態において、
正常な制御装置が障害の発生した制御装置に対しセレクションを実行し、正常な制御装置と障害の発生した制御装置との間でパスの使用権を獲得することにより、正常な制御装置によるポートアドレス引き継ぎの処理中に、上位システムが障害の発生した制御装置に対してＩ／Ｏ要求を発行することを抑止する
ことを特徴とする外部記憶装置。
【請求項１１】
請求項９記載の外部記憶装置において、
制御装置の障害発生時、上位システムが障害の発生した制御装置に対しＩ／Ｏ要求を実行しておらず、且つ正常な制御装置がインタフェースパスを使用している状態において、正常な制御装置が、上位システムから発行されたＩ／Ｏ要求を処理している間に障害発生の制御装置のポートアドレスの引き継ぎ処理を完了し、その後前記Ｉ／Ｏ要求の終了報告を行うことにより、正常な制御装置によるポートアドレス引き継ぎの実行中に、上位システムが障害の発生した制御装置に対してＩ／Ｏ要求を発行することを抑止する
ことを特徴とする外部記憶装置。
【請求項１２】
請求項９記載の外部記憶装置において、
制御装置の障害発生時、インタフェースパスが使用中である場合、インタフェースパスに接続されている他のデバイスがインタフェースパスを使用中であるか、アービトレーションフェーズ乃至セレクションフェーズ中であるか、障害発生の制御装置が上位システムのＩ／Ｏ要求を既に受領中であるかのいずれであるかを、正常な制御装置がインタフェースパスのＢＳＹ信号を監視することにより把握し、
前記監視中にインタフェースパスが解放された場合は、正常な制御装置が障害の発生した制御装置に対しセレクションを実行し、正常な制御装置と障害の発生した制御装置との間でインタフェースパスの使用権を獲得し、
前記監視中に正常な制御装置がセレクションされた場合は、正常な制御装置が、上位システムから発行されたＩ／Ｏ要求を処理している間に障害発生の制御装置のポートアドレスの引き継ぎ処理を完了し、その後前記Ｉ／Ｏ要求の終了報告を行い、
前記監視期間中に正常な制御装置が障害発生の制御装置のポートアドレスの引き継ぎ処理を完了する
ことを特徴とする外部記憶装置。
【請求項１３】
請求項９記載の外部記憶装置において、
インタフェースパスの使用権の監視時間を、アービトレーションフェーズからセレクションフェーズを経てメッセージアウトフェーズに移行する時間と同等以上に設定し、インタフェースパスの使用権裁定によるＢＳＹ信号ではなく、Ｉ／Ｏを実行処理していることに起因するＢＳＹ信号であることを確認し、障害発生の制御装置のポートアドレス引き継ぎを実行する
ことを特徴とする外部記憶装置。
【請求項１４】
上位システムと、個別のポートアドレスであるＩＤを有するポートを内蔵した複数の制御装置及び複数の制御装置に制御されて共用される記憶装置群を有する外部記憶装置と、前記上位システムと前記ポートを内蔵した複数の制御装置とを接続するインタフェースパスと、から構成され、前記上位システムから前記複数の制御装置及び前記記憶装置にアクセス可能な構成において、
複数の制御装置の内、１台以上の制御装置を残し、他の制御装置に障害が発生した際に、正常な制御装置が障害を検出して、正常な制御装置が障害の発生した制御装置のポートアドレスを参照し、障害の発生した制御装置の制御情報を引き継ぎ、正常な制御装置は自身の保持するポートアドレスに加えて障害の発生した制御装置のポートアドレスを追加する機能を具備し、
前記上位システムは、該上位システムの発行したＩ／Ｏ要求を受領した制御装置に障害が発生して該制御装置が応答出来ない状態において、制御装置のＩ／Ｏ完了報告を監視し、前記監視の一定時間経過後に前記障害発生の制御装置に対してＩ／Ｏ要求を再度発行し、リセットを含んだ回復処理を実行し、前記回復処理に対し前記制御装置が応答しない場合にパーマネントエラーと認識し、アプリケーションに報告する機能を具備し、
正常な制御装置による前記参照、引き継ぎ及び追加するポートアドレス処理までを、前記パーマネントエラーの認識に至るまでの時間より早く完了することにより、前記上位システムのアプリケーションに対してパーマネントエラーを報告しないようにする
ことを特徴とするインターフェースパスで接続された上位システム及び外部記憶装置。
【請求項１５】
上位システムとインタフェースパスを介して接続され、個別のポートアドレスをそれぞれ有する複数の制御装置と、前記複数の制御装置に共用される記憶装置群とを備える外部記憶装置の障害回復方法において、
前記複数の制御装置の内、１台以上の制御装置を残し、他の制御装置に障害が発生した場合、正常な制御装置は、障害を検出し、前記正常な制御装置は、前記インタフェースパスを専有した後、障害の発生した制御装置のポートアドレスを参照し、障害の発生した制御装置の制御情報を引き継ぎ、
正常な制御装置は、自身の保持するポートアドレスに加えて障害の発生した制御装置のポートアドレスを追加する
ことを特徴とする外部記憶装置の障害回復方法。
【請求項１６】
上位システムと、
前記上位システムから送られるデータが格納される記憶装置群と、
前記上位システムとインタフェースパスを介して接続され、前記記憶装置群に格納されているデータ転送を制御する第１の制御装置と、
前記上位システムと前記インタフェースパスを介して接続され、前記記憶装置群に格納されているデータ転送を制御する第２の制御装置と、
前記第１の制御装置内に設けられ、前記インタフェースパスを制御し、第１のアドレスを有する第１のポートと、
前記第２の制御装置内に設けられ、前記インタフェースパスを制御し、第２のアドレスを有する第２のポートと、
前記第２の制御装置に障害が発生した場合、前記第１の制御装置は、前記インタフェースパスを専有した後、前記第２の制御装置の障害を検出し、前記第２のポートの前記第２のアドレスを参照し、前記第１のポートに前記第２のアドレスを追加する
ことを特徴とする外部記憶装置。
【請求項１７】
請求項１６の外部記憶装置において、
前記インタフェースパスはＳＣＳＩバスであることを特徴とする外部記憶装置。
【請求項１８】
請求項１６記載の外部記憶装置において、
前記第１の制御装置は、前記第２のポートの前記第２のアドレスを削除することを特徴とする外部記憶装置。
【請求項１９】
請求項１６記載の外部記憶装置において、
前記第１のアドレスと前記第２のアドレスとは、ＳＣＳＩ−ＩＤであることを特徴とする外部記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータの外部記憶装置において、高信頼性を確保するため制御装置を２重化以上の構成とし、上位システムよりこれらの制御装置にアクセス可能な外部記憶装置サブシステムに係り、特に制御装置の障害時に、ユーザ、上位システムの介入なく処理を継続する制御装置の冗長化方式に関する。
【０００２】
【従来の技術】
複数の制御装置とこれら制御装置から共有される記憶装置が、上位システムから制御装置に対し１本のディジーチェイン接続のインターフェースケーブルで接続されているシステム構成では、複数の制御装置はそれぞれ別個のＳＣＳＩ−ＩＤ等のポートアドレスを有している。通常これらの制御装置は上位システムから当該ポートアドレスを指定されたＩ／Ｏ要求を処理している。
【０００３】
特開平４−３６４５１４号公報記載のものは、このような制御装置の多重化により、制御装置下に接続される記憶装置に対する上位装置のＩ／Ｏ要求を、高速に処理するシステムであった。このような従来システムにおいては、制御装置の障害発生時に、上位システムがＩ／Ｏ要求を実行する制御装置の指定を変更することにより、正常な制御装置でＩ／Ｏ要求を処理可能であった。しかし上位システムと複数の制御装置をディジーチェイン接続したシステムでは、制御装置に障害が発生した場合に、ユーザ、上位システムの介入無しに正常な制御装置に処理を引き継ぎ、動作する配慮がなかった。
【０００４】
【発明が解決しようとする課題】
上位システムは、Ｉ／Ｏ要求を制御装置に発行した後、システム内部のタイマでＩ／Ｏ終了を監視している。Ｉ／Ｏ要求発行から上位システムで規定される監視時間以上経過してもＩ／Ｏが終了しない場合、上位システムはこれを一旦エラーと認識し、ＳＣＳＩバス等のバス回復処理等の後に障害の発生した制御装置のポートアドレスを指定して同一のＩ／Ｏ要求を再発行する。
【０００５】
このＩ／Ｏ要求の再発行に制御装置が応答しない場合、上位システムはこれをパーマネントエラーと見なし、以降Ｉ／Ｏ要求を障害制御装置に対して発行しない。制御装置の障害時に、上記従来システムでは当該Ｉ／Ｏ再発行に対し障害の発生した制御装置は応答不可であるため、上位システムは障害をパーマネントエラーと認識する。このため従来システムでは、制御装置を複数搭載しているにも関わらず、制御装置の障害時に上位システムのデータ処理を継続するためにはユーザの介入を必要とした。
【０００６】
そこで本発明では、上位システムがパーマネントエラーを認識しＩ／Ｏを再発行する以前に、正常な制御装置によって処理を引き継ぐことにより、上位システム、ユーザの介入なしにデータ処理を継続することを目的とする。
【０００７】
さらに、障害検出時に障害の発生した制御装置が上位システムのＩ／Ｏ要求をまだ受領しておらず、エラーとなっていない場合には、障害の発生した制御装置へのＩ／Ｏ要求を極力抑止し、異常動作となることを防止する必要がある。このため、本発明では上位システムのＩ／Ｏ要求発行を抑止した上で、ポートアドレスと制御情報を引き継ぎを実行することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明では、正常な制御装置が、障害の発生した制御装置の制御情報を引き継ぐ機能と、障害の発生した制御装置のポートアドレスを参照し、自身の保持するポートアドレスに追加する機能とを有する。さらに正常な制御装置は、障害の発生した制御装置のポートアドレスをリセットし、ポートアドレスを消失させる機能を有する。
【０００９】
これらの機能を有す結果、正常な制御装置は、障害の発生した制御装置のポートアドレスと制御情報を引き継ぎ、障害の発生した制御装置に対し発行されたＩ／Ｏ要求を受領し実行可能となる。ここで、ポートアドレスのリセットは、障害の発生した制御装置により実行される方式でも良い。
【００１０】
さらに本発明では、障害検出時に正常な制御装置によりＳＣＳＩバス等のバスを監視する機能を有することにより、障害の発生した制御装置が既に上位システムのＩ／Ｏ要求を受領したか否かを判断する。障害の発生した制御装置が既に上位システムのＩ／Ｏ要求を受領していた場合に、上位システムからＩ／Ｏが再発行される前に、障害の発生した制御装置のポートアドレスと制御情報の引き継ぎを完了させることにより、上位システムのパーマネントエラー認識を回避し、ユーザ、上位システムの介入無しに上位システム処理を継続できる。
【００１１】
さらに障害検出時に、正常な制御装置がＩ／Ｏ実行中である場合は、障害の発生した制御装置はまだ上位システムのＩ／Ｏ要求を受領していない。本発明ではこれを検出し、正常な制御装置のＩ／Ｏ実行中に、前記障害の発生した制御装置のポートアドレスと制御情報の引き継ぎを実行する機能を有する。
【００１２】
これにより、ポートアドレス引き継ぎ処理が完了するまで上位システムから障害の発生した制御装置へのＩ／Ｏ要求を抑止できる。また、障害検出時にＳＣＳＩバス等のバスが使用されていない場合にも、障害の発生した制御装置はまだ上位システムのＩ／Ｏ要求を受領していない。本発明ではこれを検出し、正常な制御装置から障害の発生した制御装置をセレクションし、この間に前記障害の発生した制御装置のポートアドレスと制御情報の引き継ぎを実行する機能を有す。これにより、ポートアドレス引き継ぎ処理が完了するまで上位システムから障害の発生した制御装置へのＩ／Ｏ要求を抑止できる。
【００１３】
以上説明したような構成を採用することにより、障害の発生した制御装置がＩ／Ｏ要求を受領しＳＣＳＩバス等のバスを専有したままＩ／Ｏを実行を完了しない状態にある時、この状態を正常な制御装置により検出し、上位システムのＩ／Ｏ監視時間内に、以降の障害制御装置に対するＩ／Ｏ要求を正常な制御装置で受領、実行可能となる。これにより上位システムのＩ／Ｏ再発行に応答可能となり、上位システムの処理中断、上位システムのＩ／Ｏ要求発行停止を防止できる。
【００１４】
さらに、制御装置の障害検出時に、正常な制御装置が、障害の発生した制御装置への上位システムのＩ／Ｏ要求を抑止できる。このため、障害の発生した制御装置がＩ／Ｏ要求をまだ受領していない場合には、上位システムにエラーを認識させることなく、以降のＩ／Ｏ要求を正常な制御装置で受領可能となり、システムの無停止運用を実現できる。
【００１５】
【発明の実施の形態】
以下、本発明の１実施形態を詳細に説明する。
【００１６】
図１は、本発明をデュアルコントローラ構成のキャッシュ付き磁気ディスクアレイサブシステムに適用した場合の１実施形態を示すハードウェア構成図である。図２は、本発明が解決しようとする課題を説明するための制御装置障害時の上位システムの処理シーケンスである。図３はディスクサブシステムの状況に応じて実行する処理を纏めた表である。
【００１７】
図４は、制御装置の障害検出時に実行する処理のうち、ＳＣＳＩバスフリーの場合に実行する処理の手順である。図５は、制御装置の障害検出時に実行する処理のうち、バスが使用されている場合に実行する処理の手順である。図６は構成の異なる制御装置で本発明を実現する場合のハードウェア構成図である。図７は、図６の構成における実現方式を示した図である。
【００１８】
図１において、１０，２０はデータ処理を行う中央処理装置としての上位システムであり、７０はデュアルコントローラ構成をとるディスクアレイサブシステムであり、ディスクアレイサブシステムの構成は、６０が上位システムのデータを格納する単体ディスク、３０，４０が上位システムと単体ディスク間のデータ転送を制御する制御装置、５０が制御装置間で情報を伝達するための共有メモリである。
【００１９】
上位システム１０，２０と制御装置３０，４０は１本のＳＣＳＩケーブルでディジーチェーン接続されている。制御装置３０の構成は、３１が上位システム側のＳＣＳＩバスを制御するＳＣＳＩポート、３２がデータの転送を実行するデータ転送制御部、３３が単体ディスクと制御装置を接続するＳＣＳＩバスを制御するデバイス側ＳＣＳＩポート、３４が制御装置全体を制御するマイクロプロセッサ、３５が制御装置４０のＳＣＳＩポートをリセットするポートアドレスリセット機構、３６が上位システム１０とキャッシュメモリ３２との間のデータ転送を実行するデータ転送制御部、３７がキャッシュメモリ３２と単体ディスク６０との間のデータ転送を実行するアレイデータ転送制御部である。
【００２０】
データ転送制御部３６はキャッシュメモリ３２へのデータ転送時に、同内容を制御装置４０のキャッシュメモリに書き込む機能を有する。また、アレイデータ転送制御部３７は、キャッシュメモリ３２にバッファリングされたデータに対して冗長データを生成する機能を有し、この機能はデータの復元にも用いることができる。
【００２１】
制御装置４０は制御装置３０と同一の構成であり、ポートアドレスリセット機構４５は制御装置３０上のＳＣＳＩポート３１をリセットできる。前記ポートアドレスリセット機構３５，４５は、各々別の制御装置４０，３０内のＳＣＳＩポート４１，３１の保持するポートアドレスであるＳＣＳＩ−ＩＤをリセットし、次回のアービトレーションフェーズでＳＣＳＩ−ＩＤを消失することを可能とする。
【００２２】
また、データ転送制御部４６はキャッシュメモリに３２にデータを書き込む機能を有するため、上位システム１０，２０から転送されるデータはすべて各キャッシュメモリ３２，４２において２重化してバッファリングされる。
【００２３】
上位システム１０が制御装置３０経由でデータ転送を行う場合を例にとり、Ｉ／Ｏの流れを説明する。上位システム１０はＳＣＳＩ−ＩＤを指定してＩ／Ｏ要求を発行する。このＳＣＳＩ−ＩＤを内部に保存しているＳＣＳＩポート３１がＩ／Ｏ要求を受領し、マイクロプロセッサ３４にＩ／Ｏ要求を引き渡す。マイクロプロセッサ３４はＩ／Ｏ要求を解析し、データ転送制御部３６に上位システム１０と単体ディスク６０間のデータ転送を実行させる。
【００２４】
転送データは一時キャッシュメモリ３２でバッファリングされるが、制御装置の障害に備え、キャッシュメモリ４２にも書き込まれる。ＳＣＳＩ−ＩＤはマイクロプロセッサ３４によってＳＣＳＩポート３１の初期化時に設定され、同時に共有メモリ５０に保存される。共有メモリ５０には前記デュアルコントローラ構成で片系制御装置に障害が発生した際、正常な制御装置で処理が継続できるように制御情報も格納される。
【００２５】
次に図２の制御装置障害時の上位システムの処理シーケンスを使用し、本発明が上位システムのＩ／Ｏを継続させる方法を示す。
【００２６】
まず上位システムの内部構成を説明する。図２において、８１はユーザの様々な要求をデータ処理で実現するアプリケーション、８２はデータ構造を保持し、Ｉ／Ｏ要求を制御するファイルシステム、８３はＩ／Ｏ要求を周辺装置に合わせた要求形態に変換するデバイスドライバ、８４はＩ／Ｏ要求をＳＣＳＩバス上に送出するＳＣＳＩカード、８５は転送用Ｉ／Ｏバッファ、８６は上位システムの障害情報を蓄積するシステムログである。
【００２７】
次に一般的なディスクサブシステムの制御装置に障害が発生した場合の上位システムの処理を示す。アプリケーション８１で発生したＩ／Ｏを受け、ファイルシステム８２がデバイスドライバ８３、ＳＣＳＩカード８４を介してＩ／Ｏ要求をＳＣＳＩバスに対して発行する。これを受領した制御装置がディスクサブシステムの障害を検出すると、このＩ／Ｏ要求に対してＣＨＥＣＫ  ＣＯＮＤＩＴＩＯＮを応答する。
【００２８】
次にデバイスドライバ８３はＲＥＱＵＥＳＴ  ＳＥＮＳＥコマンドを発行し、障害詳細情報であるＳＥＮＳＥ  ＤＡＴＡを受領する。デバイスドライバ８３はＳＥＮＳＥ  ＤＡＴＡから制御装置の状況を判断し同一のＩ／Ｏ要求の再発行（リトライ）を行う。障害の発生した制御装置はこの再発行されたＩ／Ｏ要求も実行することが出来ないため、デバイスドライバはＡＢＯＲＴメッセージの後にリトライを行う等の試行を繰り返した後に、これをパーマネントエラーと認識し、ファイルシステム８２に通知する。
【００２９】
パーマネントエラーを通知されたファイルシステム８２は、ディスクサブシステムに対して以降Ｉ／Ｏ要求を発行することはない。ファイルシステム８２はさらにＩ／Ｏバッファ８５の未反映データを消去し、システムログ８６に障害発生を記録して、アプリケーション８１を介してユーザにエラーを通知する。このためアプリケーション８１、ファイルシステム８２、ディスクサブシステムで更新データの整合性が壊れる場合があり、ユーザは一旦アプリケーション等を停止させ、ディスクサブシステムの回復の後に、上位システムにおいて不整合が発生したと思われる一連の処理を再実行させる必要がある。
【００３０】
この他の例として、制御装置がデバイスドライバ８３に対し障害があるにも関わらずＣＨＥＣＫ  ＣＯＮＤＩＴＩＯＮを応答せず、デバイスドライバ８３に障害発生を通知しない場合がある。この場合、デバイスドライバ８３は一定時間のタイマ監視によりディスクサブシステムの状態を見るが、一定時間内に応答が無い場合、上記の例と同様、同一Ｉ／Ｏ要求の再発行（リトライ）以降の処理を行う。
【００３１】
これに対して、本発明が上記のユーザ操作を行わなくともＩ／Ｏ処理が継続可能である事を図１を使用して説明する。制御装置３０，４０は正常動作時には一定時間間隔で共有メモリ５０内の制御装置毎の監視情報を更新し、更に他の制御装置の監視情報を参照している。
【００３２】
上位システム１０のＩ／Ｏ要求を制御装置３０が、上位システム２０のＩ／Ｏ要求を制御装置４０が受領している時、制御装置３０に障害が発生すると、共有メモリ５０内の制御装置３０の監視情報は、制御装置３０により障害を示す情報に書き換えられるか、または、一定時間が経過しても更新されない。制御装置４０は共有メモリ５０内の監視情報を参照してこれを制御装置３０の障害として検出し、共有メモリ５０からＳＣＳＩポート３１のＳＣＳＩ−ＩＤと制御装置３０の制御情報とを読みだし、マイクロプロセッサ４４によりＳＣＳＩポート４１にＳＣＳＩポート３１のＳＣＳＩ−ＩＤを追加する。
【００３３】
更に、制御装置４０は、ＳＣＳＩポートリセット機構４５を使用し、ＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを消去する。これによりＳＣＳＩポート４１は、上位システム２０が発行するＩ／Ｏ要求と、上位システム１０が発行するＩ／Ｏ要求とを受領可能になり、上位システム１０のリトライを正常な制御装置４０で受領し実行できる。
【００３４】
リトライが正常に実行された場合、ファイルシステムには、Ｉ／Ｏ要求は正常に実行されたと通知され、上位システムの処理は正常に継続される。制御情報には、キャッシュメモリ３２，４２のデータを単体ディスクへ転送する際の経過情報が含まれており、制御装置４０は制御情報を引き継ぐことにより、キャッシュメモリ３２内に未反映で残されているＷＲＩＴＥデータの代替データとして、キャッシュメモリ４２内に書き込まれた２重化データを転送できる。
【００３５】
制御装置３０の障害の検出と制御情報の引き継ぎの手法に関しては本願と同一出願人による特願平７−１３９７８１号（平成７年６月７日出願）に詳細な説明があるためこれを省略する。
【００３６】
以下の例ではすべて図１の制御装置３０に障害が発生し正常な制御装置４０で処理を継続する場合について説明する。
【００３７】
次にディスクサブシステムの状況に応じて実際に実行する処理を図３を使用して説明する。
【００３８】
一般的に、障害の発生した制御装置が上位システムからのＩ／Ｏ要求を受領した際の動作を完全に予測することは困難である。従って、制御装置障害検出時に障害の発生した制御装置３０が上位システム１０のＩ／Ｏ要求をまだ受領していない場合は、早期に前記ＳＣＳＩ−ＩＤの引き継ぎ処理、即ちＳＣＳＩポート４１へのＳＣＳＩ−ＩＤの追加及びＳＣＳＩポート３１のリセットを実行することにより、Ｉ／Ｏ要求を制御装置４０で受領することが可能となる。
【００３９】
しかし、ＳＣＳＩ−ＩＤの引き継ぎ処理中に、上位システム１０からＩ／Ｏ要求が発行された場合、制御装置３０と制御装置４０が同一のＳＣＳＩ−ＩＤを有すため、ＳＣＳＩバス動作が不安定となる。そこで本発明では、ＳＣＳＩ−ＩＤの引き継ぎ処理中は、ＳＣＳＩバス８０を専有することにより、上位システム１０のＩ／Ｏ発行を抑止する方式を採用した。
【００４０】
これに対し制御装置３０が上位システム１０のＩ／Ｏ要求を既に受領中の場合は、制御装置３０がＳＣＳＩバス８０を専有したまま停止しており、デバイスドライバ８３が内部タイマによってＩ／Ｏを監視し、バスリセット、リトライを実行する以前にＳＣＳＩ−ＩＤの引き継ぎを実行し、制御装置４０がリトライに応答する必要がある。
【００４１】
本発明では制御装置４０でＳＣＳＩバス８０を監視することにより、制御装置３０が上位システム１０のＩ／Ｏ要求を既に受領したかどうかを判断し、これに対応した処理を実行する。
【００４２】
障害検出時にＳＣＳＩバス８０がバスフリーであった場合は制御装置３０がまだＩ／Ｏ要求を受領していないため、制御装置４０によりイニシエータ動作を実行して制御装置３０をセレクションすることでＳＣＳＩバス８０を専有する。これにより上位システム１０のＩ／Ｏ要求発行を抑止できるため、この間にＳＣＳＩ−ＩＤの引き継ぎを行う。
【００４３】
障害検出時に制御装置４０がＳＣＳＩバス８０を使用してＩ／Ｏ実行中であった場合は、制御装置３０がまだＩ／Ｏ要求を受領していないため、当該Ｉ／Ｏの終了時にバスフリーとなり、上位システム１０のＩ／Ｏ要求が発行される可能性がある。このため当該Ｉ／Ｏ実行中にＳＣＳＩ−ＩＤの引き継ぎを実行し完了させる。Ｉ／Ｏ実行中にＳＣＳＩ−ＩＤの引き継ぎが完了しない場合、Ｉ／Ｏの終了ステータス報告をＩＤ引き継ぎ完了まで延期する。
【００４４】
障害検出時にＳＣＳＩバスが使用中である場合は、アービトレーション、セレクション中か、ＳＣＳＩバス８０に接続されている他のＳＣＳＩデバイスがＳＣＳＩバス８０を使用中か、又は制御装置３０が上位システム１０のＩ／Ｏ要求を既に受領中かのいずれかである。
【００４５】
この場合は制御装置４０によりＳＣＳＩバス８０のＢＳＹ信号を監視する。監視時間を、アービトレーションフェーズからセレクションフェーズを経てメッセージアウトフェーズに移行する時間異常に設定することにより、バス使用権裁定のＢＳＹ信号でなく、Ｉ／Ｏを実行処理中であるＢＳＹ信号であることを確認する。確認後にＳＣＳＩ−ＩＤの引き継ぎ処理を実行する。
【００４６】
他のＳＣＳＩデバイスがＳＣＳＩバス８０を使用中の場合は、制御装置３０がまだＩ／Ｏ要求を受領していない場合となり、前記処理によりＳＣＳＩデバイスがＳＣＳＩバス８０を使用中に引き継ぎ処理が可能となる。
【００４７】
制御装置３０が上位システム１０のＩ／Ｏ要求を既に受領中の場合は、制御装置４０のＳＣＳＩバス８０監視時間が、上位システム１０のＩ／Ｏ監視時間に比較して十分に小さいため、前記処理により上位システムのバスリセット指示以前にＳＣＳＩ−ＩＤ引き継ぎを完了することが十分可能である。
【００４８】
以上のＳＣＳＩバス監視によるディスクサブシステムの状況把握手順とそれに対応したＳＣＳＩ−ＩＤ引き継ぎ処理手順を図４、図５を使用して説明する。
【００４９】
図４において、制御装置３０の障害を検出した際にＳＣＳＩバス８０がバスフリーであった場合を説明する。
【００５０】
制御装置４０は、ＳＣＳＩバス８０がバスフリーであることから制御装置３０が上位システム１０のＩ／Ｏ要求をまだ受領していないことを認識し、ＳＣＳＩポート４１にイニシエータ動作を開始させ、ＳＣＳＩバス８０のアービトレーションに参加する。
【００５１】
制御装置４０がアービトレーションに残った場合、セレクションにおいてＳＣＳＩポート３１のＳＣＳＩ−ＩＤを指定し、制御装置３０がＳＣＳＩバス８０を専有している状態にする。この状態において、制御装置４０がＳＣＳＩポート４１にＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを追加し、ＳＣＳＩポート３１をリセットする。制御装置３０が専有しているＳＣＳＩバス８１は、ＳＣＳＩポート３１のリセットにより解放され、バスフリーに戻る。以降制御装置４０が上位システム１０のＩ／Ｏ要求を受領する。
【００５２】
制御装置４０はアービトレーションに残れなかった場合に、上位システム２０からセレクションされるかどうか判別する。上位システム２０により制御装置４０がセレクションされた場合、制御装置４０がＳＣＳＩバス８０を専有している状態となる。この状態において制御装置４０は上位システム２０のＩ／Ｏ要求まで受領し、一旦処理を中止する。制御装置４０はＳＣＳＩポート４１にＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを追加しＳＣＳＩポート３１をリセットする。リセット後に上位システム２０のＩ／Ｏ要求を実行してＳＣＳＩバスバス８０をバスフリーに戻す。以降制御装置４０が上位システム１０のＩ／Ｏ要求を受領する。
【００５３】
制御装置４０がアービトレーションに残らず、さらにセレクションされなかった場合、制御装置４０は、上位システム１０のＩ／Ｏ要求を受領した制御装置３０か、他のＳＣＳＩデバイスがＳＣＳＩバス８０を専有している状態と判断する。制御装置４０がＳＣＳＩポート４１にＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを追加し、ＳＣＳＩポート３１をリセットする。制御装置３０がＳＣＳＩバス８０を専有していた場合はＳＣＳＩポート３１のリセットによりバスフリーに戻る。他のＳＣＳＩデバイスがＳＣＳＩバス８０を専有していた場合はＳＣＳＩデバイスのＩ／Ｏ終了でバスフリーに戻る。以降制御装置４０が上位システム１０のＩ／Ｏ要求を受領する。
【００５４】
次に制御装置３０の障害を検出した際にＳＣＳＩバス８０のＢＳＹ信号がアサートされていた場合の処理手順を図５を使用して説明する。
【００５５】
制御装置４０はまず自身が上位システム２０のＩ／Ｏ要求を実行中であるかを判断する。実行中でなければアービトレーションフェーズからセレクションフェーズを経てメッセージアウトフェーズに移行する時間と同等時間、ＳＣＳＩバス８０の状態を監視する。
【００５６】
障害検出時に制御装置４０がＩ／Ｏを実行中であるか、又はＳＣＳＩバス８０の監視時に制御装置４０が上位システム２０にセレクションされた場合、ＳＣＳＩバス８０は制御装置４０に専有され、制御装置３０はまだＩ／Ｏ要求を受領していない状態にある。この状態で制御装置４０はＩ／Ｏ実行処理の終了ステータスを上位システム２０に報告するより以前に、ＳＣＳＩポート４１にＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを追加し、ＳＣＳＩポート３１をリセットする。リセット後にＩ／Ｏの終了ステータスを報告しＩ／Ｏを終了する。
【００５７】
ＳＣＳＩバス８０は、Ｉ／Ｏ実行処理が終了した時点でバスフリーとなり、以降制御装置４０が上位システム１０のＩ／Ｏ要求を受領する。
【００５８】
ＳＣＳＩバス８０監視中にバスフリーを検出した場合は図４にあるバスフリー検出時の処理を実行する。
【００５９】
制御装置４０がＩ／Ｏ実行中でなく、監視中にＳＣＳＩバス８０が解放されない場合、制御装置４０は、制御装置３０又は他のＳＣＳＩデバイスがＳＣＳＩバス８０を専有してＩ／Ｏを実行中であることを認識し、ＳＣＳＩバスの監視を継続してＳＣＳＩポート４１にＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを追加し、ＳＣＳＩポート３１をリセットする。
【００６０】
制御装置３０がＳＣＳＩバス８０を専有していた場合はＳＣＳＩポート３１のリセットによりバスフリーに戻る。他のＳＣＳＩデバイスがＳＣＳＩバス８０を専有していた場合はＳＣＳＩデバイスのＩ／Ｏ終了でバスフリーに戻る。以降制御装置４０が上位システム１０のＩ／Ｏ要求を受領する。ＳＣＳＩポート３１のリセット完了以前にバスが解放された場合、図４にあるバスフリー検出時の処理を実行する。
【００６１】
以上の処理手順により、制御装置３０の障害時に、制御装置４０により上位システム１０のＩ／Ｏ要求を実行でき、パーマネントエラーとなることを防止できる。このため、上位システム１０のデータ処理を正常に継続することができる。
【００６２】
次に図６、図７を使用し、本発明ず、ポートアドレスリセット機構を有しない制御装置の構成においても実現可能であることを示す。
【００６３】
図６は図１の構成において、ポートアドレスリセット機構を有しない制御装置の構成を示す図である。９０，１００は図１の制御装置３０、制御装置４０の機能を担う制御装置、５０は制御装置９０と制御装置１００との間の情報提供に使用される共有メモリである。
【００６４】
制御装置９０の内部構成は、３４が制御装置全体を制御するマイクロプロセッサ、３１がマイクロプロセッサ３４からのみ制御可能であるＳＣＳＩポート、３２がキャッシュメモリ、３３がデバイス側ＳＣＳＩポート、３６がデータ転送制御部、３７がアレイデータ転送制御部である。制御装置１００も制御装置９０と同一の構成を有する。以下、図１の上位システム１０のＩ／Ｏ要求を制御装置９０が受領し、図１の上位システム２０のＩ／Ｏ要求を制御装置１００が受領している例について説明する。図７は横軸に時間経過をとり、ＳＣＳＩ−ＩＤ引き継ぎ処理手順を示した図である。
【００６５】
制御装置９０に障害が発生すると制御装置１００がこれを検出し、共有メモリ５０からＳＣＳＩポート３１のＳＣＳＩ−ＩＤと制御装置９０の制御情報を読みだし、マイクロプロセッサ４４によりＳＣＳＩポート４１に当該ＳＣＳＩ−ＩＤを追加する。これに対し制御装置９０は自身の障害を認識し、マイクロプロセッサ３４の内部タイマにより上記制御装置１００の処理が実行される時間と同等以上の時間、制御動作を実行せずに待機する。
【００６６】
制御装置９０は、この待機により上記制御装置１００の処理完了を確定させた後に、マイクロプロセッサ３４によりＳＣＳＩポート３１の有するＳＣＳＩ−ＩＤを消去する。これによりＳＣＳＩ−ＩＤの引き継ぎ処理が完了し、ＳＣＳＩポート４１が図１上位システム１０のＩ／Ｏ要求を受領することが可能となる。
【００６７】
以上のようにポートアドレスリセット機構を使用しないＳＣＳＩ−ＩＤ引き継ぎ処理が可能であるので、ポートアドレスリセット機構を有しない構成においても本発明は有効である。
【００６８】
更に、以上説明したような本発明における外部記憶装置の実施形態と第２図における制御装置故障時の上位システム処理シ−ケンスとの関係から明らかなように、次のような上位システムと外部記憶装置との具体的関連によっても本発明の目的を達成することができる。
【００６９】
上位システムと、個別のポートアドレスであるＳＣＳＩ−ＩＤを有するポートを内蔵した複数の制御装置及び複数の制御装置に制御されて共用される記憶装置群を有する外部記憶装置と、前記上位システムと前記ポートを内蔵した複数の制御装置とをディジーチェーンで接続する１本のＳＣＳＩのインタフェースケーブルと、から構成され、前記上位システムから前記複数の制御装置及び前記記憶装置にアクセス可能な構成において、複数の制御装置の内、１台以上の制御装置を残し、他の制御装置に障害が発生した際に、正常な制御装置が、障害を検出して障害の発生した制御装置のポートアドレスを参照し、障害の発生した制御装置の制御情報を引き継ぎ、正常な制御装置は自身の保持するポートアドレスに加えて障害の発生した制御装置のポートアドレスを追加する機能を具備し、前記上位システムは、該上位システムの発行したＩ／Ｏ要求を受領した制御装置に障害が発生して該制御装置が応答出来ない状態において、制御装置のＩ／Ｏ完了報告を監視し、前記監視の一定時間経過後に前記障害発生の制御装置に対してＩ／Ｏ要求を再度発行し、リセットを含んだ回復処理を実行し、前記回復処理に対し前記制御装置が応答しない場合にパーマネントエラーと認識し、アプリケーションに報告する機能を具備し、正常な制御装置による前記参照、引き継ぎ及び追加するポートアドレス処理までを、前記パーマネントエラーの認識に至るまでの時間より早く完了することにより、前記上位システムのアプリケーションに対してパーマネントエラーを報告しないようにすること。
【００７０】
【発明の効果】
本発明によれば、上位システムとディジーチェーン接続される複数の制御装置を有し、それぞれの制御装置が異なるポートアドレスで上位システムのＩ／Ｏを受領できるディスクサブシステムにおいて、制御装置に障害が発生した場合、ユーザ、上位システムの介入を必要とせずに他の正常な制御装置により上位システムの発行するＩ／Ｏ要求を受領し実行する事が可能なため、制御装置の障害時のユーザ負担を軽減できる。また、障害発生時に上位システムのＩ／Ｏ発行を抑止する機能を有すため、システムの無停止運用に効果がある。
【図面の簡単な説明】
【図１】本発明の１実施形態を示すハードウェア構成図である。
【図２】実施形態が解決しようとする課題を説明するための、制御装置障害時の上位システム処理シーケンス図である。
【図３】実施形態において、ディスクサブシステムの状況に応じて実行する処理を纏めた図である。
【図４】実施形態において制御装置の障害検出時に実行する処理のうち、ＳＣＳＩバスフリーの場合に実行する処理のフローチャートである。
【図５】実施形態において制御装置の障害検出時に実行する処理のうち、バスが使用されている場合に実行する処理のフローチャートである。
【図６】構成の異なる制御装置で本発明を実現する場合のハードウェア構成図である。
【図７】図６の実施形態の構成における実現方式を示した概念図である。
【符号の説明】
１０，２０  上位システム
３０，４０  ディスク制御装置
３１，４１  ＳＣＳＩポート
３２，４２  キャッシュメモリ
３３，４３  デバイス側ＳＣＳＩポート
３４，４４  マイクロプロセッサ
３５，４５  ポートアドレスリセット機構
３６，４６  データ転送制御部
３７、４７  アレイデータ転送制御部
５０  共有メモリ
６０  単体ディスク
７０  ディスクサブシステム
８０  ＳＣＳＩバス
８１  アプリケーション
８２  ファイルシステム
８３  デバイスドライバ
８４  ＳＣＳＩカード
８５  Ｉ／Ｏバッファ
８６  システムログ
９０，１００  ディスク制御装置
【図１】
0003628777.tif 000002
【図２】
0003628777.tif 000003
【図３】
0003628777.tif 000004
【図４】
0003628777.tif 000005
【図５】
0003628777.tif 000006
【図６】
0003628777.tif 000007
【図７】
0003628777.tif 000008