(57)【要約】【課題】ホストコンピュータとストレージサブシステムとが協調して負荷分散処理を行うことができるストレージシステム等を提供すること【解決手段】ストレージサブシステム１０のコントローラ１１は、負荷分散要求テーブルを２４生成し、これを定期的に更新する機能と、ホストコンピュータ１から要求があったときに負荷分散要求テーブルをホストコンピュータに送信する機能を備える。ホストコンピュータは、ストレージサブシステムに対して、負荷分散要求テーブルの送信を要求し、この要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタ６、７に対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段４を備える。【選択図】図２
2008009497.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータからＩ／Ｏ命令を受信する複数のホスト接続ポートと、前記Ｉ／Ｏ命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備えたストレージサブシステムにおいて、
前記コントローラは、前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、前記ホストコンピュータから要求があったときに前記負荷分散要求テーブルを前記ホストコンピュータに送信する機能を備えたことを特徴としたストレージサブシステム。
【請求項２】
前記負荷分散要求テーブルは、前記要求先のホストバスアダプタが送信する前記Ｉ／Ｏ命令のうち負荷分散を実施する割合を指定する情報を含むことを特徴とした請求項１に記載のストレージサブシステム。
【請求項３】
前記負荷分散要求テーブルは、前記負荷分散先のホスト接続ポート毎に、前記要求先のホストバスアダプタが前記Ｉ／Ｏ命令を送信する割合を指定する情報を含むことを特徴とした請求項１または請求項２に記載のストレージサブシステム。
【請求項４】
前記コントローラは、前記負荷分散の要求先の前記ホストバスアダプタのうち、前記負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を前記負荷分散要求テーブルから削除することを特徴とした請求項１ないし請求項３のいずれかひとつに記載のストレージサブシステム。
【請求項５】
ストレージサブシステムに対してＩ／Ｏ命令を送信するホストバスアダプタを複数備えたホストコンピュータにおいて、
前記ストレージサブシステムに対して、前記ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求し、この要求に応じて前記ストレージサブシステムから送信された前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備えたことを特徴としたホストコンピュータ。
【請求項６】
ホストコンピュータと、このホストコンピュータからＩ／Ｏ命令を受信するストレージサブシステムとから構成されるストレージシステムにおいて、
前記ストレージサブシステムは、
ホストコンピュータからＩ／Ｏ命令を受信する複数のホスト接続ポートと、
前記Ｉ／Ｏ命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備え、
前記コントローラは、前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、前記ホストコンピュータから要求があったときに前記負荷分散要求テーブルを前記ホストコンピュータに送信する機能を備え、
前記ホストコンピュータは、
前記ストレージサブシステムに対してＩ／Ｏ命令を送信する複数のホストバスアダプタと、
前記ストレージサブシステムに対して、前記負荷分散要求テーブルの送信を要求し、この要求に応じて前記ストレージサブシステムから送信された前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備えたことを特徴としたストレージシステム。
【請求項７】
ストレージサブシステムが備えホストコンピュータからＩ／Ｏ命令を受信するホスト接続ポートの負荷を分散する方法において、
前記ストレージサブシステムが、前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新し、
ホストコンピュータが、前記ストレージサブシステムに対して、前記負荷分散要求テーブルの送信を要求し、これに応じて前記ストレージサブシステムが前記負荷分散要求テーブルを前記ホストコンピュータに送信し、
前記ホストコンピュータが、前記ストレージサブシステムから受信した前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行することを特徴とした負荷分散方法。
【請求項８】
前記負荷分散要求テーブルは、前記要求先のホストバスアダプタが送信する前記Ｉ／Ｏ命令のうち負荷分散を実施する割合を指定する情報を含むことを特徴とした請求項７に記載の負荷分散方法。
【請求項９】
前記負荷分散要求テーブルは、前記負荷分散先のホスト接続ポート毎に、前記要求先のホストバスアダプタが前記Ｉ／Ｏ命令を送信する割合を指定する情報を含むことを特徴とした請求項７または請求項８に記載の負荷分散方法。
【請求項１０】
前記ストレージサブシステムが、前記負荷分散の要求先の前記ホストバスアダプタのうち、前記負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を前記負荷分散要求テーブルから削除することを特徴とした請求項７ないし請求項９のいずれかひとつに記載の負荷分散方法。
【請求項１１】
ホストコンピュータからＩ／Ｏ命令を受信する複数のホスト接続ポートと、前記Ｉ／Ｏ命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備えたストレージサブシステムに、
前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む前記負荷分散要求テーブルを生成し、これを定期的に更新する処理と、前記ホストコンピュータから要求があったときに前記負荷分散要求テーブルを前記ホストコンピュータに送信する処理とを実行させることを特徴とした負荷分散プログラム。
【請求項１２】
前記負荷分散要求テーブルは、前記要求先のホストバスアダプタが送信する前記Ｉ／Ｏ命令のうち負荷分散を実施する割合を指定する情報を含むことを特徴とした請求項１１に記載の負荷分散プログラム。
【請求項１３】
前記負荷分散要求テーブルは、前記負荷分散先のホスト接続ポート毎に、前記要求先のホストバスアダプタが前記Ｉ／Ｏ命令を送信する割合を指定する情報を含むことを特徴とした請求項１１または請求項１２に記載の負荷分散プログラム。
【請求項１４】
前記ストレージサブシステムに、
前記負荷分散の要求先の前記ホストバスアダプタのうち、前記負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を前記負荷分散要求テーブルから削除する処理を実行させることを特徴とした請求項１１ないし請求項１３のいずれかひとつに記載の負荷分散プログラム。
【請求項１５】
ストレージサブシステムに対してＩ／Ｏ命令を送信するホストバスアダプタを複数備えたホストコンピュータに、
前記ストレージサブシステムに対して、前記ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求する処理と、前記要求に応じて前記ストレージサブシステムから送信された前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する処理を実行させることを特徴とした負荷分散プログラム。
【請求項１６】
前記ホストコンピュータで動作するパス冗長化ドライバの機能として実装されたことを特徴とする請求項１５に記載の負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置の負荷分散技術に関し、特にストレージサブシステムとホストコンピュータが協調して負荷分散処理を行う技術に関する。
【背景技術】
【０００２】
ＦＣ（Fibre Channel）スイッチなどを介して複数のホストコンピュータをディスクアレイサブシステムに接続した場合、ディスクアレイサブシステムの特定のホストポートまたは特定のコントローラに負荷が集中し、応答遅延（ホストポートネックまたはコントローラネック）が発生する。
この応答遅延を回避するために、刻々と変化するＩ／Ｏの性能分析を行い、適切な負荷分散を人手で実施するのは困難である。
【０００３】
特許文献１には、システムサブシステム内で負荷分散を行うストレージ装置が記載されている。
このストレージシステムでは、ストレージサブシステム内に複数のストレージ処理部があり、各ストレージ処理部で処理負荷を計測する。また、負荷に対する上限／下限の閾値を定義しておく。
任意のストレージ処理部の負荷が上限値を超えた場合、他のストレージ処理部に対して負荷状況を問い合わせ、余裕のあるストレージ処理部に負荷を分散する。任意のストレージ処理部の負荷が下限値を割った場合、他のストレージ処理部に対して負荷状況を問い合わせ、余裕のあるストレージ処理部に自身の負荷を引き渡し、自身は省電力モードに移行する。
このようにして、ストレージ処理部の負荷分散による対ホストへのレスポンスの向上と電力効率の向上を図っている。
【０００４】
【特許文献１】特開２００３−２９６１５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記の従来技術では、負荷分散処理は、ストレージサブシステム（ストレージ処理部）のみで実行しており、ホストコンピュータとストレージサブシステムとが協調して負荷分散処理を行うことができなかった。
【０００６】
そこで、本発明は、ホストコンピュータとストレージサブシステムとが協調して負荷分散処理を行うことができるストレージシステム等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の、ストレージサブシステムのコントローラは、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、ホストコンピュータから要求があったときに負荷分散要求テーブルをホストコンピュータに送信する機能を備える（請求項１ないし請求項４）。
【０００８】
上記ストレージサブシステムによれば、コントローラは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
【０００９】
上記ストレージサブシステムにおいて、負荷分散要求テーブルは、要求先のホストバスアダプタが送信するＩ／Ｏ命令のうち負荷分散を実施する割合を指定する情報をようにしてもよい（請求項２）。
このようにすれば、ホストコンピュータは、送信するＩ／Ｏ命令の一部だけを通常とは異なるホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【００１０】
上記ストレージサブシステムにおいて、負荷分散要求テーブルは、負荷分散先のホスト接続ポート毎に、要求先のホストバスアダプタがＩ／Ｏ命令を送信する割合を指定する情報を含むようにしてもよい（請求項３）。
このようにすれば、ホストコンピュータは、Ｉ／Ｏ命令を通常とは異なる複数のホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【００１１】
上記ストレージサブシステムにおいて、コントローラは、負荷分散の要求先のホストバスアダプタのうち、負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を負荷分散要求テーブルから削除するようにしてもよい（請求項４）。
このようにすれば、負荷分散処理機能を持たないホストコンピュータやストレージサブシステムとの間の接続パスをひとつしか有していないホストコンピュータが接続されていた場合に、そのようなホストコンピュータのホストバスアダプタを負荷分散処理要求テーブルの対象からはずし、負荷分散処理要求テーブルの生成処理に要する時間を短縮することができる。
【００１２】
本発明の、ホストコンピュータは、ストレージサブシステムに対して、ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求し、この要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備える（請求項５）。
【００１３】
上記ホストコンピュータによれば、ストレージサブシステムから受信した負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりストレージサブシステムとの間のＩ／Ｏパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ストレージサブシステムとの協調のために余分なＩ／Ｏ負荷を生じさせることがない。
【００１４】
本発明の、ストレージシステムは、ホストコンピュータとストレージサブシステムにより構成される。
ストレージサブシステムは、ホストコンピュータからＩ／Ｏ命令を受信する複数のホスト接続ポートと、Ｉ／Ｏ命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備え、コントローラは、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、ホストコンピュータから要求があったときに負荷分散要求テーブルをホストコンピュータに送信する機能を備える。
ホストコンピュータは、ストレージサブシステムに対してＩ／Ｏ命令を送信する複数のホストバスアダプタと、ストレージサブシステムに対して、負荷分散要求テーブルの送信を要求し、この要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備える（請求項６）。
【００１５】
上記ストレージシステムによれば、ストレージサブシステムのコントローラは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
【００１６】
本発明の、負荷分散方法は、ストレージサブシステムが、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新し、ホストコンピュータが、ストレージサブシステムに対して、負荷分散要求テーブルの送信を要求し、これに応じてストレージサブシステムが負荷分散要求テーブルをホストコンピュータに送信し、ホストコンピュータが、ストレージサブシステムから受信した負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する（請求項７ないし請求項１０）。
【００１７】
上記負荷分散方法によれば、ストレージサブシステムは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりホストコンピュータとストレージサブシステムとの間のＩ／Ｏパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ホストコンピュータとストレージサブシステムとの協調のために余分なＩ／Ｏ負荷を生じさせることがない。
【００１８】
上記負荷分散方法において、負荷分散要求テーブルは、要求先のホストバスアダプタが送信するＩ／Ｏ命令のうち負荷分散を実施する割合を指定する情報を含むようにしてもよい（請求項８）。
このようにすれば、ホストコンピュータは、送信するＩ／Ｏ命令の一部だけを通常とは異なるホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【００１９】
上記負荷分散方法において、負荷分散要求テーブルは、負荷分散先のホスト接続ポート毎に、要求先のホストバスアダプタがＩ／Ｏ命令を送信する割合を指定する情報を含むようにしてもよい（請求項９）。
このようにすれば、ホストコンピュータは、Ｉ／Ｏ命令を通常とは異なる複数のホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【００２０】
上記負荷分散方法において、ストレージサブシステムが、負荷分散の要求先のホストバスアダプタのうち、負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を負荷分散要求テーブルから削除するようにしてもよい（請求項１０）。
このようにすれば、負荷分散処理機能を持たないホストコンピュータやストレージサブシステムとの間の接続パスをひとつしか有していないホストコンピュータが接続されていた場合に、そのようなホストコンピュータのホストバスアダプタを負荷分散処理要求テーブルの対象からはずし、負荷分散処理要求テーブルの生成処理に要する時間を短縮することができる。
【００２１】
本発明の、負荷分散プログラムは、ストレージサブシステムに、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する処理と、ホストコンピュータから要求があったときに負荷分散要求テーブルをホストコンピュータに送信する処理とを実行させる（請求項１１ないし請求項１４）。
【００２２】
上記負荷分散プログラムによれば、ストレージサブシステムを制御して、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりホストコンピュータとストレージサブシステムとの間のＩ／Ｏパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ホストコンピュータとストレージサブシステムとの協調のために余分なＩ／Ｏ負荷を生じさせることがない。
【００２３】
上記負荷分散プログラムにおいて、負荷分散要求テーブルは、要求先のホストバスアダプタが送信するＩ／Ｏ命令のうち負荷分散を実施する割合を指定する情報を含むようにしてもよい（請求項１２）。
このようにすれば、ホストコンピュータは、送信するＩ／Ｏ命令の一部だけを通常とは異なるホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【００２４】
上記負荷分散プログラムにおいて、負荷分散要求テーブルは、負荷分散先のホスト接続ポート毎に、要求先のホストバスアダプタがＩ／Ｏ命令を送信する割合を指定する情報を含むようにしてもよい（請求項１３）。
このようにすれば、ホストコンピュータは、Ｉ／Ｏ命令を通常とは異なる複数のホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【００２５】
上記負荷分散プログラムにおいて、ストレージサブシステムに、負荷分散の要求先のホストバスアダプタのうち、負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を負荷分散要求テーブルから削除する処理を実行させるようにしてもよい（請求項１４）。
このようにすれば、負荷分散処理機能を持たないホストコンピュータやストレージサブシステムとの間の接続パスをひとつしか有していないホストコンピュータが接続されていた場合に、そのようなホストコンピュータのホストバスアダプタを負荷分散処理要求テーブルの対象からはずし、負荷分散処理要求テーブルの生成処理に要する時間を短縮することができる。
【００２６】
本発明の、第２の負荷分散プログラムは、ホストコンピュータに、ストレージサブシステムに対して、ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求する処理と、要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する処理を実行させることを特徴とする（請求項１５）。
【００２７】
上記負荷分散プログラムによれば、ストレージサブシステムから受信した負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりホストコンピュータとストレージサブシステムとの間のＩ／Ｏパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ストレージサブシステムとの協調のために余分なＩ／Ｏ負荷を生じさせることがない。
【００２８】
上記負荷分散プログラムを、ホストコンピュータで動作するパス冗長化ドライバの機能として実装してもよい（請求項１６）。
このようにすれば、ストレージサブシステムと連携した負荷分散は、パス冗長化ドライバ内に隠蔽して処理するため、ホストコンピュータ上のパス冗長化ドライバとは異なるレイヤで動作するプログラム、例えば上位ドライバ、下位ドライバ、ミドルウェア、アプリケーションプログラム等を改造する必要がない。
【発明の効果】
【００２９】
本発明によれば、ストレージサブシステムは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
【発明を実施するための最良の形態】
【００３０】
以下、図を参照しながら本発明の一実施形態であるＳＡＮ（Storage Area Network）システム５０（ストレージシステムの一例）の構成と動作について説明する。
図１は、ＳＡＮシステム５０の全体構成図である。ＳＡＮシステム５０は、複数のホストコンピュータ１ａ、１ｂ等（以下、特に区別する必要がない場合は、「ホストコンピュータ１」という）とディスクアレイサブシステム１０（ストレージサブシステムの一例）により構成されている。
ホストコンピュータ１は、ホストバスアダプタ（Ｈｏｓｔ Ｂｕｓ Ａｄａｐｔｅｒ、以下「ＨＢＡ」という）を、ディスクアレイアブシステム１０は、ホスト接続ポートを備え、ＨＢＡとホスト接続ポートは、ＦＣスイッチ４０、４１を介して接続されている。ＨＢＡとホスト接続ポートには、図１のカッコ内に示すように、「ＷＷＰＮａ」等のＷＷＰＮ（Ｗｏｒｌｄ Ｗｉｄｅ Ｐｏｒｔ Ｎａｍｅ）が付与されている。ＷＷＰＮは、ポートを一意に識別する６４ビットのアドレスであり、ＨＢＡまたはコントローラの製造時にＲＯＭ(Read Only Memory)に書き込まれている。
ホストコンピュータ１は、アクセスパス３０を介して、ディスクアレイサブシステム１０にＩ／Ｏ命令を発行し、論理ディスクに対するデータの書き込みと読み出しを行う。
【００３１】
図２は、図１のホストコンピュータ１ａとディスクアレイサブシステム１０の機能ブロック図である。
ホストコンピュータ１ａは、ファイルシステム２、上位ドライバ３、パス冗長化ドライバ４、下位ドライバ５、２個のＨＢＡ６および７を備えている。
ディスクアレイサブシステム１０は、２個のコントローラ１１および１２と論理ディスク１３、１４等を備えている。
【００３２】
（ホストコンピュータ１ａの構成）
アプリケーション８は、ホストコンピュータ１のＣＰＵ(Central Processing Unit)が実行する任意のアプリケーションプログラムであり、論理ディスク１３等に対するファイルの書き込みと読み出しをファイルシステム２に要求する。
【００３３】
ファイルシステム２は、論理ドライブ上のファイルのファイル名と論理ドライブ上の格納位置との対応付けを保持する。
上位ドライバ３は、ファイルシステム２を介してアプリケーション８から渡されたＩ／Ｏをパス冗長化ドライバ４に渡す。
【００３４】
ＨＢＡ６および７は、それぞれホストインタフェースケーブル２０および２１を介してディスクアレイサブシステム１０のコントローラ１１および１２にあるホスト接続ポート１６および１８に接続され、ホストコンピュータ１は、ディスクアレイサブシステム１０が制御する論理ディスク１３、１４および１５に対するＩ／Ｏを実行する。
【００３５】
下位ドライバ５は、ＨＢＡ６および７を制御しＩ／Ｏ処理を行う。
【００３６】
パス冗長化ドライバ４は、上位ドライバ３から受け取ったＩ／Ｏを下位ドライバ５に引き渡し、また、ＨＢＡ６または７を介してディスクアレイサブシステム１０が制御する論理ディスク１３、１４または１５に対するＩ／Ｏの実行結果を下位ドライバ５から受け取り、正常終了または異常終了の判断を行い、異常終了の原因がパスの構成要素（ＨＢＡ６、７、ホストインタフェースケーブル２０、２１、コントローラ１１、１２等）における障害（故障）と判断した場合は、代替パスを用いて、異常終了したＩ／Ｏのリトライ処理を行うドライバである。
【００３７】
本発明においては、パス冗長化ドライバ４は、ディスクアレイサブシステム１０から負荷分散要求テーブル２４を取得し、このテーブルに含まれる情報に従って負荷分散を行う。
具体的には、パス冗長化ドライバ４は、一方のＩ／Ｏパス（例えば、コントローラ１１）のみにＩ／Ｏが集中することのないよう、複数のＩ／Ｏパスを有効に活用し、Ｉ／Ｏの負荷分散（コントローラ１１または１２のホスト接続ポート１６、１７、１８、１９にＩ／Ｏを振り分け）を行う機能を有する。
すなわち、パス冗長化ドライバ４とこれを実行するＣＰＵは、負荷分散実行手段の一例である。
【００３８】
ホストコンピュータ１による各Ｉ／Ｏの実行結果については、ＨＢＡ６、下位ドライバ５、パス冗長化ドライバ４、上位ドライバ３、ファイルシステム２およびアプリケーション８の各レイヤによって判断が行われ、必要に応じて何らかの処置が行われる。
【００３９】
ホストコンピュータ１ｂ等のホストコンピュータ１ａと同様の構成を備えている。ただし、これらのホストコンピュータには、パス冗長化ドライバ４を備えていないものが含まれていてもよい。
【００４０】
（ディスクアレイサブシステム１０の構成）
コントローラ１１および１２は、それぞれ内部バス２２および２３を介して各論理ディスク１３、１４および１５に接続されており、いずれのコントローラからも各論理ディスクに対してアクセスすることができる。
コントローラ１１および１２は、負荷分散要求テーブル２４を生成しＲＡＭ等の記憶装置に格納し、これを定期的に更新する。また、ホストコンピュータ１の要求に応じて負荷分散要求テーブル２４をホストコンピュータに送信する。
負荷分散要求テーブル２４の詳細については後述する。
【００４１】
ホストコンピュータ１上で動作するアプリケーション８よりディスクアレイサブシステム１０に書き込まれるデータ（ライトデータ転送Ｉ／Ｏ）は、アプリケーション８、ファイルシステム２、上位ドライバ３、パス冗長化ドライバ４、下位ドライバ５、ＨＢＡ６、ホストインタフェースケーブル２０、ホスト接続ポート１６を介してコントローラ１１に至り、指定された論理ディスク１３、１４または１５に書き込まれる。
【００４２】
ホストコンピュータ１上で動作するアプリケーション８よりディスクアレイサブシステム１０から読み出されるデータ（リードデータ転送Ｉ／Ｏ）は、指定された論理ディスク１３、１４または１５より、コントローラ１１、ホスト接続ポート１６、ホストインタフェースケーブル２０を介してＨＢＡ６に至り、下位ドライバ５、パス冗長化ドライバ４、上位ドライバ３、ファイルシステム２を経てアプリケーション８に至る。
【００４３】
論理ディスク１３等は、アプリケーションプログラム８からは１個の独立した記憶装置として認識される記憶領域である。論理ディスク１３は、１台の物理的な記憶装置（例えば、ハードディスク装置）の記憶領域の一部または全部で構成してもよいし、複数の物理的な記憶装置により構成してもよい。
【００４４】
次に、ＳＡＮシステム５０の動作について説明する。
まず、ディスクアレイサブシステム１０側の動作について説明する。
図３、図４（ａ）、図４（ｂ）は、ディスクアレイサブシステム１０のコントローラ１１および１２により実施され、ホストコンピュータ１より受け取ったＩ／Ｏコマンドの処理過程の一部を示したフローチャートである。
【００４５】
ホストコンピュータ１より受け取ったコマンドは、まず正しく実行することができるかどうか判断され（図３のＳ１０１）、正しく実行することができないコマンドであれば、異常終了処理（Ｓ１２０）へ移行する。
正しく実行可能なコマンドであれば、当該コマンドを発行したＨＢＡのＷＷＰＮ取得コマンドであるかを判断する（Ｓ１０２）。
【００４６】
ＨＢＡのＷＷＰＮ取得コマンドであれば、ＨＢＡのＷＷＰＮ取得コマンドデコード処理（Ｓ１２１）へ移行し、そうでなければ、Ｓ１０３へ進む。
Ｓ１０２でＨＢＡのＷＷＰＮ取得コマンドデコード処理（Ｓ１２１）へ移行した場合は、当該コマンドを発行したＨＢＡのＷＷＰＮを編集し（図４（ａ）のＳ２０１）、正常終了処理（Ｓ２０２）へ移行する。
ＷＷＰＮの編集は、例えば、次のような手順で行う。
（１）システム上で"HBAのWWPN取得コマンド"を予め定義しておく。
（２）パス冗長化ドライバ４が、自身が制御すべきＨＢＡ(Ｉ／Ｏ発行元(Ｉ／Ｏパス))のＷＷＰＮを認識(取得)するために、全てのＨＢＡ経由で"ＨＢＡのＷＷＰＮ取得コマンド"を１回ずつ発行する。
（３）ディスクアレイサブシステム１０は、"ＨＢＡのＷＷＰＮ取得コマンド"を受け取ると、発行元のＨＢＡのＷＷＰＮを(返却データとして)編集し、該コマンドの実行結果としてパス冗長化ドライバ４に返却する。
（４）パス冗長化ドライバ４は返却されたデータを取得することで、ＨＢＡのＷＷＰＮを認識(取得)することができるようになる。
【００４７】
ＨＢＡのＷＷＰＮ取得コマンドでなければ、負荷分散要求テーブル取得コマンドであるかを判断し（Ｓ１０２の判定がノー、Ｓ１０３）、負荷分散要求テーブル取得コマンドであれば負荷分散要求テーブル取得コマンドデコード処理（Ｓ１２２）へ移行し、そうでなければ、Ｓ１０４へ進む。
【００４８】
Ｓ１０３で負荷分散要求テーブル取得コマンドデコード処理（Ｓ１２２）へ移行した場合は、負荷分散要求テーブル２４を編集して取得要求元のホストコンピュータ１に送信し（図４（ｂ）のＳ３０１）、正常終了処理（Ｓ３０２）へ移行する。
【００４９】
ここで編集される負荷分散要求テーブルは、図６に示すように、ディスクアレイサブシステム１０の各コントローラ１１および１２に存在するホスト接続ポートのＷＷＰＮ、負荷分散要求数、要求先ＨＢＡのＷＷＰＮ、負荷分散先ホスト接続ポートの候補数、および負荷分散先ホスト接続ポート候補のＷＷＰＮの情報からなる。
負荷分散要求数は、当該ホスト接続ポート宛のＩ／Ｏについて負荷分散を要求するＨＢＡの数である。当該ホスト接続ポート宛のＩ／Ｏの負荷分散が必要でない場合にはその値を「０」とする。「要求先ＨＢＡのＷＷＰＮ」の欄は、負荷分散要求数に応じた数とする。例えば、「負荷分散要求数」が「２」の場合、「要求先ＨＢＡのＷＷＰＮ」欄は２つとし、その値は、例えば「ＷＷＰＮａ」「ＷＷＰＮｂ」とする。
負荷分散の要求先のＨＢＡは、例えば次のような基準で選択する。
（１）負荷が集中しているホスト接続ポート宛のＩ／Ｏを最も多く送信しているものを選択する。
（２）ホスト接続ポート宛に発行されたＩ／Ｏにて指定される実データ格納場所を判断し、現在のホスト接続ポートでＩ／Ｏを処理するよりも、最適なホスト接続ポートが存在する場合に最適なホスト接続ポートへＩ／Ｏが発行される様、要求先のＨＢＡを選択し、誘導する。
要求先ＨＢＡのＷＷＰＮは、負荷分散の実行を要求するＨＢＡのＷＷＰＮであり、ホストコンピュータ１のパス冗長化ドライバ４は、この欄を参照して自己の管理下のＨＢＡのＷＷＰＮがある場合に、負荷分散先ホスト接続ポートのＷＷＰＮの欄にＷＷＰＮが書き込まれているホスト接続ポートのひとつ以上に、通常は負荷分散要求数が１以上になっているホスト接続ポートに送信するＩ／Ｏを分散させる。
【００５０】
図１のホスト接続ポート１６（ＷＷＰＮ０）に負荷が集中している状況を考えると、ディスクアレイサブシステム１０のコントローラ１１および１２が過去一定期間のＩ／Ｏ統計情報を採取／分析し、ＨＢＡ６（ＷＷＰＮa）のＩ／Ｏを他のホスト接続ポート１８、１９、１７（ＷＷＰＮ２、WWPN３、WWPN１）の何れかに振り向けることで、ホスト接続ポート１６の応答遅延が回避できると判断した場合は、ホスト接続ポート１６の該当欄（図６の１行目）に、負荷分散要求数として「１」、要求先ＨＢＡＷＷＰＮとして「ＷＷＰＮa」、負荷分散先ホスト接続ポートの候補数として「３」、および負荷分散先ホスト接続ポート候補のＷＷＰＮとして、「WWPN２」、「WWPN３」、「WWPN１」を編集する。
【００５１】
尚、ディスクアレイサブシステム１０は、各ホストコンピュータにパス冗長化ドライバ４が存在することを期待して負荷分散要求テーブルの要求先ＨＢＡのＷＷＰＮには、ディスクアレイサブシステム１０に接続されるすべてのＨＢＡを要求先候補として扱う。ただし、負荷分散要求テーブルを送信してから一定の時間内に負荷分散要求に応じてくれない要求先ＨＢＡに対しては、負荷分散要求テーブル２４よりクリアする。
【００５２】
図３に戻り、受信したコマンドがＨＢＡのＷＷＰＮ取得コマンドでも負荷分散要求テーブル取得コマンドでもない場合は、既存のコマンドデコード処理（既存の処理）を実施する（Ｓ１０２とＳ１０３の判定がいずれもノー、Ｓ１０４）。
【００５３】
次に、パス冗長化ドライバ４側の動作について説明する。
図５は、図１のパス冗長化ドライバ４により実施される処理過程の一部を示したフローチャートであり、具体的には、パス死活監視処理に関わる。パス死活監視とは、パス冗長化ドライバ４が管理する複数のＩ／Ｏパスに対して一定間隔にＩ／Ｏを生成、発行し、障害が発生していないかを確認するための導通テストである。この死活監視に使用するＩ／Ｏは、アプリケーション８から発行されるＩ／Ｏとは非同期に、パス冗長化ドライバ４が一定時間毎に生成し、発行する。尚、導通を確認することが目的であることから、パス死活監視に使用するＩ／Ｏには、例えば、ＩＮＱＵＩＲＹコマンドなどが用いられていた。
尚、パス冗長化ドライバ４は、自身の初期化段階で、自身が管理するＨＢＡのＷＷＰＮおよび自身が管理するＩ／Ｏパス、つまりディスクアレイサブシステム１０のホスト接続ポート１６等のＷＷＰＮを取得しているものとして説明する。
【００５４】
パス冗長化ドライバ４が管理しているＩ／Ｏパスより一つを選択し、負荷分散要求テーブル取得コマンドのＩ／Ｏリクエストを生成し（Ｓ４０１）、下位ドライバ５へＩ／Ｏリクエストを発行する（Ｓ４０２）。
【００５５】
Ｓ４０３では、Ｓ４０２の実行結果を確認する。ここで異常終了であれば、Ｉ／Ｏパス障害が発生していることがわかることから、異常終了処理（Ｓ４１０）へ移行する。
正常終了であれば、負荷分散要求テーブルが取得できている（Ｓ４０４）ことから、負荷分散要求テーブル内に自身が管理するＨＢＡのＷＷＰＮがあるかを判断して（Ｓ４０５）、自身が管理するＨＢＡのＷＷＰＮがなければ、パス死活監視処理を終了する（Ｓ４１１）。
【００５６】
自身が管理するＨＢＡのＷＷＰＮがあれば、負荷分散先ホスト接続ポート候補が自身が管理するＩ／Ｏパスであるかを判断し（Ｓ４０６）、自身が管理するＩ／Ｏパスでなければ、パス死活監視処理を終了する（Ｓ４１２）。
Ｓ４０７では、負荷分散要求テーブルの負荷分散先ホスト接続ポート候補より、自身が管理するＩ／Ｏパスの何れか一つまたは複数を選択し、負荷分散を行う。
例えば、受信した負荷分散要求テーブルが図６に示すものであった場合、パス冗長化ドライバ４は、「要求先ＨＢＡのＷＷＰＮ」としてＨＢＡ６に対応する「ＷＷＰＮａ」が含まれているので、「負荷分散先ホスト接続ポートのＷＷＰＮ」の中からホスト場接続ポート１８に対応する「ＷＷＰＮ２」を選択し、通常は図１のＩ／Ｏパス３１を使って送信するＩ／ＯをＩ／Ｏパス３３に負荷分散する。
以上により、特定ホスト接続ポートへの負荷集中を、他のホスト接続ポートに負荷分散する手段を提供する。
【００５７】
次に、ＳＡＮシステム５０の効果について説明する。
第一の効果は、パス冗長化ドライバ４とディスクアレイサブシステム１０間で連携、協調動作を行うことにより、システム全体で自律的な負荷分散機能を提供することができる。
第二の効果は、パス死活監視（パスの導通確認）のための余分なＩ／Ｏ負荷が発生しないことである。
その理由は、従来のパス冗長化ドライバはパス死活監視のために定期的にコマンド（例えば、”ＩＮＱＵＩＲＹコマンド”や”ＴＥＳＴ  ＵＮＩＴ＿ＲＥＡＤＹコマンド”など）を発行し、コマンドが正常終了すれば、パスに障害が発生していないと判断していた。この死活監視に使用していたコマンドの代わりに負荷分散要求テーブル取得コマンドを使用するため、負荷分散要求テーブルの取得、および負荷分散要求テーブルが取得できたこと、すなわちコマンドの正常終了をもってパス死活監視も兼ねており、本発明による余計なＩ／Ｏ負荷の発生はない。
第三の効果は、パス冗長化ドライバ４とディスクアレイサブシステム間の連携ならびにこれらの管理及び制御は、パス冗長化ドライバ４内に隠蔽して処理するため、上位ドライバ３や下位ドライバ５及びミドルウェアやアプリケーション８に改造の必要がないことである。
【００５８】
図１および図２に示した、ＳＡＮシステム５０は、本発明の実施形態の一例であり、本発明は、以下に説明するような形態でも実施することができる。
【００５９】
図７に示すように、負荷分散要求テーブル２４に負荷分散要求の割合（％）を設けてもよい。負荷分散要求先ＷＷＰＮａからホスト接続ポートＷＷＰＮ０へ発行されるＩ／Ｏについて、負荷分散先ホスト接続ポート候補のＷＷＰＮ２、３、１で示される一つまたは複数のホスト接続ポートに対して、負荷分散要求の割合（％）で指定された割合で負荷分散を行うことを示している。図７の場合、図５のＳ４０７では、パス冗長化ドライバ４は、通常はホスト接続ポート１６に送信するＩ／Ｏの４０％をホスト接続ポート１８に負荷分散する。
このようにすると、負荷の集中しいているホスト接続ポートのＩ／Ｏ負荷の分散を緻密に制御することができる。
【００６０】
図８に示すように、負荷分散要求テーブル２４に、さらに負荷分散先のホスト接続ポート１８（ＷＷＰＮ２）、１９（ＷＷＰＮ３）、ＷＷＰＮ１（１７）に対する負荷分散の割合（％）を設けてもよい。ホストコンピュータ１ａがこれらのホスト接続ポートのすべてと接続されているとすると、図５のＳ４０７では、パス冗長化ドライバ４は、通常はホスト接続ポート１６に送信するＩ／Ｏのうち４０％を負荷分散するが、分散するＩ／Ｏのうちの５０％はホスト接続ポート１８へ、３０％はホスト接続ポート１９へ、２０％はホスト接続ポート１７へ送信する。
このようにすれば、負荷の集中しいているホスト接続ポートのＩ／Ｏ負荷の分散、さらに負荷分散先ホスト接続ポートへの負荷分散の割合についても緻密に制御することが可能になる。
【００６１】
図２では、ＨＢＡ６および７の２つのＨＢＡを搭載するホストコンピュータを構成例としてあげたが、ＨＢＡの枚数は、ホストコンピュータで動作するＯＳの種類、ドライバ５、またはホストコンピュータ１のハードウェア等の仕様によって制限されるものであり、パス冗長化ドライバ４としてはＨＢＡの枚数に制限はない。
【００６２】
図２では、コントローラ１１および１２の２つのコントローラを搭載するディスクアレイサブシステム１０を構成例としてあげたが、コントローラ数に制限はない。
【００６３】
図２では、コントローラ１１および１２のコントローラにホスト接続ポートを２つずつ搭載するディスクアレイサブシステム１０を構成例としてあげたが、コントローラに搭載するホスト接続ポート数に制限はない。
【００６４】
図１では、ＨＢＡ６、７とコントローラ１１、１２をＦＣスイッチ４０、４１を介して接続したものを構成例としてあげたが、ハブを介して接続するようにしてもよいし、スイッチまたはハブを介さずにホストインタフェースケーブルで直接接続するようにしてもよい。
【００６５】
図２では、論理ディスク１３等はディスクアレイサブシステム１０内に構成されるものを例としてあげたが、ディスクアレイサブシステム１０に接続されたＪＢＯＤ（Ｊｕｓｔ  Ｂｕｎｃｈ ｏｆ Ｄｉｓｋｓ）等の外部のディスクで構成されても良い。
【００６６】
図１、２のホストコンピュータ１に接続されるディスクアレイサブシステム１０の数に制限はない。
図１のディスクアレイサブシステム内に構成される論理ディスクの数に制限はない。
図１のディスクアレイサブシステム内の内部バスの数に制限はない。
【００６７】
本実施形態では、ストレージサブシステムとして、ディスクアレイサブシステム１０を例にしたが、他の種類の装置を用いてもよい。
【００６８】
本実施形態では、HBAおよびホスト接続ポートの識別情報としてWWPNを使用したが、WWPNに限定されるわけではなく、HBAおよびホスト接続ポートを一意に識別できる情報であればなんでも良い。
【図面の簡単な説明】
【００６９】
【図１】本発明の一実施形態であるＳＡＮシステムの全体構成図である。
【図２】ホストコンピュータとディスクアレイサブシステムの機能ブロック図である。
【図３】ディスクアレイサブシステムの受信コマンド処理動作を示すフローチャートである。
【図４】図４（ａ）は、ディスクアレイサブシステムのＷＷＰＮ取得コマンドの処理動作を示すフローチャートである。図４（ｂ）は、ディスクアレイサブシステムの負荷分散要求テーブル取得コマンドの処理動作を示すフローチャートである。
【図５】図５は、ホストコンピュータのパス死活監視動作を示すフローチャートである。
【図６】負荷分散要求テーブルの一例を示す図である。
【図７】負荷分散要求テーブルの一例を示す図である。
【図８】負荷分散要求テーブルの一例を示す図である。
【符号の説明】
【００７０】
１  ホストコンピュータ
２  ファイルシステム
３  上位ドライバ
４  パス冗長化ドライバ
５  下位ドライバ
６、７  ＨＢＡ
１０  ディスクアレイサブシステム
１１、１２  コントローラ
１３、１４、１５  論理ディスク
１６〜１９  ホスト接続ポート
２４  負荷分散要求テーブル
５０  ＳＡＮシステム
【図１】
2008009497.tif 000003
【図２】
2008009497.tif 000004
【図３】
2008009497.tif 000005
【図４】
2008009497.tif 000006
【図５】
2008009497.tif 000007
【図６】
2008009497.tif 000008
【図７】
2008009497.tif 000009
【図８】
2008009497.tif 000010