(57)【要約】【課題】  複数のストレージポート間で送受信負荷を自動的に分散させることが可能なポート割当装置を提供する。【解決手段】  ネットワークに接続された外部装置からのイニシエータ用コマンドを処理する複数のターゲットにより、前記外部装置からのデータを複数の記憶装置に論理的に管理するストレージ装置に設けられている複数のポートを前記各ターゲットに割り当てるポート割当装置であって、前記各ターゲットに割り当てられているポートごとに、ポートの負荷を示す負荷情報を格納する負荷情報記憶部と、前記負荷情報記憶部に格納されている負荷情報に基づいて、各ポートの負荷が分散するように、前記各ターゲットについてのポートの割り当てを変更する処理部とを備える。【選択図】      図１
2006079378.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された外部装置からのイニシエータ用コマンドを処理する複数のターゲットにより、前記外部装置からのデータを複数の記憶装置に論理的に管理するストレージ装置に設けられている複数のポートを前記各ターゲットに割り当てるポート割当装置であって、
前記各ターゲットに割り当てられているポートごとに、ポートの負荷を示す負荷情報を格納する負荷情報記憶部と、
前記負荷情報記憶部に格納されている負荷情報に基づいて、各ポートの負荷が分散するように、前記各ターゲットについてのポートの割り当てを変更する指示を行う処理部と、
を備えたことを特徴とするポート割当装置。
【請求項２】
前記処理部は、前記各ターゲットについてのポートの割り当てを変更する指示を行う際に、前記負荷情報記憶部に格納された負荷情報の同一ターゲットに対するポート当たりの平均値が上限値を超えたと判断した場合、該当するターゲットに未使用のポートを新規に割り当てるようにすることを特徴とする請求項１に記載のポート割当装置。
【請求項３】
前記処理部は、前記各ターゲットについてのポートの割り当てを変更する指示を行う際に、前記負荷情報記憶部に格納された負荷情報の同一ターゲットに対するポート当たりの平均値が下限値未満となったと判断した場合に、該当するポートの割り当てを解除するようにすることを特徴とする請求項１に記載のポート割当装置。
【請求項４】
前記処理部は、前記上限値を超えたポートにイニシエータ用コマンドを出力した外部装置に対して、前記新規に割り当てた未使用のポートからログインするように指示することを特徴とする請求項２に記載のポート割当装置。
【請求項５】
前記処理部は、割り当てを解除したポートからログインしている外部装置に対して、ログアウトするように指示することを特徴とする請求項３に記載のポート割当装置。
【請求項６】
前記各ターゲットに割り当てられるポートの一部は、管理者によって予め割り当てが禁止されていることを特徴とする請求項１乃至請求項５のいずれか１項に記載のポート割当装置。
【請求項７】
前記処理部は、前記複数のポートのうち、障害が発生したポートを検出したときに、そのポートの割り当てを禁止する指示を行うことを特徴とする請求項１乃至請求項６のいずれか１項に記載のポート割当装置。
【請求項８】
所定のタイミングで前記複数のポートの負荷を計測し、計測結果に基づいて前記負荷情報記憶部の負荷情報を生成するポート負荷計測部をさらに備えることを特徴とする請求項１乃至請求項７のいずれか１項に記載のポート割当装置。
【請求項９】
ネットワークに接続された外部装置からのイニシエータ用コマンドを処理する複数のターゲットにより、前記外部装置からのデータを複数の記憶装置に論理的に管理するストレージ装置に設けられている複数の各ポートを前記各ターゲットに割り当てるポート割当装置であって、
前記各ターゲットに割り当てられているポートごとに、ポートの負荷を示す負荷情報を格納する負荷情報記憶部と、
前記負荷情報記憶部に格納されている負荷情報に基づいて、各ポートの負荷が分散するように、前記各ターゲットについてのポートの割り当てを変更する指示を行うと共に、前記外部装置からのアクセスがあった場合に、その外部装置に対して、変更後の所定のポートにログインするように指示する処理部と、
を備えたことを特徴とするポート割当装置。
【請求項１０】
ネットワークに接続された外部装置からのｉＳＣＳＩイニシエータ用コマンドを処理する複数のｉＳＣＳＩターゲットにより、前記外部装置からのデータを複数の記憶装置に論理的に管理するストレージ装置に設けられている複数のポートを前記各ターゲットに割り当てるポート割当装置であって、
前記各ｉＳＣＳＩターゲットに割り当てられているポートごとに、ポートの負荷を示す負荷情報を格納する負荷情報記憶部と、
前記負荷情報記憶部に格納された負荷情報のポート当たりの平均値が上限値を超えたと判断した場合に、該当するｉＳＣＳＩターゲットに未使用のポートを新規に割り当てる指示を行う新規割当処理部と、
前記負荷情報記憶部に格納された負荷情報のポート当たりの平均値が下限値未満となったと判断した場合に、該当するｉＳＣＳＩターゲットに対して割り当てられている複数のポートのうちのいずれかのポートの割り当てを解除する指示を行う割当解除処理部と、
を備えることを特徴とするポート割当装置。
【請求項１１】
ネットワークに接続された外部装置からのイニシエータ用コマンドを処理する複数のターゲットにより、前記外部装置からのデータを複数の記憶装置に論理的に管理するストレージ装置に設けられている複数のポートを前記各ターゲットに割り当てるポート割当装置におけるポート割当方法であって、
前記ポート割当装置は、
前記各ターゲットに割り当てられているポートごとに、ポートの負荷を示す負荷情報を負荷情報記憶部に格納する格納ステップと、
この格納ステップで格納した負荷情報に基づいて、各ポートの負荷が分散するように、前記各ターゲットについてのポートの割り当てを変更する指示を行う変更ステップと、
を実行することを特徴とするポート割当方法。
【請求項１２】
前記変更ステップは、前記各ターゲットに対するポートの割り当てを変更する指示を行う際に、前記負荷情報記憶部に格納された負荷情報のターゲットに対するポート当たりの平均値が上限値を超えたか否かを判別する判別ステップと、
この判別ステップにて前記上限値を超えたと判別された場合に、該当するターゲットに未使用のポートを新規に割り当てる指示を行う新規割当ステップと、
を含んでいることを特徴とする請求項１１に記載のポート割当方法。
【請求項１３】
前記変更ステップは、前記各ターゲットに対するポートの割り当てを変更する指示を行う際に、前記負荷情報記憶部に格納された負荷情報のターゲットに対するポート当たりの平均値が下限値未満となったか否かを判別する判別ステップと、
この判別ステップにて前記下限値未満となったと判別された場合に、該当するターゲットに対して割り当てられている複数のポートのうちのいずれかのポートの割り当てを解除する指示を行う割当解除ステップと、
を含んでいることを特徴とする請求項１１に記載のポート割当方法。
【請求項１４】
前記ポート割当装置は、前記上限値を超えたポートにイニシエータ用コマンドを出力する外部装置に対して、前記新規に割り当てた未使用のポートからログインするように指示するステップをさらに実行することを特徴とする請求項１２に記載のポート割当方法。
【請求項１５】
前記ポート割当装置は、割り当てを解除したポートからログインしている外部装置に対して、ログアウトするように指示するステップをさらに実行することを特徴とする請求項１３に記載のポート割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポートの負荷を分散させるためのポート割当装置及びポート割当方法に関する。
【背景技術】
【０００２】
従来、サーバ装置とストレージ装置とを専用ネットワークで接続するストレージエリアネットワーク（Storage Area Network：ＳＡＮ）は、ファイバチャネル（Fiber Channel：ＦＣ）で構成するＦＣ−ＳＡＮが主流であった。これに対して最近では、ＳＡＮをＩＰ(Internet Protocol)ネットワークで構成するＩＰ−ＳＡＮが普及しつつある。ＩＰ−ＳＡＮは、ＦＣ−ＳＡＮに比べて低価格で実現できるなどの利点がある。
【０００３】
ＩＰでは、送信側の機器（送信元）が、後記するＴＣＰセグメントに、ＩＰアドレスなどの情報を含むＩＰヘッダを付加してパケットを作成し、作成したパケットを送信する。パケットは中継装置によって中継され、受信側の機器（宛先）まで送り届けられる。ＩＰでは、中継装置、あるいは受信側の機器に同時に多数のパケットが集中し、有効な通信ができなくなる状態、いわゆる、「輻輳」が発生することがある。この輻輳が発生すると、パケットは廃棄される。廃棄されたパケットの再送などの機能は、ＴＣＰ(Transmission Control Protocol)によって提供される。
【０００４】
ＴＣＰでは、送信元ＴＣＰポートと宛先ＴＣＰポートとの間でＴＣＰコネクションが確立すると、送信側の機器が、ポート番号などの情報を含むＴＣＰヘッダをデータに付加してＴＣＰセグメントを作成し、作成したＴＣＰセグメント（データ）を宛先に送信する。一方、受信側の機器はデータを受信すると送信元へ確認応答を返す。送信側の機器は、データの到達確認が所定時間できない場合に、輻輳が発生したと判断する。そして、確認応答なしで送信側が送信できるバイト数（ウィンドウサイズ）を減少させた上で、到達確認のできなかったＴＣＰセグメントを再送する。
【０００５】
ｉＳＣＳＩ(Internet Small Computer System Interface)は、このＴＣＰ／ＩＰに基づいてＩＰ−ＳＡＮを実現するためのプロトコルである。このiSCSIは、データの入出力要求を行うプログラムとそれに応答するプログラムとの間で、コマンドやデータを交換する。iSCSIでは、データの読み込みや書き込みなどの要求コマンドを送信する側のプログラム（あるいはこのプログラムを実行する装置）をイニシエータ、それらの要求に対して応答する側のプログラム（あるいはこのプログラムを実行する装置）をターゲットと呼ぶ。また、イニシエータとターゲットとがコマンドやデータを相互に交換する関係をiSCSIセッションと呼ぶ。１つのiSCSIセッションは、１つ以上のＴＣＰコネクションから構成されている。
【０００６】
ＩＰ−ＳＡＮでは、ストレージ装置は１つ以上のターゲットを定義することができる。また、あるターゲットに１つ以上のストレージポートを割り当てることができる。また、ストレージ装置は、サーバ装置との間で複数のＴＣＰコネクションを用いてデータの送受信を行うことができる。したがって、複数のストレージポート間で送受信の負荷を分散することで、ストレージポートにおける輻輳によるスループットの低下を回避することができる。
従来、複数のストレージポート間で送受信の負荷を分散するために、ストレージ装置の管理者が手動により、あらかじめターゲットに対するポートの割り当てを行っていた（例えば、特許文献１参照）。
【特許文献１】国際公開第２００４／０３８５５４号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このように、あるターゲットに対して複数のストレージポートを割り当てる場合には、ストレージ装置の管理者は、ストレージポートにおける単位時間あたりの送受信負荷（データ量）をターゲット毎に事前に想定した上で適切な割当ポート数を決定する必要があった。
【０００８】
そこで、本発明では、前記した問題を解決し、複数のストレージポート間での送受信負荷の分散を自動的に制御することができる装置（以下「ポート割当装置」という）を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、前記課題を解決するために創案されたものであり、ネットワークに接続された外部装置からのイニシエータ用コマンドを処理する複数のターゲットにより、前記外部装置からのデータを複数の記憶装置に論理的に管理するストレージ装置に設けられている複数のポートを前記各ターゲットに割り当てるポート割当装置であって、前記各ターゲットに割り当てられているポートごとに、ポートの負荷を示す負荷情報を格納する負荷情報記憶部と、前記負荷情報記憶部に格納されている負荷情報に基づいて、各ポートの負荷が分散するように、前記各ターゲットについてのポートの割り当てを変更する処理部と、を備えたことを特徴とする。
【００１０】
このような構成によれば、ポート割当装置は、負荷情報記憶部によって、ストレージ装置の各ポートごとの負荷情報を格納する。ここで、負荷情報は受信負荷または送信負荷を表す。また、ポート割当装置は、処理部によって、負荷情報を監視しているので、各ポートの負荷を分散させるように、各ターゲットについてのポートの割り当てを変更することができる。従って、外部装置は、割り当て結果に基づいてストレージ装置に対してログインあるいはログアウトを適切に行うことができる。
【発明の効果】
【００１１】
本発明によれば、ストレージ装置のポートにおける輻輳を有効に回避することができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明の実施形態について、適宜図面を参照しながら詳細に説明する。
（第１の実施形態）
図１は、第１の実施形態に係るポート割当装置が適用された計算機システムの概略図である。図示するように、この計算機システムは、管理用ネットワーク１０１を介して相互に接続された複数（図では３つ）のサーバ装置２００と、ストレージ装置３００と、ポート割当装置４００とを有する。また、複数のサーバ装置２００（外部装置）とストレージ装置３００とは、データ用ネットワーク１０２を介して接続されている。この管理用ネットワーク１０１及びデータ用ネットワーク１０２は、インターネットなどのＩＰネットワークである。なお、管理用ネットワーク１０１とデータ用ネットワーク１０２とを統合して１つのネットワークとすることも可能である。この場合、サーバ装置２００及びストレージ装置３００において、データ用ポートと管理用ポートは同一のポートとすることが可能である。
【００１３】
図１に示す計算機システムは、iSCSIプロトコルを用いてデータの入出力を行うシステムである。なお、iSCSIプロトコルは、ストレージ装置３００とサーバ装置２００との通信に用いられるSCSIコマンド（イニシエータ用コマンド）及びデータを、ＩＰネットワーク経由で送受信するためのプロトコルである。イニシエータ用コマンドは、例えば書き込み要求、または、読み込み要求である。
この計算機システムは、SCSIコマンドを発行し書込み／読込み処理を要求するiSCSIイニシエータ（以下、単にイニシエータという）と、その処理を行うiSCSIターゲット（以下、単にターゲットという）とを備える。すなわち、サーバ装置２００がイニシエータを有し、ストレージ装置３００がターゲットを有する。なお、ここでイニシエータ又はターゲットは、具体的にはiSCSIネームで定義される論理的な装置で、具体的には、ＴＣＰポート番号とＩＰアドレスとの組がiSCSIネームと対応する。
【００１４】
また、イニシエータ及びターゲットは、SCSIコマンド及びデータをカプセル化処理してiSCSI PDU(Protocol Data Unit)を作成する。iSCSI PDUは、iSCSIプロトコルが扱うデータの単位である。そして、サーバ装置２００及びストレージ装置３００は、当該iSCSI PDUをいくつかのパケットに分割して、ＴＣＰ／ＩＰが提供するＴＣＰコネクションを介して送信する。また、サーバ装置２００及びストレージ装置３００は、ＴＣＰコネクションを介してパケットを受信し、受信したパケットからiSCSI PDUを生成し、SCSIコマンド及びデータを再構成する処理を行う。なお、iSCSI PDUは、SCSIコマンドとデータとが含まれる要求メッセージのiSCSI PDUと、データのみのiSCSI PDUとを含む。
【００１５】
サーバ装置２００は、ストレージ装置３００に対し、iSCSIプロトコルを用いてデータの書き込みを行うなどのデータの入出力を伴うアプリケーションを実行する情報処理装置である。すなわち、サーバ装置２００は、データ用ネットワーク１０２を介してストレージ装置３００にアクセスし、iSCSIプロトコルに従ってデータの読み書きを行う。
なお、各サーバ装置２００は１つのイニシエータを有するものとする。そして、イニシエータを識別するために、各イニシエータは、iSCSIネームを有する。各サーバ装置２００のiSCSIネームは「I1」、「I2」及び「I3」である。
【００１６】
サーバ装置２００は、入力装置２０１と、出力装置２０２と、メモリ２０３と、ＣＰＵ２０４と、記憶装置２０５と、管理ポート２０６と、データポート２０７と、これら各装置２０１〜２０７を接続するバス２０８と、を有する。
入力装置２０１は、キーボードやマウスなどから構成されている。
出力装置２０２は、ディスプレイやプリンタなどから構成されている。
メモリ２０３には、後記する所定のプログラム及びデータが記憶されている。
ＣＰＵ２０４は、メモリ２０３に記憶されたプログラムを実行することで、後記する各種の処理を行うものである。
【００１７】
記憶装置２０５は、ハードディスクドライブ（ＨＤＤ）などから構成されている。記憶装置２０５には、サーバ装置２００の起動時にメモリ２０３にロードされるプログラム及びデータが格納されている。
管理ポート２０６は、管理用ネットワーク１０１を介して、ポート割当装置４００との間で、本システムの制御のための情報を含んだパケットを送受信するための装置である。
データポート２０７は、データ用ネットワーク１０２を介して、ストレージ装置３００と、iSCSI PDUを分割したパケットを送受信するための装置である。
なお、図示するサーバ装置２００は、一例であって、本発明はこれに限定されるものではない。例えば、各サーバ装置２００は、複数のデータポート２０７を有することとしてもよい。また、各サーバ装置２００は、複数のイニシエータを有することとしてもよい。
【００１８】
ストレージ装置３００は、サーバ装置２００の記憶装置としての機能を有するものである。ストレージ装置３００は３つのターゲットを有する。ターゲットを識別するためのiSCSIネームは、「T1」、「T2」及び「T3」である。
ストレージ装置３００は、データポート（ストレージポート）３０１と、キャッシュ３０２と、メモリ３０３と、ＣＰＵ３０４と、ディスクコントローラ３０５と、少なくとも１つのディスク３０６と、管理ポート３０７と、これら各装置を接続するバス３０８とを有する。
【００１９】
データポート３０１は、データ用ネットワーク１０２を介してサーバ装置２００に対して、iSCSI PDUを分割したパケットを送受信するための装置である。このデータポート３０１はＩＰアドレスによって識別される。ストレージ装置３００は、少なくとも１つ（図では３つ）のデータポート３０１を有する。なお、本明細書中では、データポート３０１を単にポートと略記する場合もある。
キャッシュ３０２は、アクセスを高速化するために一時的にデータを記憶するものである。
メモリ３０３には、後記する所定のプログラム及びデータが記憶されている。
ＣＰＵ３０４は、メモリ３０３に記憶されたプログラムを実行することで、後記する各種の処理を行うものである。
【００２０】
ディスクコントローラ３０５は、複数の記憶装置としてのディスク３０６へのデータの入出力を制御するものである。なお、ディスクコントローラ３０５は、ＲＡＩＤ(Redundant Array of Independent Disks)に相当する処理を行うものであってもよい。
ディスク３０６には、サーバ装置２００が読み書きするデータと、ストレージ装置３００の起動時にメモリ３０３にロードされるプログラム及びデータとが記憶されている。
管理ポート３０７は、管理用ネットワーク１０１を介して、ポート割当装置４００との間で、本システムの制御のための情報を含んだパケットを送受信するための装置である。
なお、図示するストレージ装置３００は一例であって、本発明はこれに限定されるものではない。例えば、ストレージ装置３００は、１つまたは２つ、あるいは４以上のターゲットを有することとしてもよい。
【００２１】
ポート割当装置４００は、ストレージ装置３００に関する情報の管理を行うと共に、ストレージポート３０１の負荷状況に応じてサーバ装置２００に対してログインあるいはログアウトの指示等を行うための装置である。
ポート割当装置４００は、管理ポート４０１と、入力装置４０２と、出力装置４０３と、メモリ４０４（負荷情報記憶部）と、ＣＰＵ４０５（処理部）と、記憶装置４０６と、これら各装置を接続するバス４０７とを有する。
【００２２】
管理ポート４０１は、管理用ネットワーク１０１を介し、サーバ装置２００及びストレージ装置３００との間で、本システムの制御のための情報を含んだパケットの送受信を行う装置である。
入力装置４０２はキーボードやマウスなどから構成される。
出力装置４０３はディスプレイやプリンタなどから構成される。
メモリ４０４には、後記する所定のプログラム及びデータが記憶される。
ＣＰＵ４０５は、メモリ４０４に記憶されたプログラムを実行することで、後記する各種の処理を行うものである。
記憶装置４０６には、サーバ装置２００の起動時にメモリ４０４にロードされるプログラム及びデータが格納されている。なお、図示するポート割当装置４００は一例であって、本発明はこれに限定されるものではない。
【００２３】
次に、サーバ装置２００の詳細な構成を図２を参照して説明する。
図２は、サーバ装置２００のメモリ２０３の構成を示す図である。メモリ２０３には、アプリケーションプログラム２１１と、イニシエータ処理プログラム２１２と、イニシエータｉＳＮＳ（Internet Storage Name Service）クライアントプログラム２１３と、ターゲット情報２１４とが記憶されている。
アプリケーションプログラム２１１は、所定の業務処理を行うためのプログラムであり、ストレージ装置３００に対してデータの入出力を行う契機となる。
【００２４】
イニシエータ処理プログラム２１２は、iSCSIプロトコルの処理、及びディスカバリ処理を行うためのプログラムである。なお、ディスカバリ処理とは、イニシエータがログイン可能なターゲットについての情報を得るための手続に関する処理のことである。図１のＣＰＵ２０４は、このイニシエータ処理プログラム２１２を実行することで、iSCSIプロトコルの処理を行う。具体的には、ＣＰＵ２０４は、アプリケーションプログラム２１１が書き込もうとするデータを所定の長さのiSCSI PDUの形式に変換したり、要求メッセージのiSCSI PDU及びデータのみのiSCSI PDUをストレージ装置３００へ送信したりする。また、ＣＰＵ２０４は、このイニシエータ処理プログラム２１２を実行することで、ポート割当装置４００の指示に基づいて、ストレージ装置３００において定義されたターゲットに対してiSCSIログイン（以下、単にログイン）あるいはiSCSIログアウト（以下、単にログアウト）を行う。このときのサーバ装置２００の動作の詳細は後記する。
【００２５】
イニシエータｉＳＮＳクライアントプログラム２１３は、ディスカバリ処理を行うためのプログラムである。図１のＣＰＵ２０４は、このイニシエータｉＳＮＳクライアントプログラム２１３を実行することで、ポート割当装置４００に対して、ログイン可能なターゲットについての情報を問い合わせると共に、ポート割当装置４００からその応答を受け取る（ディスカバリ処理）。このときの動作の詳細は後記する。
【００２６】
ターゲット情報２１４は、イニシエータがログインを行うことが可能なターゲットについての情報である。図３はターゲット情報の例を示す図である。ターゲット情報２１４は、ストレージ装置３００において定義され、例えば、図３に示すように、ターゲットのiSCSIネーム、ターゲットにログインするためのＩＰアドレス及びＴＣＰポート番号から構成される。
【００２７】
次に、ストレージ装置３００の詳細な構成を図４を参照して説明する。
図４は、ストレージ装置３００のメモリ３０３の構成を示す図である。
メモリ３０３には、ターゲット処理プログラム３１１と、負荷計測プログラム３１２と、負荷情報通知プログラム３１３と、構成情報３１５と、初期化プログラム３１４と、負荷情報３１６と、ターゲットｉＳＮＳクライアントプログラム３１７と、ターゲット設定プログラム３１８と、負荷情報生成プログラム３２３とが記憶されている。
【００２８】
ターゲット処理プログラム３１１は、iSCSIプロトコルの処理を行うためのプログラムである。図１のＣＰＵ３０４は、このターゲット処理プログラム３１１を実行することにより、iSCSIプロトコルの処理を行う。具体的には、ＣＰＵ３０４は、サーバ装置２００のイニシエータからの要求メッセージに対する応答メッセージのiSCSI PDUを送信したり、データのiSCSI PDUを受信したりする。また、ＣＰＵ３０４は、このターゲット処理プログラム３１１を実行することにより、書き込みデータを受信するごとに、各ストレージポート３０１の累積受信量をイニシエータ及びターゲット毎に逐次カウントする。
【００２９】
負荷計測プログラム３１２は、各ストレージポート３０１の単位時間あたりに受信したデータの量（以下、受信負荷という）を計測するためのプログラムである。図１のＣＰＵ３０４は、この負荷計測プログラム３１２を実行することにより、各ストレージポート３０１の単位時間あたりの受信ビット数を、送信元のイニシエータと宛先のターゲットの組み合わせ毎に計測する。そして、ＣＰＵ３０４は、負荷計測プログラム３１２を実行することにより、ポートの負荷を示す負荷情報３１６をメモリ３０３に格納する。
【００３０】
負荷情報通知プログラム３１３は、この負荷情報３１６をポート割当装置４００に通知するためのプログラムである。図１のＣＰＵ３０４は、この負荷情報通知プログラム３１３を実行することにより、負荷情報３１６をポート割当装置４００に通知する。このときのＣＰＵ３０４の動作の詳細は後記する。
【００３１】
構成情報３１５は、データポート（ストレージポート）３０１とターゲットとの関連付けを示すと共に、ＬＵ（Logical Unit）とターゲットとの関連付けを示す情報テーブルである。なお、ＬＵは、図１のディスクコントローラ３０５により図１のディスク３０６を複数の仮想的な論理ディスクに分割したものである。
【００３２】
図５は、構成情報３１５（テーブル）の例を示す図である。図示するテーブルには、ストレージポート５０１とターゲット５０２との対応関係が設定されている。また、このテーブルには、ＬＵ５０３とターゲット５０２との対応関係が設定されている。具体的には、ストレージポート５０１にはＩＰアドレス５０４が設定され、ターゲット５０２にはiSCSIネーム５０５が設定されている。また、ＬＵ５０３には、ＬＵの論理区分（１，２など）であるＬＵＮ（Logical Unit Number）５０６が設定されている。
ここで、例えばターゲット５０２のセルに「１」が設定されている場合には、該当するストレージポート３０１（またはＬＵ）と該当するターゲットとの間で関連付けがなされていることを示す。一方、セルに「null」値（空欄）が設定されている場合には、該当するストレージポート３０１（またはＬＵ）と該当するターゲットとの間で関連付けがなされていないことを示す。
【００３３】
例えば、図５に示すターゲット「T3」と、ＩＰアドレス「192.168.1.3」とが交差するセル５０７には「１」が設定されている。これは、ターゲット「T3」が、ＩＰアドレス「192.168.1.3」で識別されるストレージポート３０１を使用してデータの送受信を行うことができることを示している。
一方、ターゲット「T3」と、ＩＰアドレス「192.168.1.2」とが交差するセル５０８には「null」値（空白）が設定されている。これは、ターゲット「T3」は、ＩＰアドレス「192.168.1.2」で識別されるストレージポート３０１を使用することができないことを示している。
また、ターゲット「T3」と、ＬＵ「５」とが交差するセル５０９には「１」が設定されている。これは、ターゲット「T3」とＬＵ「５」とが関連付けられていることを示している。両者が関連付けられているとき、ターゲット「T3」はＬＵ「５」に対してデータの読み書きを行う。
【００３４】
再び図４を参照して説明すると、メモリ３０３に記憶された初期化プログラム３１４は、構成情報３１５を初期化するためのプログラムである。図１のＣＰＵ３０４は、ストレージ装置３００に電源が投入されたときなど、ストレージ装置３００の初期化処理を行う際に、初期化プログラム３１４を実行する。ＣＰＵ３０４は、この初期化プログラム３１４を実行することにより、ストレージポート３０１のＩＰアドレスと、設定されているＬＵのＬＵＮ（Logical Unit Number）と、設定されているターゲットのiSCSIネームとを取得し、構成情報３１５（テーブル）を生成する。さらにＣＰＵ３０４は、構成情報３１５を生成したときに、後記するサブルーチンＢを呼び出し、負荷情報３１６を生成する。なお、構成情報３１５に最初に登録される情報は、管理者等によって、入力装置４０２等を介してストレージ装置３００に入力される。
【００３５】
メモリ３０３に記憶された負荷情報３１６は、負荷計測プログラム３１２により計測された各ストレージポート３０１の単位時間あたりの受信データ量（受信負荷）を示すものである。この負荷情報３１６は、後記する負荷計測処理により、所定の時間間隔で更新される。
【００３６】
図６は、負荷情報３１６（テーブル）の例を示す図である。図示する負荷情報３１６では、ストレージポート６０１、イニシエータ６０２、ターゲット６０３、ポート総負荷６０４、及びポート通信速度６０５が相互に対応付けられている。具体的には、ストレージポート６０１にはＩＰアドレスが設定され、イニシエータ６０２及びターゲット６０３にはiSCSIネームが設定されている。そして、このテーブルには、平均負荷６０６がターゲット毎に設定されている。この負荷情報３１６は、ＩＰアドレスと、イニシエータのiSCSIネームと、ターゲットのiSCSIネームとの組合せ毎に計測された受信ビット数（Ｍｂｐｓ：Megabit per second）を有する。
ポート総負荷６０４は、ストレージポート３０１毎の単位時間あたりの合計受信ビット数（Ｍｂｐｓ）である。
ポート通信速度６０５は、各ストレージポート３０１の単位時間当たりに受信できるデータの最大ビット数（Ｍｂｐｓ）である。
平均負荷６０６は、ターゲット当たりの受信負荷の総ビット数（Ｍｂｐｓ）を、そのターゲットに割り当てられたポート数で割った平均値である。
【００３７】
図６に示す負荷情報３１６では、例えば、ＩＰアドレス「192.168.1.1」で識別されるストレージポート３０１において、ターゲット「T1」６１１が、イニシエータ「I1」６１２から受信した単位時間あたりの受信メガビット数は、セル６１３に記載のように、４００（Ｍｂｐｓ）であることが示されている。
また、このテーブルでは、ＩＰアドレス「192.168.1.2」で識別されるストレージポート３０１において、ターゲット「T1」６１１の各セル６１４には「null」値（空白）が設定されている。これは、構成情報３１５（図５参照）に基づいて、ターゲット「T1」６１１は、ＩＰアドレス「192.168.1.2」で識別されるストレージポート３０１を使用していないことを示している。
図６に示す負荷情報３１６では、ＩＰアドレス「192.168.1.1」で識別されるストレージポート３０１のポート総負荷は、セル６１５に示すように「８００（Ｍｂｐｓ）」であり、このポートのポート通信速度は、セル６１６に示すように「１０００（Ｍｂｐｓ）」であることが示されている。
【００３８】
また、図６に示す負荷情報３１６では、セル６１９に「１」の値が設定されている場合には、メモリ３０３に記憶されているプログラムが他のプログラムによる負荷情報３１６に対する書き込みを禁止している（ロックしている）ことを示す。一方、セル６１９に「０」の値が設定されている場合には、負荷情報３１６がロックされていないことを示す。
【００３９】
ストレージ装置３００のメモリ３０３の説明を続ける。
図４を参照して説明すると、ターゲットｉＳＮＳクライアントプログラム３１７は、ポート割当装置４００に対し、ストレージ装置３００において定義されたターゲットに関する情報（ターゲット情報）を通知するためのプログラムである。図１のＣＰＵ３０４は、このターゲットｉＳＮＳクライアントプログラム３１７を実行することにより、各ターゲットのiSCSIネーム、ＩＰアドレス、ＴＣＰポート番号等の情報（ターゲット情報）をポート割当装置４００に対して通知する（ディスカバリ処理）。このときのディスカバリ処理の詳細は後記する。
【００４０】
ターゲット設定プログラム３１８は、所定のターゲットに対してストレージポート３０１が新規に追加された場合、ストレージポート３０１が使用不能になった場合、あるいは、ポート割当装置４００から指示があった場合に、構成情報３１５を更新するためのプログラムである。このときのＣＰＵ３０４の動作の詳細は後記する。
【００４１】
負荷情報生成プログラム３２３は、構成情報３１５の更新に基づいて、負荷情報３１６のエントリ（記載事項）を追加あるいは削除するためのプログラムである。このときのＣＰＵ３０４の動作の詳細は後記する。
【００４２】
次に、ポート割当装置４００の詳細な構成を図７を参照して説明する。
図７は、ポート割当装置４００のメモリ４０４の構成を示す図である。
メモリ４０４には、負荷監視プログラム４１１と、ポート割当追加プログラム４１３と、ポート割当解除プログラム４１４と、初期化プログラム４１５と、負荷情報４１６と、ｉＳＮＳサーバプログラム４１７と、ターゲット情報４１８と、設定情報４１９とが記憶されている。
【００４３】
負荷監視プログラム４１１は、ストレージ装置３００に、負荷情報３１６の通知を要求すると共に、負荷情報４１６の更新及び監視を行うためのプログラムである。図１のＣＰＵ４０５は、この負荷監視プログラム４１１を実行することにより、ストレージ装置３００のメモリ３０３に記憶された負荷情報３１６を要求する。また、ＣＰＵ４０５は、この負荷監視プログラム４１１を実行することにより、メモリ４０４に記憶された負荷情報４１６を更新するとともに、この負荷情報４１６とメモリ４０４に記憶された設定情報４１９とを照合することにより、ターゲット毎に受信負荷を監視する。このときのＣＰＵ４０５の動作の詳細は後記する。
【００４４】
ポート割当追加プログラム４１３は、ターゲットに対し新規にストレージポート３０１を割り当てるためのプログラムである。図１のＣＰＵ４０５は、このポート割当追加プログラム４１３を実行することにより、受信負荷の高いターゲットに対し、新規にストレージポート３０１を割り当てると共に、サーバ装置２００に対し、新規に割り当てたストレージポート３０１を用いたログインを行うように指示する。このときのＣＰＵ４０５の動作の詳細は後記する。なお、ＣＰＵ４０５は、このポート割当追加プログラム４１３を実行するときに、新規割当処理部として機能する。
【００４５】
ポート割当解除プログラム４１４は、ターゲットに対するストレージポート３０１の割り当てを解除するためのプログラムである。図１のＣＰＵ４０５は、このポート割当解除プログラム４１４を実行することにより、受信負荷の低いターゲットに対するストレージポート３０１の割り当てを解除すると共に、サーバ装置２００に対し、解除したストレージポート３０１を用いたコネクションからログアウトするよう指示する。このときのＣＰＵ４０５の動作の詳細は後記する。なお、ＣＰＵ４０５は、このポート割当解除プログラム４１４を実行するときに、割当解除処理部として機能する。
【００４６】
初期化プログラム４１５は、負荷情報４１６を初期化するためのプログラムである。図１のＣＰＵ４０５は、この初期化プログラム４１５を実行することで、ポート割当装置４００に電源が投入されたときに、記憶装置４０６に予め記憶された初期値を、負荷情報４１６の初期値として設定する。あるいは、ＣＰＵ４０５は、この初期化プログラム４１５を実行することで、ポート割当装置４００の入力装置４０２から入力された初期値を、負荷情報４１６の初期値として設定する。また、本実施形態では、負荷情報４１６の初期値として、受信負荷に０（Ｍｂｐｓ）を設定する。しかしながら、本発明は、これに限定されるものではない。
なお、負荷情報４１６は、ストレージ装置３００から取得した負荷情報３１６を記憶したものである。
【００４７】
ｉＳＮＳサーバプログラム４１７は、ストレージ装置３００から、ターゲット情報を受け付けると共に、このターゲット情報についてのサーバ装置２００からの問い合わせに応じるためのプログラムである。図１のＣＰＵ４０５は、このｉＳＮＳサーバプログラム４１７を実行することにより、ストレージ装置３００からターゲット情報を受け付け、メモリ４０４に記憶されたターゲット情報４１８を更新すると共に、このターゲット情報４１８をサーバ装置２００からの問い合わせに応じて、サーバ装置２００へ通知する。このときのＣＰＵ４０５の動作の詳細は後記する。なお、ターゲット情報４１８は、ターゲットのiSCSIネーム、ＩＰアドレス、ＴＣＰポート番号などから構成される。
【００４８】
設定情報４１９は、ポートの受信負荷の基準値であり、この基準値は管理者が設定するものである。設定情報４１９は、ポート割当装置４００がサーバ装置２００に対してログインあるいはログアウトの指示を行う際の基準となる。
【００４９】
図８は、設定情報４１９の例を示す図である。図８において、上限負荷（上限値）８０１は、ターゲットに割り当てられたストレージポート３０１が高負荷であるか否かを判断するための基準となるポート当たりの受信ビット数（Ｍｂｐｓ）である。また、図８に示す下限負荷（下限値）８０２は、ターゲットに割り当てられたストレージポート３０１が低負荷であるか否かを判断するための基準となるポート当たりの受信ビット数（Ｍｂｐｓ）である。
図８に示す設定情報の例では、ターゲット「T1」８０３に割り当てられたストレージポート３０１の受信負荷の平均値が５００（Ｍｂｐｓ）を超える場合に、ターゲット「T1」８０３に割り当てられたストレージポート３０１が高負荷であることを示す。また、ターゲット「T1」８０３に割り当てられたストレージポート３０１の受信負荷の平均値が２００（Ｍｂｐｓ）未満の場合に、ターゲット「T1」８０３に割り当てられたストレージポート３０１が低負荷であることを示す。
【００５０】
次に、本計算機システムにおけるサーバ装置２００、ストレージ装置３００及びポート割当装置４００の動作について、ディスカバリ、ストレージポート３０１の負荷情報の生成・更新、及び、ポート割当装置４００によるポート割当を順に説明する。
まず、サーバ装置２００の有するイニシエータがディスカバリを行うときの動作について、図９乃至図１２を参照して（適宜図１参照）説明する。
【００５１】
図９は、イニシエータがディスカバリを行う際の全体のシーケンスである。
ポート割当装置４００は、管理者による入力装置４０２からの操作に応じて、ストレージ装置３００にターゲット情報を要求すると、ストレージ装置３００は、ターゲット情報を含むメッセージＭ９０１をポート割当装置４００に対して通知する。ターゲット情報は、各ターゲットのiSCSIネームと、ＩＰアドレスと、ＴＣＰポート番号から構成される。一方、サーバ装置２００が、使用者による入力装置２０１からの操作に応じて、ターゲット情報を問い合わせるメッセージＭ９０２をポート割当装置４００に対して送信すると、ポート割当装置４００は、メモリ３０３に記憶されたターゲット情報を含むメッセージＭ９０３をサーバ装置２００に対して自動的に送信する。
【００５２】
図１０は、ポート割当装置４００によるターゲット情報の登録処理を示す処理フローである。この処理は、ＣＰＵ４０５がメモリ４０４に記憶されたｉＳＮＳサーバプログラム４１７を実行することにより行われる。
ＣＰＵ４０５は、ストレージ装置３００からターゲット情報を含むメッセージＭ９０１を受信すると（Ｓ１００１：ＹＥＳ）、メモリ４０４に記憶されたターゲット情報４１８を更新する（Ｓ１００２）。他方、ＣＰＵ４０５は、ストレージ装置３００からメッセージＭ９０１を受信しなければ（Ｓ１００１：ＮＯ）、後記するサブルーチンＡを起動する（Ｓ１００３）。
【００５３】
図１１は、サーバ装置２００によるディスカバリ処理を示す処理フローである。この処理は、ＣＰＵ２０４がメモリ２０３に記憶されたｉＳＮＳクライアントプログラム２１３を実行することにより行われる。ＣＰＵ２０４は、ポート割当装置４００にターゲット情報を問い合わせるメッセージＭ９０２を送信する（Ｓ１１０１）。そして、ＣＰＵ２０４は、ポート割当装置４００からターゲット情報を含むメッセージＭ９０３を受信する（Ｓ１１０２：ＹＥＳ）と、受信したメッセージＭ９０３に基づいて、メモリ２０３に記憶されているターゲット情報２１４を更新する（Ｓ１１０３）。さらに、ＣＰＵ２０４は、受信したメッセージＭ９０３の内容（ターゲット情報）を出力装置２０２に表示する。なお、ＣＰＵ２０４は、ポート割当装置４００からメッセージＭ９０３を受信するまで、待機する（Ｓ１１０２：ＮＯ）。
【００５４】
図１２は、ポート割当装置４００によるターゲット情報の通知処理を示す処理フローである。この処理は、ＣＰＵ４０５がメモリ４０４に記憶されたｉＳＮＳサーバプログラム４１７を実行することにより行われる。この処理は、図１０に示したステップＳ１００３で呼び出されるサブルーチンＡである。ＣＰＵ４０５は、サーバ装置２００からターゲット情報を問い合わせるメッセージＭ９０２を受信すると（Ｓ１２０１：ＹＥＳ）、メモリ４０４からターゲット情報４１８を抽出し、抽出したターゲット情報４１８を含むメッセージＭ９０３をサーバ装置２００に送信する（Ｓ１２０２）。なお、ＣＰＵ４０５は、サーバ装置２００からメッセージＭ９０２を受信しなければ（Ｓ１２０１：ＮＯ）、サブルーチンＡを終了する。
【００５５】
以上の動作により、サーバ装置２００の使用者は、入手したターゲット情報に基づいて、入力装置２０１を操作することにより、ターゲット及びストレージポート３０１を選択してログインを行うことができる。
【００５６】
次に、ストレージ装置３００が図６に示した負荷情報テーブルを生成するときの動作について、図１３及び図１４を参照して（適宜図１参照）説明する。ストレージ装置３００は、負荷情報テーブルを生成する前に、構成情報３１５の更新（ターゲット設定）を行う。すなわち、ターゲットとストレージポート３０１との関連付けや、ターゲットとＬＵとの関連付けを行う。図１３は、ストレージ装置３００のメモリ３０３に記憶された構成情報３１５の更新処理を示す処理フローである。この処理は、ＣＰＵ３０４がメモリ３０３に記憶されたターゲット設定プログラム３１８を実行することにより行われる。
【００５７】
ＣＰＵ３０４は、ストレージ装置３００が有する使用可能なすべてのストレージポート３０１のＩＰアドレスを調べ、メモリ３０３に記憶された図５の構成情報３１５と比較し、ストレージポート３０１の構成に変更があるか否かを判別する（Ｓ１３０１）。ポート構成に変更があると判別した場合（Ｓ１３０１：ＹＥＳ）、ＣＰＵ３０４は、メモリ３０３に記憶された構成情報３１５を更新し（Ｓ１３０５）、更新後の構成情報と更新前の構成情報との差分をメモリ３０３に一時保存する。そして、ＣＰＵ３０４は、Ｓ１３０５に続いて、サブルーチンＢを実行し（Ｓ１３０６）、Ｓ１３０１に戻る。
一方、ストレージポート３０１の構成に変更がないと判別した場合（Ｓ１３０１：ＮＯ）、後に説明するＳ１３０２以下の処理を実行する。
【００５８】
図１４は、ストレージ装置３００の負荷情報テーブルの生成処理を示す処理フローである。この処理は、ＣＰＵ３０４がメモリ３０３に記憶された負荷情報生成プログラム３２３を実行することにより行われる。この処理は、構成情報３１５の更新（ターゲット設定）処理のＳ１３０６で実行されるサブルーチンＢである。なお、このサブルーチンＢは、負荷情報３１６の初期化処理を行うときにも実行される。
【００５９】
ＣＰＵ３０４は、メモリ３０３に一時保存された「更新後の構成情報と更新前の構成情報との差分」を読み出す（Ｓ１４０１）。そして、ＣＰＵ３０４は、負荷情報３１６を参照して、負荷情報３１６がロックされていない（セル６１９に「０」の値が設定されている）と判別した場合（Ｓ１４０２：ＮＯ）、負荷情報３１６をロックする（セル６１９に「１」の値を設定する）（Ｓ１４０３）。なお、負荷情報３１６がロックされていればロックが解除されるまで待機する（Ｓ１４０２：ＹＥＳ）。
【００６０】
Ｓ１４０３に続いて、ＣＰＵ３０４は、構成情報の差分に基づいて、追加すべきストレージポート３０１のエントリがあると判別した場合には（Ｓ１４０４：ＹＥＳ）、負荷情報３１６にそのエントリを追加する（Ｓ１４０５）。また、ＣＰＵ３０４は、構成情報の差分に基づいて、削除すべきストレージポート３０１のエントリがあると判別した場合には（Ｓ１４０６：ＹＥＳ）、負荷情報３１６からそのエントリを削除する（Ｓ１４０７）。ＣＰＵ３０４は、負荷情報３１６の更新を実行した後に、負荷情報３１６のロックを解除し（Ｓ１４０８）、処理を終了する。
【００６１】
次に、ポート割当装置４００が負荷情報４１６を更新するときの動作について、図１５乃至図１８を参照して（適宜図１参照）説明する。図１５は、ポート割当装置４００がストレージ装置３００から負荷情報を取得する際のシーケンスである。
ストレージ装置３００は、メモリ３０３に記憶された負荷情報３１６を周期的に自動更新している（Ｓ１５０１）。一方、ポート割当装置４００は、管理者による入力装置４０２からの操作に応じて、負荷情報を要求するメッセージＭ１５０２をストレージ装置３００に送信する。メッセージＭ１５０２を受信したストレージ装置３００は、負荷情報３１６を含むメッセージＭ１５０３をポート割当装置４００に対して返信する。なお、このメッセージＭ１５０３には構成情報３１５も含まれている。ポート割当装置４００は、受信したメッセージＭ１５０３に含まれる負荷情報３１６に基づいて、メモリ４０４に記憶された負荷情報４１６を更新する（Ｓ１５０４）。以上の動作により、ポート割当装置４００は負荷情報４１６を更新することができる。
【００６２】
図１６は、ストレージ装置３００による受信負荷計測処理を示す処理フローである。この処理は、ＣＰＵ３０４があらかじめ定められた時間間隔（例えば、１分毎）でメモリ３０３に記憶された負荷計測プログラム３１２を実行することにより行われる。
ＣＰＵ３０４は、受信負荷として、各ストレージポート３０１、各送信元イニシエータ及び各宛先ターゲット毎の単位時間あたりの受信ビット数を算出する（Ｓ１６０１）。ここで、ＣＰＵ３０４は、ターゲット処理プログラム３１１を実行することにより、ストレージポート３０１の累積受信量をイニシエータ及びターゲット毎に逐次カウントし、その値をメモリ３０３に蓄積している。そこで、ＣＰＵ３０４は、メモリ３０３に記憶された累積受信量をそれぞれ読み出し、読み出したそれぞれの累積受信量を所定の時間で割ることにより各受信負荷（例えば、１秒当りの受信ビット数）を算出する。各受信負荷は、図６に示した負荷情報テーブルの構造を有しており、メモリ３０３に記憶される。
【００６３】
ＣＰＵ３０４は、全ての受信負荷を算出後、メモリ３０３に記憶されている全ての累積受信量を、「０」にリセットする（Ｓ１６０２）。続いて、ＣＰＵ３０４は、負荷情報３１６を参照して、負荷情報３１６がロックされていない（セル６１９に「０」の値が設定されている）と判別した場合（Ｓ１６０３：ＮＯ）、負荷情報３１６をロックする（セル６１９に「１」の値を設定する）（Ｓ１６０４）。ＣＰＵ３０４は、メモリ３０３に記憶されている負荷情報３１６（受信負荷）を、算出した受信負荷の値にそれぞれ更新する（Ｓ１６０５）。負荷情報３１６の更新後、ＣＰＵ３０４は、負荷情報３１６のロックを解除する（Ｓ１６０６）。前記Ｓ１６０３において、負荷情報３１６がロックされていればロックが解除されるまで待機する（Ｓ１６０３：ＹＥＳ）。
【００６４】
なお、ＣＰＵ３０４は、受信したパケットのヘッダ内の送信元ＩＰアドレス、送信元ＴＣＰポート番号、宛先ＩＰアドレス、宛先ＴＣＰポート番号の組み合わせによってＴＣＰコネクションを識別し、そのＴＣＰコネクションをどのiSCSIセッションが使用しているか判断することによって、イニシエータ及びターゲットの識別を行う。
【００６５】
図１７は、ストレージ装置３００による負荷情報通知処理を示す処理フローである。このストレージ装置３００の負荷情報通知処理は、ＣＰＵ３０４がメモリ３０３に記憶された負荷情報通知プログラム３１３を実行することにより行われる。
ＣＰＵ３０４は、ポート割当装置４００から、管理ポート３０７を介して、負荷情報３１６を要求するメッセージＭ１５０２を受信すると（Ｓ１７０１：ＹＥＳ）、メモリ３０３に記憶された負荷情報３１６を参照する（Ｓ１７０２）。なお、ＣＰＵ３０４は、ポート割当装置４００から、負荷情報３１６を要求するメッセージＭ１５０２を受信するまで待機する（Ｓ１７０１：ＮＯ）。Ｓ１７０２に続いて、ＣＰＵ３０４は、負荷情報３１６がロックされていないと判別した場合（Ｓ１７０３：ＮＯ）、メッセージＭ１５０３により負荷情報３１６をポート割当装置４００に送信する（Ｓ１７０４）。なお、ＣＰＵ３０４は、負荷情報３１６がロックされていると判別した場合、ロックが解除されるまで待機する（Ｓ１７０３：ＹＥＳ）。
【００６６】
図１８は、ポート割当装置４００による負荷監視処理を示す処理フローである。この処理は、ＣＰＵ４０５がメモリ４０４に記憶された負荷監視プログラム４１１を周期的に実行することにより行われる。ＣＰＵ４０５は、あらかじめ定められた時間間隔（例えば、１分毎）で、ストレージ装置３００に負荷情報３１６を要求するためのメッセージＭ１５０２を、管理ポート４０１を介して送信する（Ｓ１８０１）。そして、ＣＰＵ４０５は、ストレージ装置３００から負荷情報３１６を含むメッセージＭ１５０３を受信すると（Ｓ１８０２：ＹＥＳ）、受信した負荷情報３１６に基づきメモリ４０４に記憶されている負荷情報４１６を更新する（Ｓ１８０３）。なお、ＣＰＵ４０５は負荷情報３１６を受信するまで待機する（Ｓ１８０２：ＮＯ）。
【００６７】
Ｓ１８０３に続いて、ＣＰＵ４０５は、メモリ４０４に記憶された負荷情報４１６を参照して、負荷情報４１６が有するターゲット毎の平均負荷６０５（図６参照）を、メモリ４０４に記憶された設定情報４１９の上限負荷８０１（図８参照）と比較する。このとき、平均負荷６０５が上限負荷８０１を上回る（上限値を超える）ターゲットが存在すると判別した場合に（Ｓ１８０４：ＹＥＳ）、そのターゲットを高負荷ターゲットと判断して、後に説明するサブルーチンＣを実行する（Ｓ１８０６）。さらに、ＣＰＵ４０５は、ターゲット毎の平均負荷６０５（図６参照）を、設定情報４１９の下限負荷８０２（図８参照）と比較する。このとき、平均負荷６０５が下限負荷８０２を下回る（下限値未満の）ターゲットが存在すると判別した場合に（Ｓ１８０５：ＹＥＳ）、そのターゲットを低負荷ターゲットと判断して、後に説明するサブルーチンＤを実行する（Ｓ１８０７）。
【００６８】
次に、ポート割当装置４００によるポート割当及びサーバ装置２００に対するログインの指示について、図１９、図２０及び図１３を参照して（適宜図１参照）説明する。図１９は、ポート割当装置４００がターゲットへのポート割当を追加する際のシーケンスである。
ポート割当装置４００は、ストレージポート３０１の追加を指示するメッセージＭ１９０１をストレージ装置３００に送信する。メッセージＭ１９０１を受信したストレージ装置３００は、構成情報３１５を更新し（Ｓ１９０２）、ポート追加完了の確認応答メッセージＭ１９０３をポート割当装置４００に対して返信する。ポート割当装置４００は、確認応答メッセージＭ１９０３に基づいて、サーバ装置２００に、追加したストレージポート３０１にログインするように指示するメッセージＭ１９０４を送信する。以上の動作により、ポート割当装置４００はストレージ装置３００に追加ポートを割り当て、サーバ装置２００が追加ポートにログインできる。
【００６９】
図２０は、ポート割当装置４００によるポート割当追加処理及びログイン指示処理を示す処理フローである。この処理は、ＣＰＵ４０５がメモリ４０４に記憶されたポート割当追加プログラム４１３を実行することにより行われる。また、この処理は、ＣＰＵ４０５が負荷監視プログラム４１１を実行することにより行われるＳ１８０６で呼び出されるサブルーチンＣである。そのため、ＣＰＵ４０５は、このサブルーチンＣを実行する前に、着目しているターゲットを高負荷ターゲットと判断している（図１８参照）。すなわち、このターゲットは、平均負荷６０５（図６参照）が上限負荷８０１（図８参照）を上回っている。
【００７０】
ＣＰＵ４０５は、負荷情報４１６と共にメモリ４０４に記憶された構成情報３１５（図５参照）によって、ＩＰアドレス５０１とiSCSIネーム５０３との関連付けを参照する。そして、どのターゲットにも割り当てられていないストレージポート３０１（未割当ポート）が存在すると判別した場合に（Ｓ２００１：ＹＥＳ）、その未割当ポートを前記高負荷ターゲットに対して新規に割り当てる（追加する）ように指示するメッセージＭ１９０１を発行してストレージ装置３００に送信する（Ｓ２００２）。なお、ＣＰＵ４０５は、未割当ポート（未使用ポート）が複数存在する場合は、ランダムに選んだポートを高負荷ターゲットに割り当てる。また、どのターゲットにも割り当てられていないストレージポート３０１が存在しないと判別したならば（Ｓ２００１：ＮＯ）、動作を終了する。
【００７１】
そして、ＣＰＵ４０５は、ストレージ装置３００から、ポート追加指示に応答するメッセージＭ１９０３を受信すると（Ｓ２００３：ＹＥＳ）、高負荷ターゲットにログインしているサーバ装置２００（イニシエータ）に対し、メッセージＭ１９０４を発行して、新規に割り当てたポートにログインするように指示する（Ｓ２００４）。このとき、該当するイニシエータが複数存在するならば、ＣＰＵ４０５は指示を与えるイニシエータをランダムに選択する。なお、ＣＰＵ４０５は、ストレージ装置３００からの応答メッセージＭ１９０３を受信しなければ（Ｓ２００３：ＮＯ）、応答メッセージＭ１９０３を受信するまで待機する。
【００７２】
次に、図１３を参照して、ストレージ装置３００がターゲットに割り当てるポートを追加する処理を説明する。図１３は、先に説明したように、ストレージ装置３００がメモリ３０３に記憶された構成情報３１５を更新する処理を示す処理フローである。この処理は、ＣＰＵ３０４がターゲット設定プログラム３１８を実行することにより行われる。
ＣＰＵ３０４は、ストレージポート３０１の構成に変更がないと判別した場合（Ｓ１３０１：ＮＯ）、ポート割当装置４００から、ポートの追加を指示するメッセージＭ１９０１を受信したか否かを判別する（Ｓ１３０２）。メッセージＭ１９０１を受信すると（Ｓ１３０２：ＹＥＳ）、メッセージＭ１９０１に基づいて、構成情報３１５（図５参照）を更新する（Ｓ１３０３）。すなわち、データ用ストレージポートとターゲットとの関連付けを更新する。そして、ＣＰＵ３０４は、ポート追加完了の確認応答メッセージＭ１９０３をポート割当装置４００に対して返信する（Ｓ１３０４）。
【００７３】
前記図１９、図２０及び図１３を参照して説明したポート割当装置４００におけるポート割当処理及びログイン指示処理の具体例を図６及び図８を参照して説明する。
例えば、図６に示した負荷情報３１６において、ターゲット「T1」６１１に対する平均負荷６１７は７００（Ｍｂｐｓ）である。一方、設定情報４１９の上限負荷８０１は、図８に示すように５００（Ｍｂｐｓ）である。したがって、ターゲットT1に対する平均負荷６１７は上限負荷８０１を超えている。また、図６に示したように、ターゲットT1に対しては、ＩＰアドレス「192.168.1.2」のポート及びＩＰアドレス「192.168.1.3」のポートが未割当ポートとなっている。この場合、ポート割当装置４００は、例えばＩＰアドレス「192.168.1.2」で識別されるストレージポート３０１を新規にターゲットT1に割り当てる（追加する）ように、ストレージ装置３００に指示する。さらに、ポート割当装置４００は、サーバ装置２００（イニシエータI1またはI2）に対し、新規に追加したポートにログインするよう指示する。
【００７４】
次に、ポート割当装置４００によるポート割当解除及びサーバ装置２００に対するログアウトの指示について、図２１、図２２及び図１３を参照して（適宜図１参照）説明する。図２１は、ポート割当装置４００がターゲットに対するポート割当を解除する際のシーケンスである。
まず、ポート割当装置４００は、サーバ装置２００にログアウトを指示するメッセージＭ２１０１を送信する。サーバ装置２００は、メッセージＭ２１０１を受信すると、ストレージポート３０１からのログアウトを要求するメッセージＭ２１０２をストレージ装置３００に送信する。ストレージ装置３００は、メッセージＭ２１０２を送信したサーバ装置２００に対して、ログアウト応答メッセージＭ２１０３を返信する（ログアウト完了）。メッセージＭ２１０３を受信したサーバ装置２００は、ログアウト完了の確認応答メッセージＭ２１０４をポート割当装置４００に対して返信する。ポート割当装置４００は、受信したメッセージＭ２１０４に基づいて、ストレージ装置３００に、該当するストレージポート３０１を解除するように指示するメッセージＭ２１０５を送信する。ストレージ装置３００は、構成情報３１５を更新し（Ｓ２１０６）、ポート解除完了の確認応答メッセージＭ２１０７をポート割当装置４００に送信する。以上の動作により、ポート割当装置４００はストレージ装置３００で割り当てられていたポートを解除してポート割当を変更し、サーバ装置２００が、解除されたポートからログアウトできる。
【００７５】
図２２は、ポート割当装置４００によるポート割当解除処理及びログアウト指示処理を示す処理フローである。この処理は、ＣＰＵ４０５がメモリ４０４に記憶されたポート割当解除プログラム４１４を実行することにより行われる。また、この処理は、ＣＰＵ４０５が負荷監視プログラム４１１を実行することに行われるＳ１８０７で呼び出されるサブルーチンＤである。そのため、ＣＰＵ４０５は、このサブルーチンＤを実行する前に、着目しているターゲットを低負荷ターゲットと判断している（図１８参照）。すなわち、このターゲットは、平均負荷６０５（図６参照）が下限負荷８０２（図８参照）を下回っている。
【００７６】
ＣＰＵ４０５は、この低負荷ターゲットに複数のストレージポート３０１が割り当てられているか否かを判別する（Ｓ２２０１）。ＣＰＵ４０５は、複数のストレージポート３０１が割り当てられていると判別した場合に（Ｓ２２０１：ＹＥＳ）、その中でランダムに選んだストレージポートにログインしているサーバ装置２００（イニシエータ）に対し、メッセージＭ２１０１を発行して、そのストレージポート３０１を用いたコネクションからのログアウトを指示する（Ｓ２２０２）。なお、ＣＰＵ４０５は、この低負荷ターゲットに対して複数のストレージポート３０１が割り当てられていないと判別した場合には（Ｓ２２０１：ＮＯ）、動作を終了する。
【００７７】
さらに、ＣＰＵ４０５は、このサーバ装置２００（イニシエータ）から、ログアウト完了の確認応答メッセージＭ２１０４を受信すると（Ｓ２２０３：ＹＥＳ）、そのストレージポート３０１の低負荷ターゲットに対する割り当てを解除するように指示するメッセージＭ２１０５を発行して、ストレージ装置３００に対して送信する（Ｓ２２０４）。なお、ＣＰＵ４０５は、サーバ装置２００（イニシエータ）からログアウト完了の確認応答（メッセージＭ２１０４）を受信しなければ（Ｓ２２０３：ＮＯ）、確認応答を受信するまで待機する。
【００７８】
次に、図１３を参照して、ストレージ装置３００がターゲットに割り当てられたポートを解除する処理を説明する。図１３は、先に説明したように、ストレージ装置３００がメモリ３０３に記憶された構成情報３１５を更新する処理を示す処理フローである。この処理は、ＣＰＵ３０４がターゲット設定プログラム３１８を実行することにより行われる。
ＣＰＵ３０４は、ストレージポート３０１の構成に変更がないと判別し（Ｓ１３０１：ＮＯ）、かつ、ポート割当装置４００から、ポートの追加を指示するメッセージＭ１９０１を受信していないときに（Ｓ１３０２：ＮＯ）、ポートの解除を指示するメッセージＭ２１０５を受信したか否かを判別する（Ｓ１３０７）。そして、ＣＰＵ３０４は、このメッセージＭ２１０５を受信すると（Ｓ１３０７：ＹＥＳ）、メッセージＭ２１０５の指示に従って構成情報３１５を更新し（Ｓ１３０８）、ポート解除完了の確認応答メッセージＭ２１０７をポート割当装置４００に送信する（Ｓ１３０９）。
【００７９】
前記図２１、図２２及び図１３を参照して説明したポート割当装置４００におけるポート割当解除処理及びログアウト指示処理の具体例を図６及び図８を参照して説明する。
例えば、図６に示した負荷情報３１６において、ターゲットT2に対する平均負荷６１８は１３３（Ｍｂｐｓ）である。一方、設定情報４１９の下限負荷８０２は、図８に示すように、２００（Ｍｂｐｓ）である。したがって、ターゲットT2に対する平均負荷６１８は下限負荷８０２を下回っている。また、図６に示したように、ターゲットT2に対しては、ＩＰアドレス「192.168.1.1」、「192.168.1.2」及び「192.168.1.3」のポートが割り当てられている。この場合、ポート割当装置４００は、２つのサーバ装置２００（イニシエータI1及びI2）に対し、ＩＰアドレス「192.168.1.2」で識別されるストレージポート３０１を用いたコネクションのログアウトを指示する（Ｍ２１０１）。
さらに、ＣＰＵ４０５は、イニシエータI1,I2によるログアウトの完了を確認すると（Ｍ２１０４）、ストレージ装置３００に対し、ターゲットT2に対するＩＰアドレス「192.168.1.2」のストレージポート３０１の割当を解除する指示を行う（Ｍ２１０５）。すなわち、構成情報３１５（図５参照）の更新を指示する。
【００８０】
次に、サーバ装置２００のログイン処理及びログアウト処理を図２３及び図２４を参照して説明する。図２３は、サーバ装置２００によるログイン処理を示す処理フローである。この処理は、ＣＰＵ２０４がイニシエータ処理プログラム２１２を実行することにより行われる。ＣＰＵ２０４は、ポート割当装置４００から、ログインを指示するメッセージＭ１９０４を受信すると（Ｓ２３０１：ＹＥＳ）、メッセージＭ１９０４の中に含まれているストレージ装置３００のストレージポート３０１と、ストレージ装置３００のiSCSIネームとを用いて所定のターゲットにログインする処理を行う（Ｓ２３０２）。なお、ＣＰＵ２０４は、メッセージＭ１９０４を受信しなければ（Ｓ２３０１：ＮＯ）、メッセージＭ１９０４を受信するまで待機する。
【００８１】
図２４は、サーバ装置２００によるログアウト処理を示す処理フローである。この処理は、ＣＰＵ２０４がイニシエータ処理プログラム２１２を実行することにより行われる。ＣＰＵ２０４は、ポート割当装置４００から、ログアウトを指示するメッセージＭ２１０１を受信すると（Ｓ２４０１：ＹＥＳ）、メッセージＭ２１０１の中に含まれているストレージ装置３００のストレージポート３０１と、ストレージ装置３００のiSCSIネームとを用いて所定のターゲットからログアウトする処理を行う（Ｓ２４０２）。なお、ＣＰＵ２０４は、メッセージＭ２１０１を受信しなければ（Ｓ２４０１：ＮＯ）、メッセージＭ２１０１を受信するまで待機する。
さらに、ＣＰＵ２０４は、ストレージ装置３００からログアウト応答メッセージＭ２１０３を受信すると（Ｓ２４０３：ＹＥＳ）、ポート割当装置４００に対し、ログアウト完了の確認応答メッセージＭ２１０４を送信し（Ｓ２４０４）、Ｓ２４０１に戻る。
【００８２】
前記実施形態では、サーバ装置２００がストレージ装置３００に書き込みをするときのストレージポート３０１の受信負荷を説明したが、サーバ装置２００がストレージ装置３００から読み込みをするときのストレージポート３０１の送信負荷も同様に扱うことができる。これによって、本実施形態のポート割当装置４００は、ストレージポート３０１間の送受信負荷を分散することができる。
【００８３】
（第２の実施形態）
第１の実施形態では、ストレージ装置３００とは別に設けたポート割当装置４００が、ターゲットに割り当てられたポートの変更をサーバ装置２００に通知したが、ストレージ装置３００の機能を有したポート割当装置（又は、ポート割当装置４００の機能を有したストレージ装置）を第２の実施形態として説明する。なお、第１の実施形態と同一の構成には同一の参照番号を付して説明を省略する。
【００８４】
図２５は、第２の実施形態のポート割当装置が適用された計算機システムの概略図である。図示するように、本実施形態の計算機システムは、データ用ネットワーク１０２を介して相互に接続された複数の（図では３つ）サーバ装置２００Ａと、ポート割当装置４００Ａとを有する。
サーバ装置（外部装置）２００Ａのハードウェア構成は、図１に示した管理ポート２０６を有していない点を除いて、図１に示したサーバ装置２００と同一である。
ポート割当装置４００Ａのハードウェア構成は、メモリ３０３ａ（負荷情報記憶部）に記憶されたプログラム及びデータが異なる点と管理ポート３０７を有していない点を除いて、図１に示したストレージ装置３００と同一である。
【００８５】
サーバ装置２００Ａのメモリ２０３に記憶されるプログラム及びデータは、イニシエータｉＳＮＳクライアントプログラム２１３を有していない点を除いて、図２に示したメモリ構成と同一である。このため、ディスカバリ処理はＣＰＵ２０４がイニシエータ処理プログラム２１２を実行することにより行われる。
【００８６】
図２６は、ポート割当装置４００Ａのメモリ３０３ａの構成を示す図である。メモリ３０３ａには、ターゲット処理プログラム３１１ａ、負荷計測プログラム３１２ａ、初期化プログラム３１４ａ、構成情報３１５、負荷情報３１６、設定情報４１９、ポート割当追加プログラム４１３ａ、ポート割当解除プログラム４１４ａ等が記憶されている。
【００８７】
ターゲット処理プログラム３１１ａは、iSCSIプロトコルの処理を行うためのプログラムである。ＣＰＵ３０４は、このターゲット処理プログラム３１１ａを実行することにより、図４に示すプログラム３１１を実行したときの動作を行うと共に、イニシエータからターゲット情報の要求を受信したときにターゲット情報を提供する。
【００８８】
負荷計測プログラム３１２ａは、受信負荷を計測するためのプログラムである。ＣＰＵ３０４は、この負荷計測プログラム３１２ａを実行することにより、図４に示すプログラム３１２の動作を行うほか、ターゲット毎に受信負荷が上限負荷８０１を上回っているか否かを判別すると共に、下限負荷８０２を下回っているか否かを判別する。なお、ＣＰＵ３０４は、この負荷計測プログラム３１２ａを実行するときに、ポート負荷計測部として機能する。
【００８９】
初期化プログラム３１４ａは、負荷情報３１６及び設定情報３１９を初期化するためのプログラムである。ＣＰＵ３０４は、この初期化プログラム３１４ａを実行することにより、負荷情報３１６及び設定情報３１９に初期値を設定する。
設定情報４１９は、ポート割当装置４００Ａがサーバ装置２００Ａに対してログインあるいはログアウトの指示を行う際の基準となる受信負荷について管理者が設定する情報である。設定情報４１９の例は、図８に示したものと同様である。
【００９０】
ポート割当追加プログラム４１３ａは、ターゲットに対し新規にストレージポート３０１を割り当てるためのプログラムである。ＣＰＵ３０４が、このポート割当追加プログラム３２０を実行するときの動作の詳細は後記する。なお、ＣＰＵ３０４は、このポート割当追加プログラム４１３ａを実行するときに、新規割当処理部として機能する。
ポート割当解除プログラム４１４ａは、ターゲットに対するストレージポート３０１の割り当てを解除するためのプログラムである。ＣＰＵ３０４が、このポート割当追加プログラム３２１を実行するときの動作の詳細は後記する。なお、ＣＰＵ３０４は、このポート割当解除プログラム４１４ａを実行するときに、割当解除処理部として機能する。
【００９１】
次に、本計算機システムにおけるサーバ装置２００Ａ及びポート割当装置４００Ａの動作について、ディスカバリ、負荷計測と負荷監視、及び、ポート割当を順に説明する。
まず、サーバ装置２００の有するイニシエータがディスカバリを行うときの動作について説明する（適宜図２５参照）。この処理は、ＣＰＵ２０４がイニシエータ処理プログラム２１２を実行することにより行われる。サーバ装置２００Ａは、ポート割当装置４００Ａに対し、ターゲット情報を問い合わせるメッセージを送信し、ターゲット情報をポート割当装置４００Ａから受信する。このときのサーバ装置２００Ａの動作は図１１に示すサーバ装置２００の動作と同様である。
【００９２】
一方、このときのポート割当装置４００Ａの動作は、ＣＰＵ３０４がターゲット処理プログラム３１１ａを実行することにより行われる。ポート割当装置４００Ａは、サーバ装置２００Ａから、ターゲット情報を問い合わせるメッセージを受信すると、サーバ装置２００に対し、ターゲットのiSCSIネーム、ターゲットにログインするためのＩＰアドレス及びＴＣＰポート番号（ポート割当装置４００Ａにおいて定義されたターゲット情報）を通知する。このときのポート割当装置４００Ａの動作は図１２に示したポート割当装置４００の動作と同様である。
【００９３】
以上の動作により、サーバ装置２００Ａの使用者は、入手したターゲット情報に基づいて入力装置２０１を操作することにより、ターゲット及びストレージポート３０１を選択してログインを行うことができる。
【００９４】
次に、ポート割当装置４００Ａが負荷計測及び負荷監視を実行するときの動作について図２７を参照して（適宜図２５参照）説明する。図２７は、ポート割当装置４００Ａによる負荷計測処理及び負荷監視処理を示す処理フローである。これらの処理は、ＣＰＵ３０４があらかじめ定められた時間間隔でメモリ３０３ａに記憶された負荷計測プログラム３１２ａを実行することにより行われる。
【００９５】
ＣＰＵ３０４は、受信負荷として、各ストレージポート３０１、各送信元イニシエータ及び各宛先ターゲット毎の単位時間あたりの受信ビット数を算出する（Ｓ２７０１）。ここで、ＣＰＵ３０４は、ターゲット処理プログラム３１１を実行することにより、ストレージポート３０１の累積受信量をイニシエータ及びターゲット毎に逐次カウントし、その値をメモリ３０３ａに蓄積している。そこで、ＣＰＵ３０４は、メモリ３０３ａに記憶された累積受信量をそれぞれ読み出し、読み出したそれぞれの累積受信量を所定の時間で割ることにより各受信負荷（例えば、１秒当りの受信ビット数）を算出する。各受信負荷は、図６に示した負荷情報テーブルの構造を有しており、メモリ３０３ａに記憶される。
【００９６】
そして、ＣＰＵ３０４は、全ての受信負荷を算出後、メモリ３０３ａに記憶されている全ての累積受信量を、「０」にリセットする（Ｓ２７０２）。続いて、ＣＰＵ３０４は、メモリ３０３ａに記憶されている負荷情報３１６（受信負荷）を、算出した受信負荷の値にそれぞれ更新する（Ｓ２７０３）。
【００９７】
そして、ＣＰＵ３０４は、メモリ３０３ａに記憶された負荷情報３１６を参照して、負荷情報３１６が有するターゲット毎の平均負荷６０５（図６参照）を、メモリ３０３ａに記憶された設定情報４１９の上限負荷８０１（図８参照）と比較する。このとき、平均負荷６０５が上限負荷８０１を上回るターゲットが存在すると判別した場合に（Ｓ２７０４：ＹＥＳ）、そのターゲットを高負荷ターゲットと判断して、後に説明するサブルーチンＥを実行する（Ｓ２７０６）。
さらに、ＣＰＵ３０４は、ターゲット毎の平均負荷６０５（図６参照）を、設定情報４１９の下限負荷８０２（図８参照）と比較する。このとき、平均負荷６０５が下限負荷８０２を下回るターゲットが存在すると判別した場合に（Ｓ２７０５：ＹＥＳ）、そのターゲットを低負荷ターゲットと判断して、後に説明するサブルーチンＦを実行する（Ｓ２７０７）。
【００９８】
次に、ポート割当装置４００Ａによるポート割当及びサーバ装置２００に対するログインの指示について、図２８を参照して（適宜図２５参照）説明する。
図２８は、ポート割当装置４００Ａによるポート割当追加処理及びログイン指示処理を示す処理フローである。この処理は、ＣＰＵ３０４がメモリ３０３ａに記憶されたポート割当追加プログラム４１３ａを実行することにより行われる。また、この処理は、ＣＰＵ３０４が負荷計測プログラム３１２ａを実行することにより行われるＳ２７０６で呼び出されるサブルーチンＥである。そのため、ＣＰＵ３０４は、このサブルーチンＥを実行する前に、着目しているターゲットを高負荷ターゲットと判断している（図２７参照）。すなわち、このターゲットは、平均負荷６０５（図６参照）が上限負荷８０１（図８参照）を上回っている。
【００９９】
ＣＰＵ３０４は、メモリ３０３ａに記憶された構成情報３１５（図５参照）によって、ＩＰアドレス５０１とiSCSIネーム５０３との関連付けを参照する。そして、どのターゲットにも割り当てられていないストレージポート３０１（未割当ポート）が存在すると判別した場合に（Ｓ２８０１：ＹＥＳ）、その未割当ポートを前記高負荷ターゲットに対して新規に割り当てる（追加する）（Ｓ２８０２）。すなわち、ターゲットに対するポートの割当を変更する。この変更処理は、ＣＰＵ３０４が、メモリ３０３ａに記憶されたターゲット設定プログラム３１８（図示せず）を実行することにより行われる。これにより、構成情報３１５が更新される。なお、ＣＰＵ３０４は、未割当ポートが複数存在する場合は、ランダムに選んだポートを高負荷ターゲットに割り当てる。また、どのターゲットにも割り当てられていないストレージポート３０１が存在しないと判別したならば（Ｓ２８０１：ＮＯ）、動作を終了する。
Ｓ２８０２に続いて、ＣＰＵ３０４は、高負荷ターゲットにログインしているサーバ装置２００Ａ（イニシエータ）に対し、新規に割り当てたポートにログインするように指示する（Ｓ２８０３）。このとき、該当するイニシエータが複数存在するならば、ＣＰＵ４０５は指示を与えるイニシエータをランダムに選択する。
【０１００】
次に、ポート割当装置４００Ａによるポート割当解除及びサーバ装置２００に対するログアウトの指示について、図２９を参照して（適宜図２５参照）説明する。
図２９は、ポート割当装置４００Ａのポート割当解除処理及びログアウト指示処理を示す処理フローである。この処理は、ＣＰＵ３０４がメモリ３０３ａに記憶されたポート割当解除プログラム４１４ａを実行することにより行われる。また、この処理は、ＣＰＵ３０４が負荷計測プログラム３１２を実行することにより行われるＳ２７０７で呼び出されるサブルーチンＦである。そのため、ＣＰＵ３０４は、このサブルーチンＦを実行する前に、着目しているターゲットを低負荷ターゲットと判断している（図２７参照）。すなわち、このターゲットは、平均負荷６０５（図６参照）が下限負荷８０２（図８参照）を下回っている。
【０１０１】
ＣＰＵ３０４は、この低負荷ターゲットに複数のストレージポート３０１が割り当てられているか否かを判別する（Ｓ２９０１）。ＣＰＵ３０４は、複数のストレージポート３０１が割り当てられていると判別した場合に（Ｓ２９０１：ＹＥＳ）、その中でランダムに選んだストレージポート３０１にログインしているサーバ装置２００Ａ（イニシエータ）に対し、そのストレージポート３０１を用いたコネクションからのログアウトを指示する（Ｓ２９０２）。なお、ＣＰＵ４０５は、この低負荷ターゲットに対して複数のストレージポート３０１が割り当てられていないと判別した場合には（Ｓ２９０１：ＮＯ）、動作を終了する。
【０１０２】
さらに、ＣＰＵ３０４は、このサーバ装置２００Ａ（イニシエータ）から、ログアウト完了の確認応答を受信すると（Ｓ２９０３：ＹＥＳ）、そのストレージポート３０１の低負荷ターゲットに対する割り当てを解除する（Ｓ２９０４）。なお、ＣＰＵ３０４は、サーバ装置２００Ａ（イニシエータ）からログアウト完了の確認応答を受信しなければ（Ｓ２９０３：ＮＯ）、確認応答を受信するまで待機する。
【０１０３】
以上説明した第２の実施形態によれば、ポート割当装置４００Ａはストレージ機能とポート割当機能とを有しているので、計算機システムの構成を簡素化し、管理用ネットワークを不要とすることができる。
【０１０４】
以上本発明について好適な実施形態について例示したが、本発明は前記第１及び第２の実施形態に限定されず、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
例えば、前記第１及び第２の実施形態では、任意のストレージポート３０１を、ターゲットに対して新規に割り当てることができ、また、ターゲットに対する任意のストレージポート３０１の割り当てを解除することができたが、管理者が、ストレージポート３０１のターゲットに対する動的な割り当てを禁止する設定ができるようにしてもよい。この場合、構成情報３１５ａは図３０に示す形式のものであり、ストレージポート３０１に対して「割当不可」の設定が可能である。図３０は、構成情報の別の例を示す図である（図５参照）。図３０において、設定条件は、セル３００１に「１」の値が設定されていることである。これは、管理者により、ＩＰアドレス「192.168.1.2」のストレージポート３０１に割当不可の設定がされていることを意味する。
このように「割当不可」の設定を可能とした場合、ストレージ装置３００による構成情報の更新処理において前記第１の実施形態の動作と相違する。すなわち、ＣＰＵ３０４はＳ１３０１（図１３参照）で、ストレージ装置３００が有する使用可能なすべてのストレージポート３０１のＩＰアドレスを調べて、構成情報３１５ａと比較する際に、「割当不可」の列に「１」の値が設定されているポートを比較処理の対象としない。この結果、負荷情報３１６には、割当不可のポートについての情報は含まれない。
このような構成によれば、管理者は特定のストレージポート３０１に対して動的な割り当てを禁止し、割当を禁止したポートを予備ポートとしておくことができる。この予備ポートは、例えば、バックアップ専用のポートや、固定的にサーバ装置２００との接続を持つポートとして使用することができる。
【０１０５】
また、前記第１及び第２の実施形態では、所定のターゲットに対する負荷が高くなったときに（具体的には、所定のターゲットに対するストレージポートの平均負荷が高くなったときに）、そのターゲットに未割当ポートを新規に割り当てたが、所定のターゲットに割り当てられたストレージポート３０１に障害が発生したときに、そのターゲットに未割当ポートを割り当てるように構成してもよい。
このように構成した場合、ストレージ装置３００による構成情報の更新処理において前記第１の実施形態の動作と相違する。すなわち、ＣＰＵ３０４はＳ１３０１（図１３参照）で、ストレージ装置３００が有する使用可能なすべてのストレージポート３０１のＩＰアドレス及びそのポートの生死を調べる。障害が発生したストレージポート３０１（ポートの「死」）を検出する方法は、例えば、pingコマンドやＳＮＭＰ（Simple Network Management Protocol）トラップ（イベント通知）を用いる。
障害が発生したストレージポート３０１を検出した場合、そのポートに対し、図３０に示す構成情報３１５ａの中の「割当不可」の欄に「１」の値を書き込むことによって、割当不可の設定を行う（構成情報の更新）。そして、特定のストレージポート３０１が使用不能となった場合でも、ストレージ装置３００が割当ポートを自動的に切り替えることにより、サーバ装置２００は入出力を継続することができる。
【０１０６】
また、前記第１及び第２の実施形態では、ポート割当装置は、ディスカバリ処理とは独立にポート割当処理を実行するものとしたが、本発明はこれに限定されるものではない。例えば、ポート割当装置４００は、サーバ装置２００から問い合わせがあったときに、負荷情報４１６に基づいて、各ポートの負荷が分散するように、各ターゲットについてのポートの割り当てを変更すると共に、そのサーバ装置２００に対して、変更後の所定のポートにログインするように指示するようにしてもよい。
【０１０７】
また、前記第１および第２の実施形態では、所定のターゲットに対する負荷が高くなったときに未割当ポートが存在する場合に限ってポートの新規な割り当てを行ったが、未割当ポートが存在しない場合等に、他の低負荷のターゲットに割り当てられているストレージポート３０１の割り当てを一旦解除し（あるいはそのままにして）、解除したポート（あるいは低負荷のターゲットに割り当てられているストレージポート）を高負荷なターゲットに割り当てるようにしてもよい。
また、前記第１および第２の実施形態では、ストレージポートの負荷を一定の時間間隔で測定するものとしたが、その他に、入出力性能の低下を契機として測定を行ったり、アプリケーションによる入出力負荷の増大を予測して測定を行うものとしてもよい。
また、高負荷のターゲットの数に対して未割当ポートの数が不足する場合に、未割当ポートを割り当てるターゲットを決定するために、予め管理者がターゲットに優先度を設定しておき、優先度の高いターゲットに優先的にストレージポート３０１が割り当てられるようにしてもよい。
さらに、高負荷のターゲットが存在しかつ未割当ポートが不足する状況で、低負荷のターゲットに割り当てられているストレージポートを高負荷のターゲットに割り当てる場合、複数の低負荷のターゲットが存在する際には、このうち一番優先度の低いターゲットに割り当てられているストレージポートから優先的に選択するようにしてもよい。
また、第２の実施形態では、ポート割当装置とストレージ装置とを同一の装置とする構成について説明したが、ポート割当装置とサーバ装置とを同一の装置とする構成もある。更に、第１の実施形態において、負荷に基づくポート割当の変更をストレージ装置で行い、ネーム管理及びログイン又はログアウトの指示をストレージ装置からの通知に基づいてポート割当装置が行う構成もある。
【０１０８】
また、前記第１及び第２の実施形態では、ＩＰ−ＳＡＮにおいてデータの送受信を行うためのプロトコルとして、iSCSIを取り上げて説明したが、本発明は、ＩＰ−ＳＡＮにおいてデータの送受信を行うためのプロトコルをiSCSIに限定するものではない。
【図面の簡単な説明】
【０１０９】
【図１】第１の実施形態に係るポート割当装置が適用された計算機システムの概略図である。
【図２】サーバ装置のメモリの構成を示す図である。
【図３】ターゲット情報の例を示す図である。
【図４】ストレージ装置のメモリの構成を示す図である。
【図５】構成情報の例を示す図である。
【図６】負荷情報の例を示す図である。
【図７】ポート割当装置のメモリの構成を示す図である。
【図８】設定情報の例を示す図である。
【図９】イニシエータがディスカバリを行う際の全体のシーケンスである。
【図１０】ポート割当装置によるターゲット情報の登録処理を示す処理フローである。
【図１１】サーバ装置によるディスカバリ処理を示す処理フローである。
【図１２】ポート割当装置によるターゲット情報の通知処理を示す処理フローである。
【図１３】構成情報の更新処理を示す処理フローである。
【図１４】負荷情報テーブルの生成処理を示す処理フローである。
【図１５】ポート割当装置がストレージ装置から負荷情報を取得する際のシーケンスである。
【図１６】ストレージ装置による受信負荷計測処理の処理を示す処理フローである。
【図１７】ストレージ装置による負荷情報通知の処理を示す処理フローである。
【図１８】ポート割当装置による負荷監視処理を示す処理フローである。
【図１９】ポート割当装置がターゲットへのポート割当を追加する際のシーケンスである。
【図２０】ポート割当装置によるポート割当追加処理及びログイン指示処理を示す処理フローである。
【図２１】ポート割当装置がターゲットに対するポート割当を解除する際のシーケンスである。
【図２２】ポート割当装置によるポート割当解除処理及びログアウト指示処理を示す処理フローである。
【図２３】サーバ装置によるログイン処理を示す処理フローである。
【図２４】サーバ装置によるログアウト処理を示す処理フローである。
【図２５】第２の実施形態のポート割当装置が適用された計算機システムの概略図である。
【図２６】ポート割当装置のメモリの構成を示す図である。
【図２７】ポート割当装置による負荷計測処理及び負荷監視処理を示す処理フローである。
【図２８】ポート割当装置によるポート割当追加処理及びログイン指示処理を示す処理フローである。
【図２９】ポート割当装置によるポート割当解除処理及びログアウト指示処理を示す処理フローである。
【図３０】構成情報の別の例を示す図である。
【符号の説明】
【０１１０】
１０１    管理用ネットワーク
１０２    データ用ネットワーク
２００，２００Ａ    サーバ装置（外部装置）
２０３    メモリ
２０４    ＣＰＵ
３００    ストレージ装置
３０１    データポート（ストレージポート）
３０３    メモリ
３０６    ディスク（記憶装置）
３０４    ＣＰＵ
４００，４００Ａ    ポート割当装置
４０４    メモリ（負荷情報記憶部）
４０５    ＣＰＵ（処理部）
I1，I2，I3    イニシエータ
T1，T2，T3    ターゲット
【図１】
2006079378.tif 000003
【図２】
2006079378.tif 000004
【図３】
2006079378.tif 000005
【図４】
2006079378.tif 000006
【図５】
2006079378.tif 000007
【図６】
2006079378.tif 000008
【図７】
2006079378.tif 000009
【図８】
2006079378.tif 000010
【図９】
2006079378.tif 000011
【図１０】
2006079378.tif 000012
【図１１】
2006079378.tif 000013
【図１２】
2006079378.tif 000014
【図１３】
2006079378.tif 000015
【図１４】
2006079378.tif 000016
【図１５】
2006079378.tif 000017
【図１６】
2006079378.tif 000018
【図１７】
2006079378.tif 000019
【図１８】
2006079378.tif 000020
【図１９】
2006079378.tif 000021
【図２０】
2006079378.tif 000022
【図２１】
2006079378.tif 000023
【図２２】
2006079378.tif 000024
【図２３】
2006079378.tif 000025
【図２４】
2006079378.tif 000026
【図２５】
2006079378.tif 000027
【図２６】
2006079378.tif 000028
【図２７】
2006079378.tif 000029
【図２８】
2006079378.tif 000030
【図２９】
2006079378.tif 000031
【図３０】
2006079378.tif 000032