(57)【特許請求の範囲】
【請求項１】
サーバにおいて、前記サーバと経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視し、タイムアウト時間内に前記入出力応答がないとタイムアウト処理を行う入出力制御方法であって、
前記入出力要求に対するタイムアウト時間を、前記入出力装置の入出力応答時間又はエラーに関する統計情報に基づいて予測する予測ステップと、
前記予測されたタイムアウト時間内に前記入出力要求に対する入出力応答がないと、前記入出力装置又は前記経路に起因するエラーを検出して前記タイムアウト処理を行うタイムアウトステップを有し、
前記タイムアウトステップは、前記エラーが検出された前記経路の閉塞又は別の経路への切り替え、或いは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行い、
一定時間内に前記入出力要求の発行対象の入出力装置に起因するエラーが検出されるとタイムアウト時間を前記予測されたタイムアウト時間に延長せず、前記エラーに関する統計情報がないと前記入出力応答時間に関する統計情報から入出力応答時間を予測する、入出力制御方法。
【請求項２】
前記予測ステップは、発行しようとしている入出力要求の対象に対して現在前記サーバにおいて処理している入出力要求の数と、前記入出力要求を発行してから前記対象から応答があるまでの平均時間の積、或いは、前記入出力要求を発行してから前記対象から応答があるまでの応答時間の集計の平均値を前記統計情報として用いる、請求項１記載の入出力制御方法。
【請求項３】
前記サーバ内のアプリケーションにより前記入出力要求を発行する発行ステップを更に有し、
前記予測ステップ及び前記タイムアウトステップは、前記サーバ内の入出力マルチパス制御ソフトウェアにより実行され、
前記タイムアウトステップは、前記エラーが検出された前記経路の閉塞又は別の経路への切り替えを行う、請求項１又は２記載の入出力制御方法。
【請求項４】
前記サーバ内のアプリケーションにより前記入出力要求を発行する発行ステップを更に有し、
前記予測ステップ及び前記タイムアウトステップは、前記サーバ内のボリューム管理ソフトウェアにより実行され、
前記タイムアウトステップは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、請求項１乃至３のいずれか１項記載の入出力制御方法。
【請求項５】
経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視する監視手段と、
前記入出力要求に対するタイムアウト時間を、前記入出力装置の入出力応答時間又はエラーに関する統計情報に基づいて予測する予測手段と、
前記予測されたタイムアウト時間内に前記入出力要求に対する入出力応答がないと、前記入出力装置又は前記経路に起因するエラーを検出して前記タイムアウト処理を行うタイムアウト手段を有し、
前記タイムアウト手段は、前記エラーが検出された前記経路の閉塞又は別の経路への切り替え、或いは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行い、
一定時間内に前記入出力要求の発行対象の入出力装置に起因するエラーが検出されるとタイムアウト時間を前記予測されたタイムアウト時間に延長せず、前記エラーに関する統計情報がないと前記入出力応答時間に関する統計情報から入出力応答時間を予測する、入出力制御装置。
【請求項６】
コンピュータに、前記コンピュータと経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視してタイムアウト時間内に前記入出力応答がないとタイムアウト処理を行う入出力制御を行わせるプログラムであって、
前記入出力要求に対するタイムアウト時間を、メモリに格納された、前記入出力装置の入出力応答時間又はエラーに関する統計情報に基づいて予測する予測手順と、
前記予測されたタイムアウト時間内に前記入出力要求に対する入出力応答がないと、前記入出力装置又は前記経路に起因するエラーを検出して前記タイムアウト処理を行うタイムアウト手順
を前記コンピュータに実行させ、
前記タイムアウト手順は、前記エラーが検出された前記経路の閉塞又は別の経路への切り替え、或いは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行い、
一定時間内に前記入出力要求の発行対象の入出力装置に起因するエラーが検出されるとタイムアウト時間を前記予測されたタイムアウト時間に延長せず、前記エラーに関する統計情報がないと前記入出力応答時間に関する統計情報から入出力応答時間を予測する、プログラム。
【請求項７】
前記入出力要求を前記コンピュータに発行させる発行手順を更に有し、
前記発行手順は、アプリケーションに実装され、
前記予測手順及び前記タイムアウト手順は、入出力マルチパス制御ソフトウェアに実装され、
前記タイムアウト手順は、前記エラーが検出された前記経路の閉塞又は別の経路への切り替えを行う、請求項６記載のプログラム。
【請求項８】
前記入出力要求を前記コンピュータに発行させる発行手順を更に有し、
前記発行手順は、アプリケーションに実装され、
前記予測手順及び前記タイムアウト手順は、ボリューム管理ソフトウェアに実装され、
前記タイムアウト手順は、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、請求項６又は７記載のプログラム。
【請求項９】
前記コンピュータに実装されたソフトウェアの階層構造において、アプリケーション、ボリューム管理ソフトウェア、入出力マルチパス制御ソフトウェアの順で上位層である、請求項７又は８記載のプログラム。
【請求項１０】
前記発行手順は、前記タイムアウト時間が所定時間を超える入出力要求は、前記タイムアウト時間が所定時間を超えることを示す情報を付加して発行し、
前記予測手順は、前記入出力要求に前記情報が付加されていると前記予測タイムアウト時間を予め設定された値に設定する、請求項７又は８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力制御方法、制御装置及びプログラムに係り、特に入出力装置の応答時間を監視することで入出力装置を制御する入出力制御方法、制御装置及びプログラムに関する。
【背景技術】
【０００２】
図1は、サーバとディスクアレイ装置間の通信制御の一例を説明する図である。図１に示すシステムは、サーバ１とディスクアレイ装置２を有し、サーバ１とディスクアレイ装置２はＦＣ（Fiber Channel），ＳＣＳＩ（Small Computer System Interface），ＳＡＳ（Serial Attached SCSI）等の伝送路３により接続されている。サーバ１は、アプリケーション１１、入出力（Ｉ／Ｏ：Input/Output）マルチパス制御ソフトウェア１２及びターゲットドライバ１３を有する。ターゲットドライバ１３は、ＨＢＡ（Host Bus Adapter）１３−１及びＨＢＡ１３−２を有する。ディスクアレイ装置２は、コントローラ２１及び入出力（Ｉ／Ｏ）装置として機能する複数のディスク装置２２を有する。
【０００３】
アプリケーション１１からＩ／Ｏ要求が発行されると、ターゲット装置（Ｉ／Ｏ装置）に対する制御は、サーバ１とディスクアレイ装置２間の複数の通信経路３を制御するＩ／Ｏマルチパス制御ソフトウェア１２、ターゲット装置へのＩ／Ｏコマンドを生成するターゲットドライバ１３及び実際にディスクアレイ装置２との通信を行うＨＢＡ１３−２を制御するＨＢＡドライバ１３−１により行われる。
【０００４】
図２は、図１に示すシステムの動作タイミングを説明する図である。Ｉ／Ｏマルチパス制御ソフトウェア１２は、サーバ１内のソフトウェアの階層構造においてＩ／Ｏマルチパス制御ソフトウェア１２より上位層のアプリケーション１１からＩ／Ｏ要求を受けると、Ｉ／Ｏ要求が発行されてからの経過時間を計測する内部タイマを起動した後に下位層のターゲットドライバ１３にＩ／Ｏ発行要求を発行する。その後、Ｉ／Ｏマルチパス制御ソフトウェア１２は、Ｉ／Ｏ発行要求を発行されたターゲットドライバ１３からのＩ／Ｏ応答を監視し、内部タイマで計測された経過時間を用いてタイムアウト時間（即ち、Ｉ／Ｏ応答監視時間）内にＩ／Ｏ応答が無ければタイムアウト処理を行う。このように、サーバ１とディスクアレイ装置２間の接続では、上記のＩ／Ｏマルチパス制御ソフトウェア１２を使用することで経路を冗長化し、１つの接続経路が不通となっても、冗長経路から通信を継続できるような構成とされている。
【０００５】
タイムアウト処理では、タイムアウトが発生した経路でエラーが発生したと判断し、タイムアウトが発生した経路を使用させないよう閉塞すると共に、経路を別の冗長経路に切り替えて、ターゲットドライバ１３に対してＩ／Ｏ発行要求を再発行する。図２では、経路で発生したエラーをＸ印で示す。このため、ディスクアレイ装置２が正常に動作していても、過負荷時にはタイムアウトが発生し、経路が閉塞されたり、ディスクボリュームが切り離されたりしてしまう。
【０００６】
特に社会システムと呼ばれるシステム等では、ディスクアレイ装置２又は経路の故障が発生しても短時間でエラーを検出して経路を冗長経路へ素早く切り替え、冗長経路への切り替えにより処理時間が長くならないことが要求される。このため、Ｉ／Ｏマルチパス制御ソフトウェア１２のタイムアウト時間は比較的短い時間に設定される。
【０００７】
ディスクアレイ装置２に対して大量のＩ／Ｏ要求が発行されてディスクアレイ装置２の処理能力を超えた場合には、ターゲットドライバ１３からタイムアウト時間内にＩ／Ｏ応答が出力されることはなく、タイムアウトが発生する。本来、Ｉ／Ｏ応答の監視は、ディスクアレイ装置２又は経路の故障等に起因するエラーの発生によりＩ／Ｏ応答が無いことを検出する目的で使用されるが、ディスクアレイ装置２は過負荷時においても正常に動作しており、実際にはエラーが発生していない状態でも、過負荷時の負荷遅延のためにＩ／Ｏ監視によりエラーが誤検出されてしまう。この結果、ディスクアレイ装置２を支障なく使用できる状態であるにもかかわらず、Ｉ／Ｏマルチパス制御ソフトウェア１２は故障が発生したと判断し、エラーが検出された系を閉塞させてしまう。このようなディスクアレイ装置２の過負荷状態は、データバックアップ又はリストア時、ダンプ採取時、業務バッチ処理時、予想外のサイトアクセス急増等にようる業務負荷上昇時等に発生する。
【０００８】
特にデータバックアップでは、オンラインバックアップと呼ばれる業務中にバックアップを採取する運用（例えば、ORACLE社製のRecovery Manager）が普及しており、業務のＩ／Ｏ要求とデータバックアップのＩ／Ｏ要求とが並行して発生する機会が多くなっている。このため、データバックアップ時にシステムのパラメータを変更し、一律的にタイムアウト時間を長く設定することも考えられるが、これでは業務のＩ／Ｏ要求に対するＩ／Ｏ応答のタイムアウト時間まで長く設定されてしまうため、解決策とはならない。
【０００９】
尚、ボリューム管理ソフトウェアやソフトウェアＲＡＩＤ（Redundant Arrays of Independent（又は、Inexpensive）Disks）等で、ディスクボリュームをミラーリングし、二重化することで信頼性を向上することが行われている。このようなディスクアレイ装置  における二重化においても、上記の場合と同様にタイムアウト時間を設定し、ディスクアレイ装置又は経路の故障時にミラーリングされた系に切り替える運用がなされている。
【００１０】
タイムアウト時間を用いたＩ／Ｏ応答等の監視は、例えば特許文献１乃至４等にて提案されている。
【特許文献１】特開昭５６−９０３５４号公報
【特許文献２】特開平４−１７７５４７号公報
【特許文献３】特開２００１−１４７８６６号公報
【特許文献４】特開２００６−２３５９０９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来のシステムでは、Ｉ／Ｏ要求に対するＩ／Ｏ応答を監視し、タイムアウト時間内にＩ／Ｏ応答がないとタイムアウト処理を行う。しかし、Ｉ／Ｏ応答の監視は、ディスクアレイ装置２又は経路の故障等に起因するエラーの発生によりＩ／Ｏ応答が無いことを検出する目的で使用されるため、ディスクアレイ装置２が過負荷時において正常に動作しており、実際にはエラーが発生していない状態でも、過負荷時の負荷遅延のためにＩ／Ｏ監視によりエラーが誤検出されてしまう。このため、ディスクアレイ装置２を支障なく使用できる状態であるにもかかわらず、Ｉ／Ｏマルチパス制御ソフトウェア１２は故障が発生したと判断し、エラーが検出された系を閉塞させてしまう。
【００１２】
このように、従来のシステムでは、Ｉ／Ｏ応答の監視により装置や経路の故障等に起因するエラーを検出するため、例えば過負荷状態にあるものの実際には正常に動作している装置であってもエラーが誤検出されてしまうため、資源を有効利用することができないという問題があった。
【００１３】
そこで、本発明は、エラーの誤検出を抑制し、資源の有効利用を可能とする入出力制御方法、制御装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一観点によれば、サーバにおいて、前記サーバと経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視し、タイムアウト時間内に前記入出力応答がないとタイムアウト処理を行う入出力制御方法であって、前記入出力要求に対するタイムアウト時間を、前記入出力装置の入出力応答時間又はエラーに関する統計情報に基づいて予測する予測ステップと、前記予測されたタイムアウト時間内に前記入出力要求に対する入出力応答がないと、前記入出力装置又は前記経路に起因するエラーを検出して前記タイムアウト処理を行うタイムアウトステップを有し、前記タイムアウトステップは、前記エラーが検出された前記経路の閉塞又は別の経路への切り替え、或いは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行い、一定時間内に前記入出力要求の発行対象の入出力装置に起因するエラーが検出されるとタイムアウト時間を前記予測されたタイムアウト時間に延長せず、前記エラーに関する統計情報がないと前記入出力応答時間に関する統計情報から入出力応答時間を予測する入出力制御方法が提供される。
【００１５】
本発明の一観点によれば、経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視する監視手段と、前記入出力要求に対するタイムアウト時間を、前記入出力装置の入出力応答時間又はエラーに関する統計情報に基づいて予測する予測手段と、前記予測されたタイムアウト時間内に前記入出力要求に対する入出力応答がないと、前記入出力装置又は前記経路に起因するエラーを検出して前記タイムアウト処理を行うタイムアウト手段を有し、前記タイムアウト手段は、前記エラーが検出された前記経路の閉塞又は別の経路への切り替え、或いは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行い、一定時間内に前記入出力要求の発行対象の入出力装置に起因するエラーが検出されるとタイムアウト時間を前記予測されたタイムアウト時間に延長せず、前記エラーに関する統計情報がないと前記入出力応答時間に関する統計情報から入出力応答時間を予測する入出力制御装置が提供される。
【００１６】
本発明の一観点によれば、コンピュータに、前記コンピュータと経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視してタイムアウト時間内に前記入出力応答がないとタイムアウト処理を行う入出力制御を行わせるプログラムであって、前記入出力要求に対するタイムアウト時間を、メモリに格納された、前記入出力装置の入出力応答時間又はエラーに関する統計情報に基づいて予測する予測手順と、前記予測されたタイムアウト時間内に前記入出力要求に対する入出力応答がないと、前記入出力装置又は前記経路に起因するエラーを検出して前記タイムアウト処理を行うタイムアウト手順を前記コンピュータに実行させ、前記タイムアウト手順は、前記エラーが検出された前記経路の閉塞又は別の経路への切り替え、或いは、前記エラーが検出された前記入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行い、一定時間内に前記入出力要求の発行対象の入出力装置に起因するエラーが検出されるとタイムアウト時間を前記予測されたタイムアウト時間に延長せず、前記エラーに関する統計情報がないと前記入出力応答時間に関する統計情報から入出力応答時間を予測するプログラムが提供される。
【発明の効果】
【００１７】
開示の入出力制御方法、制御装置及びプログラムによれば、エラーの誤検出を抑制し、資源の有効利用を可能とすることができる。
【発明を実施するための最良の形態】
【００１８】
開示の入出力制御方法、制御装置及びプログラムでは、入出力（Ｉ／Ｏ）要求の発行時に、夫々のＩ／Ｏ装置のタイムアウト時間を延長する必要があるか否かを判断し、必要に応じて個々のＩ／Ｏ装置のタイムアウト時間を変更した上で、Ｉ／Ｏ応答を監視することでエラーの発生を検出する。個々のＩ／Ｏ装置のタイムアウト時間を必要に応じて延長することにより、Ｉ／Ｏ装置の過負荷状態をエラーの発生と誤検出することを防ぎ、正常に動作しているＩ／Ｏ装置を不必要に閉塞したり、正常に動作しているＩ／Ｏ装置への経路を不必要に切り替えたりしないようにする。
【００１９】
以下に、本発明の入出力制御方法、制御装置及びプログラムの各実施例を、図３以降と共に説明する。
【実施例１】
【００２０】
先ず、本発明の第１実施例における入出力制御方法、制御装置及びプログラムについて説明する。
【００２１】
図３は、第１実施例におけるサーバとディスクアレイ装置間の通信制御を説明する図である。図３に示すシステムは、サーバ３１とディスクアレイ装置３２を有し、サーバ３１とディスクアレイ装置３２はＦＣ（Fiber Channel），ＳＣＳＩ（Small Computer System Interface），ＳＡＳ（Serial Attached SCSI）等の伝送路３３により接続されている。サーバ３１は、アプリケーション３１１、入出力（Ｉ／Ｏ：Input/Output）マルチパス制御ソフトウェア３１２及びターゲットドライバ３１３を有する。ターゲットドライバ３１３は、ＨＢＡ（Host Bus Adapter）３１３−１及びＨＢＡ３１３−２を有する。ディスクアレイ装置３２は、コントローラ３２１及び入出力（Ｉ／Ｏ）装置として機能する複数のディスク装置３２２を有する。サーバ３１内のソフトウェアの階層構造において、アプリケーション３１１、Ｉ／Ｏマルチパス制御ソフトウェア３１２、ターゲットドライバ３１３の順で上位層である。
【００２２】
Ｉ／Ｏマルチパス制御ソフトウェア３１２は、サーバ３１とディスクアレイ装置３２間の接続経路の状態を把握し、アプリケーション３１１から受け付けたＩ／Ｏ要求を適切な経路で発行する。Ｉ／Ｏマルチパス制御ソフトウェア３１２は、各経路の異常を、各経路との接続管理を行う、Ｉ／Ｏマルチパス制御ソフトウェア３１２より下位層に対して発行したＩ／Ｏ発行要求に対するＩ／Ｏ応答がエラーで通知されるか、或いは、Ｉ／Ｏマルチパス制御ソフトウェア３１２内のタイムアウト監視で判断する。本実施例では、Ｉ／Ｏマルチパス制御ソフトウェア３１２は、下位層に対して発行するＩ／Ｏ発行要求の同時発行数に制限はないものとする。ターゲットドライバ３１３は、ターゲット装置へのＩ／Ｏコマンドを発行して管理する。ＨＢＡドライバ３１３−１は、ＨＢＡアダプタ３１３−２の制御を行い、Ｉ／Ｏ発行要求を受けた場合に、ディスクアレイ装置３２との通信処理等を行う。ＨＢＡドライバ３１３−１は、要求をＩ／Ｏ装置に発行してからＩ／Ｏ要求の処理が終了するまでの時間（service_time）を計測し、計測したservice_timeをscsi_pkt構造体のプライベート領域に入れてターゲットドライバ３１３に渡す。ターゲットドライバ３１３は、ＨＢＡドライバ３１３−１から受け取ったscsi_pkt構造体のservice_timeをbuf構造体のプライベートエリアに入れてＩ／Ｏマルチパス制御ソフトウェア３１２に渡す。
【００２３】
アプリケーション３１１からＩ／Ｏ要求が発行されると、ターゲット装置（Ｉ／Ｏ装置）に対する制御は、サーバ３１とディスクアレイ装置３２間の複数の通信経路３３を制御するＩ／Ｏマルチパス制御ソフトウェア３１２、ターゲット装置へのＩ／Ｏコマンドを生成するターゲットドライバ３１３及び実際にディスクアレイ装置３２との通信を行うＨＢＡ３１３−２を制御するＨＢＡドライバ３１３−１により行われる。
【００２４】
図４は、図３に示すシステムの動作タイミングを説明する図である。Ｉ／Ｏマルチパス制御ソフトウェア３１２は、サーバ３１内のソフトウェアの階層構造においてＩ／Ｏマルチパス制御ソフトウェア３１２より上位層のアプリケーション３１１からＩ／Ｏ要求を受けると、ターゲット装置のタイムアウト時間（即ち、Ｉ／Ｏ応答監視時間）を必要に応じて延長すると共に、Ｉ／Ｏ要求が発行されてからの経過時間を計測する内部タイマを起動した後に下位層のターゲットドライバ３１３にＩ／Ｏ発行要求を発行する。その後、Ｉ／Ｏマルチパス制御ソフトウェア３１２は、Ｉ／Ｏ発行要求を発行されたターゲットドライバ３１３からのＩ／Ｏ応答を監視し、内部タイマで計測された経過時間を用いてタイムアウト時間内にＩ／Ｏ応答が無ければタイムアウト処理を行う。タイムアウト処理では、タイムアウトが発生した経路でエラーが発生したと判断し、タイムアウトが発生した経路を使用させないよう閉塞すると共に、経路を別の冗長経路に切り替えて、ターゲットドライバ３１３に対してＩ／Ｏ発行要求を再発行する。このように、サーバ３１とディスクアレイ装置３２間の接続では、上記のＩ／Ｏマルチパス制御ソフトウェア３１２を使用することで経路を冗長化し、１つの接続経路が不通となっても、冗長経路から通信を継続できるような構成とされている。図４では、経路で発生したエラーをＸ印で示す。
【００２５】
ディスクアレイ装置３２が正常に動作していれば、過負荷時であってもタイムアウトが発生しないようにタイムアウト時間が延長されているので、経路が閉塞されたり、ディスクボリュームが切り離されたりしてしまうことはない。
【００２６】
Ｉ／Ｏマルチパス制御ソフトウェア３１２は、Ｉ／Ｏ管理機能、論理ユニット（ＬＵ：Logical Unit）管理機能、Ｉ／Ｏ監視タイマ機能及びディスクアレイ装置管理機能を有する。Ｉ／Ｏ管理機能は、上位層のアプリケーション３１１からのＩ／Ｏ要求の受付と、ターゲットドライバ３１３に対して発行するＩ／Ｏ発行要求を管理する。又、Ｉ／Ｏ管理機能は、Ｉ／Ｏ要求の受付時にタイムアウト時間を設定し、Ｉ／Ｏ応答を監視する。
【００２７】
ＬＵは、ディスクアレイ装置３２内の一又は複数のディスク装置３２２により構成され、サーバ３１内の図示を省略するオペレーティングシステム（ＯＳ：Operating System）から見た場合に一つの領域として管理される単位である。ＬＵ管理機能は、ＬＵへのパスを管理する。実際には、各ターゲットドライバ３１３のインスタンスを切り替えることでパスを切り替える。又、ＬＵ管理機能は、Ｉ／Ｏ要求の発行状況を管理する。具体的には、ＬＵ毎のＩ／Ｏ発行要求の発行数、平均応答時間等を計算する。更に、ＬＵ管理機能は、ＬＵを構成するＩ／Ｏ装置のエラー状況を管理し、一定時間内にエラーが発生するとエラーフラグを立てる。
【００２８】
Ｉ／Ｏ監視タイマ機能は、Ｉ／Ｏ監視タイマを定期的（例えば、１秒毎）に起動し、発行中の全てのＩ／Ｏ要求のbuf構造体のＩ／Ｏ監視タイマ値に「−１」を加算し、Ｉ／Ｏ監視タイマ値が「０」になるとタイムアウトと判断してＩ／Ｏ管理機能に通知する。
【００２９】
ディスクアレイ装置監視タイマ機能は、定期的（例えば、１秒毎）にディスクアレイ装置監視タイマを起動し、ディスクアレイ装置３２のＬＵにリクエストセンス（Request Sense）を発行し、ハードエラー（故障）情報（Sense）がないか否かをチェックする。
【００３０】
図５は、Ｉ／Ｏ要求の処理を説明する図であり、図６は、buf構造体の一例を示す図である。図６中、（ａ）に示す如きｂｕｆ構造体は、ソラリスオペレーティングシステム（Solaris Operating System）で使用されている構造体であり、http://docs.sun.com/ app/docs/doc/816-4854/block-3?|=en&q=Writing+Device+Drivers&a=viewにて定義されている。
【００３１】
本実施例では、buf構造体自体に変更の必要はないが、b_flagsに使用するフラグ（flag）としてタイマ時間の延長が必要であることを示す b_slowを追加する。Ｉ／Ｏマルチパス制御ソフトウェア３１２のＩ／Ｏ管理機能で使用するバッファ領域（buf）は、Ｉ／Ｏ要求に相当し、図６（ｂ）に示すように拡張する。
【００３２】
Ｉ／Ｏマルチパス制御ソフトウェア３１２のＩ／Ｏ管理機能は、タイムアウト時間設定処理Ａ−２によりＩ／Ｏ監視タイマ値の延長が必要か否かの判断を、以下のような延長要否の判断処理及びＩ／Ｏ応答時間の予測処理により行う。
【００３３】
延長要否の判断処理は、buf構造体のb_flagsに設定可能なb_slowを新設することで行う。アプリケーション３１１が、Ｉ／Ｏ要求を発行するときに、buf構造体のb_flagsにb_slowを設定する。Ｉ／Ｏマルチパス制御ソフトウェア３１２（又は、後述するボリューム管理ソフトウェア３１５）は、Ｉ／Ｏ要求を受け取った後に、buf構造体のb_flagsをチェックし、b_slowが設定されていればＩ／Ｏ監視タイマ値の延長が必要であると判断する。
【００３４】
発行しようとするＩ／Ｏ要求のＩ／Ｏ応答時間の予測処理は、予測Ｉ／Ｏ応答時間を統計情報から予測する。統計情報は、例えばＩ／Ｏ応答時間に関する情報であっても、エラーに関する情報であっても良い。
【００３５】
Ｉ／Ｏ応答時間に関する統計情報からＩ／Ｏ応答時間を予測する場合、例えば「予測Ｉ／Ｏ応答時間」＝「Ｉ／Ｏ受付数（順番）」×「平均Ｉ／Ｏ応答時間」からＩ／Ｏ応答時間を予測し、定義されたタイムアウト時間に間に合うか否かを判断する。実際の判断では、定義されたタイムアウト時間に安全係数（例えば、０．８等）を乗算しても良い。ここで、Ｉ／Ｏ受付数（順番）とは、発行しようとしているＩ／Ｏ要求の対象となるＬＵ（ディスク３２２）に対して現在Ｉ／Ｏマルチパス制御ソフトウェア３１２で処理しているＩ／Ｏ要求の数である。
【００３６】
平均Ｉ／Ｏ応答時間とは、Ｉ／Ｏマルチパス制御ソフトウェア３１２の下位層のターゲットドライバ３１３及びＨＢＡドライバ３１３−１がＩ／Ｏ応答時間をＩ／Ｏマルチパス制御ソフトウェア３１２に通知する機能がある場合には、発行しようとしているＩ／Ｏ要求の対象となるＬＵから応答があった場合にＨＢＡドライバ３１３−１がディスクアレイ装置３２に要求を発行してからターゲットドライバ３１３に応答があるまでの平均時間である。ＨＢＡドライバ３１３−１がＩ／Ｏ応答時間を計測して得た情報をscsi_pkt構造体に書き込みターゲットドライバ３１３に渡し、ターゲットドライバ３１３がbuf構造体にその情報を書き込んでＩ／Ｏマルチパス制御ソフトウェア３１２（又は、ボリューム管理ソフトウェア３１５）に渡すことで、Ｉ／Ｏマルチパス制御ソフトウェア３１２（又は、ボリューム管理ソフトウェア３１５）は、Ｉ／Ｏ要求毎のＩ／Ｏ応答時間の平均値である平均Ｉ／Ｏ応答時間を計算する。
【００３７】
一方、Ｉ／Ｏマルチパス制御ソフトウェア３１２にてＩ／Ｏ応答時間を計測する場合、Ｉ／Ｏマルチパス制御ソフトウェア３１２が下位層のターゲットドライバ３１３にＩ／Ｏ発行要求を発行してから、Ｉ／Ｏ応答がＩ／Ｏマルチパス制御ソフトウェア３１２に返るまでの時間を、Ｉ／Ｏ応答時間として計測する。このようにして計測されたＩ／Ｏ応答時間を集計し、Ｉ／Ｏ応答時間の平均値、即ち、平均Ｉ／Ｏ応答時間とする。この場合、ＨＢＡドライバ３１３−１は、要求をＩ／Ｏ装置に発行してからＩ／Ｏ要求の処理が終了するまでの時間（service_time）を計測し、計測したservice_timeをscsi_pkt構造体のプライベート領域に入れてターゲットドライバ３１３に渡す処理を行う必要がなく、且つ、ターゲットドライバ３１３は、ＨＢＡドライバ３１３−１から受け取ったscsi_pkt構造体のservice_timeをbuf構造体のプライベートエリアに入れてＩ／Ｏマルチパス制御ソフトウェア３１２に渡す処理を行う必要がない。
【００３８】
本実施例では、この平均Ｉ／Ｏ応答時間の計算について以下のルールを設ける。即ち、タイムアウト時間を超えたＩ／Ｏ応答は計算に入れず、平均Ｉ／Ｏ応答時間の計算対象であるＬＵから一定時間（例えば、１秒間）Ｉ／Ｏ応答がなければ平均Ｉ／Ｏ応答時間及びＩ／Ｏ受付数のカウントは「０」にリセットし、ターゲットドライバ３１３において所定数のＩ／Ｏ応答のデータ（例えば、max_throttle×4(255×4)程度のＩ／Ｏ応答のデータ）が集まった時点でＩ／Ｏ応答時間の平均値を有効とする。
【００３９】
Ｉ／Ｏマルチパス制御ソフトウェア３１２（又は、ボリューム管理ソフトウェア３１５）のＩ／Ｏ監視タイマ値の変更は、次のように行える。Ｉ／Ｏ監視タイマ値を長くする必要がある場合には、Ｉ／Ｏマルチパス制御ソフトウェア３１２（又は、ボリューム管理ソフトウェア３１５）はＩ／Ｏ要求の発行時に内部で持つＩ／Ｏ要求の発行情報の個々のＩ／Ｏ要求の管理領域にslow_I/O_flagを立てる。Ｉ／Ｏマルチパス制御ソフトウェア３１２（又は、ボリューム管理ソフトウェア３１５）のＩ／Ｏ応答監視タイマ機能は、このslow_I/O_flagがあった場合、Ｉ／Ｏ監視タイマ値がタイムアウト時間の数倍（例えば、１０倍）になるまでカウントを続けるようにする。
【００４０】
ディスク装置又はＬＵのエラーに関する統計情報からＩ／Ｏ応答時間を予測する場合、以下の方法でＩ／Ｏ応答時間を予測し、定義されたタイムアウト時間に間に合うか否かを判断する。例えば、以下の統計情報を使用し、一定時間（例えば、１分、１０分、３０分、１日等）内にＩ／Ｏ要求の発行対象のディスク装置又はＬＵからエラーが発生している場合にはタイムアウト時間を延長しない。逆に、エラーに関する統計情報がない場合のみ、Ｉ／Ｏ応答時間に関する統計情報からＩ／Ｏ応答時間を予測する上記処理を有効としても良い。システム又はＯＳの持つ統計情報としては、ターゲットドライバ３１３でエラー発生情報を集計したiostat情報等の統計情報や、ハードエラーを集計したSCSI sense等のハードエラーsense情報が含まれる。Ｉ／Ｏマルチパス制御ソフトウェア３１２（又は、ボリューム管理ソフトウェア３１５）の下位層からのＩ／Ｏエラー応答の統計情報としては、下位層のターゲットドライバ３１３等へのＩ／Ｏ発行要求に対し、Ｉ／Ｏエラー応答が返された数の集計等が含まれる。
【００４１】
ハードエラーの有無の診断結果を定期的に得るようにしても良い。この場合、定期的にディスクアレイ装置３２の各ＬＵに対しハードエラーの有無の問い合わせ（request sense）を行い、ハードエラーが無い（no sense）場合にのみ発行しようとするＩ／Ｏ要求のＩ／Ｏ応答時間の予測処理を有効としても良い。
【００４２】
図７は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のＩ／Ｏ管理機能を説明するフローチャートであり、Ｉ／Ｏ要求受付処理Ａ−１を示す。
【００４３】
図７において、アプリケーション３１１からのＩ／Ｏ要求を受領すると、ステップＳ１はＩ／Ｏ要求により要求されているbufをローカルバッファ領域（local）にコピーし、localにタイマ時間等の管理領域を追加する。ステップＳ２は、buf構造体のb_flagsにb_slowが設定されているか否かを判定し、判定結果がＮＯであると、処理はステップＳ３へ進む。ステップＳ３は、Ｉ／Ｏ要求に対する予測応答時間をＬＵ管理機能に問い合わせ（図１２と共に後述するＩ／Ｏ応答時間返信処理Ｂ−３）、予測応答時間が指定されたタイムアウト時間以上であるか否かを判定する。ステップＳ３の判定結果がＮＯであると、ステップＳ４は、bufの管理領域のタイマ時間にconf_fileで指定されたタイムアウト時間を予測タイムアウト時間として設定する。一方、ステップＳ２又はステップＳ３の判定結果がＹＥＳであると、ステップＳ５は、bufの管理領域のタイマ時間にconf_fileで指定されたタイムアウト時間に任意の定数（例えば、１０）を乗算したタイムアウト時間を予測タイムアウト時間として設定する。
【００４４】
ステップＳ４又はステップＳ５の後、ステップＳ６は、ＬＵ管理機能にＩ／Ｏ発行要求を発行するべきターゲット装置を確認する（図１０と共に後述するパス状況返信処理Ｂ−１）。ステップＳ７は、ＬＵ管理機能にＩ／Ｏ発行要求の発行数に「１」を加算する指示をする（図１１と共に後述する発行数加算処理Ｂ−２）。ステップＳ８は、サーバ３１内のシステム時刻をbufのservice_timeに設定する。ステップＳ９は、ターゲットドライバ３１３にＩ／Ｏ発行要求を発行し、処理は終了する。
【００４５】
図８は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のＩ／Ｏ管理機能を説明するフローチャートであり、タイムアウト時間設定処理Ａ−２を示す。
【００４６】
図８において、ステップＳ１１は、サーバ３１内のシステム時刻を確認し、ステップＳ１２は、Ｉ／Ｏ要求の発行対象であるターゲット装置のＬＵの管理領域のＩ／Ｏ発行要求の発行数に「−１」を加算する。ステップＳ１３は、Ｉ／Ｏ要求に対して正常応答が得られたか否かを判定し、判定結果がＮＯであると処理はステップＳ１４へ進む。ステップＳ１４は、ＬＵの管理領域のＩ／Ｏエラー応答状態を「１」に設定し、システム時刻を最後のＩ／Ｏエラー応答時刻に書き込み、処理はステップＳ１５へ進む。ステップＳ１５は、Ｉ／Ｏ管理機能のＩ／Ｏ平均応答時間、Ｉ／Ｏ発行要求のカウント、最後のＩ／Ｏ応答のシステム時刻を夫々「０」にリセットし、処理は終了する。
【００４７】
一方、ステップＳ１３の判定結果がＹＥＳであると、ステップＳ１６は、前回のシステム時刻からＬＵ管理機能が管理している最後のＩ／Ｏ応答のシステム時刻を減算した時間が１秒未満、或いは、ＬＵ管理機能が管理している最後のＩ／Ｏ応答のシステム時刻が「０」であるか否かを判定し、判定結果がＮＯであると処理はステップＳ１５へ進む。ステップＳ１６の判定結果がＹＥＳであると、ステップＳ１７は、ターゲットドライバ３１３から受け取ったbufのservice_timeを次の処理で使用する準備をするか、或いは、現在のシステム時刻からターゲット装置のlocalに入れられたservice_timeを減算して得たＩ／Ｏ応答時間をbufのservice_timeに入れて次の処理で使用する準備をする。ステップＳ１８は、｛（ＬＵ管理機能の平均Ｉ／Ｏ応答時間）×（ＬＵ管理機能のＩ／Ｏ受付数のカウント）＋（Ｉ／Ｏ管理機能のservice_time）｝／｛（ＬＵ管理機能のＩ／Ｏ受付数のカウント）＋１｝を計算してＬＵ管理機能の平均Ｉ／Ｏ応答時間に入れる。ステップＳ１９は、ＬＵ管理機能のＩ／Ｏ受付数のカウントに「１」を加算し、処理は終了する。
【００４８】
ＬＵ管理機能は、ＬＵ毎に図９に示す管理情報を管理する。図９は、ＬＵ管理機能が管理する管理情報の一例を示す図である。図９に示すように、管理情報には、マルチパスデバイスインスタンス、ターゲットドライバインスタンス（パス１）、ターゲットドライバインスタンス（パス２）、...、ターゲットドライバインスタンス（パスＮ）、パスステータス（パス１）、パスステータス（パス２）、...、パスステータス（パスＮ）、Ｉ／Ｏ要求の発行数、平均Ｉ／Ｏ応答時間、平均Ｉ／Ｏ応答時間計測用のＩ／Ｏ受付数、最後のＩ／Ｏ応答のシステム時刻、Ｉ／Ｏエラー応答状態、最後のＩ／Ｏエラー応答時刻、iostat情報、iostat情報最終確認時刻、及びハードエラーsense情報が含まれる。
【００４９】
図１０は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のＬＵ管理機能を説明するフローチャートであり、パス状況返信処理Ｂ−１を示す。
【００５０】
図１０において、図７に示すステップＳ６からの問い合わせがあると、ステップＳ２１は、Ｉ／Ｏ要求の発行対象であるＬＵのパス状況を確認し、正常に使用可能なパスのターゲットドライバインスタンスを返信し、処理は終了する。
【００５１】
図１１は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のＬＵ管理機能を説明するフローチャートであり、発行数加算処理Ｂ−２を示す。
【００５２】
図１１において、図７に示すステップＳ７からの指示があると、ステップＳ２２は、Ｉ／Ｏ要求の発行対象であるＬＵの管理領域のＩ／Ｏ発行要求の発行数に「１」を加算し、処理は終了する。
【００５３】
図１２は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のＬＵ管理機能を説明するフローチャートであり、Ｉ／Ｏ応答時間返信処理Ｂ−３を示す。
【００５４】
図１２において、図７に示すステップＳ３から予測応答時間の問い合わせがあると、ステップＳ２３は、システム時刻を確認する。ステップＳ２４は、統計情報から一定時間内のエラーが有るか否かを判定する。ステップ２４は、例えばＩ／Ｏエラー応答状態、iostat情報にエラーが有り、且つ、一定時間以内の情報であればエラーが有ると判定し、又、ハードエラーsense情報が有ればエラーが有ると判定する。ステップＳ２４の判定結果がＮＯであると、ステップＳ２５は、ＬＵ管理機能のＩ／Ｏ応答のカウントが例えばmax_throttle×4(255×4)未満であるか否かを判定する。ステップＳ２５の判定結果がＮＯであると、ステップＳ２６は、前回のシステム時刻からＬＵ管理機能が管理している最後のＩ／Ｏ応答のシステム時刻を減算した時間が１秒未満であるか否かを判定する。ステップＳ２６の判定結果がＹＥＳであると、ステップＳ２７は、ＬＵ管理機能で管理されている（平均Ｉ／Ｏ応答時間）×｛（Ｉ／Ｏ要求の発行数）＋１｝をＩ／Ｏ管理機能に返信し、処理は終了する。一方、ステップＳ２４又はステップＳ２５の判定結果がＹＥＳ、或いは、ステップＳ２６の判定結果がＮＯであると、ステップＳ２８は、「０」をＩ／Ｏ管理機能に返信し、処理は終了する。
【００５５】
図１３は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のＩ／Ｏ監視タイマ機能を説明するフローチャートである。図１３において、Ｉ／Ｏ監視タイマ機能が起動されると、ステップＳ３１は、全てのbuf構造体を参照し、Ｉ／Ｏ監視タイマ値に「−１」を加算する。ステップＳ３２は、Ｉ／Ｏ監視タイマ機能を例えば１秒後に起動するようにセルフタイマをかけ、処理は終了する。
【００５６】
図１４は、Ｉ／Ｏマルチパス制御ソフトウェア３１２のディスクアレイ装置監視タイマ機能を説明するフローチャートである。図１４において、ディスクアレイ装置監視タイマ機能が起動されると、ステップＳ３５は、ディスクアレイ装置３２の各ＬＵにrequest senseを発行し、sense情報を収集する。又、ステップＳ３５は、request senseに対するsense情報にエラー情報が有れば、エラーとしてＬＵ管理機能のハードエラーsense情報を「１」に設定し、ハードエラーが無ければ（no sense）「０」を設定する。ステップＳ３６は、ディスクアレイ装置監視タイマ機能を例えば１秒後に起動するようにセルフタイマをかけ、処理は終了する。
【００５７】
本実施例によれば、個々のＩ／Ｏ装置のタイムアウト時間を必要に応じて延長することにより、Ｉ／Ｏ装置の過負荷状態をエラーの発生と誤検出することを防ぎ、正常に動作しているＩ／Ｏ装置を不必要に閉塞したり、正常に動作しているＩ／Ｏ装置への経路を不必要に切り替えたりしないようにすることができる。
【実施例２】
【００５８】
次に、本発明の第２実施例における入出力制御方法、制御装置及びプログラムについて説明する。上記第１実施例では、本発明がＩ／Ｏマルチパス制御ソフトウェアに適用されているが、本実施例では、本発明がボリューム管理ソフトウェアに適用されている。
【００５９】
図１５は、第２実施例におけるサーバとディスクアレイ装置間の通信制御を説明する図である。図１５中、図３と同一部分には同一符号を付し、その説明は省略する。図１５に示すシステムは、ボリューム管理ソフトウェア３１５を有する。サーバ３１内のソフトウェアの階層構造において、アプリケーション３１１、ボリューム管理ソフトウェア３１５、ターゲットドライバ３１３の順で上位層である。
【００６０】
ボリューム管理ソフトウェア３１５は、ディスクアレイ装置３２内の複数のディスク装置３２−１，３２−２上のディスクボリュームをミラーリング（又は、データ多重化）し、ディスク３２２の異常時には、異常ディスク３２２をミラーリングから切り離し、正常なディスク３２２から入出力を行うディスク３２２の切り替えを行う。ボリューム管理ソフトウェア３１５は、上位層のアプリケーション３１１からＩ／Ｏ要求を受けると、Ｉ／Ｏの経過時間を計測するタイマを起動した後にターゲットドライバ３１３にＩ／Ｏ発行要求を発行する。その後、発行したＩ／Ｏ発行要求に対するターゲットドライバ３１３からの応答を監視し、ボリューム管理ソフトウェア３１５のタイムアウト時間内にＩ／Ｏ応答が無ければ、タイムアウトが発生したディスク３２２を使用しないよう閉塞するか、或いは、ディスク３２２の構成を管理するデータベースに構成の変更（閉塞）を記録することで、ディスク３２２（即ち、ディスクボリューム）の切り替え行う。
【００６１】
ボリューム管理ソフトウェア３１５のＩ／Ｏ処理ロジックは、図１６及び図１７に示すようにリード時とライト時で異なる。図１６は、図１５に示すシステムのリード時の動作タイミングを説明する図であり、図１７は、図１５に示すシステムのライト時の動作タイミングを説明する図である。図１６及び図１７では、ディスク３２２で発生したエラーをＸ印で示す。
【００６２】
ボリューム管理ソフトウェア３１５は、サーバ３１内のソフトウェアの階層構造においてボリューム管理ソフトウェア３１５より上位層のアプリケーション３１１からＩ／Ｏ要求を受けると、ターゲット装置のタイムアウト時間（即ち、Ｉ／Ｏ応答監視時間）を必要に応じて延長すると共に、Ｉ／Ｏ要求が発行されてからの経過時間を計測する内部タイマを起動した後に下位層のターゲットドライバ３１３にＩ／Ｏ発行要求を発行する。その後、ボリューム管理ソフトウェア３１５は、Ｉ／Ｏ発行要求を発行されたターゲットドライバ３１３からのＩ／Ｏ応答を監視し、内部タイマで計測された経過時間を用いてタイムアウト時間内にＩ／Ｏ応答が無ければタイムアウト処理を行う。タイムアウト処理では、タイムアウトが発生したディスク３２２でエラーが発生したと判断し、タイムアウトが発生したディスク３２２を使用させないよう閉塞すると共に、ディスク３２２を別のディスク３２２に切り替えて、ターゲットドライバ３１３に対してＩ／Ｏ発行要求を再発行する。このように、サーバ３１とディスクアレイ装置３２間の接続では、上記のボリューム管理ソフトウェア３１５を使用することでディスク３２２をミラーリングし、１つのディスク３２２でエラーが発生しても、ディスクボリュームの切り替えを行うことでミラーリングを継続できるような構成とされている。
【００６３】
ディスクアレイ装置３２が正常に動作していれば、過負荷時であってもタイムアウトが発生しないようにタイムアウト時間が延長されているので、ディスク３２２が閉塞されたり、ディスクボリュームが切り離されたりしてしまうことはない。
【００６４】
ボリューム管理ソフトウェア３１５は、Ｉ／Ｏ管理機能、ディスクボリューム（ＤＶ：Disk Volume）管理機能、Ｉ／Ｏ監視タイマ機能及びディスクアレイ装置管理機能を有する。Ｉ／Ｏ管理機能は、上位層のアプリケーション３１１からのＩ／Ｏ要求の受付と、ターゲットドライバ３１３に対して発行するＩ／Ｏ発行要求を管理する。又、Ｉ／Ｏ管理機能は、Ｉ／Ｏ要求の受付時にタイムアウト時間を設定し、Ｉ／Ｏ応答を監視する。
【００６５】
ＤＶは、ディスクアレイ装置３２内の複数のディスク装置３２−１，３２−２の一又は複数のディスク装置３２２により構成され、サーバ３１内の図示を省略するオペレーティングシステム（ＯＳ：Operating System）から見た場合に一つの領域として管理される単位である。ＤＶ管理機能は、ＤＶのミラーリング構成を管理する。実際には、各ターゲットドライバ３１３のインスタンスを切り替えることでアクセスするＤＶを切り替える。又、ＤＶ管理機能は、ＤＶへのＩ／Ｏ要求の発行状況を管理する。具体的には、ＤＶ毎のＩ／Ｏ発行要求の発行数、平均応答時間等を計算する。更に、ＤＶ管理機能は、ＤＶを構成するＩ／Ｏ装置のエラー状況を管理し、一定時間内にエラーが発生するとエラーフラグを立てる。
【００６６】
Ｉ／Ｏ監視タイマ機能は、Ｉ／Ｏ監視タイマを定期的（例えば、１秒毎）に起動し、発行中の全てのＩ／Ｏ要求のbuf構造体のＩ／Ｏ監視タイマ値に「−１」を加算し、Ｉ／Ｏ監視タイマ値が「０」になるとタイムアウトと判断してＩ／Ｏ管理機能に通知する。
【００６７】
ディスクアレイ装置監視タイマ機能は、定期的（例えば、１秒毎）にディスクアレイ装置監視タイマを起動し、ディスクアレイ装置３２のＬＵにリクエストセンス（Request Sense）を発行し、ハードエラー（故障）情報（Sense）がないか否かをチェックする。
【００６８】
ボリューム管理ソフトウェア３１５のＩ／Ｏ管理機能は、タイムアウト時間設定処理ａ−２によりＩ／Ｏ監視タイマ値の延長が必要か否かの判断を、上記第１実施例のＩ／Ｏマルチパス制御ソフトウェア３１２のＩ／Ｏ管理機能と同様の延長要否の判断処理及びＩ／Ｏ応答時間の予測処理により行う。
【００６９】
図１８は、ボリューム管理ソフトウェア３１５のＩ／Ｏ管理機能を説明するフローチャートであり、Ｉ／Ｏ要求受付処理ａ−１を示す。図１８に示すステップＳ１０１〜Ｓ１０９は、基本的には図７に示すステップＳ１〜Ｓ９と同様であり、ここでは異なるステップＳ１０３，Ｓ１０６，Ｓ１０７のみを説明する。
【００７０】
図１８において、ステップＳ１０３は、Ｉ／Ｏ要求に対する予測応答時間をＤＶ管理機能に問い合わせ（図２３と共に後述するＩ／Ｏ応答時間返信処理ｂ−３）、予測応答時間が指定されたタイムアウト時間以上であるか否かを判定する。ステップＳ１０６は、ＤＶ管理機能にＩ／Ｏ発行要求を発行可能なＤＶを確認する（図２１と共に後述するパス状況返信処理ｂ−１）。ステップＳ１０７は、ＤＶ管理機能にＩ／Ｏ発行要求の発行数に「１」を加算する指示をする（図２２と共に後述する発行数加算処理ｂ−２）。
【００７１】
図１９は、ボリューム管理ソフトウェア３１５のＩ／Ｏ管理機能を説明するフローチャートであり、タイムアウト時間設定処理ａ−２を示す。図１９に示すステップＳ１１１〜Ｓ１１９は、基本的には図８に示すステップＳ１１〜Ｓ１９と同様であり、ここでは異なるステップＳ１１２，Ｓ１１４，Ｓ１１６，Ｓ１１８，Ｓ１１９のみを説明する。
【００７２】
図１９において、ステップＳ１１２は、Ｉ／Ｏ要求の発行対象であるターゲット装置のＤＶの管理領域のＩ／Ｏ発行要求の発行数に「−１」を加算する。ステップＳ１１４は、ＤＶの管理領域のＩ／Ｏエラー応答状態を「１」に設定し、システム時刻を最後のＩ／Ｏエラー応答時刻に書き込む。ステップＳ１１６は、前回のシステム時刻からＤＶ管理機能が管理している最後のＩ／Ｏ応答のシステム時刻を減算した時間が１秒未満、或いは、ＤＶ管理機能が管理している最後のＩ／Ｏ応答のシステム時刻が「０」であるか否かを判定する。ステップＳ１１７は、ターゲットドライバ３１３から受け取ったbufのservice_timeを次の処理で使用する準備をするか、或いは、現在のシステム時刻からターゲット装置のlocalに入れられたservice_timeを減算して得たＩ／Ｏ応答時間をbufのservice_timeに入れて次の処理で使用する準備をする。ステップＳ１１８は、｛（ＤＶ管理機能の平均Ｉ／Ｏ応答時間）×（ＤＶ管理機能のＩ／Ｏ受付数のカウント）＋（Ｉ／Ｏ管理機能のservice_time）｝／｛（ＤＶ管理機能のＩ／Ｏ受付数のカウント）＋１｝を計算してＤＶ理機能の平均Ｉ／Ｏ応答時間に入れる。ステップＳ１１９は、ＤＶ管理機能のＩ／Ｏ受付数のカウントに「１」を加算し、処理は終了する。
【００７３】
ＤＶ管理機能は、ＤＶ毎に図２０に示す管理情報を管理する。図２０は、ＤＶ管理機能が管理する管理情報の一例を示す図である。図２０に示すように、管理情報には、マルチパスデバイスインスタンス、ターゲットドライバインスタンス（ボリューム１）、ターゲットドライバインスタンス（ボリューム２）、...、ターゲットドライバインスタンス（ボリュームＮ）、ボリュームステータス（ボリューム１）、ボリュームステータス（ボリューム２）、...、ボリュームステータス（ボリュームＮ）、Ｉ／Ｏ要求の発行数、平均Ｉ／Ｏ応答時間、平均Ｉ／Ｏ応答時間計測用のＩ／Ｏ受付数、最後のＩ／Ｏ応答のシステム時刻、Ｉ／Ｏエラー応答状態、最後のＩ／Ｏエラー応答時刻、iostat情報、iostat情報最終確認時刻、及びハードエラーsense情報が含まれる。
【００７４】
図２１は、ボリューム管理ソフトウェア３１５のＤＶ管理機能を説明するフローチャートであり、パス状況返信処理ｂ−１を示す。図１０に示すステップＳ１２１は、基本的には図８に示すステップＳ２１と同様である。
【００７５】
図２１において、図１８に示すステップＳ１０６からの問い合わせがあると、ステップＳ１２１は、Ｉ／Ｏ要求の発行対象であるＤＶのパス状況を確認し、正常に使用可能なＤＶのターゲットドライバインスタンスを返信し、処理は終了する。
【００７６】
図２２は、ボリューム管理ソフトウェア３１５のＤＶ管理機能を説明するフローチャートであり、発行数加算処理ｂ−２を示す。図２２に示すステップＳ１２２は、基本的には図１１に示すステップＳ２２と同様である。
【００７７】
図２２において、図１８に示すステップＳ１０７からの指示があると、ステップＳ１２２は、Ｉ／Ｏ要求の発行対象であるＤＶの管理領域のＩ／Ｏ発行要求の発行数に「１」を加算し、処理は終了する。
【００７８】
図２３は、ボリューム管理ソフトウェア３１５のＤＶ管理機能を説明するフローチャートであり、Ｉ／Ｏ応答時間返信処理ｂ−３を示す。図２３に示すステップＳ１２３〜Ｓ１２８は、基本的には図１２に示すステップＳ２３〜Ｓ２８と同様である。
【００７９】
図２３において、図１８に示すステップＳ１０３から予測応答時間の問い合わせがあると、ステップＳ１２３は、システム時刻を確認する。ステップＳ１２４は、統計情報から一定時間内のエラーが有るか否かを判定する。ステップ１２４は、例えばＩ／Ｏエラー応答状態、iostat情報にエラーが有り、且つ、一定時間以内の情報であればエラーが有ると判定し、又、ハードエラーsense情報が有ればエラーが有ると判定する。ステップＳ１２４の判定結果がＮＯであると、ステップＳ１２５は、ＤＶ管理機能のＩ／Ｏ応答のカウントが例えばmax_throttle×4(255×4)未満であるか否かを判定する。ステップＳ１２５の判定結果がＮＯであると、ステップＳ１２６は、前回のシステム時刻からＤＶ管理機能が管理している最後のＩ／Ｏ応答のシステム時刻を減算した時間が１秒未満であるか否かを判定する。ステップＳ１２６の判定結果がＹＥＳであると、ステップＳ１２７は、ＤＶ管理機能で管理されている（平均Ｉ／Ｏ応答時間）×｛（Ｉ／Ｏ要求の発行数）＋１｝をＩ／Ｏ管理機能に返信し、処理は終了する。一方、ステップＳ１２４又はステップＳ１２５の判定結果がＹＥＳ、或いは、ステップＳ１２６の判定結果がＮＯであると、ステップＳ１２８は、「０」をＩ／Ｏ管理機能に返信し、処理は終了する。
【００８０】
図２４は、ボリューム管理ソフトウェア３１５のＩ／Ｏ監視タイマ機能を説明するフローチャートである。図２４に示すステップＳ１３１，Ｓ１３２は、基本的には図１３に示すステップＳ３１，Ｓ３２と同様である。
【００８１】
図２４において、Ｉ／Ｏ監視タイマ機能が起動されると、ステップＳ１３１は、全てのbuf構造体を参照し、Ｉ／Ｏ監視タイマ値に「−１」を加算する。ステップＳ１３２は、Ｉ／Ｏ監視タイマ機能を例えば１秒後に起動するようにセルフタイマをかけ、処理は終了する。
【００８２】
図２５は、ボリューム管理ソフトウェア３１５のディスクアレイ装置監視タイマ機能を説明するフローチャートである。図２５に示すステップＳ１３５，Ｓ１３６は、基本的には図１４に示すステップＳ３５，Ｓ３６と同様である。
【００８３】
図２５において、ディスクアレイ装置監視タイマ機能が起動されると、ステップＳ１３５は、ディスクアレイ装置３２の各ＬＵにrequest senseを発行し、sense情報を収集する。又、ステップＳ１３５は、request senseに対するsense情報にエラー情報が有れば、エラーとしてＬＵ管理機能のハードエラーsense情報を「１」に設定し、ハードエラーが無ければ（no sense）「０」を設定する。ステップＳ１３６は、ディスクアレイ装置監視タイマ機能を例えば１秒後に起動するようにセルフタイマをかけ、処理は終了する。
【００８４】
本実施例によれば、個々のＩ／Ｏ装置のタイムアウト時間を必要に応じて延長することにより、Ｉ／Ｏ装置の過負荷状態をエラーの発生と誤検出することを防ぎ、正常に動作しているＩ／Ｏ装置を不必要に閉塞したり、正常に動作しているＩ／Ｏ装置への経路を不必要に切り替えたりしないようにすることができる。
【実施例３】
【００８５】
次に、本発明の第３実施例における入出力制御方法、制御装置及びプログラムについて説明する。本実施例では、本発明がＩ／Ｏマルチパス制御ソフトウェア及びボリューム管理ソフトウェアに適用されている。
【００８６】
図２６は、第３実施例におけるサーバとディスクアレイ装置間の通信制御を説明する図である。図２６中、図３及び図１５と同一部分には同一符号を付し、その説明は省略する。図２６に示すシステムは、Ｉ／Ｏマルチパス制御ソフトウェア３１２及びボリューム管理ソフトウェア３１５を有する。サーバ３１内のソフトウェアの階層構造において、アプリケーション３１１、ボリューム管理ソフトウェア３１５、Ｉ／Ｏマルチパス制御ソフトウェア３１２、ターゲットドライバ３１３の順で上位層である。
【００８７】
図２７は、図２６に示すシステムの動作タイミングを説明する図である。本実施例は、基本的には上記第１実施例及び上記第２実施例の組み合わせに相当するので、その詳細な説明は省略する。ただし、本実施例では、Ｉ／Ｏ応答時間に関する統計情報からＩ／Ｏ応答時間を予測する際に、Ｉ／Ｏマルチパス制御ソフトウェア３１２の下位層のターゲットドライバ３１３及びＨＢＡドライバ３１３−１がＩ／Ｏ応答時間をＩ／Ｏマルチパス制御ソフトウェア３１２に通知する機能がある場合には、Ｉ／Ｏマルチパス制御ソフトウェア３１２には、下位層のターゲットドライバ３１３又はＨＢＡドライバ３１３−１から受け取ったＩ／Ｏ応答時間を、上位層のボリューム管理ソフトウェア３１５にbuf構造体を通して通知する機能を設ける必要となる。ボリューム管理ソフトウェア３１５は、Ｉ／Ｏマルチパス制御ソフトウェア３１２から受け取ったbuf構造体を通したＩ／Ｏ応答時間に基づいて平均Ｉ／Ｏ応答時間を計算する。
【００８８】
本実施例によれば、個々のＩ／Ｏ装置のタイムアウト時間を必要に応じて延長することにより、Ｉ／Ｏ装置の過負荷状態をエラーの発生と誤検出することを防ぎ、正常に動作しているＩ／Ｏ装置を不必要に閉塞したり、正常に動作しているＩ／Ｏ装置への経路を不必要に切り替えたりしないようにすることができる。
【００８９】
上記各実施例では、Ｉ／Ｏ装置及びターゲット装置がディスク装置の場合を例に取って説明したが、Ｉ／Ｏ装置及びターゲット装置はディスク装置に限定されるものではなく、磁気テープ装置や各種記憶装置であっても良いことは言うまでもない。
【００９０】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）
サーバにおいて、該サーバと経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視し、タイムアウト時間内に該入出力応答がないとタイムアウト処理を行う入出力制御方法であって、
該入出力要求に対する予測タイムアウト時間を統計情報に基づいて予測する予測ステップと、
該予測タイムアウト時間内に該入出力要求に対する入出力応答がないと、該入出力装置又は該経路に起因するエラーを検出して該タイムアウト処理を行うタイムアウトステップを有し、
該タイムアウトステップは、該エラーが検出された該経路の閉塞又は別の経路への切り替え、或いは、該エラーが検出された該入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、入出力制御方法。
（付記２）
該予測ステップは、発行しようとしている入出力要求の対象に対して現在該サーバにおいて処理している入出力要求の数と、該入出力要求を発行してから該対象から応答があるまでの平均時間の積、或いは、該入出力要求を発行してから該対象から応答があるまでの応答時間の集計の平均値を該統計情報として用いる、付記１記載の入出力制御方法。
（付記３）
該サーバ内のアプリケーションにより該入出力要求を発行する発行ステップを更に有し、
該予測ステップ及び該タイムアウトステップは、該サーバ内の入出力マルチパス制御ソフトウェアにより実行され、
該タイムアウトステップは、該エラーが検出された該経路の閉塞又は別の経路への切り替えを行う、付記１又は２記載の入出力制御方法。
（付記４）
該サーバ内のアプリケーションにより該入出力要求を発行する発行ステップを更に有し、
該予測ステップ及び該タイムアウトステップは、該サーバ内のボリューム管理ソフトウェアにより実行され、
該タイムアウトステップは、該エラーが検出された該入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、付記１乃至３のいずれか１項記載の入出力制御方法。
（付記５）
該サーバ内のソフトウェアの階層構造において、該アプリケーション、該ボリューム管理ソフトウェア、該入出力マルチパス制御ソフトウェアの順で上位層である、付記４記載の入出力制御方法。
（付記６）
該発行ステップは、該タイムアウト時間が所定時間を超える入出力要求は、該タイムアウト時間が所定時間を超えることを示す情報を付加して発行し、
該予測ステップは、該入出力要求に該情報が付加されていると該予測タイムアウト時間を予め設定された値に設定する、付記３乃至５のいずれか１項記載の入出力制御方法。
（付記７）
経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視する監視手段と、
該入出力要求に対する予測タイムアウト時間を統計情報に基づいて予測する予測手段と、
該予測タイムアウト時間内に該入出力要求に対する入出力応答がないと、該入出力装置又は該経路に起因するエラーを検出して該タイムアウト処理を行うタイムアウト手段を有し、
該タイムアウト手段は、該エラーが検出された該経路の閉塞又は別の経路への切り替え、或いは、該エラーが検出された該入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、入出力制御装置。
（付記８）
該予測手段は、発行しようとしている入出力要求の対象に対して現在該サーバにおいて処理している入出力要求の数と、該入出力要求を発行してから該対象から応答があるまでの平均時間の積、或いは、該入出力要求を発行してから該対象から応答があるまでの応答時間の集計の平均値を該統計情報として用いる、付記７記載の入出力制御装置。
（付記９）
該入出力要求を発行する発行手段を更に有し、
該発行手段はアプリケーションに実装され、
該予測手段及び該タイムアウト手段は、入出力マルチパス制御ソフトウェアに実装され、
該タイムアウト手段は、該エラーが検出された該経路の閉塞又は別の経路への切り替えを行う、付記７又は８記載の入出力制御装置。
（付記１０）
該入出力要求を発行する発行手段を更に有し、
該発行手段はアプリケーションに実装され、
該予測ステップ及び該タイムアウトステップは、ボリューム管理ソフトウェアに実装され、
該タイムアウト手段は、該エラーが検出された該入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、付記７乃至９のいずれか１項記載の入出力制御装置。
（付記１１）
該入出力制御装置内のソフトウェアの階層構造において、該アプリケーション、該ボリューム管理ソフトウェア、該入出力マルチパス制御ソフトウェアの順で上位層である、付記１０記載の入出力制御方法。
（付記１２）
該発行手段は、該タイムアウト時間が所定時間を超える入出力要求は、該タイムアウト時間が所定時間を超えることを示す情報を付加して発行し、
該予測手段は、該入出力要求に該情報が付加されていると該予測タイムアウト時間を予め設定された値に設定する、付記９乃至１１のいずれか１項記載の入出力制御装置。
（付記１３）
コンピュータに、該コンピュータと経路を介して接続された入出力装置に対して発行された入出力要求に対する入出力応答を監視してタイムアウト時間内に該入出力応答がないとタイムアウト処理を行う入出力制御を行わせるプログラムであって、
該入出力要求に対する予測タイムアウト時間をメモリに格納された統計情報に基づいて予測する予測手順と、
該予測タイムアウト時間内に該入出力要求に対する入出力応答がないと、該入出力装置又は該経路に起因するエラーを検出して該タイムアウト処理を行うタイムアウト手順
を該コンピュータじ実行させ、
該タイムアウト手順は、該エラーが検出された該経路の閉塞又は別の経路への切り替え、或いは、該エラーが検出された該入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、プログラム。
（付記１４）
該予測手順は、発行しようとしている入出力要求の対象に対して現在該サーバにおいて処理している入出力要求の数と、該入出力要求を発行してから該対象から応答があるまでの平均時間の積、或いは、該入出力要求を発行してから該対象から応答があるまでの応答時間の集計の平均値を該統計情報として用いる、付記１３記載のプログラム。
（付記１５）
該入出力要求を該コンピュータに発行させる発行手順を更に有し、
該発行手順は、アプリケーションに実装され、
該予測手順及び該タイムアウト手順は、入出力マルチパス制御ソフトウェアに実装され、
該タイムアウト手順は、該エラーが検出された該経路の閉塞又は別の経路への切り替えを行う、付記１３又は１４記載のプログラム。
（付記１６）
該入出力要求を該コンピュータに発行させる発行手順を更に有し、
該発行手順は、アプリケーションに実装され、
該予測手順及び該タイムアウト手順は、ボリューム管理ソフトウェアに実装され、
該タイムアウト手順は、該エラーが検出された該入出力装置内の入出力部の閉塞又は別の入出力部への切り替えを行う、付記１３乃至１５のいずれか１項記載のプログラム。
（付記１７）
該コンピュータに実装されたソフトウェアの階層構造において、該アプリケーション、該ボリューム管理ソフトウェア、該入出力マルチパス制御ソフトウェアの順で上位層である、付記１６記載のプログラム。
（付記１８）
該発行手順は、該タイムアウト時間が所定時間を超える入出力要求は、該タイムアウト時間が所定時間を超えることを示す情報を付加して発行し、
該予測手順は、該入出力要求に該情報が付加されていると該予測タイムアウト時間を予め設定された値に設定する、付記１５乃至１７のいずれか１項記載のプログラム。
【００９１】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００９２】
【図１】サーバとディスクアレイ装置間の通信制御の一例を説明する図である。
【図２】図１に示すシステムの動作タイミングを説明する図である。
【図３】本発明の第１実施例におけるサーバとディスクアレイ装置間の通信制御を説明する図である。
【図４】図３に示すシステムの動作タイミングを説明する図である。
【図５】Ｉ／Ｏ要求の処理を説明する図である。
【図６】buf構造体の一例を示す図である。
【図７】Ｉ／Ｏマルチパス制御ソフトウェアのＩ／Ｏ管理機能のＩ／Ｏ要求受付処理を説明するフローチャートである。
【図８】Ｉ／Ｏマルチパス制御ソフトウェアのＩ／Ｏ管理機能のタイムアウト時間設定処理を説明するフローチャートである。
【図９】ＬＵ管理機能が管理する管理情報の一例を示す図である。
【図１０】Ｉ／Ｏマルチパス制御ソフトウェアのＬＵ管理機能のパス状況返信処理を説明するフローチャートである。
【図１１】Ｉ／Ｏマルチパス制御ソフトウェアのＬＵ管理機能の発行数加算処理を説明するフローチャートである。
【図１２】Ｉ／Ｏマルチパス制御ソフトウェアのＬＵ管理機能のＩ／Ｏ応答時間返信処理を説明するフローチャートである。
【図１３】Ｉ／Ｏマルチパス制御ソフトウェアのＩ／Ｏ監視タイマ機能を説明するフローチャートである。
【図１４】Ｉ／Ｏマルチパス制御ソフトウェアのディスクアレイ装置監視タイマ機能を説明するフローチャートである。
【図１５】本発明の第２実施例におけるサーバとディスクアレイ装置間の通信制御を説明する図である。
【図１６】図１５に示すシステムのリード時の動作タイミングを説明する図である。
【図１７】図１５に示すシステムのライト時の動作タイミングを説明する図である。
【図１８】ボリューム管理ソフトウェアのＩ／Ｏ管理機能のＩ／Ｏ要求受付処理を説明するフローチャートである。
【図１９】ボリューム管理ソフトウェアのＩ／Ｏ管理機能のタイムアウト時間設定処理を説明するフローチャートである。
【図２０】ＤＶ管理機能が管理する管理情報の一例を示す図である。
【図２１】ボリューム管理ソフトウェアのＤＶ管理機能のパス状況返信処理を説明するフローチャートである。
【図２２】ボリューム管理ソフトウェアのＤＶ管理機能の発行数加算処理を説明するフローチャートである。
【図２３】ボリューム管理ソフトウェアのＤＶ管理機能のＩ／Ｏ応答時間返信処理を説明するフローチャートである。
【図２４】ボリューム管理ソフトウェアのＩ／Ｏ監視タイマ機能を説明するフローチャートである。
【図２５】ボリューム管理ソフトウェアのディスクアレイ装置監視タイマ機能を説明するフローチャートである。
【図２６】本発明の第３実施例におけるサーバとディスクアレイ装置間の通信制御を説明する図である。
【図２７】図２６に示すシステムの動作タイミングを説明する図である。
【符号の説明】
【００９３】
３１      サーバ
３２      ディスクアレイ装置
３２−１，３２−２      ディスク装置
３３      伝送路
３１１      アプリケーション
３１２      Ｉ／Ｏマルチパス制御ソフトウェア
３１３      ターゲットドライバ
３１３−１      ＨＢＡドライバ
３１３−２      ＨＢＡ
３１５      ボリューム管理ソフトウェア
３２２      ディスク
【図１】
0005146032.tif 000002
【図２】
0005146032.tif 000003
【図３】
0005146032.tif 000004
【図４】
0005146032.tif 000005
【図５】
0005146032.tif 000006
【図６】
0005146032.tif 000007
【図７】
0005146032.tif 000008
【図８】
0005146032.tif 000009
【図９】
0005146032.tif 000010
【図１０】
0005146032.tif 000011
【図１１】
0005146032.tif 000012
【図１２】
0005146032.tif 000013
【図１３】
0005146032.tif 000014
【図１４】
0005146032.tif 000015
【図１５】
0005146032.tif 000016
【図１６】
0005146032.tif 000017
【図１７】
0005146032.tif 000018
【図１８】
0005146032.tif 000019
【図１９】
0005146032.tif 000020
【図２０】
0005146032.tif 000021
【図２１】
0005146032.tif 000022
【図２２】
0005146032.tif 000023
【図２３】
0005146032.tif 000024
【図２４】
0005146032.tif 000025
【図２５】
0005146032.tif 000026
【図２６】
0005146032.tif 000027
【図２７】
0005146032.tif 000028