説明

ストレージサブシステム、ホストコンピュータ、ストレージシステム、負荷分散方法、負荷分散プログラム

【課題】ホストコンピュータとストレージサブシステムとが協調して負荷分散処理を行うことができるストレージシステム等を提供すること
【解決手段】ストレージサブシステム10のコントローラ11は、負荷分散要求テーブルを24生成し、これを定期的に更新する機能と、ホストコンピュータ1から要求があったときに負荷分散要求テーブルをホストコンピュータに送信する機能を備える。ホストコンピュータは、ストレージサブシステムに対して、負荷分散要求テーブルの送信を要求し、この要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタ6、7に対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段4を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置の負荷分散技術に関し、特にストレージサブシステムとホストコンピュータが協調して負荷分散処理を行う技術に関する。
【背景技術】
【0002】
FC(Fibre Channel)スイッチなどを介して複数のホストコンピュータをディスクアレイサブシステムに接続した場合、ディスクアレイサブシステムの特定のホストポートまたは特定のコントローラに負荷が集中し、応答遅延(ホストポートネックまたはコントローラネック)が発生する。
この応答遅延を回避するために、刻々と変化するI/Oの性能分析を行い、適切な負荷分散を人手で実施するのは困難である。
【0003】
特許文献1には、システムサブシステム内で負荷分散を行うストレージ装置が記載されている。
このストレージシステムでは、ストレージサブシステム内に複数のストレージ処理部があり、各ストレージ処理部で処理負荷を計測する。また、負荷に対する上限/下限の閾値を定義しておく。
任意のストレージ処理部の負荷が上限値を超えた場合、他のストレージ処理部に対して負荷状況を問い合わせ、余裕のあるストレージ処理部に負荷を分散する。任意のストレージ処理部の負荷が下限値を割った場合、他のストレージ処理部に対して負荷状況を問い合わせ、余裕のあるストレージ処理部に自身の負荷を引き渡し、自身は省電力モードに移行する。
このようにして、ストレージ処理部の負荷分散による対ホストへのレスポンスの向上と電力効率の向上を図っている。
【0004】
【特許文献1】特開2003−296153号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記の従来技術では、負荷分散処理は、ストレージサブシステム(ストレージ処理部)のみで実行しており、ホストコンピュータとストレージサブシステムとが協調して負荷分散処理を行うことができなかった。
【0006】
そこで、本発明は、ホストコンピュータとストレージサブシステムとが協調して負荷分散処理を行うことができるストレージシステム等を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の、ストレージサブシステムのコントローラは、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、ホストコンピュータから要求があったときに負荷分散要求テーブルをホストコンピュータに送信する機能を備える(請求項1ないし請求項4)。
【0008】
上記ストレージサブシステムによれば、コントローラは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
【0009】
上記ストレージサブシステムにおいて、負荷分散要求テーブルは、要求先のホストバスアダプタが送信するI/O命令のうち負荷分散を実施する割合を指定する情報をようにしてもよい(請求項2)。
このようにすれば、ホストコンピュータは、送信するI/O命令の一部だけを通常とは異なるホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【0010】
上記ストレージサブシステムにおいて、負荷分散要求テーブルは、負荷分散先のホスト接続ポート毎に、要求先のホストバスアダプタがI/O命令を送信する割合を指定する情報を含むようにしてもよい(請求項3)。
このようにすれば、ホストコンピュータは、I/O命令を通常とは異なる複数のホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【0011】
上記ストレージサブシステムにおいて、コントローラは、負荷分散の要求先のホストバスアダプタのうち、負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を負荷分散要求テーブルから削除するようにしてもよい(請求項4)。
このようにすれば、負荷分散処理機能を持たないホストコンピュータやストレージサブシステムとの間の接続パスをひとつしか有していないホストコンピュータが接続されていた場合に、そのようなホストコンピュータのホストバスアダプタを負荷分散処理要求テーブルの対象からはずし、負荷分散処理要求テーブルの生成処理に要する時間を短縮することができる。
【0012】
本発明の、ホストコンピュータは、ストレージサブシステムに対して、ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求し、この要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備える(請求項5)。
【0013】
上記ホストコンピュータによれば、ストレージサブシステムから受信した負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりストレージサブシステムとの間のI/Oパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ストレージサブシステムとの協調のために余分なI/O負荷を生じさせることがない。
【0014】
本発明の、ストレージシステムは、ホストコンピュータとストレージサブシステムにより構成される。
ストレージサブシステムは、ホストコンピュータからI/O命令を受信する複数のホスト接続ポートと、I/O命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備え、コントローラは、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、ホストコンピュータから要求があったときに負荷分散要求テーブルをホストコンピュータに送信する機能を備える。
ホストコンピュータは、ストレージサブシステムに対してI/O命令を送信する複数のホストバスアダプタと、ストレージサブシステムに対して、負荷分散要求テーブルの送信を要求し、この要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備える(請求項6)。
【0015】
上記ストレージシステムによれば、ストレージサブシステムのコントローラは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
【0016】
本発明の、負荷分散方法は、ストレージサブシステムが、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新し、ホストコンピュータが、ストレージサブシステムに対して、負荷分散要求テーブルの送信を要求し、これに応じてストレージサブシステムが負荷分散要求テーブルをホストコンピュータに送信し、ホストコンピュータが、ストレージサブシステムから受信した負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する(請求項7ないし請求項10)。
【0017】
上記負荷分散方法によれば、ストレージサブシステムは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりホストコンピュータとストレージサブシステムとの間のI/Oパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ホストコンピュータとストレージサブシステムとの協調のために余分なI/O負荷を生じさせることがない。
【0018】
上記負荷分散方法において、負荷分散要求テーブルは、要求先のホストバスアダプタが送信するI/O命令のうち負荷分散を実施する割合を指定する情報を含むようにしてもよい(請求項8)。
このようにすれば、ホストコンピュータは、送信するI/O命令の一部だけを通常とは異なるホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【0019】
上記負荷分散方法において、負荷分散要求テーブルは、負荷分散先のホスト接続ポート毎に、要求先のホストバスアダプタがI/O命令を送信する割合を指定する情報を含むようにしてもよい(請求項9)。
このようにすれば、ホストコンピュータは、I/O命令を通常とは異なる複数のホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【0020】
上記負荷分散方法において、ストレージサブシステムが、負荷分散の要求先のホストバスアダプタのうち、負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を負荷分散要求テーブルから削除するようにしてもよい(請求項10)。
このようにすれば、負荷分散処理機能を持たないホストコンピュータやストレージサブシステムとの間の接続パスをひとつしか有していないホストコンピュータが接続されていた場合に、そのようなホストコンピュータのホストバスアダプタを負荷分散処理要求テーブルの対象からはずし、負荷分散処理要求テーブルの生成処理に要する時間を短縮することができる。
【0021】
本発明の、負荷分散プログラムは、ストレージサブシステムに、各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する処理と、ホストコンピュータから要求があったときに負荷分散要求テーブルをホストコンピュータに送信する処理とを実行させる(請求項11ないし請求項14)。
【0022】
上記負荷分散プログラムによれば、ストレージサブシステムを制御して、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりホストコンピュータとストレージサブシステムとの間のI/Oパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ホストコンピュータとストレージサブシステムとの協調のために余分なI/O負荷を生じさせることがない。
【0023】
上記負荷分散プログラムにおいて、負荷分散要求テーブルは、要求先のホストバスアダプタが送信するI/O命令のうち負荷分散を実施する割合を指定する情報を含むようにしてもよい(請求項12)。
このようにすれば、ホストコンピュータは、送信するI/O命令の一部だけを通常とは異なるホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【0024】
上記負荷分散プログラムにおいて、負荷分散要求テーブルは、負荷分散先のホスト接続ポート毎に、要求先のホストバスアダプタがI/O命令を送信する割合を指定する情報を含むようにしてもよい(請求項13)。
このようにすれば、ホストコンピュータは、I/O命令を通常とは異なる複数のホスト接続ポートに送信することにより、負荷分散処理をより緻密に制御することができる。
【0025】
上記負荷分散プログラムにおいて、ストレージサブシステムに、負荷分散の要求先のホストバスアダプタのうち、負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を負荷分散要求テーブルから削除する処理を実行させるようにしてもよい(請求項14)。
このようにすれば、負荷分散処理機能を持たないホストコンピュータやストレージサブシステムとの間の接続パスをひとつしか有していないホストコンピュータが接続されていた場合に、そのようなホストコンピュータのホストバスアダプタを負荷分散処理要求テーブルの対象からはずし、負荷分散処理要求テーブルの生成処理に要する時間を短縮することができる。
【0026】
本発明の、第2の負荷分散プログラムは、ホストコンピュータに、ストレージサブシステムに対して、ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先のホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先のホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求する処理と、要求に応じてストレージサブシステムから送信された負荷分散要求テーブルのホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する処理を実行させることを特徴とする(請求項15)。
【0027】
上記負荷分散プログラムによれば、ストレージサブシステムから受信した負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
また、負荷分散要求テーブルが取得できたか否かによりホストコンピュータとストレージサブシステムとの間のI/Oパスが正常に機能しているか否かを知ることができる。すなわち、負荷分散要求テーブルの取得処理を、従来から行われているパス死活監視処理の代わりとすることができ、そのため、ストレージサブシステムとの協調のために余分なI/O負荷を生じさせることがない。
【0028】
上記負荷分散プログラムを、ホストコンピュータで動作するパス冗長化ドライバの機能として実装してもよい(請求項16)。
このようにすれば、ストレージサブシステムと連携した負荷分散は、パス冗長化ドライバ内に隠蔽して処理するため、ホストコンピュータ上のパス冗長化ドライバとは異なるレイヤで動作するプログラム、例えば上位ドライバ、下位ドライバ、ミドルウェア、アプリケーションプログラム等を改造する必要がない。
【発明の効果】
【0029】
本発明によれば、ストレージサブシステムは、負荷分散要求テーブルをホストコンピュータの要求に応じて送信する。負荷分散要求テーブルには、負荷を分散させるホスト接続ポートを特定する情報等が示されているから、ホストコンピュータは、負荷分散要求テーブルに含まれる情報に従って負荷分散処理を実行することができる。すなわち、ストレージサブシステムとホストコンピュータとが協調し自立的な負荷分散機能を実現することができる。
【発明を実施するための最良の形態】
【0030】
以下、図を参照しながら本発明の一実施形態であるSAN(Storage Area Network)システム50(ストレージシステムの一例)の構成と動作について説明する。
図1は、SANシステム50の全体構成図である。SANシステム50は、複数のホストコンピュータ1a、1b等(以下、特に区別する必要がない場合は、「ホストコンピュータ1」という)とディスクアレイサブシステム10(ストレージサブシステムの一例)により構成されている。
ホストコンピュータ1は、ホストバスアダプタ(Host Bus Adapter、以下「HBA」という)を、ディスクアレイアブシステム10は、ホスト接続ポートを備え、HBAとホスト接続ポートは、FCスイッチ40、41を介して接続されている。HBAとホスト接続ポートには、図1のカッコ内に示すように、「WWPNa」等のWWPN(World Wide Port Name)が付与されている。WWPNは、ポートを一意に識別する64ビットのアドレスであり、HBAまたはコントローラの製造時にROM(Read Only Memory)に書き込まれている。
ホストコンピュータ1は、アクセスパス30を介して、ディスクアレイサブシステム10にI/O命令を発行し、論理ディスクに対するデータの書き込みと読み出しを行う。
【0031】
図2は、図1のホストコンピュータ1aとディスクアレイサブシステム10の機能ブロック図である。
ホストコンピュータ1aは、ファイルシステム2、上位ドライバ3、パス冗長化ドライバ4、下位ドライバ5、2個のHBA6および7を備えている。
ディスクアレイサブシステム10は、2個のコントローラ11および12と論理ディスク13、14等を備えている。
【0032】
(ホストコンピュータ1aの構成)
アプリケーション8は、ホストコンピュータ1のCPU(Central Processing Unit)が実行する任意のアプリケーションプログラムであり、論理ディスク13等に対するファイルの書き込みと読み出しをファイルシステム2に要求する。
【0033】
ファイルシステム2は、論理ドライブ上のファイルのファイル名と論理ドライブ上の格納位置との対応付けを保持する。
上位ドライバ3は、ファイルシステム2を介してアプリケーション8から渡されたI/Oをパス冗長化ドライバ4に渡す。
【0034】
HBA6および7は、それぞれホストインタフェースケーブル20および21を介してディスクアレイサブシステム10のコントローラ11および12にあるホスト接続ポート16および18に接続され、ホストコンピュータ1は、ディスクアレイサブシステム10が制御する論理ディスク13、14および15に対するI/Oを実行する。
【0035】
下位ドライバ5は、HBA6および7を制御しI/O処理を行う。
【0036】
パス冗長化ドライバ4は、上位ドライバ3から受け取ったI/Oを下位ドライバ5に引き渡し、また、HBA6または7を介してディスクアレイサブシステム10が制御する論理ディスク13、14または15に対するI/Oの実行結果を下位ドライバ5から受け取り、正常終了または異常終了の判断を行い、異常終了の原因がパスの構成要素(HBA6、7、ホストインタフェースケーブル20、21、コントローラ11、12等)における障害(故障)と判断した場合は、代替パスを用いて、異常終了したI/Oのリトライ処理を行うドライバである。
【0037】
本発明においては、パス冗長化ドライバ4は、ディスクアレイサブシステム10から負荷分散要求テーブル24を取得し、このテーブルに含まれる情報に従って負荷分散を行う。
具体的には、パス冗長化ドライバ4は、一方のI/Oパス(例えば、コントローラ11)のみにI/Oが集中することのないよう、複数のI/Oパスを有効に活用し、I/Oの負荷分散(コントローラ11または12のホスト接続ポート16、17、18、19にI/Oを振り分け)を行う機能を有する。
すなわち、パス冗長化ドライバ4とこれを実行するCPUは、負荷分散実行手段の一例である。
【0038】
ホストコンピュータ1による各I/Oの実行結果については、HBA6、下位ドライバ5、パス冗長化ドライバ4、上位ドライバ3、ファイルシステム2およびアプリケーション8の各レイヤによって判断が行われ、必要に応じて何らかの処置が行われる。
【0039】
ホストコンピュータ1b等のホストコンピュータ1aと同様の構成を備えている。ただし、これらのホストコンピュータには、パス冗長化ドライバ4を備えていないものが含まれていてもよい。
【0040】
(ディスクアレイサブシステム10の構成)
コントローラ11および12は、それぞれ内部バス22および23を介して各論理ディスク13、14および15に接続されており、いずれのコントローラからも各論理ディスクに対してアクセスすることができる。
コントローラ11および12は、負荷分散要求テーブル24を生成しRAM等の記憶装置に格納し、これを定期的に更新する。また、ホストコンピュータ1の要求に応じて負荷分散要求テーブル24をホストコンピュータに送信する。
負荷分散要求テーブル24の詳細については後述する。
【0041】
ホストコンピュータ1上で動作するアプリケーション8よりディスクアレイサブシステム10に書き込まれるデータ(ライトデータ転送I/O)は、アプリケーション8、ファイルシステム2、上位ドライバ3、パス冗長化ドライバ4、下位ドライバ5、HBA6、ホストインタフェースケーブル20、ホスト接続ポート16を介してコントローラ11に至り、指定された論理ディスク13、14または15に書き込まれる。
【0042】
ホストコンピュータ1上で動作するアプリケーション8よりディスクアレイサブシステム10から読み出されるデータ(リードデータ転送I/O)は、指定された論理ディスク13、14または15より、コントローラ11、ホスト接続ポート16、ホストインタフェースケーブル20を介してHBA6に至り、下位ドライバ5、パス冗長化ドライバ4、上位ドライバ3、ファイルシステム2を経てアプリケーション8に至る。
【0043】
論理ディスク13等は、アプリケーションプログラム8からは1個の独立した記憶装置として認識される記憶領域である。論理ディスク13は、1台の物理的な記憶装置(例えば、ハードディスク装置)の記憶領域の一部または全部で構成してもよいし、複数の物理的な記憶装置により構成してもよい。
【0044】
次に、SANシステム50の動作について説明する。
まず、ディスクアレイサブシステム10側の動作について説明する。
図3、図4(a)、図4(b)は、ディスクアレイサブシステム10のコントローラ11および12により実施され、ホストコンピュータ1より受け取ったI/Oコマンドの処理過程の一部を示したフローチャートである。
【0045】
ホストコンピュータ1より受け取ったコマンドは、まず正しく実行することができるかどうか判断され(図3のS101)、正しく実行することができないコマンドであれば、異常終了処理(S120)へ移行する。
正しく実行可能なコマンドであれば、当該コマンドを発行したHBAのWWPN取得コマンドであるかを判断する(S102)。
【0046】
HBAのWWPN取得コマンドであれば、HBAのWWPN取得コマンドデコード処理(S121)へ移行し、そうでなければ、S103へ進む。
S102でHBAのWWPN取得コマンドデコード処理(S121)へ移行した場合は、当該コマンドを発行したHBAのWWPNを編集し(図4(a)のS201)、正常終了処理(S202)へ移行する。
WWPNの編集は、例えば、次のような手順で行う。
(1)システム上で"HBAのWWPN取得コマンド"を予め定義しておく。
(2)パス冗長化ドライバ4が、自身が制御すべきHBA(I/O発行元(I/Oパス))のWWPNを認識(取得)するために、全てのHBA経由で"HBAのWWPN取得コマンド"を1回ずつ発行する。
(3)ディスクアレイサブシステム10は、"HBAのWWPN取得コマンド"を受け取ると、発行元のHBAのWWPNを(返却データとして)編集し、該コマンドの実行結果としてパス冗長化ドライバ4に返却する。
(4)パス冗長化ドライバ4は返却されたデータを取得することで、HBAのWWPNを認識(取得)することができるようになる。
【0047】
HBAのWWPN取得コマンドでなければ、負荷分散要求テーブル取得コマンドであるかを判断し(S102の判定がノー、S103)、負荷分散要求テーブル取得コマンドであれば負荷分散要求テーブル取得コマンドデコード処理(S122)へ移行し、そうでなければ、S104へ進む。
【0048】
S103で負荷分散要求テーブル取得コマンドデコード処理(S122)へ移行した場合は、負荷分散要求テーブル24を編集して取得要求元のホストコンピュータ1に送信し(図4(b)のS301)、正常終了処理(S302)へ移行する。
【0049】
ここで編集される負荷分散要求テーブルは、図6に示すように、ディスクアレイサブシステム10の各コントローラ11および12に存在するホスト接続ポートのWWPN、負荷分散要求数、要求先HBAのWWPN、負荷分散先ホスト接続ポートの候補数、および負荷分散先ホスト接続ポート候補のWWPNの情報からなる。
負荷分散要求数は、当該ホスト接続ポート宛のI/Oについて負荷分散を要求するHBAの数である。当該ホスト接続ポート宛のI/Oの負荷分散が必要でない場合にはその値を「0」とする。「要求先HBAのWWPN」の欄は、負荷分散要求数に応じた数とする。例えば、「負荷分散要求数」が「2」の場合、「要求先HBAのWWPN」欄は2つとし、その値は、例えば「WWPNa」「WWPNb」とする。
負荷分散の要求先のHBAは、例えば次のような基準で選択する。
(1)負荷が集中しているホスト接続ポート宛のI/Oを最も多く送信しているものを選択する。
(2)ホスト接続ポート宛に発行されたI/Oにて指定される実データ格納場所を判断し、現在のホスト接続ポートでI/Oを処理するよりも、最適なホスト接続ポートが存在する場合に最適なホスト接続ポートへI/Oが発行される様、要求先のHBAを選択し、誘導する。
要求先HBAのWWPNは、負荷分散の実行を要求するHBAのWWPNであり、ホストコンピュータ1のパス冗長化ドライバ4は、この欄を参照して自己の管理下のHBAのWWPNがある場合に、負荷分散先ホスト接続ポートのWWPNの欄にWWPNが書き込まれているホスト接続ポートのひとつ以上に、通常は負荷分散要求数が1以上になっているホスト接続ポートに送信するI/Oを分散させる。
【0050】
図1のホスト接続ポート16(WWPN0)に負荷が集中している状況を考えると、ディスクアレイサブシステム10のコントローラ11および12が過去一定期間のI/O統計情報を採取/分析し、HBA6(WWPNa)のI/Oを他のホスト接続ポート18、19、17(WWPN2、WWPN3、WWPN1)の何れかに振り向けることで、ホスト接続ポート16の応答遅延が回避できると判断した場合は、ホスト接続ポート16の該当欄(図6の1行目)に、負荷分散要求数として「1」、要求先HBAWWPNとして「WWPNa」、負荷分散先ホスト接続ポートの候補数として「3」、および負荷分散先ホスト接続ポート候補のWWPNとして、「WWPN2」、「WWPN3」、「WWPN1」を編集する。
【0051】
尚、ディスクアレイサブシステム10は、各ホストコンピュータにパス冗長化ドライバ4が存在することを期待して負荷分散要求テーブルの要求先HBAのWWPNには、ディスクアレイサブシステム10に接続されるすべてのHBAを要求先候補として扱う。ただし、負荷分散要求テーブルを送信してから一定の時間内に負荷分散要求に応じてくれない要求先HBAに対しては、負荷分散要求テーブル24よりクリアする。
【0052】
図3に戻り、受信したコマンドがHBAのWWPN取得コマンドでも負荷分散要求テーブル取得コマンドでもない場合は、既存のコマンドデコード処理(既存の処理)を実施する(S102とS103の判定がいずれもノー、S104)。
【0053】
次に、パス冗長化ドライバ4側の動作について説明する。
図5は、図1のパス冗長化ドライバ4により実施される処理過程の一部を示したフローチャートであり、具体的には、パス死活監視処理に関わる。パス死活監視とは、パス冗長化ドライバ4が管理する複数のI/Oパスに対して一定間隔にI/Oを生成、発行し、障害が発生していないかを確認するための導通テストである。この死活監視に使用するI/Oは、アプリケーション8から発行されるI/Oとは非同期に、パス冗長化ドライバ4が一定時間毎に生成し、発行する。尚、導通を確認することが目的であることから、パス死活監視に使用するI/Oには、例えば、INQUIRYコマンドなどが用いられていた。
尚、パス冗長化ドライバ4は、自身の初期化段階で、自身が管理するHBAのWWPNおよび自身が管理するI/Oパス、つまりディスクアレイサブシステム10のホスト接続ポート16等のWWPNを取得しているものとして説明する。
【0054】
パス冗長化ドライバ4が管理しているI/Oパスより一つを選択し、負荷分散要求テーブル取得コマンドのI/Oリクエストを生成し(S401)、下位ドライバ5へI/Oリクエストを発行する(S402)。
【0055】
S403では、S402の実行結果を確認する。ここで異常終了であれば、I/Oパス障害が発生していることがわかることから、異常終了処理(S410)へ移行する。
正常終了であれば、負荷分散要求テーブルが取得できている(S404)ことから、負荷分散要求テーブル内に自身が管理するHBAのWWPNがあるかを判断して(S405)、自身が管理するHBAのWWPNがなければ、パス死活監視処理を終了する(S411)。
【0056】
自身が管理するHBAのWWPNがあれば、負荷分散先ホスト接続ポート候補が自身が管理するI/Oパスであるかを判断し(S406)、自身が管理するI/Oパスでなければ、パス死活監視処理を終了する(S412)。
S407では、負荷分散要求テーブルの負荷分散先ホスト接続ポート候補より、自身が管理するI/Oパスの何れか一つまたは複数を選択し、負荷分散を行う。
例えば、受信した負荷分散要求テーブルが図6に示すものであった場合、パス冗長化ドライバ4は、「要求先HBAのWWPN」としてHBA6に対応する「WWPNa」が含まれているので、「負荷分散先ホスト接続ポートのWWPN」の中からホスト場接続ポート18に対応する「WWPN2」を選択し、通常は図1のI/Oパス31を使って送信するI/OをI/Oパス33に負荷分散する。
以上により、特定ホスト接続ポートへの負荷集中を、他のホスト接続ポートに負荷分散する手段を提供する。
【0057】
次に、SANシステム50の効果について説明する。
第一の効果は、パス冗長化ドライバ4とディスクアレイサブシステム10間で連携、協調動作を行うことにより、システム全体で自律的な負荷分散機能を提供することができる。
第二の効果は、パス死活監視(パスの導通確認)のための余分なI/O負荷が発生しないことである。
その理由は、従来のパス冗長化ドライバはパス死活監視のために定期的にコマンド(例えば、”INQUIRYコマンド”や”TEST UNIT_READYコマンド”など)を発行し、コマンドが正常終了すれば、パスに障害が発生していないと判断していた。この死活監視に使用していたコマンドの代わりに負荷分散要求テーブル取得コマンドを使用するため、負荷分散要求テーブルの取得、および負荷分散要求テーブルが取得できたこと、すなわちコマンドの正常終了をもってパス死活監視も兼ねており、本発明による余計なI/O負荷の発生はない。
第三の効果は、パス冗長化ドライバ4とディスクアレイサブシステム間の連携ならびにこれらの管理及び制御は、パス冗長化ドライバ4内に隠蔽して処理するため、上位ドライバ3や下位ドライバ5及びミドルウェアやアプリケーション8に改造の必要がないことである。
【0058】
図1および図2に示した、SANシステム50は、本発明の実施形態の一例であり、本発明は、以下に説明するような形態でも実施することができる。
【0059】
図7に示すように、負荷分散要求テーブル24に負荷分散要求の割合(%)を設けてもよい。負荷分散要求先WWPNaからホスト接続ポートWWPN0へ発行されるI/Oについて、負荷分散先ホスト接続ポート候補のWWPN2、3、1で示される一つまたは複数のホスト接続ポートに対して、負荷分散要求の割合(%)で指定された割合で負荷分散を行うことを示している。図7の場合、図5のS407では、パス冗長化ドライバ4は、通常はホスト接続ポート16に送信するI/Oの40%をホスト接続ポート18に負荷分散する。
このようにすると、負荷の集中しいているホスト接続ポートのI/O負荷の分散を緻密に制御することができる。
【0060】
図8に示すように、負荷分散要求テーブル24に、さらに負荷分散先のホスト接続ポート18(WWPN2)、19(WWPN3)、WWPN1(17)に対する負荷分散の割合(%)を設けてもよい。ホストコンピュータ1aがこれらのホスト接続ポートのすべてと接続されているとすると、図5のS407では、パス冗長化ドライバ4は、通常はホスト接続ポート16に送信するI/Oのうち40%を負荷分散するが、分散するI/Oのうちの50%はホスト接続ポート18へ、30%はホスト接続ポート19へ、20%はホスト接続ポート17へ送信する。
このようにすれば、負荷の集中しいているホスト接続ポートのI/O負荷の分散、さらに負荷分散先ホスト接続ポートへの負荷分散の割合についても緻密に制御することが可能になる。
【0061】
図2では、HBA6および7の2つのHBAを搭載するホストコンピュータを構成例としてあげたが、HBAの枚数は、ホストコンピュータで動作するOSの種類、ドライバ5、またはホストコンピュータ1のハードウェア等の仕様によって制限されるものであり、パス冗長化ドライバ4としてはHBAの枚数に制限はない。
【0062】
図2では、コントローラ11および12の2つのコントローラを搭載するディスクアレイサブシステム10を構成例としてあげたが、コントローラ数に制限はない。
【0063】
図2では、コントローラ11および12のコントローラにホスト接続ポートを2つずつ搭載するディスクアレイサブシステム10を構成例としてあげたが、コントローラに搭載するホスト接続ポート数に制限はない。
【0064】
図1では、HBA6、7とコントローラ11、12をFCスイッチ40、41を介して接続したものを構成例としてあげたが、ハブを介して接続するようにしてもよいし、スイッチまたはハブを介さずにホストインタフェースケーブルで直接接続するようにしてもよい。
【0065】
図2では、論理ディスク13等はディスクアレイサブシステム10内に構成されるものを例としてあげたが、ディスクアレイサブシステム10に接続されたJBOD(Just Bunch of Disks)等の外部のディスクで構成されても良い。
【0066】
図1、2のホストコンピュータ1に接続されるディスクアレイサブシステム10の数に制限はない。
図1のディスクアレイサブシステム内に構成される論理ディスクの数に制限はない。
図1のディスクアレイサブシステム内の内部バスの数に制限はない。
【0067】
本実施形態では、ストレージサブシステムとして、ディスクアレイサブシステム10を例にしたが、他の種類の装置を用いてもよい。
【0068】
本実施形態では、HBAおよびホスト接続ポートの識別情報としてWWPNを使用したが、WWPNに限定されるわけではなく、HBAおよびホスト接続ポートを一意に識別できる情報であればなんでも良い。
【図面の簡単な説明】
【0069】
【図1】本発明の一実施形態であるSANシステムの全体構成図である。
【図2】ホストコンピュータとディスクアレイサブシステムの機能ブロック図である。
【図3】ディスクアレイサブシステムの受信コマンド処理動作を示すフローチャートである。
【図4】図4(a)は、ディスクアレイサブシステムのWWPN取得コマンドの処理動作を示すフローチャートである。図4(b)は、ディスクアレイサブシステムの負荷分散要求テーブル取得コマンドの処理動作を示すフローチャートである。
【図5】図5は、ホストコンピュータのパス死活監視動作を示すフローチャートである。
【図6】負荷分散要求テーブルの一例を示す図である。
【図7】負荷分散要求テーブルの一例を示す図である。
【図8】負荷分散要求テーブルの一例を示す図である。
【符号の説明】
【0070】
1 ホストコンピュータ
2 ファイルシステム
3 上位ドライバ
4 パス冗長化ドライバ
5 下位ドライバ
6、7 HBA
10 ディスクアレイサブシステム
11、12 コントローラ
13、14、15 論理ディスク
16〜19 ホスト接続ポート
24 負荷分散要求テーブル
50 SANシステム

