(57)【要約】【課題】  本発明はＩ／Ｏコマンド投入数の動的変換システムに関し、複数のホスト間での負荷バランスをとることができるＩ／Ｏコマンド投入数の動的変換システムを提供することを目的としている。【解決手段】  少なくとも１台のホスト１と記憶装置４とがスイッチ２を介して接続されたシステムにおいて、前記スイッチ２は、前記ホスト１からのＩ／Ｏ発行数を規制する閾値を持ち、前記Ｉ／Ｏ発行数が前記規制値になるまで、ホストからのＩ／Ｏ発行を受け付けるように構成される。【選択図】    図１
2005332236.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１台のホストと記憶装置とがスイッチを介して接続されたシステムにおいて、
前記スイッチは、前記ホストからのＩ／Ｏ発行数を規制する閾値を持ち、前記Ｉ／Ｏ発行数が前記規制閾値になるまで、ホストからのＩ／Ｏ発行を受け付けるように構成されたことを特徴とするＩ／Ｏコマンド投入数の動的変換システム。
【請求項２】
前記ホスト側の設定はデフォルト値とし、前記スイッチ内で記憶装置にＩ／Ｏコマンドを投入する際の記憶装置側１パスあたりの最大値を保持しつつ、負荷バランスをとることを特徴とする請求項１記載のＩ／Ｏコマンド投入数の動的変換システム。
【請求項３】
前記スイッチ内にテーブルを持ち、該テーブルには記憶装置側のパス毎のＩ／Ｏコマンド投入数の最大値が記憶されていることを特徴とする請求項２記載のＩ／Ｏコマンド投入数の動的変換システム。
【請求項４】
前記記憶装置側のパス毎にカウンタを持ち、記憶装置側にＩ／Ｏコマンドを投入した時に＋１、記憶装置側からのＩ／Ｏコマンド処理完了で−１することを特徴とする請求項２記載のＩ／Ｏコマンド投入数の動的変換システム。
【請求項５】
前記カウンタのカウント値が記憶装置側の最大値になったら、以降はホストに対してはビジーを返すことを特徴とする請求項４記載のＩ／Ｏコマンド投入数の動的変換システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＩ／Ｏコマンド投入数の動的変換システムに関し、更に詳しくはＦＣ（ファイバチャネル）複数パスで接続されたホスト−記憶装置間において、各パスに対する最大コマンド発行数（最大スロットル値）を状況に応じて可変させることにより、記憶装置の最大性能を引き出すことが可能になるようにしたＩ／Ｏコマンド投入数の動的変換システムに関する。
【背景技術】
【０００２】
最大スロットル値の設定は、スイッチ経由で複数ホストと接続する場合、各々のパス毎に固定で設定している。図３は従来システムの構成例を示すブロック図である。図において、１はホスト（サーバ）であり、ＮＯ．１とＮＯ．２の２台設けられている例を示す。各ホスト１内には、各々２個（ＮＯ．１とＮＯ．２）のＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）カード１ａが設けられている。これにＨＢＡカード１ａ毎に最大スロットル値として２０が与えられている。ここで、最大スロットル値とは、ＨＢＡカードから発行することができるＩ／Ｏコマンドの最大値をいう。
【０００３】
２はスイッチである。該スイッチ２は、イン側スイッチ２ａと、アウト側スイッチ２ｂとから構成されている。イン側スイッチ２ａは４個あり、アウト側スイッチ２ｂは２個ある。これらイン側スイッチ２ａは、それぞれＨＢＡカードと信号線３で接続されている。スイッチ２ｂには、それぞれＮＯ．１ホストとＮＯ．２ホストのＨＢＡカード１ａからのＩ／Ｏコマンドが入力されるようになっている。
【０００４】
４はＲＡＩＤ装置である。該ＲＡＩＤ装置４には、アクセス対象のデバイス７が設けられている。５はアウト側スイッチ２ｂとＲＡＩＤ装置４側を接続するＦＣケーブルである。６は該ＦＣケーブル５が接続される装置側ＦＣポート、７はアクセス対象のデバイスである。図では、デバイスが５個単位でアクセス対象となっている場合を示している。このように構成されたシステムの動作を説明すれば、以下の通りである。
【０００５】
ホスト１からデータの書き込み又は読み出しのためのＩ／Ｏコマンドが発行されると、このＩ／Ｏコマンドはスイッチ２を介してＲＡＩＤ装置４に入り、デバイス７へのデータの書き込み、又はデバイス７からのデータの読み出しが行なわれる。この際、アウト側スイッチ２ｂに入力できるＩ／Ｏコマンドの数は合計４０個である。即ち、ホストＮＯ．１とＮＯ．２からの最大Ｉ／Ｏ発行数は４０である。
【０００６】
従来のこの種のシステムとしては、例えば第２レベルキャッシュの存在する環境で、外部データ・トラフィックをマルチプロセッサ・コンピュータシステムに結合するために、Ｉ／Ｏコマンド及びＩ／Ｏデータのストリームを、プロセッサ・バスを介してコンピュータ・システムに結合する技術が知られている（例えば特許文献１参照）。また、読み取り要求に対応する蓄積装置にスケジューリングされるＩ／Ｏコマンドのアクセス負荷の総和が、該蓄積装置が単位時間内に処理できる量を越える場合に、該蓄積装置へスケジューリングされているＩ／Ｏコマンドの中から該読み取り要求よりも優先度の高いＩ／Ｏコマンドを取り出し、その代わりに該読み取り要求に対応するＩ／Ｏコマンドを所望の蓄積装置へスケジューリングする技術が知られている（例えば特許文献２参照）。
【特許文献１】特開平１０−１７１７１２号公報（第６頁、第７頁、図１、図２）
【特許文献２】特開平１０−００３３５７号公報（第４頁、第５頁、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述した従来のシステムでは、上位側（ホスト）での設定では、ＨＢＡカード１ａ毎のＩ／Ｏ発行数は２０＋２０＝４０Ｉ／Ｏ数発行できる設定になっている。ホストＮＯ．１のＨＢＡカード１ａが２０Ｉ／Ｏ数発行していても、ホストＮＯ．２のＨＢＡカード１ａがビジー（ＢＵＳＹ）状態で１Ｉ／Ｏ数であった場合、２台のホスト１のＲＡＩＤ装置４に対するＩ／Ｏ発行数は合計２１Ｉ／Ｏ数となり、ＲＡＩＤ装置としての最大値４０に対してＲＡＩＤ装置の最大性能を引き出せないという問題があった。
【０００８】
また、ＨＢＡカード１ａ毎に最大スロットル値を２０に設定する必要がある。図３に示す構成図の場合、４枚個々に設定する必要がある。なお、ＲＡＩＤ装置４側の最大Ｉ／Ｏ数４０は、１パス最大値はＨＢＡカードあたり４０／２＝２０となる。このように設定した場合、ＲＡＩＤ装置４側の１つのパスを共有する複数のホスト間での負荷バランスがとれないため、ＲＡＩＤ装置４の最大性能を引き出せないという問題があった。
【０００９】
本発明はこのような課題に鑑みてなされたものであって、複数のホスト間での負荷バランスをとることができるＩ／Ｏコマンド投入数の動的変換システムを提供することを目的としている。
【課題を解決するための手段】
【００１０】
ホスト側の設定はデフォルト値（例えば２５５）とし、スイッチ２内でアクセス対象のデバイス７にＩ／Ｏコマンドを投入する際のＲＡＩＤ装置４側の１パスあたりの最大値を守りつつ負荷バランスをとるようにした。
【００１１】
具体的には、以下のような機構を設けている。
１．スイッチ２内にテーブルを持つ
本テーブルにはデバイス７側のパス毎のコマンド投入の最大値が記載されている。
２．デバイス７側のパス毎にカウンタを持ち、デバイス７側にＩ／Ｏコマンドを投入した時に＋１、デバイス７側からのコマンド処理完了で−１する。
３．上記カウンタがデバイス７側の最大値になったら、以降はホスト１に対してはビジーを返すようにする。
【００１２】
（１）請求項１記載の発明は、少なくとも１台のホストと記憶装置とがスイッチを介して接続されたシステムにおいて、前記スイッチは、前記ホストからのＩ／Ｏ発行数を規制する閾値を持ち、前記Ｉ／Ｏ発行数が前記規制閾値になるまで、ホストからのＩ／Ｏ発行を受け付けるように構成されたことを特徴とする。
【００１３】
（２）請求項２記載の発明は、前記ホスト側の設定はデフォルト値とし、前記スイッチ内で記憶装置にＩ／Ｏコマンドを投入する際の記憶装置側１パスあたりの最大値を保持しつつ、負荷バランスをとることを特徴とする。
【００１４】
（３）請求項３記載の発明は、前記スイッチ内にテーブルを持ち、該テーブルには記憶装置側のパス毎のＩ／Ｏコマンド投入数の最大値が記憶されていることを特徴とする。
（４）請求項４記載の発明は、前記記憶装置側のパス毎にカウンタを持ち、記憶装置側にＩ／Ｏコマンドを投入した時に＋１、記憶装置側からのＩ／Ｏコマンド処理完了で−１することを特徴とする。
【００１５】
（５）請求項５記載の発明は、前記カウンタのカウント値が記憶装置側の最大値になったら、以降はホストに対してはビジーを返すことを特徴とする。
【発明の効果】
【００１６】
（１）請求項１記載の発明によれば、Ｉ／Ｏ発行数を規制する閾値を持ち、前記Ｉ／Ｏ発行数がこの閾値になるまで、他のホストからのＩ／Ｏ発行数を受け付けることができるので、複数のホスト間での負荷のバランスをとることができる。
【００１７】
（２）請求項２記載の発明によれば、スイッチ内で記憶装置側１パスあたりの最大値を保持しつつ負荷バランスをとることができる。
（３）請求項３記載の発明によれば、スイッチ内に設けたテーブルに記憶されているＩ／Ｏコマンド投入数の最大値を超えないように制御することができる。
【００１８】
（４）請求項４記載の発明によれば、Ｉ／Ｏコマンドを投入した時に＋１、記憶装置側のＩ／Ｏコマンド投入で−１の演算を行なうようにすることで、カウンタのカウント値が処理することができるＩ／Ｏコマンド数を示すことができる。
【００１９】
（５）請求項５記載の発明によれば、カウンタが記憶装置側の最大値になったらホスト側にビジーを返すことにより、Ｉ／Ｏコマンドの投入を控えるようにすることができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して本発明の実施の形態例を詳細に説明する。
図１は本発明の一実施の形態例を示すブロック図である。図３と同一のものは、同一の符号を付して示す。図３に示す従来構成として異なる点は、スイッチ２内にカウンタを設けた点である。図において、１はホスト（サーバ）、１ａはホスト１内に設けられたＨＢＡカードである。ホスト１はＮＯ．１とＮＯ．２の２台設けられており、各ホスト１にはＨＢＡカード１ａがＮＯ．１とＮＯ．２の２枚設けられている。なお、ホスト１の数は２台に限るものではなく、任意の数のホストを用いることができる。各ＨＢＡカード１ａには最大スロットル値の初期値２５５が与えられている。３は各ＨＢＡカード１ａとスイッチ２間に設けられたＦＣケーブルである。
【００２１】
スイッチ２において、２ａはＦＣケーブル３と接続されるイン側スイッチ、２ｃはそれぞれのイン側スイッチ２ａと接続される最大カウント値４０のアップダウンカウンタである。該アップダウンカウンタ２ｃには、それぞれＮＯ．１のＨＢＡカード１ａとＮＯ．２のＨＢＡカード１ａの出力が接続されている。即ち、各ＨＢＡカード１ａからはＩ／Ｏコマンドが出力され、アップダウンカウンタ２ｃに入る。カウンタ２ｃにはテーブルが設けられており、当該カウンタで処理できるＩ／Ｏコマンド数が記憶されている。
【００２２】
２ｂはアップダウンカウンタ２ｃの出力が接続されるアウト側スイッチである。４はデータを記憶するＲＡＩＤ装置である。該ＲＡＩＤ装置４において、７はアクセス対象のデバイスである。６はＦＣケーブル５が接続される装置側ＦＣポートである。該ＦＣポート６には、ホストＮＯ．１とホストＮＯ．２からの最大Ｉ／Ｏコマンド発行数４０が設定される。該装置側ＦＣポート６を介してホスト１からのＩ／Ｏコマンドが入力される。Ｉ／Ｏコマンドは、ライト（Ｗ）コマンドとリード（Ｒ）コマンドからなる。このように構成されたシステムの動作を、図２に示すフローチャートを用いて説明すれば、以下の通りである。図２は本発明の動作の一例を示すフローチャートである。システム構成としては、図１に示すものを用いる。
【００２３】
先ず、ホスト１に搭載されているＨＢＡカードの設定値がデフォルト値である２５５であるかどうかチェックする（Ｓ１）。デフォルト値が２５５でなかった時にはデフォルト値を２５５に設定する（Ｓ２）。デフォルト値が２５５であった場合、スイッチ２はホストＮＯ．１又はホストＮＯ．２からＩ／Ｏコマンドを受け付ける（Ｓ３）。Ｉ／Ｏコマンドの受け取りを確認したら、スイッチ２内のカウンタ値を＋１する（Ｓ４）。そして、カウント値を確認して４０になるまで＋１する（Ｓ５）。カウント値が４０以下であったら、ステップＳ１に戻り、次のＩ／Ｏコマンドの発行を待ち、同様のＩ／Ｏコマンドに対する処理を実行する。
【００２４】
ここで、処理の結果カウント値が４０以上になったら、スイッチ２はホストＮＯ．１又はホストＮＯ．２に対してビジー応答を返す（Ｓ６）。このビジーを受信したＨＢＡカード１ａはＩ／Ｏコマンドの発行を控える。従ってカウンタ２ｃの値が増加することはない。カウント値が４０未満の場合には、ホストＮＯ．１又はホストＮＯ．２に対してリトライを返す。スイッチ２は、ホストＮＯ．１又はホストＮＯ．２のＩ／Ｏ発行処理が１個完了するのを待つ（Ｓ７）。ホストＮＯ．１又はホストＮＯ．２のＩ／Ｏ発行処理が１個完了したら、カウンタ２ｃはスイッチ２内のカウント値を−１にする（Ｓ８）。カウント値を確認し、４０まで＋１する（Ｓ９）。そして、ステップＳ３に戻り、ホストＮＯ．１又はホストＮＯ．２からのＩ／Ｏコマンドの受け付け待ちとなる。
【００２５】
以上、説明したように、本発明によれば、カウンタ２ｃのカウント値は、Ｉ／Ｏコマンドが発行されると＋１され、ＲＡＩＤ装置４側からの応答が返されると−１される。このようにして、カウンタ２ｃのカウント値が４０になるまでは、図に示すシステムは、Ｉ／Ｏコマンドを受けて処理することができるので、負荷のバランスをとることができる。即ち、本発明はＩ／Ｏ発行数を規制する閾値を持ち、前記Ｉ／Ｏ発行数がこの閾値になるまで、他のホストからのＩ／Ｏ発行数を受け付けることができるので、複数のホスト間での負荷のバランスをとることができる。
【００２６】
また、スイッチ内で記憶装置１側１パスあたりの最大値を保持しつつ負荷バランスをとることができる。
また、スイッチ内に設けたテーブルに記憶されているＩ／Ｏコマンド投入数の最大値を超えないように制御することができる。
【００２７】
また、Ｉ／Ｏコマンドを投入した時に＋１、記憶装置側のＩ／Ｏコマンド投入で−１の演算を行なうようにすることで、カウンタのカウント値が処理することができるＩ／Ｏコマンド数を示すことができる。
【００２８】
また、カウンタが記憶装置側の最大値になったらホスト側にビジーを返すことにより、Ｉ／Ｏコマンドの投入を控えるようにすることができる。
上述の実施の形態例では、記憶装置としてＲＡＩＤ装置を用いた場合を例にとって説明したが、本発明はこれに限るものではなく、その他の各種の記憶装置を用いることができる。即ち、Ｉ／Ｏコマンドで動作する記憶装置については同様に適用することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施の形態例を示すブロック図である。
【図２】本発明の動作の一例を示すフローチャートである。
【図３】従来システムの構成例を示すブロック図である。
【符号の説明】
【００３０】
１    ホスト
１ａ  ＨＢＡカード
２    スイッチ
２ａ  イン側スイッチ
２ｂ  アウト側スイッチ
２ｃ  カウンタ
３    ＦＣケーブル
４    ＲＡＩＤ装置
５    ＦＣケーブル
６    装置側ＦＣポート
７    アクセス対象デバイス
【図１】
2005332236.tif 000003
【図２】
2005332236.tif 000004
【図３】
2005332236.tif 000005