(57)【特許請求の範囲】
【請求項１】
エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、前記エラー種別に対応したタイマ値とを関連付けて記憶する記憶部と、
前記複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、前記入出力に用いるパスを切り替える制御部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記記憶部は、
前記タイマ値と、同一パスでリトライを行うか否かを示すリトライ情報とを関連付けてさらに記憶し、
前記制御部は、
前記入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたリトライ情報が、同一パスでリトライを行うことを示す場合、同一パスでリトライを行い、同一パスでリトライを行わないことを示す場合、または、前記同一パスでのリトライがエラー応答の場合、前記パス切替情報に基づいて、前記入出力に用いるパスを切り替えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶部は、
前記複数のパスのそれぞれのパスと、前記パスの状態に対応するカウンタ値とを関連付けてさらに記憶し、および、前記タイマ値と、前記エラー種別に対応した加算値とを関連付けてさらに記憶し、
前記制御部は、
前記入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられた加算値を、前記入出力要求を発行したパスに関連付けられたカウンタ値に加算し、加算したカウンタ値に基づいて、前記入出力要求を発行したパスの状態を遷移することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御部は、
前記ストレージ制御装置から前記エラー種別を取得し、取得した前記エラー種別に対応したタイマ値を前記ストレージ制御装置に送信することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、前記エラー種別に対応したタイマ値とを関連付けて記憶する記憶部と、前記複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、前記入出力に用いるパスを切り替える制御部と、を有する情報処理装置と、
前記エラー種別と、前記エラー種別に対応したタイムアウト時間とを関連付けて記憶する記憶部と、前記情報処理装置からの入出力要求に対するエラーを検出したことに応じて、前記入出力要求を受け付けてから前記エラーのエラー種別と関連付けられたタイムアウト時間が経過した時に、前記情報処理装置にエラー応答をする制御部と、を有するストレージ制御装置と、
を含むことを特徴とする情報処理システム。
【請求項６】
入出力要求を発行してからエラー応答を受け付けるまでの応答時間に対応するタイマ値に基づいて複数のパスのうち入出力に用いるパスの切り替えを行う情報処理装置と接続可能なストレージ制御装置であって、
エラー種別ごとの前記情報処理装置のタイマ値に関する情報を受信し、受信した前記情報に基づいて前記情報処理装置の種別ごとおよび前記エラー種別ごとに設定されたタイムアウト時間を記憶部に記憶し、
前記情報処理装置のいずれかからの入出力要求に対するエラーを検出したことに応じて、前記入出力要求を受け付けてから当該情報処理装置の種別および前記エラーのエラー種別に対応するタイムアウト時間が経過した時に、当該情報処理装置にエラー応答をする、
制御部を有することを特徴とするストレージ制御装置。
【請求項７】
コンピュータに、
エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、前記エラー種別に対応したタイマ値とを関連付けて記憶し、
前記複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、前記入出力に用いるパスを切り替える、
処理を実行させることを特徴とする情報処理プログラム。
【請求項８】
コンピュータに、
エラー種別と、前記エラー種別に対応したタイムアウト時間とを関連付けて記憶し、
自装置に接続される複数のパスのうち入出力に用いるパスの切り替えを、入出力要求を発行してからエラー応答を受け付けるまでの応答時間に基づいて行う情報処理装置からの入出力要求に対するエラーを検出したことに応じて、前記入出力要求を受け付けてから前記エラーのエラー種別と関連付けられたタイムアウト時間が経過した時に、前記情報処理装置にエラー応答をする、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ストレージ制御装置、情報処理プログラムおよびストレージ制御プログラムに関する。
【背景技術】
【０００２】
情報処理システムでは、業務を停止させないため、冗長化の機構を導入している。例えば、情報処理システムは、複数のファイバチャネルケーブル等を用いることで、サーバとストレージ装置間を複数のパスで接続する。この場合、情報処理システムは、あるパスに問題が発生した場合でも、他のパスに切り替えて業務を継続することが可能である。
【０００３】
関連する先行技術としては、例えば、ホストがストレージ装置と通信を行う場合において、パスＰ１上の障害が所定の閾値以上発生したとき、パスＰ１（切換元パス）から、他の正常なパスＰ２（切換先パス）に切り換える技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１０７１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、エラーに応じた適切な処理を行うことができない場合がある。例えば、パス上の障害が所定の回数以上発生した場合でも、エラーによっては、パスを切り替えることなく、同じパスでリトライを行った方がよい場合がある。このように、エラーに応じた適切な処理を行うことができない場合がある。
【０００６】
一つの側面では、本発明は、エラーに応じた適切な処理を行うことを可能にする情報処理装置、ストレージ制御装置、情報処理プログラムおよびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、エラー種別に対応したタイマ値とを関連付けて記憶し、複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答をストレージ制御装置から受け付けたことに応じて、入出力要求を発行してからエラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、入出力に用いるパスを切り替える情報処理装置および情報処理プログラムが提案される。
【０００８】
また、本発明の一側面によれば、エラー種別と、エラー種別に対応したタイムアウト時間とを関連付けて記憶し、自装置に接続される複数のパスのうち入出力に用いるパスの切り替えを、入出力要求を発行してからエラー応答を受け付けるまでの応答時間に基づいて行う情報処理装置からの入出力要求に対するエラーを検出したことに応じて、入出力要求を受け付けてからエラーのエラー種別と関連付けられたタイムアウト時間が経過した時に、情報処理装置にエラー応答をするストレージ制御装置およびストレージ制御プログラムが提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、エラーに応じた適切な処理を行うことを可能にするという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかる情報処理システム１００の一実施例を示す説明図である。
【図２】図２は、実施の形態にかかる情報処理システム１００のシステム構成例を示す説明図である。
【図３】図３は、実施の形態にかかるサーバ１０１のハードウェア構成例を示すブロック図である。
【図４】図４は、実施の形態にかかるストレージ制御装置１０２のハードウェア構成例を示すブロック図である。
【図５】図５は、タイムアウト管理テーブル５０１の記憶内容の一例を示す説明図である。
【図６】図６は、エラーハンドリング管理テーブル６０１の記憶内容の一例を示す説明図である。
【図７】図７は、ＬＵＮエラーカウンタテーブル７０１の記憶内容の一例を示す説明図である。
【図８】図８は、パスエラーカウンタテーブル８０１の記憶内容の一例を示す説明図である。
【図９】図９は、実施の形態にかかるサーバ１０１の機能的構成例を示すブロック図である。
【図１０】図１０は、実施の形態にかかるストレージ制御装置１０２の機能的構成例を示すブロック図である。
【図１１】図１１は、実施の形態にかかるタイムアウト管理テーブル５０１登録動作の一例を示すシーケンス図である。
【図１２】図１２は、実施の形態にかかるエラーハンドリング処理動作の一例を示すシーケンス図である。
【図１３】図１３は、実施の形態にかかるサーバ１０１のエラーハンドリング管理テーブル６０１作成処理手順の一例を示すフローチャートである。
【図１４】図１４は、実施の形態にかかるストレージ制御装置１０２のタイムアウト管理テーブル５０１更新処理手順の一例を示すフローチャートである。
【図１５】図１５は、実施の形態にかかるサーバ１０１のエラーハンドリング処理手順の一例を示すフローチャートである。
【図１６】図１６は、実施の形態にかかるサーバ１０１のエラーカウンタテーブル更新処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施の形態にかかるストレージ制御装置１０２のエラーハンドリング処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に図面を参照して、本発明にかかる情報処理装置、ストレージ制御装置、情報処理プログラムおよびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１２】
（実施の形態）
図１は、実施の形態にかかる情報処理システム１００の一実施例を示す説明図である。図１において、情報処理システム１００は、情報処理装置１０１と、ストレージ制御装置１０２と、記憶装置１０３と、を含む。
【００１３】
情報処理装置１０１は、ストレージ制御装置１０２に入出力要求を行うサーバ等のコンピュータである。入出力要求とは、記憶装置１０３上にデータを書き込む要求、または、記憶装置１０３上のデータを読み出す要求である。
【００１４】
情報処理装置１０１は、ストレージ制御装置１０２と複数のケーブルで接続される。ケーブルには、ファイバチャネルケーブル、イーサネット（登録商標）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ））ケーブル等がある。
【００１５】
情報処理装置１０１は、複数のケーブルを用いることで、ストレージ制御装置１０２間と複数のパス（図１の例では、パス１１１とパス１１２）で接続される。パスとは、情報処理装置１０１からストレージ制御装置１０２まで入出力要求とその応答が通る経路のことである。情報処理システム１００は、一方のパスに問題が発生した場合でも、他のパスに切り替えて業務を継続することが可能である。
【００１６】
ストレージ制御装置１０２は、記憶装置１０３にアクセス可能なコンピュータである。ストレージ制御装置１０２は、情報処理装置１０１から記憶装置１０３に対する入出力要求を受け付け、記憶装置１０３が保持するデータで入出力要求に応答する。
【００１７】
記憶装置１０３は、情報処理装置１０１が使用するデータを記憶する。記憶装置１０３は、物理ボリュームであってもよく、また、論理ボリュームであってもよい。物理ボリュームは、１つのハードディスクに対応するものであってもよく、また、ハードディスク内のパーティションに対応するものであってもよい。論理ボリュームは、物理ボリュームを集約したボリューム・グループを論理的に区分化したものである。論理ボリュームを識別するための識別子として、ＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）を用いることができる。
【００１８】
従来、サーバとストレージ装置間を複数のパスで接続する情報処理システムでは、パスの切り替えを実現するため、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）にマルチパスドライバを実装していた。マルチパスドライバは、ＯＳのディスクドライバとＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）アダプタドライバとの間のレイヤに実装されていた。この構成では、マルチパスドライバは、発生したエラーの詳細な種別をＨＢＡドライバから取得できるため、エラーの詳細な種別を元にパスを切り替えるか否か、同じパスでリトライするか否か等を決定していた。
【００１９】
一方、近年リリースされているＯＳは、パスの切り替えを実現するマルチパス機構が標準で組み込まれるようになってきた。しかし、ＯＳ標準のマルチパス機能ではきめ細やかなエラー処理は実現できていないため、ストレージベンダーは、きめ細やかなエラー処理を実現するマルチパスドライバを提供してきた。ここで、マルチパス機能を実現するＯＳ標準のマルチパスドライバは、ディスクドライバの上に実装された。このため、ＯＳ標準のマルチパス機能を置き換えるストレージベンダーのマルチパスドライバも、ディスクドライバの上に実装される。
【００２０】
しかしながら、この実装では、マルチパスドライバは、発生した詳細なエラー種別（エラーセンスコード、ＳＣＳＩデバイスステータス、ＨＢＡ検出エラーなど）をＨＢＡドライバから受け取ることができない。マルチパスドライバはディスクドライバからエラー情報を受け取るが、それはＥＩＯ（Ｅｒｒｏｒ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）というエラーを示すステータスであり、詳細なエラー種別はわからない。マルチパスドライバから見てエラー種別はＥＩＯという１つだけなので、どんなエラーが発生しても必ず同じエラーハンドリングを行うことになる。すなわち、マルチパスドライバは、エラーに応じた適切な処理を行うことができない。
【００２１】
そこで、実施の形態では、情報処理装置１０１は、情報処理装置１０１と複数のパスで接続され、エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置１０２からのエラーの応答時間に応じて、パス切替えを行うか否かを判断する。このため、情報処理装置１０１は、エラーに応じた適切な処理を行うことができる。
【００２２】
以下、実施の形態にかかる情報処理システム１００の一実施例について説明する。以下では、情報処理装置１０１の一例として、サーバ１０１を用いて説明する。
【００２３】
（１）サーバ１０１は、複数のパスのいずれかのパスを介してストレージ制御装置１０２に対して入出力要求を発行する。ここで、サーバ１０１は、複数のパスのなかからランダムに選択したパスを介して入出力要求を発行することができる。また、サーバ１０１は、複数のパスのそれぞれについてエラーカウンタ値を記憶し、エラーカウンタ値が小さいパスを介して入出力要求を発行することができる。
【００２４】
図１の例では、サーバ１０１は、パス１１１を介してストレージ制御装置１０２に対して入出力要求を発行する。
【００２５】
（２）ストレージ制御装置１０２は、サーバ１０１からの入出力要求でエラーを検出し、検出したエラーのエラー種別を特定する。エラー種別とは、ストレージ制御装置１０２がサーバ１０１から受け付けた入出力要求に対して発生するストレージ制御装置１０２のエラーを、エラーの種類によって類別したものである。例えば、いずれかの論理ボリューム上で発生したエラーは、ＬＵＮ故障のエラー種別に類別され、いずれかのパス上で発生したエラーは、パス故障のエラー種別に類別される。
【００２６】
図１の例では、サーバ１０１からの入出力要求がデータの読み出し要求である。ストレージ制御装置１０２は、論理ボリュームからデータの読み出しを行うが、論理ボリュームのエラーを検出する。ストレージ制御装置１０２は、このエラーのエラー種別として、ＬＵＮ故障を特定する。
【００２７】
（３）ストレージ制御装置１０２は、エラー種別とタイムアウト時間とを関連付けた情報１２２から、エラー種別に対応したタイムアウト時間を取得し、入出力要求を受け付けてから、取得したタイムアウト時間が経過するまで待ち合わせる。タイムアウト時間は、エラー種別に属するエラーが発生した際にストレージ制御装置１０２がエラー応答するまでの時間である。タイムアウト時間は、エラー種別に対応して事前に設定される。単位は、例えば秒である。
【００２８】
図１の例では、ストレージ制御装置１０２は、エラー種別がＬＵＮ故障であるため、情報１２２からタイムアウト時間３秒を取得する。ストレージ制御装置１０２は、入出力要求を受け付けてから３秒経過するまで待ち合わせる。
【００２９】
（４）ストレージ制御装置１０２は、サーバ１０１に入出力要求に対するエラー応答を行う。エラー応答とは、サーバ１０１からの入出力要求が正常に終了しなかったことを示す応答である。
【００３０】
図１の例では、ストレージ制御装置１０２は、サーバ１０１からの入出力要求から３秒経過後、サーバ１０１に入出力要求に対するエラー応答を行う。
【００３１】
（５）サーバ１０１は、ストレージ制御装置１０２からのエラー応答の応答時間を算出し、パス切替情報とエラー種別に対応したタイマ値とを関連付けて記憶する情報１２１を参照し、算出した応答時間に対応するパス切替情報を取得する。応答時間とは、サーバ１０１がストレージ制御装置１０２に入出力要求を発行してからストレージ制御装置１０２からエラー応答を受け付けるまでの時間である。タイマ値とは、エラー種別に対応して事前に設定された時間であり、情報１２２のエラー種別に関連したタイムアウト時間と同じ時間が設定される。単位は、例えば秒である。
【００３２】
図１の例では、サーバ１０１は、ストレージ制御装置１０２に入出力要求を発行してからストレージ制御装置１０２からエラー応答を受け付けるまでの時間として、３秒を算出する。サーバ１０１は、情報１２１を参照し、３秒に対応するパス切替情報を取得する。
【００３３】
（６）サーバ１０１は、取得したパス切替情報に基づき、パスの切り替えを行う。パスの切り替えとは、エラー応答があった入出力で用いたパスとは異なるパスを用いて入出力を行うことである。
【００３４】
図１の例では、サーバ１０１は、取得したパス切替情報が「あり」を示すため、パスの切り替えを行う。サーバ１０１は、エラー応答があった入出力で用いたパス１１１とは異なるパス１１２を用いて入出力を行う。
【００３５】
以上説明したように、サーバ１０１は、エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置１０２と複数のパスで接続される。サーバ１０１は、入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、エラー種別に対応したタイマ値とを関連付けて記憶する。サーバ１０１は、複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答をストレージ制御装置１０２から受け付けたことに応じて、応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、入出力に用いるパスを切り替える。
【００３６】
これにより、サーバ１０１は、エラー種別に対応した、パスの切り替えを行うか否かを示すパス切替情報を取得できる。このため、サーバ１０１は、エラーに応じた適切な処理を行うことができる。
【００３７】
また、上記で説明したサーバ１０１の処理は、ストレージベンダーのマルチパスドライバで行うことができる。この場合、ＯＳ標準のマルチパスドライバを、ストレージベンダーのマルチパスドライバで置き換えることにより、上記で説明したサーバ１０１の処理が実現できる。
【００３８】
また、サーバ１０１はエラー応答の応答時間を算出するが、算出した応答時間には、ストレージ制御装置１０２からサーバ１０１までの通信時間も含まれる。このため、算出した応答時間は、情報１２１のタイマ値と一致しない場合がある。この場合、サーバ１０１は、算出した応答時間より短くて最も近いタイマ値に対応するパス切替情報を取得することができる。
【００３９】
（情報処理システム１００のシステム構成例）
図２は、実施の形態にかかる情報処理システム１００のシステム構成例を示す説明図である。図２において、情報処理システム１００は、サーバ１０１と、ストレージ制御装置１０２と、記憶装置１０３と、を含む。サーバ１０１はストレージ制御装置１０２と複数のケーブルで接続される。
【００４０】
サーバ１０１は、ストレージ制御装置１０２にアクセスするコンピュータである。ストレージ制御装置１０２は、記憶装置１０３を制御する装置である。記憶装置１０３は、データを記憶する装置である。例えば、ハードディスク装置またはディスクアレイ装置等の記憶装置である。
【００４１】
（サーバ１０１のハードウェア構成例）
図３は、実施の形態にかかるサーバ１０１のハードウェア構成例を示すブロック図である。図３において、サーバ１０１は、ＣＰＵ３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスクドライブ３０４と、ディスク３０５と、を有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４２】
ここで、ＣＰＵ３０１は、サーバ１０１の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭは記憶部としてＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４３】
Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２００に接続され、ネットワーク２００を介して他のコンピュータ、ストレージ制御装置１０２に接続される。そして、Ｉ／Ｆ３０３は、ネットワーク２００と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４４】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する。ディスク３０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００４５】
なお、サーバ１０１は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボード、マウス、プリンタ、ディスプレイなどを有することにしてもよい。
【００４６】
（ストレージ制御装置１０２のハードウェア構成例）
図４は、実施の形態にかかるストレージ制御装置１０２のハードウェア構成例を示すブロック図である。図４において、ストレージ制御装置１０２は、ＣＰＵ４０１と、メモリ４０２と、Ｉ／Ｆ４０３とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００４７】
ここで、ＣＰＵ４０１は、ストレージ制御装置１０２の全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭは記憶部としてＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。Ｉ／Ｆ４０３は、サーバ１０１および記憶装置１０３と接続する装置である。
【００４８】
（タイムアウト管理テーブル５０１の一例）
図５は、タイムアウト管理テーブル５０１の記憶内容の一例を示す説明図である。図５において、ストレージ制御装置１０２のタイムアウト管理テーブル５０１は、例えば、ストレージ制御装置１０２によって作成、更新され、ストレージ制御装置１０２のメモリ４０２に記憶される。
【００４９】
タイムアウト管理テーブル５０１は、エラー種別およびタイムアウト時間の項目を有する。タイムアウト管理テーブル５０１は、各項目に情報を設定することで、タイムアウト管理情報（例えば、タイムアウト管理情報５０１−１〜５０１−７）をレコードとして記憶する。
【００５０】
ここで、エラー種別は、ストレージ制御装置１０２がサーバ１０１から受け付けた入出力要求に対して発生するストレージ制御装置１０２のエラーを、エラーの種類によって類別したものである。例えば、エラー種別には、「故障通知」、「起動中」、「ＬＵＮ故障」、「パス故障」、「装置起動中」、「高負荷」、「コマンド異常」等がある。
【００５１】
タイムアウト時間は、エラー種別に属するエラーが発生した際に、ストレージ制御装置１０２がエラー応答するまでに待ち合わせる時間である。単位は、例えば、秒である。具体的には、タイムアウト時間は、ストレージ制御装置１０２がサーバ１０１から入出力要求を受け付けた時間から、サーバ１０１に入出力要求の応答をするまでの時間である。
【００５２】
例えば、タイムアウト時間の初期設定値は、４０秒である。この初期設定値は、サーバ１０１がエラー種別ごとに決定したタイマ値に基づいて変更される。
【００５３】
図５の例では、レコード５０１−１は、エラー種別が「故障通知」に属するエラーが発生した際に、ストレージ制御装置１０２はサーバ１０１から入出力要求を受け付けた時間から、４０秒経過した時に、サーバ１０１にエラーの応答を行うことを示す。
【００５４】
（エラーハンドリング管理テーブル６０１の一例）
図６は、エラーハンドリング管理テーブル６０１の記憶内容の一例を示す説明図である。図６において、サーバ１０１のエラーハンドリング管理テーブル６０１は、例えば、サーバ１０１によって作成、更新され、サーバ１０１のメモリ３０２またはディスク３０５に記憶される。
【００５５】
エラーハンドリング管理テーブル６０１は、グループ種別、エラー種別、タイマ値、同パスリトライ（最大実施回数）、切り替え、エラーカウンタ加算値（ＬＵＮ）およびエラーカウンタ加算値（パス）の項目を有する。エラーハンドリング管理テーブル６０１は、各項目に情報を設定することで、エラーハンドリング管理情報（例えば、エラーハンドリング管理情報６０１−１〜６０１−７）をレコードとして記憶する。
【００５６】
ここで、グループ種別は、エラーの重要度に基づいて、エラー種別を分類したものである。重要度とは、エラーが及ぼす影響の範囲の大きさを示すものである。重要度が大きいほどエラーが及ぼす影響の範囲の大きさが大きい。エラー種別は、ストレージ制御装置１０２で発生するエラーをエラーの種類によって類別したものである。エラー種別は、タイムアウト管理テーブル５０１のエラー種別と同じ内容が設定される。
【００５７】
タイマ値は、エラー種別ごとに決定された時間である。サーバ１０１がエラーの重要度に基づいて、タイマ値を決定することができる。例えば、サーバ１０１は、エラーの重要度が大きいほど、タイマ値を大きくすることができる。サーバ１０１は、決定したタイマ値を、タイムアウト管理テーブル５０１のタイムアウト時間に設定することができる。
【００５８】
同パスリトライ（最大実施回数）は、ストレージ制御装置１０２からエラーの応答があったとき、サーバ１０１が同じパスでリトライを行うか否かを示す情報である。また、最大実施回数は、リトライを行う場合のリトライの最大回数である。
【００５９】
切り替えは、ストレージ制御装置１０２からエラーの応答があったとき、サーバ１０１が他のパスに切り替えを行うか否かを示す情報である。エラーカウンタ加算値（ＬＵＮ）は、ストレージ制御装置１０２からエラーの応答があったとき、以下で説明するＬＵＮエラーカウンタテーブル７０１のエラーカウンタ値に加算する値を示す。エラーカウンタ加算値（パス）は、ストレージ制御装置１０２からエラーの応答があったとき、以下で説明するパスエラーカウンタテーブル８０１のエラーカウンタ値に加算する値を示す。
【００６０】
図６の例では、レコード６０１−１は、「故障通知」のエラーはグループ種別「１」に属することを示す。また、「故障通知」のエラーが発生した際に、ストレージ制御装置１０２は、サーバ１０１から入出力要求を受け付けた時間から、１秒経過した時に、サーバ１０１にエラーの応答を行うことを示す。この際、サーバ１０１は、エラーの応答を受信後、最大１０回の同じパスでリトライを行う。また、サーバ１０１は、リトライでエラーが回復しない場合、別パスへの切り替えを行う。また、サーバ１０１は、パスエラーカウンタテーブル８０１で入出力に用いたパスのカウンタ値に１０を加算する。
【００６１】
（ＬＵＮエラーカウンタテーブル７０１の一例）
図７は、ＬＵＮエラーカウンタテーブル７０１の記憶内容の一例を示す説明図である。図７において、サーバ１０１のＬＵＮエラーカウンタテーブル７０１は、例えば、サーバ１０１によって作成、更新され、サーバ１０１のメモリ３０２またはディスク３０５に記憶される。
【００６２】
ＬＵＮエラーカウンタテーブル７０１は、ＬＵＮ、エラーカウンタ値および状態の項目を有する。ＬＵＮエラーカウンタテーブル７０１は、各項目に情報を設定することで、ＬＵＮエラーカウンタ情報（例えば、ＬＵＮエラーカウンタ情報７０１−１〜７０１−３）をレコードとして記憶する。
【００６３】
ここで、ＬＵＮは、記憶装置１０３の論理ボリュームを識別するための識別子である。エラーカウンタ値は、ＬＵＮで識別される論理ボリュームへの入出力要求で発生したエラーに対応するエラーハンドリング管理テーブル６０１のエラーカウンタ加算値（ＬＵＮ）を累計したものである。状態は、ＬＵＮで識別される論理ボリュームが正常から障害までのどの状態であるかを示す。状態は、エラーカウンタ値に基づいて決定され、例えば、Ｏｎｌｉｎｅ状態、Ｗａｒｎｉｎｇ状態、Ｆａｉｌ状態がある。
【００６４】
サーバ１０１は、エラーカウンタ値を一定時間ごとに初期化してもよい。また、サーバ１０１は、所定の値以下のエラーカウンタ値を一定時間ごとに初期化してもよい。状態は、例えば、エラーカウンタが０以上１０未満の時、Ｏｎｌｉｎｅ状態、１０以上８０未満の時、Ｗａｒｎｉｎｇ状態、８０以上の時、Ｆａｉｌ状態とすることができる。
【００６５】
図７の例では、レコード７０１−１は、ＬＵＮがＡで識別される論理ボリュームは、エラーカウンタ値が０で状態はＯｎｌｉｎｅ状態であることを示す。
【００６６】
（パスエラーカウンタテーブル８０１の一例）
図８は、パスエラーカウンタテーブル８０１の記憶内容の一例を示す説明図である。図８において、サーバ１０１のパスエラーカウンタテーブル８０１は、例えば、サーバ１０１によって作成、更新され、サーバ１０１のメモリ３０２またはディスク３０５に記憶される。
【００６７】
パスエラーカウンタテーブル８０１は、パス番号、エラーカウンタ値および状態の項目を有する。パスエラーカウンタテーブル８０１は、各項目に情報を設定することで、パスエラーカウンタ情報（例えば、パスエラーカウンタ情報８０１−１〜８０１−２）をレコードとして記憶する。
【００６８】
ここで、パス番号は、ストレージ制御装置１０２に接続されるパスを識別するための識別子である。エラーカウンタ値は、パス番号で識別されるパスで発生したエラーに対応するエラーハンドリング管理テーブル６０１のエラーカウンタ加算値（パス）を累計したものである。状態は、パスが正常から障害までのどの状態であるかを示す。状態は、エラーカウンタ値に基づいて決定され、例えば、Ｏｎｌｉｎｅ状態、Ｗａｒｎｉｎｇ状態、Ｆａｉｌ状態がある。
【００６９】
サーバ１０１は、エラーカウンタ値を一定時間ごとに初期化してもよい。また、サーバ１０１は、所定の値以下のエラーカウンタ値を一定時間ごとに初期化してもよい。状態は、例えば、エラーカウンタが０以上１０未満の時、Ｏｎｌｉｎｅ状態、１０以上８０未満の時、Ｗａｒｎｉｎｇ状態、８０以上の時、Ｆａｉｌ状態とする。
【００７０】
サーバ１０１は、入出力要求を発行するパスを選択する際、エラーカウンタ値に基づいて、パスを決定してもよい。例えば、サーバ１０１は、エラーカウンタ値が最も小さいパスを、入出力要求を発行するパスとして選択することができる。
【００７１】
図８の例では、レコード８０１−１は、パス番号１のパスは、エラーカウンタ値が０で、状態はＯｎｌｉｎｅ状態であることを示す。
【００７２】
（サーバ１０１の機能的構成例）
次に、図２に示したサーバ１０１の機能的構成例について説明する。図９は、実施の形態にかかるサーバ１０１の機能的構成例を示すブロック図である。図９においてサーバ１０１は、タイムアウト管理テーブル取得部９０１と、エラーハンドリング設定部９０２と、エラーハンドリング処理部９０３とを含む構成である。タイムアウト管理テーブル取得部９０１と、エラーハンドリング設定部９０２と、エラーハンドリング処理部９０３とを含む機能部は、具体的には、例えば、図３に示したメモリ３０２などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２などの記憶装置に記憶される。
【００７３】
タイムアウト管理テーブル取得部９０１は、ストレージ制御装置１０２からタイムアウト管理テーブル５０１を取得する機能を有する。例えば、タイムアウト管理テーブル取得部９０１は、ＯＳ標準のディスクドライバに対して発行可能なベンダユニークなコマンドを用いることで、ストレージ制御装置１０２からタイムアウト管理テーブル５０１を取得する。
【００７４】
タイムアウト管理テーブル取得部９０１は、例えば、サーバ１０１の起動時にストレージ制御装置１０２からタイムアウト管理テーブル５０１を取得してもよい。また、タイムアウト管理テーブル取得部９０１は、ストレージ制御装置１０２からタイムアウト管理テーブル５０１のエラー種別だけを取得してもよい。エラーハンドリング設定部９０２が、初期値として設定されたタイムアウト管理テーブル５０１のタイムアウト時間を使用しないためである。
【００７５】
エラーハンドリング設定部９０２は、取得したタイムアウト管理テーブル５０１からエラーハンドリング管理テーブル６０１を作成する機能を有する。エラーハンドリング設定部９０２は、取得したタイムアウト管理テーブル５０１のエラー種別をグループ種別に分類する。例えば、エラーハンドリング設定部９０２は、エラーの重要度に応じてエラー種別をグループ種別に分類することができる。
【００７６】
エラーハンドリング設定部９０２は、グループ種別ごとにタイマ値、同パスリトライ、切り替え、エラーカウンタ加算値（ＬＵＮ）およびエラーカウンタ加算値（パス）を設定する。エラーハンドリング設定部９０２は、例えば、グループ種別の重要度に基づき、タイマ値を設定することができる。また、エラーハンドリング設定部９０２は、同じパスへのリトライでエラーが回復できると判断したグループ種別に、同パスリトライを「あり」に設定することができる。また、エラーハンドリング設定部９０２は、他のパスに切り替ることで、エラーが回復できると判断したグループ種別に、切り替えを「あり」に設定することができる。
【００７７】
また、エラーハンドリング設定部９０２は、グループ種別に属するエラーが論理ボリュームに関するエラーの場合、エラーカウンタ加算値（ＬＵＮ）にエラーの重要度に応じた値を設定できる。また、エラーハンドリング設定部９０２は、グループ種別に属するエラーがパスに関するエラーの場合、エラーカウンタ加算値（パス）にエラーの重要度に応じた値を設定できる。例えば、エラーハンドリング設定部９０２は、重要度が大きいエラーに対して、エラーカウンタ加算値（ＬＵＮ）およびエラーカウンタ加算値（パス）に大きな値を設定することができる。
【００７８】
エラーハンドリング設定部９０２は、設定したタイマ値に基づきタイムアウト管理テーブル５０１のタイムアウト時間を更新する。エラーハンドリング設定部９０２は、エラー種別ごとに、エラーハンドリング管理テーブル６０１のタイマ値をタイムアウト管理テーブル５０１のタイムアウト時間に設定する。エラーハンドリング設定部９０２は、更新したタイムアウト管理テーブル５０１をストレージ制御装置１０２に送信する。これにより、サーバ１０１とストレージ制御装置１０２は、エラー種別に対応したタイマ値とタイムアウト時間とを同じ値にできる。
【００７９】
エラーハンドリング処理部９０３は、ストレージ制御装置１０２への入出力要求がエラーで応答された場合、エラーに対する処理を行う機能を有する。エラーに対する処理として、例えば、同じパスでリトライを行う、パスを切り替える、リトライおよびパスの切り替えを行わず、上位にエラーを通知する等がある。具体的には、パス故障の場合、パスを切り替えることで、エラーからの回復を図ることができる。また、コマンド異常の場合、リトライおよびパスの切り替えを行っても、エラーからの回復を図ることができないため、上位にエラーを通知する。上位とは、例えば、エラーハンドリング処理部９０３に入出力要求を依頼したプログラムである。
【００８０】
エラーハンドリング処理部９０３は、入出力要求からエラーの応答までの応答時間を算出する。例えば、エラーハンドリング処理部９０３は、ストレージ制御装置１０２への入出力要求を行った時間を記憶し、記憶された時間と入出力要求がエラーで応答されたときの時間から応答時間を算出することができる。
【００８１】
エラーハンドリング処理部９０３は、算出した応答時間に対応するタイマ値をエラーハンドリング管理テーブル６０１から特定する。例えば、エラーハンドリング処理部９０３は、算出した応答時間より短くて最も近いタイマ値をエラーハンドリング管理テーブル６０１から特定する。
【００８２】
エラーハンドリング処理部９０３は、特定したタイマ値のグループ種別の「切り替え」に基づいて、他のパスに切り替えを行うか否かを判断する。エラーハンドリング処理部９０３は、「切り替え」がありの場合、他のパスに切り替えを行い、「切り替え」がなしの場合、他のパスに切り替えを行わない。
【００８３】
エラーハンドリング処理部９０３は、特定したタイマ値のグループ種別の「同パスリトライ」に基づいて、同じパスでリトライを行うか否かを判断する。エラーハンドリング処理部９０３は、「同パスリトライ」がありの場合、同じパスでリトライを行い、「同パスリトライ」がなしの場合、同じパスでリトライを行わない。エラーハンドリング処理部９０３は、最大実施回数が指定されている場合、最大実施回数までリトライを行う。
【００８４】
エラーハンドリング処理部９０３は、特定したタイマ値のエラーカウンタ加算値（ＬＵＮ）でＬＵＮエラーカウンタテーブル７０１を更新する。エラーハンドリング処理部９０３は、エラー応答があった入出力要求で用いた論理ボリュームのＬＵＮを特定する。エラーハンドリング処理部９０３は、特定したＬＵＮのエラーカウンタ値に特定したエラー種別のエラーカウンタ加算値（ＬＵＮ）を加算する。
【００８５】
また、エラーハンドリング処理部９０３は、加算したエラーカウンタ値がしきい値を超えた場合、ＬＵＮエラーカウンタテーブル７０１のＬＵＮの状態を遷移させる。例えば、エラーハンドリング処理部９０３は、しきい値として、１０、８０を用いることができる。これらのしきい値を超えた場合、エラーハンドリング処理部９０３は、状態をＷａｒｎｉｎｇ状態、Ｆａｉｌ状態に遷移させる。
【００８６】
エラーハンドリング処理部９０３は、特定したタイマ値のエラーカウンタ加算値（パス）でパスエラーカウンタテーブル８０１を更新する。エラーハンドリング処理部９０３は、エラー応答があった入出力要求で用いたパスのパス番号を特定する。エラーハンドリング処理部９０３は、特定したパス番号のエラーカウンタ値にエラーカウンタ加算値（パス）を加算する。
【００８７】
また、エラーハンドリング処理部９０３は、加算したエラーカウンタ値がしきい値を超えた場合、パスエラーカウンタテーブル８０１のパスの状態を遷移させる。例えば、エラーハンドリング処理部９０３は、しきい値として、１０、８０を用いることができる。これらのしきい値を超えた場合、エラーハンドリング処理部９０３は、状態をＷａｒｎｉｎｇ状態、Ｆａｉｌ状態に遷移させる。
【００８８】
（ストレージ制御装置１０２の機能的構成例）
次に、図２に示したストレージ制御装置１０２の機能的構成例について説明する。図１０は、実施の形態にかかるストレージ制御装置１０２の機能的構成例を示すブロック図である。図１０においてストレージ制御装置１０２は、タイムアウト管理テーブル返却部１００１と、タイムアウト管理テーブル設定部１００２と、エラーハンドリング処理部１００３とを含む構成である。タイムアウト管理テーブル返却部１００１と、タイムアウト管理テーブル設定部１００２と、エラーハンドリング処理部１００３とを含む機能部は、具体的には、例えば、図４に示したメモリ４０２などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２などの記憶装置に記憶される。
【００８９】
タイムアウト管理テーブル返却部１００１は、サーバ１０１から要求されたタイムアウト管理テーブル５０１をサーバ１０１に返却する機能を有する。タイムアウト管理テーブル返却部１００１は、サーバ１０１からタイムアウト管理テーブル５０１のエラー種別を要求された場合、タイムアウト管理テーブル５０１のエラー種別だけを返却してもよい。
【００９０】
タイムアウト管理テーブル設定部１００２は、サーバ１０１が送信したタイムアウト管理テーブル５０１に基づき、タイムアウト管理テーブル５０１のタイムアウト時間を更新する。タイムアウト管理テーブル設定部１００２は、更新したタイムアウト管理テーブル５０１をサーバ１０１ごとに記憶してもよい。これは、サーバ１０１のＯＳ種別ごとに、異なるタイムアウト時間を設定すべき場合があるためである。例えば、あるＯＳの場合は、あるエラーに対してすぐに切り替えることが望ましいが、他のＯＳの場合は切り替えずにしばらく粘ることが望ましい場合があるためである。
【００９１】
エラーハンドリング処理部１００３は、サーバ１０１からの入出力要求でエラーが発生した場合、エラーに対する処理を行う機能を有する。エラーハンドリング処理部１００３は、発生したエラーの種別を特定する。
【００９２】
エラーハンドリング処理部１００３は、特定したエラー種別のタイムアウト時間をタイムアウト管理テーブル５０１から取得する。エラーハンドリング処理部１００３は、サーバ１０１からの入出力要求から、取得したタイムアウト時間が経過するまで待ち合わせる。待ち合わせ後、エラーハンドリング処理部１００３は、サーバ１０１にエラー応答を通知する。
【００９３】
エラーハンドリング処理部１００３は、サーバ１０１からの入出力要求が正常に終了した場合、サーバ１０１に正常応答を通知することもできる。
【００９４】
（タイムアウト管理テーブル５０１登録動作の一例）
図１１は、実施の形態にかかるタイムアウト管理テーブル５０１登録動作の一例を示すシーケンス図である。図１１において、まず、サーバ１０１は起動を開始する（ステップＳ１１０１）。例えば、ユーザがサーバ１０１の電源をオンにすることでサーバ１０１は起動を開始する。
【００９５】
サーバ１０１は、起動中にストレージ制御装置１０２にタイムアウト管理テーブル５０１の取得を要求する（ステップＳ１１０２）。これを受けて、ストレージ制御装置１０２は、サーバ１０１にタイムアウト管理テーブル５０１を送信する（ステップＳ１１０３）。
【００９６】
サーバ１０１は、タイムアウト管理テーブル５０１のエラー種別に基づいてエラーハンドリング管理テーブル６０１を作成する（ステップＳ１１０４）。サーバ１０１は、エラーハンドリング管理テーブル６０１のタイマ値でタイムアウト管理テーブル５０１のタイムアウト時間を更新する（ステップＳ１１０５）。サーバ１０１は、更新したタイムアウト管理テーブル５０１をストレージ制御装置１０２に送信する（ステップＳ１１０６）。
【００９７】
これを受けて、ストレージ制御装置１０２は、タイムアウト管理テーブル５０１を受信し、受信したタイムアウト管理テーブル５０１に基づいて、自装置のタイムアウト管理テーブル５０１のタイムアウト時間を更新する（ステップＳ１１０７）。ストレージ制御装置１０２は、更新終了後、サーバ１０１にタイムアウト管理テーブル５０１の更新が終了したことを通知する（ステップＳ１１０８）。
【００９８】
これにより、本シーケンス図における一連のステップを終了する。本シーケンスを実行することで、サーバ１０１はエラーハンドリング管理テーブル６０１を作成し、エラー種別に対応したタイマ値を、ストレージ制御装置１０２のタイムアウト管理テーブル５０１のタイムアウト時間に設定できる。
【００９９】
（エラーハンドリング処理動作の一例）
図１２は、実施の形態にかかるエラーハンドリング処理動作の一例を示すシーケンス図である。図１２において、まず、サーバ１０１は、ストレージ制御装置１０２に入出力要求を発行する（ステップＳ１２０１）。
【０１００】
これを受けて、ストレージ制御装置１０２は、入出力動作を行い、入出力エラーを検出する（ステップＳ１２０２）。入出力エラーを検出したストレージ制御装置１０２は、入出力エラーの種別を特定する（ステップＳ１２０３）。ストレージ制御装置１０２は、特定したエラー種別のタイムアウト時間をタイムアウト管理テーブル５０１から取得する（ステップＳ１２０４）。
【０１０１】
この後、ストレージ制御装置１０２は、取得したタイムアウト時間に基づき待ち合わせを行う（ステップＳ１２０５）。例えば、ストレージ制御装置１０２は、サーバ１０１からの入出力要求から、取得したタイムアウト時間が経過するまで待ち合わせる。待ち合わせ後、ストレージ制御装置１０２は、サーバ１０１に入出力エラーの通知を行う（ステップＳ１２０６）。
【０１０２】
これを受けて、サーバ１０１は、入出力エラーを受け付けて、応答時間を算出する（ステップＳ１２０７）。サーバ１０１は、算出した応答時間からグループ種別を特定する（ステップＳ１２０８）。サーバ１０１は、特定したグループ種別のエラーカウンタ加算値（ＬＵＮ）でＬＵＮエラーカウンタテーブル７０１のエラーカウンタ値を更新する（ステップＳ１２０９）。サーバ１０１は、更新したＬＵＮエラーカウンタテーブル７０１のエラーカウンタ値に基づき、ＬＵＮの状態を遷移する（ステップＳ１２１０）。
【０１０３】
この後、サーバ１０１は、特定したグループ種別のエラーカウンタ加算値（パス）でパスエラーカウンタテーブル８０１のエラーカウンタ値を更新する（ステップＳ１２１１）。サーバ１０１は、更新したパスエラーカウンタテーブル８０１のエラーカウンタ値に基づき、パスの状態を遷移する（ステップＳ１２１２）。サーバ１０１は、特定したグループ種別の同パスリトライおよび切り替えに基づき、同じパスでまたは切り替えたパスでストレージ制御装置１０２に入出力要求を発行する（ステップＳ１２１３）。
【０１０４】
これにより、本シーケンス図における一連のステップを終了する。本シーケンスを実行することで、サーバ１０１は、入出力エラー受け付け後、エラー種別に対応した応答時間に基づいて、同じパスでリトライするか、または、パスを切り替えるというきめ細かいエラー処理ができる。
【０１０５】
（エラーハンドリング管理テーブル６０１作成処理手順の一例）
図１３は、実施の形態にかかるサーバ１０１のエラーハンドリング管理テーブル６０１作成処理手順の一例を示すフローチャートである。図１３において、まず、サーバ１０１は、タイムアウト管理テーブル５０１の取得をストレージ制御装置１０２に要求する（ステップＳ１３０１）。
【０１０６】
サーバ１０１は、タイムアウト管理テーブル５０１をストレージ制御装置１０２から受信したか否かを判断する（ステップＳ１３０２）。タイムアウト管理テーブル５０１をストレージ制御装置１０２から受信しない場合（ステップＳ１３０２：Ｎｏ）、サーバ１０１の処理はステップＳ１３０２に戻る。
【０１０７】
タイムアウト管理テーブル５０１をストレージ制御装置１０２から受信した場合（ステップＳ１３０２：Ｙｅｓ）、サーバ１０１は、取得したタイムアウト管理テーブル５０１のエラー種別をグループ種別に分類する（ステップＳ１３０３）。
【０１０８】
サーバ１０１は、グループ種別ごとにタイマ値、同パスリトライ、切り替え、エラーカウンタ加算値（ＬＵＮ）およびエラーカウンタ加算値（パス）を決定する（ステップＳ１３０４）。サーバ１０１は、決定した値等に基づきエラーハンドリング管理テーブル６０１を作成する（ステップＳ１３０５）。また、サーバ１０１は、決定したタイマ値に基づきタイムアウト管理テーブル５０１のタイムアウト時間を更新する（ステップＳ１３０６）。
【０１０９】
サーバ１０１は、更新したタイムアウト管理テーブル５０１をストレージ制御装置１０２に送信する（ステップＳ１３０７）。サーバ１０１は、タイムアウト管理テーブル５０１の更新通知をストレージ制御装置１０２から受信したか否かを判断する（ステップＳ１３０８）。タイムアウト管理テーブル５０１の更新通知をストレージ制御装置１０２から受信しない場合（ステップＳ１３０８：Ｎｏ）、サーバ１０１の処理はステップＳ１３０８に戻る。タイムアウト管理テーブル５０１の更新通知をストレージ制御装置１０２から受信した場合（ステップＳ１３０８：Ｙｅｓ）、サーバ１０１のエラーハンドリング管理テーブル６０１作成処理は終了する。
【０１１０】
これにより、本フローチャートにおける一連の処理は終了する。本フローチャートを実行することで、サーバ１０１のエラーハンドリング管理テーブル６０１が作成される。
【０１１１】
（タイムアウト管理テーブル５０１更新処理手順の一例）
図１４は、実施の形態にかかるストレージ制御装置１０２のタイムアウト管理テーブル５０１更新処理手順の一例を示すフローチャートである。図１４において、まず、ストレージ制御装置１０２は、タイムアウト管理テーブル５０１の取得要求をサーバ１０１から受信したか否かを判断する（ステップＳ１４０１）。
【０１１２】
タイムアウト管理テーブル５０１の取得要求をサーバ１０１から受信しない場合（ステップＳ１４０１：Ｎｏ）、ストレージ制御装置１０２の処理はステップＳ１４０１に戻る。タイムアウト管理テーブル５０１の取得要求をサーバ１０１から受信した場合（ステップＳ１４０１：Ｙｅｓ）、ストレージ制御装置１０２は、タイムアウト管理テーブル５０１をサーバ１０１に送信する（ステップＳ１４０２）。
【０１１３】
ストレージ制御装置１０２は、タイムアウト管理テーブル５０１をサーバ１０１から受信したか否かを判断する（ステップＳ１４０３）。タイムアウト管理テーブル５０１をサーバ１０１から受信しない場合（ステップＳ１４０３：Ｎｏ）、ストレージ制御装置１０２の処理はステップＳ１４０３に戻る。
【０１１４】
タイムアウト管理テーブル５０１をサーバ１０１から受信した場合（ステップＳ１４０３：Ｙｅｓ）、ストレージ制御装置１０２は、受信したタイムアウト管理テーブル５０１に基づき、自装置内のタイムアウト管理テーブル５０１を更新する（ステップＳ１４０４）。ストレージ制御装置１０２は、自装置内のタイムアウト管理テーブル５０１を更新したことをサーバ１０１に通知する（ステップＳ１４０５）。
【０１１５】
これにより、本フローチャートにおける一連の処理は終了する。本フローチャートを実行することで、エラーハンドリング管理テーブル６０１のタイマ値がストレージ制御装置１０２のタイムアウト管理テーブル５０１のタイムアウト時間に設定される。
【０１１６】
（サーバ１０１のエラーハンドリング処理手順の一例）
図１５は、実施の形態にかかるサーバ１０１のエラーハンドリング処理手順の一例を示すフローチャートである。図１５において、まず、サーバ１０１は、ストレージ制御装置１０２に対して、入出力要求を発行する（ステップＳ１５０１）。この入出力要求は、例えば上位のプログラムからの要求により発行される。
【０１１７】
サーバ１０１は、ストレージ制御装置１０２から入出力要求の応答を受信したか否かを判断する（ステップＳ１５０２）。ストレージ制御装置１０２から入出力要求の応答を受信しない場合（ステップＳ１５０２：Ｎｏ）、サーバ１０１の処理はステップＳ１５０２に戻る。
【０１１８】
ストレージ制御装置１０２から入出力要求の応答を受信した場合（ステップＳ１５０２：Ｙｅｓ）、サーバ１０１は、入出力要求の応答が正常応答かエラー応答かを判断する（ステップＳ１５０３）。入出力要求の応答が正常応答である場合（ステップＳ１５０３：Ｙｅｓ）、エラーハンドリングを行わないため、サーバ１０１の処理は終了する。
【０１１９】
入出力要求の応答がエラー応答である場合（ステップＳ１５０３：Ｎｏ）、サーバ１０１は応答時間を算出する（ステップＳ１５０４）。例えば、サーバ１０１は、入出力要求を発行した時間と入出力要求がエラー応答されたときの時間から応答時間を算出する。
【０１２０】
サーバ１０１は、算出した応答時間からグループ種別を特定する（ステップＳ１５０５）。例えば、サーバ１０１は、算出した応答時間に対応するタイマ値のグループ種別をエラーハンドリング管理テーブル６０１から特定する。この後、サーバ１０１は、ＬＵＮエラーカウンタテーブル７０１およびパスエラーカウンタテーブル８０１を更新する（ステップＳ１５０６）。サーバ１０１によるエラーカウンタテーブル更新処理の詳細は以下の図１６で説明される。
【０１２１】
サーバ１０１は、特定されたエラー種別で同パスリトライはあるか否かを判断する（ステップＳ１５０７）。特定されたエラー種別で同パスリトライがない場合（ステップＳ１５０７：Ｎｏ）、サーバ１０１の処理はステップＳ１５１０に移行する。
【０１２２】
特定されたエラー種別で同パスリトライがある場合（ステップＳ１５０７：Ｙｅｓ）、サーバ１０１は、入出力要求を発行したパスと同じパスで最大実施回数まで入出力要求をストレージ制御装置１０２に発行する（ステップＳ１５０８）。その後、サーバ１０１は、入出力要求の応答が正常応答かエラー応答かを判断する（ステップＳ１５０９）。入出力要求の応答が正常応答である場合（ステップＳ１５０９：Ｙｅｓ）、エラーハンドリングは終了したため、サーバ１０１の処理は終了する。
【０１２３】
入出力要求の応答がエラー応答である場合（ステップＳ１５０９：Ｎｏ）、サーバ１０１は、特定されたエラー種別でパス切り替えはあるか否かを判断する（ステップＳ１５１０）。特定されたエラー種別でパス切り替えがない場合（ステップＳ１５１０：Ｎｏ）、サーバ１０１の処理はステップＳ１５１４に移行する。
【０１２４】
特定されたエラー種別でパス切り替えがある場合（ステップＳ１５１０：Ｙｅｓ）、サーバ１０１は、入出力要求を発行したパスを切り替える処理を行う（ステップＳ１５１１）。サーバ１０１は、切り替えたパスで入出力要求を発行する（ステップＳ１５１２）。その後、サーバ１０１は、入出力要求の応答が正常応答かエラー応答かを判断する（ステップＳ１５１３）。入出力要求の応答が正常応答である場合（ステップＳ１５１３：Ｙｅｓ）、エラーハンドリングは終了したため、サーバ１０１の処理は終了する。
【０１２５】
入出力要求の応答がエラー応答である場合（ステップＳ１５１３：Ｎｏ）、サーバ１０１は、エラーを回復できないため、入出力処理を依頼した上位のプログラムにエラーを通知する（ステップＳ１５１４）。
【０１２６】
これにより、本フローチャートにおける一連の処理は終了する。本フローチャートを実行することで、入出力エラー受け付け後、エラー種別に対応した応答時間に基づいて、同じパスでリトライするか、または、パスを切り替えるというきめ細かいエラー処理ができる。
【０１２７】
（エラーカウンタテーブル更新処理手順の一例）
図１６は、実施の形態にかかるサーバ１０１のエラーカウンタテーブル更新処理手順の一例を示すフローチャートである。図１６において、まず、サーバ１０１は、ＬＵＮエラーカウンタテーブル７０１を更新する（ステップＳ１６０１）。具体的には、サーバ１０１は、エラー応答があった入出力要求で用いた論理ボリュームのＬＵＮを特定する。サーバ１０１は、特定したＬＵＮのエラーカウンタ値に特定したエラー種別のエラーカウンタ加算値（ＬＵＮ）を加算する。
【０１２８】
サーバ１０１は、入出力要求で用いたＬＵＮのエラーカウンタ値が、しきい値を超えたか否かを判断する（ステップＳ１６０２）。しきい値を超えない場合（ステップＳ１６０２：Ｎｏ）、サーバ１０１の処理はステップＳ１６０４に移行する。しきい値を超えた場合（ステップＳ１６０２：Ｙｅｓ）、サーバ１０１は、ＬＵＮエラーカウンタテーブル７０１のＬＵＮの状態を遷移させる（ステップＳ１６０３）。
【０１２９】
この後、サーバ１０１は、パスエラーカウンタテーブル８０１を更新する（ステップＳ１６０４）。具体的には、サーバ１０１は、エラー応答があった入出力要求で用いたパスを識別するパス番号を特定する。サーバ１０１は、特定したパス番号のエラーカウンタ値に特定したエラー種別のエラーカウンタ加算値（パス）を加算する。
【０１３０】
サーバ１０１は、入出力要求を発行したパスのエラーカウンタ値が、しきい値を超えたか否かを判断する（ステップＳ１６０５）。しきい値を超えない場合（ステップＳ１６０５：Ｎｏ）、サーバ１０１の処理は終了する。しきい値を超えた場合（ステップＳ１６０５：Ｙｅｓ）、サーバ１０１は、パスエラーカウンタテーブル８０１のパスの状態を遷移する（ステップＳ１６０６）。
【０１３１】
これにより、本フローチャートにおける一連の処理は終了する。本フローチャートを実行することで、入出力エラー受け付け後、ＬＵＮエラーカウンタテーブル７０１およびパスエラーカウンタテーブル８０１が更新される。
【０１３２】
（ストレージ制御装置１０２のエラーハンドリング処理手順の一例）
図１７は、実施の形態にかかるストレージ制御装置１０２のエラーハンドリング処理手順の一例を示すフローチャートである。図１７において、まず、ストレージ制御装置１０２は、サーバ１０１から入出力要求を受信したか否かを判断する（ステップＳ１７０１）。サーバ１０１から入出力要求を受信しない場合（ステップＳ１７０１：Ｎｏ）、ストレージ制御装置１０２の処理はステップＳ１７０１に戻る。
【０１３３】
サーバ１０１から入出力要求を受信した場合（ステップＳ１７０１：Ｙｅｓ）、ストレージ制御装置１０２は、要求された入出力処理を行う（ステップＳ１７０２）。ストレージ制御装置１０２は、入出力処理が正常か否かを判断する（ステップＳ１７０３）。入出力処理が正常である場合（ステップＳ１７０３：Ｙｅｓ）、ストレージ制御装置１０２は、サーバ１０１に入出力要求の正常応答を通知し（ステップＳ１７０８）、ストレージ制御装置１０２の処理は終了する。
【０１３４】
入出力処理が正常でない場合（ステップＳ１７０３：Ｎｏ）、ストレージ制御装置１０２は、入出力エラーのエラー種別を特定する（ステップＳ１７０４）。ストレージ制御装置１０２は、特定したエラー種別のタイムアウト時間をタイムアウト管理テーブル５０１から取得する（ステップＳ１７０５）。
【０１３５】
ストレージ制御装置１０２は、取得したタイムアウト時間に基づき待ち合わせを行う（ステップＳ１７０６）。例えば、ストレージ制御装置１０２は、サーバ１０１からの入出力要求から、取得したタイムアウト時間が経過するまで待ち合わせる。待ち合わせ後、ストレージ制御装置１０２は、サーバ１０１に入出力エラーを通知する（ステップＳ１７０７）。
【０１３６】
これにより、本フローチャートにおける一連の処理は終了する。本フローチャートを実行することで、ストレージ制御装置１０２で入出力エラーが発生した際に、エラー種別に対応するタイムアウト時間でサーバ１０１に入出力エラーが通知される。
【０１３７】
以上説明したように、サーバ１０１は、エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置１０２と複数のパスで接続される。サーバ１０１は、入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、エラー種別に対応したタイマ値とを関連付けて記憶する。サーバ１０１は、複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答をストレージ制御装置１０２から受け付けたことに応じて、応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、入出力に用いるパスを切り替える。
【０１３８】
これにより、サーバ１０１は、エラー種別に対応した、パスの切り替えを行うか否かを示すパス切替情報を取得できる。このため、サーバ１０１は、エラーに応じた適切な処理を行うことができる。
【０１３９】
また、サーバ１０１は、同一パスでリトライを行うか否かを示すリトライ情報と、エラー種別に対応したタイマ値とを関連付けて記憶する。サーバ１０１は、入出力要求に対するエラー応答をストレージ制御装置１０２から受け付けたことに応じて、応答時間に対応するタイマ値に関連付けられたリトライ情報に基づいて、同一パスでリトライを行う。
【０１４０】
これにより、サーバ１０１は、エラー種別に対応した、同一パスでリトライを行うか否かを示すリトライ情報を取得できる。このため、サーバ１０１は、エラー種別に応じて、同一パスでリトライを行うことができる。
【０１４１】
ここで、サーバ１０１は、リトライ情報が同一パスでリトライを行わないことを示す場合、または、同一パスでのリトライがエラー応答の場合、パス切替情報に基づいて、入出力に用いるパスを切り替えることができる。
【０１４２】
また、サーバ１０１は、複数のパスのそれぞれのパスと、パスの状態に対応するカウンタ値とを関連付けたパスエラーカウンタテーブル８０１を記憶することができる。さらに、サーバ１０１は、エラーハンドリング管理テーブル６０１に、エラー種別に対応したエラーカウンタ加算値（パス）を記憶することができる。サーバ１０１は、入出力要求に対するエラー応答をストレージ制御装置１０２から受け付けたことに応じて、エラーカウンタ加算値（パス）を、入出力要求を発行したパスに関連付けられたエラーカウンタ値に加算することができる。サーバ１０１は、加算したエラーカウンタ値に基づいて、入出力要求を発行したパスの状態を遷移することができる。
【０１４３】
これにより、サーバ１０１は、パスの状態を管理することができる。このため、サーバ１０１は、パスの状態を上位に通知することができる。また、サーバ１０１は、入出力要求を発行するパスを選択する際、エラーカウンタ値に基づいて、パスを決定することができる。
【０１４４】
また、サーバ１０１は、論理ボリュームと、論理ボリュームの状態に対応するカウンタ値とを関連付けたＬＵＮエラーカウンタテーブル７０１を記憶することができる。さらに、サーバ１０１は、エラーハンドリング管理テーブル６０１に、エラー種別に対応したエラーカウンタ加算値（ＬＵＮ）を記憶することができる。サーバ１０１は、入出力要求に対するエラー応答をストレージ制御装置１０２から受け付けたことに応じて、エラーカウンタ加算値（ＬＵＮ）を、入出力要求を発行した論理ボリュームに関連付けられたエラーカウンタ値に加算することができる。サーバ１０１は、加算したエラーカウンタ値に基づいて、入出力要求を発行した論理ボリュームの状態を遷移することができる。
【０１４５】
これにより、サーバ１０１は、論理ボリュームの状態を管理することができる。このため、サーバ１０１は、論理ボリュームの状態を上位に通知することができる。
【０１４６】
また、サーバ１０１は、ストレージ制御装置１０２からエラー種別を取得し、取得したエラー種別に対応したタイマ値をストレージ制御装置１０２に送信することができる。また、ストレージ制御装置１０２は、サーバ１０１にエラー種別を送信し、送信したエラー種別に対応したタイマ値をサーバ１０１から受信し、受信したタイマ値でタイムアウト時間を変更することができる。
【０１４７】
これにより、サーバ１０１とストレージ制御装置１０２は、エラー種別に対応したタイマ値とタイムアウト時間とを同じ値にできる。
【０１４８】
なお、本実施の形態で説明した情報処理プログラムおよびストレージ制御プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムおよび本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本情報処理プログラムおよび本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１５０】
（付記１）エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、前記エラー種別に対応したタイマ値とを関連付けて記憶する記憶部と、
前記複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、前記入出力に用いるパスを切り替える制御部と、
を有することを特徴とする情報処理装置。
【０１５１】
（付記２）前記記憶部は、
前記タイマ値と、同一パスでリトライを行うか否かを示すリトライ情報とを関連付けてさらに記憶し、
前記制御部は、
前記入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたリトライ情報が、同一パスでリトライを行うことを示す場合、同一パスでリトライを行い、同一パスでリトライを行わないことを示す場合、または、前記同一パスでのリトライがエラー応答の場合、前記パス切替情報に基づいて、前記入出力に用いるパスを切り替えることを特徴とする付記１に記載の情報処理装置。
【０１５２】
（付記３）前記記憶部は、
前記複数のパスのそれぞれのパスと、前記パスの状態に対応するカウンタ値とを関連付けてさらに記憶し、および、前記タイマ値と、前記エラー種別に対応した加算値とを関連付けてさらに記憶し、
前記制御部は、
前記入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられた加算値を、前記入出力要求を発行したパスに関連付けられたカウンタ値に加算し、加算したカウンタ値に基づいて、前記入出力要求を発行したパスの状態を遷移することを特徴とする付記１または２に記載の情報処理装置。
【０１５３】
（付記４）前記制御部は、
前記ストレージ制御装置から前記エラー種別を取得し、取得した前記エラー種別に対応したタイマ値を前記ストレージ制御装置に送信することを特徴とする付記１〜３のいずれか一つに記載の情報処理装置。
【０１５４】
（付記５）エラー種別と、前記エラー種別に対応したタイムアウト時間とを関連付けて記憶する記憶部と、
自装置に接続される複数のパスのうち入出力に用いるパスの切り替えを、入出力要求を発行してからエラー応答を受け付けるまでの応答時間に基づいて行う情報処理装置からの入出力要求に対するエラーを検出したことに応じて、前記入出力要求を受け付けてから前記エラーのエラー種別と関連付けられたタイムアウト時間が経過した時に、前記情報処理装置にエラー応答をする制御部と、
を有することを特徴とするストレージ制御装置。
【０１５５】
（付記６）前記制御部は、
前記情報処理装置に前記エラー種別を送信し、前記送信したエラー種別に対応したタイマ値を前記情報処理装置から受信し、受信したタイマ値で前記タイムアウト時間を変更することを特徴とする付記５に記載のストレージ制御装置。
【０１５６】
（付記７）コンピュータに、
エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、前記エラー種別に対応したタイマ値とを関連付けて記憶し、
前記複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、前記入出力に用いるパスを切り替える、
処理を実行させることを特徴とする情報処理プログラム。
【０１５７】
（付記８）コンピュータに、
エラー種別と、前記エラー種別に対応したタイムアウト時間とを関連付けて記憶し、
自装置に接続される複数のパスのうち入出力に用いるパスの切り替えを、入出力要求を発行してからエラー応答を受け付けるまでの応答時間に基づいて行う情報処理装置からの入出力要求に対するエラーを検出したことに応じて、前記入出力要求を受け付けてから前記エラーのエラー種別と関連付けられたタイムアウト時間が経過した時に、前記情報処理装置にエラー応答をする、
処理を実行させることを特徴とするストレージ制御プログラム。
【０１５８】
（付記９）コンピュータに、
エラー種別に対応したタイムアウト時間でエラー応答するストレージ制御装置に接続される複数のパスのうち入出力に用いるパスの切り替えを行うか否かを示すパス切替情報と、前記エラー種別に対応したタイマ値とを関連付けて記憶し、
前記複数のパスのいずれかのパスを介して発行された入出力要求に対するエラー応答を前記ストレージ制御装置から受け付けたことに応じて、前記入出力要求を発行してから前記エラー応答を受け付けるまでの応答時間に対応するタイマ値に関連付けられたパス切替情報に基づいて、前記入出力に用いるパスを切り替える、
処理を実行させる情報処理プログラムを記録したことを特徴とする前記コンピュータに読み取り可能な記録媒体。
【０１５９】
（付記１０）コンピュータに、
エラー種別と、前記エラー種別に対応したタイムアウト時間とを関連付けて記憶し、
自装置に接続される複数のパスのうち入出力に用いるパスの切り替えを、入出力要求を発行してからエラー応答を受け付けるまでの応答時間に基づいて行う情報処理装置からの入出力要求に対するエラーを検出したことに応じて、前記入出力要求を受け付けてから前記エラーのエラー種別と関連付けられたタイムアウト時間が経過した時に、前記情報処理装置にエラー応答をする、
処理を実行させるストレージ制御プログラムを記録したことを特徴とする前記コンピュータに読み取り可能な記録媒体。
【符号の説明】
【０１６０】
１０１  サーバ
１０２  ストレージ制御装置
１０３  記憶装置
９０１  タイムアウト管理テーブル取得部
９０２  エラーハンドリング設定部
９０３  エラーハンドリング処理部
１００１  タイムアウト管理テーブル返却部
１００２  タイムアウト管理テーブル設定部
１００３  エラーハンドリング処理部
【図１】
0006390281.tif 000002
【図２】
0006390281.tif 000003
【図３】
0006390281.tif 000004
【図４】
0006390281.tif 000005
【図５】
0006390281.tif 000006
【図６】
0006390281.tif 000007
【図７】
0006390281.tif 000008
【図８】
0006390281.tif 000009
【図９】
0006390281.tif 000010
【図１０】
0006390281.tif 000011
【図１１】
0006390281.tif 000012
【図１２】
0006390281.tif 000013
【図１３】
0006390281.tif 000014
【図１４】
0006390281.tif 000015
【図１５】
0006390281.tif 000016
【図１６】
0006390281.tif 000017
【図１７】
0006390281.tif 000018