(57)【要約】【課題】ストレージ装置のキャッシュヒット率を保ちながら、システム全体の負荷を分散して性能を向上させる。【解決手段】複数のコンピュータと、前記複数のコンピュータと接続されたストレージ装置と、を備えるコンピュータシステムにおいて、前記ストレージ装置は、チャネルアダプタごとの第１アクセス負荷を測定する第１負荷測定部を備え、前記複数のコンピュータの少なくとも一つは、当該コンピュータが論理ユニットにアクセスする経路を管理する経路管理部を備え、前記経路管理部は、当該コンピュータから前記論理ユニットへの第２アクセス負荷を測定する第２負荷測定部と、前記第１及び第２負荷測定部によって測定された第１及び第２アクセス負荷に基づいて、一つの前記チャネルアダプタを選択し、当該チャネルアダプタを経由するアクティブ経路を設定するアクティブ経路設定部と、を備える。【選択図】      図１
2006293459.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストと、
前記複数のホストと接続されたストレージ装置と、を備えるコンピュータシステムにおいて、
前記ストレージ装置は、
前記複数のホストと通信する複数のチャネルアダプタと、
データを格納する複数の論理ユニットと、
前記チャネルアダプタごとのストレージ測定負荷を測定するストレージ負荷測定部と、を備え、
各前記ホストは、
前記ストレージ装置と通信する一つ以上のホストバスアダプタを備え、
前記複数のホストの少なくとも一つは、
当該ホストが前記論理ユニットにアクセスするパスを管理する交代パス管理部を備え、
前記交代パス管理部は、
当該ホストから前記論理ユニットへのアクセスによるホスト測定負荷を、前記論理ユニットごとに測定するホスト負荷測定部と、
前記ストレージ負荷測定部及び前記ホスト負荷測定部によって測定されたストレージ測定負荷及びホスト測定負荷に基づいて、一つの前記チャネルアダプタを前記論理ユニットごとに選択し、当該チャネルアダプタを経由するアクティブパスを設定するアクティブパス設定部と、を備え、
前記アクティブパス設定部は、
前記チャネルアダプタごとに、前記ストレージ測定負荷から、当該チャネルアダプタに関する前記ホスト測定負荷を減じることによって、当該アクティブパス設定部を備えるホスト以外の前記ホストによる他ホスト負荷を算出し、
前記チャネルアダプタごとに、前記他ホスト負荷と、当該チャネルアダプタに既に設定された前記アクティブパスに関する前記ホスト測定負荷との合計値を算出し、
前記ホスト測定負荷及び前記他ホスト負荷の合計値が最も小さい前記チャネルアダプタを選択し、
前記ホスト測定負荷及び前記他ホスト負荷の合計値が最も小さい前記チャネルアダプタが複数存在する場合は、
当該チャネルアダプタごとに、設定されたアクティブパスの数を算出し、
前記ホスト測定負荷及び前記他ホスト負荷の合計値が最も小さく、かつ、前記算出されたアクティブパスの数が最も小さい前記チャネルアダプタを選択し、
前記論理ユニットごとに測定されたホスト測定負荷を比較し、
前記ホスト測定負荷が大きい論理ユニットの前記アクティブパスを、前記ホスト測定負荷が小さい論理ユニットの前記アクティブパスより先に設定することを特徴とするコンピュータシステム。
【請求項２】
複数のコンピュータと、
前記複数のコンピュータと接続されたストレージ装置と、を備えるコンピュータシステムにおいて、
前記ストレージ装置は、
前記複数のコンピュータと通信する複数のチャネルアダプタと、
データを格納する複数の論理ユニットと、
前記チャネルアダプタごとの第１アクセス負荷を測定する第１負荷測定部と、を備え、
各前記コンピュータは、
前記ストレージ装置と通信する一つ以上のホストバスアダプタを備え、
前記複数のコンピュータの少なくとも一つは、
当該コンピュータが前記論理ユニットにアクセスする経路を管理する経路管理部を備え、
前記経路管理部は、
当該コンピュータから前記論理ユニットへの第２アクセス負荷を、前記論理ユニットごとに測定する第２負荷測定部と、
前記第１及び第２負荷測定部によって測定された第１及び第２アクセス負荷に基づいて、一つの前記チャネルアダプタを前記論理ユニットごとに選択し、当該チャネルアダプタを経由するアクティブ経路を設定するアクティブ経路設定部と、を備えることを特徴とするコンピュータシステム。
【請求項３】
全ての前記コンピュータが前記経路管理部を備えることを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記アクティブ経路設定部は、
前記チャネルアダプタごとに、前記第１アクセス負荷から、当該チャネルアダプタに関する前記第２アクセス負荷を減じることによって、当該アクティブ経路設定部を備えるコンピュータ以外の前記コンピュータによる第３アクセス負荷を算出し、
前記チャネルアダプタごとに、前記第３アクセス負荷と、当該チャネルアダプタに既に設定された前記アクティブ経路に関する前記第２アクセス負荷との合計値を算出し、
前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタを選択することを特徴とする請求項２に記載のコンピュータシステム。
【請求項５】
前記アクティブ経路設定部は、
前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタが複数存在する場合は、
当該チャネルアダプタごとに、設定されたアクティブ経路の数を算出し、
前記第２及び第３アクセス負荷の合計値が最も小さく、かつ、前記算出されたアクティブ経路の数が最も小さい前記チャネルアダプタを選択することを特徴とする請求項４に記載のコンピュータシステム。
【請求項６】
前記アクティブ経路設定部は、
前記論理ユニットごとに測定された第２アクセス負荷を比較し、
前記測定された第２アクセス負荷が大きい論理ユニットの前記アクティブ経路を、前記測定された第２アクセス負荷が小さい論理ユニットの前記アクティブ経路より先に設定することを特徴とする請求項４に記載のコンピュータシステム。
【請求項７】
前記第１及び第２アクセス負荷は、所定の時間当たりのアクセス回数であることを特徴とする請求項２に記載のコンピュータシステム。
【請求項８】
前記第１及び第２アクセス負荷は、所定の時間当たりのアクセスデータ量であることを特徴とする請求項２に記載のコンピュータシステム。
【請求項９】
ストレージ装置と接続された複数のコンピュータのうち少なくとも一つのコンピュータにおいて実行されるプログラムであって、
前記ストレージ装置は、前記複数のコンピュータと通信する複数のチャネルアダプタと、データを格納する複数の論理ユニットと、を備え、
前記複数のコンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタを備え、
前記プログラムは、
前記チャネルアダプタごとに測定された第１アクセス負荷を取得し、
前記論理ユニットごとの第２アクセス負荷を測定し、
前記第１及び第２アクセス負荷に基づいて、一つの前記チャネルアダプタを、前記論理ユニットごとに選択し、当該チャネルアダプタを経由するアクティブ経路を設定することを特徴とするプログラム。
【請求項１０】
前記アクティブ経路の設定において、
前記チャネルアダプタごとに、前記第１アクセス負荷から、当該チャネルアダプタに関する前記第２アクセス負荷を減じることによって、当該アクティブ経路の設定をするコンピュータ以外の前記コンピュータによる第３アクセス負荷を算出し、
前記チャネルアダプタごとに、前記第３アクセス負荷と、当該チャネルアダプタに既に設定された前記アクティブ経路に関する前記第２アクセス負荷との合計値を算出し、
前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタが一つのみ存在する場合は、前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタを選択し、
前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタが複数存在する場合は、当該チャネルアダプタごとに設定されたアクティブ経路の数を算出し、前記第２及び第３アクセス負荷の合計値が最も小さく、かつ、前記算出されたアクティブ経路の数が最も小さい前記チャネルアダプタを選択することを特徴とする請求項９に記載のプログラム。
【請求項１１】
複数のコンピュータと、
前記コンピュータと接続されたストレージ装置と、を備え、
前記ストレージ装置は、前記複数のコンピュータと通信する複数のチャネルアダプタと、データを格納する複数の論理ユニットと、を備え、
各前記コンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタを備えるコンピュータシステムにおいて、前記複数のコンピュータの少なくとも一つが前記論理ユニットにアクセスするアクティブ経路を設定する方法であって、
前記チャネルアダプタごとに測定された第１アクセス負荷を取得し、
前記論理ユニットごとの第２アクセス負荷を測定し、
前記第１及び第２アクセス負荷に基づいて、一つの前記チャネルアダプタを、前記論理ユニットごとに選択し、当該チャネルアダプタを経由するアクティブ経路を設定することを特徴とする方法。
【請求項１２】
前記アクティブ経路の設定において、
前記チャネルアダプタごとに、前記第１アクセス負荷から、当該チャネルアダプタに関する前記第２アクセス負荷を減じることによって、当該アクティブ経路の設定をするコンピュータ以外の前記コンピュータによる第３アクセス負荷を算出し、
前記チャネルアダプタごとに、前記第３アクセス負荷と、当該チャネルアダプタに既に設定された前記アクティブ経路に関する前記第２アクセス負荷との合計値を算出し、
前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタが一つのみ存在する場合は、前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタを選択し、
前記第２及び第３アクセス負荷の合計値が最も小さい前記チャネルアダプタが複数存在する場合は、当該チャネルアダプタごとに設定された前記アクティブ経路の数を算出し、前記第２及び第３アクセス負荷の合計値が最も小さく、かつ、前記算出されたアクティブ経路の数が最も小さい前記チャネルアダプタを選択することを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのアクセス負荷分散に関する。
【背景技術】
【０００２】
ストレージ装置とコンピュータとの間に、複数のアクセス可能なパスを設け、これらのパスにコンピュータ装置からのアクセスを分散させることによって、システムの性能向上を図る技術が知られている（例えば、特許文献１参照）。このような負荷分散技術によれば、複数のパスにアクセス（Ｉ／Ｏ）の負荷が分散されるため、特定のパスにアクセスが集中することによる性能低下を防止することができる。さらに、一つのパスに障害が発生したときに、他の正常なパスにアクセスが割り当てられるため、アクセスを継続することができる。
【０００３】
一方、ストレージ装置に搭載したキャッシュメモリを利用して、システムの性能向上を図る技術が知られている。例えば、読み出し要求に関するブロックのデータと共に、その次のブロックのデータも読み出してキャッシュメモリに格納しておくことによってアクセス性能の向上を図る、キャッシュ先読み技術が知られている（例えば、特許文献２参照）。
【特許文献１】特開２０００−３３０９２４号公報
【特許文献２】特開２００２−１８２９７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の負荷分散技術は、データ先読み機能のような、ストレージ装置のキャッシュメモリを利用した機能を利用することを考慮していない。このため、同一の論理ユニット（ＬＵ）に対するアクセスが、同一のキャッシュメモリを利用できない複数のパスに分散され、キャッシュヒット率が低下する。その結果、データ先読み機能等を十分に活用することができない。また、ストレージ装置に複数のコンピュータが接続されている場合、各コンピュータが他のコンピュータによるアクセスを考慮せずに負荷を分散しようとすると、全体としては負荷が分散されない場合がある。このように、従来の負荷分散技術ではシステム性能を十分に向上させることができない場合があった。
【課題を解決するための手段】
【０００５】
本発明は、複数のコンピュータと、前記複数のコンピュータと接続されたストレージ装置と、を備えるコンピュータシステムにおいて、前記ストレージ装置は、前記複数のコンピュータと通信する複数のチャネルアダプタと、データを格納する複数の論理ユニットと、前記チャネルアダプタごとの第１アクセス負荷を測定する第１負荷測定部と、を備え、各前記コンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタを備え、前記複数のコンピュータの少なくとも一つは、当該コンピュータが前記論理ユニットにアクセスする経路を管理する経路管理部を備え、前記経路管理部は、当該コンピュータから前記論理ユニットへの第２アクセス負荷を、前記論理ユニットごとに測定する第２負荷測定部と、前記第１及び第２負荷測定部によって測定された第１及び第２アクセス負荷に基づいて、一つの前記チャネルアダプタを前記論理ユニットごとに選択し、当該チャネルアダプタを経由するアクティブ経路を設定するアクティブ経路設定部と、を備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、アクセス負荷が分散するために、負荷の集中によるシステムの性能低下を防ぐことができる。さらに、同一の論理ユニットに対するアクセスの際に、同一のキャッシュメモリを利用することができるため、データ先読み等によって、システム性能が向上する。さらに、ストレージ装置に複数のコンピュータが接続されている場合には、システム全体の負荷を分散することによってシステム性能を向上させることができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施の形態を図面に基づいて説明する。
【０００８】
本実施の形態は、ストレージ装置と複数のホストとが接続されたコンピュータシステムにおいて、各ホストだけでなく、ストレージ装置が所定の時間当たりのアクセス負荷を測定し、測定されたアクセス負荷が各デバイスに可能な限り均等に分散されるようにアクセスの経路（パス）を設定するものである。
【０００９】
図１は、本発明の実施の形態のコンピュータシステムの構成を示すブロック図である。
【００１０】
本発明の実施の形態のコンピュータシステムは、一つ以上のホスト１０１、ストレージ装置１０８及びこれらを相互に通信可能に接続するStorage Area Network（ＳＡＮ）１０６によって構成される。
【００１１】
ホスト１０１は、コンピュータであり、ストレージ装置１０８にデータを書き込み、又は、ストレージ装置１０８からデータを読み出す。ホスト１０１は、少なくとも、ＣＰＵ１０２、メインメモリ１０３、入出力装置１０４及びホストバスアダプタ（ＨＢＡ）１０５からなる。
【００１２】
本実施の形態のコンピュータシステムは、図１に示すように、二つのホスト１０１を備える。しかし、本発明は、さらに多くのホスト１０１を備えるコンピュータシステムにも適用することができる。
【００１３】
図１において、ホストＡ及びホストＢは、それぞれ、ホスト名が「Ａ」及び「Ｂ」のホスト１０１である。
【００１４】
ＣＰＵ１０２は、メインメモリ１０３に格納されたプログラムを実行するプロセッサである。
【００１５】
メインメモリ１０３は、例えば、半導体メモリであり、ＣＰＵ１０２が実行するプログラムが格納される（図２参照）。さらに、メインメモリ１０３には、図４から図８に示すテーブルが格納される。
【００１６】
入出力装置１０４は、例えば、表示画面及びキーボードであり（図示省略）、マウスやプリンタ等の他の入出力手段を含んでもよい。
【００１７】
ＨＢＡ１０５は、ホスト１０１に一つ又は複数設けられ、ＳＡＮ１０６を介してストレージ装置１０８と通信する。図１の例では、各ホスト１０１が二つのＨＢＡ１０５を備える。各ＨＢＡ１０５は、ＨＢＡ識別子（ＨＢＡ−ＩＤ）によって識別される。図１のＨＢＡ１、ＨＢＡ２、ＨＢＡ３及びＨＢＡ４は、それぞれ、ＨＢＡ−ＩＤが「１」、「２」、「３」及び「４」のＨＢＡ１０５である。ホストＡがＨＢＡ１及びＨＢＡ２を備え、ホストＢがＨＢＡ３及びＨＢＡ４を備える。各ホスト１０１は、そのホスト１０１が備えるいずれのＨＢＡ１０５を使用してもストレージ装置１０８と通信することができる。
【００１８】
ストレージ装置１０８は、複数のディスクドライブ（図示省略）及びそれらを制御するコントローラ１１０によって構成されるディスクアレイ装置である。ストレージ装置１０８には、一つ以上の論理ユニット（ＬＵ）１０９が設定される。
【００１９】
ＬＵ１０９は、ホスト１０１が一つのディスクドライブとして認識する単位である。ＬＵ１０９は、論理的には一つのディスクドライブであるが、物理的には、一つのディスクドライブであってもよいし、一つのディスクドライブの一部の領域であってもよい。あるいは、ＬＵ１０９は、複数のディスクドライブの一部又は全部の領域であってもよい。図１の例では、ストレージ装置１０８に４つのＬＵ１０９が設定される。ここで、ＬＵ１からＬＵ４は、それぞれ、ＬＵ識別子（ＬＵ−ＩＤ）が「１」から「４」のＬＵ１０９である。
【００２０】
コントローラ１１０は、一つ以上のチャネルアダプタ（ＣＨＡ）１０７を備える。ＣＨＡ１０７は、ＳＡＮ１０６を介してホスト１０１と通信する。図１の例では、ストレージ装置１０８に三つのＣＨＡ１０７が設けられる。図１において、ＣＨＡ１からＣＨＡ３は、それぞれ、ＣＨＡ識別子（ＣＨＡ−ＩＤ）が「１」から「３」のＣＨＡ１０７である。ストレージ装置１０８は、いずれのＣＨＡ１０７を使用してもホスト１０１と通信することができる。
【００２１】
ＣＨＡ１０７は、少なくとも、ＣＰＵ１１１、メインメモリ１１２及びキャッシュメモリ１１３を備える。
【００２２】
ＣＰＵ１１１は、メインメモリ１１２に格納されたプログラムを実行するプロセッサである。
【００２３】
メインメモリ１１２は、例えば、半導体メモリであり、ＣＰＵ１１１が実行するプログラムが格納される（図３参照）。
【００２４】
キャッシュメモリ１１３は、ＬＵ１０９に書き込まれるデータ又はＬＵ１０９から読み出されたデータが一時的に格納されるメモリである。例えば、ＣＨＡ１０７は、ホスト１０１からデータの読み出し要求を受けたとき、その読み出し要求の対象のデータがキャッシュメモリ１１３内に存在すれば、ＬＵ１０９へアクセスせず、キャッシュメモリ１１３内のデータをホスト１０１に返送する。その結果、ＬＵ１０９へのアクセス（すなわち、ＬＵ１０９を構成するディスクドライブへのアクセス）が省略され、アクセス速度が向上する。
【００２５】
なお、同様のキャッシュメモリがＨＢＡ１０５に設けられてもよい（図示省略）。
【００２６】
コントローラ１１０は、ＣＨＡ１０７の他に、各ディスクドライブに接続されるディスクアダプタ（図示省略）、及び、ＣＨＡ１０７とディスクアダプタとの接続を切り替えるスイッチ（図示省略）等を含んでもよい。
【００２７】
ＳＡＮ１０６は、ホスト１０１のＨＢＡ１０５とストレージ装置１０８のＣＨＡ１０７とを通信可能に接続する。各ＨＢＡ１０５は、いずれのＣＨＡ１０７とも通信することができる。同様に、各ＣＨＡ１０７は、いずれのＨＢＡ１０５とも通信することができる。典型的なＳＡＮ１０６は、ファイバーチャネルスイッチ及びケーブルによって構成される。
【００２８】
ここで、パスとは、ホスト１０１からＬＵ１０９までのデータアクセス経路である。図１の例では、二つのＨＢＡ１０５と三つのＣＨＡ１０７があるため、ホスト１０１から一つのＬＵに至るパスは、６通り存在する。パスは、パスＩＤによって識別される。パスＩＤは、経由するＨＢＡ、ＣＨＡ及びＬＵの識別子（ＨＢＡ−ＩＤ、ＣＨＡ−ＩＤ及びＬＵ−ＩＤ）によって定められる。例えば、ＨＢＡ１及びＣＨＡ３を経由してＬＵ２に至るパスのパスＩＤは、「１３２」である。
【００２９】
図２は、本発明の実施の形態のメインメモリ１０３に格納されるプログラムの説明図である。
【００３０】
各ホスト１０１のメインメモリ１０３には、少なくとも、アプリケーションプログラム２０１、交代パス管理設定プログラム２０２及び交代パス管理プログラム２０３が格納される。いずれのプログラムも、ＣＰＵ１０２によって実行される。
【００３１】
交代パス管理設定プログラム２０２は、交代パス管理プログラム２０３のパラメータ等を設定するプログラムである。
【００３２】
交代パス管理プログラム２０３は、本発明の負荷分散を実現するプログラムである。交代パス管理プログラム２０３は、後述するアルゴリズムによって各ＬＵ１０９に対するアクティブパスを設定する。アプリケーションプログラム２０１から要求されたデータアクセス（Ｉ／Ｏ）は、交代パス管理プログラム２０３によって設定されたパスを経由して実行される。
【００３３】
交代パス管理プログラム２０３には、ホスト負荷測定サブプログラム２０４、アクティブパス設定サブプログラム２０５及びレポートサブプログラム２０９が含まれる。
【００３４】
レポートサブプログラム２０９は、アクティブパスの設定に関する情報及び各パスの負荷の状態に関する情報等を、入出力装置１０４に出力する。レポートサブプログラム２０９は、少なくとも、アクティブパスが再設定されたときには、これらの情報を出力する。
【００３５】
なお、アクティブパスについては、図４において説明する。
【００３６】
アクティブパス設定サブプログラム２０５には、さらに、初期アクティブパス設定サブプログラム２０６、アクティブパス再設定サブプログラムＡ２０７及びアクティブパス再設定サブプログラムＢ２０８が含まれる。
【００３７】
これらのサブプログラムについては、後で詳細に説明する。
【００３８】
図３は、本発明の実施の形態のメインメモリ１１２に格納されるプログラムの説明図である。
【００３９】
各ＣＨＡ１０７のメインメモリ１１２には、少なくとも、ストレージ負荷測定プログラム３０１が格納される。
【００４０】
ストレージ負荷測定プログラム３０１は、各ＣＨＡ１０７のアクセス負荷を測定するプログラムである。測定されるアクセス負荷は、例えば、単位時間当たりのアクセス数（すなわち、データＩ／Ｏの回数）、単位時間当たりのＩ／Ｏデータ量、又は、ＣＰＵ１１１の使用率等である。
【００４１】
なお、本実施の形態では、各ＣＨＡ１０７のＣＰＵ１１１がストレージ負荷測定プログラム３０１を実行するが、他のプロセッサがストレージ負荷測定プログラム３０１を実行しても本発明を実施することができる。例えば、ストレージ装置１０８全体を管理する管理プロセッサ（図示省略）が設けられ、その管理プロセッサがストレージ負荷測定プログラム３０１を実行して各ＣＨＡ１０７の負荷を測定してもよい。
【００４２】
図４は、本発明の実施の形態のパステーブルの説明図である。
【００４３】
パステーブル４００は、各ホスト１０１のメインメモリ１０３に格納されるテーブルであり、各ホスト１０１と、これに接続されたストレージ装置１０８との間に存在する全てのパスの状態を示す情報を含む。図４は、例として、図１のホストＡのメインメモリ１０３に格納されるパステーブル４００の内容を示す。したがって、図４は、ＨＢＡ１及びＨＢＡ２から各ＬＵ１０９に至る全てのパスに関する情報を示す。
【００４４】
なお、ホストＢのメインメモリ１０３には、ＨＢＡ３及びＨＢＡ４から各ＬＵ１０９に至る全てのパスに関して、図４と同様のパステーブル４００が格納される。
【００４５】
パステーブル４００は、ホストＡのオペレーティングシステム（ＯＳ）（図示省略）が起動したときに、初期アクティブパス設定サブプログラム２０６によって作成される。そして、ホスト負荷測定サブプログラム２０４、アクティブパス再設定サブプログラムＡ２０７及びアクティブパス再設定サブプログラムＢ２０８によって更新される。
【００４６】
パステーブル４００において、パス番号４０１は、ホストＡに関する全てのパスに一意に付与されたパスの番号である。新しいパスが発見されるたびに、新たなパス番号４０１が追加される。
【００４７】
障害状態４０２は、パスに障害が発生しているか否かを示す。パスを構成するＨＢＡ１０５、ＣＨＡ１０７及びＬＵ１０９のいずれにも障害が発生していない場合、障害状態４０２の値は「Ｎｏ」となる。一方、これらのうちいずれかに障害が発生している場合、障害状態４０２の値は「Ｙｅｓ」となる。障害状態４０２の値が「Ｙｅｓ」であるパスは、アクティブパス（後述）として設定することができない。
【００４８】
ホスト１０１がいずれかのパスを経由するＩ／Ｏを発行し、ＨＢＡ１０５が障害ステータスを返した場合、初期アクティブパス設定サブプログラム２０６等は、そのパスに障害が発生したと判定し、そのパスの障害状態４０２の値を「Ｙｅｓ」とする。いずれかのＬＵ１０９に障害が発生した場合、そのＬＵ１０９に至る全てのパスの障害状態４０２の値が「Ｙｅｓ」となる。
【００４９】
アクティブ情報４０３は、パスがアクティブパスとして設定されているか否かを示す。パスがアクティブパスとして設定されている場合、アクティブ情報４０３の値は「Ｙｅｓ」となり、アクティブパスとして設定されていない場合、アクティブ情報４０３の値は「Ｎｏ」となる。
【００５０】
ここで、アクティブパスとは、ホスト１０１からＬＵ１０９へのアクセス（Ｉ／Ｏ）が経由するパスである。アクティブパスでないパスは、データアクセスに寄与しないスタンバイパスである。例えば、図３において、ホスト１０１とＬＵ１との間には、パス番号３０１が「１」のパスから「６」のパスまで、６本のアクセス可能なパスがある。しかし実際には、ホスト１０１は、アクティブパス（図３の例では、パス番号４０１が「１」のパス）のみを経由してＬＵ１にアクセスする。
【００５１】
アクティブパスは、初期アクティブパス設定サブプログラム２０６によって最初に設定される。その後、必要に応じて（例えば、アクティブパスに障害が発生した場合又は特定の部位に負荷が集中した場合）、アクティブパス再設定サブプログラムＡ２０７又はアクティブパス再設定サブプログラムＢ２０８によって、スタンバイパスの一つが新たなアクティブパスとして設定（再設定）され、元のアクティブパスがスタンバイパスとして設定される。アクティブパスの設定及び再設定については、後で詳細に説明する。
【００５２】
ＨＢＡ−ＩＤ４０４は、パスが経由するＨＢＡ１０５の識別子（ＨＢＡ−ＩＤ）である。
【００５３】
ＣＨＡ−ＩＤ４０５は、パスが経由するＣＨＡ１０７の識別子（ＣＨＡ−ＩＤ）である。
【００５４】
ＬＵ−ＩＤ４０６は、パスが到達するＬＵ１０９の識別子（ＬＵ−ＩＤ）である。
【００５５】
ＨＢＡ−ＩＤ４０４、ＣＨＡ−ＩＤ４０５及びＬＵ−ＩＤ４０６は、初期アクティブパス設定サブプログラム２０６等が、ＳＣＳＩアドレスのポート番号、ターゲット番号及びＬＵ番号を取得するコマンドを発行することによって取得する。取得したポート番号がＨＢＡ−ＩＤ４０４に、ターゲット番号がＣＨＡ−ＩＤ４０５に、ＬＵ番号がＬＵ−ＩＤ４０６に相当する。
【００５６】
なお、ＨＢＡ−ＩＤ４０４、ＣＨＡ−ＩＤ４０５及びＬＵ−ＩＤ４０６の組み合わせが、各パスのパスＩＤである。
【００５７】
測定負荷４０７は、各パスについてホスト１０１によって実際に測定された負荷の量を示す。この負荷の量は、ホスト負荷測定サブプログラム２０４によって測定される所定時間当たりのアクセス（Ｉ／Ｏ）回数又はアクセスデータ量である（図１０参照）。
【００５８】
アクティブパス設定ＬＵ数４０８は、各パスをアクティブパスとして設定しているＬＵ１０９の数を示す。アクティブ情報４０３が「Ｙｅｓ」であるパスのアクティブパス設定ＬＵ数４０８は、「１」であり、アクティブ情報４０３が「Ｎｏ」であるパスのアクティブパス設定ＬＵ数４０８は、「０」である。アクティブパス設定ＬＵ数４０８は、アクティブパスが変更されたときに更新される。
【００５９】
パステーブル４００の設定については、後で具体例を挙げて説明する。
【００６０】
図５は、本発明の実施の形態のＬＵテーブルの説明図である。
【００６１】
ＬＵテーブル５００は、各ホスト１０１のメインメモリ１０３に格納されるテーブルであり、各ホスト１０１との間にパスが存在する全てのＬＵ１０９の状態を示す情報を含む。ＬＵテーブル５００は、各ホスト１０１のＯＳが起動したときに、初期アクティブパス設定サブプログラム２０６によって、パステーブル４００に基づいて作成される。そして、ホスト負荷測定サブプログラム２０４、アクティブパス再設定サブプログラムＡ２０７及びアクティブパス再設定サブプログラムＢ２０８によって更新される。図５は、例として、図１のホストＡのメインメモリ１０３に格納されるＬＵテーブル５００の内容を示す。図１の各ＬＵ１０９（ＬＵ１〜ＬＵ４）とホストＡとの間にパスが存在するため、図５は、ＬＵ１〜ＬＵ４に関する情報を示す。
【００６２】
なお、本実施の形態では、後述するように、ホストＢとＬＵ１〜ＬＵ４との間にもパスが存在する。このため、ホストＢのメインメモリ１０３にも、ＬＵ１〜ＬＵ４に関して、図５と同様のＬＵテーブル５００が格納される。
【００６３】
ＬＵテーブル５００において、ＬＵ−ＩＤ５０１は、各ＬＵ１０９を識別するＬＵ−ＩＤである。図５の例では、ＬＵ−ＩＤ５０１の値は、「１」から「４」までとなる。
【００６４】
測定負荷５０２は、各ＬＵ１０９について、ホスト１０１によって実際に測定された負荷の量を示す。各ＬＵの測定負荷５０２の値は、パステーブル４００の測定負荷４０７の値と同じである。例えば、ＬＵ−ＩＤ４０１が「１」であるＬＵ１０９（すなわち、ＬＵ１）の測定負荷５０２は、パステーブル４００のＬＵ−ＩＤ４０６が「１」であるパスの測定負荷４０７の値（図４及び図５の例では、パス番号４０１が「１」である測定負荷４０７の値「１５００」）である。
【００６５】
測定負荷５０２の値は、アクティブパスが再設定されたときにクリアされ、「０」となる。
【００６６】
現アクティブパスのパスＩＤ５０３は、各ＬＵ１０９について現在アクティブパスとして設定されているパスのパスＩＤを示す。すなわち、パステーブル４００において、アクティブパス設定ＬＵ数４０８が「１」であるパスのパスＩＤである。
【００６７】
新アクティブパスのパスＩＤ５０４は、アクティブパスが再設定されるときに、各ＬＵ１０９について新たにアクティブパスとして設定されるパスのパスＩＤを示す。新たにアクティブパスとして設定されるパスが未定である場合、新アクティブパスのパスＩＤ５０４の値は、「−１」となる。
【００６８】
ＬＵテーブル５００の設定については、後で具体例を挙げて説明する。
【００６９】
図６は、本発明の実施の形態のＨＢＡテーブルの説明図である。
【００７０】
ＨＢＡテーブル６００は、各ホスト１０１のメインメモリ１０３に格納されるテーブルであり、各ホスト１０１が備える全てのＨＢＡ１０５の状態を示す情報を含む。ＨＢＡテーブル６００は、各ホスト１０１のＯＳが起動したときに、初期アクティブパス設定サブプログラム２０６によって、パステーブル４００に基づいて作成される。そして、ホスト負荷測定サブプログラム２０４、アクティブパス再設定サブプログラムＡ２０７及びアクティブパス再設定サブプログラムＢ２０８によって更新される。
【００７１】
図６は、例として、図１のホストＡのメインメモリ１０３に格納されるＨＢＡテーブル６００の内容を示す。図１のホストＡは、ＨＢＡ１及びＨＢＡ２を備えるため、図６は、ＨＢＡ１及びＨＢＡ２に関する情報を示す。
【００７２】
なお、ホストＢは、ＨＢＡ３及びＨＢＡ４を備える。このため、ホストＢのメインメモリ１０３には、ＨＢＡ３及びＨＢＡ４に関して、図６と同様のＨＢＡテーブル６００が格納される。
【００７３】
ＨＢＡテーブル６００において、ＨＢＡ−ＩＤ６０１は、各ＨＢＡ１０５を識別するＨＢＡ−ＩＤである。図６の例では、ＨＢＡ−ＩＤ６０１の値は、「１」から「２」までとなる。
【００７４】
測定負荷６０２は、各ＨＢＡ１０５について実際に測定された負荷の量を示す。各ＨＢＡ１０５の測定負荷６０２の値は、パステーブル４００の測定負荷４０７の値を、該当するＨＢＡ−ＩＤ４０４について合計した値である。例えば、ＨＢＡ−ＩＤ６０１が「１」であるＨＢＡ１０５（すなわち、ＨＢＡ１）の測定負荷６０２は、パステーブル４００のＨＢＡ−ＩＤ４０４が「１」であるパスの測定負荷４０７の合計値（図４及び図６の例では、「５００」）である。
【００７５】
測定負荷６０２の値は、アクティブパスが再設定されたときにクリアされ、「０」となる。
【００７６】
割当済み負荷６０３には、アクティブパスを再設定する際に、各ＨＢＡ１０５に既に割り当てられたアクティブパスの負荷の値が格納される。
【００７７】
割当済み負荷６０３の値は、アクティブパスが再設定されるときにクリアされ、「０」となる。
【００７８】
アクティブパス設定ＬＵ数６０４は、各ＨＢＡ１０５が、いくつのＬＵ１０９に至るアクティブパスとして設定されているかを示す。各ＨＢＡ１０５のアクティブパス設定ＬＵ数６０４の値は、パステーブル４００のアクティブパス設定ＬＵ数４０８の値を、該当するＨＢＡ−ＩＤ４０４について合計した値である。例えば、ＨＢＡ−ＩＤ６０１が「１」であるＨＢＡ１０５（すなわち、ＨＢＡ１）のアクティブパス設定ＬＵ数６０４は、パステーブル４００のＨＢＡ−ＩＤ４０４が「１」であるパスのアクティブパス設定ＬＵ数４０８の合計値である。
【００７９】
図４の例では、パス番号４０１が「１」、「１１」、「１５」及び「２２」であるパスがアクティブパスとして設定されている。それらのうち、パス番号４０１が「１」及び「１５」の二つのパスのＨＢＡ−ＩＤ４０４が「１」である。このため、ＨＢＡ１のアクティブパス設定ＬＵ数６０４は、「２」となる。この場合、ＨＢＡ１は、二つのＬＵ１０９（図４の例では、ＬＵ１及びＬＵ３）に至るアクティブパスとして設定されている。言い換えると、ホストＡがＬＵ１及びＬＵ３に発行するＩ／ＯがＨＢＡ１を経由する。
【００８０】
アクティブパス設定ＬＵ数６０４の値は、アクティブパスが変更されたとき、その変更に合わせて更新される。
【００８１】
ＨＢＡテーブル６００の設定については、後で具体例を挙げて説明する。
【００８２】
図７は、本発明の実施の形態のＣＨＡテーブルの説明図である。
【００８３】
ＣＨＡテーブル７００は、各ホスト１０１のメインメモリ１０３に格納されるテーブルであり、各ホスト１０１との間にパスが存在する全てのＣＨＡ１０７の状態を示す情報を含む。ＣＨＡテーブル７００は、各ホスト１０１のＯＳが起動したときに、初期アクティブパス設定サブプログラム２０６によって、パステーブル４００に基づいて作成される。そして、負荷測定サブプログラム２０４、アクティブパス再設定サブプログラムＡ２０７及びアクティブパス再設定サブプログラムＢ２０８によって更新される。
【００８４】
図７は、例として、図１のホストＡのメインメモリ１０３に格納されるＣＨＡテーブル７００の内容を示す。図１のホストＡと、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３との間にパスが存在するため、図７は、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３に関する情報を示す。
【００８５】
なお、ホストＢと、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３との間にもパスが存在する。このため、ホストＢのメインメモリ１０３には、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３に関して、図７と同様のＣＨＡテーブル８００が格納される。
【００８６】
ＣＨＡテーブル７００において、ＣＨＡ−ＩＤ７０１は、各ＣＨＡ１０７を識別するＣＨＡ−ＩＤである。図７の例では、ＣＨＡ−ＩＤ７０１の値は、「１」から「３」までとなる。
【００８７】
測定負荷７０２は、各ＣＨＡ１０７について、ホストＡによって実際に測定された負荷の量を示す。測定負荷７０２の値は、後で説明するように（図９の説明参照）、ホストＡによって測定されたＩ／Ｏ数又はＩ／Ｏデータ量等である。各ＣＨＡ１０７の測定負荷７０２の値は、パステーブル４００の測定負荷４０７の値を、該当するＣＨＡ−ＩＤ４０５について合計した値である。
【００８８】
図４の例では、パス番号４０１が「１」、「１１」、「１５」及び「２２」であるパスがアクティブパスとして設定されている。それらのうち、パス番号４０１が「１」及び「２２」の二つのパスのＣＨＡ−ＩＤ４０５が「１」であり、それらの測定負荷４０７はそれぞれ「１５００」及び「５００」である。このため、ＣＨＡ−ＩＤ７０１が「１」であるＣＨＡ１０７（すなわち、ＣＨＡ１）の測定負荷７０２は、「１５００」及び「５００」の合計値「２０００」である。同様にして、ＣＨＡ２及びＣＨＡ３の測定負荷７０２は、それぞれ、「１２００」及び「８００」である。
【００８９】
各ＣＨＡ１０７は、複数のホスト１０１からのＩ／Ｏを受ける場合がある。しかし、各ホスト１０１は、他のホスト１０１がどれだけのＩ／Ｏを各ＣＨＡ１０７に発行したか知ることができない。したがって、ホストＡのＣＨＡテーブル７００の測定負荷７０２は、各ＣＨＡ１０７が実際に受けている全Ｉ／Ｏのうち、ホストＡによって発行されたＩ／Ｏによる負荷である。
【００９０】
測定負荷７０２の値は、アクティブパスが再設定されたときにクリアされ、「０」となる。
【００９１】
割当済み負荷７０３には、アクティブパスを再設定する際に、各ＣＨＡ１０７に既に割り当てられたアクティブパスの負荷の値が格納される。
【００９２】
割当済み負荷７０３の値は、アクティブパスが再設定されるときにクリアされ、「０」となる。
【００９３】
自ホストアクティブパス設定ＬＵ数７０４は、各ＣＨＡ１０７が、ホストＡによって、いくつのＬＵ１０９に至るアクティブパスとして設定されているかを示す。各ＣＨＡ１０７は、複数のホスト１０１からアクティブパスとして設定されている場合がある。しかし、各ホスト１０１は、他のホスト１０１がいくつのアクティブパスを各ＣＨＡ１０７に設定しているか知ることができない。したがって、ホストＡの自ホストアクティブパス設定ＬＵ数７０４は、各ＣＨＡ１０７に設定されたアクティブパス数のうち、ホストＡが設定したアクティブパスの数である。
【００９４】
各ＣＨＡ１０７のアクティブパス設定ＬＵ数７０４の値は、パステーブル４００のアクティブパス設定ＬＵ数４０８の値を、該当するＣＨＡ−ＩＤ４０５について合計した値である。例えば、ＣＨＡ−ＩＤ７０１が「１」であるＣＨＡ１０７（すなわち、ＣＨＡ１）のアクティブパス設定ＬＵ数７０４は、パステーブル４００のＣＨＡ−ＩＤ４０５が「１」であるパスのアクティブパス設定ＬＵ数４０８の合計値である。
【００９５】
図４の例では、パス番号４０１が「１」、「１１」、「１５」及び「２２」であるパスがアクティブパスとして設定されている。それらのうち、パス番号４０１が「１」及び「２２」の二つのパスのＣＨＡ−ＩＤ４０５が「１」である。このため、ＣＨＡ１のアクティブパス設定ＬＵ数７０４は、「２」となる。この場合、ＣＨＡ１は、二つのＬＵ１０９（図４の例では、ＬＵ１及びＬＵ４）に至るアクティブパスとして設定されている。言い換えると、ホストＡがＬＵ１及びＬＵ４に発行するＩ／ＯがＣＨＡ１を経由する。
【００９６】
アクティブパス設定ＬＵ数７０４の値は、アクティブパスが変更されたとき、その変更に合わせて更新される。
【００９７】
ＣＨＡテーブル７００の設定については、後で具体例を挙げて説明する。
【００９８】
なお、ＬＵテーブル５００、ＨＢＡテーブル６００及びＣＨＡテーブル７００は、次のような方法で作成することができる。
【００９９】
例えば、ホスト１０１のＨＢＡ１０５がＬＵ１０９を検出し、その検出されたＬＵ１０９に関する情報をホスト１０１のオペレーティングシステム（ＯＳ）がＨＢＡ１０５から取得してもよい。ホスト１０１は、検出されたＬＵ１０９に対してＳＣＳＩのコマンドを使用することによって、パスに関する情報（例えば、どのＨＢＡ１０５及びＣＨＡ１０７を経由するかを示す情報等）を取得することができる。ホスト１０１は、この情報に基づいて、使用可能なＬＵ１０９、ＨＢＡ１０５及びＣＨＡ１０７を把握し、ＬＵテーブル５００、ＨＢＡテーブル６００及びＣＨＡテーブル７００を作成することができる。以上のように、ホスト１０１は、使用可能なＬＵ１０９及びＣＨＡ１０７を検出することができる。
【０１００】
複数のホスト１０１が同一のＬＵ１０９及びＣＨＡ１０７を検出することができる場合、これらの複数のホスト１０１は、検出された同一のＬＵ１０９及びＣＨＡ１０７を共有する。
【０１０１】
一方、ＳＡＮ１０６のファイバーチャネルスイッチ（図示省略）のゾーニング又はストレージ装置１０８のＬＵＮマスキング等の機能によって、ホスト１０１のＯＳが検出することができないＬＵ１０９を設定することもできる。したがって、これらの機能によって、複数のホスト１０１がそれぞれ別のＬＵ１０９を使用するように設定することもできる。
【０１０２】
図８は、本発明の実施の形態の負荷情報テーブルの説明図である。
【０１０３】
負荷情報テーブル８００は、各ホスト１０１のメインメモリ１０３に格納されるテーブルであり、各ホスト１０１との間にパスが存在する全てのＣＨＡ１０７の負荷に関する情報を含む。負荷情報テーブル８００は、ＣＨＡテーブル７００の測定負荷７０２及びストレージ負荷測定プログラム３０１によって測定された負荷に基づいて作成される。
【０１０４】
図８は、例として、図１のホストＡのメインメモリ１０３に格納される負荷情報テーブル８００の内容を示す。図１のホストＡと、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３との間にパスが存在するため、図８は、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３の負荷に関する情報を示す。
【０１０５】
なお、ホストＢと、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３との間にもパスが存在する。このため、ホストＢのメインメモリ１０３には、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３に関して、図８と同様の負荷情報テーブル８００が格納される。
【０１０６】
負荷情報テーブル８００において、ＣＨＡ−ＩＤ８０１は、各ＣＨＡ１０７を識別するＣＨＡ−ＩＤである。図８の例では、ＣＨＡ−ＩＤ８０１の値は、「１」から「３」までとなる。
【０１０７】
ストレージ測定負荷８０２は、各ＣＨＡ１０７について、ストレージ装置１０８のストレージ負荷測定プログラム３０１によって実際に測定された所定の時間当たりの負荷の量を示す。ストレージ測定負荷８０２の値は、ストレージ負荷測定プログラム３０１によって測定された所定の時間当たりのＩ／Ｏ数又はＩ／Ｏデータ量等である。各ホスト１０１は、アクティブパスの初期設定時（図１０参照）及び再設定時（図１８参照）に、例えば、ＳＣＳＩのＩｎｑｕｉｒｙコマンドをストレージ装置１０８に発行することによって、ストレージ測定負荷８０２を取得する。
【０１０８】
例えば、ストレージ負荷測定プログラム３０１が測定した負荷の累積値がメインメモリ１１２等に保持されていてもよい。この場合、各ホスト１０１は、その累積値を所定の時間ごとに取得するとともに、前回取得した累積値をメインメモリ１０３等に保持する。そして、今回取得した累積値と前回取得した累積値との差を算出して、ストレージ測定負荷８０２としてもよい。その結果、ストレージ測定負荷８０２は、所定の時間当たりの負荷の量となる。
【０１０９】
図８の例では、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３のストレージ測定負荷８０２は、それぞれ、「２４００」、「２２００」及び「３０００」である。
【０１１０】
自ホスト測定負荷８０３は、各ＣＨＡ１０７について、ホストＡによって実際に測定された負荷の量を示す。すなわち、ホストＡの自ホスト測定負荷８０３は、ホストＡのＣＨＡテーブル７００の測定負荷７０２と同じ値となる。
【０１１１】
他ホスト負荷８０４は、各ＣＨＡ１０７について、ホストＡ以外のホスト１０１からのアクセスによる負荷の量を示す。各ＣＨＡ１０７に、ホストＡ以外の複数のホスト１０１が接続されている場合、他ホスト負荷８０４は、それらの複数のホスト１０１からのアクセスによる負荷の量の合計である。図１の例では、各ＣＨＡ１０７にホストＡとホストＢのみが接続されているため、図８の他ホスト負荷８０４は、ホストＢからのアクセスによる負荷の量である。
【０１１２】
ストレージ測定負荷８０２が全てのホスト１０１からのアクセスによる負荷の量であり、自ホスト測定負荷８０３が自ホスト（ホストＡ）からのアクセスによる負荷の量であるため、他ホスト負荷８０４は、ストレージ測定負荷８０２から自ホスト測定負荷８０３を減算することによって算出される。図８の例では、ＣＨＡ１のストレージ測定負荷８０２が「２４００」であり、自ホスト測定負荷８０３が「２０００」である。このため、ＣＨＡ１の他ホスト負荷８０４は、「２４００」から「２０００」を減算した「４００」である。同様にして、ＣＨＡ２及びＣＨＡ３の他ホスト負荷８０４は、それぞれ、「１０００」及び「２２００」である。
【０１１３】
次に、本実施の形態の各プログラムが実行する処理について説明する。なお、図９から図１９は、便宜上、図１のホストＡが実行する場合を例として説明する。図１のホストＢも、同様の処理を実行する。
【０１１４】
図９は、本発明の実施の形態の交代パス管理プログラム２０３のフローチャートである。
【０１１５】
ホストＡのＯＳが起動した直後には、ホストＡとストレージ装置１０８内の各ＬＵ１０９との間には、使用可能なパスは存在しても、アクティブパスは設定されていない。このため、ホストＡのＯＳが起動すると、交代パス管理プログラム２０３の実行が開始し（９０１）、アクティブパスを設定する（９０２）。以下の説明において、交代パス管理プログラム２０３によって最初に設定されるアクティブパスを初期アクティブパスと記載する。具体的には、交代パス管理プログラム２０３によって呼び出された初期アクティブパス設定サブプログラム２０６が、初期アクティブパスを設定する（図１０〜図１２参照）。
【０１１６】
次に、交代パス管理プログラム２０３は、交代パス管理設定プログラム２０２を呼び出して、測定負荷種別及び測定期間を設定する（９０３）。
【０１１７】
測定負荷種別とは、負荷測定サブプログラム２０４が測定する対象である。ホスト１０１からのアクセスによる負荷を表す値としては、「Ｉ／Ｏ数」、「Ｉ／Ｏデータ量」又は「ＣＰＵ利用率」等がある。本実施の形態では、測定負荷種別として、「Ｉ／Ｏ数」又は「Ｉ／Ｏデータ量」のいずれかが設定される。ホストＡのユーザは、「Ｉ／Ｏ数」又は「Ｉ／Ｏデータ量」のいずれかを設定することができる。しかし、負荷を表す他の値が設定されても、本発明を実施することができる。
【０１１８】
測定期間とは、負荷測定サブプログラム２０４が、設定された測定対象を測定する期間であり、ホストＡのユーザによって、任意の期間が設定される。
【０１１９】
次に、交代パス管理プログラム２０３は、ステップ９０３の設定に従って負荷を測定する（９０４）。具体的には、交代パス管理プログラム２０３によって呼び出された負荷測定サブプログラム２０４が、ステップ９０３の設定に従って負荷を測定する（図１２参照）。なお、Ｉ／Ｏ（すなわち、データアクセス）が発生するたびに、負荷測定サブプログラム２０４がそのアクセスによる負荷を測定する。
【０１２０】
例えば、測定負荷種別として「Ｉ／Ｏ数」が設定され、測定期間として「１時間」が設定されると、負荷測定サブプログラム２０４は、各ＬＵ１０９について、１時間ごとのＩ／Ｏ数を測定し、測定した値を測定負荷４０７としてパステーブル４００に格納する。
【０１２１】
次に、交代パス管理プログラム２０３は、ホストＡがシャットダウンされるか否かを判定する（９０５）。具体的には、ホストＡのユーザがホスト１０１をシャットダウンするコマンドを発行したか否かを判定する。ホスト１０１がシャットダウンされる場合は、交代パス管理プログラム２０３を終了する（９０６）。
【０１２２】
一方、ホストＡがシャットダウンされない場合、交代パス管理プログラム２０３は、パス数に変動があったか否かを判定する（９０７）。ここで、パス数に変動があった場合とは、アクティブパスが停止した場合又は使用可能なパスが新たに追加された場合である。アクティブパスが停止した場合とは、交代パス管理プログラム２０３が、アクティブパスを構成するデバイス（すなわち、ＨＢＡ１０５又はＣＨＡ１０７）で障害を検出した場合、又は、これらのデバイスのいずれかが撤去されたことを検出した場合等である。使用可能なパスが新たに追加された場合とは、交代パス管理プログラム２０３が、デバイスの障害からの回復を検出した場合、又は、新たなデバイスの追加を検出した場合等である。
【０１２３】
パス数に変動があった場合、交代パス管理プログラム２０３は、アクティブパスを再設定する（９０８）。具体的には、交代パス管理プログラム２０３によって呼び出されたアクティブパス再設定サブプログラムＡ２０７が、アクティブパスを再設定する（図１４〜図１７参照）。
【０１２４】
なお、アクティブパスの「再設定」とは、既に設定されているアクティブパスを見直し、負荷がより均等に分散するように設定しなおす処理である。
【０１２５】
一方、パス数に変動がない場合、交代パス管理プログラム２０３は、アクティブパスを再設定するタイミングであるか否かを判定する（９０９）。具体的には、ステップ９０３で設定された測定期間が経過したか否かを判定する。
【０１２６】
ホストＡのユーザは、予め、アクティブパスを再設定する間隔（例えば、１時間、１日、１週間、１ヶ月又は１年）を、上記の測定期間として設定することができる。ユーザが「１時間」と設定した場合、ステップ９０９において、前回アクティブパスが再設定（又は初期設定）されてから１時間経過したか否かを判定する。１時間経過したと判定された場合は、アクティブパスを再設定するタイミングであるため、交代パス管理プログラム２０３は、アクティブパスを再設定する（９１０）。具体的には、交代パス管理プログラム２０３によって呼び出されたアクティブパス再設定サブプログラムＢ２０８が、アクティブパスを再設定する（図１８、図１９等参照）。
【０１２７】
なお、アクティブパスの再設定は、上記のように所定の間隔で実行するだけでなく、ホストＡのユーザからの要求を受けて実行してもよい。この場合、交代パス管理プログラム２０３は、ステップ９０９において、ユーザからアクティブパス再設定要求が発行されたか否かを判定する。再設定要求が発行されたと判定された場合、アクティブパスを再設定するタイミングであるため、ステップ９１０に進む。
【０１２８】
一方、上記の所定の間隔が経過しておらず、かつ、ユーザからの再設定要求も発行されていない場合は、アクティブパスを再設定するタイミングでないため、ステップ９０４に戻る。
【０１２９】
アクティブパス再設定サブプログラムＡ２０７又はアクティブパス再設定サブプログラムＢ２０８が実行された場合、交代パス管理プログラム２０３は、次に、レポートを出力する（９１１）。具体的には、交代パス管理プログラム２０３に呼び出されたレポートサブプログラム２０９が、再設定されたアクティブパスに関する情報をホストＡの入出力装置１０４に表示する。レポートを出力した後、ステップ９０４に戻る。
【０１３０】
図１０は、本発明の実施の形態の初期アクティブパス設定サブプログラム２０６のフローチャートである。
【０１３１】
図９のステップ９０２において、交代パス管理プログラム２０３から呼び出されることによって、初期アクティブパス設定サブプログラム２０６の実行が開始する（１００１）。このとき、交代パス管理プログラム２０３は、ホストＡからアクセス可能な全てのＬＵ１０９（図１の例では、ＬＵ１〜ＬＵ４）を認識している。
【０１３２】
最初に、初期アクティブパス設定サブプログラム２０６は、パステーブル４００を作成する（１００２）。この時点では、パステーブル４００の値は全て初期値である。すなわち、障害状態４０２及びアクティブ情報４０３の値は全て「Ｎｏ」であり、測定負荷４０７及びアクティブパス設定ＬＵ数４０８の値は全て「０」である。
【０１３３】
次に、初期アクティブパス設定サブプログラム２０６は、ＬＵテーブル５００、ＨＢＡテーブル６００、ＣＨＡテーブル７００及び負荷情報テーブル８００を作成する（１００３）。この時点では、各テーブルの値は全て初期値である。すなわち、測定負荷５０２、６０２、７０２、割当済み負荷６０３、７０３、アクティブパス設定ＬＵ数６０４及び７０４の値は、全て「０」である。ストレージ測定負荷８０２、自ホスト測定負荷８０３及び他ホスト負荷８０４の値も全て「０」である。また、現アクティブパスのパスＩＤ５０３及び新アクティブパスのパスＩＤ５０４の値は、未定である。
【０１３４】
次に、初期アクティブパス設定サブプログラム２０６は、各ＣＨＡ１０７について、ストレージ測定負荷を取得する（１００４）。具体的には、初期アクティブパス設定サブプログラム２０６は、ＳＣＳＩのＩｎｑｕｉｒｙコマンドを発行して、ストレージ負荷測定プログラム３０１が測定した負荷を取得し、その値を負荷情報テーブル８００のストレージ測定負荷８０２として格納する。取得した値が負荷の累積値である場合は、取得した値から所定の時間当たりの負荷を算出して、格納する。
【０１３５】
次に、初期アクティブパス設定サブプログラム２０６は、全ＬＵ１０９のアクティブパスが設定されたか否かを判定する（１００５）。
【０１３６】
全ＬＵ１０９のアクティブパスが設定されていないと判定された場合、初期アクティブパス設定サブプログラム２０６は、アクティブパスが設定されておらず、かつ、ＬＵ−ＩＤが最も小さい値であるＬＵ１０９（以下、ＬＵｍと記載する。ここで、「ｍ」はＬＵ−ＩＤ）を選択する（１００６）。
【０１３７】
次に、初期アクティブパス設定サブプログラム２０６は、選択されたＬＵｍについて、初期ＣＨＡ選択処理（１００７）及び初期ＨＢＡ選択処理（１００８）を順次実行する。これらの処理については、後で詳細に説明する（図１１、図１２参照）。
【０１３８】
次に、初期アクティブパス設定サブプログラム２０６は、ステップ１００７及びステップ１００８において選択されたＨＢＡ１０５及びＣＨＡ１０７を経由するパス（図１０の説明において、「パスＡ」と記載する）を、ＬＵｍへのアクティブパス（初期アクティブパス）として設定する（１００９）。
【０１３９】
具体的には、パステーブル４００において、パスＡのパスＩＤに対応するアクティブ情報４０３を「Ｙｅｓ」とする。さらに、パスＡのパスＩＤに対応するアクティブパス設定ＬＵ数４０８に「１」を加算する。さらに、ＨＢＡテーブル６００において、パスＡに対応するＨＢＡ−ＩＤ６０１のアクティブパス設定ＬＵ数６０４に「１」を加算する。さらに、ＣＨＡテーブル７００において、パスＡに対応するＣＨＡ−ＩＤ７０１の自ホストアクティブパス設定ＬＵ数７０４に「１」を加算する。さらに、ＬＵテーブル５００において、パスＡに対応するＬＵ−ＩＤの新アクティブパスのパスＩＤ５０４を、パスＡのパスＩＤに変更する。
【０１４０】
さらに、全ＣＨＡ１０７のストレージ測定負荷８０２の合計をホストＡが認識しているＬＵ１０９の数で除算した値（すなわち、平均負荷）を、ＣＨＡテーブル７００のパスＡに対応する割当済み負荷７０３に加算する。この時点ではホストＡによるアクセスの実績がないため、他のホスト１０１による平均負荷をホストＡによる負荷の代わりに使用する。
【０１４１】
初期アクティブパス設定サブプログラム２０６は、ステップ１００９を実行した後、ステップ１００５に戻る。
【０１４２】
一方、ステップ１００５において、全ＬＵ１０９のアクティブパスが設定されたと判定された場合、初期アクティブパス設定サブプログラム２０６は、設定されたアクティブパスを実際に運用するため、ＬＵテーブル４００の新アクティブパスのパスＩＤ４０４の値を、現アクティブパスのパスＩＤ４０３に複写する（１０１０）。その結果、交代パス管理プログラム２０３は、新しいアクティブパスの運用を開始する。すなわち、ステップ１０１０が実行された後、交代パス管理プログラム２０３は、アプリケーションプログラム２０１から発行されたＩ／Ｏを、新しいアクティブパスに割り当てる。
【０１４３】
以上で、初期アクティブパス設定サブプログラム２０６の実行が終了する（１０１１）。
【０１４４】
図１１は、本発明の実施の形態の初期ＣＨＡ選択処理のフローチャートである。
【０１４５】
初期ＣＨＡ選択処理は、図１０のステップ１００７において、初期アクティブパス設定サブプログラム２０６によって実行される。初期アクティブパス設定サブプログラム２０６は、初期ＣＨＡ選択処理を実行するときに、ＣＨＡテーブル７００及び負荷情報テーブル８００を参照する。この処理によって選択されたＣＨＡ１０７は、図１０のステップ１００６において選択されたＬＵｍへの初期アクティブパスとして設定される。
【０１４６】
初期ＣＨＡ選択処理が開始されると（１１０１）、初期アクティブパス設定サブプログラム２０６は、最初に、ホストＡのＯＳが認識している全ＣＨＡ１０７において、ストレージ測定負荷８０２が「０」であるか否かを判定する（１１０２）。
【０１４７】
ステップ１１０２において、ストレージ測定負荷８０２が全ＣＨＡ１０７において「０」であると判定された場合、いずれのＣＨＡ１０７も、ホストＡ以外のホスト１０１からアクセスされたことがない。図１の例では、いずれのＣＨＡ１０７もホストＢからアクセスされたことがない。さらに、この時点では、ホストＡからのアクティブパスも設定されていないため、結局、いずれのＣＨＡ１０７も、ホストＡ及びＢからのアクセスを受けたことがない。この場合、過去に測定された負荷を参照して、負荷が分散するようにアクティブパスを設定することができない。このため、処理はステップ１１０６に進む（後述）。
【０１４８】
一方、ステップ１１０２において、ストレージ測定負荷８０２が全ＣＨＡ１０７において「０」でない（言い換えると、少なくとも一つのＣＨＡ１０７において、ストレージ測定負荷８０２が「０」でない）と判定された場合、少なくとも一つのＣＨＡ１０７が、ホストＢからアクセスを受けたことがある。この場合、ホストＡから各ＬＵ１０９へのアクティブパスは、ホストＢからのアクセスを考慮して設定される必要がある。例えば、いずれかのＣＨＡ１０７にホストＢからのアクセスが集中している場合、そのＣＨＡ１０７を避けてホストＡからのアクティブパスを設定することによって、負荷が適切に分散される。
【０１４９】
このため、初期アクティブパス設定サブプログラム２０６は、ＣＨＡテーブル７００の割当済み負荷７０３に、各ＣＨＡ１０７について測定されたストレージ測定負荷８０２の値を初期値として設定する（１１０３）。この時点では、ホストＡが各ＣＨＡ１０７にアクセスしたことがないため、ストレージ測定負荷８０２の値は、ホストＢからのアクセスによる負荷の値である。
【０１５０】
次に、初期アクティブパス設定サブプログラム２０６は、全ＣＨＡ１０７のうち、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が複数あるか否かを判定する（１１０４）。
【０１５１】
ここで、選択候補とは、最終的に初期アクティブパスとして選択されるＣＨＡ１０７の候補である。「まだ選択候補になったことがない」とは、当該初期ＣＨＡ選択処理において選択候補になったことがないという意味である。後述するように、ステップ１１０５等でＣＨＡ１０７が選択候補になっても、そのＣＨＡ１０７が障害等のために使用できない場合は、そのＣＨＡ１０７を選択候補から除外して、その他のＣＨＡ１０７についてステップ１１０４以降の処理が行われる。ステップ１１０４において、まだ選択候補になったことがないＣＨＡ１０７とは、そのようにして除外されていないＣＨＡ１０７を意味する。
【０１５２】
ステップ１１０４において、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が複数ないと判定された場合、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が一つのみ存在する。負荷を可能な限り均等に分散させるためには、割当済み負荷７０３の値が最小であるＣＨＡ１０７にＬＵｍへのアクティブパスを割り当てることが望ましい。このため、初期アクティブパス設定サブプログラム２０６は、割当済み負荷７０３の値が最小であるＣＨＡ１０７を選択候補とする（１１０５）。
【０１５３】
一方、ステップ１１０４において、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が複数あると判定された場合、それらの複数のＣＨＡ１０７からアクティブパスに設定されるＣＨＡ１０７を選択する必要がある。このため、初期アクティブパス設定サブプログラム２０６は、それらの複数のＣＨＡ１０７のうち、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が複数あるか否かを判定する（１１０６）。
【０１５４】
ステップ１１０６において、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が複数ないと判定された場合、割当済み負荷７０３の値が最小であり、かつ、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が一つのみ存在する。負荷を可能な限り均等に分散させるためには、割当済み負荷７０３の値が最小である複数のＣＨＡ１０７のうち、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７にＬＵｍへのアクティブパスを割り当てることが望ましい。このため、初期アクティブパス設定サブプログラム２０６は、そのＣＨＡ１０７を選択候補とする（１１０７）。
【０１５５】
一方、ステップ１１０６において、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が複数あると判定された場合、それらの複数のＣＨＡ１０７のいずれを選択しても、同じように負荷が分散される。このため、初期アクティブパス設定サブプログラム２０６は、それらの複数のＣＨＡ１０７のうち、ＣＨＡ−ＩＤ７０１が最小のＣＨＡ１０７を選択候補とする（１１０８）。
【０１５６】
ステップ１１０５、１１０７又は１１０８においてＣＨＡ１０７が選択候補とされると、初期アクティブパス設定サブプログラム２０６は、選択候補のＣＨＡ１０７を経由する稼動状態のパスがあるか否かを判定する（１１０９）。稼動状態のパスとは、ホストＡからＬＵｍまでのＩ／Ｏを伝達できる（すなわち、使用可能な）パスである。例えば、選択候補のＣＨＡ１０７に障害が発生している場合、選択候補のＣＨＡ１０７を経由する稼動状態のパスがない。この場合、選択候補のＣＨＡ１０７を経由するいずれのパスもアクティブパスとして設定することができない。
【０１５７】
ステップ１１０９において、選択候補のＣＨＡ１０７を経由する稼動状態のパスがあると判定された場合、選択候補のＣＨＡ１０７をアクティブパスとして設定することができる。このため、初期アクティブパス設定サブプログラム２０６は、選択候補のＣＨＡ１０７を最終的に選択して（１１１２）、初期ＣＨＡ選択処理を終了する（１１１３）。その後、ステップ１１０９において「ある」と判定された稼動状態のパスを対象として、初期ＨＢＡ選択処理が実行される（図１２参照）。
【０１５８】
ステップ１１０９において、選択候補のＣＨＡ１０７を経由する稼動状態のパスがないと判定された場合、選択候補のＣＨＡ１０７をアクティブパスとして設定することができない。このため、初期アクティブパス設定サブプログラム２０６は、この時点で選択候補となっているＣＨＡ１０７を、選択候補から除外する。そして、まだ選択候補になったことがないＣＨＡ１０７があるか否かを判定する（１１１０）。
【０１５９】
ステップ１１１０において、まだ選択候補になったことがないＣＨＡ１０７があると判定された場合、そのＣＨＡ１０７について選択するか否かを判定するために、ステップ１１０４に戻る。
【０１６０】
一方、ステップ１１１０において、まだ選択候補になったことがないＣＨＡ１０７がないと判定された場合、ＬＵｍへのアクティブパスとして設定することができるＣＨＡ１０７が存在しない。このため、エラー処理を実行する（１１１１）。
【０１６１】
図１２は、本発明の実施の形態の初期ＨＢＡ選択処理のフローチャートである。
【０１６２】
初期ＨＢＡ選択処理は、図１０のステップ１００８において、初期アクティブパス設定サブプログラム２０６によって実行される。初期アクティブパス設定サブプログラム２０６は、初期ＨＢＡ選択処理を実行するときに、ＨＢＡテーブル６００を参照する。この処理によって選択されたＨＢＡ１０５は、図１０のステップ１００６において選択されたＬＵｍへの初期アクティブパスとして設定される。
【０１６３】
初期ＨＢＡ選択処理が開始されると（１２０１）、初期アクティブパス設定サブプログラム２０６は、最初に、対象のパスの中に、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が複数あるか否かを判定する（１２０２）。ここで、対象のパスとは、初期ＣＨＡ選択処理（図１１）のステップ１１０９において「ある」と判定された稼動状態のパスである。
【０１６４】
ステップ１２０２において、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が複数ないと判定された場合、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が一つのみ存在する。負荷を可能な限り均等に分散させるためには、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５にＬＵｍへのアクティブパスを割り当てることが望ましい。このため、初期アクティブパス設定サブプログラム２０６は、そのＨＢＡ１０５を選択する（１２０３）。
【０１６５】
一方、ステップ１２０２において、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が複数あると判定された場合、それらの複数のＨＢＡ１０５のいずれを選択しても、同じように負荷が分散される。このため、初期アクティブパス設定サブプログラム２０６は、それらの複数のＨＢＡ１０５のうち、ＨＢＡ−ＩＤ６０１が最小のＨＢＡ１０５を選択する（１２０４）。
【０１６６】
以上で、初期ＨＢＡ選択処理を終了する（１２０５）。
【０１６７】
以上の図１０から図１２に示す処理によれば、ホストＡが起動するときに、既にホストＢがストレージ装置１０８を使用している場合、ホストＢからのアクセスによる負荷を参照して、各ＣＨＡの負荷が可能な限り均等に分散されるようにホストＡのアクティブパスが設定される。その結果、ストレージ装置１０８を多数のホスト１０１が使用している場合にも、各ＣＨＡの負荷が適切に分散される。
【０１６８】
図１３は、本発明の実施の形態のホスト負荷測定サブプログラム２０４のフローチャートである。
【０１６９】
図９のステップ９０４において呼び出されることによって、ホスト負荷測定サブプログラム２０４の実行が開始する（１３０１）。
【０１７０】
最初に、ホスト負荷測定サブプログラム２０４は、ホスト１０１からいずれかのＬＵ１０９へのデータアクセス（Ｉ／Ｏ）を、そのＬＵ１０９について設定されたアクティブパスＡに割り当てる（１３０２）。
【０１７１】
次に、ホスト負荷測定サブプログラム２０４は、測定負荷種別を判定する（１３０３）。この測定負荷種別は、図９のステップ９０３において設定されたものである。
【０１７２】
ステップ１３０３において、測定負荷種別として「Ｉ／Ｏ数」が設定されていると判定された場合、ホスト負荷測定サブプログラム２０４は、アクティブパスＡについて発行されたデータＩ／Ｏの回数を測定する（１３０４）。
【０１７３】
一方、ステップ１３０３において、測定負荷種別として「Ｉ／Ｏデータ量」が設定されていると判定された場合、ホスト負荷測定サブプログラム２０４は、アクティブパスＡについて発行されたデータＩ／Ｏのデータ量を測定する（１３０５）。
【０１７４】
次に、ホスト負荷測定サブプログラム２０４は、各テーブルの値を更新する（１３０６）。具体的には、パステーブル４００のアクティブパスＡに該当する測定負荷４０７の値に、ステップ１３０４又は１３０５において測定された値を加算する。さらに、ＬＵテーブル５００、ＨＢＡテーブル６００及びＣＨＡテーブル７００において、アクティブパスＡに含まれるＬＵ、ＨＢＡ及びＣＨＡの測定負荷５０２、６０２及び７０２の値に、ステップ１３０４又は１３０５において測定された値を加算する。
【０１７５】
以上で、ホスト負荷測定サブプログラム２０４の実行が終了する（１３０７）。
【０１７６】
図１４は、本発明の実施の形態のアクティブパス再設定サブプログラムＡ２０７のフローチャートである。
【０１７７】
図９のステップ９０８において、交代パス管理プログラム２０３から呼び出されることによって、アクティブパス再設定サブプログラムＡ２０７の実行が開始する（１４０１）。
【０１７８】
最初に、アクティブパス再設定サブプログラムＡ２０７は、使用可能なパスが新たに追加されたか、アクティブパスが停止したかを判定する（１４０２）。
【０１７９】
ステップ１４０２において、アクティブパスが停止したと判定された場合、停止したアクティブパスに代わるアクティブパスを設定しなければならない。その結果、停止したアクティブパス上を経由していたアクセスが、他のパスに割り当てられる。このため、アクティブパス再設定サブプログラムＡ２０７は、アクティブパス停止時のアクティブパス再設定処理を実行する（１４０３）。この処理については、後で詳細に説明する（図１５参照）。
【０１８０】
ステップ１４０３の処理が終了すると、アクティブパス再設定サブプログラムＡ２０７の処理が終了する（１４１０）。
【０１８１】
一方、ステップ１４０２において、使用可能なパスが新たに追加されたと判定された場合、アクティブパス再設定サブプログラムＡ２０７は、既に設定されているアクティブパスを、追加されたパスに割り当てる（すなわち、追加されたパスをアクティブパスとして設定する）ことによって、負荷を分散させる。
【０１８２】
前述のように、パスが新たに追加された場合とは、パスを構成するデバイス（ＨＢＡ１０５又はＣＨＡ１０７）が新たに追加された場合である。デバイスが新たに追加される場合には、デバイスが新設される場合のほか、デバイスが障害から回復した場合も含む。このため、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡ１０７が新たに追加されたか否かを判定する（１４０４）。
【０１８３】
ステップ１４０４において、ＣＨＡ１０７が新たに追加されたと判定された場合、アクティブパス再設定サブプログラムＡ２０７は、追加されたＣＨＡ１０７にアクティブパスを割り当てて負荷を分散する。
【０１８４】
まず、アクティブパス再設定サブプログラムＡ２０７は、ＨＢＡテーブル６００において、全てのＨＢＡ−ＩＤ６０１に対応する割当済み負荷６０３をクリアする（すなわち、値を「０」にする）（１４１１）。
【０１８５】
次に、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡテーブル７００において、全てのＣＨＡ−ＩＤ７０１に対応する割当済み負荷７０３をクリアする（１４１２）。
【０１８６】
次に、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡテーブル７００の割当済み負荷７０３に、各ＣＨＡ１０７について算出された他ホスト負荷８０４の値を初期値として設定する（１４１３）。
【０１８７】
次に、アクティブパス再設定サブプログラムＡ２０７は、追加されたパスに関する全てのＬＵ１０９について、新たなアクティブパスが設定されたか否かを判定する（１４１４）。ここで、追加されたパスに関するＬＵ１０９とは、ホストＡが認識していたＬＵ１０９のうち、追加されたパスに接続されたもの、及び、パスが追加されたことによって新たにホストＡが認識したＬＵ１０９である。
【０１８８】
ステップ１４１４において、追加されたパスに関する全てのＬＵ１０９について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムＡ２０７の処理を終了する（１４１０）。
【０１８９】
一方、ステップ１４１４において、追加されたパスに関する全てのＬＵ１０９について新たなアクティブパスが設定されていない（すなわち、少なくとも一つのＬＵ１０９について、新たなアクティブパスが設定されていない）と判定された場合、アクティブパス再設定サブプログラムＡ２０７は、新たなアクティブパスが設定されていないＬＵ１０９の測定負荷５０２の値を比較し、その値が最も大きいＬＵ１０９（ＬＵｍ）を選択する（１４１５）。
【０１９０】
次に、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡ選択処理（１４０５）及びＨＢＡ選択処理（１４０６）を順次実行する。これらの処理については、後で詳細に説明する（図１６、図１７参照）。
【０１９１】
次に、アクティブパス再設定サブプログラムＡ２０７は、ステップ１４０５及びステップ１４０６において選択されたＨＢＡ１０５及びＣＨＡ１０７を経由するパスを、新たなアクティブパスとして設定する（１４０７）。ステップ１４０７においてアクティブパス再設定サブプログラムＡ２０７によって実行される具体的な処理は、図１０のステップ１００９において「パスＡ」に対して実行される処理と同様であるため、詳細な説明を省略する。ここで、選択されたＨＢＡ１０５及びＣＨＡ１０７を経由するパスが「パスＡ」に相当する。
【０１９２】
ただし、ステップ１４０７では、平均負荷の代わりに、ホストＡのＬＵテーブル５００の測定負荷５０２が参照される。そして、パスＡが至るＬＵ１０９の測定負荷５０２の値が、パスＡに対応するＣＨＡテーブル７００の割当済み負荷７０３、及び、パスＡに対応するＨＢＡテーブル６００の割当済み負荷６０３に加算される。
【０１９３】
なお、パスＡが至るＬＵ１０９が新たに認識されたものである場合、当該ＬＵ１０９は、まだホストＡによって使用されていないため、測定負荷５０２の値がない。この場合、全ＬＵ１０９の測定負荷５０２の合計値をＬＵ１０９の数で除算した値が、割当済み負荷７０３及び割当済み負荷６０３に加算される。
【０１９４】
ステップ１４０７の処理が終了すると、ステップ１４１４に戻る。
【０１９５】
一方、ステップ１４０４において、ＣＨＡ１０７が新たに追加されなかったと判定された場合、ＨＢＡ１０５が新たに追加されている。この場合、追加されたＨＢＡ１０５にアクティブパスを割り当てることによって負荷を分散する。ただし、ＣＨＡ１０７については、アクティブパスの割り当てを変更しない。すなわち、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡ選択処理を実行せずに、ＨＢＡ選択処理（１４０８）を実行する。このＨＢＡ選択処理については、後で詳細に説明する（図１７参照）。
【０１９６】
アクティブパス再設定サブプログラムＡ２０７は、ＨＢＡ選択処理（１４０８）を実行する前に、全てのＨＢＡ−ＩＤ６０１に対応する割当済み負荷６０３をクリアする（１４１６）。
【０１９７】
次に、アクティブパス再設定サブプログラムＡ２０７は、追加されたパスに関する全てのＬＵ１０９について、新たなアクティブパスが設定されたか否かを判定する（１４１７）。
【０１９８】
ステップ１４１７において、追加されたパスに関する全てのＬＵ１０９について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムＡ２０７の処理を終了する（１４１０）。
【０１９９】
一方、ステップ１４１７において、追加されたパスに関する全てのＬＵ１０９について新たなアクティブパスが設定されていない（すなわち、少なくとも一つのＬＵ１０９について、新たなアクティブパスが設定されていない）と判定された場合、アクティブパス再設定サブプログラムＡ２０７は、ＨＢＡ選択処理を実行する（１４０８）。
【０２００】
次に、アクティブパス再設定サブプログラムＡ２０７は、ステップ１４０８において選択されたＨＢＡ１０５を経由するパスを、新たなアクティブパスとして設定する（１４０９）。ステップ１４０９において実行される具体的な処理は、ステップ１４０７において実行される処理と同様であるため、詳細な説明を省略する。
【０２０１】
ただし、ＣＨＡ１０７についてはアクティブパスが再設定されないため、各ＣＨＡ１０７に関するアクティブパスの設定は変更されない。このため、ステップ１４０９では、ＣＨＡテーブル７００は変更されない。
【０２０２】
ステップ１４０９の処理が終了すると、ステップ１４１７に戻る。
【０２０３】
図１５は、本発明の実施の形態のアクティブパス停止時のアクティブパス再設定処理のフローチャートである。
【０２０４】
前述のように、アクティブパスを構成するデバイス（ＨＢＡ１０５又はＣＨＡ１０７）のいずれかに障害が発生した場合、又は、これらのデバイスのいずれかが撤去された場合に、アクティブパスが停止する。アクティブパス停止時のアクティブパス再設定処理は、停止したアクティブパスに代わる新たなアクティブパスを設定する処理である。
【０２０５】
アクティブパス停止時のアクティブパス再設定処理は、図１４のステップ１４０３において、アクティブパス再設定サブプログラムＡ２０７によって実行される。
【０２０６】
アクティブパス停止時のアクティブパス再設定処理が開始すると（１５０１）、アクティブパス再設定サブプログラムＡ２０７は、最初に、停止したパスに関するパステーブル４００、ＨＢＡテーブル６００及びＣＨＡテーブル７００のアクティブパス設定ＬＵ数４０８、アクティブパス設定ＬＵ数６０４及び自ホストアクティブパス設定ＬＵ数７０４の値から「１」を減算する（１５０２）。
【０２０７】
次に、アクティブパス再設定サブプログラムＡ２０７は、ＨＢＡテーブル６００において、全てのＨＢＡ−ＩＤ６０１に対応する割当済み負荷６０３をクリアする（すなわち、値を「０」にする）（１５０３）。
【０２０８】
次に、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡテーブル７００において、全てのＣＨＡ−ＩＤ７０１に対応する割当済み負荷７０３をクリアする（１５０４）。
【０２０９】
次に、アクティブパス再設定サブプログラムＡ２０７は、ＬＵテーブル５００を参照し、ＨＢＡテーブル６００の測定負荷６０２から、停止したアクティブパスに関する全てのＬＵ１０９の測定負荷５０２を減算し、その減算後の測定負荷６０２によって割当済み負荷６０３を初期化する（１５０５）。すなわち、減算後の測定負荷６０２の値を、割当済み負荷６０３に複写する。
【０２１０】
次に、アクティブパス再設定サブプログラムＡ２０７は、停止したアクティブパスに関する全てのＬＵ１０９について、新たなアクティブパスが設定されたか否かを判定する（１５０６）。
【０２１１】
ステップ１５０６において、全てのＬＵ１０９について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムＡ２０７は、アクティブパス停止時のアクティブパス再設定処理を終了する（１５１５）。
【０２１２】
一方、ステップ１５０６において、全てのＬＵ１０９について新たなアクティブパスが設定されていないと判定された場合、新たなアクティブパスが設定されていないＬＵ１０９について、新たなアクティブパスを設定する必要がある。このため、アクティブパス再設定サブプログラムＡ２０７は、新たなアクティブパスが設定されていないＬＵ１０９から、ＬＵ−ＩＤ５０１が最小のものを選択する（１５０７）。
【０２１３】
次に、アクティブパス再設定サブプログラムＡ２０７は、ステップ１５０７で選択されたＬＵ１０９に関する停止したアクティブパスが経由していたＣＨＡ１０７を経由する他のパスの中に、一つ以上の稼動状態のパスがあるか否かを判定する（１５０８）。
【０２１４】
ステップ１５０８において、一つ以上の稼動状態のパスがあると判定された場合、停止したアクティブパスを構成するＣＨＡ１０７は稼動しているため、そのＣＨＡ１０７を経由する稼動状態のパスのいずれかを、停止したアクティブパスに代わる新たなアクティブパスとして設定することができる。このため、アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡ選択処理を実行せず、ＨＢＡ選択処理を実行する（１５１３）。ＨＢＡ選択処理については、後で詳細に説明する（図１７参照）。
【０２１５】
次に、アクティブパス再設定サブプログラムＡ２０７は、ステップ１５１３において選択されたＨＢＡ１０５を経由するパスを、新たなアクティブパスとして設定する（１５１４）。ステップ１５１４において実行される具体的な処理は、図１４のステップ１４０９において実行される処理と同様であるため、詳細な説明を省略する。
【０２１６】
一方、ステップ１５０８において、稼動状態のパスがないと判定された場合、停止したアクティブパスを構成するＣＨＡ１０７を新たなアクティブパスとして設定することができない。このため、アクティブパス再設定サブプログラムＡ２０７は、他のＣＨＡ１０７を経由する新たなアクティブパスを設定するため、ＣＨＡ選択処理（１５１０）及びＨＢＡ選択処理（１５１１）を実行する。ＣＨＡ選択処理及びＨＢＡ選択処理については、後で詳細に説明する（図１６、図１７参照）。
【０２１７】
アクティブパス再設定サブプログラムＡ２０７は、ＣＨＡ選択処理（１５１０）及びＨＢＡ選択処理（１５１１）を実行する前に、ＣＨＡテーブルの割当済み負荷７０３を初期化する（１５０９）。具体的には、アクティブパス再設定サブプログラムＡ２０７は、各ＣＨＡ１０７について、ストレージ測定負荷８０２を取得し、その取得した値を初期値として割当済み負荷７０３を設定する。このとき、停止したパスが経由するＣＨＡ１０７については、取得したストレージ測定負荷８０２から当該停止したパスの測定負荷４０７を減算した値を、割当済み負荷７０３の初期値として設定する。
【０２１８】
次に、アクティブパス再設定サブプログラムＡ２０７は、ステップ１５１０及び１５１１において選択されたＣＨＡ１０７及びＨＢＡ１０５を経由するパスを、新たなアクティブパスとして設定する（１５１２）。ステップ１５１２において実行される具体的な処理は、図１４のステップ１４０７において実行される処理と同様であるため、詳細な説明を省略する。
【０２１９】
ステップ１５１２又は１５１４が終了すると、ステップ１５０６に戻る。
【０２２０】
図１６は、本発明の実施の形態のＣＨＡ選択処理のフローチャートである。
【０２２１】
ＣＨＡ選択処理（図１６）は、初期ＣＨＡ選択処理（図１１）とほぼ同じである。すなわち、図１６のステップ１６０４から１６１３が、それぞれ、図１１のステップ１１０４から１１１３に対応する。
【０２２２】
以下の説明において、図１１と共通する詳細な説明は、省略する。
【０２２３】
ＣＨＡ選択処理は、図１４のステップ１４０５又は図１５のステップ１５１０において、アクティブパス再設定サブプログラムＡ２０７によって実行される。また、ＣＨＡ選択処理は、後述するように、図１９のステップ１９０９において、アクティブパス再設定サブプログラムＢ２０８によっても実行される。アクティブパス再設定サブプログラムＡ２０７等は、ＣＨＡ選択処理を実行するときに、ＣＨＡテーブル７００及び負荷情報テーブル８００を参照する。この処理によって選択されたＣＨＡ１０７は、新たなアクティブパスとして設定される。
【０２２４】
ＣＨＡ選択処理が開始されると（１６０１）、アクティブパス再設定サブプログラムＡ２０７等は、全ＣＨＡ１０７のうち、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が複数あるか否かを判定する（１６０４）。
【０２２５】
ステップ１６０４において、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が複数ないと判定された場合、アクティブパス再設定サブプログラムＡ２０７等は、割当済み負荷７０３の値が最小であるＣＨＡ１０７を選択候補とする（１６０５）。
【０２２６】
一方、ステップ１６０４において、まだ選択候補になったことがなく、かつ、割当済み負荷７０３の値が最小であるＣＨＡ１０７が複数あると判定された場合、アクティブパス再設定サブプログラムＡ２０７等は、それらの複数のＣＨＡ１０７のうち、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が複数あるか否かを判定する（１６０６）。
【０２２７】
ステップ１６０６において、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が複数ないと判定された場合、割当済み負荷７０３の値が最小であり、かつ、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が一つのみ存在する。アクティブパス再設定サブプログラムＡ２０７等は、そのＣＨＡ１０７を選択候補とする（１６０７）。
【０２２８】
一方、ステップ１６０６において、自ホストアクティブパス設定ＬＵ数７０４が最小であるＣＨＡ１０７が複数あると判定された場合、アクティブパス再設定サブプログラムＡ２０７等は、それらの複数のＣＨＡ１０７のうち、ＣＨＡ−ＩＤ７０１が最小のＣＨＡ１０７を選択候補とする（１６０８）。
【０２２９】
ステップ１６０５、１６０７又は１６０８においてＣＨＡ１０７が選択候補とされると、アクティブパス再設定サブプログラムＡ２０７等は、選択候補のＣＨＡ１０７を経由する稼動状態のパスがあるか否かを判定する（１６０９）。
【０２３０】
ステップ１６０９において、選択候補のＣＨＡ１０７を経由する稼動状態のパスがあると判定された場合、アクティブパス再設定サブプログラムＡ２０７等は、選択候補のＣＨＡ１０７を最終的に選択して（１６１２）、ＣＨＡ選択処理を終了する（１６１３）。その後、ステップ１６０９において「ある」と判定されたパスのうち、処理対象のＬＵに対する稼動状態の全てのパスを対象として、ＨＢＡ選択処理が実行される（図１７参照）。
【０２３１】
一方、ステップ１６０９において、選択候補のＣＨＡ１０７を経由する稼動状態のパスがないと判定された場合、アクティブパス再設定サブプログラムＡ２０７等は、この時点で選択候補となっているＣＨＡ１０７を、選択候補から除外する。そして、まだ選択候補になったことがないＣＨＡ１０７があるか否かを判定する（１６１０）。
【０２３２】
ステップ１６１０において、まだ選択候補になったことがないＣＨＡ１０７があると判定された場合、ステップ１６０４に戻る。
【０２３３】
一方、ステップ１６１０において、まだ選択候補になったことがないＣＨＡ１０７がないと判定された場合、エラー処理を実行する（１６１１）。
【０２３４】
図１７は、本発明の実施の形態のＨＢＡ選択処理のフローチャートである。
【０２３５】
ＨＢＡ選択処理は、図１４のステップ１４０６、１４０８、図１５の１５１１又は１５１３において、アクティブパス再設定サブプログラムＡ２０７によって実行される。また、ＨＢＡ選択処理は、後述するように、図１９のステップ１９１０において、アクティブパス再設定サブプログラムＢ２０８によっても実行される。アクティブパス再設定サブプログラムＡ２０７等は、ＨＢＡ選択処理を実行するときに、ＨＢＡテーブル６００を参照する。この処理によって選択されたＨＢＡ１０５は、新たなアクティブパスとして設定される。
【０２３６】
ＨＢＡ選択処理が開始されると（１７０１）、アクティブパス再設定サブプログラムＡ２０７等は、最初に、対象のパスの中に、割当済み負荷６０３が最小であるＨＢＡ１０５が複数あるか否かを判定する（１７０２）。
【０２３７】
ここで、対象のパスとは、ＨＢＡ選択処理の対象となるパスである。ＨＢＡ選択処理がステップ１４０６、１５１１又は１９１０において実行される場合、直前のＣＨＡ選択処理（図１６）のステップ１６０９において「ある」と判定されたパスのうち、処理対象のＬＵ１０９に至る全ての稼動状態のパスが対象となる。ＨＢＡ選択処理がステップ１４０８において実行される場合、稼動状態の全てのＨＢＡ１０５を経由するパスのうち、処理対象のＬＵ１０９に至る全ての稼動状態のパスが対象となる。ＨＢＡ選択処理がステップ１５１３において実行される場合、停止したアクティブパスを構成するＣＨＡ１０７を経由するパスのうち、処理対象のＬＵ１０９に至る全ての稼動状態のパスが対象となる。
【０２３８】
ステップ１７０２において、割当済み負荷６０３が最小であるＨＢＡ１０５が複数ないと判定された場合、割当済み負荷６０３が最小であるＨＢＡ１０５が一つのみ存在する。負荷を可能な限り均等に分散させるためには、割当済み負荷６０３が最小であるＨＢＡ１０５のアクティブパスを割り当てることが望ましい。このため、アクティブパス再設定サブプログラムＡ２０７等は、そのＨＢＡ１０５を選択する（１７０３）。
【０２３９】
一方、ステップ１７０２において、割当済み負荷６０３が最小であるＨＢＡ１０５が複数あると判定された場合、アクティブパス再設定サブプログラムＡ２０７等は、それらの複数のＨＢＡ１０５の中に、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が複数あるか否かを判定する（１７０４）。
【０２４０】
ステップ１７０４において、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が複数ないと判定された場合、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が一つのみ存在する。負荷を可能な限り均等に分散させるためには、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５にＬＵｍへのアクティブパスを割り当てることが望ましい。このため、アクティブパス再設定サブプログラムＡ２０７等は、そのＨＢＡ１０５を選択する（１７０５）。
【０２４１】
一方、ステップ１７０４において、アクティブパス設定ＬＵ数６０４が最小であるＨＢＡ１０５が複数あると判定された場合、それらの複数のＨＢＡ１０５のいずれを選択しても、同じように負荷が分散される。このため、アクティブパス再設定サブプログラムＡ２０７等は、それらの複数のＨＢＡ１０５のうち、ＨＢＡ−ＩＤ６０１が最小のＨＢＡ１０５を選択する（１７０６）。
【０２４２】
以上で、ＨＢＡ選択処理を終了する（１７０７）。
【０２４３】
図１８は、本発明の実施の形態のアクティブパス再設定サブプログラムＢ２０８のフローチャートである。
【０２４４】
図９のステップ９１０において、交代パス管理プログラム２０３から呼び出されることによって、アクティブパス再設定サブプログラムＢ２０８の実行が開始する（１８０１）。
【０２４５】
最初に、アクティブパス再設定サブプログラムＢ２０８は、アクティブパスの負荷が分散しているか否かを判定する（１８０２）。例えば、全てのＨＢＡ１０５及びＣＨＡ１０７の測定負荷の最小値と最大値を比較し、最小値が最大値の９０％以上であるか否かを判定する。その結果、最小値が最大値の９０％以上である場合は、アクティブパスの負荷が分散していると判定され、アクティブパスを再設定せずに、ステップ１８０５に進む。
【０２４６】
一方、最小値が最大値の９０％以上でない場合は、負荷が分散していないと判定される。この場合、アクティブパスを再設定して負荷を分散させるために、ステップ１８０３に進む。
【０２４７】
なお、上記の例では、負荷が適度に分散されているか否かを判定する閾値を、「測定負荷の最大値の９０％」としたが、ユーザは、他の閾値（例えば、最大値の５０％）を使用してもよい。
【０２４８】
次に、アクティブパス再設定サブプログラムＢ２０８は、全ＬＵのアクティブパス再設定処理を実行する（１８０３）。この処理については、後で詳細に説明する（図１９参照）。
【０２４９】
次に、アクティブパス再設定サブプログラムＢ２０８は、ＬＵテーブル５００の新アクティブパスのパスＩＤ５０４の値を、現アクティブパスのパスＩＤ５０３に複写する（１８０４）。その結果、新アクティブパスの運用が開始される。
【０２５０】
次に、パステーブル４００、ＬＵテーブル５００、ＨＢＡテーブル６００及びＣＨＡテーブル７００の測定負荷４０７、５０２、６０２及び７０２の値をクリアする（１８０５）。すなわち、これらの値を「０」にする。
【０２５１】
以上で、アクティブパス再設定サブプログラムＢ２０８の実行が終了する（１８０６）。
【０２５２】
図１９は、本発明の実施の形態の全ＬＵのアクティブパス再設定処理のフローチャートである。
【０２５３】
全ＬＵのアクティブパス再設定処理は、図１８のステップ１８０３において、アクティブパス再設定サブプログラムＢ２０８によって実行される。
【０２５４】
全ＬＵのアクティブパス再設定処理が開始されると（１９０１）、アクティブパス再設定サブプログラムＢ２０８は、最初に、ストレージ装置１０８から各ＣＨＡ１０７のストレージ測定負荷を取得する（１９０２）。その手順は、図１０のステップ１００４と同様である。
【０２５５】
次に、アクティブパス再設定サブプログラムＢ２０８は、他ホスト負荷８０４を取得する（１９０３）。具体的には、アクティブパス再設定サブプログラムＢ２０８は、負荷情報テーブル８００に格納されたストレージ測定負荷８０２から自ホスト測定負荷８０３を減算した値を他ホスト負荷８０４として取得する。
【０２５６】
次に、アクティブパス再設定サブプログラムＢ２０８は、ＨＢＡテーブル６００のアクティブパス設定ＬＵ数６０４、及び、ＣＨＡテーブル７００の自ホストアクティブパス設定ＬＵ数７０４をクリアする（１９０４）。具体的には、それらの値を「０」にする。
【０２５７】
次に、アクティブパス再設定サブプログラムＢ２０８は、ＨＢＡテーブル６００において、全てのＨＢＡ−ＩＤ６０１に対応する割当済み負荷６０３をクリアする。さらに、アクティブパス再設定サブプログラムＢ２０８は、ＣＨＡテーブル７００において、全てのＣＨＡ−ＩＤ７０１に対応する割当済み負荷７０３をクリアする（１９１３）。
【０２５８】
次に、アクティブパス再設定サブプログラムＢ２０８は、ＣＨＡテーブル７００の割当済み負荷７０３に、各ＣＨＡ１０７について算出された他ホスト負荷８０４の値を初期値として設定する（１９１４）。
【０２５９】
次に、アクティブパス再設定サブプログラムＢ２０８は、全てのＬＵ１０９について、新たなアクティブパスが設定されたか否かを判定する（１９０５）。
【０２６０】
ステップ１９０５において、全てのＬＵ１０９について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムＢ２０８は、全ＬＵのアクティブパス再設定処理を終了する（１９１２）。
【０２６１】
一方、ステップ１９０５において、全てのＬＵ１０９について新たなアクティブパスが設定されていない（すなわち、少なくとも一つのＬＵ１０９について、新たなアクティブパスが設定されていない）と判定された場合、アクティブパス再設定サブプログラムＢ２０８は、新たなアクティブパスが設定されていないＬＵ１０９の測定負荷５０２の値を比較し、その値が最も大きいＬＵ１０９を選択する（１９０６）。以下、ステップ１９０６で選択されたＬＵ１０９をＬＵｍと記載する。
【０２６２】
次に、アクティブパス再設定サブプログラムＢ２０８は、ＬＵｍについて使用可能な（すなわち、障害が発生していない）パスが一つのみ存在するか否かを判定する（１９０７）。
【０２６３】
ステップ１９０７において、使用可能なパスが一つのみ存在する場合、アクティブパス再設定サブプログラムＢ２０８は、その使用可能なパスをＬＵｍへの新たなアクティブパスに決定する（１９０８）。
【０２６４】
一方、ステップ１９０７において、使用可能なパスが一つのみではない（すなわち、複数存在する）と判定された場合、アクティブパス再設定サブプログラムＢ２０８は、それらのパスから、アクティブパスが設定されるＣＨＡ１０７及びＨＢＡ１０５を選択するため、ＣＨＡ選択処理（１９０９）及びＨＢＡ選択処理（１９１０）を順次実行する。
【０２６５】
次に、アクティブパス再設定サブプログラムＢ２０８は、ステップ１９０８において決定されたパス、又は、ステップ１９０９及び１９１０において選択されたＣＨＡ１０７及びＨＢＡ１０５を経由するパスを、新たなアクティブパスとして設定する（１９１１）。ステップ１９１１において実行される具体的な処理は、図１４のステップ１４０７において実行される処理と同様であるため、詳細な説明を省略する。ただし、ステップ１９０８の後にステップ１９１１が実行される場合、ステップ１９０８で決定されたパスが「パスＡ」に相当する。
【０２６６】
ステップ１９１１の処理が終了すると、ステップ１９０５に戻る。
【０２６７】
以上で、本実施の形態の各プログラムが実行する処理の説明を終了する。
【０２６８】
次に、本実施の形態の各プログラムが実行する処理の具体例を、図面を参照して説明する。
【０２６９】
ここでは、例として、図１のホストＡが最初に起動され、運用が開始された後、ホストＢが起動される場合について説明する。
【０２７０】
図１及び図４において説明したように、ホストＡと各ＬＵ１０９との間には、２４の使用可能なパスが設定されている。同様にして、ホストＢと各ＬＵ１０９との間にも、２４の使用可能なパスが設定されている。
【０２７１】
ホストＡ及びホストＢのいずれも起動していないとき、アクセスは発生しない。このとき、アクティブパスは設定されていない。
【０２７２】
最初に、ホストＡが起動する。
【０２７３】
ホストＡのＯＳが起動すると、交代パス管理プログラム２０３の実行が開始され（９０１）、初期アクティブパス設定サブプログラム２０６が実行される。
【０２７４】
初期アクティブパス設定サブプログラム２０６は、各テーブルを作成して（１００２、１００３）、ストレージ測定負荷８０２を取得する（１００４）。この時点で、ストレージ装置１０８はいずれのホスト１０１からのアクセスも受けていないため、ストレージ測定負荷８０２の値は「０」である。また、この時点の各テーブルの値（初期値）は、図１０において説明した通りである。
【０２７５】
この時点では、どのＬＵ１０９についてもアクティブパスが設定されていないため（１００５）、ＬＵ−ＩＤ５０１が最も小さいＬＵ１を選択して（１００６）、初期ＣＨＡ選択処理が実行される（１００７）。
【０２７６】
この時点では、ストレージ測定負荷８０２が全てのＣＨＡ１０７において「０」であり（１１０２）、自ホストアクティブパス設定ＬＵ数７０４が全てのＣＨＡ１０７において「０」であるため（１１０６）、ＣＨＡ−ＩＤ７０１が最小のＣＨＡ１が選択候補となる（１１０８）。
【０２７７】
ＣＨＡ１を経由する稼動状態のパスがあるため（１１０９）、選択候補のＣＨＡ１を最終的に選択して（１１１２）、初期ＣＨＡ選択処理を終了する（１１１３）。次に、ＣＨＡ１を経由してＬＵ１に至る稼動状態のパスを対象として、初期ＨＢＡ選択処理が実行される（１００８）。
【０２７８】
この時点では、アクティブパス設定ＬＵ数６０４が全てのＨＢＡ１０５において「０」であるため（１２０２）、ＨＢＡ−ＩＤ６０１が最小のＨＢＡ１が選択され（１２０４）、初期ＨＢＡ選択処理が終了する（１２０５）。
【０２７９】
その結果、選択されたＨＢＡ１及びＣＨＡ１を経由するパスが、ＬＵ１に対するアクティブパスとして設定される（１００９）。すなわち、このアクティブパスのパスＩＤは、「１１１」である。このとき、パステーブル４００のパス番号４０１が「１」のパスが、パスＩＤ「１１１」に対応する。このため、パス番号４０１が「１」のパスについて、アクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。
【０２８０】
さらに、ＬＵテーブル５００において、ＬＵ１に対応する新アクティブパスのパスＩＤ５０４が「１１１」に更新され、ＨＢＡテーブル６００において、ＨＢＡ１に対応するアクティブパス設定ＬＵ数６０４が「１」に更新され、ＣＨＡテーブル７００において、ＣＨＡ１に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される（１００９）。
【０２８１】
同様にして、ＬＵ２〜ＬＵ４についても、順次初期ＣＨＡ選択処理及び初期ＨＢＡ選択処理が実行され、アクティブパスが設定される（１００５〜１００９）。
【０２８２】
ＬＵ２については、ＣＨＡ２及びＣＨＡ３の自ホストアクティブパス設定ＬＵ数７０４が最小の「０」であるため（１１０６）、それらの中でＣＨＡ−ＩＤが最小のＣＨＡ２が選択される（１１０８、１１１２）。一方、アクティブパス設定ＬＵ数６０４が最小の「０」であるのはＨＢＡ２のみであるため（１２０２）、そのＨＢＡ２が選択される（１２０３）。
【０２８３】
その結果、ＨＢＡ２及びＣＨＡ２を経由してＬＵ２に至るパスがアクティブパスとして設定され（１００９）、そのパスＩＤは「２２２」である。
【０２８４】
このため、パスＩＤ「２２２」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。さらに、ＬＵ２に対応する新アクティブパスのパスＩＤ５０４が「２２２」に更新され、ＨＢＡ２に対応するアクティブパス設定ＬＵ数６０４が「１」に更新され、ＣＨＡ２に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される（１００９）。
【０２８５】
ＬＵ３については、ＣＨＡ３のみの自ホストアクティブパス設定ＬＵ数７０４が最小の「０」であるため（１１０６）、そのＣＨＡ３が選択される（１１０７、１１１２）。一方、ＨＢＡ１及びＨＢＡ２のアクティブパス設定ＬＵ数６０４が最小の「１」であるため（１２０２）、ＨＢＡ−ＩＤ６０１が最小のＨＢＡ１が選択される（１２０４）。
【０２８６】
その結果、ＨＢＡ１及びＣＨＡ３を経由してＬＵ３に至るパスがアクティブパスとして設定され（１００９）、そのパスＩＤは「１３３」である。
【０２８７】
このため、パスＩＤ「１３３」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。さらに、ＬＵ３に対応する新アクティブパスのパスＩＤ５０４が「１３３」に更新され、ＨＢＡ１に対応するアクティブパス設定ＬＵ数６０４が「２」に更新され、ＣＨＡ３に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される（１００９）。
【０２８８】
ＬＵ４については、ＣＨＡ１〜ＣＨＡ３の自ホストアクティブパス設定ＬＵ数７０４が最小の「１」であるため（１１０６）、ＣＨＡ−ＩＤが最小のＣＨＡ１が選択される（１１０８、１１１２）。一方、ＨＢＡ２のみのアクティブパス設定ＬＵ数６０４が最小の「１」であるため（１２０２）、そのＨＢＡ２が選択される（１２０３）。
【０２８９】
その結果、ＨＢＡ２及びＣＨＡ１を経由してＬＵ４に至るパスがアクティブパスとして設定され（１００９）、そのパスＩＤは「２１４」である。
【０２９０】
このため、パスＩＤ「２１４」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。さらに、ＬＵ４に対応する新アクティブパスのパスＩＤ５０４が「２１４」に更新され、ＨＢＡ２に対応するアクティブパス設定ＬＵ数６０４が「２」に更新され、ＣＨＡ１に対応する自ホストアクティブパス設定ＬＵ数７０４が「２」に更新される（１００９）。
【０２９１】
以上で、全ＬＵ１０９についてアクティブパスが設定されたため（１００５）、ＬＵテーブル５００の新アクティブパスのパスＩＤ５０４の値を現アクティブパスのパスＩＤ５０３に複写する（１０１０）。
【０２９２】
以上で初期アクティブパス設定サブプログラム２０６の実行が終了する（１０１１）。以後、設定されたアクティブパスが運用される。
【０２９３】
図２０は、本発明の実施の形態のコンピュータシステムにおいて、ホストＡに設定された初期アクティブパスの説明図である。
【０２９４】
図２０は、ホストＡにおいて上記の初期アクティブパス設定サブプログラム２０６の実行が終了し、ホストＡの運用が開始され、設定されたアクティブパス２００１上でＩ／Ｏが発生している状態を示す。この時点で、ホストＢは起動していない。
【０２９５】
なお、図２０では、説明のため、ＨＢＡ１０５、ＣＨＡ１０７及びＬＵ１０９以外の詳細な構成を省略する。
【０２９６】
上記のように、ホストＡからＬＵ１に至るアクティブパス２００１は、ＨＢＡ１及びＣＨＡ１を経由する。ホストＡからＬＵ２に至るアクティブパス２００１は、ＨＢＡ２及びＣＨＡ２を経由する。ホストＡからＬＵ３に至るアクティブパス２００１は、ＨＢＡ１及びＣＨＡ３を経由する。ホストＡからＬＵ４に至るアクティブパス２００１は、ＨＢＡ２及びＣＨＡ１を経由する。
【０２９７】
図２０の測定負荷５０２は、各ＬＵ１０９に発行されたＩ／Ｏによる負荷である。図２０では、測定負荷５０２をＬＵ１０９ごとに表示しているが、実際には、測定負荷５０２は、ホストＡのホスト負荷測定サブプログラム２０４によって測定され、ホストＡのＬＵテーブル５００に格納される。
【０２９８】
図２０の例では、ＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４の測定負荷５０２は、それぞれ、「１５００」、「１２００」、「８００」及び「５００」である。この値は、例えば、所定の時間当たりの発行されたＩ／Ｏの数であるが、Ｉ／Ｏデータ量又はＣＰＵ利用率等であってもよい。図２０に示す時点のＬＵテーブル５００の内容は、図５に示す通りである。
【０２９９】
ＣＨＡ１は、ＬＵ１及びＬＵ４へのアクティブパス２００１として設定されているため、ＣＨＡ１の測定負荷７０２は、「１５００」と「５００」の合計値「２０００」である。同様に、ＣＨＡ２及びＣＨＡ３の測定負荷７０２は、それぞれ、「１２００」及び「８００」である。この時点のＣＨＡテーブル７００の内容は、図７に示す通りである。
【０３００】
ＨＢＡ１は、ＬＵ１及びＬＵ３へのアクティブパス２００１として設定されているため、ＨＢＡ１の測定負荷６０２は、「１５００」と「８００」の合計値「２３００」である。同様に、ＨＢＡ２の測定負荷６０２は、「１２００」と「５００」の合計値「１７００」である。この時点のＨＢＡテーブル６００の内容は、図６に示す通りである。
【０３０１】
次に、ホストＢが起動する。
【０３０２】
ホストＢが起動する時点のホストＡのアクティブパス２００１及び測定負荷５０２は、図２０に示す通りである。
【０３０３】
ホストＢのＯＳが起動すると、ホストＢの交代パス管理プログラム２０３の実行が開始され（９０１）、ホストＢの初期アクティブパス設定サブプログラム２０６が実行される。
【０３０４】
初期アクティブパス設定サブプログラム２０６は、各テーブルを作成する（１００２、１００３）。この時点の各テーブルの値（初期値）は、図１０において説明した通りである。次に、ストレージ測定負荷８０２を取得する（１００４）。この時点で、ストレージ装置１０８はホストＡからのアクセスを受けているため、ストレージ測定負荷８０２の値は、図２１のようになる。
【０３０５】
図２１は、本発明の実施の形態のホストＢが起動する時点のホストＢの負荷情報テーブル８００の説明図である。
【０３０６】
この時点で、各ＣＨＡ１０７は、ホストＡのみからのアクセスを受けている。このため、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３のストレージ測定負荷８０２は、それぞれ、ホストＡのＣＨＡテーブル７００の測定負荷７０２と同じ「２０００」、「１２００」及び「８００」である（図２０及び図７参照）。
【０３０７】
一方、ホストＢが起動する時点ではホストＢがまだＩ／Ｏを発行していないため、自ホスト測定負荷８０３の値は、全て「０」となる。
【０３０８】
結局、ストレージ測定負荷８０２は全てホストＡによるものであるため、他ホスト負荷８０４はストレージ測定負荷８０２と同じになる。
【０３０９】
初期アクティブパス設定サブプログラム２０６は、ストレージ測定負荷８０２を取得すると（１００４）、ステップ１００５に進む。この時点では、どのＬＵ１０９についてもアクティブパスが設定されていないため（１００５）、ＬＵ−ＩＤ５０１が最も小さいＬＵ１を選択して（１００６）、初期ＣＨＡ選択処理が実行される（１００７）。
【０３１０】
ストレージ測定負荷８０２が「０」でないため（１１０２）、ホストＢのＣＨＡテーブル７００において、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３の割当済み負荷７０３の初期値が、それぞれ、「２０００」、「１２００」及び「８００」に設定される（１１０３）。
【０３１１】
この時点では、全てのＣＨＡ１０７が、当該初期ＣＨＡ選択処理において選択候補になったことがなく、ＣＨＡ３の割当済み負荷７０３のみが最小の「８００」である（１１０４）。このため、ＣＨＡ３が選択候補とされる（１１０５）。
【０３１２】
ＣＨＡ３を経由する稼動状態のパスがあるため（１１０９）、ＣＨＡ３が最終的に選択され（１１１２）、初期ＣＨＡ選択処理が終了する（１１１３）。
【０３１３】
次に、ＣＨＡ３を経由してＬＵ１に至る稼動状態のパスを対象として、初期ＨＢＡ選択処理が実行される（１００８）。
【０３１４】
この時点では、アクティブパス設定ＬＵ数６０４が全てのＨＢＡ１０５において「０」であるため（１２０２）、ＨＢＡ−ＩＤ６０１が最小のＨＢＡ３が選択され（１２０４）、初期ＨＢＡ選択処理が終了する（１２０５）。
【０３１５】
その結果、選択されたＨＢＡ３及びＣＨＡ３を経由するパスが、ＬＵ１に対するアクティブパスとして設定される（１００９）。このアクティブパスのパスＩＤは、「３３１」である。
【０３１６】
このため、ホストＢのパステーブル４００（図２２参照）において、パスＩＤ「３３１」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。
【０３１７】
さらに、ホストＢのＬＵテーブル５００（図２３参照）において、ＬＵ１に対応する新アクティブパスのパスＩＤ５０４が「３３１」に更新され、ＨＢＡテーブル６００（図２４参照）において、ＨＢＡ３に対応するアクティブパス設定ＬＵ数６０４が「１」に更新され、ＣＨＡテーブル７００（図２５参照）において、ＣＨＡ３に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される（１００９）。
【０３１８】
さらに、ストレージ測定負荷８０２の合計値「４０００」をＬＵ１０９の数「４」で除算した値（平均負荷）「１０００」が、ＣＨＡ３に対応する割当済み負荷７０３「８００」に加算される。その結果、ＣＨＡ３に対応する割当済み負荷７０３は「１８００」となる。
【０３１９】
同様にして、ＬＵ２〜ＬＵ４についても、順次初期ＣＨＡ選択処理及び初期ＨＢＡ選択処理が実行され、アクティブパスが設定される（１００５〜１００９）。
【０３２０】
ＬＵ２については、ＣＨＡ１からＣＨＡ３のうち、割当済み負荷７０３が最小の「１２００」であるＣＨＡ２が選択される（１１０４、１１０５、１１１２）。一方、ＨＢＡ４のアクティブパス設定ＬＵ数６０４のみが最小の「０」であるため（１２０２）、ＨＢＡ４が選択される（１２０３）。
【０３２１】
その結果、ＨＢＡ４及びＣＨＡ２を経由してＬＵ２に至るパスがアクティブパスとして設定され（１００９）、そのパスＩＤは「４２２」である。
【０３２２】
このため、パスＩＤ「４２２」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。さらに、ＬＵ２に対応する新アクティブパスのパスＩＤ５０４が「４２２」に更新され、ＨＢＡ４に対応するアクティブパス設定ＬＵ数６０４が「１」に更新され、ＣＨＡ２に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される（１００９）。
【０３２３】
さらに、ＣＨＡ２に対応する割当済み負荷７０３は、「１２００」に平均負荷「１０００」が加算されて、「２２００」となる。
【０３２４】
ＬＵ３については、ＣＨＡ１からＣＨＡ３のうち、割当済み負荷７０３が最小の「１８００」であるＣＨＡ３が選択される（１１０４、１１０５、１１１２）。一方、ＨＢＡ３及びＨＢＡ４のアクティブパス設定ＬＵ数６０４が最小の「１」であるため（１２０２）、これらのうちでＨＢＡ−ＩＤが最小のＨＢＡ３が選択される（１２０３）。
【０３２５】
その結果、ＨＢＡ３及びＣＨＡ３を経由してＬＵ３に至るパスがアクティブパスとして設定され（１００９）、そのパスＩＤは「３３３」である。
【０３２６】
このため、パスＩＤ「３３３」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。さらに、ＬＵ３に対応する新アクティブパスのパスＩＤ５０４が「３３３」に更新され、ＨＢＡ３に対応するアクティブパス設定ＬＵ数６０４が「２」に更新され、ＣＨＡ３に対応する自ホストアクティブパス設定ＬＵ数７０４が「２」に更新される（１００９）。
【０３２７】
さらに、ＣＨＡ３に対応する割当済み負荷７０３は、「１８００」に平均負荷「１０００」が加算されて、「２８００」となる。
【０３２８】
ＬＵ４については、ＣＨＡ１からＣＨＡ３のうち、割当済み負荷７０３が最小の「２０００」であるＣＨＡ１が選択される（１１０４、１１０５、１１１２）。一方、ＨＢＡ４のアクティブパス設定ＬＵ数６０４のみが最小の「１」であるため（１２０２）、ＨＢＡ４が選択される（１２０３）。
【０３２９】
その結果、ＨＢＡ４及びＣＨＡ１を経由してＬＵ４に至るパスがアクティブパスとして設定され（１００９）、そのパスＩＤは「４１４」である。
【０３３０】
このため、パスＩＤ「４１４」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。さらに、ＬＵ４に対応する新アクティブパスのパスＩＤ５０４が「４１４」に更新され、ＨＢＡ４に対応するアクティブパス設定ＬＵ数６０４が「２」に更新され、ＣＨＡ１に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される（１００９）。
【０３３１】
さらに、ＣＨＡ１に対応する割当済み負荷７０３は、「２０００」に平均負荷「１０００」が加算されて、「３０００」となる。
【０３３２】
以上で、全ＬＵ１０９についてアクティブパスが設定されたため（１００５）、ＬＵテーブル５００の新アクティブパスのパスＩＤ５０４の値を現アクティブパスのパスＩＤ５０３に複写する（１０１０）。
【０３３３】
この時点のホストＢの各テーブルの内容を図２２から図２５に示す。なお、図２２から図２２の説明のうち、図４から図７と共通する説明は、省略する。
【０３３４】
図２２は、本発明の実施の形態のホストＢのパステーブル４００の説明図である。
【０３３５】
上記のように、ホストＢからＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４に至るアクティブパス２００１のパスＩＤは、それぞれ、「３３１」、「４２２」、「３３３」及び「４１４」である。このため、これらのパスＩＤに相当するアクティブ情報４０３は「Ｙｅｓ」、アクティブパス設定ＬＵ数４０８は「１」である。
【０３３６】
図２３は、本発明の実施の形態のホストＢのＬＵテーブル５００の説明図である。
【０３３７】
上記のように、ホストＢからＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４に至る新アクティブパスのパスＩＤ５０４は、それぞれ、「３３１」、「４２２」、「３３３」及び「４１４」である。また、現アクティブパスのパスＩＤ５０３には、新アクティブパスのパスＩＤ５０４の値が複写される。なお、新アクティブパスのパスＩＤ５０４は、現アクティブパスのパスＩＤ５０３に複写された後、クリアされる。
【０３３８】
図２４は、本発明の実施の形態のホストＢのＨＢＡテーブル６００の説明図である。
【０３３９】
ＨＢＡ３は、ＬＵ１及びＬＵ３へのアクティブパス２００１として設定される。このため、ＨＢＡ３のアクティブパス設定ＬＵ数６０４は、「２」である。
【０３４０】
ＨＢＡ４は、ＬＵ２及びＬＵ４へのアクティブパス２００１として設定される。このため、ＨＢＡ４のアクティブパス設定ＬＵ数６０４は、「２」である。
【０３４１】
図２５は、本発明の実施の形態のホストＢのＣＨＡテーブル７００の説明図である。
【０３４２】
ＣＨＡ１は、ホストＢによって、ＬＵ４へのアクティブパス２００１として設定されている。このため、ＣＨＡ１の自ホストアクティブパス設定ＬＵ数７０４は、「１」である。また、ＣＨＡ１の割当済み負荷７０３は、ストレージ測定負荷８０２「２０００」と平均負荷「１０００」との合計値「３０００」である。
【０３４３】
ＣＨＡ２は、ホストＢによって、ＬＵ２へのアクティブパス２００１として設定されている。このため、ＣＨＡ２の自ホストアクティブパス設定ＬＵ数７０４は、「１」である。また、ＣＨＡ２の割当済み負荷７０３は、ストレージ測定負荷８０２「１２００」と平均負荷「１０００」との合計値「２２００」である。
【０３４４】
ＣＨＡ３は、ホストＢによって、ＬＵ１及びＬＵ３へのアクティブパス２００１として設定されている。このため、ＣＨＡ３の自ホストアクティブパス設定ＬＵ数７０４は、「２」である。また、ＣＨＡ１の割当済み負荷７０３は、ストレージ測定負荷８０２「８００」と平均負荷「１０００」と平均負荷「１０００」との合計値「２８００」である。
【０３４５】
以上で、ホストＢの初期アクティブパス設定サブプログラム２０６の実行が終了する（１０１１）。以後、設定されたアクティブパスが運用される。
【０３４６】
本実施の形態によれば、ストレージ装置１０８は、ホスト１０１からのアクセスによる負荷（ストレージ測定負荷８０２）を測定する。ホスト１０１が起動して、初期アクティブパスが設定されるとき、既に他のホスト１０１の運用が開始されている場合、ストレージ測定負荷８０２（すなわち、他ホスト負荷８０４）が参照される（図１１のステップ１１０２及び１１０３）。そして、全ホスト１０１からのアクセスによる負荷が均等に分散されるようにアクティブパスが設定される（ステップ１１０４及び１１０５）。
【０３４７】
図２６は、本発明の実施の形態の初期アクティブパス設定処理の効果の説明図である。
【０３４８】
図２６は、具体的には、初期アクティブパス設定サブプログラム２０６において、ストレージ測定負荷８０２を参照した場合（本実施の形態）に設定される初期アクティブパスと、参照しない場合に設定される初期アクティブパスとを比較するものである。
【０３４９】
図２６において、設定された初期アクティブパスのパスＩＤ２６０１は、ホストＡの初期アクティブパスが設定され、その後ホストＡの運用が開始され、さらにその後に設定されたホストＢの初期アクティブパスのパスＩＤを示す。
【０３５０】
行２６０２は、ストレージ測定負荷８０２を参照せずに設定された（すなわち、図１１のステップ１１０３を実行せずに設定された）アクティブパスのパスＩＤ２７０１を示す。詳細な説明は省略するが、この場合、ＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４について設定されるホストＢの初期アクティブパスのパスＩＤは、それぞれ、「３１１」、「４２２」、「３３３」及び「４１４」である。
【０３５１】
一方、行２６０３は、ストレージ測定負荷８０２を参照して設定された（すなわち、図１１のステップ１１０３を実行して設定された）アクティブパスのパスＩＤ２７０１を示す。行２７０３が本実施の形態に相当する。本実施の形態では、図２３の現アクティブパスのパスＩＤ５０３に示すように、ＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４について設定されるホストＢの初期アクティブパスのパスＩＤは、それぞれ、「３３１」、「４２２」、「３３３」及び「４１４」である。
【０３５２】
行２６０２と行２６０３とを比較すると、ＬＵ１への初期アクティブパスのみが異なっている。その結果、ストレージ測定負荷８０２を参照しない場合（行２６０２）には、ＣＨＡ１がＬＵ１及びＬＵ４への初期アクティブパスとして設定される。これに対して、ストレージ測定負荷８０２を参照する場合（行２６０３）、ＣＨＡ１はＬＵ４への初期アクティブパスとして設定されるのみである。
【０３５３】
図２０及び図２１に示すように、ＣＨＡ１には、ホストＡによって二つのアクティブパスが設定され、負荷が集中している。本実施の形態によれば、ホストＢは、負荷が集中しているＣＨＡ１を避けて初期アクティブパスを設定する。その結果、全体として負荷が分散される。
【０３５４】
次に、ホストＡ及びホストＢに初期アクティブパスが設定された後、ホストＡにおいてアクティブパス再設定サブプログラムＢ２０８（図１８）が実行された場合について説明する。
【０３５５】
図２７は、本発明の実施の形態のコンピュータシステムにおいて、ホストＢに初期アクティブパスが設定された状態の説明図である。
【０３５６】
図２７は、ホストＡの運用が開始された後、ホストＢにおいて上記の初期アクティブパス設定サブプログラム２０６の実行が終了し、さらにその後、ホストＢの運用が開始され、設定されたアクティブパス２００１上でＩ／Ｏが発生している状態を示す。
【０３５７】
上記のように、ホストＢからＬＵ１に至るアクティブパス２００１は、ＨＢＡ３及びＣＨＡ３を経由する。ホストＢからＬＵ２に至るアクティブパス２００１は、ＨＢＡ４及びＣＨＡ２を経由する。ホストＢからＬＵ３に至るアクティブパス２００１は、ＨＢＡ３及びＣＨＡ３を経由する。ホストＢからＬＵ４に至るアクティブパス２００１は、ＨＢＡ４及びＣＨＡ１を経由する。
【０３５８】
図２７の測定負荷５０２は、ホストＡ及びＢによって各ＬＵ１０９に発行されたＩ／Ｏによる負荷である。図２７では、測定負荷５０２をＬＵ１０９ごとに表示しているが、実際には、ＬＵ５０２は、ホストＡ及びＢのホスト負荷測定サブプログラム２０４によって測定され、ホストＡ及びＢのＬＵテーブル５００に格納される。
【０３５９】
図２７の例では、ホストＡによって測定されたＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４の測定負荷５０２は、それぞれ、「１５００」、「１２００」、「８００」及び「５００」である。ホストＢによって測定されたＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４の測定負荷５０２は、それぞれ、「１６００」、「１０００」、「６００」及び「４００」である。
【０３６０】
このとき、ＣＨＡ１のストレージ測定負荷８０２は、ホストＡからＬＵ１への測定負荷５０２「１５００」、ホストＡからＬＵ４への測定負荷５０２「５００」及びホストＢからＬＵ４への測定負荷５０２「４００」の合計値「２４００」である。
【０３６１】
同様にして、ＣＨＡ２のストレージ測定負荷８０２は、ホストＡからＬＵ２への測定負荷５０２「１２００」及びホストＢからＬＵ２への測定負荷５０２「１０００」の合計値「２２００」である。また、ＣＨＡ３のストレージ測定負荷８０２は、ホストＡからＬＵ３への測定負荷５０２「８００」、ホストＢからＬＵ１への測定負荷５０２「１６００」及びホストＢからＬＵ３への測定負荷５０２「６００」の合計値「３０００」である。
【０３６２】
この状態で、ホストＡにおいて、アクティブパス再設定サブプログラムＢ２０８（図１８）の実行が開始される。
【０３６３】
図２７において、ＣＨＡ３の負荷「３０００」が最も大きく、ＣＨＡ２の負荷「２２００」が最も小さい。ここで、「２２００」は、「３０００」の９０％の値「２７００」より小さいため（１８０２）、全ＬＵのアクティブパス再設定処理（図１９）が実行される（１８０３）。
【０３６４】
最初に、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３について、それぞれ、ストレージ測定負荷８０２「２４００」、「２２００」及び「３０００」から自ホスト測定負荷８０３「２０００」、「１２００」及び「８００」を減算して、他ホスト負荷８０４「４００」、「１０００」及び「２２００」が取得される（１９０２、１９０３）。
【０３６５】
この時点のホストＡの負荷情報テーブル８００は、図８に示す通りである。
【０３６６】
次に、ＨＢＡテーブル６００及びＣＨＡテーブル７００において、アクティブパス設定ＬＵ数６０４及び自ホストアクティブパス設定ＬＵ数７０４が「０」とされる（１９０４）。さらに、ＨＢＡテーブル６００及びＣＨＡテーブル７００において、割当済み負荷６０３及び割当済み負荷７０３が「０」とされる（１９１３）。
【０３６７】
次に、ＣＨＡ１、ＣＨＡ２及びＣＨＡ３に対応する割当済み負荷７０３の初期値として、それぞれ、ステップ１９０３で取得した他ホスト負荷８０４「４００」、「１０００」及び「２０００」が設定される（１９１４）。
【０３６８】
この時点で、各ＬＵ１０９のアクティブパスが設定（再設定）されていないため（１９０５）、ホストＡによる測定負荷５０２が最も大きい「１５００」であるＬＵ１が選択される（１９０６）。
【０３６９】
ＬＵ１について使用可能なパスが複数あるため（１９０７）、ＣＨＡ選択処理（図１６）が実行される（１９０９）。
【０３７０】
この時点では、全てのＣＨＡ１０７が、当該ＣＨＡ選択処理において選択候補になったことがなく、ＣＨＡ１の割当済み負荷７０３のみが最小の「４００」である（１６０４）。このため、ＣＨＡ１が選択候補とされる（１６０５）。
【０３７１】
ＣＨＡ１を経由する稼動状態のパスがあるため（１６０９）、ＣＨＡ１が最終的に選択され（１６１２）、ＣＨＡ選択処理が終了する（１６１３）。
【０３７２】
次に、ＣＨＡ１を経由してＬＵ１に至る稼動状態のパスを対象として、ＨＢＡ選択処理（図１７）が実行される（１９１０）。
【０３７３】
この時点で、ＨＢＡ１及びＨＢＡ２の割当済み負荷６０３及びアクティブパス設定ＬＵ数６０４が最小の「０」であるため（１７０２、１７０４）、ＨＢＡ−ＩＤ６０１が最小のＨＢＡ１が選択され（１７０６）、ＨＢＡ選択処理が終了する（１７０７）。
【０３７４】
その結果、選択されたＨＢＡ１及びＣＨＡ１を経由するパスが、ＬＵ１に対するアクティブパスとして設定される（１９１１）。このアクティブパスのパスＩＤは、「１１１」である。
【０３７５】
このため、ホストＡのパステーブル４００において、パスＩＤ「１１１」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。
【０３７６】
さらに、ホストＡのＬＵテーブル５００において、ＬＵ１に対応する新アクティブパスのパスＩＤ５０４が「１１１」に更新される。
【０３７７】
ＨＢＡテーブル６００において、ＨＢＡ１に対応するアクティブパス設定ＬＵ数６０４が「１」に更新される。また、ＨＢＡ１に対応する割当済み負荷６０３「０」にＬＵ１の測定負荷５０２「１５００」が加算されて「１５００」となる。
【０３７８】
ＣＨＡテーブル７００において、ＣＨＡ１に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される。また、ＣＨＡ１に対応する割当済み負荷７０３「４００」にＬＵ１の測定負荷５０２「１５００」が加算されて「１９００」となる（１９１１）。
【０３７９】
同様にして、ＬＵ２〜ＬＵ４についても、測定負荷５０２が大きい順に、ＣＨＡ選択処理及びＨＢＡ選択処理が実行され、アクティブパスが設定される（１９０５〜１９１１）。
【０３８０】
ＬＵ２については、ＣＨＡ１からＣＨＡ３のうち、割当済み負荷７０３が最小の「１０００」であるＣＨＡ２が選択される（１６０４、１６０５、１６１２）。一方、ＨＢＡ２の割当済み負荷６０３のみが最小の「０」であるため（１７０２）、ＨＢＡ２が選択される（１７０３）。
【０３８１】
その結果、ＨＢＡ２及びＣＨＡ２を経由してＬＵ２に至るパスがアクティブパスとして設定され（１９１１）、そのパスＩＤは「２２２」である。
【０３８２】
このため、パスＩＤ「２２２」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。ＬＵ２に対応する新アクティブパスのパスＩＤ５０４が「２２２」に更新される。ＨＢＡ２に対応するアクティブパス設定ＬＵ数６０４が「１」に更新される。ＨＢＡ２に対応する割当済み負荷６０３「０」が、ＬＵ２の測定負荷５０２「１２００」が加算された値「１２００」に更新される。ＣＨＡ２に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される。ＣＨＡ２に対応する割当済み負荷７０３「１０００」が、ＬＵ２の測定負荷５０２「１２００」が加算された値「２２００」に更新される（１９１１）。
【０３８３】
ＬＵ３については、ＣＨＡ１からＣＨＡ３のうち、割当済み負荷７０３が最小の「１９００」であるＣＨＡ１が選択される（１６０４、１６０５、１６１２）。一方、ＨＢＡ２の割当済み負荷６０３のみが最小の「１２００」であるため（１７０２）、ＨＢＡ２が選択される（１７０３）。
【０３８４】
その結果、ＨＢＡ２及びＣＨＡ１を経由してＬＵ３に至るパスがアクティブパスとして設定され（１９１１）、そのパスＩＤは「２１３」である。
【０３８５】
このため、パスＩＤ「２１３」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。ＬＵ３に対応する新アクティブパスのパスＩＤ５０４が「２１３」に更新される。ＨＢＡ２に対応するアクティブパス設定ＬＵ数６０４が「２」に更新される。ＨＢＡ２に対応する割当済み負荷６０３「１２００」が、ＬＵ３の測定負荷５０２「８００」が加算された値「２０００」に更新される。ＣＨＡ１に対応する自ホストアクティブパス設定ＬＵ数７０４が「２」に更新される。ＣＨＡ１に対応する割当済み負荷７０３「１９００」が、ＬＵ２の測定負荷５０２「８００」が加算された値「２７００」に更新される（１９１１）。
【０３８６】
ＬＵ４については、ＣＨＡ１からＣＨＡ３のうち、割当済み負荷７０３が最小の「２２００」であるＣＨＡ２及びＣＨＡ３のうち、自ホストアクティブパス設定ＬＵ数７０４が最小の「０」であるＣＨＡ３が選択される（１６０４、１６０６、１６０７、１６１２）。一方、ＨＢＡ１の割当済み負荷６０３のみが最小の「１５００」であるため（１７０２）、ＨＢＡ１が選択される（１７０３）。
【０３８７】
その結果、ＨＢＡ１及びＣＨＡ３を経由してＬＵ４に至るパスがアクティブパスとして設定され（１９１１）、そのパスＩＤは「１３４」である。
【０３８８】
このため、パスＩＤ「１３４」に対応するアクティブ情報４０３が「Ｙｅｓ」に、アクティブパス設定ＬＵ数４０８が「１」に更新される。ＬＵ４に対応する新アクティブパスのパスＩＤ５０４が「１３４」に更新される。ＨＢＡ１に対応するアクティブパス設定ＬＵ数６０４が「２」に更新される。ＨＢＡ１に対応する割当済み負荷６０３「１５００」が、ＬＵ４の測定負荷５０２「５００」が加算された値「２０００」に更新される。ＣＨＡ３に対応する自ホストアクティブパス設定ＬＵ数７０４が「１」に更新される。ＣＨＡ３に対応する割当済み負荷７０３「２２００」が、ＬＵ２の測定負荷５０２「５００」が加算された値「２７００」に更新される（１９１１）。
【０３８９】
以上で、全ＬＵ１０９についてアクティブパスが設定されたため（１９０５）、ＬＵテーブル５００の新アクティブパスのパスＩＤ５０４の値を現アクティブパスのパスＩＤ５０３に複写する（１８０４）。
【０３９０】
この時点のホストＡのＨＢＡテーブル６００及びＣＨＡテーブル７００を、図２８及び図２９に示す。また、このようにして設定されたアクティブパスを、図３０に示す。
【０３９１】
図２８は、本発明の実施の形態のアクティブパスが再設定されたホストＡのＨＢＡテーブル６００の説明図である。
【０３９２】
ＨＢＡ１は、ＬＵ１及びＬＵ４へのアクティブパス２００１として設定される。このため、ＨＢＡ１のアクティブパス設定ＬＵ数６０４は、「２」である。また、ＨＢＡ１の割当済み負荷６０３は、測定負荷５０２「１５００」と測定負荷５０２「５００」との合計値「２０００」である。
【０３９３】
ＨＢＡ２は、ＬＵ２及びＬＵ３へのアクティブパス２００１として設定される。このため、ＨＢＡ２のアクティブパス設定ＬＵ数６０４は、「２」である。また、ＨＢＡ２の割当済み負荷６０３は、測定負荷５０２「１２００」と測定負荷５０２「８００」との合計値「２０００」である。
【０３９４】
図２９は、本発明の実施の形態のアクティブパスが再設定されたホストＡのＣＨＡテーブル７００の説明図である。
【０３９５】
ＣＨＡ１は、ホストＡによって、ＬＵ１及びＬＵ３へのアクティブパス２００１として設定されている。このため、ＣＨＡ１の自ホストアクティブパス設定ＬＵ数７０４は、「２」である。また、ＣＨＡ１の割当済み負荷７０３は、他ホスト負荷８０４「４００」と測定負荷５０２「１５００」と測定負荷５０２「８００」との合計値「２７００」である。
【０３９６】
ＣＨＡ２は、ホストＡによって、ＬＵ２へのアクティブパス２００１として設定されている。このため、ＣＨＡ２の自ホストアクティブパス設定ＬＵ数７０４は、「１」である。また、ＣＨＡ２の割当済み負荷７０３は、他ホスト負荷８０４「１０００」と測定負荷５０２「１２００」との合計値「２２００」である。
【０３９７】
ＣＨＡ３は、ホストＡによって、ＬＵ４へのアクティブパス２００１として設定されている。このため、ＣＨＡ３の自ホストアクティブパス設定ＬＵ数７０４は、「１」である。また、ＣＨＡ１の割当済み負荷７０３は、他ホスト負荷８０４「２２００」と測定負荷５０２「５００」との合計値「２７００」である。
【０３９８】
図３０は、本発明の実施の形態のコンピュータシステムにおいて、ホストＡのアクティブパスが再設定された状態の説明図である。
【０３９９】
上記のように、ホストＡからＬＵ１に至るアクティブパス２００１は、ＨＢＡ１及びＣＨＡ１を経由する。ホストＡからＬＵ２に至るアクティブパス２００１は、ＨＢＡ２及びＣＨＡ２を経由する。ホストＡからＬＵ３に至るアクティブパス２００１は、ＨＢＡ２及びＣＨＡ１を経由する。ホストＡからＬＵ４に至るアクティブパス２００１は、ＨＢＡ１及びＣＨＡ３を経由する。
【０４００】
以上で、ホストＡのアクティブパス再設定サブプログラムＢ２０８の実行が終了する（１８０６）。以後、設定されたアクティブパスが運用される。
【０４０１】
本実施の形態によれば、アクティブパスが再設定されるとき、ストレージ測定負荷８０２から自ホスト測定負荷８０３を減算した他ホスト負荷８０４が参照される（図１４のステップ１４１３及び図１９の１９１４）。そして、全ホスト１０１からのアクセスによる負荷が均等に分散されるようにアクティブパスが設定される（図１６のステップ１６０４及び１６０５）。
【０４０２】
図３１は、本発明の実施の形態のアクティブパス再設定処理の効果の説明図である。
【０４０３】
図３１は、具体的には、アクティブパス再設定サブプログラムＢ２０６において、他ホスト負荷８０４を参照した場合（本実施の形態）に設定されるアクティブパスと、参照しない場合に設定されるアクティブパスとを比較するものである。
【０４０４】
図２６において、設定されたアクティブパスのパスＩＤ３１０１は、再設定されたホストＡのアクティブパスのパスＩＤを示す。
【０４０５】
行３１０２は、他ホスト負荷８０４を参照せずに設定された（すなわち、図１４のステップ１４１３を実行せずに設定された）アクティブパスのパスＩＤ３１０１を示す。詳細な説明は省略するが、この場合、ＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４について設定されるホストＡのアクティブパスのパスＩＤは、それぞれ、「１１１」、「２２２」、「２３３」及び「１３４」である。
【０４０６】
一方、行３１０３は、他ホスト負荷８０４を参照して設定された（すなわち、図１６のステップ１１０３を実行して設定された）アクティブパスのパスＩＤ２７０１を示す。行２７０３が本実施の形態に相当する。本実施の形態では、図３０に示すように、ＬＵ１、ＬＵ２、ＬＵ３及びＬＵ４について設定されるホストＡのアクティブパスのパスＩＤは、それぞれ、「１１１」、「２２２」、「２１３」及び「１３４」である。
【０４０７】
行３１０２と行３１０３とを比較すると、ＬＵ３へのアクティブパスのみが異なっている。その結果、他ホスト負荷８０４を参照しない場合（行３１０２）には、ＣＨＡ３がＬＵ３及びＬＵ４へのアクティブパスとして設定される。これに対して、他ホスト負荷８０４を参照する場合（行３１０３）、ＣＨＡ３はＬＵ４へのアクティブパスとして設定されるのみである。
【０４０８】
図８及び図２７に示すように、ＣＨＡ３には、ホストＢによって二つのアクティブパスが設定され、負荷が集中している。本実施の形態によれば、ホストＡは、負荷が集中しているＣＨＡ３を避けてアクティブパスを設定する。その結果、全体として負荷が分散される。
【０４０９】
次に、ホストＡ及びホストＢに初期アクティブパスが設定された後、アクティブパスが停止した場合のアクティブパス再設定サブプログラムＡ２０７（図１４）の処理について説明する。
【０４１０】
ここでは、例として、図２７に示すアクティブパス２００１のうち、パスＩＤが「１３３」であるものが停止した場合について説明する。パスＩＤが「１３３」であるアクティブパス２００１は、ホストＡに接続されているため、このアクティブパス２００１が停止すると、ホストＡのアクティブパス再設定サブプログラムＡ２０７が実行される。当該パスが停止した時点のホストＡのパステーブル４００、ＨＢＡテーブル６００、ＣＨＡテーブル７００及び負荷情報テーブル８００は、それぞれ、図４、図６、図７及び図８に示す通りである。
【０４１１】
この例では、アクティブパスが停止したため（１４０２）、アクティブパス停止時のアクティブパス再設定処理（図１５）が実行される（１４０３）。
【０４１２】
最初に、各テーブルのアクティブパス設定ＬＵ数が「１」減算される（１５０２）。具体的には、ホストＡのパステーブル４００（図４）のパスＩＤ「１３３」（パス番号４０１が「１５」）に対応するアクティブパス設定ＬＵ数４０８が「０」となる。ホストＡのＨＢＡテーブル６００のＨＢＡ１に対応するアクティブパス設定ＬＵ数６０４が「１」となる。ホストＡのＣＨＡテーブル７００のＣＨＡ３に対応する自ホストアクティブパス設定ＬＵ数７０４が「０」となる。
【０４１３】
次に、ＨＢＡテーブル６００の割当済み負荷６０３及びＣＨＡテーブル７００の割当済み負荷７０３が「０」となる（１５０３、１５０４）。
【０４１４】
次に、ＨＢＡテーブル６００において、ＨＢＡ１の測定負荷６０２の値「２３００」から、停止したアクティブパス２００１の測定負荷４０７の値「８００」を減算した「１５００」が割当済み負荷６０３の初期値として設定される（１５０５）。ＨＢＡ２については、測定済み負荷６０２の値「１７００」が割当済み負荷６０３の初期値として設定される（１５０５）。このときのＨＢＡテーブル６００を、図３２に示す。
【０４１５】
停止したアクティブパス２００１は、ＣＨＡ３を経由する。この例では、ＣＨＡ３を経由する他の稼動状態のパスがない（１５０８）とする（例えば、ＣＨＡ３自体に障害が発生している）。このとき、ＣＨＡテーブル７００において、ＣＨＡ３のストレージ測定負荷８０２の値「３０００」から、停止したアクティブパス２００１の測定負荷４０７の値「８００」を減算した「２２００」が割当済み負荷７０３の初期値として設定される（１５０９）。ＣＨＡ１及びＣＨＡ２については、それぞれ、ストレージ測定負荷８０２の値「２４００」及び「２２００」が割当済み負荷７０３の初期値として設定される（１５０９）。このときのＣＨＡテーブル７００を、図３３に示す。
【０４１６】
次に、ＣＨＡ選択処理（１５１０）及びＨＢＡ選択処理（１５１１）が実行され、選択されたＨＢＡ１０５及びＣＨＡ１０７を経由するパスがＬＵ３への新たなアクティブパス２００１として設定される（１５１２）。
【０４１７】
なお、ＣＨＡ３自体に障害が発生している場合には、パスＩＤが「３３１」及び「３３３」のアクティブパス２００１も停止している。このため、ホストＢは、これらのアクティブパス２００１について上記と同様の処理を実行する。
【０４１８】
このようにして、アクティブパス２００１が停止した場合、他のホスト１０１による負荷が参照され、システム全体の負荷が分散するように新たなアクティブパスが再設定される。
【０４１９】
なお、以上の本実施の形態では、各ホスト１０１が交代パス管理プログラム２０３を備える。しかし、ストレージ装置１０８に複数のホスト１０１が接続されているとき、当該ストレージ装置がストレージ負荷測定プログラム３０１を備え、少なくとも一つのホスト１０１が交代パス管理プログラム２０３を備えていれば、そのホスト１０１は、アクティブパスを設定して、本発明の負荷分散を実現することができる。
【０４２０】
例えば、図１において、ホストＢのみが交代パス管理プログラム２０３を備える場合、ホストＡは、交代パス管理プログラム２０３を備えないため、アクティブパスを設定せず、本発明の負荷分散をしない。一方、ホストＢは、ストレージ負荷測定プログラム３０１が測定したストレージ測定負荷８０２を参照して、ホストＡによる各ＣＨＡ１０７の負荷を算出することができる。その結果、ホストＢは、システム全体の負荷が分散するようにアクティブパスを設定（初期設定及び再設定）することができる。
【０４２１】
以上の本発明によれば、各ＬＵ１０９についてアクティブパスが設定され、ホスト１０１は、アクティブパスを経由してＬＵ１０９にアクセスする。アクティブパスは、ホスト１０１からのアクセスの負荷が分散するように設定される。ストレージ装置１０８に複数のホスト１０１が接続されている場合、他のホストによる負荷が参照され、システム全体のアクセスの負荷が分散するようにアクティブパスが設定される。その結果、アクセスの集中による性能低下が改善される。
【０４２２】
さらに、アクティブパスが設定（又は再設定）された後、次に再設定されるまでの間、ホスト１０１は、一つのＬＵ１０９に、同一のパスを経由してアクセスする。すなわち、一回のアクセスごとにアクティブパスが変更されないため、アクティブパスに含まれるＣＨＡ１０７等のキャッシュメモリが有効に利用される。特に、シーケンシャルアクセスの際に、キャッシュメモリに格納された先読みデータが有効に利用される。その結果、性能が向上する。
【０４２３】
さらに、アクセス負荷に偏りが生じたときには、偏りを解消するために、アクティブパスが再設定される。この場合も、上記と同様に、他のホストによる負荷が参照され、システム全体のアクセスの負荷が分散するようにアクティブパスが再設定される。このため、常に良好な性能が維持される。
【０４２４】
さらに、アクティブパスを再設定する際には、負荷が大きいＬＵ１０９から順に再設定されるため、負荷が適切に分散される。
【図面の簡単な説明】
【０４２５】
【図１】本発明の実施の形態のコンピュータシステムの構成を示すブロック図である。
【図２】本発明の実施の形態のホストのメインメモリに格納されるプログラムの説明図である。
【図３】本発明の実施の形態のストレージ装置のメインメモリに格納されるプログラムの説明図である。
【図４】本発明の実施の形態のパステーブルの説明図である。
【図５】本発明の実施の形態のＬＵテーブルの説明図である。
【図６】本発明の実施の形態のＨＢＡテーブルの説明図である。
【図７】本発明の実施の形態のＣＨＡテーブルの説明図である。
【図８】本発明の実施の形態の負荷情報テーブルの説明図である。
【図９】本発明の実施の形態の交代パス管理プログラムのフローチャートである。
【図１０】本発明の実施の形態の初期アクティブパス設定サブプログラムのフローチャートである。
【図１１】本発明の実施の形態の初期ＣＨＡ選択処理のフローチャートである。
【図１２】本発明の実施の形態の初期ＨＢＡ選択処理のフローチャートである。
【図１３】本発明の実施の形態のホスト負荷測定サブプログラムのフローチャートである。
【図１４】本発明の実施の形態のアクティブパス再設定サブプログラムＡのフローチャートである。
【図１５】本発明の実施の形態のアクティブパス停止時のアクティブパス再設定処理のフローチャートである。
【図１６】本発明の実施の形態のＣＨＡ選択処理のフローチャートである。
【図１７】本発明の実施の形態のＨＢＡ選択処理のフローチャートである。
【図１８】本発明の実施の形態のアクティブパス再設定サブプログラムＢのフローチャートである。
【図１９】本発明の実施の形態の全ＬＵのアクティブパス再設定処理のフローチャートである。
【図２０】本発明の実施の形態のコンピュータシステムにおいて、ホストＡに設定された初期アクティブパスの説明図である。
【図２１】本発明の実施の形態のホストＢが起動する時点のホストＢの負荷情報テーブルの説明図である。
【図２２】本発明の実施の形態のホストＢのパステーブルの説明図である。
【図２３】本発明の実施の形態のホストＢのＬＵテーブルの説明図である。
【図２４】本発明の実施の形態のホストＢのＨＢＡテーブルの説明図である。
【図２５】本発明の実施の形態のホストＢのＣＨＡテーブルの説明図である。
【図２６】本発明の実施の形態の初期アクティブパス設定処理の効果の説明図である。
【図２７】本発明の実施の形態のコンピュータシステムにおいて、ホストＢに初期アクティブパスが設定された状態の説明図である。
【図２８】本発明の実施の形態のアクティブパスが再設定されたホストＡのＨＢＡテーブルの説明図である。
【図２９】本発明の実施の形態のアクティブパスが再設定されたホストＡのＣＨＡテーブルの説明図である。
【図３０】本発明の実施の形態のコンピュータシステムにおいて、ホストＡのアクティブパスが再設定された状態の説明図である。
【図３１】本発明の実施の形態のアクティブパス再設定処理の効果の説明図である。
【図３２】本発明の実施の形態のアクティブパス停止時のアクティブパス再設定処理におけるＨＢＡテーブルの説明図である。
【図３３】本発明の実施の形態のアクティブパス停止時のアクティブパス再設定処理におけるＣＨＡテーブルの説明図である。
【符号の説明】
【０４２６】
１０１  ホスト
１０２、１１１  ＣＰＵ
１０３、１１２  メインメモリ
１０４  入出力装置
１０５  ホストバスアダプタ（ＨＢＡ）
１０６  Storage Area Network（ＳＡＮ）
１０７  チャネルアダプタ（ＣＨＡ）
１０８  ストレージ装置
１０９  論理ユニット（ＬＵ）
１１０  コントローラ
１１３  キャッシュメモリ
２０１  アプリケーションプログラム
２０２  交代パス管理設定プログラム
２０３  交代パス管理プログラム
２０４  ホスト負荷測定サブプログラム
２０５  アクティブパス設定サブプログラム
２０６  初期アクティブパス設定サブプログラム
２０７  アクティブパス再設定サブプログラムＡ
２０８  アクティブパス再設定サブプログラムＢ
２０９  レポートサブプログラム
３０１  ストレージ負荷測定プログラム
４００  パステーブル
５００  ＬＵテーブル
６００  ＨＢＡテーブル
７００  ＣＨＡテーブル
【図１】
2006293459.tif 000003
【図２】
2006293459.tif 000004
【図３】
2006293459.tif 000005
【図４】
2006293459.tif 000006
【図５】
2006293459.tif 000007
【図６】
2006293459.tif 000008
【図７】
2006293459.tif 000009
【図８】
2006293459.tif 000010
【図９】
2006293459.tif 000011
【図１０】
2006293459.tif 000012
【図１１】
2006293459.tif 000013
【図１２】
2006293459.tif 000014
【図１３】
2006293459.tif 000015
【図１４】
2006293459.tif 000016
【図１５】
2006293459.tif 000017
【図１６】
2006293459.tif 000018
【図１７】
2006293459.tif 000019
【図１８】
2006293459.tif 000020
【図１９】
2006293459.tif 000021
【図２０】
2006293459.tif 000022
【図２１】
2006293459.tif 000023
【図２２】
2006293459.tif 000024
【図２３】
2006293459.tif 000025
【図２４】
2006293459.tif 000026
【図２５】
2006293459.tif 000027
【図２６】
2006293459.tif 000028
【図２７】
2006293459.tif 000029
【図２８】
2006293459.tif 000030
【図２９】
2006293459.tif 000031
【図３０】
2006293459.tif 000032
【図３１】
2006293459.tif 000033
【図３２】
2006293459.tif 000034
【図３３】
2006293459.tif 000035