(57)【要約】【課題】入力／出力（Ｉ／Ｏ）ネットワーク・パスをセット・オフＩ／Ｏネットワーク・パスから識別するためのロード・バランシングの方法およびシステムを提供すること。【解決手段】セット・オフＩ／Ｏネットワーク・パスは、ネットワークを介してホスト・システムをストレージ・サブシステムに接続する。ホスト・システムは、少なくとも１つのホスト・バス・アダプタ（ＨＢＡ）を備え、ストレージ・サブシステムは、少なくとも１つのＩ／Ｏデバイスを備え、ネットワークは少なくとも１つのネットワーク・デバイスを備える。ＨＢＡ、Ｉ／Ｏデバイス、およびネットワーク・デバイスは、それぞれ少なくとも１つのＩ／Ｏポートを備える。各ＨＢＡの各Ｉ／Ｏポートについて、ＨＢＡポート制限が決定される。加えて、ＨＢＡそれぞれのＩ／Ｏポートを、ネットワーク・デバイスのＩ／Ｏポートを介して、Ｉ／ＯデバイスのＩ／Ｏポートに接続する、Ｉ／Ｏネットワーク・パスのセットが決定される。次に、各Ｉ／Ｏネットワーク・パスについてファブリック使用率制限が決定され、少なくとも１つのＨＢＡの各Ｉ／ＯポートについてＨＢＡポート使用率が決定される。ＨＢＡポート使用率がＨＢＡポート制限を超えるすべてのネットワーク・パスは廃棄される。残りのパスそれぞれについて、ネットワーク・パス距離が決定される。ネットワーク・パス距離がパス距離制限を超えるすべてのＩ／Ｏネットワーク・パスは廃棄される。その後、残りのパスそれぞれについて、ファブリック使用率が決定される。ファブリック使用率がファブリック使用率制限を超えるすべてのＩ／Ｏネットワーク・パスは廃棄され、残りのネットワーク・パスからＩ／Ｏネットワーク・パスが決定される。【選択図】  図１
2009508196.tif 000002
【特許請求の範囲】
【請求項１】
入力／出力（Ｉ／Ｏ）ネットワーク・パス（１７０）をＩ／Ｏネットワーク・パスのセットから識別するためのロード・バランシング方法（１０６）であって、前記Ｉ／Ｏネットワーク・パスのセットはネットワーク（１１２）を介してホスト・システム（１０２）をストレージ・サブシステム（１４９）に接続し、前記ホスト・システム（１０２）は少なくとも１つのホスト・バス・アダプタ（ＨＢＡ）（１１０、１１１）を備え、前記ストレージ・サブシステム（１４９）は少なくとも１つのＩ／Ｏデバイス（１２０、１２１、１２５、１２６）を備え、前記ネットワーク（１１２）は少なくとも１つのネットワーク・デバイス（１１３、１１４、１１５）を備え、前記ＨＢＡ（１１０、１１１）のそれぞれ、前記Ｉ／Ｏデバイス（１２０、１２１、１２５、１２６）のそれぞれ、および前記ネットワーク・デバイス（１１３、１１４、１１５）のそれぞれは、少なくとも１つのＩ／Ｏポート（１３０、１３１、１３２、１３３、１３４、１４０、１４１、１４２、１４３、１４４、１４５、１５０、１５１、１５２、１５３、１６０、１６１、１６２）を備え、
ａ）前記少なくとも１つのＨＢＡ（１１０、１１１）の前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、ＨＢＡポート制限（１８０）を決定するステップと、
ｂ）前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）を、前記少なくとも１つのネットワーク・デバイス（１１３、１１４、１１５）のＩ／Ｏポート（１３０、１３１、１３２、１３３、１３４、１４０、１４１、１４２、１４３、１４４、１４５）を介して、前記少なくとも１つのＩ／Ｏデバイス（１２０、１２１、１２５、１２６）それぞれの少なくとも１つのＩ／Ｏポート（１５０、１５１、１５２、１５３）に接続する、前記Ｉ／Ｏネットワーク・パスのセットを決定するステップと、
ｃ）各Ｉ／Ｏネットワーク・パスについてファブリック使用率制限（１８６）を決定するステップと、
ｄ）前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、ＨＢＡポート使用率（１８２）を決定するステップと、
ｅ）前記ＨＢＡポート使用率（１８２）が前記ＨＢＡポート制限（１８０）よりも大きいすべてのネットワーク・パスを廃棄するステップと、
ｆ）残りのネットワーク・パスそれぞれについて、ネットワーク・パス距離（１８４）を決定するステップと、
ｇ）前記ネットワーク・パス距離（１８４）がパス距離制限（１８５）よりも大きいすべてのネットワーク・パスを廃棄するステップと、
ｈ）残りのネットワーク・パスそれぞれについて、ファブリック使用率（１８８）を決定するステップと、
ｉ）前記ファブリック使用率（１８８）が前記ファブリック使用率制限（１８６）よりも大きいすべてのネットワーク・パスを廃棄するステップと、
ｊ）残りのネットワーク・パスから前記Ｉ／Ｏネットワーク・パス（１７０）を決定するステップと、
を含む、方法。
【請求項２】
ステップａ）において、前記少なくとも１つのＨＢＡ（１１０、１１１）の前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）のそれぞれによって並行処理が可能なＩ／Ｏデバイスの数により、前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、前記ＨＢＡポート制限（１８０）が決定される、請求項１に記載の方法。
【請求項３】
ステップａ）において、前記ＨＢＡ（１１０、１１１）の前記Ｉ／Ｏポート（１６０、１６１、１６２）によって処理可能な１秒当たりの最大ビット数により、前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、前記ＨＢＡポート制限（１８０）が決定される、請求項１に記載の方法。
【請求項４】
ステップｄ）において、ＨＢＡ（１１０、１１１）のＩ／Ｏポート（１６０、１６１、１６２）の前記ＨＢＡポート使用率（１８２）が、前記ＨＢＡの前記Ｉ／Ｏポートに割り当てられた作業負荷によって決定される、前記請求項のいずれか一項に記載の方法。
【請求項５】
ステップｄ）において、前記ＨＢＡポート使用率（１８２）がドライブ重み（１９４）の使用によって決定され、前記ドライブ重み（１９４）がＩ／Ｏデバイスに割り当てられ、前記ドライブ重み（１９４）が前記Ｉ／Ｏデバイスに割り当てられた前記作業負荷を示す、前記請求項のいずれか一項に記載の方法。
【請求項６】
ステップｄ）において、前記ＨＢＡポート使用率（１８２）がドライブ重み（１９４）の使用によって決定され、前記ドライブ重みがＩ／Ｏデバイスに割り当てられた前記作業負荷によって決定され、前記ドライブ重み（１９４）が圧縮率（１９２）によって調整され、前記圧縮率が前記Ｉ／Ｏデバイスから取得される、前記請求項のいずれか一項に記載の方法。
【請求項７】
ステップｆ）において、前記残りのネットワーク・パスのそれぞれについての前記ネットワーク・パス距離（１８４）が、前記Ｉ／Ｏネットワーク・パスに含まれるすべての相互接続の待ち時間を合計するステップと、前記Ｉ／Ｏネットワーク・パスに含まれる前記Ｉ／Ｏポートの数を追加するステップと、によって決定される、前記請求項のいずれか一項に記載の方法。
【請求項８】
ステップｈ）において、前記ファブリック使用率（１８８）が、ネットワーク・パスに含まれる前記少なくとも１つのネットワーク・デバイスの前記Ｉ／Ｏポートを通過するデータ速度を合計するステップによって決定される、前記請求項のいずれか一項に記載の方法。
【請求項９】
ステップｈ）において、ネットワーク・パスの前記ファブリック使用率（１８８）が、前記ネットワーク・パスに含まれるＩ／Ｏポートの合計数に対する、前記ネットワーク・パスに含まれるアクティブなＩ／Ｏポート数の比率によって決定される、前記請求項のいずれか一項に記載の方法。
【請求項１０】
ステップｊ）において、前記Ｉ／Ｏネットワーク・パス（１７０）が、前記ＨＢＡポート使用率（１８２）、前記ネットワーク・パス距離（１８４）、および前記ファブリック使用率（１８８）を考慮に入れる関数が最低の関数値を引き出す、残りのネットワーク・パスである、前記請求項のいずれか一項に記載の方法。
【請求項１１】
前記請求項のいずれか一項に記載の方法を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム。
【請求項１２】
入力／出力（Ｉ／Ｏ）ネットワーク・パス（１７０）を、ネットワーク（１１２）を介してホスト・システム（１０２）をストレージ・サブシステム（１４９）に接続するＩ／Ｏネットワーク・パスのセットから識別するためのロード・バランシング・システム（１０６）であって、前記ホスト・システム（１０２）は少なくとも１つのホスト・バス・アダプタ（ＨＢＡ）（１１０、１１１）を備え、前記ストレージ・サブシステム（１４９）は少なくとも１つのＩ／Ｏデバイス（１２０、１２１、１２５、１２６）を備え、前記ネットワーク（１１２）は少なくとも１つのネットワーク・デバイス（１１３、１１４、１１５）を備え、前記ＨＢＡ（１１０、１１１）のそれぞれ、前記Ｉ／Ｏデバイス（１２０、１２１、１２５、１２６）のそれぞれ、および前記ネットワーク・デバイス（１１３、１１４、１１５）のそれぞれは、少なくとも１つのＩ／Ｏポート（１３０、１３１、１３２、１３３、１３４、１４０、１４１、１４２、１４３、１４４、１４５、１５０、１５１、１５２、１５３、１６０、１６１、１６２）を備え、
ａ）前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、ＨＢＡポート制限（１８０）を決定するための手段と、
ｂ）前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）を、前記少なくとも１つのネットワーク・デバイス（１１３、１１４、１１５）のＩ／Ｏポート（１３０、１３１、１３２、１３３、１３４、１４０、１４１、１４２、１４３、１４４、１４５）を介して、前記少なくとも１つのＩ／Ｏデバイス（１２０、１２１、１２５、１２６）それぞれの少なくとも１つのＩ／Ｏポート（１５０、１５１、１５２、１５３、１５４）に接続する、前記Ｉ／Ｏネットワーク・パスのセットを決定するための手段と、
ｃ）各Ｉ／Ｏネットワーク・パスについてファブリック使用率制限（１８６）を決定するための手段と、
ｄ）前記少なくとも１つのＨＢＡ（１１０、１１１）の前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、ＨＢＡポート使用率（１８２）を決定するための手段と、
ｅ）前記ＨＢＡポート使用率（１８２）が前記ＨＢＡポート制限（１８０）よりも大きいすべてのネットワーク・パスを廃棄するための手段と、
ｆ）残りのネットワーク・パスそれぞれについて、ネットワーク・パス距離（１８４）を決定するための手段と、
ｇ）前記ネットワーク・パス距離（１８４）がパス距離制限（１８５）よりも大きいすべてのネットワーク・パスを廃棄するための手段と、
ｈ）残りのネットワーク・パスそれぞれについて、ファブリック使用率（１８８）を決定するための手段と、
ｉ）前記ファブリック使用率（１８８）が前記ファブリック使用率制限（１８６）よりも大きいすべてのネットワーク・パスを廃棄するための手段と、
ｊ）残りのネットワーク・パスから前記Ｉ／Ｏネットワーク・パス（１７０）を決定するための手段と、
を含む、システム。
【請求項１３】
ステップａ）において、前記少なくとも１つのＨＢＡ（１１０、１１１）の前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）のそれぞれによって並行処理が可能なＩ／Ｏデバイス（１２０、１２１、１２５、１２６）の数により、前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、前記ＨＢＡポート制限（１８０）が決定される、請求項１２に記載のシステム。
【請求項１４】
ステップａ）において、前記ＨＢＡ（１１０、１１１）の前記Ｉ／Ｏポート（１６０、１６１、１６２）によって処理可能な１秒当たりの最大ビット数により、前記少なくとも１つのＨＢＡ（１１０、１１１）それぞれの前記少なくとも１つのＩ／Ｏポート（１６０、１６１、１６２）それぞれについて、前記ＨＢＡポート制限（１８０）が決定される、請求項１２に記載のシステム。
【請求項１５】
ステップｄ）において、ＨＢＡ（１１０、１１１）のＩ／Ｏポート（１６０、１６１、１６２）の前記ＨＢＡポート使用率（１８２）が、前記ＨＢＡの前記Ｉ／Ｏポートに割り当てられた作業負荷によって決定される、前記請求項１２から１４のいずれか一項に記載のシステム。
【請求項１６】
ステップｄ）において、前記ＨＢＡポート使用率（１８２）がドライブ重み（１９４）の使用によって決定され、前記ドライブ重み（１９４）がＩ／Ｏデバイスに割り当てられ、前記ドライブ重み（１９４）が前記Ｉ／Ｏデバイスに割り当てられた前記作業負荷を示す、前記請求項１２から１５のいずれか一項に記載のシステム。
【請求項１７】
ステップｄ）において、前記ＨＢＡポート使用率（１８２）がドライブ重み（１９４）の使用によって決定され、前記ドライブ重みがＩ／Ｏデバイスに割り当てられた前記作業負荷によって決定され、前記ドライブ重み（１９４）が圧縮率（１９２）によって調整され、前記圧縮率（１９２）が前記Ｉ／Ｏデバイスから取得される、前記請求項１２から１６のいずれか一項に記載のシステム。
【請求項１８】
ステップｆ）において、前記残りのネットワーク・パスのそれぞれについての前記ネットワーク・パス距離（１８４）が、前記Ｉ／Ｏネットワーク・パスに含まれるすべての相互接続の待ち時間を合計するステップと、前記Ｉ／Ｏネットワーク・パスに含まれる前記Ｉ／Ｏポートの数を追加するステップと、によって決定される、前記請求項１２から１７のいずれか一項に記載のシステム。
【請求項１９】
ステップｈ）において、前記ファブリック使用率がデータ速度を合計するステップによって決定され、前記データ速度は少なくとも１つのネットワーク・デバイスの前記Ｉ／Ｏポートを通過し、前記ネットワーク・デバイスは、ネットワーク・パスに含まれる、前記請求項１２から１８のいずれか一項に記載のシステム。
【請求項２０】
ステップｈ）において、ネットワーク・パスの前記ファブリック使用率（１８８）が、前記ネットワーク・パスに含まれるＩ／Ｏポートの合計数に対する、前記ネットワーク・パスに含まれるアクティブなＩ／Ｏポート数の比率によって決定される、前記請求項１２から１９のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は全体としてストレージ・エリア・ネットワークに関し、とりわけ、ストレージ・エリア・ネットワーク内での入力／出力作業負荷の動的分散に関する。
【背景技術】
【０００２】
現在のＩＴシステムでは、サーバおよびテープ・ドライブがストレージ・エリア・ネットワーク（たとえばＦｉｂｒｅ  Ｃｈａｎｎｅｌ  ＳＡＮ、ｉＳＣＳＩ  ＳＡＮ）を介して接続される。これに加えて、取り外し可能メディア管理に関するＩＥＥＥ  １２４４標準が、異機種サーバおよびアプリケーションの境界をまたがって効率良くテープ・ドライブを共有するために、アーキテクチャおよびプロトコルを定義する。構成およびアクセス制御を簡略化するために、ＩＥＥＥ  １２４４はドライブをドライブ・グループに編成する。どちらも共通ドライブ・グループのドライブへのアクセスが許可されている２つのアプリケーションの場合、ＩＥＥＥ  １２４４管理ドライブを共有することができる。
【０００３】
理論上、ＩＥＥＥ  １２４４のようなテープ管理システムは、いくつかのアプリケーション間で非常に柔軟なテープ・ドライブの共有を可能にするが、実際には、帯域幅を考えるとこの共有は制限される。ホストのＩ／Ｏバス（たとえばＰＣＩバス）およびサーバのＩ／Ｏポート（たとえばＦｉｂｒｅ  Ｃｈａｎｎｅｌポート、ｉＳＣＳＩポート）の帯域幅制限により、Ｉ／Ｏポートが効率良く利用できるドライブは一定数に限られる。Ｉ／Ｏポートによって利用されるドライブの数があるしきい値を超えた場合、性能が低下することになる。
【０００４】
この数は、しばしばＩ／Ｏポートのドライブ制限と呼ばれる。さらに、異機種混合環境では、異なるＩ／Ｏポートが異なるドライブ制限を有する可能性がある。たとえば、２ＧビットのＦｉｂｒｅ  Ｃｈａｎｎｅｌポートは、１ＧビットのＦｉｂｒｅ  Ｃｈａｎｎｅｌポートまたは１ＧビットのｉＳＣＳＩポートよりも多くのドライブをドライブ最高速で利用することができる。ドライブという用語はテープ・ドライブに限られず、ディスク、光、ランダム・アクセス・メモリ、ホログラフィック、またはナノテクノロジ・デバイスなどの、任意の他のＩ／Ｏデバイスとすることができる。
【０００５】
従来技術では、以下の方法およびシステムを使用して、ドライブ共有環境において、Ｉ／Ｏポートによって同時に使用されているドライブの数がそのドライブ制限を超えないことを保証する。
【０００６】
１．ソフトウェア構成を介したリソースの区分化
【０００７】
ポートのドライブ制限を超えないための典型的な手法は、ポートで可視のドライブ数を減らすことである。たとえば本発明者等は、それぞれドライブ制限がｎのＩ／Ｏポート１つを備える２つのサーバを有する。ストレージ管理者が、どちらのサーバも１日のうちの異なる時間にｎドライブを必要とすることを知っていれば、通常は両方のサーバに同じｎドライブをゾーン付けする（zone）。これにより、両方のサーバ間でのドライブ共有を可能にしながら、それぞれのドライブ制限を超えないことを保証する。
【０００８】
この手法の欠点は柔軟性の欠如である。たとえばドライブのうちの１つが活動停止となった場合、手動介入が必要である。管理者は、両方のサーバのＩ／Ｏポートにゾーン付け可能な、使用可能な予備ドライブを識別しなければならない。さらに管理者は、両方のサーバのオペレーティング・システムを起動し、新しいハードウェアをスキャンしてからでなければ、アプリケーションが新しいドライブを使用することはできない。これに加えて、第３のサーバのアクセス特徴を熟知してからでなければ、他の２つのサーバのリソース要件に反することなくこの環境に第３のサーバを統合することはできない。さらに、サーバのうちの１つのアクセス特徴が変わった場合、構成も適合させなければならない。経時的に両方のサーバが１日の同じ時間にドライブを必要とする場合、または経時的にサーバのうちの１つの作業負荷を１ドライブ未満で満たすことができる場合、追加の手段が必要である。このシナリオが、テープ・インフラストラクチャ全体の集中的な（aggregated）ドライブ使用率を向上させるために必要なＳＡＮゾーニング変更につながる。その結果、全体として柔軟性が制限されるため、この手法は大規模環境には釣り合わない。
【０００９】
２．ディスク・キャッシュを備えた仮想テープ・サーバ
【００１０】
他の手法は、サーバとテープとの間のＩ／Ｏパスにディスク・キャッシュを配置することである。こうしたシナリオでは、いわゆる仮想テープ・サーバが仮想テープ・ドライブ内の仮想カートリッジをサーバに提示するが、仮想テープ・サーバは内部的にデータをディスク・キャッシュにリダイレクトする。その後、仮想テープ・サーバは、ディスク・キャッシュから実ドライブを介して実テープ・カートリッジへとデータをデステージする（destage）。この手法の欠点は、仮想テープ・サーバを構築するために追加のハードウェアおよびソフトウェアが必要なことである。
【００１１】
３．ディスク・キャッシュを備えていない仮想テープ・サーバ
【００１２】
他のシナリオでは、仮想テープ・サーバは、サーバが使用可能な仮想テープ・ドライブの数がソフトウェア構成におけるパラメータによって制限されるサーバに、仮想テープ・ドライブをエクスポートする。サーバがカートリッジをマウント（mount）しようとする場合、仮想テープ・サーバは仮想テープ・ドライブを物理テープ・ドライブに動的に接続する。このようにして、サーバＩ／Ｏポートへの物理テープ・ドライブの柔軟なマッピングを達成することができる。この手法の欠点は、仮想テープ・サーバを構築するために追加のハードウェアおよびソフトウェアが必要なことである。
【００１３】
４．複数ポートを備えたテープ・ドライブ
【００１４】
テープ・ドライブの中には複数のポートを備えるものがある。加えて、マルチパス・ソフトウェアを使用して、すべての使用可能なパスにわたってＩ／Ｏのバランスを取ることができる。この手法の欠点は、追加のハードウェア（テープ・ドライブ側ポート、第２のドライブ・ポートを接続するためのストレージ・ネットワーク側ポート）およびソフトウェア（マルチパス・ソフトウェアなど）が必要なことである。通常、一度に１ポートがアクティブであり、他のポートは万が一の予備の目的で働くため、アクティブ・ポートを介したＩ／Ｏ実行の問題がある。したがって、この手法は大規模環境には釣り合わない。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
したがって、複数のホスト・バス・アダプタを介して取り付けられた取り外し可能メディア・デバイス間でのＩ／Ｏ作業負荷分散の動的分散を容易にする、方法およびシステムが求められている。
【課題を解決するための手段】
【００１６】
本発明に従って、入力／出力（Ｉ／Ｏ）ネットワーク・パスをセット・オフＩ／Ｏネットワーク・パスから識別するためのロード・バランシング（load balancing）方法が提供される。セット・オフＩ／Ｏネットワーク・パスの各パスは、ネットワークを介してホスト・システムをストレージ・サブシステムに接続する。ホスト・システムは、少なくとも１つのホスト・バス・アダプタ（ＨＢＡ）を備える。ストレージ・サブシステムは、少なくとも１つのＩ／Ｏデバイスを備え、ネットワークは少なくとも１つのネットワーク・デバイスを備える。ＨＢＡ、Ｉ／Ｏデバイス、およびネットワーク・デバイスは、それぞれ少なくとも１つのＩ／Ｏポートを備える。少なくとも１つのＨＢＡの少なくとも１つのＩ／Ｏポートそれぞれについて、ＨＢＡポート制限が決定される。その後、少なくとも１つのＨＢＡそれぞれの少なくとも１つのＩ／Ｏポートを、少なくとも１つのネットワーク・デバイスのＩ／Ｏポートを介して、少なくとも１つのＩ／Ｏデバイスそれぞれの少なくとも１つのＩ／Ｏポートに接続する、Ｉ／Ｏネットワーク・パスのセットが決定される。次に、各Ｉ／Ｏネットワーク・パスについてファブリック使用率制限が決定され、少なくとも１つのＨＢＡの少なくとも１つのＩ／ＯポートそれぞれについてＨＢＡポート使用率が決定される。ＨＢＡポート使用率がＨＢＡポート制限を超えるすべてのネットワーク・パスは廃棄される。残りのパスそれぞれについて、ネットワーク・パス距離が決定される。ネットワーク・パス距離がパス距離制限を超えるすべてのネットワーク・パスは廃棄される。その後、残りのパスそれぞれについて、ファブリック使用率が決定される。ファブリック使用率がファブリック使用率制限を超えるすべてのパスは廃棄され、残りのネットワーク・パスからＩ／Ｏネットワーク・パスが決定される。
【００１７】
本発明は、ＨＢＡポート使用率、パス距離、およびファブリック使用率というパラメータを考慮に入れることにより、ＨＢＡからＩ／Ｏデバイスへのネットワーク・パスを動的に決定するため、特に有利である。これらのパラメータは、それぞれＨＢＡポート制限、パス距離制限、およびファブリック使用率制限というパラメータに照らしてチェックされる。このようにして、すべての適格なネットワーク・パスから最良のネットワーク・パスが識別される。
【００１８】
本発明の実施形態に従い、ＨＢＡのＩ／Ｏポートによって並行処理が可能なＩ／Ｏデバイスの数により、少なくとも１つのＨＢＡそれぞれの少なくとも１つのＩ／Ｏポートそれぞれについて、ＨＢＡポート制限が決定される。これは通常、ＨＢＡのＩ／Ｏポートによって並行処理が可能なＩ／Ｏデバイスの数が指定されるため、特に有利である。この指定は、たとえばシステム管理者によって提供可能であるか、または本発明に従ったロード・バランシング・システムによって対応するＩ／Ｏポートから読み取ることが可能である。この指定が、ＨＢＡの１つのＩ／Ｏポートが提供可能であり、当該ＨＢＡ  Ｉ／ＯポートからＩ／Ｏを受信可能なＩ／Ｏデバイスの数に直接関係する、帯域幅を定義する。帯域幅は、実質的に、１つのＨＢＡ  Ｉ／Ｏポートによって実行可能な１秒あたりのＩ／Ｏ動作数を定義し、通常は１秒あたりのメガバイト数（ＭＢ／秒）単位で測定される。
【００１９】
本発明の実施形態に従い、ＨＢＡのＩ／Ｏポートによって処理可能な１秒あたりの最大ビット数によって、少なくとも１つのＨＢＡそれぞれの少なくとも１つのＩ／Ｏポートそれぞれについて、ＨＢＡポート制限が決定される。Ｉ／ＯポートをＨＢＡポート制限として処理できる１秒あたりのビット数を使用することは、この値がロード・バランシング・システムによって動的に決定可能であるため、特に有利である。
【００２０】
本発明の実施形態に従い、ＨＢＡのＩ／Ｏポートに割り当てられた作業負荷（または帯域幅）によって、ＨＢＡのＩ／ＯポートのＨＢＡポート使用率が決定される。これは、ロード・バランシング・システムがＨＢＡに照会コマンドを送信することによって、作業負荷が動的に決定できるため、特に有利である。
【００２１】
本発明の実施形態に従い、ドライブ重みを使用することによってＨＢＡポート使用率が決定される。ドライブ重みはＩ／Ｏデバイスに割り当てられ、ドライブ重みはＩ／Ｏデバイスの作業負荷を示す。
【００２２】
本発明の実施形態に従い、Ｉ／Ｏデバイスの作業負荷を示し、圧縮率によって調整される、ドライブ重みを使用することによって、ＨＢＡポート使用率が決定され、圧縮率はＩ／Ｏデバイスから取得される。
【００２３】
本発明は、少なくとも１つのホスト・バス・アダプタの少なくとも１つのＩ／ＯポートのＨＢＡポート制限を考慮に入れることが可能であり、ＨＢＡポート使用率がＨＢＡポート制限を超えるすべてのパスを廃棄するため、特に有利である。各ＨＢＡの各Ｉ／Ｏポートは、独自の特定ＨＢＡポート制限を有することに留意されたい。これにより、ＨＢＡのＩ／Ｏポートによって最適な数のドライブのみが使用されることが保証される。これは、全Ｉ／Ｏデバイス・インフラストラクチャの集中的な帯域幅全体の改善に寄与する。
【００２４】
本発明の実施形態に従い、Ｉ／Ｏネットワーク・パスに含まれるすべての相互接続の待ち時間を合計すること、およびＩ／Ｏネットワーク・パスに含まれるＩ／Ｏポートの数を追加することによって、残りの各ネットワーク・パスについてネットワーク・パス距離が決定される。
【００２５】
本発明の実施形態に従い、ネットワーク・パスに含まれる少なくとも１つのネットワーク・デバイスのＩ／Ｏポートを通過するデータ速度を合計することによって、ファブリック使用率が決定される。ネットワーク・デバイスを通るネットワーク・パスは、一般に、１つの入力ポートおよび１つの出力ポートの、少なくとも２つのポートを備える。
【００２６】
本発明の実施形態に従い、ネットワーク・パスに含まれるＩ／Ｏポートの合計数に対する、ネットワーク・パスに含まれるアクティブなＩ／Ｏポート数の比率によって、ネットワーク・パスのファブリック使用率が決定される。
【００２７】
ネットワーク・パスの決定にファブリック使用率を使用することは、ネットワーク・パスに含まれるすべてのコンポーネントの作業負荷が考慮に入れられるため、特に有利である。ファブリック使用率が最低のパスを選択することで、すべてのアクティブなリソースの最良の使用率が与えられる。さらに本発明は、ネットワーク・パスのファブリック使用率制限を考慮に入れ、ファブリック使用率の大きさがファブリック使用率制限を下回るかどうかをチェックするため、特に有利である。これにより、Ｉ／Ｏデバイス・インフラストラクチャの最大帯域幅を決して超えないことが保証される。
【００２８】
本発明の実施形態によれば、「最良の」Ｉ／Ｏネットワーク・パスは、ＨＢＡポート使用率、ネットワーク・パス距離、およびファブリック使用率を考慮に入れる関数が最低の関数値を引き出す、残りのネットワーク・パスである。ＨＢＡ使用率、ネットワーク・パス距離、およびファブリック使用率の、３つのパラメータが、すべてのパスに割り当てられ、ここから最良のパスが選択される。たとえば、システム管理者によって関数が指定される。最良のパスを決定するために関数を使用することは、システム管理者が３つのパラメータを等しく、または異なるように重みづけできるようにするという利点を有する。
【００２９】
他の態様では、本発明は、方法を実行するためのコンピュータ実行可能命令を備えるコンピュータ・プログラム製品に関する。
【００３０】
他の態様では、本発明は、Ｉ／Ｏネットワーク・パスのセットからＩ／Ｏネットワーク・パスを識別するためのロード・バランシング・システムに関し、このＩ／Ｏネットワーク・パスのセットは、ネットワークを介してホスト・システムをストレージ・サブシステムに接続する。
【００３１】
次に、単なる例示として図面を参照しながら、本発明の好ましい諸実施形態についてより詳細に説明する。
【発明を実施するための最良の形態】
【００３２】
図１は、本発明の一実施形態を実装するシステムを示すブロック図である。このシステムは、取り外し可能メディア管理システム１１８、ホスト・システム１０２、ネットワーク１１２、ストレージ・サブシステム１４９を備える。取り外し可能メディア管理システム１１８は、ロード・バランシング・システム１０６、マイクロプロセッサ１０３、不揮発性メモリ・デバイス１０５、および揮発性メモリ・デバイス１０７を備える、コンピュータ・システムである。ホスト・システムは、アプリケーション１０４、取り外し可能メディア管理システム１１８と通信するためのエージェント１０９、デバイス・ドライバ１０８、ならびに、それぞれＩ／Ｏポート１６０、１６１および１６２を備えるホスト・バス・アダプタ（ＨＢＡ）１１０、１１１を備える、たとえばサーバ・システムなどのコンピュータ・システムでもある。
【００３３】
ネットワーク１１２は、たとえばストレージ・ネットワーク（たとえばＦｉｂｒｅ  Ｃｈａｎｎｅｌ、ｉＳＣＳＩ）内のスイッチ、ルータ、およびハブなどの、典型的なネットワーク・デバイスである、ネットワーク・コンポーネント１１３、１１４、および１１５を備える。各ネットワーク・デバイスは、Ｉ／Ｏポート１３０、１３１、１３２、１３３、１３４、１４０、１４１、１４２、１４３、１４４、１４５、および１４６を備える。
【００３４】
ストレージ・サブシステム１４９は、Ｉ／Ｏデバイス１２０、１２１、１２５、および１２６を備える。Ｉ／Ｏデバイスは、通常、テープ、ディスク、ホログラフィック、ナノテクノロジ、または光Ｉ／Ｏデバイスなどの、取り外し可能メディア・デバイスである。Ｉ／Ｏデバイス１２０、１２１、１２５、および１２６は、それぞれ１つまたは複数のＩ／Ｏポート１５０、１５１、１５２、１５３、および１５４を備える。
【００３５】
Ｉ／Ｏネットワーク・パスは、相互接続を使用することにより、１つまたは複数のネットワーク・デバイスのＩ／Ｏポートを介して、ＨＢＡのＩ／ＯポートをＩ／ＯデバイスのＩ／Ｏポートに接続する。たとえばネットワーク・パス１９０は、相互接続を使用して、ＨＢＡ  １１１のＩ／Ｏポート１６１をネットワーク・デバイス１１４のＩ／Ｏポート１３１に接続し、ネットワーク・デバイス１１４の他のＩ／Ｏポート１４５をＩ／Ｏデバイス１２６のＩ／Ｏポート１５３に接続する。ＨＢＡは複数のＩ／Ｏポートを備えることができることに留意されたい。４つまでのＩ／Ｏポートが典型的である。さらにネットワーク・デバイスは、実際に２つまたはそれ以上のＩ／Ｏポートを備え、Ｉ／Ｏデバイスも複数のＩ／Ｏポートを備えることができる。
【００３６】
パスは、１つまたは複数の相互接続を備える。相互接続は、１つのＩ／Ｏポートから他のＩ／Ｏポートへデータが移送される際に使用する任意のデバイスとすることができる。相互接続の例は、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌケーブル、イーサネット（登録商標）・ケーブル、あるいは、ＣＷＤＭ、ＤＷＤＭ、ＡＴＭ、Ｓｏｎｅｔ／ＳＤＨ、またはＴＣＰ／ＩＰのようなＷＡＮ相互接続である。相互接続は、無線接続によっても提供することができる。たとえばホスト・システムおよびストレージ・サブシステムは、無線ローカル・エリア・ネットワークによって相互接続することが可能であり、これにより１つのＩ／Ｏポートから他のＩ／Ｏポートへと光信号によってデータが伝送され、さらにこれにより、たとえば光信号は赤外線周波数領域内の周波数を有する。
【００３７】
光ケーブルが相互接続として採用される場合、または無線相互接続が使用される場合、相互接続自体が信号周波数の異なるいくつかのチャネルを備えることが可能である。したがって相互接続は、チャネルによって、またはそれに対応してデータの転送に使用される光周波数によって、各パスが特徴付けられる、いくつかのパスを提供することが可能である。
【００３８】
ネットワーク・パスは、複数のネットワーク・コンポーネントも備えることができる。たとえばＩ／Ｏネットワーク・パス１７０では、相互接続がＩ／Ｏポート１６０をＩ／Ｏポート１３０に接続し、次に相互接続がＩ／Ｏポート１４０をＩ／Ｏポート１３２に接続し、さらに相互接続がＩ／Ｏポート１４２をＩ／Ｏデバイス１２０のＩ／Ｏポート１５０に接続する。
【００３９】
ネットワーク・パスは、ネットワーク・コンポーネントを備えないこともできる。Ｉ／ＯデバイスのＩ／Ｏポートは、相互接続によってＨＢＡのＩ／Ｏポートと直接接続することができる。ネットワーク・パスは、当該相互接続からなる。
【００４０】
アプリケーション１０４は、ホスト・システム１０２を使用して、Ｉ／Ｏデバイス１２０、１２１、１２５、および１２６にアクセスする。ホスト・システム１０２、とりわけアプリケーション１０４は、エージェント１０９およびＴＣＰ／ＩＰなどの適切な通信方法を介して、メディア管理システム１１８に含まれるロード・バランシング・システム１０６と接触する。ロード・バランシング・システム１０６は、アプリケーション１０４がＩ／Ｏデバイス１２０、１２１、１２５、１２６へのデータの読み取りまたは書き込みの際に使用可能なネットワーク・パスのセットから、ネットワーク・パス１７０を決定する。アプリケーション１０４は、マウント、読み取り、または書き込みのコマンドなどの、データ・アクセス要求の結果として、ロード・バランシング・システム１０６に接触することができる。ネットワーク・パスのセットからＩ／Ｏネットワーク・パスを識別するために採用される方法の様々な実施形態について、以下で説明する。
【００４１】
ロード・バランシング・システム１０６は、エージェント１０９を使用して、揮発性メモリ・デバイス１０７上に格納された、ネットワークおよびストレージ・サブシステム１４９のいくつかのパラメータを決定する。別の方法として、それらは不揮発性メモリ・デバイス１０５上に格納することもできる。ホスト・システム１０２は、Ｉ／Ｏデバイス１２０、１２１、１２５、および１２６にアクセスするために、１つまたは複数のデバイス・ドライバ１０８を採用する。
【００４２】
しかしながら、本発明に従ったシステムは、決してこの実施形態に制約されることはない。たとえばロード・バランシング・システム１０６を備えるメディア管理システム１１８は、ホスト・システム１０２またはストレージ・サブシステム１４９に含まれる場合がある。メディア管理システム１１８は、たとえばアプリケーションに組み込まれたライブラリ・マネージャの形でホスト・システム１０２内に実装される場合がある。メディア管理システム１１８は、たとえばテープ・ライブラリ用の拡張ライブラリ・マネージャの形でストレージ・サブシステム１４９内に実装される場合がある。しかしながら、外部メディア管理システム１１８の利点は、異なるネットワークおよびストレージ・サブシステムに、または同じネットワークおよびストレージ・サブシステムに接続された、いくつかのホスト・システムによって同時に使用されることが可能なことである。
【００４３】
ネットワーク・パスのセットは、ＨＢＡ  １１０または１１１のＩ／Ｏポート１６０、１６１、または１６２を、ネットワーク１１２を介してストレージ・サブシステム１４９のＩ／Ｏデバイス１２０、１２１、１２５、および１２６に接続する、すべてのパスからなる。たとえばＩ／Ｏネットワーク・パス１７０は、ＨＢＡ  １１０のＩ／Ｏポート１６０からネットワーク・デバイス１１３のＩ／Ｏポート１３０へとつながる相互接続、ならびにネットワーク・デバイス１１３のＩ／Ｏポート１４０からネットワーク・デバイス１１５のＩ／Ｏポート１３２へとつながる相互接続、ならびにネットワーク・デバイス１１５のＩ／Ｏポート１４２からＩ／Ｏデバイス１２０のＩ／Ｏポート１５０へとつながる相互接続によって、具体化される。
【００４４】
本発明の実施形態に従い、ロード・バランシング・システム１０６は、以下で指定される他のパラメータに加えて、揮発性メモリ・デバイス１０７または不揮発性メモリ・デバイス１０５上に格納された、ＨＢＡポート制限１８０、ＨＢＡポート使用率１８２、ネットワーク・パス距離１８４、パス距離制限１８５、ファブリック使用率制限１８６、ファブリック使用率１８８、圧縮率１９２、およびドライブ重み１９４の、パラメータを決定する。次に、これらのパラメータが決定される方法について詳細に説明する。
【００４５】
ロード・バランシング方法は、アプリケーション１０４からのデータ・アクセス要求の受け取りに応答して、マイクロプロセッサ１０３によって実行される。データ要求に関する例には、カートリッジのマウント要求、ストレージ・ネットワーク内でのＳＣＳＩソースからＳＣＳＩターゲットへの接続確立、およびストレージ・ネットワーク内での新しいゾーンの作成が含まれる。
【００４６】
図２は、本発明の好ましい実施形態において、「最良の」Ｉ／Ｏネットワーク・パスが決定される方法を示す流れ図である。プロセスは２０２で開始され、すべてのパスのセットが決定される２０４へと続く。各Ｉ／Ｏネットワーク・パスは、システムのＨＢＡのＩ／Ｏポート（ホスト・システムは複数のＨＢＡを備えることが可能であり、各ＨＢＡは１つまたは複数のＩ／Ｏポートを備える）から、ネットワークを介した、Ｉ／ＯデバイスのＩ／Ｏポート（ストレージ・サブシステムも、複数のＩ／Ｏポートを備えることが可能な複数のＩ／Ｏデバイスを備えることが可能である）へのルートを記述する。ＨＢＡのＩ／Ｏポートは、以下ではＨＢＡポートとも言い表される。ステップ２０４の結果として、セットＰ２０４はすべてのパスのセットを記述する。ステップ２０６は、Ｉ／Ｏにとって適格でないすべてのパスを除去する。適格でないＩ／Ｏネットワーク・パスの例には、アクティブなＦｉｂｒｅ  Ｃｈａｎｎｅｌゾーンのメンバでない物理Ｉ／Ｏネットワーク・パスが含まれる。適格でないネットワーク・パスの他の例は、フリーまたは使用可能でないデバイスである。デバイスは、他のアプリケーションまたは他のホスト・システムによって使用中であるため、フリーでない可能性がある。デバイスは、不良またはオフラインである場合、使用できない可能性がある。新しいデータ・アクセス要求を処理する場合、ステップ２０４は、現在使用中でないドライブへのパスのみを考慮することに留意されたい。ステップ２０６の結果、セットＰ２０６はすべての適格なパスの集合を記述する。代替実施形態では、ステップ２０４は適格なパスのみを決定するため、ステップ２０６は省略することができる。
【００４７】
次にプロセスは、意思決定チェックポイント２０８へと進む。この地点で、適格なパスが残っていない場合（Ｐ２０６＝φ）、プロセスはステップ２９９で終了する。ステップ２９９は、この時点で使用できる適格なパスがないことを示す。ステップ２９９で、またはステップ２９９の結果として実行されるアクションは、環境に依存する。たとえば、取り外し可能メディア管理システムでは、それぞれのマウント要求は、マウント要求がマウント要求キューに追加されることを意味するブロックが行われるか、または拒否される。他の実施形態では、ストレージ・ネットワーク容量計画モジュールが、それぞれのゾーニングまたはアクセス要求を拒絶する場合がある。さらに他の実施形態では、ステップ２９９は、パス発見を再試行するために、この流れ図の開始地点であるステップ２０２にループバックすることができる。さらに他の実施形態では、パスＰ２０４のセットにさらにパスを追加するために、追加のインフラストラクチャを動的に提供する、オンデマンド・モジュールを呼び出すことができる。
【００４８】
チェックポイント２０８で、アクセス要求を満たす適格なパスが存在する場合（Ｐ２０６≠φ）、プロセスはステップ２１０へと続行される。ステップ２１０は、ホスト・バス・アダプタのすべてのＩ／ＯポートｈのセットＨを構築し、ここでｈは少なくとも１つのＩ／Ｏネットワーク・パスｐ要素Ｐ２０６（ｐ∈Ｐ２０６）の開始点である。さらにステップ２１０で、アクセス要求がスケジューリングされたという仮定の下で、Ｈの各ホスト・バス・アダプタＩ／Ｏポートｈ要素について、ＨＢＡポート使用率ｕｈが決定される。ＨＢＡポート使用率の計算に関する代替実施形態については、後で詳細に説明する。
【００４９】
次に、プロセスはステップ２１２へと進む。ステップ２１２は、各ＨＢＡポートｈ∈ＨのＨＢＡポート使用率ｕｈと、ＨＢＡポート制限ｌｈとを比較し、ＨＢＡポート使用率ｕｈ＞ＨＢＡポート制限ｌｈ１８０であるすべてのパスｐを廃棄する。一実施形態では、ＨＢＡポート制限ｌｈは、プロセス２００がアプリケーションによって起動された後に、動的に決定される。この決定は、ネットワーク内のネットワーク・コンポーネントのパラメータと、メディア管理システムのプロセッサによってスキャンおよび照会されたストレージ・システム内のＩ／Ｏデバイス特徴とに基づく。たとえば、ロード・バランシング・システムは、ネットワーク・パスに関連付けられたすべてのコンポーネントを照会し、パス内で可能な最高データ速度を決定する。この最高データ速度は、ＨＢＡポート制限と等価である。他の実施形態では、ＨＢＡポート制限ｌｈは各ＨＢＡポートのユーザによって構成される。パラメータＨＢＡポート制限ｌｈについては、後で詳細に説明する。ステップ２１２の結果は、ネットワーク・パスのセットＰ２１２であり、ここでＰ２１２＝｛“ｈはｐの開始点”ＡＮＤ“新しいＨＢＡポート使用率ｕｈ≦ＨＢＡポート制限ｌｈ”を伴うｐ∈Ｐ２０６｝である。
【００５０】
ステップ２１２で適格な候補が決定されない場合（Ｐ２１２＝φ）、プロセスは、適格なパスが見つからなかったことを示すステップ２９９に進む。
【００５１】
決定された場合、プロセスはステップ２１４に進み、ここですべての残りのパスｐ∈Ｐ２１２のネットワーク・パス距離Ｎｐが決定される。パスｐ∈Ｐ２１２のネットワーク・パス距離Ｎｐは、２つのポート間の物理的距離、または相互接続の長さである。パスｐ∈Ｐ２１２のネットワーク・パス距離Ｎｐは、メディア管理システムのマイクロプロセッサが、たとえばネットワーク上のテスト・パッケージを送信すること、および折り返し（turn around）時間を測定することによって、自動的に決定することができる。折り返し時間は、当該パッケージがネットワーク上を移動しなければならない距離に比例する。代替実施形態では、ネットワーク・パス距離Ｎｐはユーザ構成可能であり、これは、ネットワーク内の任意の所与のパスに関する距離をユーザが構成することを意味する。ネットワーク・パス距離パラメータについては、後でより詳細に説明する。
【００５２】
次のステップ２１６は、Ｉ／Ｏネットワーク・パスｐのネットワーク・パス距離Ｎｐが、パス距離制限ｌｄよりも大きい、すべてのパスｐ∈Ｐ２１２を廃棄する。本発明の一実施形態では、パス距離制限ｌｄは、プロセス２００がアプリケーションによって起動された後に、本発明に従い、ロード・バランシング・システムによって動的に決定される。この決定は、スキャンおよび照会されたホスト・システムおよびストレージ・バスシステムを接続するネットワーク・コンポーネントのパラメータに基づく。他の実施形態では、パス距離制限は、各相互接続についてユーザによって構成される。パス距離制限ｌｄパラメータについては、後でより詳細に説明する。ステップ２１６の結果はＰ２１６のセットであり、ここでＰ２１６＝｛“Ｉ／Ｏネットワーク・パスｐのネットワーク・パス距離Ｎｐ≦Ｉ／Ｏネットワーク・パスｐのパス距離制限ｌｄ”を伴うｐ∈Ｐ２１２｝である。適格な候補が残っていない場合、処理はステップ２９９で終了する（Ｐ２１６＝φ）。
【００５３】
ステップ２１８は、すべての残りのパスｐ要素Ｐ２１６のファブリック使用率を計算する。パスｐ∈Ｐ２１６に関するファブリック使用率Ｆｐは、パスｐを含むファブリックＦが管理しなければならない作業負荷によって定義される。パスｐ∈Ｐ２１６に関するファブリック使用率Ｆｐは、メディア管理システムのマイクロプロセッサが、たとえば１秒あたりのＩ／Ｏ回数を照会するファブリックＦのネットワーク・コンポーネントに照会を送信することによって、自動的に決定することができる。次にこの回数が、ファブリックＦのパスｐに関するすべてのネットワーク・コンポーネントにわたって累積される。パラメータ・ファブリック使用率については、後でより詳細に説明する。
【００５４】
次のステップ２２０は、パスｐのファブリック使用率がＩ／Ｏネットワーク・パスｐのファブリック使用率制限ｌｆよりも大きい、すべてのパスｐ要素Ｐ２１６を廃棄する。本発明の一実施形態では、ファブリック使用率制限ｌｆは、プロセス２００がアプリケーションによって起動された後に、本発明に従ったロード・バランシング・システムによって動的に決定される。この決定は、スキャンおよび照会されたホスト・システムおよびストレージ・バスシステムを接続するネットワーク内のネットワーク・コンポーネントのパラメータに基づく。他の実施形態では、ファブリック使用率制限はユーザによって構成される。パラメータ・ファブリック使用率制限ｌｆについては、後でより詳細に説明する。
【００５５】
ステップ２２０の結果はセットＰ２２０であり、ここでＰ２２０＝｛“パスｐの新しいファブリック使用率≦パスｐのファブリック使用率制限”を伴うｐ∈Ｐ２１６｝である。Ｐ２２０に適格な候補が残っていない場合（Ｐ２２０＝φ）、プロセスは適格なパスが見つからなかったことを示すステップ２９９に進む。適格な候補が残っている場合、すべてのパスｐ∈Ｐ２２０は帯域幅を超えないため、「最良のパス」の潜在的な候補であり、プロセスはステップ２２２へと進む。したがって処理の残りのステップは、追加のパスを廃棄せず、最適なパスを決定する。
【００５６】
ステップ２２２は、ＨＢＡポート使用率ｕｈ、ファブリック使用率ｐｆ、および距離ｐｄの、３つのパラメータに重みづけする関数ｆを導入する。一実施形態では、関数ｆは重みづけされた合計ｆ（ｕｈ，ｐｆ，ｐｄ）＝ａ×ｕｈ＋ｂ×ｐｆ＋ｃ×ｐｄであり、この式でａ、ｂ、ｃは、たとえばシステム管理者によって指定される定数値である。
【００５７】
最後にステップ２２４で、上記で与えられた関数ｆがすべてのｐ∈Ｐ２２０のうち最低の関数値ｐｍｉｎ＝ｍｉｎ（ｆ（ｕｈ，ｐｆ，ｐｄ））を引き出す、Ｉ／Ｏネットワーク・パスが選択される。この処理はステップ２２６で終了し、最良の性能を特徴とする「最良パス」として決定されたネットワーク・パスを戻す。
【００５８】
本発明の実施形態では、ステップ２０２から２１２、およびステップ２２６またはステップ２９９のいずれかのみが実施される。前述のように、ステップ２１２の結果はネットワーク・パスのセットｐ２１２であり、ここでＰ２１２＝｛“ｈはｐの開始点”ＡＮＤ“新しいＨＢＡポート使用率ｕｈ≦ＨＢＡポート制限ｌｈ”を伴うｐ∈Ｐ２０６｝である。Ｐ２１２≠φの場合、プロセスはステップ２２６で続行され、たとえば、リストＰ２１２から第１のネットワーク・パスを選択すること、またはセットＰ２１２からランダムにネットワーク・パスを選択することによって、セットＰ２１２から１つのネットワーク・パスが選択される。Ｐ２１２＝φの場合、プロセスはステップ２９９で続行される。
【００５９】
本発明によれば、各Ｉ／Ｏネットワーク・パスｐ要素Ｐ２２０は、「最良パス」の決定に使用される３つのパラメータ、（ａ）ＨＢＡポート使用率、（ｂ）ネットワーク・パス距離１８４、および（ｃ）ファブリック使用率によって特徴付けられる。これらのパラメータについて、以下で説明する。
【００６０】
ＨＢＡポート使用率ｕｈ  −  現在どれだけの作業負荷がＨＢＡのＩ／Ｏポートに割り当てられているかを追跡し、１秒あたりのメガバイト数（ＭＢ／秒）で表される。このＨＢＡポートで現在ドライブが使用されていない場合、その値はゼロである。ＨＢＡポートで１つまたは複数のドライブの使用がスケジューリングされている場合、この値はそれぞれのドライブのドライブ重みの合計に設定される。
【００６１】
ドライブ重みは、Ｉ／ＯデバイスがどれだけのＩ／Ｏリソースを消費するかを示す、追加のパラメータである。これは、１秒あたりのメガバイト数（ＭＢ／秒）単位のＩ／Ｏ速度で表される。このパラメータは、どのデータ速度が達成可能であるかを報告するようにドライブに命じる照会コマンドをドライブに送信することによって、自動的に取得可能である。照会コマンドは、たとえばドライブにその特徴を照会するＳＣＳＩ  ＩＮＱＵＩＲＹコマンドであり、通常、１つのパラメータがドライブ帯域幅を示す。ドライブ帯域幅は、たとえばＩ／Ｏデバイスが処理可能なデータ速度を示し、通常は１秒あたりのメガバイト数で表される。代替実施形態では、ドライブ重みパラメータをユーザが構成することができる。
【００６２】
さらに他の実施形態では、ドライブ重みは、本発明に従ったメディア管理システムによるＩ／Ｏデバイス動作に基づいて、動的に調整される。Ｉ／Ｏデバイスは、通常、前述の動作で処理されたデータ速度に関する統計データを維持する。この統計データをメディア管理システムが照会することができる。照会コマンドの例は、ＳＣＳＩ  ＬＯＧ  ＳＥＮＳＥコマンドである。メディア管理システムはこの情報に基づき、複数のマウントにわたって平均Ｉ／Ｏ速度を計算することにより、ドライブ重みを動的に更新することができる。
【００６３】
一実施形態では、ドライブ重みパラメータは、ドライブ重みが非圧縮データに関する場合、圧縮率によって調整される。圧縮は、通常、ある比率のＩ／Ｏデバイス・レベルで実行され、Ｉ／ＯデバイスのＩ／Ｏ速度に影響を与える。この実施形態では、ドライブ重みパラメータに圧縮率を掛けた後、ＨＢＡポート使用率に追加され、ＨＢＡポート制限と比較される。一実施形態では、圧縮率パラメータは、Ｉ／Ｏデバイスからメディア管理によって照会される。メディア管理システムは、圧縮率平均を計算し、これを揮発性メモリ・デバイスに格納する。照会コマンドはＳＣＳＩ−３  ＬＯＧ  ＳＥＮＳＥコマンドである。他の実施形態では、圧縮率はユーザによって構成される。
【００６４】
ＨＢＡポート使用率を更新するための方法は非常に単純である。この方法は、そのポートを介して使用されるＩ／Ｏデバイスがない場合に、値ゼロで開始される。図２のプロセスの結果として、Ｉ／ＯデバイスがＨＢＡポート（マウント要求）向けにスケジューリングされる場合、ＨＢＡポート使用率の値は、Ｉ／Ｏデバイスの圧縮率によって調整可能なドライブ重みパラメータ分増加される。その後、ＨＢＡポート使用率はメディア管理システムに格納される。ドライブがＨＢＡポートからスケジュール解除（アンマウント要求）されると、ＨＢＡポート使用率の値はドライブ重み分低減される。
【００６５】
ネットワーク・パス距離Ｎｐ  −  ネットワーク・パス距離は、主に、Ｉ／Ｏネットワーク・パスに含まれる相互接続の物理長さの合計であるＩ／Ｏネットワーク・パスの長さによって提示される。好ましい実施形態は、Ｉ／Ｏネットワーク・パスに含まれるＩ／Ｏポートの数を含むことである。その理由は、各ポートが、データ速度に影響を与える、したがって考慮に入れるべき、何らかのレベルのオーバヘッドを表すためである。ネットワーク・パス距離は、好ましい実施形態に従って、メートル（ｍ）などの長さエンティティで測定される。代替実施形態では、このパラメータは、ミリ秒（ｍｓ）などの時間単位で測定された、このパス上でのデータ・パッケージの折り返し時間で表される。所与のネットワーク・パスの長さを決定するために、ロード・バランシング・プロセスは、ＴＣＰ／ＩＰプロトコルに従った「ｐｉｎｇ」コマンドと同様に、パスを横切ってパッケージを送信し、折り返し時間を測定する。折り返し時間は、ネットワーク・パス距離パラメータとしてメディア管理システムのメモリ・デバイス内に格納される。代替実施形態では、パス距離はユーザによって構成され、メートル単位で表される。
【００６６】
ファブリック使用率Ｆｐ  −  パスｐが常駐するファブリックの使用率を示す。ファブリックはいくつかのスイッチまたはネットワーク・コンポーネントからなる。ネットワーク・コンポーネントまたはスイッチは、いくつかのＩ／Ｏポートからなる。パスｐのファブリック使用率は、パス内のＩ／ＯポートのＩ／Ｏ速度の合計によって計算される。したがって、ファブリック全体は考慮されず、１つのＨＢＡと１つのＩ／Ｏデバイスとの間のＩ／Ｏネットワーク・パス内のコンポーネントのみが考慮される。このパラメータは、ファブリック内のパスｐに関連するポートの含まれるデータ速度を表す、１秒あたりのメガバイト数などのデータ速度で表される。ロード・バランシング・システムは、適切なコマンドを介してパスに関連するポートのデータ速度を決定する。たとえば従来技術に従ったＳＡＮスイッチ・コンポーネントは、Ｉ／Ｏポートのデータ速度を照会するためにロード・バランシング・システムが使用可能なアウトバウンド接続に、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を提供する。代替実施形態では、パスｐのファブリック使用率は、ファブリック内の合計ポート数に対するファブリック内のアクティブ・ポート数の比率によって決定される。ポートの動作は、たとえばＳＡＮコンポーネントによって提供されるＡＰＩを介して、ロード・バランシング・システム１０６によって照会される。このパラメータは、図２のプロセスのステップ２１８の一部として決定される。ファブリック使用率は動的に変化するため、別の方法として、バックグラウンドで決定することができる。
【００６７】
このパラメータを使用することによって、本発明に従ったロード・バランシングの方法およびシステムは、ＨＢＡポートおよびＩ／Ｏデバイスを接続するパスのすべてのコンポーネントの作業負荷を考慮に入れる。ファブリック使用率が最低のパスを選択することで、すべてのリソースに等しい使用率が与えられる。
【００６８】
図２に記載されたプロセスは、（ａ）ＨＢＡポート制限、（ｂ）ネットワーク・パス距離制限、および（ｃ）ファブリック使用率制限などの、一定のパスを排除することが可能な、これら３つのパラメータに関する制限またはしきい値も含む。これらの制限は、ステップ２１２、２１６、および２２０で概説し、以下でより詳細に説明する、３つのパラメータのうちの１つと比較される。
【００６９】
ＨＢＡポート制限ｌｈ  −  ＨＢＡポート制限は、ＨＢＡの各ポートに関する新しいメタデータ属性である。一実施形態では、ＨＢＡポート制限は、単にこのポートが並行して処理可能なドライブの数を表す。他の実施形態では、ＨＢＡポート制限は、ポートが処理可能な最大スループット（たとえば１００Ｇビット）を表す。相互接続がいくつかのチャネルを備える光ケーブルまたは無線接続であり、異なる光周波数を使用して各チャネル上をデータが転送される、他の実施形態では、ＨＢＡポート制限は、ＨＢＡポートによって処理可能なチャネル数とすることもできる。
【００７０】
パス距離制限ｌｄ  −  パスの最大許容距離を表し、パス距離と比較される。パス距離制限は、ユーザによって構成される定数値である。
【００７１】
ファブリック使用率制限ｌｆ  −  ファブリックの最大許容使用率を表し、ファブリック使用率と比較される。ファブリック使用率制限はユーザによって構成される。
【００７２】
図３は、「最良Ｉ／Ｏネットワーク・パス」を選択するための他の実施形態を教示する。２００で示されたプロセスに対する最も重要な相違点は、プロセス３００が禁止されたパスを除去しないことである。特にプロセス３００は、ＨＢＡポート使用率に関する制限、ネットワーク・パス距離に関する制限、およびファブリック使用率に関する制限を考慮しない。その代わりにこのプロセスは、上記で説明された３つのパラメータ（ａ）ＨＢＡポート使用率、（ｂ）ネットワーク・パス距離、および（ｃ）ファブリック使用率のそれぞれについて、最低値を選択する。この実施形態は、図２に示された実施形態と共に、ロード・バランシング・システムの実装に関して様々な代替実施形態が存在することを示す。
【００７３】
プロセス３００は、アプリケーション１０４からのデータ・アクセス要求に応答して、ロード・バランシング・システム１０６によって実行される。代替実施形態は、このプロセスが、ホスト・システム１０２の使用率がより低い場合に実行されることである。
【００７４】
プロセス３００は３０２で開始され、３０４へと進み、ここですべてのパスのセットが決定される。各Ｉ／Ｏネットワーク・パスは、ホスト・システム１０２のホスト・バス・アダプタ１１０または１１１のＩ／Ｏポート１６０、１６１、または１６２から、ネットワーク１１２を介して、Ｉ／Ｏデバイス１２０、１２１、１２５、および１２６の少なくとも１つのＩ／Ｏポートへのルートを示す。たとえばＩ／Ｏネットワーク・パス１７０は、ＨＢＡ  １１０のＩ／Ｏポート１６０、Ｉ／Ｏポート１６０からＩ／Ｏポート１３０へとつながる相互接続、ネットワーク・デバイス１１３、Ｉ／Ｏポート１４０からＩ／Ｏポート１３２へとつながる相互接続、ネットワーク・デバイス１１５、および、Ｉ／Ｏポート１４２からＩ／Ｏデバイス１２０のＩ／Ｏポート１５０へとつながる相互接続を含む。
【００７５】
ステップ３０５では、いずれかのネットワーク・パスが存在するかどうかがチェックされる。ネットワーク・パスが存在しない場合、流れはステップ３９９へと続行されて停止し、パスは決定されない。少なくとも１つのネットワーク・パスが存在する場合、流れはステップ３０６へと続行される。ステップ３０６では、各ホスト・バス・アダプタ１１０または１１１の各Ｉ／Ｏポート１６０、１６１、または１６２のＨＢＡポート使用率が決定される。ステップ３０８は、使用率が最低のＩ／Ｏポート１６０、１６１、または１６２を決定する。ステップ３１０では、ＨＢＡポート１６０、１６１、および１６２のＨＢＡポート使用率が比較され、使用率が最低のＨＢＡポートが選択される。ＨＢＡポート使用率が最低のＩ／Ｏネットワーク・パスが１つしかない場合、プロセスは、後で論じるステップ３２６へと続行される。
【００７６】
これに対して、使用率が最低のＩ／Ｏネットワーク・パスが複数存在する場合、プロセスはステップ３１２へと続行され、同じ最低使用率を有するＩ／Ｏネットワーク・パスに関して、ホスト・バス・アダプタ・ポート１６０、１６１、および１６２と、ドライブ１２０、１２１、１２５、１２６のＩ／Ｏポート１５０、１５１、１５２、１５３、および１５４との間の距離が決定される。
【００７７】
ステップ３１４では、ステップ３１２で考慮されたＩ／Ｏネットワーク・パスの中で、最低ネットワーク・パス距離が決定される。ステップ３１６では、最低距離を有するパスの数が１より大きいかどうかが判別される。その回答がＮＯ、すなわちパスが１つのみの場合、プロセスは、後で論じるステップ３２６へと続行される。最低距離を有するＩ／Ｏネットワーク・パスが複数存在する場合、プロセス流れはステップ３１８へと進み、ここで、ネットワーク・パス距離が最低のすべてのパスについてファブリック使用率が決定される。ステップ３２０では、Ｉ／Ｏネットワーク・パスに関する最低ファブリック使用率が決定される。
【００７８】
その後、プロセス流れはステップ３２２へと進み、ここで、ファブリック使用率が最低のＩ／Ｏネットワーク・パスが複数存在するかどうかが判別される。その回答がＮＯ、すなわちパスが１つのみの場合、プロセスはステップ３２６へと進む。ステップ３２６は、ステップ３１０、ステップ３１６、またはステップ３２２から、Ｉ／Ｏネットワーク・パスを１つだけ受け取る。このＩ／Ｏネットワーク・パスが、ステップ３２６で「最良パス」として識別される。ステップ３２６は終了３３０へと進む。
【００７９】
ステップ３２２で、ファブリック使用率が最低のネットワーク・パスが複数存在すると判別された場合、プロセス流れはステップ３２４へと進み、いわゆる第１のネットワーク・パスが選択される。本発明の一実施形態では、ステップ３２２で決定されたすべてのネットワーク・パスがリストに格納される。その後、いわゆる第１のネットワーク・パスが、リストの第１の要素であるＩ／Ｏネットワーク・パスとなる。本発明の代替実施形態では、リスト内の最後のＩ／Ｏネットワーク・パスを選択する。ステップ３２４は終了地点へと進む。
【００８０】
本発明の実施形態では、ステップ３０２から３１０、ならびにステップ３２６またはステップ３９９のいずれか、のみが実施される。ステップ３１０で決定されたパスの数が１より大きい場合、たとえばランダムに１つのパスが選択され、この方法は「最良パス」を伴うステップ３２６で終了する。
【図面の簡単な説明】
【００８１】
【図１】本発明の一実施形態を実装するシステムを示すブロック図である。
【図２】本発明の好ましい実施形態において、Ｉ／Ｏネットワーク・パスが決定される方法を示す流れ図である。
【図３】本発明の他の好ましい実施形態において、Ｉ／Ｏネットワーク・パスが決定される方法を示す流れ図である。
【図１】
2009508196.tif 000003
【図２】
2009508196.tif 000004
【図３】
2009508196.tif 000005
【国際調査報告】
2009508196.tif 000006
2009508196.tif 000007