(57)【要約】【課題】ＩＯ要求のスループットを向上させる。【解決手段】情報処理装置とストレージ装置に設定された複数の論理ユニットのそれぞれが、複数の論理的なパスで接続されたシステムにおいて、情報処理装置は、データのミラーリングを行うために複数の論理ユニットに対してデータの書き込み要求を発行する。また情報処理装置は、パスの状態を監視し、パスの状態変化があったときに論理ユニットに接続された正常なパスを求めて読出し要求の対象となる論理ユニットを決定し、決定された論理ユニットに対してデータの読出し要求を発行する。【選択図】図１
2006154880.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域を有するストレージ装置と、
前記ストレージ装置と接続され、アクセス要求を発行する情報処理装置と
情報処理装置から発行されたアクセス要求を前記記憶領域に伝達するための複数のアクセス経路を有する情報処理システムであって、
前記情報処理装置は、
同一のデータが書き込まれる複数の記憶領域を対応付けて記憶する記憶装置と、
前記記憶領域へのアクセス経路の状態変化を検出したときに、割当可能なアクセス経路が多い記憶領域をデータの読出し要求の対象とする処理部とを有することを特徴とする情報処理システム。
【請求項２】
前記アクセス経路の前記状態変化は、正常な状態から障害の状態への変化であることを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記アクセス経路の前記状態変化は、障害の状態から正常な状態への変化であることを特徴とする請求項１記載の情報処理システム。
【請求項４】
記憶領域を有するストレージ装置と、
前記ストレージ装置に接続された複数のアクセス経路と、
前記アクセス経路を介してアクセス要求を発行する情報処理装置とを有する情報処理システムであって、
前記情報処理装置は、
データの書き込み及び読み出しの対象となる記憶領域を第１の記憶領域とし、前記第１の記憶領域と同一のデータの書き込み対象となる記憶領域を第２の記憶領域として記憶された記憶装置と、
前記第２の記憶領域に対する正常なアクセス経路の数が前記第１の記憶領域に対する正常なアクセス経路の数よりも多い場合に、前記第２の記憶領域を新たな第１の記憶領域として前記記憶装置に記憶する処理を実行する処理部とを有することを特徴とする情報処理システム。
【請求項５】
前記情報処理装置の前記処理部は、アクセス経路の障害を検出したときに前記処理を実行することを特徴とする請求項４記載の情報処理システム。
【請求項６】
前記情報処理装置の前記処理部は、アクセス経路の障害の回復を検出したときに前記処理を実行することを特徴とする請求項４記載の情報処理システム。
【請求項７】
前記情報処理装置の前記処理部は、前記記憶装置に記憶された新たな前記第１の記憶領域に対して読み出し要求を発行する処理を実行することを特徴とする請求項４記載の情報処理システム。
【請求項８】
前記第１の記憶領域と前記第２の記憶領域は、それぞれ異なった前記ストレージ装置の記憶領域であることを特徴とする請求項１記載の情報処理システム。
【請求項９】
前記情報処理装置の前記記憶装置は障害情報が記憶され、前記処理部は、前記記憶装置に記憶された障害情報から正常なアクセス経路を求め、前記第２の記憶領域に対する正常なアクセス経路の数が前記第１の記憶領域に対する正常なアクセス経路の数よりも多い場合に、前記第２の記憶領域を新たな第１の記憶領域として前記記憶装置に記憶する処理を実行することを特徴とする請求項４記載の情報処理システム。
【請求項１０】
前記障害情報は、アクセス経路の瞬断によって生じる瞬断エラーであることを特徴とする請求項９に記載の情報処理システム。
【請求項１１】
前記障害情報は、アクセス経路の性能劣化によって生じる性能エラーであることを特徴とする請求項９に記載の情報処理システム。
【請求項１２】
ストレージ装置の複数の記憶領域と情報処理装置との間に複数のアクセス経路が設定され、情報処理装置が同一のデータが格納された複数の前記記憶領域へアクセスするアクセス方法であって、
アクセス経路の状態が変化したときに、複数の前記記憶領域に対して割当可能なアクセス経路を求め、
割当可能なアクセス経路の多い記憶領域に対して前記情報処理装置がデータの読出しのアクセス要求を発行する
ことを特徴とするアクセス方法。
【請求項１３】
前記状態の変化は、アクセス経路が正常な状態から障害の状態への変化であることを特徴とする請求項１２記載のアクセス方法。
【請求項１４】
前記状態の変化は、アクセス経路が障害の状態から正常な状態への変化であることを特徴とする請求項１２記載のアクセス方法。
【請求項１５】
ストレージ装置の複数の記憶領域それぞれに対して情報処理装置がアクセス可能なアクセス経路が設定され、前記記憶領域を情報処理装置で管理する記憶領域の管理方法であって、
データの書き込み要求及び読み出し要求の対象となる記憶領域を第１の記憶領域に、第１の記憶領域と同一のデータの書き込み要求の対象となる記憶領域を第２の記憶領域に設定するステップと、
アクセス経路の障害情報の検出によって、前記第１の記憶領域と前記第２の記憶領域のそれぞれに対して割当可能なアクセス経路を求めるステップと、
割当可能なアクセス経路が多い記憶領域を新たな第１の記憶領域に設定するステップとを有することを特徴とする記憶領域の管理方法。
【請求項１６】
前記管理方法は、割当可能なアクセス経路が少ない記憶領域を第２の記憶領域に設定するステップを有することを特徴とする請求項１５記載の記憶領域の管理方法。
【請求項１７】
前記管理方法は、アクセス経路の障害回復の検出によって、前記第１の記憶領域と前記第２の記憶領域のそれぞれに対して割当可能なアクセス経路を求めるステップと、
割当可能なアクセス経路が多い記憶領域を新たな第１の記憶領域に設定するステップとを有することを特徴とする請求項記憶領域の管理方法。
【請求項１８】
記憶領域を有するストレージ装置と、
前記ストレージ装置と接続され、アクセス要求を発行する情報処理装置と、
情報処理装置から発行されたアクセス要求を前記記憶領域に伝達するための複数のアクセス経路とを有する情報処理システムであって、
前記情報処理装置は、
障害が発生したアクセス経路及び障害が発生したアクセス経路の一部を共通にする他のアクセス経路以外のアクセス経路にアクセス要求を割当てる処理部を有することを特徴とする情報処理システム。
【請求項１９】
請求項１８記載の情報処理システムにおいて、
障害が発生したアクセス経路の一部を共通にする他のアクセス経路は、障害が発生したアクセス経路の情報処理装置とストレージ装置との間のアクセス経路を共通にするアクセス経路であることを特徴とする情報処理システム。
【請求項２０】
請求項１８記載の情報処理システムにおいて、
前記処理部は、障害が発生したアクセス経路に障害回復を確認するための信号を送信し、障害が回復されたことを検出した場合には、当該アクセス経路とアクセスを割当てるアクセス経路の候補とすることを特徴とする情報処理システム。
【請求項２１】
ストレージ装置の記憶領域と情報処理装置との間に複数のアクセス経路が設定され、アクセス要求を発行するためのアクセス経路を選択するアクセス経路選択方法であって、
障害が発生したアクセス経路を検出し、
障害が発生した前記アクセス経路と、障害が発生した前記アクセス経路と一部を共通にする他のアクセス経路とをアクセス要求に対して割当てられるアクセス経路の対象外とすることを特徴とするアクセス経路選択方法。
【請求項２２】
ストレージ装置の記憶領域と情報処理装置との間に複数のアクセス経路が設定され、アクセス要求を発行するためのアクセス経路を選択するアクセス経路選択方法であって、
障害が発生したアクセス経路を検出し、
障害が発生した前記アクセス経路と、障害が発生した前記アクセス経路と一部を共通にする他のアクセス経路とをアクセス要求に対して割当てられるアクセス経路の対象外とすることを特徴とするアクセス経路選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及びアクセス方法に関し、特に障害の検出に関する。
【背景技術】
【０００２】
近年、情報処理システムで取り扱われるデータ量が増大している。大容量化した記憶装置では、記憶容量に見合うだけの入出力性能と信頼性を確保する必要がある。そのため記憶装置への論理パス（入出力経路）を多重化し、記憶装置へのデータ入出力要求（ＩＯ要求）を論理パスに割当てるものが開発されている。
【０００３】
このような技術に関するものとして、コンピュータとストレージ装置を複数のパスで接続されたシステムで信頼性を向上させるために、それぞれのパスに対するＩＯ要求数からそれぞれのパスに対する障害の可能性を求め、障害の可能性が小さいパスを選択するものがある（例えば、特許文献１。）。
【０００４】
【特許文献１】ＵＳＰ６８０２０２１
【発明の開示】
【発明が解決しようとする課題】
【０００５】
障害の発生あるいは障害の発生の可能性に従って、複数のパスのいずれかを選択する構成とすることで、信頼性を向上させることができる。
【０００６】
しかしながら、障害の発生したパスを除いたパスにＩＯ要求を割当てたり、障害の発生の可能性が低いパスにＩＯ要求を割当てて信頼性を向上させたとしても、そのパスにＩＯ要求が集中することになるので、スループットが低下してしまう。
【０００７】
コンピュータなどの情報処理装置とストレージ装置が多数のパスで接続された構成をとるシステムにおいて、ストレージ装置へのデータの格納方法は、様々な方法がある。例えば、重要なデータに対しては、２重にデータを格納するデータのミラーリングが行われる。更に、データのミラーリングを行う場合でも、ストレージ装置でミラーリングを制御する方法や、情報処理装置でミラーリングを制御する方法がある。
【０００８】
このように、一つのシステムに対していろいろな実現方法が存在する。
【０００９】
本発明はこのような中で、情報処理装置でミラーリングを制御する構成において、ＩＯ要求のスループットをより向上させることを目的とする。
【課題を解決するための手段】
【００１０】
そのために、情報処理装置とストレージ装置に設定された複数の論理ユニット（記憶領域）とが複数の論理的なパス（アクセス経路）で接続されたシステムにおいて、情報処理装置から複数の論理ユニットに対してデータの書き込み要求を発行するようにし、パスの状態に応じて読出し要求の対象となる論理ユニットを選択するようにしている。
【００１１】
また、情報処理装置とストレージ装置に設定された複数の論理ユニット（記憶領域）とが、複数の論理的なパス（アクセス経路）で接続されたシステムにおいて、論理的なパスに障害が発生したのを検知すると、障害が発生した論理的なパスの一部を共有する他の論理的なパスを特定し、障害が発生した論理的なパス及び特定された論理的なパス以外のパスにＩＯ要求を割当てるようにしている。
【発明の効果】
【００１２】
本発明によると、アクセス要求に対するスループットを向上させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
【００１４】
図１は、情報処理システムの構成の一例を示すブロック図である。
【００１５】
情報処理システムは、情報処理装置１００、ストレージ装置１２０とを備える。なお、情報処理システムは、２つ以上の情報処理装置を備えるものであってもよい。
【００１６】
情報処理装置１００には、ＳＡＮ（Storage Area Network）１１０を介してストレージ装置１２０が接続されている。情報処理装置１００とストレージ装置１２０との間のＳＡＮを介する通信は、一般にファイバチャネルプロトコル（Fiber Channel Protocol）に従って行われる。なお、情報処理装置１００とストレージ装置２００とは、必ずしもＳＡＮで接続する必要はなく、ＬＡＮ等のネットワークを介して接続されてもよいし、ＳＣＳＩ（Small Computer System Interface）によって直接接続されてもよい。
【００１７】
情報処理装置１００は、ＣＰＵやメモリ等を備えたコンピュータ（パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等）であり、各種アプリケーションプログラムを実行する。情報処理装置１００は、アプリケーション１０１、論理ユニット管理部１０２、パス管理部１０３、ホストバスアダプタ（ＨＢＡ）１０４等を備えている。
【００１８】
ＨＢＡ１０４は、例えばＳＣＳＩ（Small Computer System Interface）アダプタ、ファイバチャネルアダプタ等のＨＢＡ（Host Bus Adapter）である。ＨＢＡ１０４は、情報処理装置１００に一つ又は複数個設けられ、ＳＡＮ１１０を介してストレージ装置１２０と通信する。図１の例では、情報処理装置１００に４つのＨＢＡ１０４が設けられている。ここで、ＨＢＡ１、ＨＢＡ２、ＨＢＡ３、ＨＢＡ４は、それぞれ、ＨＢＡ識別子（ＨＢＡ−ＩＤ）が「１」、「２」、「３」、「４」のＨＢＡ１０４である。情報処理装置１００は、いずれのＨＢＡ１０４を使用してもストレージ装置１２０と通信することができる。
【００１９】
ストレージ装置１２０は、例えば、複数のディスクドライブ及びそれらを制御するコントローラ（図示省略）等を備えたディスクアレイ装置である。ストレージ装置１２０には、一つ以上の論理ユニット（ＬＵ）１２１が設定される。
【００２０】
論理ユニット１２１は、情報処理装置１００が一つのディスクドライブとして認識する単位である。論理ユニット１２１は、論理的には一つのディスクドライブであるが、物理的には、一つのディスクドライブの一部の領域又は複数のディスクドライブの一部若しくは全部の領域であってよい。図１の例では、ストレージ装置Ａ１２０ａに３つの論理ユニット１２１、ストレージ装置Ｂ１２０ｂに２つの論理ユニット１２１が設定されている。ここで、ストレージ装置Ａ１２０のＬＵ１からＬＵ３は、それぞれ、ＬＵ識別子（ＬＵ−ＩＤ）が「０１０１」から「０１０３」の論理ユニット１２１である。また、ストレージ装置Ｂ１２０ｂのＬＵ１からＬＵ２は、それぞれ、ＬＵ識別子（ＬＵ−ＩＤ）が「０２０１」、「０２０２」の論理ユニット１２１である。
【００２１】
ストレージ装置１２０は、さらに、一つ以上のアダプタ（ＡＤＰ）１２２を備える。ＡＤＰ１２２は、ＳＡＮ１１０を介して情報処理装置１００と通信する。図１の例では、ストレージ装置１２０に、それぞれ２つのＡＤＰ１２２が設けられている。ここで、ストレージ装置Ａ１２０ａのＡＤＰ１、ＡＤＰ２は、それぞれ、ＡＤＰ識別子（ＡＤＰ−ＩＤ）が「０１０１」、「０１０２」のＡＤＰ１２２である。また、ストレージ装置Ｂ１２０ｂのＡＤＰ１、ＡＤＰ２は、それぞれ、ＡＤＰ識別子（ＡＤＰ−ＩＤ）が「０２０１」、「０２０２」のＡＤＰ１２２である。ストレージ装置１２０は、いずれのＡＤＰ１２２を使用しても情報処理装置１００と通信することができる。
【００２２】
ＡＤＰ１２２は、通常、キャッシュメモリ（図示省略）を備える。ＡＤＰ１２２は、情報処理装置１００からデータの読み出し要求を受けたとき、その読み出し要求の対象のデータがキャッシュメモリ内に存在すれば、論理ユニット１２１へアクセスせず、キャッシュメモリ内のデータを情報処理装置１００へ返送する。その結果、論理ユニット１２１へのアクセス（すなわち、論理ユニット１２１を構成するディスクドライブへのアクセス）が省略され、アクセス速度が向上する。なお、同様のキャッシュメモリがＨＢＡ１０４に設けられていてもよい。
【００２３】
各ＨＢＡ１０４は、いずれのＡＤＰ１２２とも通信することができる。同様に、各ＡＤＰ１２２は、いずれのＨＢＡ１０４とも通信することができる。
【００２４】
ここで、パスとは、情報処理装置１００から論理ユニット１２１までの通信経路又はデータアクセス経路である。図１の例では、４つのＨＢＡ１０４と、１つのストレージ装置に２つのＡＤＰ１２２があるため、情報処理装置１００からストレージ装置Ａ１２０ａの１つの論理ユニット１２１に至るパスは、８通り存在する。パスは、パスＩＤによって識別される。パスＩＤは、経由するＨＢＡ１０４、ＡＤＰ１２２及びＬＵ１２１の識別子（ＨＢＡ−ＩＤ、ＡＤＰ−ＩＤ、ＬＵ−ＩＤ）によって定められる。例えば、ＨＢＡ１及びストレージ装置ＡのＡＤＰ１を経由してＬＵ２に至るパスのパスＩＤは、「１０１０１０１０２」である。
【００２５】
ストレージ装置１２０に記憶されているデータへの、情報処理装置１００からのアクセスは、例えば、データ書き込み要求又はデータ読み出し要求等のＩＯ要求によって行われる。このＩＯ要求は、様々なアプリケーション１０１により発行される。アプリケーション１０１から発行されるＩＯ要求には、ヘッダ、記憶装置、ＬＵ管理ＩＤ、アドレスなどが指定されている。ヘッダには、ＩＯ要求を送信する情報処理装置１００の識別子が記録されている。記憶装置には、ＩＯ要求の処理対象となるストレージ装置の識別子が記録されている。ＬＵ管理ＩＤは、後述するように論理ユニット管理部１０２で論理ユニットを管理するために設定された識別子であり、ＬＵ管理ＩＤには、この識別子が記録されている。アドレスには、データの読み出し又は書き込み等の開始位置（先頭アドレス）が記録されている。なお、ＩＯ要求がデータの書き込み要求である場合には、ＩＯ要求に書き込まれるデータが付加される。
【００２６】
論理ユニット管理部１０２は、情報処理装置１００がアクセスできる論理ユニットをＬＵ管理ＩＤで管理している。これにより、２つの論理ユニットに同じＬＵ管理ＩＤを割当てることで、２つの論理ユニットでペアを構成することができる。
【００２７】
論理ユニット管理部１０２は、ＩＯ要求を受け取ると、ＬＵ管理ＩＤから特定される論理ユニットのＬＵ−ＩＤに更新したＩＯ要求を発行する。つまり、ＩＯ要求（ヘッダ、記憶装置、ＬＵ管理ＩＤ、アドレス、…）をＩＯ要求（ヘッダ、記憶装置、ＬＵ―ＩＤ、アドレス、…）に更新する。ＩＯ要求が書き込み要求であり、ＬＵ管理ＩＤから特定される論理ユニットが２つある場合は、論理ユニット管理部１０２でそれぞれの論理ユニットに対するＩＯ要求が生成される。これにより、２つの論理ユニットに同じデータが書き込まれ、データのミラーリングが行われる。
【００２８】
一方、ＩＯ要求が読み出し要求であり、ＬＵ管理ＩＤから特定される論理ユニットが２つあったとしても、いずれか一方の論理ユニットに対するＩＯ要求しか発行されない。論理ユニット管理部１０２は、ペアを構成する２つの論理ユニットをプライマリ、セカンダリとして管理し、書き込み要求は、プライマリ、セカンダリの論理ユニットに対して発行され、読出し要求はプライマリの論理ユニットに対して発行される。
【００２９】
論理ユニット管理部１０２から発行されたＩＯ要求は、パス管理部１０３によって、各パスに分散され（例えば、均等に割当てられ）、ストレージ装置１２０へ送信される。このように複数のＩＯ要求を並列処理することによって、情報処理システムの性能を向上させることができる。
【００３０】
データのミラーリングが行える情報処理装置１００は、ペアを構成する論理ユニットのいずれかのパスの障害を検出すると正常なパスが多い論理ユニットをプライマリに設定する。別の言い方をすると、プライマリの論理ユニットの正常なパスよりも、セカンダリの論理ユニットの正常なパスの方が多い場合に、論理ユニットのプライマリとセカンダリとを切替える。このようにすることで、プライマリの論理ユニットのパスに障害が発生しても新たに割当てるパスが多いので、スループットの低下をより少なくすることができる。
【００３１】
図２は、論理ユニット管理部１０２、パス管理部１０３をより詳細に示したものである。
【００３２】
ここで、ＬＵ管理テーブル３００、パステーブル６００、パス障害テーブル９００、稼動統計テーブル１１００、ＩＯテーブル１２００は、情報処理装置１００のメモリに格納されているテーブルである。図２では、どのように管理されているかを示すために、これらのテーブルを図示している。
【００３３】
論理ユニット管理部１０２は、ＬＵ管理テーブル３００（図３）を管理している。アプリケーション１０１からＩＯ要求を受けた論理ユニット管理部１０２は、ＩＯ要求に含まれるＬＵ管理ＩＤでＬＵ管理テーブル３００を検索し、アクセス要求の対象となる論理ユニット１２１を特定する。ＬＵ管理テーブル３００は、論理ユニット１２１のＬＵ−ＩＤが登録され、ペアを構成している場合には、論理ユニット１２１がプライマリであるか、セカンダリであるかが設定されている。
【００３４】
ＩＯ要求の対象となる論理ユニットがペアを構成している場合、論理ユニット管理部１０２は書き込み要求であれば、プライマリ・セカンダリそれぞれの論理ユニットに対するＩＯ要求を生成し、読み出し要求であればプライマリの論理ユニットに対するＩＯ要求を生成する。
【００３５】
論理ユニット切替部２１１は、パス管理部１０３から論理ユニット１２１に対する可用性情報を受け取って、ペアを構成する論理ユニットにプライマリ、セカンダリを設定する。これについては、後述する。
【００３６】
パス管理部１０３のＩＯ要求受付部２２１は、論理ユニット管理部１０２によって発行されるＩＯ要求を受け取る。ＩＯ終了通知部２２２は、ＩＯ要求受付部２２１が論理ユニット管理部１０２から受け取ったＩＯ要求に対する処理が終了したＩＯ終了情報あるいは可用性情報を論理ユニット管理部１０２へ送る。
【００３７】
ＩＯ割当部２２３は、ＩＯ要求受付部２２１から受け取ったＩＯ要求を適切なパスに割当てる。ＩＯ割当部２２３は、ＩＯ要求を受け取ると、パステーブル６００（図６）からＩＯ要求の対象となっている論理ユニットに対する正常なパス（パス障害情報が「０」のパス）を抽出する。尚、パステーブル６００は、ＨＢＡ１０４から論理ユニット１２１に至る全てのパス情報が登録されている。
【００３８】
ＩＯ割当部２２３は、負荷分散機能によって、ＩＯ要求を各パスに均等に分散させるように、選択された正常なパスの中から割当てるパスを決定し、ＩＯ要求を割当てる。例えば、ＩＯ要求を処理していないパス、又はＩＯ要求の処理が終了しているパスに割当てる。
【００３９】
ＩＯ割当部２２３は、割当てたパスに対するＩＯ要求が正常に終了したＩＯ終了情報を受け取ると、ＩＯ終了通知部２２２へ送る。なお、ＩＯ要求が正常に終了しなかった場合（障害検出部２２４で障害が検出された場合）、ＩＯ割当部２２３はパステーブル６００から正常なパスを抽出し、負荷分散機能によって、ＩＯ要求をパスに割当てる。
【００４０】
また、ＩＯ割当部２２３は、障害検出部２２４及び障害回復検出部２２５を備えており、これらによってストレージ装置に対するパス状態の変更を検出するパス状態確認機能を実現している。具体的には、障害検出部２２４は、ユーザがパスをoffline状態（パスに障害が発生し、ＩＯ要求が正常に処理できない閉塞状態）にする操作をした、又は、ＩＯ要求の処理中にパスの障害を検出した場合に、パスの状態が変更されたものとしてパスＩＤを含む障害情報をパス情報管理部２２６に通知する。また、障害回復検出部２２５は、パスの障害の回復を検出して、障害回復情報をパス情報管理部２２６に通知する。具体的には、障害検出部２２４によって障害が検出されたパスに対して、障害回復検出部２２５は、一定期間毎にＩＯ処理を行い、正常に処理できたか否かで、障害が回復しているかを確認する。正常に処理できた場合には、障害回復検出部２２５は、パスＩＤを含む障害回復情報をパス情報管理部２２６に通知する。
【００４１】
パス情報管理部２２６は、障害情報又は障害回復情報を受け取ると、パステーブル６００を更新する。具体的には、障害情報を受け取った場合には、障害情報に含まれるパスＩＤから当該パスＩＤに対するパス障害情報に「１」を設定し、障害回復情報を受け取った場合には、障害回復情報に含まれるパスＩＤから当該パスＩＤに対するパス障害情報に「０」を設定する。
【００４２】
次に、パス情報管理部２２６は、パステーブル６００を参照して、パス障害情報が変更された論理ユニットに対する正常なパスの数を求めて、ＬＵ−ＩＤとこのＬＵ−ＩＤに対する正常なパスの数を含む可用性情報をＩＯ終了通知部２２２へ送る。
【００４３】
ＩＯ終了通知部２２２は、ＩＯ割当部２２３から送られてきたアクセス終了情報、またはパス情報管理部２２６から送られてきた可用性情報を、論理ユニット切替部２１１へ送る。
【００４４】
論理ユニット管理部１０２の論理ユニット切替部２１１は、ＬＵ管理テーブル３００を検索し、可用性情報に含まれるＬＵ−ＩＤからペアを構成する論理ユニットであるか判定する。可用性情報に含まれるＬＵ−ＩＤによって特定される論理ユニットが、ペアを構成する論理ユニットの一方である場合には、ＬＵ管理テーブル３００からペアを構成するそれぞれの論理ユニットの正常なパスの数を比較し、正常なパスの数が多い方の論理ユニットをプライマリの論理ユニットとしてＬＵ管理テーブル３００に登録（更新）する。また、正常なパスの数が少ない方の論理ユニットをセカンダリの論理ユニットとしてＬＵ管理テーブル３００に登録（更新）する。可用性情報は、障害を検出した場合、障害が回復した場合にパス管理部１０３から発行されるので、論理ユニット切替部２１１は、障害の発生又は障害の回復のたびにペアを構成する論理ユニット間でプライマリ・セカンダリの切替が行われる。
【００４５】
プライマリの論理ユニットはセカンダリの論理ユニットに比べてアクセス頻度が高くなるので、割当て可能なパスが多い方をプライマリの論理ユニットとすることで、論理ユニットへのアクセスができないといったスループットの低下あるいは障害の発生率を低くすることが可能となる。
【００４６】
また、パス管理部１０３は、ユーザからの指定あるいは所定の周期でパスに発生した過去の障害、アクセス要求によりパスに生じた過去の負荷に基づいて可用性情報を発行することができるようになっている。
【００４７】
ＩＯテーブル１２００は、ＩＯ割当部２２３から発行されたＩＯ要求、該ＩＯ要求に対する応答、障害検出部２２４で検出された障害の情報、障害回復検出部２２５から発行されたＩＯ要求と、該ＩＯに対する応答等が、それぞれ時刻情報と共に登録されている。
【００４８】
障害統計管理部２２８は、ＩＯテーブル１２００に登録されたＩＯ要求、ＩＯ要求に対する応答から、どのような障害（瞬断エラー、累積エラー）が発生したかを分析し、パス障害テーブル９００（図９）を生成する。
【００４９】
また、稼動統計管理部２２９は、ＩＯテーブル１２００に登録されたＩＯ要求から、ＩＯ処理で使用したパスへ送付したデータ量と、当該ＩＯ処理に要した時間から稼動統計テーブル１１００（図１１）を生成する。更に、稼動統計管理部２２９は、生成された稼動統計テーブル１１００を参照し、性能劣化と判定されるパスを性能エラーとしてパス障害テーブル９００に登録する。
【００５０】
障害履歴管理部２２７は、パス障害テーブル９００に登録されたエラー情報から、それぞれの論理ユニットに対する安全性を求め、可用性情報としてＬＵ−ＩＤと当該論理ユニットに対する安全性をＩＯ終了通知部２２２へ送る。なお、安全性については後述する。
【００５１】
論理ユニット切替部２１１では、ＩＯ終了通知部２２２から送られてきた可用性情報がペアを構成する論理ユニットに関するものである場合に、安全性の高い論理ユニットをプライマリの論理ユニットに設定し、安全性の低い論理ユニットをセカンダリの論理ユニットに設定する。
【００５２】
障害履歴管理部２２７から送られた可用性情報によって、ＬＵ管理テーブル３００が更新されているので、障害履歴管理部２２７は、パス情報管理部２２６へ初期値を送るよう指示する。これにより、パス情報管理部２２６はパステーブル６００を参照し、初期値として各論理ユニットのＬＵ−ＩＤと、各論理ユニットに対する正常なパスの数を論理ユニット切替部２１１へ送る。
【００５３】
例えば、アプリケーション１０１の処理を実行する前に、障害履歴管理部２２７から各パスの負荷である可用性情報によってプライマリの論理ユニット、セカンダリの論理ユニットを設定しておき、アプリケーション１０１が処理を開始した後は、パス情報管理部２２６からの可用性情報によって論理ユニットをプライマリからセカンダリ、あるいはセカンダリかプライマリに切替ながら運用することができるようになる。
【００５４】
図３は、ＬＵ管理テーブルの一例を示したものである。
【００５５】
ＬＵ管理テーブル３００は、情報処理装置１００のメモリに格納されるテーブルであり、情報処理装置１００が扱うことができる論理ユニット１２１が定義されている。ＬＵ管理ＩＤ３０１は、論理ユニットを管理するための識別子であり、アプリケーション１０１のＩＯ要求は、このＬＵ管理ＩＤを指定する。ＬＵ−ＩＤ３０２、３０５は、論理ユニットの識別子である。ここで、同一のＬＵ管理ＩＤに対して２つのＬＵ−ＩＤが定義されているものについては、ペア構成または、書き込みのＩＯ要求に対して同一のデータが書き込まれる（ミラーリングされる）論理ユニットであることを意味している。図３でＬＵ管理ＩＤが「１」のものは、ＬＵ−ＩＤが「０１０１」の論理ユニットと、「０２０１」の論理ユニット、つまりストレージ装置ＡのＬＵ１とストレージ装置ＢのＬＵ２がペアを構成するように定義されている。同様に、ＬＵ管理ＩＤが「２」のものは、ストレージ装置ＡのＬＵ２とＬＵ３とがペアを構成するように定義されている。ＬＵ管理ＩＤが「３」のものは、一つの論理ユニットが定義されている。図３の例では、一つのＬＵ管理ＩＤに対して２つの論理ユニットが定義できる例しか示されていないが、３つ以上の論理ユニットを定義するようにしてもよい。また、本実施例では、ＬＵ−ＩＤが情報処理システムで一意に定まるように定義しているが、ストレージ装置で一意に定まるように定義してもよい。その場合は、異なるストレージ装置間で同一のＬＵ−ＩＤが定義される可能性があるので、ＬＵ管理テーブル３００は、ストレージ装置の識別子も定義するようにすればよい。ＬＵ-ＩＤ３０２、３０５、Ｐ／Ｓフラグ３０３、３０６の初期値はユーザ又は他のプログラムにより設定される。
【００５６】
Ｐ／Ｓフラグ３０３、３０６は、ＬＵ管理ＩＤに対して２つ以上の論理ユニットが定義されている場合に、それぞれの論理ユニットがプライマリ（Ｐ）であるか、セカンダリ（Ｓ）であるかを定義するものである。ＩＯ要求が書き込みの場合はプライマリ・セカンダリの論理ユニットが対象となり、読出し要求の場合はプライマリの論理ユニットが対象となる。
【００５７】
可用性３０４、３０７は、パス管理部１０３から送られてくる可用性情報に含まれる正常なパスの数、安全性が登録される。通常は、パス情報管理部２２６から送られてくる正常なパスの数が登録されている。可用性３０４、３０７の初期値はパス情報管理部２２６によって設定される。具体的には、パス管理部１０３が起動するとパス情報管理部２２６がパステーブル６００を参照し、各ＬＵ−ＩＤと、このＬＵ−ＩＤに対する正常なパスの数を初期値として論理ユニット管理部１０２に送る。論理ユニット管理部１０２は、送られてきたＬＵ−ＩＤの可用性として正常なパスの数をＬＵ管理テーブル３００に登録する。
【００５８】
図４は、論理ユニット管理部１０２の処理の一例を示したものである。
【００５９】
論理ユニット管理部１０２がアプリケーション１０１からＩＯ要求を受け付けると、このＩＯ要求が書き込み要求であるかを判断する（Ｓ４０１）。書き込み要求である場合、ＬＵ管理テーブル３００を参照し、ＩＯ要求に含まれるＬＵ管理ＩＤからＬＵ−ＩＤを読み出し、当該論理ユニットに対するアクセス要求を生成し、発行する（Ｓ４０２）。ここで、論理ユニットがペア構成となっている場合（１つのＬＵ管理ＩＤに対して複数の論理ユニットが定義されている場合）、プライマリの論理ユニット及びセカンダリの論理ユニットに対するＩＯ要求を生成して発行する。
【００６０】
一方、アプリケーション１０１から受け取ったＩＯ要求が読み出し要求であれば（Ｓ４０１で「Ｎ」の場合）、ＬＵ管理テーブル３００を参照し、ＩＯ要求に含まれるＬＵ管理ＩＤからＬＵ−ＩＤを読み出し、当該論理ユニットに対するアクセス要求を生成し発行する（Ｓ４０３）。ここで、論理ユニットがペア構成となっている場合（１つのＬＵ管理ＩＤに対して複数の論理ユニットが定義されている場合）、プライマリの論理ユニットに対するＩＯ要求を生成して発行する。
【００６１】
これによりプライマリの論理ユニットとセカンダリの論理ユニットに同じデータが書き込まれる（ミラーリング）。また、読み出しについてはプライマリの論理ユニットに対して行う構成となっている。
【００６２】
図５は、論理ユニット切替部２１１の処理の一例を示したものである。
【００６３】
論理ユニット切替部２１１は、パス管理部１０３から可用性情報を受け取ると、この情報をＬＵ管理テーブル３００に登録する。具体的には、可用性情報に含まれるＬＵ−ＩＤに対応する可用性３０４又は３０７に、可用性情報に含まれる正常なパスの数を登録する（Ｓ５０１）。次に、正常なパスの数が登録された論理ユニットがペアを構成するかＬＵ管理テーブル３００を参照して、判定する（Ｓ５０２）。ペアを構成していない場合は、処理を終了する。
【００６４】
一方、ペアを構成している場合（Ｓ５０２で「Ｙ」の場合）、ペアを構成している論理ユニットの可用性をＬＵ管理テーブル３００から読み込み、プライマリの論理ユニットの可用性とセカンダリの論理ユニットの可用性とを比較する（Ｓ５０４）。具体的には、プライマリの論理ユニットの正常なパスの数とセカンダリの論理ユニットの正常なパスの数とを比較する。そして、セカンダリの論理ユニットの可用性がプライマリの論理ユニットの可用性よりも大きければ（Ｓ５０４で「Ｎ」）、プライマリの論理ユニットとセカンダリの論理ユニットとを切替える（Ｓ５０５）。具体的には、可用性が大きいと判断されたＬＵ−ＩＤのＰ／Ｓフラグに「Ｐ」を、小さいと判断されたＬＵ−ＩＤのＰ／Ｓフラグに「Ｓ」を設定する。
【００６５】
一方、プライマリの論理ユニットとセカンダリの論理ユニットの可用性が同じ、あるいはプライマリの論理ユニットの可用性の方が大きい場合（Ｓ５０４で「Ｙ」）、論理ユニットのプライマリ、セカンダリの切替を行わずに処理を終了する。
【００６６】
このように、論理ユニット切替部２１１は、ペアを構成する論理ユニットに対して正常なパスが多い方をプライマリの論理ユニットに、少ない方をセカンダリの論理ユニットに設定する。
【００６７】
なお、１つのＬＵ管理ＩＤに３つ以上の論理ユニットが対応付けされている場合には、ステップ５０４、５０５の処理に代えて、可用性が最も大きい論理ユニットをプライマリに設定し、他の論理ユニットをセカンダリに設定する処理を行う。
【００６８】
なお、障害履歴管理部２２７から送られてくる可用性情報は安全率であるが、これも同様に処理される。つまり、安全率として示される値が大きい方をプライマリの論理ユニット、小さい方をセカンダリの論理ユニットに設定する。
【００６９】
図６は、パステーブルの一例を示したものである。
【００７０】
パステーブル６００は、情報処理装置１００のメモリに格納されるテーブルであり、図１の情報処理システム（すなわち、情報処理装置１００と、これに接続されたストレージ装置１２０）に存在する全てのパスの状態を示す情報を含む。図６に示されたパステーブル６００は、パス管理部１０３が起動されると、ストレージ装置の管理者あるいは、その他のプログラムによって設定される。例えば、情報処理措置１００のＨＢＡ１０４が論理ユニット１２１を検出し、その検出された論理ユニット１２１に関する情報を情報処理装置１００のオペレーティングシステム（ＯＳ）がＨＢＡ１０４から取得してもよい。情報処理装置１００は、検出された論理ユニット１２１に対してＳＣＳＩコマンドを使用することによって、パスに関する情報（例えば、どのＨＢＡ１０４及びＡＤＰ１２２を経由するかを示す情報）を取得することができる。情報処理装置１００は、この情報に基づいてパステーブルを生成する。
【００７１】
また、図６に示したパステーブル６００は、図１の情報処理装置１００のＨＢＡ１、ＨＢＡ２がストレージ装置Ａ１２０ａに、ＨＢＡ３、ＨＢＡ４がストレージ装置Ｂ１２０ｂに接続されるように構成した場合を示している。なお、ＨＢＡ１〜ＨＢＡ４が、ストレージ装置Ａ１２０ａ、ストレージ装置Ｂ１２０ｂに接続されるように構成した場合であっても、ＨＢＡ１がストレージ装置Ａ１２０ａ、ＨＢＡ２〜ＨＢＡ４がストレージ装置Ｂ１２０ｂに接続されるように構成した場合であってもよい。
【００７２】
パステーブル６００において、パス番号６０１は、全てのパスに一意に付与されたパスの番号である。ＨＢＡ−ＩＤ６０２は、パスが経由するＨＢＡ１０４の識別子（ＨＢＡ−ＩＤ）である。ＡＤＰ−ＩＤ６０３は、パスが経由するＡＤＰ１２２の識別子（ＡＤＰ−ＩＤ）である。ＬＵ−ＩＤ６０４は、パスが到達する論理ユニット１２１の識別子（ＬＵ−ＩＤ）である。パス障害情報６０５は、パスに障害が発生しているか否かを示す。パスを構成するＨＢＡ１０４、ＡＤＰ１２２、及び論理ユニット１２１のいずれにも障害が発生していない場合、パス障害情報６０５の値は「０」に設定される。一方、これらのうちいずれかに障害が発生している場合、パス障害情報６０５の値は「１」に設定される。
【００７３】
図７は、パス情報管理部２２６の処理の一例を示したものである。
【００７４】
パス情報管理部２２６は、障害検出部２２４から障害情報、または障害回復検出部２２５から障害回復情報を受けると処理を開始する。
【００７５】
パス情報管理部２２６は、障害検出部２２４から障害情報を受け取ると障害情報に含まれるパスＩＤからパステーブル６００のパス障害情報６０５に「１」を設定する（Ｓ７０１）。次に、障害が発生したパスＩＤからＬＵ−ＩＤを特定し、このＬＵ−ＩＤに対して正常なパスの数をカウントする（Ｓ７０２）。パス情報管理部２２６は、ＬＵ−ＩＤとカウントした正常なパスの数を可用性情報としてアクセス終了通知部２２２へ送る（７０３）。
【００７６】
図６の例では、パス情報管理部２２６が、障害検出部２２４からパスＩＤ「１」に対する障害情報を受け、パス番号「１」のパス障害情報に「１」を設定した場合を示している。パス情報管理部２２６は、このパス番号「１」のＬＵ−ＩＤ「０１０１」に対する正常なパスの数をカウントする。この場合、パス番号「２」、「３」、「４」が正常であるため、正常なパスの数は「３」となる。パス情報管理部２２６は、ＬＵ−ＩＤ「０１０１」と正常なパスの数「３」とを可用性情報としてアクセス終了通知部２２２へ送る。
【００７７】
なお、パス情報管理部２２６が、障害回復検出部２２５から障害回復通知を受けた場合は、障害回復情報に含まれるパスＩＤからパステーブル６００のパス障害情報６０５に「０」を設定する（Ｓ７０１）。以下、障害発生情報を受けた場合と同様に、ＬＵ−ＩＤを特定し、このＬＵ−ＩＤに対する正常なパスの数をカウントし（Ｓ７０２）、ＬＵ−ＩＤと正常なパスの数とを可用性情報としてＩＯ終了通知部２２２へ送る（Ｓ７０３）。
【００７８】
このように、パス情報管理部２２６は、障害の発生、障害の回復によってパスの状態が変更されるたびに、論理ユニットのＬＵ−ＩＤと、このＬＵ−ＩＤに対する正常なパスの数とを可用性情報として発行する。これにより、論理ユニット切替部２１１１で障害の発生、障害の回復に応じて論理ユニットのプライマリ・セカンダリの切替の判定が行われる。
【００７９】
障害履歴管理部２２７では、ＩＯテーブル１２００に記録された履歴情報から障害の分析（瞬断エラー、累計エラー、性能エラー）を行う。
【００８０】
瞬断エラーは、同一パスで１つのＩＯ要求においてエラーが発生したが、続けて発行されるＩＯ要求は正常に終了した場合に、瞬断エラーと判定される。瞬断エラーは、光ファイバの磨耗や、電源の不安定等の要因によって、伝送経路が不安定となった場合に生じる。
【００８１】
累計エラーは、一定期間内（例えば、１ヶ月）に、所定回数を超えるエラーが発生した場合、累計エラーと判定される。なお、一定期間のエラーの回数によって累計エラーを判定するのではなく、エラーを計数する期間を定めずに、一定回数のエラーが発生したら累計エラーと判断してもよい。また、連続した所定回数のアクセス要求の内でエラーとなった回数が所定の閾値を越えたり、全アクセス要求のうち所定割合のアクセス要求がエラーとなったら累計エラーと判断してもよい。
【００８２】
性能エラーは、このパスが設置された状態と比較して、所定の値だけ性能が劣化した場合に、性能エラーと判定される。後述するように、稼動統計管理部２２９において、アクセス処理のデータ量と処理時間を取得し、設置当初よりレスポンスが６０％劣化した場合に性能エラーと判断する。
【００８３】
図８は、障害統計管理部２２８の処理の一例を示した図である。
【００８４】
障害統計管理部２２８はＩＯテーブルに登録された、それぞれのパスに対して発行されたＩＯ要求の応答（ＩＯ終了、障害）を時系列順に読み出し、それぞれのパスに発生した瞬断エラー、累計エラーの発生回数をカウントする。
【００８５】
障害統計管理部２２８は、ＩＯテーブルからＩＯ要求の応答を読み出す（Ｓ８０１）。
このＩＯ要求の応答が障害であるかを判断する（Ｓ８０２）。障害でない場合（Ｓ８０２で「Ｎ」の場合）、累計エラーに関する処理（Ｓ８０３〜Ｓ８０６）を実行することなく、ステップＳ８０７へ移行する。一方、障害の場合（Ｓ８０２で「Ｙ」の場合）、累計エラーに関する処理（Ｓ８０３〜Ｓ８０６）を実行する。
【００８６】
累計エラーに関する処理では、まず、パス障害テーブル内の当該パスの累計エラー欄における開始時刻と監視期間を参照して、現在時刻が所定の監視時間範囲内であるかによって、所定の監視時間内に生じた障害であるかを判定する（Ｓ８０３）。その結果、所定の監視時間内に生じた障害であれば、ステップＳ８０４に移行し、累積エラーの検出値にエラー回数（１回）を加算し、この処理を終了する。
【００８７】
一方、ステップＳ８０３による判定の結果、所定の監視時間外に発生した障害であると判断されると、現在時刻を監視の開始時刻に設定し（Ｓ８０４）、累計エラーの検出値を「０」にして（Ｓ８０５）、新たな監視時間を開始する。そして、累積エラーの検出値にエラー回数（１回）を加算し（Ｓ８０６）、この処理を終了する。
【００８８】
次に、ステップＳ８０７へ移行すると、所定の瞬断監視時間（図８に示す例では１秒前）の間に実行された処理における、障害の有無を判定する（Ｓ８０７）。その結果、過去１秒間に障害が発生していないと判定されると、瞬断エラーに関する処理（Ｓ８０８〜Ｓ８１１）を実行しない。
【００８９】
一方、過去１秒間に障害が発生していると判定されると、ステップ８０８へ移行して、瞬断エラーに関する処理（Ｓ８０８〜Ｓ８１１）を実行する。
【００９０】
瞬断エラーに関する処理では、まず、障害管理テーブル内の当該パスの累計エラー欄における開始時刻と監視期間を参照して、現在時刻が所定の監視時間範囲内であるかによって、所定の監視時間内に生じた障害であるかを判定する（Ｓ８０８）。その結果、所定の監視時間内に生じた障害であれば、ステップＳ８１１に移行し、瞬断エラーの検出値にエラー回数（１回）を加算し、この処理を終了する。
【００９１】
一方、ステップＳ８０８による判定の結果、所定の監視時間外に発生した障害であると判断されると、現在時刻を監視の開始時刻に設定し（Ｓ８０９）、瞬断エラーの検出値を「０」にして（Ｓ８１０）、新たな監視時間を開始する。そして、瞬断エラーの検出値にエラー回数（１回）を加算し（Ｓ８１１）、この処理を終了する。
【００９２】
ＩＯテーブル１２００から読み出されたＩＯ要求の応答が所定期間を超えているか判定し（Ｓ８１２）、所定期間を超えているばあいには処理を終了する。
【００９３】
一方、所定期間を超えていない場合には、ステップ８０１で次のＩＯ要求に対する応答を読み出して、再び処理を行う。
【００９４】
図９は、パス障害テーブルの一例を示したものである。
【００９５】
パス障害テーブルには、パス毎、エラーの種類毎に、当該種類のエラーに関する監視開始時刻、監視期間、判定値、検出値が記憶されている。
【００９６】
例えば、瞬断エラーは、２００３年９月１日１０時２０分３０．０２秒から３０日間を監視時間として監視が行われる。その監視時間内に瞬断エラーの発生が検出されると検出値が１ずつ加算され、障害管理テーブルが更新される。また、監視時間内に、判定値（２０回）の瞬断エラーの発生が検出されると、当該パスは瞬断エラーであると判定される。
【００９７】
なお、性能エラーは複数回のアクセス処理の平均によって定められるので、１回でも性能の低下が認められると性能エラーであると判定することから、監視期間は定められていない。
【００９８】
図１０は、稼動統計管理部の処理の一例を示したものである。
【００９９】
まず、ＩＯテーブル１２００からＩＯ要求のデータ量、当該ＩＯ要求に要した処理時間、当該ＩＯ要求の時刻を読み出す（１００１）。
【０１００】
次に、情報処理装置１００内で管理している時刻情報から月日及び時間を取得して、当該付の特定の日時（図１０に示す例では月初め、すなわち１日の０時）であるかを判定する（Ｓ１００２）。そして、月初めでなければステップ１００６に移行する。一方、月始めが検出されると、稼動統計管理テーブルに新たに始まる月のデータを記録する欄を追加し（Ｓ１００４）、アクセス処理において当該パスに送付したデータ量、及び当該ＩＯ処理にようした時間を「０」に初期設定して（Ｓ１００５）、新たな期間における性能の監視の準備をする。
【０１０１】
そして、正常に終了したアクセス処理において使用したパスに送付したデータ量、及び当該アクセス処理に要した時間を稼動統計テーブルの該当する欄に加算する（Ｓ１００６）。
【０１０２】
そして、所定の割合（図１０に示す例では６０％）だけ性能が劣化しているかを判定する（Ｓ１００７）。この判定は、定期的（例えば、１日１回）や、ユーザからの指示によって行われる。この判定の結果、６０％の性能劣化がみられたら性能エラーと判定し、パス障害テーブル９００の性能エラーの検出値に「１」を追加し（Ｓ１００８）、この処理を終了する。一方、６０％までも性能が劣化していなかったら性能エラーと判定することなく、この処理を終了する。
【０１０３】
なお、図１０では、月単位で当該パスの性能（当該パスによるアクセス処理のレスポンス）を集計しているが、任意の期間を設定して性能を監視してもよい。
【０１０４】
図１１は、稼動統計管理テーブルの一例を示した図である。
【０１０５】
稼動統計管理テーブルには、パス毎、月毎に、アクセス処理によって当該パスに送付したデータ量の累積値、及び当該パスにおけるアクセス処理に要した時間の累積値が記録されている。そして、累積データ量を累積処理時間で除することによって、当該監視期間のアクセス処理のレスポンスを求めることができる。
【０１０６】
なお、統計管理テーブルには、性能が最も良好であった期間（通常は設置時）のレスポンスと、現在の監視期間のアクセス処理のデータ量の累積値及びアクセス処理の所要時間の累積値を記録していれば足りる。
【０１０７】
また、図１１に示す稼動統計管理テーブルでは、アクセス処理のデータ量とアクセス処理の所要時間とを月毎に記録しているが、他の監視期間を定めて、パスの性能を監視してもよい。
【０１０８】
障害履歴管理部２２７は、図９に示すパス障害テーブル９００から、それぞれのパスに対する障害を決定する。例えば、図９のパス１は瞬断エラーの検出値が判定値を超えているので、パス１は瞬断エラーと決定する。また、パス２はいずれの検出値も判定値を超えていないので、正常と決定する。このようにして全てのパスを、瞬断エラー、累計エラー、性能エラー、正常のいずれかに決定する。
【０１０９】
次に、パステーブル６００を参照して、論理ユニットに対するパスを特定する。例えば、ＬＵ−ＩＤ「０１０１」に対しては、パス番号「１」、「２」、「３」、「４」が特定される。このように特定されたパス番号から、ＬＵ−ＩＤに対する安全性を求める。ここでは「安全性＝ａ１×正常なパスの数―（ａ２×瞬断エラーのパスの数＋ａ３×性能エラーのパスの数＋ａ４×累計エラーのパスの数）」とする。また、ａ１からａ４は係数であり、ａ１＝１、ａ２＝０．１、ａ３＝０．０１、ａ４＝０．００１とする。これによると、全てのパスが「正常」と決定された場合に、安全性が最も大きくなり、全てのパスが「瞬断エラー」と決定された場合に、安全性が最も低くなる。ここで、瞬断エラーの係数を最も大きくしているのは、瞬断エラーは光ファイバの磨耗や、電源の不安定等の要因によって、伝送経路が不安定となった場合に生じるものであり、簡単に取り除くことができないエラーとしているためである。なお、この係数はユーザが自由に設定することができ、例えばａ１、ａ２、ａ４を「０」に、ａ３を「１」にすることで、性能エラーについての安全性を求めることができる。
【０１１０】
障害履歴管理部２２７は、このようにして決定した安全性と、ＬＵ−ＩＤとともに可用性情報として、アクセス終了通知部２２２へ送る。これによって、論理ユニット切替部２１１では、安全性が高いものがプライマリの論理ユニットとなるように切替が行われる。
【０１１１】
一方、障害履歴管理部２２７から送られた可用性情報でＬＵ管理テーブル３００の可用性が変更されてしまっているので、障害履歴管理部２２７は、パス情報管理部２２６から初期値を送るよう指示する。障害履歴管理部２２７から初期値通知の指示を受けると、パス情報管理部２２６は、パステーブル６００を参照し、それぞれの論理ユニットに対する正常なパスの数を初期値として論理ユニット管理部１０２へ送る。論理ユニット管理部１０２は、送られてきた初期値でＬＵ管理テーブル３００の可用性を更新する。
【０１１２】
障害履歴管理部２２７は、ユーザあるいは他のプログラムから実行できるようになっている。従って、所定の周期で実行することも可能である。例えば、１時間ごとにパスの負荷状態である性能エラーによって、論理ユニットのプライマリ・セカンダリを切替えるようにしてもよい。
【０１１３】
障害の発生及び障害の回復に応じて、パス情報管理部２２６から可用性情報として、障害の発生/障害の回復した論理ユニットと、正常なパスの数とを通知するようにしているが、単に、障害の発生/回復の情報（例えば、障害の発生を「１」、回復を「０」とする。）、と障害の発生/回復した論理ユニットとを可用性情報としてもよい。
【０１１４】
この場合、論理ユニット切替部２１１では、ステップ５０１で可用性情報が「１」であれば、当該論理ユニットの可用性から１を減らし、可用性情報が「０」であれば、当該論理ユニットの可用性から１を加える。そして、この変更があった論理ユニットがペアを構成している場合には、ペアを構成している論理ユニットの可用性を比較し、可用性が大きい論理ユニットにプライマリを設定する。このように、可用性情報は論理ユニットの信頼性でもあり、この信頼性を定義できるものであれば、どのような情報であってもよい。
【０１１５】
以上説明したように、正常なパスの数が多い、性能エラーの発生が少ないパス、瞬断エラーの発生が少ないパス等を有する論理ユニットをプライマリの論理ユニットに設定することができる。これにより、アプリケーションからのＩＯ要求に対するスループットを向上させることができる。
【０１１６】
また、図２に示したそれぞれの処理部を行うプログラムでも実現することができる。
【０１１７】
次に、他の実施の形態について説明する。
【０１１８】
ここでは、障害が発生したパスに関連するパスに対しても障害情報を設定するものである。
【０１１９】
図１２は、情報処理システムの一例を示したものである。この図は、図１のＳＡＮ１１０の部分について模式的に示したものであり、それぞれのＨＢＡが、ストレージ装置Ａ、Ｂの全てのＡＤＰに接続された場合の構成を示している。なお、このように全てのＡＤＰに接続されず、一部のＡＤＰに接続された場合でもよい。また、各部の構成については、図１で説明したものと同じ構成である。
【０１２０】
このような構成において、例えばＨＢＡ１、ＡＤＰ１、ＬＵ１に対するパスで障害が検出された場合、障害が発生したパスのＨＢＡ１−ＡＤＰ１を共通にするパス、すなわちＨＢＡ１―ＡＤＰ１―ＬＵ２のパスと、ＨＢＡ１―ＡＤＰ１―ＬＵ３のパスについても障害が発生したとするものである。パス管理部１０３は、この障害発生したとされるパスを除いて、新たなパスを選択しＩＯ要求を割当てる。つまり、ＨＢＡ１−ＡＤＰ１のパスの間で障害が発生した場合は、このパスに対するＩＯ要求の発行を避けるようにする。これは、次に説明するように図２のパス情報管理部２２６の処理を変更することで実現できる。
【０１２１】
図２及び図１２を用いてＩＯ要求が発行された場合の処理について説明する。
【０１２２】
論理ユニット管理部１０２からＩＯ要求を受付けると、パス管理部１０３のＩＯ割当部２２３は、パステーブル６００から正常なパス（障害情報に「０」が設定されているパス）を選択する。ここで、正常なパスとしてＨＢＡ１―ＡＤＰ１―ＬＵ１に対するパスが選択されたものとする。ＩＯ割当部２２３は、この選択されたパスに対してＩＯ要求を発行する。ここで、障害検出部２２４により、当該パスに対して障害が検出された場合、障害検出部２２４は、選択されたパスＩＤを障害情報としてパス情報管理部２２６へ通知する。パス情報管理部２２６は、障害情報に含まれるパスＩＤからＨＢＡ、ＡＤＰを共通にする全てのパスの障害情報に「１」を設定する。この場合、障害が発生したＨＢＡ１−ＡＤＰ１−ＬＵ１に対するパス、ＨＢＡ１−ＡＤＰ１−ＬＵ２のパス、ＨＢＡ１−ＡＤＰ１−ＬＵ３のパスについての障害情報に「１」を設定する。またパス情報管理部２２６は、障害情報に「１」が設定された論理ユニットの正常なパスの数を可用性情報として論理ユニット切替部２１１に通知する。つまり、ＬＵ１、ＬＵ２、ＬＵ３に対する正常なパスの数が可用性情報として通知される。
【０１２３】
障害検出部２２４により障害が検出されると、当該ＩＯ要求は正常に終了できていないと判断し、ＩＯ割当部２２３は、パステーブル６００を参照し、新たなパスを選択する。パステーブル６００は、パス情報管理部２２６により、障害が発生したパス及び、障害が発生したパスに関連するパスについて障害情報が「１」に設定されているので、パス情報管理部２２６は、これ以外のパス（障害情報が「０」であるパス）を選択する。なお、選択されるパスの候補としては、ＨＢＡ１―ＡＤＰ２―ＬＵ１のパス、あるいはＨＢ２―ＡＤＰ２―ＬＵ１のパス等がある。ＩＯ割当部２２３は、選択されたパスに対して再度ＩＯ要求を発行する。また、ＩＯ割当部２２３は、新たなＩＯ要求を受付けるとパステーブル６００の正常なパスから割当てるべきパスを選択する。
【０１２４】
障害回復検出部２２５は、既に説明したように障害情報に「１」が設定されたパスに対して所定の間隔でＩＯ要求を発行する。ＩＯ要求が正常に終了すると、ＩＯ要求が正常に終了したパスＩＤを障害回復情報としてパス情報管理部２２６へ通知する。
【０１２５】
パス情報管理部２２６は、既に説明したように障害回復情報に含まれるパスＩＤから当該パスの障害情報を「０」に設定し、このパスの論理ユニットの正常なパスの数を可用性情報として論理ユニット切替部２１１へ送る。
【０１２６】
例えば、先の説明で障害情報が設定された３つのパス（ＨＢＡ１−ＡＤＰ１−ＬＵ１、ＨＢＡ１−ＡＤＰ１−ＬＵ２、ＨＢＡ１−ＡＤＰ１−ＬＵ３）のうち、ＡＤＰ１−ＬＵ１の間で障害が発生し、その他は正常である場合には、障害回復検出部２２５によりＨＢＡ１−ＡＤＰ１−ＬＵ２、ＨＢＡ１−ＡＤＰ１−ＬＵ３に対するＩＯ要求が正常に終了するので、ＨＢＡ１−ＡＤＰ１−ＬＵ２、ＨＢＡ１−ＡＤＰ１−ＬＵ３に対するパスの障害情報は「０」に設定されることになる。つまり、ＡＤＰ―ＬＵ間の障害の場合には、障害となっているパスが絞り込まれる。
【０１２７】
可用性情報を受け取った論理ユニット切替部２１１の処理は既に説明したものと同じである。
【０１２８】
図１３は、パステーブルの一例を示したものである。このパステーブルは、情報処理装置１００とストレージ装置Ａ１２０ａの記憶領域に対するパスの部分のみを示したものであり、情報処理装置１００とストレージ装置Ｂ１２０ｂとのパスも情報処理装置１００のメモリに格納されている。正常なパスの数をカウントする場合には、情報処理装置１００に格納されている全てのパスを参照する。図６に示したパステーブルとの相違点は、新たにパス固定情報６０６を有する点である。このパス固定情報６０６は、正常なパスがない場合に、当該パスに障害情報が設定されていても、このパスはＩＯ割当部２２３で割当の対象となるパスであることを意味する。このパス固定情報６０６は、ユーザにより設定される。
【０１２９】
図１４は、ＩＯ割当部２２３におけるパス選択の処理の一例を示したものである。
【０１３０】
ＩＯ要求を受付けたＩＯ割当部２２３は、パステーブル６００からＩＯ要求に含まれるＬＵ−ＩＤを含むパスであり、パス障害情報６０５が「０」であるパス（正常なパス）を検索する。正常なパスがあるかを判定し（Ｓ１４０２）、正常なパスがある場合には、複数のパスかを判定する（Ｓ１４０３）。複数のパスがある場合には、負荷分散機能により、一つのパスを選択し（Ｓ１４０４）、選択されたパスのＨＢＡからＩＯ要求を発行する（１４０５）。一方、正常なパスがない場合には（Ｓ１４０２で「Ｎ」の場合）、ＩＯ要求に含まれるＬＵ−ＩＤを含むパスであり、パス固定情報６０６が「１」であるものを選択し（Ｓ１４０６）、選択されたパスのＨＢＡからＩＯ要求を発行する（Ｓ１４０５）。  また、正常なパスが一つしか選択されなかった場合（Ｓ１４０３で「Ｎ」の場合）、このパスのＨＢＡからＩＯ要求を発行する（Ｓ１４０５）。尚、この処理は障害検出部２２４で障害検出され再度ＩＯ要求を発行する場合にも実行される。
【０１３１】
図１５は、パス情報管理部２２６の処理の一例を示したものである。
【０１３２】
パス情報管理部２２６は、障害情報又は障害回復情報を受けると処理を開始する。まずパス情報管理部２２６は、障害情報であるかを判定する（Ｓ１５０１）。障害情報である場合、障害情報に含まれるパスＩＤのＨＢＡ、ＡＤＰを共通にするパスのパス障害情報６０５に「１」を設定する（１５０２）。例えば、障害情報としてパス番号「１」のパスＩＤが通知された場合、パス情報管理部２２６は、パス番号「１」の他にＨＢＡ１−ＡＤＰ１を共通にするパス番号「９」「１７」のパス障害情報６０５に「１」を設定する。
【０１３３】
次に、パス障害情報６０５が「１」に変更されたＬＵ−ＩＤを含むパスの中から正常なパスの数をカウントし（Ｓ１５０３）、ＬＵ−ＩＤとカウントされた正常なパスの数を可用性情報としてＩＯ終了通知部２２２へ通知する。
【０１３４】
一方、障害情報でないと判定された場合（Ｓ１５０１で「Ｎ」の場合）、障害回復情報に含まれるパスＩＤのパス障害情報６０５に「０」を設定し、「０」に変更されたＬＵ−ＩＤを含むパスの中から正常なパスの数をカウントし（Ｓ１５０６）、ＬＵ−ＩＤとカウントされた正常なパスの数を可用性情報としてＩＯ終了通知部２２２へ通知する。
【０１３５】
なお、可用性情報を受け取った論理ユニット切替部２１１は、既に図５等で説明したように可用性情報に含まれるＬＵ−ＩＤから特定される論理ユニットがペアを構成している場合、正常なパスの数に応じて、論理ユニットのプライマリとセカンダリを決定し、ＬＵ管理テーブル３００を更新する。
【０１３６】
尚、ここではＨＢＡ−ＡＤＰが共通するパスについて説明したが、図１５に示すステップ１５０２の処理を変更することにより他の共通する部分でも同様に行うことができる。例えば、障害が発生したパスとＡＤＰ−ＬＵが共通するパス、またはＨＢＡが共通するパス、あるいはＣＨＡが共通するパスを障害とすることができる。
【０１３７】
このように、一つのパス（アクセス経路）の障害に対して、この障害が発生したパス（アクセス経路）と関連するパス（アクセス経路）についても障害とみなすことで、障害が発生している可能性があるパス（アクセス経路）の利用を避けることで、スループットを向上させることができる。
【図面の簡単な説明】
【０１３８】
【図１】情報処理システムの全体構成の一例を示すブロック図である。
【図２】論理ユニット管理部、パス管理部の構成の一例を示した図である。
【図３】ＬＵ管理テーブルの一例を示した図である。
【図４】論理ユニット管理部の処理の一例を示した図である。
【図５】論理ユニット切替部の処理の一例を示した図である。
【図６】パステーブルの一例を示した図である。
【図７】パス情報管理部の処理の一例を示した図である。
【図８】障害統計管理部の処理の一例を示した図である。
【図９】パス障害テーブルの一例を示した図である。
【図１０】稼動統計管理部の処理の一例を示した図である。
【図１１】稼動統計テーブルの一例を示した図である。
【図１２】情報処理システムの構成の一例を示すブロック図である。
【図１３】パステーブルの他の一例を示した図である。
【図１４】ＩＯ割当部の処理の一例を示した図である。
【図１５】パス情報管理部の処理の一例を示した図である。
【符号の説明】
【０１３９】
１００  情報処理装置
１０１  アプリケーション
１０２  論理ユニット管理部
１０３  パス管理部
１０４  ＨＢＡ
１１０  ＳＡＮ
１２０  ストレージ装置
１２１  論理ユニット（ＬＵ）
１２２  ＡＤＰ
【図１】
2006154880.tif 000003
【図２】
2006154880.tif 000004
【図３】
2006154880.tif 000005
【図４】
2006154880.tif 000006
【図５】
2006154880.tif 000007
【図６】
2006154880.tif 000008
【図７】
2006154880.tif 000009
【図８】
2006154880.tif 000010
【図９】
2006154880.tif 000011
【図１０】
2006154880.tif 000012
【図１１】
2006154880.tif 000013
【図１２】
2006154880.tif 000014
【図１３】
2006154880.tif 000015
【図１４】
2006154880.tif 000016
【図１５】
2006154880.tif 000017