【特許請求の範囲】
【請求項1】
ホストコンピュータからI/O命令を受信する複数のホスト接続ポートと、前記I/O命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備えたストレージサブシステムにおいて、
前記コントローラは、前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、前記ホストコンピュータから要求があったときに前記負荷分散要求テーブルを前記ホストコンピュータに送信する機能を備えたことを特徴としたストレージサブシステム。
【請求項2】
前記負荷分散要求テーブルは、前記要求先のホストバスアダプタが送信する前記I/O命令のうち負荷分散を実施する割合を指定する情報を含むことを特徴とした請求項1に記載のストレージサブシステム。
【請求項3】
前記負荷分散要求テーブルは、前記負荷分散先のホスト接続ポート毎に、前記要求先のホストバスアダプタが前記I/O命令を送信する割合を指定する情報を含むことを特徴とした請求項1または請求項2に記載のストレージサブシステム。
【請求項4】
前記コントローラは、前記負荷分散の要求先の前記ホストバスアダプタのうち、前記負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を前記負荷分散要求テーブルから削除することを特徴とした請求項1ないし請求項3のいずれかひとつに記載のストレージサブシステム。
【請求項5】
ストレージサブシステムに対してI/O命令を送信するホストバスアダプタを複数備えたホストコンピュータにおいて、
前記ストレージサブシステムに対して、前記ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求し、この要求に応じて前記ストレージサブシステムから送信された前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備えたことを特徴としたホストコンピュータ。
【請求項6】
ホストコンピュータと、このホストコンピュータからI/O命令を受信するストレージサブシステムとから構成されるストレージシステムにおいて、
前記ストレージサブシステムは、
ホストコンピュータからI/O命令を受信する複数のホスト接続ポートと、
前記I/O命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備え、
前記コントローラは、前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新する機能と、前記ホストコンピュータから要求があったときに前記負荷分散要求テーブルを前記ホストコンピュータに送信する機能を備え、
前記ホストコンピュータは、
前記ストレージサブシステムに対してI/O命令を送信する複数のホストバスアダプタと、
前記ストレージサブシステムに対して、前記負荷分散要求テーブルの送信を要求し、この要求に応じて前記ストレージサブシステムから送信された前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する負荷分散実行手段を備えたことを特徴としたストレージシステム。
【請求項7】
ストレージサブシステムが備えホストコンピュータからI/O命令を受信するホスト接続ポートの負荷を分散する方法において、
前記ストレージサブシステムが、前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルを生成し、これを定期的に更新し、
ホストコンピュータが、前記ストレージサブシステムに対して、前記負荷分散要求テーブルの送信を要求し、これに応じて前記ストレージサブシステムが前記負荷分散要求テーブルを前記ホストコンピュータに送信し、
前記ホストコンピュータが、前記ストレージサブシステムから受信した前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行することを特徴とした負荷分散方法。
【請求項8】
前記負荷分散要求テーブルは、前記要求先のホストバスアダプタが送信する前記I/O命令のうち負荷分散を実施する割合を指定する情報を含むことを特徴とした請求項7に記載の負荷分散方法。
【請求項9】
前記負荷分散要求テーブルは、前記負荷分散先のホスト接続ポート毎に、前記要求先のホストバスアダプタが前記I/O命令を送信する割合を指定する情報を含むことを特徴とした請求項7または請求項8に記載の負荷分散方法。
【請求項10】
前記ストレージサブシステムが、前記負荷分散の要求先の前記ホストバスアダプタのうち、前記負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を前記負荷分散要求テーブルから削除することを特徴とした請求項7ないし請求項9のいずれかひとつに記載の負荷分散方法。
【請求項11】
ホストコンピュータからI/O命令を受信する複数のホスト接続ポートと、前記I/O命令に従って記憶装置に対する書き込みおよび読み出しを実行するコントローラを備えたストレージサブシステムに、
前記各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストコンピュータのホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む前記負荷分散要求テーブルを生成し、これを定期的に更新する処理と、前記ホストコンピュータから要求があったときに前記負荷分散要求テーブルを前記ホストコンピュータに送信する処理とを実行させることを特徴とした負荷分散プログラム。
【請求項12】
前記負荷分散要求テーブルは、前記要求先のホストバスアダプタが送信する前記I/O命令のうち負荷分散を実施する割合を指定する情報を含むことを特徴とした請求項11に記載の負荷分散プログラム。
【請求項13】
前記負荷分散要求テーブルは、前記負荷分散先のホスト接続ポート毎に、前記要求先のホストバスアダプタが前記I/O命令を送信する割合を指定する情報を含むことを特徴とした請求項11または請求項12に記載の負荷分散プログラム。
【請求項14】
前記ストレージサブシステムに、
前記負荷分散の要求先の前記ホストバスアダプタのうち、前記負荷分散要求テーブルを送信してから所定の時間内に応答のないものに関する情報を前記負荷分散要求テーブルから削除する処理を実行させることを特徴とした請求項11ないし請求項13のいずれかひとつに記載の負荷分散プログラム。
【請求項15】
ストレージサブシステムに対してI/O命令を送信するホストバスアダプタを複数備えたホストコンピュータに、
前記ストレージサブシステムに対して、前記ストレージサブシステムの各ホスト接続ポートについて負荷分散が必要であるか否かを示す情報と、負荷分散の要求先の前記ホストバスアダプタを特定するホストバスアダプタ特定情報と、負荷分散先の前記ホスト接続ポートを特定する情報を含む負荷分散要求テーブルの送信を要求する処理と、前記要求に応じて前記ストレージサブシステムから送信された前記負荷分散要求テーブルの前記ホストバスアダプタ特定情報に自己のホストバスアダプタに対応するものが含まれる場合に、前記負荷分散要求テーブルに含まれる情報に従って負荷分散を実行する処理を実行させることを特徴とした負荷分散プログラム。
【請求項16】
前記ホストコンピュータで動作するパス冗長化ドライバの機能として実装されたことを特徴とする請求項15に記載の負荷分散プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2008−9497(P2008−9497A)
【公開日】平成20年1月17日(2008.1.17)
【国際特許分類】
【出願番号】特願2006−176500(P2006−176500)
【出願日】平成18年6月27日(2006.6.27)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】