(57)【要約】【課題】従来のホストのタイムアウト時間を変更せずに、ＨＤＤ自体のエラー回復処理を有効にするコントローラのアクセス制御方式。【解決手段】ホスト１０とＨＤＤ３０にアクセスするためのそれぞれのインタフェース部を介し、制御プログラムにより各種機能を実現する処理部を備えたコントローラ２０であって、処理部は、ホストからのアクセス要求に基づいてＨＤＤにアクセスしたとき、タイムアウト時間内にＨＤＤからのエラー回復処理完了を含めた正常応答がなかった場合、ＨＤＤに対してリセットの指示を行わずに（Ｕ３２２）、ホストにエラー報告を行い（Ｕ３２３）、ホストからの再度のアクセス要求（Ｕ３１１）に基づいて、アクセスしたＨＤＤに対してリセットの指示（Ｕ３２４）を行った後に、再度アクセス（Ｕ３２５）する処理を行う。この間に、ＨＤＤのエラー回復処理（Ｕ３３０）は完了している。【選択図】図３
2008015901.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムと外部記憶装置にアクセスするためのそれぞれのインタフェース部を介し、制御プログラムにより各種機能を実現する処理部を備えたコントローラであって、
前記処理部は、前記ホストシステムからのアクセス要求に基づいて前記外部記憶装置にアクセスしたとき、タイムアウト時間内に前記外部記憶装置からのエラー回復処理完了を含めた正常応答がなかった場合、前記外部記憶装置に対してリセットの指示を行わずに、前記ホストシステムにエラー報告を行い、
前記ホストシステムからの再度のアクセス要求に基づいて、前記アクセスした外部記憶装置に対してリセットの指示を行った後に、再度アクセスする処理を行う
ことを特徴とするコントローラ。
【請求項２】
ホストシステムにアクセスするためのホストシステム用インタフェース部と複数の外部記憶装置にアクセスするための外部記憶装置用インタフェース部を介し、制御プログラムによりミラーリングを含めた各種機能を実現する処理部を備えたコントローラであって、
前記処理部は、前記ホストシステムからのアクセス要求に基づいて一の外部記憶装置にアクセスしたとき、タイムアウト時間内に前記一の外部記憶装置からのエラー回復処理完了を含めた正常応答がなかった場合、前記一の外部記憶装置に対してリセットの指示を行わずに、他の外部記憶装置に再アクセスし、前記他の外部記憶装置に対するタイムアウト時間内に前記他の外部記憶装置からのエラー回復処理完了を含めた正常応答がなかった場合、前記他の外部記憶装置に対してリセットの指示を行わずに、前記ホストシステムにエラー報告を行い、
前記ホストシステムからの再度のアクセス要求に基づいて、前記一の外部記憶装置に対してリセットの指示を行った後に、再度アクセスする処理を行う
ことを特徴とするコントローラ。
【請求項３】
ホストシステムとの通信を行うホストシステム用インタフェース部と、外部記憶装置との通信を行う外部記憶装置用インタフェース部と、前記通信に基づいて演算処理を行う処理部と、前記演算処理の結果を格納する記憶部と、を備え、前記ホストシステムと前記外部記憶装置との間の通信を制御するコントローラであって、
前記記憶部は、前記コントローラが前記外部記憶装置のエラー回復処理に対するリセットを行ったか否かを判定するための判定フラグ（リセットを行った場合ＯＮ、行っていない場合ＯＦＦ）を格納し、
前記処理部は、前記ホストシステムからアクセス要求を受けた場合、判定フラグをチェックする処理と、前記判定フラグがＯＮ（リセットを行った）であれば前記外部記憶装置に対してリセットを行わずアクセスを実行する処理と、前記判定フラグがＯＦＦ（リセットしていない）であれば前記外部記憶装置に対してリセットを行った後にアクセスを実行する処理と、アクセスの実行後、前記外部記憶装置が所定の時間内に応答がなかった場合に前記外部記憶装置に対してリセットを行わず、前記フラグをＯＦＦにした後、前記ホストシステムに対してエラーを報告する処理と、を実行する
ことを特徴とするコントローラ。
【請求項４】
請求項３において、
前記外部記憶装置用ンタフェース部は、複数の外部記憶装置とアクセスする機能を有し、
前記記憶部は、前記コントローラが一の外部記憶装置のエラー回復処理に対するリセットを行ったか否かを判定するための判定フラグと、他の外部記憶装置のエラー回復処理に対するリセットを行ったか否かを判定するための判定フラグと、を格納し、
前記処理部は、前記ホストシステムからアクセス要求を受けた場合、アクセスする前記一か前記他の外部記憶装置を選択する処理と、選択した一の外部記憶装置の判定フラグをチェックする処理と、前記判定フラグがＯＮ（リセットを行った）であれば前記選択した一の外部記憶装置に対してリセットを行わずアクセスを実行する処理と、前記判定フラグがＯＦＦ（リセットしていない）であれば前記選択された一の外部記憶装置に対してリセットを行った後にアクセスを実行する処理と、アクセスの実行後、前記選択された一の外部記憶装置が所定の時間内に応答がなかった場合に前記選択された一の外部記憶装置に対してリセットを行わず、前記フラグをＯＦＦした後、前記他の外部記憶装置に対して前記一の外部記憶装置と同様処理を行う処理と、を実行する
ことを特徴とするコントローラ。
【請求項５】
請求項１ないし４のいずれか１つの請求項に記載のコントローラの機能を内蔵するホストシステム。
【請求項６】
請求項１ないし４のいずれか１つの請求項に記載のコントローラの機能を内蔵する外部記憶装置。
【請求項７】
請求項１ないし４のいずれか１つの請求項に記載のコントローラと、ホストシステムと、外部記憶装置を備えた計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部記憶装置を備えた計算機システムの制御方式に係わり、特に、外部記憶装置自身のエラー回復処理が有効に働くようにし、外部記憶装置の稼働率を高めた外部記憶装置のアクセス制御方式、このアクセス制御方式を実行する外部記憶装置コントローラ、このコントローラを内蔵する外部記憶装置、及びこのコントローラの機能を有するホストシステムに関する。
【背景技術】
【０００２】
外部記憶装置、例えば磁気ディスク記憶装置（以下、ＨＤＤと称する）を備えた計算機システムでは、ＨＤＤとこのＨＤＤを利用するホストシステムとは、ホストインターフェース、例えばＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）バスにより直接相互接続されるか、インターフェースを変換するためのコントローラや、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）コントローラを介して接続される。
【０００３】
ホストまたはコントローラがＨＤＤへのアクセスを行ったときに、何らかのエラーが発生し、ＨＤＤから一定時間応答が帰ってこない場合、コントローラはタイムアウト検出と同時にＨＤＤにリセット指示を出し（例えば、ＨＤＤによるエラー回復処理を中止させる）、その後ホストシステムへエラー報告を行っていた。
【０００４】
ＨＤＤにエラーが発生した場合、ＨＤＤ内部では予め定められた手順でエラー回復処理が行われる。近年では、このＨＤＤのエラー回復機能は非常に強化されてきており、膨大な数の回復処理を予め定められた順序で実行するように構成されている。したがって、ホストシステムからのアクセス要求に対してＨＤＤ内部でエラーが発生しても、この強化されたエラー回復処理により、エラーが救済される可能性が高くなっている。
【０００５】
しかし、エラーの内容によってはエラー回復処理に時間が掛かり、回復処理を行っている途中でタイムアウトが検出され、リセット処理が行われる場合がある。リセット処理が行われた場合、回復処理は完了せず、結果としてＨＤＤはエラー状態のままである。ホストシステムはＨＤＤのエラー報告を受けた場合、ＨＤＤへの再アクセスを要求するが、この状態では、再アクセスを行っても同じ場所でエラーが発生するため、タイムアウトと再アクセスの繰り返しとなり、回復処理が完了すれば使用可能なＨＤＤであっても、復旧不可能となるという事態が生じていた。
【０００６】
この事態に対して、例えば特許文献１に記載されているように、タイムアウトによってエラー回復処理が中断した場合、アクセス要求内容を記憶しておき、次回に同じアクセス要求がきたときには、タイムアウトまでの監視時間を延長するといった技術（以下、先行技術と称する）が提案されている。
【特許文献１】特開２００２−３５８１７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上記先行技術においては、タイムアウト時間（ホストにエラー報告するまでの時間）を延ばすことでエラー回復処理時間を確保しているため、従来の古い計算機システムに近年の新しいＨＤＤを接続する場合等において、タイムアウト時間を延ばすことによって他の何らかの不具合が生じるというような場合には、上記引用文献の技術を利用できない虞があった。
【０００８】
本発明の目的は、上述した課題を解決するためになされたものであり、従来のホストのタイムアウト時間を変更せずに、ＨＤＤ自体のエラー回復処理を有効にするコントローラのアクセス制御方式を提供することにある。
【課題を解決するための手段】
【０００９】
前記課題を解決するために、本発明は主として次のような構成を採用する。  
ホストシステムと外部記憶装置にアクセスするためのそれぞれのインタフェース部を介し、制御プログラムにより各種機能を実現する処理部を備えたコントローラであって、
前記処理部は、前記ホストシステムからのアクセス要求に基づいて前記外部記憶装置にアクセスしたとき、タイムアウト時間内に前記外部記憶装置からのエラー回復処理完了を含めた正常応答がなかった場合、前記外部記憶装置に対してリセットの指示を行わずに、前記ホストシステムにエラー報告を行い、前記ホストシステムからの再度のアクセス要求に基づいて、前記アクセスした外部記憶装置に対してリセットの指示を行った後に、再度アクセスする処理を行う構成とする。
【００１０】
また、ホストシステムにアクセスするためのホストシステム用インタフェース部と複数の外部記憶装置にアクセスするための外部記憶装置用インタフェース部を介し、制御プログラムによりミラーリングを含めた各種機能を実現する処理部を備えたコントローラであって、
前記処理部は、前記ホストシステムからのアクセス要求に基づいて一の外部記憶装置にアクセスしたとき、タイムアウト時間内に前記一の外部記憶装置からのエラー回復処理完了を含めた正常応答がなかった場合、前記一の外部記憶装置に対してリセットの指示を行わずに、他の外部記憶装置に再アクセスし、前記他の外部記憶装置に対するタイムアウト時間内に前記他の外部記憶装置からのエラー回復処理完了を含めた正常応答がなかった場合、前記他の外部記憶装置に対してリセットの指示を行わずに、前記ホストシステムにエラー報告を行い、前記ホストシステムからの再度のアクセス要求に基づいて、前記一の外部記憶装置に対してリセットの指示を行った後に、再度アクセスする処理を行う構成とする。
【００１１】
また、ホストシステムとの通信を行うホストシステム用インタフェース部と、外部記憶装置との通信を行う外部記憶装置用インタフェース部と、前記通信に基づいて演算処理を行う処理部と、前記演算処理の結果を格納する記憶部と、を備え、前記ホストシステムと前記外部記憶装置との間の通信を制御するコントローラであって、
前記記憶部は、前記コントローラが前記外部記憶装置のエラー回復処理に対するリセットを行ったか否かを判定するための判定フラグを格納し、
前記処理部は、前記ホストシステムからアクセス要求を受けた場合、判定フラグをチェックする処理と、前記判定フラグがＯＮ（リセットを行った）であれば前記外部記憶装置に対してリセットを行わずアクセスを実行する処理と、前記判定フラグがＯＦＦ（リセットしていない）であれば前記外部記憶装置に対してリセットを行った後にアクセスを実行する処理と、アクセスの実行後、前記外部記憶装置が所定の時間内に応答がなかった場合に前記外部記憶装置に対してリセットを行わず、前記フラグをＯＦＦにした後、前記ホストシステムに対してエラーを報告する処理と、を実行する構成とする。
【００１２】
また、前記コントローラにおいて、前記外部記憶装置用ンタフェース部は、複数の外部記憶装置とアクセスする機能を有し、前記記憶部は、前記コントローラが一の外部記憶装置のエラー回復処理に対するリセットを行ったか否かを判定するための判定フラグと、他の外部記憶装置のエラー回復処理に対するリセットを行ったか否かを判定するための判定フラグと、を格納し、
前記処理部は、前記ホストシステムからアクセス要求を受けた場合、アクセスする前記一か前記他の外部記憶装置を選択する処理と、選択した一の外部記憶装置の判定フラグをチェックする処理と、前記判定フラグがＯＮ（リセットを行った）であれば前記選択した一の外部記憶装置に対してリセットを行わずアクセスを実行する処理と、前記判定フラグがＯＦＦ（リセットしていない）であれば前記選択された一の外部記憶装置に対してリセットを行った後にアクセスを実行する処理と、アクセスの実行後、前記選択された一の外部記憶装置が所定の時間内に応答がなかった場合に前記選択された一の外部記憶装置に対してリセットを行わず、前記フラグをＯＦＦした後、前記他の外部記憶装置に対して前記一の外部記憶装置と同様処理を行う処理と、を実行する構成とする。
【発明の効果】
【００１３】
古い世代のＨＤＤは、エラー回復処理の内容も簡素で、それほど時間を必要としなかったが、現在の新しい世代のＨＤＤでは、エラー回復処理が高度化・複雑化しており、処理に時間が必要である。このため、古い世代のＨＤＤを使用しているホストシステムに新しい世代のＨＤＤを適用した場合、タイムアウト時間が回復処理に必要な時間より短く、新しい世代のＨＤＤのエラー回復処理を有効に働かせることができなかった。
【００１４】
本発明によれば、前記のようなタイムアウト時間が短いホストシステムにおいても、エラー回復処理のための時間を確保することができ、処理を有効に働かせることが可能となる。
【発明を実施するための最良の形態】
【００１５】
本発明の実施形態に係るコントローラのアクセス制御方式について、図面を参照しながら以下詳細に説明する。本発明の第１の実施形態については、図１、図２及び図３を用いて説明し、本発明の第２の実施形態については、図４、図５−１〜図５−４及び図６を用いて説明する。図面において、１０はホストシステム、２０はコントローラ、２１はホストアクセス用インターフェース、２２は処理部、２３は外部記憶装置アクセス用インターフェース、２４は記憶部、３０は外部記憶装置（ＨＤＤ）、３０Ａは 外部記憶装置１（ＨＤＤ１）、３０Ｂは 外部記憶装置２（ＨＤＤ２）、をそれぞれ表す。
【００１６】
「第１の実施形態」
図１は本発明の第１の実施形態に係るコントローラを含めた計算機システムの全体構成を示すブロック図である。
【００１７】
図１に示すように、第１の実施形態に係る計算機システムは、ホストシステム（ホスト計算機）１０と、ホストシステム１０の外部記憶装置として当該ホストシステム１０に利用される外部記憶装置３０、例えばＨＤＤ（磁気ディスク装置）と、ホストシステム１０とＨＤＤ３０を仲介するコントローラ２０と、から構成される。ここで、コントローラ２０とは、ホストインターフェースとＨＤＤインターフェースとを仲介するインターフェース変換コントローラや２台以上のＨＤＤを接続するためのＲＡＩＤコントローラのことを指す。
【００１８】
コントローラ２０は、各種機能を実現するための処理部２２と、制御プログラムが予め格納された記憶部２４と、ホストシステム１０にアクセスするためのインタフェース２１と、外部記憶装置にアクセスするためのインタフェース２３と、を有している。
【００１９】
次に、図２を参照（適宜に図１を参照）して、本発明の第１の実施形態に係るコントローラの処理部が行う処理について説明する。図２は、本発明の第１の実施形態に係るコントローラの処理を示すフローチャートである。
【００２０】
まず、コントローラ２０はホストシステム１０からＨＤＤへのアクセス要求を受ける（Ｓ１０１）。コントローラの処理部２２は、ＨＤＤ３０がビジー状態かどうかを確認する（Ｓ１０２）。「ＨＤＤがビジー状態である」場合、Ｓ２０１に進み、「ＨＤＤがビジー状態でない」場合、Ｓ１０３に進む。
【００２１】
Ｓ２０１に進んだ場合、規定時間経った後ビジーが解除されたかどうかを判定する（Ｓ２０１）。「規定時間経ってビジー状態が解除された」場合、Ｓ１０３へ進み、「規定時間経ってもビジー状態が解除されない」場合、Ｓ１０８へ進む。Ｓ１０３に進んだ場合、処理部２２は記憶部２４のリセットフラグの状態を判定する（Ｓ１０３）。ここで、リセットフラグはコントローラ２０がＨＤＤ３０にリセットを行ったか否かを判定するためのフラグである。
【００２２】
「リセットフラグがＯＮ（リセットを行った）」の場合はＳ１０４へ進み、コントローラはＨＤＤにアクセスを行う（Ｓ１０４）。「リセットフラグがＯＦＦ（リセットしていない）」の場合、Ｓ３０１に進み、コントローラ２０はＨＤＤ３０にリセットを行った後、ＨＤＤへアクセスを行う（Ｓ３０１）。このとき、記憶部のリセットフラグをＯＮにする（Ｓ３０２）。Ｓ１０４またはＳ３０２のどちらの場合でも次にＳ１０５へ進む。
【００２３】
ＨＤＤにアクセスを行った結果、「ＨＤＤからエラー応答があった」場合にはＳ４０１へ進み、ＨＤＤへのリセットを行った後、ホストシステムへエラー報告を行い、処理を終了する（Ｓ４０１）。「ＨＤＤからエラー応答がなかった」場合、Ｓ１０６へ進む。ＨＤＤから何も応答が得られず、タイムアウトが検出されたかどうかを判定する（Ｓ１０６）。「ＨＤＤのタイムアウトが検出された」場合、Ｓ１０７へ進み、「ＨＤＤのタイムアウトが検出されなかった」場合、Ｓ５０１へ進む。
【００２４】
Ｓ１０７へ進んだ場合、処理部は記憶部のリセットフラグをＯＦＦにする（Ｓ１０７）。その後、ＨＤＤへのリセットは行わずにホストシステムへエラー報告を行い、処理を終了する（Ｓ１０８）。Ｓ５０１へ進んだ場合、ＨＤＤから正常応答を受けとる（Ｓ５０１）。その後、ホストへ正常応答を送信し、処理を終了する（Ｓ５０２）。
【００２５】
次に、図３を参照（適宜に図１と図２を参照）して、本発明の第１の実施形態に係る計算機システムの処理について説明する。図３は、本発明の第１の実施形態に係る計算機システムの処理を説明する模式図であり、図３（ａ）は、コントローラがＨＤＤへアクセスを行ったとき、エラーが発生しなかった場合を示す模式図、図３（ｂ）は、コントローラがＨＤＤへアクセスを行ったとき、タイムアウト時間内にエラー回復処理が完了した場合を示す模式図、図３（ｃ）は、コントローラがＨＤＤへアクセスを行ったとき、タイムアウト時間内にエラー回復処理が完了しなかった場合を示す模式図である。
【００２６】
図３の（ａ）について説明すると、まず、ホストシステムはコントローラに対しアクセス要求を出す（Ｕ１１０）。アクセス要求を受けとったコントローラは、ＨＤＤに対しアクセスを行う（Ｕ１２０）。ＨＤＤは正常動作を行い（Ｕ１３０）、コントローラへ正常応答を返す（Ｕ１３１）。ＨＤＤから正常応答を受けとったコントローラはホストシステムに対し正常応答を返す（Ｕ１２１）。
【００２７】
図３の（ｂ）について説明すると、まず、ホストシステムは、コントローラに対しアクセス要求を出す（Ｕ２１０）。アクセス要求を受けとったコントローラは、ＨＤＤに対しアクセスを行う（Ｕ２２０）。ここでエラーが発生した場合（或るアドレスの読み出しアクセスで該当するセクタに一時的な媒体不良があって読み出せない場合）、ＨＤＤはエラー回復処理を開始する（Ｕ２３０）。
【００２８】
このとき、回復処理がタイムアウト時間Ｕ２２１までに終了した場合、ＨＤＤはコントローラに対し正常応答を返す（Ｕ２３１）。ＨＤＤから正常応答を受けとったコントローラは、ホストシステムに対し正常応答を返す（Ｕ２２２）。
【００２９】
図３の（ｃ）について説明すると、まず、ホストシステムは、コントローラに対しアクセス要求を出す（Ｕ３１０）。アクセス要求を受けとったコントローラは、ＨＤＤに対しアクセスを行う（Ｕ３２０）。ここでエラーが発生した場合、ＨＤＤはエラー回復処理を開始する（Ｕ３３０）。
【００３０】
このとき、回復処理がタイムアウト時間Ｕ３２１までに終了しなかった場合、通常、コントローラはＨＤＤに対しリセットを行おうとするが、これを抑止する（Ｕ３２２）。（ここで、回復処理がタイムアウト時間内に終了しなかった場合にリセットしようとする意味は、リセットされようとするアクセス要求とは異なる新たな要求が次回に行われる場合には、このリセットされようとするアクセス要求に対するＨＤＤの回復処理を実行しなくても、次回の要求に対しては正常な動作を行うことが可能な場合があるので、当該回復処理を中止するためである）その後、コントローラは、ホストシステムに対しエラー報告を行う（Ｕ３２３）。この間も図示するように回復処理を続行している。
【００３１】
これを受けてホストシステムは、コントローラに対して再アクセス要求を行う（例えば、前回と同一アドレスの内容を読み出すというアクセス要求）（Ｕ３１１）。再アクセス要求を受け取ったコントローラは、ＨＤＤに対してリセットを行う（Ｕ３２４）。このため、エラー回復処理Ｕ３３０は、リセットＵ３２４が来るまでＨＤＤの回復処理を続けることができる。
【００３２】
リセットが完了した後、コントローラはＨＤＤに対しアクセスを行う（Ｕ３２５）。ＨＤＤはエラー回復処理が完了しているので、正常動作を行い（Ｕ３３１）、コントローラに対して正常応答を行う（Ｕ３３２）。ＨＤＤから正常応答を受けとったコントローラは、ホストシステムに対し正常応答を返す（Ｕ３２６）。
【００３３】
「第２の実施形態」
図４は本発明の第２の実施形態に係るコントローラを含めた計算機システムの全体構成を示すブロック図である。本発明の第２の実施形態は、コントローラに複数のＨＤＤを接続し、ミラーリングを行う場合を想定している。ここで述べるミラーリングとは、複数台のＨＤＤに対して、同一の情報を記録しておき、情報読み出し時に１台目のＨＤＤにエラーが発生した場合、別のＨＤＤから情報を読み出す仕組みを指す。なお、計算機システムの全体構成の中で第１の実施形態と共通する部分については、同じ符号を付し、説明を省略する。
【００３４】
まず、図４を参照して、本発明の第２の実施形態に係る計算機システムの構成について説明する。図４に示すように、計算機システムのうち、ホストシステム１０とコントローラ２０は図１と同じ構成となっている。ここで、コントローラの外部記憶装置アクセス用インタフェース２３に接続される対象が、外部記憶装置１（３０Ａ）および外部記憶装置２（３０Ｂ）の複数台となっている点のみ、図１と異なる。
【００３５】
次に、図５−１から図５−４を参照（適宜に図４を参照）して、本発明の第２の実施形態に係るコントローラの処理部が行う処理について説明する。図５−１から図５−４は、本発明の第２の実施形態に係るコントローラの処理の一部を示すフローチャートである。
【００３６】
図５−１について説明する。まず、コントローラ２０はホストシステム１０からＨＤＤへのアクセス要求を受ける（Ｔ１１１）。コントローラの処理部２２は、アクセスするＨＤＤをＨＤＤ１（３０Ａ）またはＨＤＤ２（３０Ｂ）から選択する（Ｔ１１２）。ここでの選択方法は限定せず、アクセス対象のデータにヘッドが近いＨＤＤが選択されるニアレスシークでも良いし、他の方法でも構わない。そして「選択したＨＤＤがＨＤＤ１」の場合はＴ１１３に進み、「選択したＨＤＤがＨＤＤ２」の場合は後述の図５−３のＢに進む。
【００３７】
Ｔ１１３に進んだ場合、処理部２２は、ＨＤＤ１がビジー状態かどうかを確認する（Ｔ１１３）。「ＨＤＤ１がビジー状態である」場合、Ｔ１２１に進み、「ＨＤＤ１がビジー状態でない」場合、Ｔ１１４に進む。Ｔ１２１に進んだ場合、規定時間経った後ビジーが解除されたかどうかを判定する（Ｔ１２１）。「規定時間経ってビジー状態が解除された」場合、Ｔ１１４へ進み、「規定時間経ってもビジー状態が解除されない」場合、Ｔ１１９へ進む。
【００３８】
Ｔ１１４に進んだ場合、処理部２２は記憶部２４のＨＤＤ１のリセットフラグの状態を判定する（Ｔ１１４）。「ＨＤＤ１のリセットフラグがＯＮ」の場合はＴ１１５へ進み、コントローラ２０はＨＤＤ１にアクセスを行う（Ｔ１１５）。「ＨＤＤ１のリセットフラグがＯＦＦ」の場合、Ｔ１３１に進み、コントローラ２０はＨＤＤ１にリセットを行った後、ＨＤＤ１へアクセスを行う（Ｔ１３１）。このとき記憶部２４のＨＤＤ１のリセットフラグをＯＮにする（Ｔ１３２）。Ｔ１１５またはＴ１３２のどちらの場合でも次にＴ１１６へ進む。
【００３９】
ＨＤＤ１にアクセスを行った結果、「ＨＤＤ１からエラー応答があった」場合にはＴ１４１へ進み、ＨＤＤ１へのリセットを行う（Ｔ１４１）、その後、Ｔ１１９へ進む。「ＨＤＤ１からエラー応答がなかった」場合、Ｔ１１７へ進む。ＨＤＤ１から何も応答が得られず、タイムアウトが検出されたかどうかを判定する（Ｔ１１７）。「ＨＤＤ１のタイムアウトが検出された」場合、Ｔ１１８へ進み、「ＨＤＤ１のタイムアウトが検出されなかった」場合、Ｔ１５１へ進む。
【００４０】
Ｔ１１８へ進んだ場合、処理部は記憶部のＨＤＤ１のリセットフラグをＯＦＦにする（Ｔ１１８）。Ｔ１１８またはＴ１４１のどちらの場合も、その後アクセス対象のＨＤＤをＨＤＤ２に変更し（Ｔ１１９）、後述の図５−２のＡへ進む。Ｔ１５１へ進んだ場合、ＨＤＤ１から正常応答を受けとる（Ｔ１５１）。その後、ホストへ正常応答を送信し、処理を終了する（Ｔ１５２）。
【００４１】
次に、図５−２について説明する。前述の図５−１のＴ１１９からＴ２１１に進んだ場合、処理部２２は、ＨＤＤ２がビジー状態かどうかを確認する（Ｔ２１１）。「ＨＤＤ２がビジー状態である」場合、Ｔ２２１に進み、「ＨＤＤ２がビジー状態でない」場合、Ｔ２１２に進む。Ｔ２２１に進んだ場合、規定時間経った後ビジーが解除されたかどうかを判定する（Ｔ２２１）。「規定時間経ってビジー状態が解除された」場合、Ｔ２１２へ進み、「規定時間経ってもビジー状態が解除されない」場合、Ｔ２１７へ進む。
【００４２】
Ｔ２１２に進んだ場合、処理部は記憶部のＨＤＤ２のリセットフラグの状態を判定する（Ｔ２１２）。「ＨＤＤ２のリセットフラグがＯＮ」の場合はＴ２１３へ進み、コントローラ２０はＨＤＤ２にアクセスを行う（Ｔ２１３）。「ＨＤＤ２のリセットフラグがＯＦＦ」の場合、Ｔ２３１に進み、コントローラ２０はＨＤＤ２にリセットを行った後、ＨＤＤ２へアクセスを行う（Ｔ２３１）。このとき記憶部２４のＨＤＤ２のリセットフラグをＯＮにする（Ｔ２３２）。Ｔ２１３またはＴ２３２のどちらの場合でも次にＴ２１４へ進む。
【００４３】
ＨＤＤ２にアクセスを行った結果、「ＨＤＤ２からエラー応答があった」場合にはＴ２４１へ進み、ＨＤＤ２へのリセットを行った後、ホストシステム１０にエラー報告を行い、処理を終了する（Ｔ２４１）。「ＨＤＤ２からエラー応答がなかった」場合、Ｔ２１５へ進む。ＨＤＤ２から何も応答が得られず、タイムアウトが検出されたかどうかを判定する（Ｔ２１５）。「ＨＤＤ２のタイムアウトが検出された」場合、Ｔ２１６へ進み、「ＨＤＤ２のタイムアウトが検出されなかった」場合、Ｔ２５１へ進む。
【００４４】
Ｔ２１６へ進んだ場合、処理部２２は記憶部２４のＨＤＤ２のリセットフラグをＯＦＦにする（Ｔ２１６）。その後、ＨＤＤ２へのリセットは行わずにホストシステムへエラー報告を行い、処理を終了する（Ｔ２１７）。Ｔ２５１へ進んだ場合、ＨＤＤ２から正常応答を受けとる（Ｔ２５１）。その後、ホストへ正常応答を送信し、処理を終了する（Ｔ２５２）。
【００４５】
図５−３について説明する。前述の図５−１のＴ１１２からＴ３１１に進んだ場合、処理部２２は、ＨＤＤ２がビジー状態かどうかを確認する（Ｔ３１１）。「ＨＤＤ２がビジー状態である」場合、Ｔ３２１に進み、「ＨＤＤ２がビジー状態でない」場合、Ｔ３１２に進む。Ｔ３２１に進んだ場合、規定時間経った後ビジーが解除されたかどうかを判定する（Ｔ３２１）。「規定時間経ってビジー状態が解除された」場合、Ｔ３１２へ進み、「規定時間経ってもビジー状態が解除されない」場合、Ｔ３１７へ進む。
【００４６】
Ｔ３１２に進んだ場合、処理部２２は記憶部２４のＨＤＤ２のリセットフラグの状態を判定する（Ｔ３１２）。「ＨＤＤ２のリセットフラグがＯＮ」の場合はＴ３１３へ進み、コントローラはＨＤＤ２にアクセスを行う（Ｔ３１３）。「ＨＤＤ２のリセットフラグがＯＦＦ」の場合、Ｔ３３１に進み、コントローラはＨＤＤ２にリセットを行った後、ＨＤＤ２へアクセスを行う（Ｔ３３１）。このとき記憶部２４のＨＤＤ２のリセットフラグをＯＮにする（Ｔ３３２）。Ｔ３１３またはＴ３３２のどちらの場合でも次にＴ３１４へ進む。
【００４７】
ＨＤＤ２にアクセスを行った結果、「ＨＤＤ２からエラー応答があった」場合にはＴ３４１へ進み、ＨＤＤ２へのリセットを行う（Ｔ３４１）、その後、Ｔ３１７へ進む。「ＨＤＤ２からエラー応答がなかった」場合、Ｔ３１５へ進む。ＨＤＤ２から何も応答が得られず、タイムアウトが検出されたかどうかを判定する（Ｔ３１５）。「ＨＤＤ２のタイムアウトが検出された」場合、Ｔ３１６へ進み、「ＨＤＤ２のタイムアウトが検出されなかった」場合、Ｔ３５１へ進む。
【００４８】
Ｔ３１６へ進んだ場合、処理部２２は記憶部２４のＨＤＤ２のリセットフラグをＯＦＦにする（Ｔ３１６）。Ｔ３１６またはＴ３４１のどちらの場合も、その後アクセス対象のＨＤＤをＨＤＤ１に変更し（Ｔ３１７）、後述の図５−４のＣへ進む。Ｔ３５１へ進んだ場合、ＨＤＤ２から正常応答を受けとる（Ｔ３５１）。その後、ホストへ正常応答を送信し、処理を終了する（Ｔ３５２）。
【００４９】
図５−４について説明する。前述の図５−３のＴ３１７からＴ４１１に進んだ場合、処理部２２は、ＨＤＤ１がビジー状態かどうかを確認する（Ｔ４１１）。「ＨＤＤ１がビジー状態である」場合、Ｔ４２１に進み、「ＨＤＤ１がビジー状態でない」場合、Ｔ４１２に進む。Ｔ４２１に進んだ場合、規定時間経った後ビジーが解除されたかどうかを判定する（Ｔ４２１）。「規定時間経ってビジー状態が解除された」場合、Ｔ４１２へ進み、「規定時間経ってもビジー状態が解除されない」場合、Ｔ４１７へ進む。
【００５０】
Ｔ４１２に進んだ場合、処理部２２は記憶部２４のＨＤＤ１のリセットフラグの状態を判定する（Ｔ４１２）。「ＨＤＤ１のリセットフラグがＯＮ」の場合はＴ４１３へ進み、コントローラ２０はＨＤＤ１にアクセスを行う（Ｔ４１３）。「ＨＤＤ１のリセットフラグがＯＦＦ」の場合、Ｔ４３１に進み、コントローラはＨＤＤ１にリセットを行った後、ＨＤＤ１へアクセスを行う（Ｔ４３１）。このとき記憶部のＨＤＤ１のリセットフラグをＯＮにする（Ｔ４３２）。Ｔ４１３またはＴ４３２のどちらの場合でも次にＴ４１４へ進む。
【００５１】
ＨＤＤ１にアクセスを行った結果、「ＨＤＤ１からエラー応答があった」場合にはＴ４４１へ進み、ＨＤＤ１へのリセットを行った後、ホストシステム１０にエラー報告を行い、処理を終了する（Ｔ４４１）。「ＨＤＤ１からエラー応答がなかった」場合、Ｔ４１５へ進む。ＨＤＤ１から何も応答が得られず、タイムアウトが検出されたかどうかを判定する（Ｔ４１５）。「ＨＤＤ１のタイムアウトが検出された」場合、Ｔ４１６へ進み、「ＨＤＤ１のタイムアウトが検出されなかった」場合、Ｔ４５１へ進む。
【００５２】
Ｔ４１６へ進んだ場合、処理部２２は記憶部２４のＨＤＤ１のリセットフラグをＯＦＦにする（Ｔ４１６）。その後、ＨＤＤ１へのリセットは行わずにホストシステムへエラー報告を行い、処理を終了する（Ｔ４１７）。Ｔ４５１へ進んだ場合、ＨＤＤ２から正常応答を受けとる（Ｔ４５１）。その後、ホストへ正常応答を送信し、処理を終了する（Ｔ４５２）。
【００５３】
次に、図６を参照（適宜に図４，５−１〜５−４を参照）して、本発明の第２の実施形態に係る計算機システムの処理について説明する。図６は、本発明の第２の実施形態に係る計算機システムの処理を説明する模式図であり、図６（ａ）は、コントローラがＨＤＤへアクセスを行ったとき、エラーが発生しなかった場合を示す模式図、図６（ｂ）は、コントローラがＨＤＤへアクセスを行ったとき、タイムアウト時間内にエラー回復処理が完了した場合を示す模式図、図６（ｃ）は、コントローラが１台目のＨＤＤ２へアクセスを行ったとき、タイムアウト時間内にエラー回復処理が完了せず、別のＨＤＤ１へアクセスを切替え、このＨＤＤ１ではエラーが発生しなかった場合を示す模式図、図６（ｄ）は、コントローラが１台目のＨＤＤ２へアクセスを行ったとき、タイムアウト時間内にエラー回復処理が完了せず、別のＨＤＤ１へアクセスを切替え、このＨＤＤ１でもタイムアウト時間内にエラー回復処理が完了しなかった場合を示す模式図である。
【００５４】
図６の（ａ）について説明すると、まず、ホストシステム１０は、コントローラ２０に対しアクセス要求を出す（Ｖ１１０）。アクセス要求を受けとったコントローラ２０は、アクセスするＨＤＤを選択し、選択したＨＤＤに対しアクセスを行う。図６（ａ）では、ＨＤＤ２を選択した場合を示す（Ｖ１２０）。
【００５５】
ＨＤＤ２は正常動作を行い（Ｖ１３０）、コントローラへ正常応答を返す（Ｖ１３１）。ＨＤＤ２から正常応答を受けとったコントローラは、ホストシステムに対し正常応答を返す（Ｖ１２１）。
【００５６】
図６の（ｂ）について説明すると、まず、ホストシステム１０は、コントローラ２０に対しアクセス要求を出す（Ｖ２１０）。アクセス要求を受けとったコントローラ２０は、アクセスするＨＤＤを選択し、選択したＨＤＤに対しアクセスを行う。図６（ｂ）では、ＨＤＤ１を選択した場合を示す（Ｖ２２０）。
【００５７】
ここでエラーが発生した場合、ＨＤＤ１はエラー回復処理を開始する（Ｖ２３０）。このとき、回復処理がタイムアウト時間Ｖ２２１までに終了した場合、ＨＤＤ１はコントローラに対し正常応答を返す（Ｖ２３１）。ＨＤＤ１から正常応答を受けとったコントローラ２０は、ホストシステム１０に対し正常応答を返す（Ｖ２２２）。
【００５８】
図６の（ｃ）について説明すると、まず、ホストシステム１０は、コントローラ２０に対しアクセス要求を出す（Ｖ３１０）。アクセス要求を受けとったコントローラは、アクセスするＨＤＤを選択し、選択したＨＤＤに対しアクセスを行う。図６（ｃ）では、ＨＤＤ２を選択した場合を示す（Ｖ３２０）。
【００５９】
ここでエラーが発生した場合、ＨＤＤ２はエラー回復処理を開始する（Ｖ３３０）。このとき、回復処理がタイムアウト時間Ｖ３２１までに終了しなかった場合、通常、コントローラ２０はＨＤＤ２に対しリセットを行おうとするが、これを抑止する（Ｖ３２２）。
【００６０】
コントローラはアクセスするＨＤＤをＨＤＤ１に切り替えて再アクセスを行う（Ｖ３２３）。ＨＤＤ１は正常動作を行い、ＨＤＤ１はコントローラ２０に対し正常応答を返す（Ｖ３３２）。ＨＤＤ１から正常応答を受けとったコントローラは、ホストシステムに対し正常応答を返す（Ｖ３２４）。その間にエラー回復処理Ｖ３３０は処理を完了する。
【００６１】
図６の（ｄ）について説明すると、まず、ホストシステム１０は、コントローラ２０に対しアクセス要求を出す（Ｖ４１０）。アクセス要求を受けとったコントローラは、アクセスするＨＤＤを選択し、選択したＨＤＤに対しアクセスを行う。図６（ｄ）では、ＨＤＤ２を選択した場合を示す（Ｖ４２０）。
【００６２】
ここでエラーが発生した場合、ＨＤＤ２はエラー回復処理を開始する（Ｖ４３０）。このとき、回復処理がタイムアウト時間Ｖ４２１までに終了しなかった場合、通常、コントローラ２０はＨＤＤ２に対しリセットを行おうとするが、これを抑止する（Ｖ４２２）。コントローラ２０はアクセスするＨＤＤをＨＤＤ１に切り替えて再アクセスを行う（Ｖ４２３）。ここで、ＨＤＤ１にもエラーが発生した場合、ＨＤＤ１はエラー回復処理を開始する（Ｖ４３１）。
【００６３】
このとき、回復処理がタイムアウト時間Ｖ４２４までに終了しなかった場合、通常、コントローラ２０はＨＤＤ１に対しリセットを行おうとするが、これを抑止する（Ｖ４２５）。その後コントローラは、ホストシステムに対しエラー報告を行う（Ｖ４２６）。
【００６４】
これを受けてホストシステム１０は、コントローラ２０に対して再アクセス要求を行う（Ｖ４１２）。再アクセス要求を受けとったコントローラ２０は、アクセスするＨＤＤを選択し、選択したＨＤＤ２に対しリセットを行う（Ｖ４２７）。リセットが完了した後、コントローラ２０はＨＤＤ２に対しアクセスを行う（Ｖ４２８）。
【００６５】
ＨＤＤ２はエラー回復処理が完了しているので（図示するＨＤＤ２のエラー回復処理Ｖ４３０が、リセットＶ４２７の以前に回復処理が完了していることを想定している）、正常動作を行い（Ｖ４３２）、コントローラに対して正常応答を行う（Ｖ４３３）。ＨＤＤ２から正常応答を受けとったコントローラは、ホストシステムに対し正常応答を返す（Ｖ４２９）。
【００６６】
以上説明したように、本発明の実施形態は、次のような構成を備え作用効果を奏することを主たる特徴とするものである。すなわち、ホストシステムがアクセス要求を行ったとき、ＨＤＤで何らかのエラーが発生し、エラー回復処理の途中でタイムアウトが発生しても、コントローラによるＨＤＤへのリセットは行わない。リセットは、次にＨＤＤにアクセスを行う直前に行う。このことにより、一度目のアクセスと二度目のアクセスまでに空き時間があった場合には、その時間をエラーの回復処理に充てることができ、実質的な回復処理時間を延ばすことで、ＨＤＤ自体のエラー回復処理が中断されずに完了できる可能性を高めることができる。
【００６７】
さらに、本実施形態の特徴をＲＡＩＤコントローラ（ミラーコントローラ）に適用すれば、１台目のＨＤＤでエラーが発生し、他のＨＤＤに処理が切り替わっている時間をエラー回復処理に割当てることができ、再び１台目のＨＤＤにアクセス要求が行われるまでにエラー回復処理が完了している可能性を高めることを実現する。なお、以上の説明では、図２、図５−１〜図５−４に示す機能をコントローラが具備するものとして述べたが、これに限らず、同様の機能をホストシステムに内蔵させても良く、また、外部記憶装置に具備させても良い。
【図面の簡単な説明】
【００６８】
【図１】本発明の第１の実施形態に係るコントローラを含めた計算機システムの全体構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るコントローラの処理を示すフローチャートである。
【図３】本発明の第１の実施形態に係るコントローラを含めた計算機システムの処理を説明する模式図である。
【図４】本発明の第２の実施形態に係るコントローラを含めた計算機システムの全体構成を示すブロック図である。
【図５−１】本発明の第２の実施形態に係るコントローラの処理の一部を示すフローチャートである。
【図５−２】本発明の第２の実施形態に係るコントローラの処理の一部を示すフローチャートである。
【図５−３】本発明の第２の実施形態に係るコントローラの処理の一部を示すフローチャートである。
【図５−４】本発明の第２の実施形態に係るコントローラの処理の一部を示すフローチャートである。
【図６】本発明の第２の実施形態に係るコントローラを含めた計算機システムの処理を説明する模式図である。
【符号の説明】
【００６９】
１０  ホストシステム
２０  コントローラ
２１  ホストアクセス用インターフェース
２２  処理部
２３  外部記憶装置アクセス用インターフェース
２４  記憶部
３０  外部記憶装置（ＨＤＤ）
３０Ａ  外部記憶装置１（ＨＤＤ１）
３０Ｂ  外部記憶装置２（ＨＤＤ２）
【図１】
2008015901.tif 000003
【図２】
2008015901.tif 000004
【図３】
2008015901.tif 000005
【図４】
2008015901.tif 000006
【図５−１】
2008015901.tif 000007
【図５−２】
2008015901.tif 000008
【図５−３】
2008015901.tif 000009
【図５−４】
2008015901.tif 000010
【図６】
2008015901.tif 000011