(57)【要約】  システム中の記憶データトラフィックを均衡にさせる方法であり、コンバージドネットワークに接続された少なくとも１つの計算装置（サーバ）が、前記ネットワーク、このような方法を実行するよう構成されたシステム、及び、このような方法を実行するよう構成された又はこのようなシステムで用いるため装置に（少なくとも１つのアダプタにより）接続された少なくとも１つの記憶装置にアクセスする。一般に、前記システムはサーバとアダプタとを含み、前記サーバに組み込まれたサーバエージェント及び前記アダプタに組み込まれたアダプタエージェントは、前記ネットワーク中の記憶及びデータトラフィックの不均衡を検出及び応答を行うよう構成され、不均衡を減少させ、それにより（データ通信及び記憶トラフィックの）全体的なネットワーク性能を改善する。一般に、各エージェントは、（アダプタエージェントがサーバエージェントからの要求又は通知に応答する場合を除いて）自律的に動作し、中央コンピュータ又は管理者がエージェントの操作を指揮することはない。【選択図】図１
2018530845.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのサーバインタフェースを有する少なくとも１つのサーバであって、前記サーバは、サーバエージェントを含み、前記サーバインタフェースによりコンバージドネットワークに接続されるように設けられているサーバと、
少なくとも１つの記憶装置と、
前記記憶装置に接続されるよう構成され、少なくとも１つのアダプタインタフェースを有する少なくとも１つのアダプタであって、前記アダプタは、前記アダプタインタフェースを介して前記記憶装置を前記ネットワークに接続させるよう構成され、前記アダプタはアダプタエージェントを含むよう構成されていることを特徴とするアダプタと、
を含み、
前記アダプタエージェントは、接続されて、
前記アダプタの前記アダプタインタフェースの各々について過負荷になっているか否かを判断し、前記アダプタインタフェースの各々についてアダプタインタフェース過負荷表示を生成し、前記アダプタインタフェースの各々について前記アダプタインタフェース過負荷表示は、前記アダプタインタフェースが過負荷になっているか否かを表示し、
前記サーバエージェントからの要求に応じて、少なくとも１つの前記アダプタインタフェース過負荷表示を前記サーバエージェントに報告するよう構成され、
前記サーバエージェントは、接続されて、
前記サーバに、前記アダプタエージェントへの要求をアサートさせ、前記要求に応答して前記アダプタエージェントにより前記サーバに提供された少なくとも１つのアダプタインタフェース過負荷表示を特定させ、
前記サーバインタフェースを含み、前記アダプタを介して前記記憶装置に前記サーバがアクセスする経路について、前記アダプタインタフェース過負荷表示を用いる方法で、前記経路が過負荷か否かを判断するよう構成されている、
ことを特徴とするシステム。
【請求項２】
前記サーバエージェントは、前記経路が過負荷であるとの判断に対して、
次の使用のために前記記憶装置への新たな経路を選択すべきか否かを判断すること、及び、
新たな経路を選択すべきとの判断により、前記サーバに前記サーバと前記記憶装置の間の記憶データトラフィックの経路を変更させること、
を含む応答を行うよう構成されていることを特徴とする請求項１に記載のシステム。
【請求項３】
前記サーバエージェントは、接続され、前記サーバに、前記サーバと前記記憶装置の間の記憶データトラフィックの経路を新たな経路に変更させた後、新たな経路への変化の影響が前記アダプタエージェントの各アダプタインタフェースのトラフィックの前記各アダプタエージェントにより継続中の監視の結果に反映されるようになるまで十分な時間間隔だけ待機し、そして、待機した後、前記新たな経路以外の少なくとも１つの経路を含む、前記記憶装置への経路の評価を開始するよう構成されることを特徴とする請求項２に記載のシステム。
【請求項４】
前記待機の前記時間間隔は、所定の最大待機時間及び最少待機時間の制約をうけつつ、選択された間隔の標準変量として、選択されたランダムな数値に決定されることを特徴とする請求項３に記載のシステム。
【請求項５】
前記システムは、
前記記憶装置を前記ネットワークに接続させるよう構成された第１のアダプタと、
前記記憶装置を前記ネットワークに接続させるよう構成された第２のアダプタと、
を含み、前記第１のアダプタは、少なくとも１つの第１のアダプタインタフェースを含み、前記第２のアダプタは少なくとも１つの第２のアダプタインタフェースを含み、前記第１のアダプタは第１のアダプタエージェントを含み、前記第２のアダプタは第２のアダプタエージェントを含み、前記サーバエージェントは、接続され、
前記サーバインタフェースの各々に生じるデータトラフィックを監視し、前記サーバインタフェースの各々で消費された帯域幅を判断し、前記サーバインタフェースの各々で消費された帯域幅から、前記サーバインタフェースの各々で利用可能な帯域幅を判断し、そして、
前記サーバから前記第１のアダプタへアサートされた要求に応答して前記第１のアダプタエージェントにより前記サーバへ提供された少なくとも１つの利用可能な帯域幅表示を特定し、前記利用可能な帯域幅表示の各々は、１つの前記２のアダプタインタフェースの利用可能な帯域幅の表示であることを特徴とし、そして、前記サーバから前記第２のアダプタへアサートされた要求に応答して前記第２のアダプタエージェントにより前記サーバへ提供された少なくとも１つの付加的な利用可能な帯域幅表示を特定し、前記付加的な利用可能な帯域幅表示の各々は、１つの前記第２のアダプタインタフェースの利用可能な帯域幅の表示であることを特徴とし、
前記サーバインタフェース及び前記第２のアダプタの前記第２のアダプタインタフェースの１つを、最小限の前記サーバインタフェース上の前記利用可能な帯域幅及び前記１つの前記第２のアダプタインタフェースの利用可能な帯域幅として含む経路上の利用可能な帯域幅を判断する、
よう構成されることを特徴とする請求項１に記載のシステム。
【請求項６】
前記アダプタエージェントもまた接続され、
前記アダプタインタフェースの各々に生じるデータトラフィックを監視し、前記アダプタインタフェースの各々での消費された帯域幅表示を生成し、前記アダプタインタフェースの各々での前記消費された帯域幅表示は、前記アダプタインタフェースの消費された帯域幅の表示であり、
前記アダプタの前記アダプタインタフェースの各々での利用可能な帯域幅表示を生成し、ここで、前記アダプタインタフェースでの前記利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅の表示であり
前記サーバエージェントからの要求に応答して、少なくとも１つの前記アダプタインタフェース過負荷表示、及び少なくとも１つの前記消費された帯域幅表示及び／又は少なくとも１つの前記利用可能な帯域幅表示を前記サーバエージェントに報告する、
よう構成されることを特徴とする請求項１に記載のシステム。
【請求項７】
前記アダプタエージェントもまた、接続され、
生の過負荷表示値をフィルターを掛けフィルターを掛けた過負荷値を生成し、前記生の過負荷表示値は、測定された過負荷を表示し、前記フィルターを掛けた過負荷値は、前記測定された過負荷が不変か否かを表示し、少なくとも前記アダプタインタフェース過負荷表示は、前記フィルターを掛けた過負荷値を表示する、よう構成されることを特徴とする請求項６に記載のシステム。
【請求項８】
前記アダプタエージェントもまた、接続され、前記アダプタの容量を推定し、付加的データを処理するよう構成されることを特徴とする請求項１に記載のシステム。
【請求項９】
前記アダプタエージェントは、接続され、前記アダプタの前記アダプタインタフェースの各々での利用可能な帯域幅表示を生成し、前記各アダプタインタフェースでの前記利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅の表示であり、
エージングにより前記アダプタインタフェースの各々での少なくとも１つの前記サーバエージェントから受信した計画した付加的帯域幅で使用する値を含み、これにより、前記アダプタインタフェースでのエージングした計画した帯域幅で使用する値を生成し、前記アダプタインタフェースの各々へ、前記アダプタインタフェースへの前記エージングした計画した帯域幅で使用する値の各々の合計を保持する、よう構成されることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記アダプタエージェントは、接続され、前記アダプタインタフェースの利用可能な全帯域幅、前記アダプタインタフェースの消費された帯域幅の少なくとも１つの計測値、付加的データを処理するための前記アダプタの容量の表示、及び、前記アダプタインタフェースへの前記エージングした計画した帯域幅の前記アダプタインタフェースの合計から前記アダプタの前記各アダプタインタフェースでの利用可能な帯域幅を生成するよう構成されることを特徴とする請求項９に記載のシステム。
【請求項１１】
少なくとも１つのサーバインタフェースによりコンバージドネットワークに接続された少なくとも１つのサーバ及び少なくとも１つの記憶装置を含むシステムで用いるよう構成されたアダプタであって、前記サーバはサーバエージェントを含み、前記アダプタは、
前記記憶装置を前記アダプタに接続させるよう構成された少なくとも１つのポートと、
前記アダプタを前記ネットワークに接続し、それにより、前記記憶装置が前記少なくとも１つのポートに接続されたとき、前記アダプタを介して前記記憶装置を前記ネットワークに接続するよう構成された少なくとも１つのアダプタインタフェースと、
アダプタエージェントであって、前記アダプタエージェントは接続されて、
前記アダプタインタフェースの各々が過負荷かどうかを判断し、前記アダプタインタフェースの各々についてアダプタインタフェース過負荷表示を生成し、前記アダプタインタフェースの各々についてアダプタインタフェース過負荷表示は、前記アダプタインタフェースが過負荷かどうかの表示であり、
前記サーバエージェントからの要求に応じて、前記アダプタに、少なくとも１つの前記アダプタインタフェースに、少なくとも１つの前記アダプタインタフェース過負荷表示を表示するデータをアサートさせる、よう構成されたことを特徴とするアダプタエージェントと、
含むことを特徴とするアダプタ。
【請求項１２】
前記アダプタエージェントもまた、接続され、
前記各アダプタインタフェースに生じるデータトラフィックを監視し、前記各アダプタインタフェースでの消費された帯域幅表示を生成し、前記各アダプタインタフェースでの消費された帯域幅表示は、前記アダプタインタフェースの消費された帯域幅を表示するものであることを特徴とし、
前記各アダプタインタフェースでの利用可能な帯域幅表示を生成し、前記各アダプタインタフェースでの利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅を表示するものであることを特徴とし、
前記サーバエージェントからの要求に応じて、前記アダプタに、少なくとも１つの前記アダプタインタフェースに、
少なくとも１つの前記アダプタインタフェース過負荷表示、及び少なくとも１つの前記消費された帯域幅表示及び／又は少なくとも１つの前記利用可能な帯域幅表示
を表示するデータをアサートさせる、
よう構成されることを特徴とする請求項１１に記載のアダプタ。
【請求項１３】
前記アダプタエージェントもまた、接続され、生の過負荷表示値にフィルターを掛け、フィルターを掛けた過負荷値を生成するよう構成され、前記生の過負荷表示値が判断された過負荷を示すものであり、フィルターを掛けた過負荷値は、前記判断された過負荷が持続するものかどうかを示すものであり、前記サーバエージェントからの要求に応じて、前記アダプタに、少なくとも１つの前記アダプタインタフェースに、フィルターを掛けた過負荷値を表示するデータをアサートさせることを特徴とする請求項１２に記載のアダプタ。
【請求項１４】
前記アダプタエージェントもまた、接続され、付加的データを処理するために前記アダプタの容量を推定するよう構成されることを特徴とする請求項１１に記載のアダプタ。
【請求項１５】
前記アダプタエージェントは、接続され、前記各アダプタインタフェースでの利用可能な帯域幅表示を生成するよう構成され、前記各アダプタインタフェースでの利用可能な帯域幅表示は、
前記アダプタインタフェースの１つでの少なくとも１つの前記サーバエージェントから受信した計画した付加的帯域幅の使用値をエージングし、それにより、前記アダプタインタフェースでのエージングした計画した帯域幅の使用値を生成し、前記各アダプタインタフェースについて、前記アダプタインタフェースでの前記各エージングした計画した帯域幅の使用値の合計を維持することを含む、
前記アダプタインタフェースの利用可能な帯域幅を表示することを特徴とする請求項１１に記載のアダプタ。
【請求項１６】
前記アダプタエージェントは、接続され、前記アダプタインタフェースの全ての利用可能な帯域幅、前記アダプタインタフェースの消費された帯域幅の少なくとも１つの計測値、付加的データを処理するためのアダプタの容量の表示、及び前記アダプタインタフェースでの前記各エージングした計画した帯域幅の使用値の前記アダプタインタフェースでの合計値から、前記各アダプタインタフェースでの利用可能な帯域幅表示を生成するよう構成されることを特徴とする請求項１５に記載のアダプタ。
【請求項１７】
少なくとも１つのサーバインタフェースによりコンバージドネットワークに接続された少なくとも１つのサーバを含むシステムで使用するよう構成された装置であって、前記サーバはサーバエージェントを含み、前記装置は、アダプタと一体化した記憶装置であり、
データ 記憶サブシステムと、
前記データ記憶サブシステムと接続されたアダプタサブシステムであって、前記アダプタサブシステムは、前記アダプタを組み込むことを特徴とする、アダプタサブシステムと、
を含み、前記アダプタサブシステムは、
前記アダプタサブシステムを前記ネットワークに接続し、それにより前記アダプタサブシステムを介して、前記データ記憶サブシステムを前記ネットワークに接続するよう構成された少なくとも１つのアダプタインタフェースと、
アダプタエージェントであって、前記アダプタエージェントは接続され、
前記アダプタエージェントが過負荷かどうかを判断し、前記各アダプタインタフェースでのアダプタインタフェース過負荷表示を生成し、前記各アダプタインタフェースでの前記アダプタインタフェース過負荷表示は前記アダプタインタフェースが過負荷であるかどうかを表示するものであり、
前記サーバエージェントからの要求に応じて、少なくとも１つの前記アダプタインタフェースに、少なくとも１つの前記アダプタインタフェース過負荷表示を前記アダプタサブシステムにアサートさせるよう構成されたことを特徴とする、アダプタエージェントと、
を具備することを特徴とする装置。
【請求項１８】
前記装置は、アダプタと一体化された記憶装置であり、前記アダプタサブシステムは、前記アダプタを組み込み、前記データ記憶サブシステムは、前記記憶装置を組み込むことを特徴とする請求項１７に記載の装置。
【請求項１９】
前記記憶装置は、ディスクドライブであることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記装置は、アダプタと一体化されたＪＢＯＤであり、前記アダプタサブシステムは、前記アダプタを組み込み、前記データ記憶サブシステムは、前記ＪＢＯＤを組み込み、前記ＪＢＯＤは、一組のディスクドライブを含むことを特徴とする請求項１７に記載の装置。
【請求項２１】
前記データ記憶サブシステムは、少なくとも２つのディスクドライブを含むことを特徴とする請求項１７に記載の装置。
【請求項２２】
前記アダプタエージェントもまた、接続され、
前記各アダプタインタフェースで生じるデータトラフィックを監視し、前記各アダプタインタフェースでの消費された帯域幅表示を生成し、前記各アダプタインタフェースでの消費された前記帯域幅表示は、前記アダプタインタフェースでの利用可能な帯域幅を表示することを特徴とし、
前記各アダプタインタフェースでの利用可能な帯域幅表示を生成し、前記各アダプタインタフェースでの前記利用可能な帯域幅表示は、前記アダプタインタフェースでの利用可能な帯域幅を表示することを特徴とし、
前記サーバエージェントからの要求に応じて、少なくとも１つの前記アダプタインタフェースに、
少なくとも１つの前記アダプタインタフェース過負荷表示、少なくとも１つの前記消費された帯域幅表示及び／又は少なくとも１つの前記利用可能な帯域幅表示を示すデータを、前記アダプタサブシステムにアサートさせる、
よう構成されることを特徴とする請求項１７に記載の装置。
【請求項２３】
前記アダプタエージェントもまた、接続され、生の過負荷表示値にフィルターを掛け、フィルターを掛けた過負荷値を生成するよう構成され、前記生の過負荷表示値は、測定された過負荷を表示し、前記フィルターを掛けた過負荷値は、前記測定された過負荷が不変か否かを表示し、少なくとも１つの前記アダプタインタフェース過負荷表示は、前記フィルターを掛けた過負荷値を表示することを特徴とする請求項２２に記載の装置。
【請求項２４】
前記アダプタエージェントもまた、接続され、付加的データを処理するために前記アダプタサブシステムの容量を推定するよう構成されることを特徴とする請求項１７に記載の装置。
【請求項２５】
前記アダプタエージェントは、接続され、前記各アダプタインタフェースでの利用可能な帯域幅表示を生成するよう構成され、前記各アダプタインタフェースでの前記利用可能な前記帯域幅表示は、前記アダプタインタフェースでの利用可能な帯域幅の表示であり、
１つの前記アダプタインタフェースでの少なくとも１つの前記サーバエージェントから受信した計画した各付加的帯域幅使用値をエージングし、それにより、前記アダプタインタフェースでのエージングした計画した帯域幅使用値を生成すること、そして、前記各アダプタインタフェースでの、前記アダプタインタフェースでの前記エージングした計画した帯域幅使用値の合計を保持することを含むことを特徴とする請求項１７に記載の装置。
【請求項２６】
前記アダプタエージェントは、接続され、前記アダプタインタフェースの全利用可能な帯域幅、前記アダプタインタフェースの消費された帯域幅の少なくとも１つの計測値、付加的データを処理するためのアダプタサブシステムの容量の表示、及び前記アダプタインタフェースでの前記各エージングした計画した帯域幅使用値の合計から、前記各アダプタインタフェースでの前記利用可能な帯域幅表示を生成するよう構成されることを特徴とする請求項２５に記載の装置。
【請求項２７】
少なくとも１つの記憶装置及び前記記憶装置に接続された少なくとも１つのアダプタを含むシステムにおいて使用するよう構成されたサーバであって、前記アダプタは、コンバージドネットワークに接続された少なくとも１つのアダプタインタフェースを有し、前記アダプタは前記アダプタインタフェースを介して前記記憶装置をネットワークに接続し、そして、前記アダプタはアダプタエージェントを含むよう構成され、前記サーバは、
サーバエージェントを含むよう構成された処理サブシステムと、
前記ネットワークに接続されるよう構成された少なくとも１つのサーバインタフェースと、を具備し、前記処理サブシステムは、前記サーバインタフェースに接続され、前記サーバインタフェースが前記ネットワークに接続されたとき、前記サーバインタフェースを介して前記ネットワークにアクセスするよう構成され、前記サーバエージェントは、接続され、
前記処理サブシステムに、前記アダプタエージェントへの要求をアサートさせ、前記要求に応答して前記アダプタエージェントにより前記サーバインタフェースに提供された少なくとも１つのアダプタインタフェース過負荷表示を特定させ、
前記サーバインタフェースを含み、前記アダプタを介して前記記憶装置に前記サーバがアクセスする経路について、前記アダプタインタフェース過負荷表示を用いる方法で、前記経路が過負荷か否かを判断するよう構成されている、
ことを特徴とするサーバ。
【請求項２８】
前記サーバエージェントは、前記経路が過負荷となっているとの判断に対して、
前記サーバによるその後の使用のために、前記記憶装置への新たな経路を選択すべきかどうかを判断すること、及び
前記新たな経路を選択すべきとの判断に応じて、前記処理サブシステムに、前記サーバと前記記憶装置との間の記憶データトラフィックを前記新たな経路に変更させること、
を含む応答を行うよう構成されることを特徴とする請求項２７に記載のサーバ。
【請求項２９】
前記サーバエージェントは、接続され、前記処理サブシステムに、前記サーバと前記記憶装置との間の記憶データトラフィックの経路を新たな経路に変更させた後、新たな経路への変化の影響が前記アダプタエージェントの各アダプタインタフェースのトラフィックの前記各アダプタエージェントにより継続中の監視の結果に反映されるようになるまで十分な時間間隔だけ待機し、そして、待機した後、前記新たな経路以外の少なくとも１つの経路を含む、前記記憶装置への経路の評価を開始するよう構成されることを特徴とする請求項２８に記載のサーバ。
【請求項３０】
前記待機のための時間間隔は、所定の最大待機時間及び最少待機時間の制約を受けつつ、選択された間隔の標準変量として選択されたランダムな数値に決定されることを特徴とする請求項２９に記載のサーバ。
【請求項３１】
前記システムは、前記記憶装置を前記ネットワークに接続させるよう構成された第１のアダプタと、前記記憶装置を前記ネットワークに接続させるよう構成された第２のアダプタと、を含み、前記第１のアダプタは少なくとも１つの第１のアダプタインタフェースを含み、前記第２のアダプタは少なくとも１つの第２のアダプタインタフェースを含み、前記第１のアダプタは第１のアダプタエージェントを含み、前記第２のアダプタは第２のアダプタエージェントを含み、前記サーバエージェントは、接続され、
前記各サーバインタフェースに生じるデータトラフィックを監視し、前記各サーバインタフェースで消費された帯域幅を判断し、前記各サーバインタフェースで消費された帯域幅から、前記各サーバインタフェースで利用可能な帯域幅を判断し、そして、
前記処理サブシステムから前記第１のアダプタへアサートされた要求に応答して前記第１のアダプタエージェントにより前記サーバインタフェースに提供された少なくとも１つの利用可能な帯域幅表示を特定し、前記各利用可能な帯域幅表示は、１つの前記第１のアダプタインタフェースの利用可能な帯域幅の表示であることを特徴とし、そして、前記処理サブシステムから前記第２のアダプタへアサートされた要求に応答して前記第２のアダプタエージェントにより前記サーバインタフェースに提供された少なくとも１つの付加的な利用可能な帯域幅表示を特定し、前記各利用可能な帯域幅表示は、１つの前記第２のアダプタインタフェースの利用可能な帯域幅の表示であることを特徴とし、そして、
前記サーバインタフェース及び前記第２のアダプタの前記第２のアダプタインタフェースの１つを、前記２のサーバインタフェース上の利用可能な最小限の帯域幅及び前記第２のアダプタインタフェースの利用可能な帯域幅として判断する、よう構成されることを特徴とする請求項２７に記載のサーバ。
【請求項３２】
前記アダプタエージェントは、接続され、前記アダプタの前記各アダプタインタフェースでの利用可能な帯域幅表示を生成するよう構成され、前記サーバエージェントは、接続され、
前記要求に応じて前記アダプタエージェントにより、前記サーバインタフェースに提供された少なくとも１つの前記利用可能な帯域幅表示を特定し、
前記利用可能な帯域幅表示を用いる方法で、前記サーバインタフェース及び少なくとも１つの前記アダプタインタフェースを含む経路を評価するよう構成されることを特徴とする請求項２７に記載のサーバ。
【請求項３３】
コンバージドネットワークを介してサーバからアダプタに要求をアサートするステップであって、前記サーバは、サーバエージェントを含むよう構成され、前記アダプタは、アダプタエージェントを含むよう構成されることを特徴とするステップと、
前記要求に応じて前記アダプタエージェントにより、前記サーバのサーバインタフェースに提供される少なくとも１つのアダプタインタフェース過負荷表示を特定するために前記サーバエージェントを採用するステップと、
前記サーバインタフェースを含み、前記アダプタを介して少なくとも１つの記憶装置にサーバがアクセスするための経路に対して、前記アダプタインタフェース過負荷表示を使う方法で、前記経路が過負荷かどうかを判断するために前記サーバエージェントを採用するステップと、
を具備する方法。
【請求項３４】
次の使用のために前記記憶装置に新たな経路を選択するかどうかを判断するステップと、
前記新たな経路を選択すべきとの判断があれば、前記サーバに、前記サーバと前記記憶装置との間の記憶データトラフィックの経路を前記新たな経路に変更させるステップと、
を有する、前記経路が過負荷であるとの判断に応答して前記サーバエージェントを採用するステップを含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
（ａ）前記サーバと前記記憶装置との間の記憶データトラフィックの経路を前記新たな経路に変更させるステップの後、新たな経路への変化の影響が前記各アダプタエージェントの各アダプタインタフェースのトラフィックの前記ネットワークに接続されたアダプタのアダプタエージェントにより継続中の監視の結果に反映されるようになるまで十分な時間間隔だけ待機するステップと、
（ｂ）ステップ（ｂ）の後、前記新たな経路とは別の少なくとも１つの経路を含む、前記記憶装置への経路を評価するために、サーバエージェントを採用するステップと、
を含むことを特徴とする請求項３４に記載の方法。
【請求項３６】
前記待機のための時間間隔は、所定の最大待機時間及び最少待機時間の制約を受けつつ、選択された間隔の標準変量として選択されたランダムな数値に決定されることを特徴とする請求項請求項３５に記載の方法。
【請求項３７】
前記各サーバインタフェースの消費された帯域幅を判断し、前記各サーバインタフェースの消費された前記帯域幅から、前記各サーバインタフェースの利用可能な帯域幅を判断するために、前記サーバの各サーバインタフェースで生じるデータトラフィックを監視するために前記サーバエージェントを採用するステップと、
前記サーバから前記第１のアダプタへアサートされた要求に応答して、第１のアダプタエージェントにより前記サーバに提供された、前記ネットワークに接続された第１のアダプタの少なくとも１つの利用可能な帯域幅表示を特定するためにであって、前記各利用可能な帯域幅表示は、前記第１のアダプタのアダプタインタフェースの利用可能な帯域幅を表示することを特徴とし、及び、前記サーバから前記第２のアダプタへアサートされた要求に応答して、前記第２のアダプタエージェントにより前記サーバに提供された、前記ネットワークに接続された第２のアダプタの少なくとも１つの付加的な利用可能な帯域幅表示を特定するためにであって、前記各付加的な利用可能な帯域幅表示は前記第２のアダプタのアダプタインタフェースの利用可能な帯域幅を表示することを特徴とする、前記サーバエージェントを採用するステップと、
前記サーバインタフェースの前記利用可能な帯域幅の最小値及び前記第２のアダプタのアダプタインタフェースの前記利用可能な帯域幅として、前記第２のアダプタの１つの前記サーバインタフェース及びアダプタインタフェースを含む経路の利用可能な帯域幅を判断するために、サーバエージェントを採用するステップと、
をさらに具備する請求項３３に記載の方法。
【請求項３８】
前記アダプタの各アダプタインタフェースに生じたデータトラフィックを監視し、前記各アダプタインタフェースでの消費された帯域幅表示を生成するために前記アダプタエージェントを採用するステップであって、前記各アダプタインタフェースでの前記消費された帯域幅表示は、前記アダプタインタフェースの消費された帯域幅を示すことを特徴とするステップと、
前記アダプタの前記各アダプタインタフェースでの利用可能な帯域幅表示を生成するために前記アダプタエージェントを採用するステップであって、前記各アダプタインタフェースでの前記利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅を示すことを特徴とするステップと、
前記サーバエージェントに少なくとも１つの前記アダプタインタフェース過負荷表示、及び、少なくとも１つの前記消費された帯域幅表示及び／又は少なくとも１つの前記利用可能な帯域幅表示を前記アダプタに報告させるために、前記アダプタエージェントを採用するステップと、
をさらに具備する請求項３３に記載の方法。
【請求項３９】
生の過負荷表示値にフィルターを掛け、フィルターを掛けた過負荷値を生成するために、前記アダプタエージェントを採用するステップであって、前記生の過負荷表示値は、測定された過負荷を表示し、前記フィルターを掛けた過負荷値は、前記測定された過負荷が不変か否かを表示し、少なくとも１つの前記アダプタインタフェース過負荷表示は、前記フィルターを掛けた過負荷値を表示することを特徴とするステップをさらに具備する請求項３８に記載の方法。
【請求項４０】
前記アダプタの各アダプタインタフェースでの利用可能な帯域幅表示を生成するために前記アダプタエージェントを採用するステップであって、前記各アダプタインタフェースでの前記利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅の表示であり、
１つの前記アダプタインタフェースでの少なくとも１つの前記サーバエージェントから受信した計画した各付加的帯域幅使用値をエージングし、それにより、前記アダプタインタフェースでのエージングした計画した帯域幅使用値を生成すること、そして、前記各アダプタインタフェースでの、前記アダプタインタフェースでの前記エージングした計画した帯域幅使用値の合計を保持することを含むことを特徴とするステップをさらに具備する請求項３３に記載の方法。
【請求項４１】
前記アダプタインタフェースの全利用可能な帯域幅、前記アダプタインタフェースの消費された帯域幅の少なくとも１つの計測値、付加的データを処理するためのアダプタの容量の表示、及び前記アダプタインタフェースでの前記各エージングした計画した帯域幅使用値の合計から、前記アダプタの前記各アダプタインタフェースでの利用可能な帯域幅表示生成するために、前記アダプタエージェントを採用するステップをさらに具備する請求項４０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された計算装置がアダプタを介してネットワークに接続された記憶装置にアクセスする方法及びシステム、並びにこのような方法及びシステムを実行するための装置に関する。いくつかの実施形態では、本発明は、ネットワークに接続された計算装置（サーバ）が、アダプタによりネットワークに接続された記憶装置にアクセスするようなシステムにおいて記憶データトラフィックを（例えば、最適化により）均衡化することに関する。
【背景技術】
【０００２】
これまで、データセンターは一般に、まったく別の２つのインフラ基盤、すなわち、（一般にイーサネット（登録商標）を基にした）データ通信、及び、記憶装置アクセスのための別の「記憶」ネットワークにより実施していた。一般的な記憶ネットワークは、従来のファイバーチャネルプロトコルにより実施していた。「データ通信ネットワーク」及び「データネットワーク」の表現は、記憶ネットワークは本来「記憶データ」トラフィック（ここで、「記憶データ」は、少なくとも１つの記憶装置から取り出すかまたはこの記憶装置に保存するデータを意味する）を支えるための構造でありそのために採用されている点、及び、データネットワークは他のデータトラフィック（すなわち、記憶データではないデータ）を支えるための構造でありそのために採用されている点で、「記憶ネットワーク」のクラスから区別されるクラスでのネットワークを意味する類義語として用いられる。
【０００３】
しかしながら、（例えば、データネットワークと記憶ネットワークを別にした）複数ネットワークタイプの実施は、データセンターを稼働させるための資本コスト及び運転コストを増大させるので好ましくない。
【０００４】
最近、多くのデータセンターは、記憶データトラフィック及び他の（記憶データトラフィックではない）トラフィックの両方を通過する単一ネットワークの使用について調査を始めている（使用を開始しているデータセンターもある）。そのような単一ネットワークをここでは、「コンバージドネットワーク」と称することとする。コンバージドネットワークの一例は、ネットワークに接続されたサーバと、ネットワークに接続された記憶装置との間ですべてのトラフィックが送信されるイーサネットベースのネットワークである。残念ながら、コンバージドネットワークを介して送信される２つのタイプのネットワークトラフィック（記憶データトラフィックと他のデータトラフィック）は異なる特性を有する。
【０００５】
データネットワーク（例えば、インターネットプロトコルと同時にイーサネットを実装するようなネットワーク）は、記憶データトラフィック以外のトラフィックを通信するために、管理しないネットワーク又は最低限の管理しかしないネットワークとして実装することができる（これが通常である）。これにより、データネットワークにコンピュータや他のハードウェアを追加したり取り除いたりすることが簡単になる。例えば、ＤＨＣＰプロトコルにより、一般に、データネットワーク上で動作させるのに必要な情報のすべてを新しい装置に（人的介入なしに）提供することができる。
【０００６】
しかしながら、ネットワークループは、データネットワークに深刻な問題（すなわち、確実に失われるパケットの転送を続ける）を生じさせることがある。このため、データネットワークはしばしば、データネットワーク上の２つの装置間での経路を唯一つのみ決定するためのプロトコル（例えば、スパニングツリープロトコル）を導入する。余分なデータ経路がデータネットワーク上に明示的に設定されることはめったにない。さらに、データネットワーク上のトラフィックは比較的予測不可能であり、アプリケーションは、通常、どのような帯域幅がデータネットワーク上で利用可能であっても許容できるよう記述される。
【０００７】
一方、記憶ネットワークは通常管理されているネットワークである。ネットワーク管理者は、どのコンピュータが記憶ネットワーク上のどの記憶装置と通信することができるかを手動で割りつける（すなわち、通常、自己構成機能を持たない）。（データネットワークとは別に隔離されている記憶ネットワークにおいて）現段階ではネットワーク接続を条件が変わったときでも対応可能にするような進歩は、ほとんどない。さらに、低レベルのデータ記憶装置に一般に必要とされる高レベルの利用可能性及び障害に対する耐性を提供するために、（記憶ネットワークに接続された）記憶装置とコンピュータとの間に、完全な余分な経路を作る。
【０００８】
記憶ネットワーク（及び記憶データトラフィック）とデータネットワーク（及び記憶データトラフィック以外のトラフィック）との間に差異があるため、コンバージドネットワーク中で記憶データトラフィックと他のトラフィックとを統合すると、ネットワークの利用に不均衡が生じる可能性があり、これによりデータセンター中のアプリケーションの全体的な性能を損なうことがある。本願発明の一般的な実施形態では、コンバージドネットワークの利用におけるそのような不均衡に対処し、例えば、データセンターのアプリケーションが最大の性能を発揮できるようにすることを目標とする。
【０００９】
以下の定義は、特許請求の範囲を含む、この明細書全体に適用される。
【００１０】
「記憶装置」は、データを記憶させ、取り出すよう構成された装置を意味する（例えば、ディスクドライブ）。一般に、論理ブロックアドレス（ＬＢＡ）及び複数のブロックを用いて記憶装置にアクセスする。論理ブロックは、一定の固定サイズの記憶容量（例えば、５１２バイト又は４０９６バイト）の総体的な塊である。伝統的な回転式のディスクドライブはこの「記憶装置」の例である。
【００１１】
「サーバ」は、データ（例えば、ファイル及び／又はアプリケーション）を記憶させ、取り出すためにネットワーク（コンバージドネットワーク）を介して記憶装置にアクセスしこれを使用するよう構成された計算装置を意味する。
【００１２】
「アダプタ」は、記憶装置、又は２以上の記憶装置からなる記憶システム（例えば、ＪＢＯＤ）をネットワーク（例えば、コンバージドネットワーク）に接続するよう構成された装置を意味する。本発明の一般的な実施形態において、各記憶装置は、記憶装置に記憶されたデータへのアクセスが故障に対する耐性を有するようにするために、通常は２以上のアダプタを介してサーバにアクセス可能となっている。
【００１３】
「インタフェース」は、装置（サーバ又はアダプタ）をネットワーク（例えば、コンバージドネットワーク）に接続させるためのサーバ又はアダプタの構成要素を意味する。インタフェースの例として物理的装置（すなわち、ネットワークインタフェースコントローラ（ＮＩＣ））、及び、ソフトウェア的に定義される（リンク集合体に関して）複数のＮＩＣのラッパーがあげられる。本発明の一般的な実施形態において、インタフェースは、コンバージドネットワーク中にインターネットプロトコル（ＩＰ）アドレスを有するハードウェア又はソフトウェア要素である。
【００１４】
「エージェント」は、ネットワーク（例えば、コンバージドネットワーク）上の記憶データトラフィックの交換（又は交換の準備）をするためサーバ（又はアダプタ）が動作している間、サーバ（又はアダプタ）上で実行するよう構成された、サーバ（又はアダプタ）のソフトウェア又はハードウェア構成要素又はサブシステムを意味する。本発明のいくつかの実施形態では、コンバージドネットワーク上のすべてのサーバ及びアダプタがエージェントを有するわけではない。しかしながら、関係のないサーバ及び／又はアダプタ（エージェントなしのサーバ及び／又はアダプタ）のネットワークへの接続により、（本発明の実施形態により）達成することのできる、均衡の程度を制限する可能性がある。
【００１５】
「データ経路」は、アダプタ及びサーバの各々にある１つのインタフェースを用いて、アダプタを介して記憶装置とサーバとの間でデータが送信される経路を意味する（すなわち、アダプタインタフェースを通り、そしてサーバインタフェースを通る、記憶装置からサーバへの経路、又は、サーバインタフェース、そしてアダプタインタフェースを通る、サーバから記憶装置への経路）。ＩＰネットワークにおいて、データ経路は一般に、サーバのインタフェースのＩＰアドレスとアダプタのインタフェースのＩＰアドレスとの組み合わせにより表示され、或いは、アダプタで用いられるポート番号でも表示される。しかしながら、リンクの集合体の場合において、すべての経路は、１つのＩＰアドレスに割り当てられたインタフェースのグループ内の経路に用いられる実際のインタフェースに依存することになる。
【００１６】
２以上の記憶装置からなる記憶システム（例えば、ＪＢＯＤ）が１つのアダプタに接続され、アダプタ及びサーバの両方がコンバージドネットワークに接続されているとき、我々は、サーバは（記憶システムの記憶装置にアクセスするために）、記憶システムの具体的な記憶装置（例えば、ＪＢＯＤの１つのディスクドライブ）及びサーバと記憶装置とのデータ経路を一般的に特定する（すなわち、使用するよう構成されている）ことを想定する。本願発明の一般的な実施形態によれば、データ経路は、ネットワーク上の記憶データトラフィックの均衡をとるために時々変更されることがある。本願発明のいくつかの実施形態によれば、（サーバと記憶システムとの間の）データ経路は、ネットワーク上の記憶データトラフィックを均衡させるために時々変更されることがある（また、サーバにアクセスされる記憶システムの特定の装置のアダプタによる選択は、時々変更されることがあるが、このような変更は、必ずしも本発明により決定されるものではない）。
【００１７】
一般に、記憶データトラフィックがコンバージドネットワーク上で他のデータトラフィックと統合されたとき、異なるタイプのトラフィックの特性が交りあうことになり、結果としてネットワークの全体的な帯域幅の非効率的な使用となり、データ通信トラフィック及び／又は記憶トラフィックの能力の制限となる。
【００１８】
例えば、最近のサーバコンピュータが２以上の１Ｇｂｐｓ又は１０Ｇｂｐｓネットワークインタフェースを有することは普通である（ここで、サーバがコンバージドネットワークに接続されることを表す意味において「インタフェース」の語を使う）。多くのこのようなサーバは、膨大な量のデータに絡んだ問題を解決するために、多数のサーバを同時に働かせることのできるソフトウェアパッケージ（例えば、Ｈａｄｏｏｐオープンソースソフトウェアパッケージ）を実行する。しかしながら、そのようなソフトウェア（例えば、Ｈａｄｏｏｐ）は、一般に、各サーバが一意的な名前とアドレスを有することを要求する。したがって、ソフトウェア（例えば、Ｈａｄｏｏｐ）を実行するサーバ間のデータ通信トラフィックは、一般に、各サーバで利用可能な２つ（又はそれ以上の）のネットワーク接続のうちの１つのみを用いる。
【００１９】
一方、記憶データトラフィックは、通常、どれかの構成要素が故障した場合でも作動可能にするため、サーバとディスクドライブとの間に通常余分な経路を有するよう構成される。このような余分な経路を、データ通信トラフィック（非記憶型トラフィック）によりネットワークインタフェースが多忙となるのを回避するために、記憶データトラフィック（例えば、ネットワークインタフェース間に広がった記憶データトラフィック）の経路を変更するのに用いることができる。しかしながら、この変更を実施する標準的な機構（例えば、多経路Ｉ／Ｏ又は「ＭＰＩＯ」方法）では、コンバージドネットワーク上の記憶データトラフィックのパフォーマンスに厳しく不利な条件を作り出す。具体的には、通常の記憶データ負荷分散機構は、ラウンドロビン方式ですべての利用可能なインタフェースに記憶命令を送信すること、又は（例えば、未処理命令の数、又は未処理バイトの数、又は他の方法で）各リンクでどれだけの作業が未処理になっているかの測定をおこない、「最も忙しくない」インタフェースに命令を送信することに基づく。これらの機構がサーバとディスクドライブとの間の記憶データトラフィックにおいて性能発揮に大きな不利益をもたらす理由は、最大性能を得るために、ディスクドライブで実行される命令は、ディスク上の連続的な位置に送られなければならないからである。命令が連続的な位置に送られない場合は、新しい位置にディスクドライブのリード／ライトヘッドを動かすために「シーク」操作が必要となる。そのようなシーク操作の各々は、全体的な性能を約１％以上下げている。従来の分散機構（ラウンドロビン又は「最も忙しくない」分散機構）は、しばしば次々と連続した命令がサーバからディスクドライブへの異なる経路を取るようにするので、ディスクにアクセスする一連の命令を実行するために必要なシークの数を増大させる。異なる経路とすることは、（各経路で他の操作を行うため）異なる処理時間と待ち時間を有することになり、ある順序で出された命令がしばしば異なる順序で実行されることになる。順序変更により、シークが必要となり、それにより全体的なデータ移送能力が減少する。これらの従来の分散機構は、Ｈａｄｏｏｐ記憶操作に適用する場合、記憶データトラフィックの全体的性能をおよそ７５％減少させる現象がみられる（すなわち、伝達することのできる記憶データの量が、ラウンドロビン又は最も忙しくない機構を用いないことが可能な場合の量の約２５％となる）。
【００２０】
「リンクアグリゲーション」として知られる従来の他の技術には、第１の装置をネットワークに接続するのに利用可能な複数のインタフェースを有する第１の装置（一般的に、サーバ）と、第２の装置をネットワークに接続するのに利用可能な複数のインタフェースを有する第２の装置（一般的に、もう一つのサーバ）との間や、これらの装置をネットワークに接続するのに利用可能なすべてのインタフェースの間で、しばしばトラフィックを分割するのに用いられる。リンクアグリゲーションによれば、一種の負荷均衡を行うため、第１の装置のインタフェースの１つと第２の装置のインタフェースの１つを（例えば、ランダム又は疑似乱数による方法で）新たに選択した後、各データ値の新たな流れ（すなわち、順序を狂わせて伝達されることのない新たな各データ値の列）が、１つの装置の選択されたインタフェースから、ネットワークを通じて、他の装置の選択されたインタフェースへ伝達される。これにより、（多くの流れにより平均化された）データ通信トラフィックがすべての利用可能なインタフェースを使うことができ、（１つのインタフェースが故障しない限り）各インタフェースで転送されたデータ量の間での大まかな均衡を維持することになる。
【００２１】
従来、記憶データをネットワークを介して伝送するためにリンクアグリゲーションを行うことは推奨されていない。しかしながら、サーバの複数インタフェースとアダプタの複数インタフェースとの間のコンバージドネットワークで記憶データトラフィックを均衡させる試みにおいて（従来推奨されていた方法に反して）リンクアグリゲーションの形式が用いられた場合でも、このようなリンクアグリゲーションは、コンバージドネットワーク中の記憶データトラフィックにおける顕著な不均衡を抑制しない。顕著な不均衡は、記憶トラフィックの障害に対する許容性を維持するために必要な設計上の判断の結果生じる。つまり、サーバから（少なくとも１つのアダプタを介して）各記憶装置への完全に余分な経路が必要になるということは、各記憶装置（又は、複数の記憶装置を具備する記憶サブシステム）が、それぞれ記憶装置（又は記憶サブシステム）をネットワークに接続する２つの完全に別々のネットワーク接続装置（すなわち、２つの別々のアダプタ）によりネットワークに接続されなければならないことを必要とする。そうでなければ、アダプタがただ１つだけという場合、アダプタの故障により記憶装置（又は、サブシステム）が利用できなくなってしまう。このようなアダプタの各々を別々の装置にしなければならないので、リンクアグリゲーションは、同じ記憶装置（又は、記憶サブシステム）に余分なデータ経路を提供する２つのアダプタ間の負荷を均衡させることはできず、又、１つのアダプタを通る記憶データトラフィックにおける、同じ記憶装置（又は、記憶サブシステム）に余分なデータ経路を提供する他のアダプタを通る記憶データトラフィックと比較して、顕著な不均衡を抑制することができない。アダプタが別々の装置なので、１つは、同じ記憶装置にアクセスする他のアダプタより忙しく、したがって遅くなることがある。一方、本発明の一般的な実施形態では、コンバージドネットワークにおいて、リンクアグリゲーションを使っている時でも、記憶データトラフィックの不均衡を緩和することができる（そして記憶トラフィックの顕著な不均衡を抑制する）。
【発明の概要】
【００２２】
ここで、システム（例えば、ネットワーク、又は、ネットワークに接続された装置、又は、ネットワークに接続することができる装置のネットワークインタフェース）の「帯域幅」なる用語は、システムの「消費された帯域幅」又はシステムの「利用可能な帯域幅」を意味する。ここで、システムの「消費された帯域幅」なる用語はシステムを通るデータレート（ビットレート）を意味する（例えば、システムでデータトラフィックが生じるレート、又は、ある時間間隔における、システムでデータトラフィックが生じるレートの平均又は統計的特徴付けを行ったレート）をいう。ここで、システムの「利用可能な全帯域幅」なる用語は、システムの可能な最大データレート（ビットレート）（すなわち、データトラフィックがシステムで生じることのある最大レート）を意味する。ここで、システムの「利用可能な帯域幅」とは、システムの利用可能な全帯域幅からシステムの消費された帯域幅をマイナスしたものを意味する。
【００２３】
いくつかの実施形態では、本発明は、コンバージドネットワークに接続された計算装置（ここでは「サーバ」と称される）が（アダプタにより）前記ネットワークに接続された記憶装置にアクセスするシステムにおいて、記憶データトラフィックを均衡させる方法（例えば、記憶データトラフィックを最適化する試み）である。前記サーバに組み込まれたひと組のエージェント（「サーバエージェント」）及び前記アダプタに組み込まれたひと組のエージェント（「アダプタエージェント」）は、ネットワーク全体において、記憶及びデータトラフィックの不均衡を検出し応答するよう、及び記憶データトラフィックを経路変更して前記不均衡を減少させ、それにより（データ通信及び記憶トラフィックに関する）ネットワーク全体の性能を改善するよう構成される。他の実施形態にはこのような方法を実行するよう構成されたシステム、及びこのような方法を実施するよう、又はこのようなシステムに用いるよう構成された装置が含まれる。
【００２４】
一般的に、前記エージェント（サーバエージェント及びアダプタエージェント）は、（アダプタエージェントについては、いくつかの環境ではサーバエージェントからの要求又は通知に応答する点を除いて）自律的に動作し、中央のコンピュータ又はマネージャーが前記エージェントの操作を指揮することはない。一般的に、アダプタエージェントは、サーバエージェントと、（それらが組み込まれた）前記アダプタ及びサーバが少なくとも１つの記憶装置に記憶データ経路を提供するときに、直接相互作用のみをおこない、サーバエージェントは、他のサーバエージェントと直接通信することはなく、アダプタエージェントは他のアダプタエージェントと直接通信することはない。それにもかかわらず、本発明の一般的な実施形態では、全体的なネットワークトラフィックを均衡させ、動作の不安定化を避けるために、前記すべてのエージェントは前記他のエージェントの動作に反応し、および、影響を与えることができる。加えて、ネットワークに接続されたいずれかの装置が故障した場合、ネットワークに接続された生き残った装置が中断することなくネットワークトラフィックを均衡させる動作を続ける（そして、前記故障による不具合の調整を行う）。
【００２５】
一般的な実施形態によれば、コンバージドネットワークによる記憶データトラフィックは、（サーバ間、アダプタ間、又はアダプタから２以上のサーバまでではなく）アダプタとサーバとの間の各データ経路の終点間のみで行われる均衡を保つための通信によって、完全に分散化された方法で均衡が保たれている。関連物（すなわち、サーバインタフェース、サーバエージェント、アダプタインタフェース、又はアダプタエージェント）が故障したとしても、その関連物が構成員になっている経路にのみ影響を与える。一般に、サーバエージェントとアダプタエージェントとの間の１対１通信のみがある（例えば、サーバエージェントは２以上のアダプタエージェントとこの通信を共有しない）。一方、複数の記憶装置及び複数のサーバ間で記憶データトラフィックの均衡を保つ従来の方法は、この方法のように分散化されていない。
【００２６】
一般的な実施形態によれば、前記サーバエージェント及びアダプタエージェントは、前記ネットワークの状態についての情報を収集するよう動作し、（適切な状況で）サーバに記憶装置へのすべてのトラフィックを（前記サーバと前記記憶装置との間の）１つのデータ経路から、ネットワークの不均衡を低減するために選ばれた（前記サーバと前記記憶装置との間の）別のデータ経路へと変更させる。
【００２７】
本発明の方法の一般的な実施形態において、他の仕組み（例えば、管理又は割り当てのプロセス）が、各サーバ（及びそのエージェント）に、それらと各記憶装置（たとえばディスクドライブ）との間で用いられるデータ経路の全てを告知しており、サーバは記憶装置との間でデータを送受信できるように設けられていることを想定している。通常は更に、各サーバ（及び、そのエージェント）には、サーバと記憶装置との間で、（例えば、ネットワークの統計処理に基づいて、又は決定論的方法により判断されて（例えば、最下位のＩＰを有するアダプタインタフェースへの経路））、好ましいデータ経路が通知される。
【００２８】
一実施形態において、本発明は、少なくとも１つのサーバインタフェースを有する少なくとも１つのサーバを含み、前記サーバは、サーバインタフェースによりコンバージドネットワークに接続されるよう構成され、又、前記サーバは、サーバエージェントと、少なくとも１つの記憶装置と、前記記憶装置に接続されるよう構成され、少なくとも１つのアダプタインタフェース（及び、任意的に、少なくとも１つのアダプタインタフェースを有し前記ネットワークに前記記憶装置を接続するよう構成された、少なくとも１つの別のアダプタ）を有する少なくとも１つのアダプタと、を含むよう構成され、そして、前記アダプタは、前記アダプタインタフェースを介して前記ネットワークに前記記憶装置を接続させるよう構成され、前記アダプタはアダプタエージェントを含むよう構成される。
【００２９】
アダプタエージェントは、接続され、
前記アダプタインタフェースの各々について過負荷になっているか否かを判断し、前記アダプタインタフェースの各々についてアダプタインタフェース過負荷表示を生成し、ここで、前記アダプタインタフェースの各々について前記アダプタインタフェース過負荷表示は、前記アダプタインタフェースが過負荷になっているか否かを表示し、
少なくとも１つの前記アダプタインタフェース過負荷表示を、前記サーバエージェントからの要求に応じて（例えば、前記サーバエージェントからの要求に応じて、前記アダプタインタフェースの少なくとも１つに、少なくとも１つの前記アダプタインタフェース過負荷表示を示すデータを、前記アダプタにアサートさせることを）、前記サーバエージェントに報告するよう、構成される。
【００３０】
サーバエージェントは、接続され、
前記サーバに、前記アダプタエージェントへの要求をアサートさせ、前記要求に応答して前記アダプタエージェントによりアサートされた少なくとも１つのアダプタインタフェース過負荷表示を特定させ、
前記サーバインタフェースを含む経路であり、前記アダプタを介して前記記憶装置に前記サーバがアクセスする経路について、前記アダプタインタフェース過負荷表示を用いる方法で、前記経路が過負荷か否かを判断するよう構成される。
【００３１】
いくつかの実施形態では、前記サーバエージェントは、接続され、
次の使用のために前記記憶装置への新たな経路を選択すべきか否かを判断すること、及び、
新たな経路が選択すべきとの判断により、前記サーバに前記サーバと前記記憶装置の間の記憶データトラフィックの経路を変更させること、
を含むステップにより前記経路が過負荷であることの判断に応じるよう構成される。好ましくは、前記サーバエージェントは、接続され、前記サーバに、前記サーバと前記記憶装置の間の記憶データトラフィックの経路を新たな経路に変更させた後、新たな経路への変化の影響が前記アダプタエージェントの各アダプタインタフェースのトラフィックの前記各アダプタエージェントにより継続中の監視の結果に反映されるようになるまで十分な時間間隔だけ待機し、そして、待機した後、前記新たな経路以外の少なくとも１つの経路を含む、前記記憶装置への経路の評価（例えば、再評価）を開始するよう構成される。好ましい実施形態では、前記待機のための時間間隔は、所定の最大待機時間及び最少待機時間の制約を受けつつ、選択された間隔の標準変量として選択されたランダムな数値（例えば、１０秒）に決定される。
【００３２】
いくつかの実施形態では、前記システムは、前記記憶装置を前記ネットワークに接続させるよう構成された第１のアダプタと、前記記憶装置を前記ネットワークに接続させるよう構成された第２のアダプタと、（随意的に、前記記憶装置を前記ネットワークに接続させるよう構成された少なくとも１つの他のアダプタと）を含み、前記第１のアダプタは少なくとも１つの第１のアダプタインタフェースを含み、前記第２のアダプタは少なくとも１つの第２のアダプタインタフェースを含み、前記第１のアダプタは第１のアダプタエージェントを含み、前記第２のアダプタは第２のアダプタエージェントを含み、前記サーバエージェントは、接続され、
前記サーバインタフェースの各々に生じるデータトラフィック（例えば、受信トラフィック及び送信トラフィック）を監視し、前記サーバインタフェースの各々で消費された帯域幅を判断し、前記サーバインタフェースの各々で消費された帯域幅から、前記サーバインタフェースの各々で利用可能な帯域幅を判断し、そして、
前記サーバから前記第１のアダプタへアサートされた要求に応答して前記第１のアダプタエージェントにより前記サーバへ提供された少なくとも１つの利用可能な帯域幅表示を特定し、ここで、前記利用可能な帯域幅表示の各々は、１つの前記第１のアダプタインタフェースの利用可能な帯域幅の表示であることを特徴とし、そして、前記サーバから前記第２のアダプタへアサートされた要求に応答して前記第２のアダプタエージェントにより前記サーバへ提供された少なくとも１つの付加的な利用可能な帯域幅表示を特定し、ここで、前記利用可能な帯域幅表示の各々は、１つの前記第２のアダプタインタフェースの利用可能な帯域幅の表示であることを特徴とし、そして、
前記サーバインタフェース及び前記第２のアダプタの前記第２のアダプタインタフェースの１つを、前記最小限の前記サーバインタフェース上の前記利用可能な帯域幅及び前記１つの前記第２のアダプタインタフェースの利用可能な帯域幅として含む経路上の利用可能な帯域幅を判断する、よう構成される。
【００３３】
随意的に、アダプタエージェントもまた接続され、
前記アダプタインタフェースの各々に生じるデータトラフィック（例えば、受信トラフィック及び送信トラフィック）を監視し、前記アダプタインタフェースの各々での消費された帯域幅表示を生成し、ここで、前記アダプタインタフェースの各々での前記消費された帯域幅表示は、前記アダプタインタフェースの消費された帯域幅の表示であり、そして、
前記アダプタインタフェースの各々での利用可能な帯域幅表示を生成し、ここで、前記アダプタインタフェースでの前記利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅の表示であり、そして、
前記サーバエージェントからの要求に応答して、少なくとも１つの前記アダプタインタフェース過負荷表示、及び少なくとも１つの前記消費された帯域幅表示及び／又は少なくとも１つの前記利用可能な帯域幅表示を前記サーバエージェントに報告する（例えば、前記サーバエージェントからの要求に応答して、前記アダプタに、少なくとも１つの前記アダプタインタフェースに、少なくとも１つの前記アダプタインタフェース過負荷表示、及び少なくとも１つの前記消費された帯域幅表示及び／又は少なくとも１つの利用可能な帯域幅表示を表示するデータをアサートさせる）よう構成される。
【００３４】
随意的に、前記アダプタエージェントもまた、接続され、
前記アダプタの容量を推定し、付加的データ（例えば、前記アダプタの計算負荷容量）を処理し、
生の過負荷表示値にフィルターを掛け、フィルターを掛けた過負荷値を生成し、ここで、前記生の過負荷表示値は、測定された過負荷を表示し、前記フィルターを掛けた過負荷値は、前記測定された過負荷が不変か否かを表示し、少なくとも１つの前記アダプタインタフェース過負荷表示は、前記フィルターを掛けた過負荷値を表示する、よう構成される。
【００３５】
いくつかの実施形態では、前記アダプタエージェントは接続され、前記アダプタインタフェースの各々での利用可能な帯域幅表示を生成し、ここで、前記アダプタインタフェースの各々での利用可能な帯域幅表示は、前記アダプタインタフェースの利用可能な帯域幅を表示し、エージングにより前記アダプタインタフェースの各々への少なくとも１つの前記サーバエージェントから受信した計画した付加的帯域幅の使用値を含み、これにより、前記アダプタインタフェースへのエージングした計画した帯域幅の使用値を生成し、前記アダプタインタフェースの各々へ、前記アダプタインタフェースへの前記エージングした計画した帯域幅の使用値の各々の合計を保持する、よう構成される。いくつかのこのような実施形態において、前記アダプタエージェントは接続され、前記アダプタインタフェースの利用可能な全帯域幅から、前記アダプタインタフェースの各々への利用可能な帯域幅表示、前記アダプタインタフェースの消費された帯域幅の少なくとも１つの大きさ、付加的データを処理するための前記アダプタの容量、及び、前記アダプタインタフェースへの前記エージングした計画した帯域幅の前記アダプタインタフェースの前記合計を生成するよう構成される。
【００３６】
いくつかの実施形態では、各サーバは、前記各サーバのサーバエージェントを実行するソフトウェアでプログラムされ、各アダプタは、前記各アダプタのアダプタエージェントを実行するソフトウェアでプログラムされる。いくつかの実施形態では、少なくとも１つのサーバエージェント又は少なくとも１つのアダプタエージェントがハードウェアに組み込まれる（例えば、少なくとも１つの前記サーバは、前記サーバエージェントを実行するハードウェアサブシステムを含む）。
【００３７】
本発明の他の形態は、（本発明に係るアダプタエージェントの実施形態を実行するようプログラム又は構成された）アダプタ、このようなアダプタと一体化されたディスクドライブ（又は、その他の記憶装置）、このようなアダプタと一体化されたＪＢＯＤ（又は、その他の記憶装置システム）、（本発明に係るサーバエージェントの実施形態を実行するようプログラム又は構成された）サーバ、本発明に係るサーバエージェントの実施形態のハードウェアによる実施形態、及び、本発明に係るアダプタエージェントの実施形態のハードウェアによる実施形態である。
【００３８】
本発明の他の形態は、本発明に係るシステム、アダプタ、記憶装置、ＪＢＯＤ、サーバ、その他の装置の実施形態の操作において遂行する方法である。
【図面の簡単な説明】
【００３９】
【図１】本発明に係るシステムの実施形態のブロック図である。
【図２】本発明に係るシステムの他の実施形態のブロック図である。
【発明を実施するための形態】
【００４０】
実施形態の分野において、本発明は、少なくとも１つのサーバインタフェースによりコンバージドネットワークに接続された少なくとも１つのサーバと、少なくとも２つのアダプタにより前記ネットワークに接続された少なくとも１つの記憶装置とを含むシステムである。
【００４１】
このようなシステムの一例を図１を参照して記述する。図１のシステムにおいて、サーバ１及び３（及び随意的に他のサーバも）、及びアダプタ５、７、９、及び１１（及び随意的に他のアダプタも）の各々はコンバージドネットワーク２０に接続されている。記憶サブシステム１３は、アダプタ５及び７の各々により、ネットワーク２０に接続されている。記憶サブシステム１５は、アダプタ９及び１１の各々により、ネットワーク２０に接続されている。記憶サブシステム１３及び１５の各々は、ディスクドライブ又は記憶装置、或いは、複数の記憶装置からなる記憶サブシステム（例えば、ＪＢＯＤ）とすることができる。
【００４２】
サーバ１は、（サーバ１をネットワーク２０に接続するよう構成された）インタフェース２を含み、また、サーバ１は、アプリケーションサブシステム４を含むよう構成されている（例えば、アプリケーションサブシステム４を実行するソフトウェアでプログラムされている）。サーバ１もまた、サーバエージェントサブシステム６を含むよう構成されている（例えば、サーバエージェントサブシステム６を実行するソフトウェアでプログラムされている）。サーバ３は（サーバ３をネットワーク２０に接続するよう構成された）インタフェース８を含み、また、アプリケーションサブシステム１０を含むよう構成されている（例えば、アプリケーションサブシステム１０を実行するソフトウェアでプログラムされている）。サーバ３もまた、サーバエージェントサブシステム１２を含むよう構成されている（例えば、サーバエージェントサブシステム１２を実行するソフトウェアでプログラムされている）。
【００４３】
いくつかの実施形態では、インタフェース２及び８の各々は、物理的装置（即ち、ネットワークインタフェースコントローラ（「ＮＩＣ」））として実施されている。他の実施形態では、インタフェース２及び８の各々は、ソフトウェアで定義される複数のＮＩＣのラッパーとして実施されている。本発明の一般的な実施形態において、インタフェース２及び８の各々は、自分自身のインターネットプロトコル（ＩＰ）アドレスを有するハードウェア又はソフトウェア要素となる。
【００４４】
アダプタ５は、アダプタエージェントサブシステム１４を含むよう構成されている（例えば、アダプタエージェントサブシステム１４を実行するソフトウェアでプログラムされている）。アダプタ７は、アダプタエージェントサブシステム１６を含むよう構成されている（例えば、アダプタエージェントサブシステム１６を実行するソフトウェアでプログラムされている）。アダプタ９は、アダプタエージェントサブシステム１８を含むよう構成されている（例えば、アダプタエージェントサブシステム１８を実行するソフトウェアでプログラムされている）。アダプタ１１は、アダプタエージェントサブシステム２２を含むよう構成されている（例えば、アダプタエージェントサブシステム２２を実行するソフトウェアでプログラムされている）。
【００４５】
例示的実施形態において、ネットワーク２０はイーサネットネットワークであり、要素１、３、５、７、９、及び１１は、ｉＳＣＳＩ（インターネットスモールコンピュータシステムインタフェース）ネットワーキングプロトコルに従いネットワーク２０を介して通信するよう構成されている。ｉＳＣＳＩプロトコルは、ＬＡＮ、ＷＡＮ、又はインターネットを介してデータの送信を可能にする、通常のインターネットプロトコルに基づく記憶ネットワーキング標準である。この例示的実施形態において、要素１、３、５、７、９、及び１１（及びエージェント６、１２、１４、１６、１８、及び２２）は、サーバ１（又は３）と任意のアダプタ５、７、９、又は１１との間での通信を許容するが、各サーバ（１又は３）と各アダプタ（５、７、９、又は１１）との間では同時に１つの接続経路しかない単純な方法（多くの従来型アプリケーションよりはるかに単純な方法）でｉＳＣＳＩネットワークプロトコルを用いる。
【００４６】
前記例示的実施形態において、
アダプタ５は、ネットワーク２０を介してサーバ１又は３と通信するためのｉＳＣＳＩインタフェースを含む。本発明に基づくアダプタエージェント１４とサーバエージェント６及び１２との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ５もまた、サーバ１（又は３）とサブシステム１３との間の記憶データトラフィックを実行するために、よく知られたＳｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（「ＳＡＳ」）プロトコルに基づき記憶サブシステム１３と通信するよう構成されている。
【００４７】
アダプタ７は、ネットワーク２０を介してサーバ１又は３と通信するためのｉＳＣＳＩインタフェースを含む。本発明に基づくアダプタエージェント１６とサーバエージェント６及び１２との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ７もまた、サーバ１（又は３）とサブシステム１３との間の記憶データトラフィックを実行するために、ＳＡＳプロトコルに基づき記憶サブシステム１３と通信するよう構成されている。
【００４８】
アダプタ９は、ネットワーク２０を介してサーバ１又は３と通信するためのｉＳＣＳＩインタフェースを含む。本発明に基づくアダプタエージェント１８とサーバエージェント６及び１２との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ９もまた、サーバ１（又は３）とサブシステム１５との間の記憶データトラフィックを実行するために、ＳＡＳプロトコルに基づき記憶サブシステム１５と通信するよう構成されている。
【００４９】
アダプタ１１は、ネットワーク２０を介してサーバ１又は３と通信するためのｉＳＣＳＩインタフェースを含む。本発明に基づくアダプタエージェント２２とサーバエージェント６及び１２との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ１１もまた、サーバ１（又は３）とサブシステム１５との間の記憶データトラフィックを実行するために、ＳＡＳプロトコルに基づき記憶サブシステム１５と通信するよう構成されている。
【００５０】
サーバ１のアプリケーションサブシステム４は、ネットワーク２０に接続された記憶装置（例えば、サブシステム１３又は１５中の記憶装置）へのアクセスを開始するように構成されている。サーバ３のアプリケーションサブシステム１０は、ネットワーク２０に接続された記憶装置（例えば、サブシステム１３又は１５中の記憶装置）へのアクセスを開始するように構成されている。標準的な操作において、１つの要素（例えば、管理処理又は割り当て処理）は、サーバ１と、このサーバがアクセスし、記憶装置へ又は記憶装置からのデータの転送をおこなうことのできる各記憶装置との間で使うことのできるすべてのデータ経路を、アプリケーションサブシステム４及びエージェント６に通知しており、アプリケーションサブシステム４及びエージェント６には、サーバ１と記憶装置との間の（サーバ１からアクセスすることのできる各記憶装置への）好ましいデータ経路（例えば、ネットワークの静的解析に基づき、又は決定論的方法で決定された（例えば、最少ＩＰアドレスを有するアダプタインタフェースへの経路））が通知されている。同様に、標準的な操作において、１つの要素（例えば、管理処理又は割り当て処理）は、サーバ３と、このサーバがアクセスし、記憶装置へ又は記憶装置からのデータの転送をおこなうことのできる各記憶装置との間で使うことのできるすべてのデータ経路を、アプリケーションサブシステム１０及びエージェント１２に通知しており、アプリケーションサブシステム１０及びエージェント１２には、サーバ３と記憶装置との間の（サーバ３からアクセスすることのできる各記憶装置への）好ましいデータ経路が通知されている。
【００５１】
一般的な実施形態において、アダプタエージェントサブシステム１４、１６、１８、及び２２（ここでは、アダプタエージェント、又はエージェントとも称す）の各々、及び、サーバエージェントサブシステム６及び１２（ここでは、サーバエージェント、又はエージェントとも称す）の各々は、本発明に基づき（例えば、以下に記載した方法により）構成され、コンバージドネットワーク２０を介して記憶データトラフィック中の不均衡を検出しこの不均衡に応答し、不均衡を減少させるために記憶データトラフィックを変更し、それにより、（データ通信及び記憶トラフィックの両方に対して）全体的なネットワーク性能を向上させる。例えば、一般的な実施形態において、サーバエージェントサブシステム６は、本発明に基づき（例えば、以下に記載した方法により）構成され、ネットワーク２０を介してサーバ１と特定の（サブシステム１３又は１５中の）記憶装置との間の１つのデータ経路から、サーバ１と、同じ特定の記憶装置との間の他のデータ経路へと、記憶データトラフィックを変えることにより、記憶データトラフィック中の不均衡を（適切な環境で）検出しこの不均衡に応答する。
【００５２】
本発明によるシステムの他の実施形態が図２に示される。図２のシステムにおいて、サーバ２１（及び随意的に他のサーバ）及びアダプタ２５、２７、２９、及び３１（及び随意的に他のアダプタも）は、（図１のネットワーク２０と同一としてもよい）コンバージドネットワーク２０に接続される。記憶サブシステム２３は、アダプタ２５及び２７の各々によりネットワーク２０に接続されている。記憶サブシステム３３は、アダプタ２９及び３１の各々によりネットワーク２０に接続されている。記憶サブシステム２３及び３３の各々は、複数の記憶装置からなる記憶サブシステムである（例えば、各々が複数のディスクドライブからなるＪＢＯＤである）。
【００５３】
サーバ２１は、各々が自分自身のインターネットプロトコル（ＩＰ）アドレスを有するネットワークインタフェースコントローラ（ＮＩＣ）であり、そしてサーバ２１をネットワーク２０に接続するよう構成された、インタフェース２２及び２４を含む。サーバ２１は、アプリケーションサブシステム２６を含むよう（例えば、アプリケーションサブシステム２６を実行するソフトウェアでプログラムされるよう）構成され、また、サーバエージェントサブシステム２８を含むよう（例えば、サーバエージェントサブシステム２８を実行するソフトウェアでプログラムされるよう）構成される。
【００５４】
アダプタ２５は、各々が自分自身のインターネットプロトコル（ＩＰ）アドレスを有するネットワークインタフェースコントローラ（ＮＩＣ）であり、そしてアダプタ２５をネットワーク２０に接続するよう構成された、インタフェース３０及び３２を含み、アダプタ２５は、アダプタエージェントサブシステム３８を含むよう（例えば、アダプタエージェントサブシステム３８を実行するソフトウェアでプログラムされるよう）構成される。アダプタ２５もまた、各々が記憶サブシステム２３に接続されたポート３４及び３６を含み、（サブシステム２３内の）記憶装置を、ポート３４又は３６のいずれか、及びインタフェース３０又は３２のいずれか、を介して、ネットワーク２０に接続するよう構成される。
【００５５】
アダプタ２７は、各々が自分自身のインターネットプロトコル（ＩＰ）アドレスを有するネットワークインタフェースコントローラ（ＮＩＣ）であり、そしてアダプタ２７をネットワーク２０に接続するよう構成された、インタフェース４０及び４２を含み、アダプタ２７は、アダプタエージェントサブシステム４８を含むよう（例えば、アダプタエージェントサブシステム４８を実行するソフトウェアでプログラムされるよう）構成される。アダプタ２７もまた、各々が記憶サブシステム２３に接続されたポート４４及び４６を含み、（サブシステム２３内の）記憶装置を、ポート４４又は４６のいずれかと及びインタフェース４０又は４２のいずれかとを介して、ネットワーク２０に接続するよう構成される。
【００５６】
アダプタ２９は、各々が自分自身のインターネットプロトコル（ＩＰ）アドレスを有するネットワークインタフェースコントローラ（ＮＩＣ）であり、そしてアダプタ２９をネットワーク２０に接続するよう構成された、複数のインタフェース（不図示）を含み、アダプタ２９は、アダプタエージェントサブシステム５０を含むよう（例えば、アダプタエージェントサブシステム５０を実行するソフトウェアでプログラムされるよう）構成される。アダプタ２９もまた、各々が記憶サブシステム３３に接続された複数のポート（不図示）を含み、（サブシステム３３内の）記憶装置を、ポートのいずれか１つと及びＮＩＣのいずれか１つとを介して、ネットワーク２０に接続するよう構成される。
【００５７】
アダプタ３１は、各々が自分自身のインターネットプロトコル（ＩＰ）アドレスを有するネットワークインタフェースコントローラ（ＮＩＣ）であり、アダプタ３１をネットワーク２０に接続するよう構成された、複数のインタフェース（不図示）を含み、アダプタ３１は、アダプタエージェントサブシステム５２を含むよう（例えば、アダプタエージェントサブシステム５２を実行するソフトウェアでプログラムされるよう）構成される。アダプタ３１もまた、各々が記憶サブシステム３３に接続された複数のポート（不図示）を含み、（サブシステム３３内の）記憶装置を、ポートのいずれか１つと及びＮＩＣのいずれか１つとを介して、ネットワーク２０に接続するよう構成される。
【００５８】
例示的実施形態において、ネットワーク２０はイーサネットネットワークであり、要素２１、２５、２７、２９、及び３１は、ｉＳＣＳＩ（インターネットスモールコンピュータシステムインタフェース）ネットワーキングプロトコルに従いネットワーク２０を介して通信するよう構成されている。この例示的実施形態において、要素２１、２５、２７、２９、及び３１（及びエージェント２８、３８、４８、５０、及び５２）は、サーバ２１と任意のアダプタ２５、２７、２９、又は３１との間での通信を許容するが、このサーバと各アダプタ（２５、２７、２９、又は３１）との間では同時に１つの接続経路しかない単純な方法（多くの従来型アプリケーションよりはるかに単純な方法）でｉＳＣＳＩネットワークプロトコルを用いる。
【００５９】
前記例示的実施形態において、
アダプタ２５のインタフェース３０及び３２は、ネットワーク２０を介してサーバ２１と通信するためのｉＳＣＳＩインタフェースである。本発明に基づくアダプタエージェント３８とサーバエージェント２８との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ２５もまた、サーバ２１とサブシステム２３との間の記憶データトラフィックを実行するために、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（「ＳＡＳ」）プロトコルに基づき、ポート３４又は３６のいずれかを介して記憶サブシステム２３と通信するよう構成されている。
【００６０】
アダプタ２７のインタフェース４０及び４２の各々は、ネットワーク２０を介してサーバ２１と通信するためのｉＳＣＳＩインタフェースである。本発明に基づくアダプタエージェント４８とサーバエージェント２８との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ２７もまた、サーバ２１とサブシステム２３との間の記憶データトラフィックを実行するために、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（「ＳＡＳ」）プロトコルに基づき、ポート４４又は４６のいずれかを介して記憶サブシステム２３と通信するよう構成されている。
【００６１】
アダプタ２９は、ネットワーク２０を介してサーバ２１と通信するためのｉＳＣＳＩインタフェースを含む。本発明に基づくアダプタエージェント５０とサーバエージェント２８との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ２９もまた、サーバ２１とサブシステム３３との間の記憶データトラフィックを実行するために、ＳＡＳプロトコルに基づき、記憶サブシステム３３と通信するよう構成されている。
【００６２】
アダプタ３１は、ネットワーク２０を介してサーバ２１と通信するためのｉＳＣＳＩインタフェースを含む。本発明に基づくアダプタエージェント５２とサーバエージェント２８との間の通信は、このｉＳＣＳＩインタフェースにより実行される。アダプタ３１もまた、サーバ２１とサブシステム３３との間の記憶データトラフィックを実行するために、ＳＡＳプロトコルに基づき、記憶サブシステム３３と通信するよう構成されている。
【００６３】
サーバ２１のアプリケーションサブシステム２６は、ネットワーク２０に接続された記憶装置（例えば、サブシステム２３又は３３中の記憶装置）へのアクセスを開始するように構成されている。標準的な操作において、１つの要素（例えば、管理処理又は割り当て処理）は、サーバ２１と、このサーバがアクセスし記憶装置へ又は記憶装置からのデータの転送をおこなうことのできる各記憶装置との間で使うことのできるすべてのデータ経路を、アプリケーションサブシステム２６及びエージェント２８に通知しており、アプリケーションサブシステム２６及びエージェント２８には、サーバ２１と記憶装置との間の（サーバ２１からアクセスすることのできる各記憶装置への）好ましいデータ経路（例えば、ネットワークの静的解析に基づき、又は決定論的方法で決定された（例えば、最少ＩＰアドレスを有するアダプタインタフェースへの経路））が通知されている。
【００６４】
一般的な実施形態において、アダプタエージェントサブシステム３８、４８、５０、及び５２（ここでは、アダプタエージェント、又はエージェントとも称す）の各々、及び、サーバエージェントサブシステム２６（ここでは、サーバエージェント、又はエージェントとも称す）の各々は、本発明に基づき（例えば、以下に記載した方法により）構成され、コンバージドネットワーク２０を介して記憶データトラフィック中の不均衡を検出しこの不均衡に応答し、不均衡を減少させるために記憶データトラフィックを変更し、それにより、（データ通信及び記憶トラフィックの両方に対して）全体的なネットワーク性能を向上させる。例えば、一般的な実施形態において、サーバエージェント２６は、本発明に基づき（例えば、以下に記載した方法により）構成され、ネットワーク２０を介してサーバ２１と特定の（サブシステム２３又は３３中の）記憶装置との間の１つのデータ経路から、サーバ２１と、同じ特定の記憶装置との間の他のデータ経路へと、記憶データトラフィックを変えることにより、記憶データトラフィック中の不均衡を（適切な環境で）検出しこの不均衡に応答する。
【００６５】
各アクセス可能な（一般的に、各々はディスクドライブである）記憶装置へのサーバ２１の各イーサネットポート（ＮＩＣ２２又は２４）間に少なくとも４つのデータ経路（例えば、インタフェース３０、３２、４０、及び４２の各々を通る経路）があり、従って、サーバ２１と各アクセス可能な記憶装置との間に少なくとも８つのデータ経路がある。したがって、図２のシステムは、アクセスするための多くの余剰部分を有する記憶装置を示している。
【００６６】
一般的なデータセンター（例えば、図１のシステム又は図２のシステムで実施されるもの）において、管理サーバ（図１及び図２には不図示）は、データセンターを構成又は変更するのに使用するためにネットワークに接続される（例えば、図２のアプリケーションサブシステム２６及びエージェント２８に、サーバ２１と、データを記憶装置に送受信するためにネットワーク２０を介してアクセスすることのできる記憶装置との間で用いることができるすべてのデータ経路について情報伝達することを含む）。
【００６７】
本発明に係るサーバのいくつかの実施形態では、多数のサーバを（一般的には、大量のデータに関する）問題解決のために一体となって動作させるソフトウェアパッケージ  （例えば、ハドゥープオープンソースソフトウェアパッケージ）を走らせるようプログラムされている（例えば、サーバのアプリケーションサブシステムがプログラムされている）と考えられる。また、多数のこのようなサーバ（及び、各々が本発明に係るアダプタエージェントの実施形態を実施するよう構成された多数のアダプタ）は、単一の建物に配置することができるデータセンター（例えば、ハドゥープデータセンター）中のコンバージドネットワークに接続することができると考えられる。各アダプタは一般に、ＪＢＯＤのそれぞれのディスクドライブがこのアダプタを介してネットワークを通じてサーバからアクセス可能なように、ＪＢＯＤに接続される。各サーバに対して「ローカル」であると考えられるディスクドライブは、一般的に１つのＪＢＯＤ（又は２つ以上のＪＢＯＤ）に配置され、ＪＢＯＤは一般に１つのラックに搭載される（例えば、１つのサーバが処理するデータの３つのコピーを作り、１つのラック上の２つのディスクドライブに各々１つのコピーを記憶させ、別のラック上の１つのディスクドライブに３番目のコピーを記憶させることができる）。このような実施形態において、サーバは、一組の（例えば、大きな一組）のデータのうちの相異なるサブセットを（サーバの各々からアサートされた命令に応答して実行されるいくつかの処理により）並行して分散処理することが可能となるように、ネットワークを介して接続される。
【００６８】
さらに、本発明に係るシステム、サーバ、又はアダプタの一般的な実施形態において、各アダプタエージェント（例えば、図１のエージェント１４、１６、１８、又は２２、又は図２のエージェント３８、４８、５０、又は５２）及び各サーバエージェント（例えば、図１のエージェント６又は１２又は図２のエージェント２８）は、本発明の実施形態に従い動作させるためのソフトウェア（例えば、ソースコードが言語Ｐｙｔｈｏｎ及び／又は言語Ｃにより書かれたソフトウェア）を構成する処理用ハードウェアである。例えば、サーバのサーバエージェント及びアプリケーションサブシステムの両方（例えば、図１のサーバ１のエージェント６及びサブシステム４の両方、又は図１のサーバ３のエージェント１２及びサブシステム１０の両方）は、ソフトウェアで構成された処理ハードウェア（例えば、コンピュータ）で実行される。一般に、いずれのアプリケーション（例えば、図１のサーバ１のサブシステム４又はサーバ３のサブシステム１０、又は図２のサーバ２１のサブシステム２６により実行されるアプリケーション）も、本発明の一般的な実施形態の利点を獲得するために変更する必要はない。一般的に、各サーバエージェント及びアダプタエージェントは、アプリケーションに対して見えないように動作し、（データ通信操作のみを行うものを含む）関連するサーバ又はアダプタインタフェースを用いるアプリケーショは、本発明により実行される記憶データ負荷均衡による利益を享受する。
【００６９】
本発明の実施形態の区分に従い、本発明に係るシステムの実施形態を操作している間の、各アダプタエージェント及びサーバエージェントの操作について記載する。記載中「受信トラフィック」（又は「受信データ」）は、ネットワークからアダプタ（又はサーバ）へアサートされた（すなわち、提供された）データを意味し、「送信トラフィック」（又は「送信データ」）は、アダプタ（又はサーバ）からネットワークへアサートされた（すなわち、提供された）データを意味する。一般的に、１つのアダプタ（及び１つのサーバ）は、ネットワークに対して２つのインタフェースを有し、ネットワークに対して２以上のインタフェースを有することもできる。
【００７０】
いくつかの実施形態では、各アダプタエージェント（例えば、図１の各エージェント１４、１６、１８、及び２２、又は図２の各エージェント３８、４８、５０、及び５２）は、以下の操作のすべて又は一部を行うように構成される。
【００７１】
１．アダプタエージェントは、アダプタの各インタフェースで生じる受信トラフィックと送信トラフィック（例えば、１秒あたりのビット数単位で）監視し、各インタフェースにて消費された少なくとも１つの帯域幅の計測値を生成する。一般的に、各監視サンプルは、比較的短時間（例えば、数秒）で引き継がれ、アダプタエージェントは、受信データサンプルの流れ及び送信データサンプルの流れについて統計的特性を決定し、各インタフェースの消費された帯域幅（使われている帯域幅）の短期計測値と長期計測値とを別々に提供する。最新のＮＩＣは全二重（一般的に、アダプタのＮＩＣは同時に送信と受信を行うことができる）であり、各インタフェースの受信データ及び送信データについて独立した統計値が一般的に維持される。好ましい実施形態において、数値の指数平滑移動平均を決定するよく知られた方法（すなわち、この場合、固定期間の移動時間窓におけるインタフェースの受信トラフィックの指数平滑移動平均、又は固定期間の移動時間窓におけるインタフェースの送信トラフィックの指数平滑移動平均）を用いて、このような指数平滑移動平均の計算は安価なので、各インタフェースの受信トラフィックの統計的特性、及び各インタフェースの送信トラフィックの統計的特性を決定する。このような指数（重みつき）移動平均を決定する方法の例として、米国特許６，４３８，１４１（２００２年８月２０日発行）に図８を参照して記載されている。好ましい実施形態では、各短期移動平均は、２０秒間隔（窓）（又は実質的に２０秒に等しい間隔）での算術移動平均に近く、各長期移動平均は、６０秒間隔（窓）（又は実質的に６０秒に等しい間隔）での算術移動平均に近い。他の窓期間及び計算方法を本発明の他の実施形態に用いることが可能である。
【００７２】
２．アダプタエージェントは、付加的なデータを処理するためのアダプタの能力を計算（例えば、推定）する。好ましい実施形態では、これはアダプタの計算負荷能力である。付加的データの処理は、さらなる計算作業を伴うので、アダプタがその計算能力限度で動いている場合、たとえインタフェースが全部使われていないとしても、付加的記憶データトラフィックを処理することができないことがある。いくつかの実施形態では、アダプタエージェントは、付加的データの処理のためにアダプタの能力をその計算（例えば、推定）に用いることにより、記憶データトラフィックを扱っているアダプタで消費される他のリゾースの残りの能力を組み入れることができる。随意的に、アダプタエージェントもまた、アダプタインタフェースごとに利用可能な付加的帯域幅の限定的な推定量を決定するために（例えば、以下に説明するように、アダプタエージェントがインタフェースのために使用可能としてレポートするような帯域幅を限定するために）アダプタインタフェースごとに利用可能な付加的帯域幅の生の推定量にアダプタエージェントが乗算するための、アダプタでのディレーティング係数を決定することもできる。
【００７３】
３．サーバエージェントがアダプタエージェントに、（サーバエージェントが組み込まれている）サーバが近い将来、将来の付加的帯域幅を（アダプタのインタフェースを含む経路で）使う計画であることを示していた場合、アダプタエージェントは、このような各サーバエージェントがアダプタインタフェースを含む経路をアダプタエージェントに示していた、計画していた付加的な将来の帯域幅の使用の合計を維持する。好ましい実施形態では、（アダプタの）アダプタエージェントは、アダプタを含む経路上の記憶装置（例えば、ディスクドライブ）にサーバがアクセスした場合に限り、サーバからの計画した帯域幅使用通知を受け入れるだけである。サーバエージェントによる計画した将来の帯域幅使用の表示は、予約又は帯域幅の割り当てではなく、アダプタエージェントにより判断された実際の消費された帯域幅の統計値が近い将来変化することを知らせるものである。サーバエージェントによるこのような表示、及びアダプタエージェントにより合計を維持することの目的は、多くの記憶装置へのデータトラフィックが一度に１つのアダプタの１つのインタフェースに向かう可能性を無くすか又は制限することである。アダプタエージェントは、一般的に、計画した付加的帯域幅使用通知の各々を時間をかけて減少（即ち、「エージング」）させ、アダプタの各インタフェースへのエージングさせた計画した付加的帯域幅使用値の最新の（エージングさせた）合計値を維持する。新たなトラフィックはインタフェースを実際に経由するので、このような実際のトラフィックは、アダプタエージェントにより作られたプレインタフェーストラフィック計測値中に含まれる。好ましい実施形態において、アダプタエージェントは、各計画した付加的帯域幅使用通知を、この通知により表示された帯域幅値を半減期２０秒（又は、２０秒に実質的に等しい半減期）で指数関数的に減少させることで（すなわち、表示された計画した付加的帯域幅使用値の指数関数的減少を実行することで）、エージングさせる。代替的に、他の機構又は値（例えば、指数関数的減少半減期値）を、表示された各計画した付加的帯域幅使用値の好ましいエージングを行うために用いることができる。
【００７４】
４．アダプタエージェントは（エージェントが組み込まれている）アダプタの各インタフェースが過負荷かどうかを判断（計算）しサーバエージェントに、（過負荷となっていると判断されたならば）そのような過負荷の表示を（サーバエージェントからの要求に応じて）報告する。このような過負荷表示は、可能ならインタフェースの使用の停止を試みることができるかをサーバが判断するために用いることができる。サーバは、一般的に、リンクがしばらくの間ほとんど全部使用されていてこれからも使用されるかどうかを判断し、その場合は、リンクが過負荷になるかどうか、そして他の記憶データトラフィックの経路にしたほうがよいかどうかを判断するためにこの表示を用いる。アダプタエージェントは、生の過負荷表示値（過負荷であるとの判断の表示）にフィルターを掛け、判断した過負荷が持続しているかどうかを表示するフィルターを掛けた過負荷値を生成し、（サーバエージェントからの要求に応じて）生の過負荷表示値ではなく、フィルターを掛けた過負荷値を通知することができる。一般的な実施形態では、アダプタエージェントは、過負荷帯域幅レベルとして、インタフェースが全部使われていると考えられる選択された帯域幅を使用するよう構成されている。１つの好ましい実施形態では、過負荷帯域幅レベルは、インタフェースの利用可能な全帯域幅の９２．５％に選定され、過負荷計算が連続して少なくとも２回連続して正しいと判断した場合、（フィルターを掛けた過負荷値により）インタフェースは過負荷であると通知される。一般的な実施形態では、過負荷計算は、以下のどちらかが正しい場合、正しいと考えられる。
【００７５】
消費された送信帯域幅の短期及び長期計測値（例えば、短期及び長期の送信帯域幅の平均）が両方とも過負荷帯域幅レベル以上であるか、又は、消費された受信帯域幅の短期及び長期計測値（例えば、短期及び長期の受信帯域幅の平均）が両方とも過負荷帯域幅レベル以上である場合、或いは、
データを処理するアダプタの容量が限界に達していた（又はほぼ限界に達していた）場合。
【００７６】
５．アダプタエージェントは、アダプタインタフェースごとに利用可能な帯域幅（すなわち、サーバによりそのインタフェースへと経路変更することがある新しい記憶装置のデータトラフィックを受け入れるために用いることが可能な付加的帯域幅）の推定量を計算する。この計算は、前記新しい記憶装置の状態又は能力について知る必要がなく、アダプタエージェントにより決定された特別な記憶データトラフィックの推定量を必要とし、そのような特別のトラフィックがインタフェースに向けらていたなら、インタフェースにより取り扱いが可能となる。この利用可能な帯域幅の推定は、一般にインタフェースの利用可能な全帯域幅（例えば、１秒あたりのビット数単位の生の容量）、インタフェースのトラフィック統計量（すなわち、アダプタインタフェースの消費された帯域幅の少なくとも１つの計測値）、付加的データを処理するためのアダプタの能力（すなわち、計算負荷）、及び、表示された全てのインタフェースへの将来の帯域幅の通知、から計算される。記憶データトラフィックは、いろいろな時に、読み取りトラフィックと書き込みトラフィックの両方を含むので、推定される付加的な使用可能トラフィックの計算では、付加的なトラフィックは、送信トラフィック又は受信トラフィックのうちのすでにビジー状態となっている方から、トラフィックを送信又は受信するものとみなす。これにより、付加的なトラフィックがすでに負荷が重くなっているインタフェース上を移動するデータ方向で過負荷になるのを防止する。好ましい実施形態において、現在の作業処理を減速させるのを避けるために、推定される利用可能な帯域幅は、インタフェースへ送受信される平均データ、プラス、最新のトラフィックにおける通常の変動の推定、例えば、標準偏差、に基づく。好ましい実施形態において、トラフィックの平均及び期待変動量は、例えば、上述の米国特許６，４３８，１４１に記載されているような、「速いアップ、遅いダウン」指数平滑移動平均（最新に生成された統計値が先に生成された統計値より大きい場合は、比較的大きな重み付けが次の平均値に適用され、最新に生成された統計値が先に生成された統計値より小さい場合は、比較的小さな重み付けが次の平均値に適用される）により計算される。このような「速いアップ、遅いダウン」指数平滑移動平均により、簡単な計算を用いて、最新の平均値プラス一組の標準偏差を推定することができる。さらに、推定した生の利用可能な全帯域幅は、インタフェースを介してトラフィック中に短い急変動があっても、性能を下げることなく切り抜けることができるよう、安全係数により減少させておくことができる。１つの実施形態において、以下の方程式で数値「available」で示されるような、アダプタインタフェースのための利用可能な帯域幅の推定量は、以下のように計算される（しかし当然のことながら、動作を調整するために、付加的な項及び係数をこの計算に加えることはできる）。
available = (safety_factor * (raw_bandwidth - worst-case)) *
processing_capacity_derating_factor、
ここで、値「worst-case」は、max(transmit_mean_and_variation, receive_mean_and_variation) + sum(aged-future-bandwidth-notices)に等しく、「max（a、b）」は、値「a」又は、値「b」のどちらか大きい方を意味する。
transmit_mean_and_variationは、インタフェースでの消費された送信帯域幅の計測値（例えば、インタフェースでの平均送信データの推定プラス最新の送信データトラフィックにおける通常の変動（標準偏差））であり、
receive_mean_and_variationは、インタフェースでの消費された受信帯域幅の計測値（例えば、インタフェースでの平均受信データの推定プラス最新の受信トラフィックにおける通常の変動（標準偏差））であり、
「sum(aged-future-bandwidth-notices)」は、アダプタインタフェースでのエージングした計画した付加的帯域幅の使用値の合計であり、
safety_factorは、前記安全係数であり、
raw_bandwidthは、インタフェースの利用可能な全帯域幅を意味し、そして、
processing_capacity_derating_factorは、アダプタでのディレーティング係数である。及び／又は、
【００７７】
６．アダプタエージェントは、サーバエージェントからのステータス要求（すなわち、アダプタと同じ記憶データ経路上のサーバのサーバエージェントからのステータス要求）に応答する。一般的に、サーバエージェントへ返された現状報告は、各アダプタインタフェースでの、現在の過負荷状態、及び上述したようなインタフェースの利用可能な帯域幅を含む。
【００７８】
いくつかの実施形態では、各サーバエージェント（例えば、図１のエージェント６及び１２の各々、又は図２のエージェント２８）は、以下の操作のすべて又は一部を実行するよう構成される。すなわち、
【００７９】
１．アダプタエージェントの一般的な実施形態を行うとき、サーバエージェントは、サーバの各インタフェースに生じる送受信トラフィックを（例えば、１秒あたりのビット数単位で）監視し、上記各インタフェースの消費された帯域幅の少なくとも１つの計測値を生成する。一般的に、各モニタリングサンプルは、一般に、比較的短時間（例えば、数秒）で取り出され、サーバエージェントは、受信データサンプルの流れ及び送信データサンプルの流れの統計的特性を判断し、各インタフェースの消費された帯域幅（使われた帯域幅）の短期計測値と長期計測値とを別々に提供する。最新のＮＩＣは全二重（一般的に、サーバのＮＩＣは同時に送信と受信を行うことができる）であり、各インタフェースの受信データ及び送信データについて独立した統計値が一般的に維持される。好ましい実施形態において、数値の指数平滑移動平均を決定するよく知られた方法（すなわち、この場合、固定期間の移動時間窓におけるインタフェースの受信トラフィックの指数平滑移動平均、又は固定期間の移動時間窓におけるインタフェースの送信トラフィックの指数平滑移動平均）を用いて、各インタフェースの受信トラフィックの統計的特性、及び各インタフェースの送信トラフィックの統計的特性を（例えば、上述した本発明に係るアダプタエージェントの一般的な実施形態と同じ方法で）決定する。
【００８０】
２．サーバに割りつけられている各記憶装置（例えば、ディスクドライブ）へのアクセス経路について（記憶装置にコンバージドネットワークを介してこの経路でサーバからアクセス可能であるという意味で）、サーバエージェントは、サーバに、経路の他の終端であるアダプタに要求をアサートさせることができ、サーバエージェントはアダプタの帯域幅（消費された帯域幅及び／又は利用可能な帯域幅）及び／又は過負荷情報（すなわち、要求に応じてアダプタのアダプタエージェントにより生成された過負荷及び／又は帯域幅レポート）を取り戻す。多くの場合、同じアダプタがいくつかの記憶装置及び経路に用いられるので、１つの要求に応じて受信したアダプタデータは、しばしば多くの経路で用いられる。
【００８１】
３．（サーバエージェントが組み込まれた）サーバへの各経路で、アダプタを介して記憶装置にアクセスし、サーバエージェントは、その経路が過負荷かどうかそして負荷を削減するかどうか、及び利用可能な（使用していない）帯域幅の経路はどれかを計算する。一般的な実施形態において、サーバエージェントは、（経路に沿って接続された）サーバのインタフェースの利用可能な帯域幅または、（経路に沿って接続された）アダプタのインタフェースの利用可能な帯域幅の最小値として、経路で利用可能な帯域幅を決定する。一般的な実施形態において、サーバエージェントは、サーバのインタフェース又はアダプタのインタフェースのどちらかが過負荷となった場合、経路は過負荷であると判断する（一般に、サーバからの要求に応じてアダプタエージェントにより、サーバにアサートされたリポート中のインタフェース過負荷表示を用いることが含まれる）。
【００８２】
４．少なくとも１つの過負荷経路が（記憶装置にアクセスするためにサーバにより）使用されている場合、サーバエージェントは、一般に各過負荷を評価するために選択処理を導入している。好ましい実施形態において、サーバにより少なくとも２つの過負荷経路が使用されている場合、サーバエージェントは、ランダムな順序でこれらを考慮し、サイクルごとに１つだけ選択する。
【００８３】
過負荷ではなく、他の記憶装置のために利用可能な帯域幅が十分あるもう１つの経路がある場合、サーバエージェントは次の使用のためにそのような他の経路を選択する。２以上のそのような代替的な経路が利用可能な場合、サーバエージェントは、最も大きな利用可能な帯域幅を有する経路を選択する。
【００８４】
そうでなければ、サーバ（及びそのサーバエージェント）がサーバと過負荷となった経路に接続された記憶装置との間の好ましいデータ経路が通知されていて、現在の（過負荷となった）経路が、サーバにより記憶装置にアクセスするようもともと割り当てられていた経路でない場合、（好ましいデータ経路が過負荷であろうとなかろうと）好ましいデータ経路が次の使用のために選択される。一般的に、現在の（過負荷となった）経路の割り当てが変化しない場合（すなわち、現在の経路に代えて他の経路が選択されない場合）、次の過負荷となった経路は、現在の経路についての場合と同様に考慮される。
【００８５】
５．新たな経路割り当てを行った場合（すなわち、サーバエージェントが現在の経路に代わる他の経路を選択した場合）、サーバエージェントは一般に以下の動作を行う。
【００８６】
サーバエージェントは、（新たに選択された経路に沿って接続された）サーバインタフェースが特定の帯域幅（例えば、１つのディスクの将来の負荷にふさわしい帯域幅）を有する記憶データトラフィックをアダプタの特定のインタフェースにアサートすることを、新たに選択された経路と関連付けられたアダプタエージェントに通知する。これは、直ちに統計量に反映され、アダプタのアダプタエージェントにより生成されたことを報じ、そして一般に、２つのサーバがアダプタインタフェースの同じ過剰な帯域幅を使用しようと試みることを（直接）防止する。そして、
【００８７】
サーバエージェントは、サーバに、サーバと対応する記憶装置との間の記憶データトラフィックの経路を新たに選択した経路に変更させる。及び／又は、
【００８８】
６．サーバに、サーバと記憶装置との間の記憶データトラフィックの経路を新たに選択した経路に変更させた後、サーバエージェントは、アダプタエージェントの各アダプタインタフェース上のトラフィックの各アダプタエージェントにより進行中の監視による結果（例えば、監視中の統計値）に、サーバエージェントの最新の動作の帰結を反映させることが出来るように、十分な長さの時間（例えば、所定の又はランダムに選んだ時間）待機する。待機した後、サーバエージェントは、新な経路以外の少なくとも１つの経路を含む、記憶装置まで経路の評価（例えば、再評価）を開始する。好ましい実施形態において、待機する時間は、所定の最小待機時間及び最大待機時間を満たす範囲で、選択された時間間隔（例えば、１０秒）の標準変量として選択されたランダム数により決定される。
【００８９】
本発明に係るシステムの実施形態により実行される例示的方法は以下の通りである。サーバエージェント（この例では、図２のサーバ２１のエージェント２８）は、サーバ２１が（アダプタ２５によりネットワーク２０に接続された）記憶装置にアクセスすべきであるとの判断に応答して、アダプタ２５の特定のインタフェース（すなわち、この例では、インタフェース３０）を通る経路を介して、アダプタエージェント（この例では、図２のアダプタ２５のアダプタエージェント３８）に、計画した付加的帯域幅使用通知を送る。これに応じて、アダプタエージェント３８は時間とともに、通知に示された計画した付加的帯域幅使用値を縮小（すなわち、「エージング」）し、受信したすべてのエージングした計画した付加的帯域幅使用値の更新された（エージングした）合計をインタフェース３０のために維持する（そして、現在の過負荷状態及び利用可能な帯域幅の表示を生成するためにこのエージングした合計を使用する）。新たなトラフィックは、実際にはインタフェース３０を通るルートとなり、このような新たな実際のトラフィックは、アダプタエージェント３８により計測されるインタフェースごとのトラフィックの計測に含まれる（そして、各アダプタインタフェースへの現在の過負荷状態及び利用可能な帯域幅の表示を生成するために用いられる）。サーバエージェント２８は、（各アダプタエージェントから）このような各アダプタエージェントが組み込まれサーバにより用いられる記憶装置への経路の一部となっている、アダプタの各インタフェースへの現在の過負荷状態及び利用可能な帯域幅を示す報告を要求し、それを受けた問い合わせを受けた各アダプタエージェントは、サーバエージェント２８に要求された報告を独立に送信する。サーバエージェント２８は、この報告、エージェント２８自身が自らのサーバインタフェースのために生成したトラフィックの統計的特性を用い、サーバ２１が（ごく最近アサートされた計画した付加的帯域幅使用により推定された）現在の経路を介して記憶装置にアクセスできるか、又は、サーバ２１により記憶装置にアクセスするための他の経路を（現在の経路に置き換えるために）選択するべきかを判断する。サーバ２１により記憶装置にアクセスするためにサーバエージェント２８が新たな経路を選択した場合は、サーバエージェント２８は、新たに選択された経路と関連付けられたアダプタエージェントに、（新たに選択された経路と接続されることになる）サーバインタフェースが特定の帯域幅を有する記憶データトラフィックにアダプタの特定のインタフェースにアサートするよう計画していることを通知し、そして、サーバエージェント２８は、サーバ２１に、サーバ２１と対応する記憶装置との間の経路を新たに選択された経路に変更させる。このようにして、システムは、サーバにより記憶装置にアクセスする最適な経路を選択する分散型方法を（個々のアダプタエージェントからサーバのサーバエージェントまでの独立に生成した通知の独立したアサーションにより）動作させる。
【００９０】
本発明のいくつかの実施形態では、コンバージドネットワークに接続されたサーバのサーバエージェント（例えば、図１のエージェント６及び１２の各々、又は図２のエージェント２８）は、アダプタインタフェーストラフィック又はアダプタの能力により生じるもの以外のネットワークの隘路周辺の記憶トラフィックを検出し経路変更するよう構成される。このような隘路の例として、サーバと、再均衡化機構に加わっていない他のサーバとの間の一般的なデータ通信トラフィックにより生じるネットワーク隘路が挙げられる。
【００９１】
好ましい実施形態の形では、サーバ及びアダプタ（例えば、各々複数のネットワークインタフェースにより実行される、図１の要素１、３、５、７、９、及び１１）は、イーサネットネットワークであるコンバージドネットワーク（例えば、図１のネットワーク２０）に接続され、サーバ及びアダプタは、ｉＳＣＳＩ（インターネット・スモール・コンピュータ・システム・インタフェース）ネットワーキングプロトコルに従い、ネットワークを通して通信するよう構成される。この実施形態の形では、サーバエージェント及びアダプタエージェント（例えば、図１のエージェント６、１２、１４、１６、１８、及びand２２）は、簡単なやり方（多くの一般的なアプリケーションよりはるかに簡単なやり方）で、ｉＳＣＳＩネットワークプロトコルを用い、それにより、サーバ（例えば、サーバ１又は３）と任意のアダプタ（例えば、アダプタ５、７、９、又は１１）との間の通信を可能にするが、各サーバと（記憶装置への）各アダプタとの間の通信経路は同時にただ１つだけとなる。この実施形態の形では、サーバエージェントは、通常の複数経路Ｉ／Ｏ（「ＭＰＩＯ」）技術（又は新たな、通常のＭＰＩＯ技術を簡単化したもの）を、本発明による記憶データトラフィック均衡化を達成するために用いる。「ＭＰＩＯライクサブシステム」との語句は、ここでは、通常のＭＰＩＯを実行する（例えば、サーバの）処理サブシステム、又は、通常のＭＰＩＯを簡単化したものを実行する処理サブシステムを意味する。
【００９２】
説明したこの形の実施形態において、各サーバは、サーバのインタフェースのうち選択された１つを介してｉＳＣＳＩに従いデータ入出力を管理する、ＭＰＩＯライクサブシステム（例えば、カーネル中のＭＰＩＯドライバ）を含む。サーバのサーバエージェントは、サーバエージェントにより選択されているサーバのインタフェースのうちの１つを通してのみサーバによる記憶装置へのアクセスを認める、記憶装置アクセス「方針」を設定することによる場合も含んで、ＭＰＩＯライクサブシステムとのやり取りを行う。このような方針は、付加均衡を行わず、その代わりネットワークアクセスに単一の動作中の経路を用いる従来のＭＰＩＯ「フェイルオーバーオンリー」方針（他の使用の可能性がある経路は、単一の動作中の経路が故障した場合のみ用いる単なる予備経路となる）と類似している。しかしながら、この記憶装置アクセス方針は、新しい方法で記憶データトラフィック均衡化を行うために、本発明による創作性のあるサーバエージェントにより用いられる。サーバのサーバエージェントが、新たに選択されたこのサーバのインタフェースを介してサーバにより記憶装置にアクセスするために、（一般にアダプタエージェントからの要求された通知を受信するステップを含む、本発明に係る方法の実施形態により）新たな経路を選択したとき、このサーバエージェントは、サーバエージェントにより選択されていたサーバのインタフェースのうちの新たな１つを介してのみ、サーバにより記憶装置にアクセスすることを可能にする新たな記憶装置アクセス「方針」をＭＰＩＯライクサブシステムに特定させることで、サーバに、（記憶装置からの又は記憶装置への）記憶データトラフィックの経路指定を新たに選択された経路に変更させる。サーバエージェントもまた、この新たな記憶装置アクセス経路を、サーバエージェントにより選択された適切なアダプタインタフェースにまで広げさせる。
【００９３】
このように、説明した実施形態の形において、本発明により、コンバージドネットワーク上の記憶データトラフィックを均衡させるためにＭＰＩＯライクサブシステムが（本発明に係るサーバエージェントにより）用いられる。
【００９４】
ＭＰＩＯは、もともと隔離された記憶ネットワーク上で開発され、従来のＭＰＩＯ負荷均衡化は、コンバージドネットワーク上ではうまく働かなかった。例えば、ネットワークに接続されたサーバの複数のイーサネットポートと、ネットワークに接続されたアダプタの複数のイーサネットポートとの間の記憶データトラフィックを均衡させるために、（イーサネットネットワークとして組み込まれた）コンバージドネットワーク中のＭＰＩＯを用いるための試みがなされ、ここでアダプタもまたサーバによりアクセスされるディスクドライブサブシステム（すなわち、ＪＢＯＤ）に接続された複数の「バックエンド」ＳＡＳポートを有すると考える。この例では、従来の全てのＭＰＩＯ負荷均衡化「方針」（ラウンドロビン方式で全ての可能なイーサネットインタフェースに記憶命令を送るか、又は、各リンクでどれだけの作業が未実施かの指標を決定し、「最も忙しくない」イーサネットインタフェースに命令を送る）は、一般に一連のディスクアクセス命令を実行するために必要なシークの数が増大する。なぜなら、これらはしばしば、次々と一連の命令にサーバからディスクドライブまでの異なる経路をとる（しばしば、命令の順序が狂った状態でディスクドライブに到着する）ことを引き起こすからであり、したがって、急速なそして変更が好ましいかどうかにかかわらないネットワークを通る記憶データ経路の変更の結果として先に説明した過剰なシークが行われるという問題を引き起こすからである。それにひきかえ、本発明の一般的な実施形態（上述したような、コンバージドネットワーク上の記憶データトラフィックの均衡化を行うためにサーバのＭＰＩＯライクサブシステムを用いる本発明に係るサーバエージェントの実施形態を含む）では、一般に、必要な時のみ、そして一般に非常にまれに（例えば、１時間に１回、２回、又は数回）、いずれかのディスクドライブにアクセスするための記憶データ経路を変更するので、過剰シークの問題を引き起こすことがない。本発明の一般的な実施形態の重要な利点は、（記憶データトラフィック均衡化を行うために）クロストラフィックを調整する間、コンバージドネットワークを介してディスクに命令を順序正しく送ることを維持する点である。
【００９５】
実施形態の他の形において、本発明に係るサーバエージェントの実施形態を実施するサーバもまた、ユーザインタフェースを実行する。サーバに接続された表示装置を有するような実施形態におけるサーバの一般的な操作において、ユーザインタフェースにより、サーバエージェントの操作又は状態、及び／又は、受信した通知又はサーバエージェントによりなされた決定を、表示装置に表示させる。例えば、以下の形式の表示をすることができる、すなわち、サーバエージェントが監視しているサーバインタフェーストラフィック及び／又は帯域幅、アダプタエージェントから受け取った（例えば、アダプタインタフェース状態及び利用可能な帯域幅に関する）通知、及び現在の記憶装置アクセス経路は変更すべき化すべきでないかの判断、である。
【００９６】
本発明の一般的な実施形態の利点及び特徴には以下が含まれる。
【００９７】
１．コンバージドネットワークを通る記憶データトラフィックは、アダプタとサーバとの間（サーバ同士の間、アダプタ同士の間、又は、アダプタから２以上のサーバまでではない）のそれぞれのデータ経路の端部同士（例えば、図１のサーバ１及びアダプタ５、又は図２のサーバ２１及びアダプタ２５）の間のみで生じる均衡化を達成するよう行われた通信により、完全に分散化された方法で均衡化がおこなわれる。関係者（すなわち、サーバインタフェース、サーバエージェント、アダプタインタフェース、又はアダプタエージェント）の故障は、その関係者がメンバーとなっている経路にのみ影響を与える。一般に、サーバエージェントとアダプタエージェントとの間の１対１通信のみが存在する（例えば、サーバエージェントはこの通信を２以上のアダプタエージェントと共有しない）。一方、複数の記憶装置と複数のサーバとの間で記憶データトラフィックの均衡化を行う従来の方法では、このような分散化は行われなかった。
【００９８】
２．記憶トラフィックの再均衡化を行うために必要な通信は、アダプタとサーバとの間の各データ経路の端部同士（例えば、図１のサーバ１及びアダプタ５、又は図２のサーバ２１及びアダプタ２５）のみである。したがって、サーバとアダプタとの間の接続の数は、サーバとアダプタとの間の経路に結びついた記憶装置（例えば、ディスクドライブ）の数で制限される。したがって、数千のサーバ及びアダプタを有する非常に大きなデータセンター内であっても、本発明の一般的な実施形態を実行するのに必要な各サーバ及びアダプタでの計算負荷、及びネットワーク負荷は小さい。
【００９９】
３．記憶データトラフィックの帯域幅をあらかじめ予約したり固定したりすることはない。したがって、関係者（すなわち、サーバインタフェース、サーバエージェント、アダプタインタフェース、又はアダプタエージェント）の故障は、すぐに全体的な統計値に反映され、関係者が（故障前に）使っていたリソースは、自動的に残りの装置により使用することが可能になる。その後故障した装置が回復した場合、本発明の方法の一般的な実施形態の実行により、トラフィックが過負荷をもたらす場合は、他のサーバは、トラフィックを、回復した装置により使われていた経路から変更する。
【０１００】
４．サーバが計画した付加的帯域幅使用通知をアダプタに送信した時であっても、（アダプタ内に組み込まれた）アダプタエージェントは、一般的に、各通知に表示された計画した付加的帯域幅使用を時間をかけて減少させる（すなわち、「エージングする」）。このエージングは、一般に、アダプタの各インタフェースのエージングした計画した付加的帯域幅使用値を比較的急速に（ゼロまで）減少させる。これにより、付加的な観測された記憶データトラフィックにすぐには反映されない計画した付加的帯域幅使用通知は、直ちに無視される。
【０１０１】
５．一時的に過負荷となるような結果が生じるサーバにより選択されたデータ経路は、通常は非常に短時間で修正される（すなわち、同じ記憶装置までの新たなデータ経路に置き換えられる）。
【０１０２】
６．新たな経路を用いて起動するとの各サーバの意図を通知する処理（すなわち、各サーバエージェントにより、表示された計画した付加的帯域幅の使用が実際に生じることにより直接影響を受ける各アダプタのアダプタエージェントに計画した付加的帯域幅の使用通知を送ること）により、多くのサーバがほぼ同時刻に同じ決定をすることを防止する。つまり、これまでのデータのみに基づいてほぼ同時に経路決定を行うことにより生じる可能性がある振動を実質的に防止する。さもなければ、軽負荷状態となっている１つのインタフェースを指し示す統計値を全てのサーバが見る場合があり、そして全てのサーバがそのインタフェースへと経路変更し、深刻な過負荷状態が生じる可能性がある。
【０１０３】
７．（例えば、サーバに、サーバと記憶装置との間の記憶データトラフィックのルートを新たに選択された経路に変更させた後、サーバエージェントの最新の動作の結果が監視している統計値に反映されるように、ランダムに決定された時間間隔で待機した後、サーバエージェントが記憶装置への経路の再評価を開始する、実施形態において）ランダムサイクルを用いることにより、サーバが固定された動作を行うことを防止し、さらに同時に矛盾した判断を行うことを避ける。
【０１０４】
８．ネットワークが完全に使用された状態（すなわち、全てのインタフェースが過負荷状態）となり、記憶トラフィックの経路変更の機会がない場合、一般的な実施形態において、全てのサーバ及びアダプタは、サーバとアダプタとの間の所定の「好ましい」データ経路に戻る。このことは、無用な経路変更の試みは行わないことを意味する。加えて、全てのデータトラフィックを静的に均衡させるような方法で好ましいデータ経路を選択したとすると、それらの経路は、負荷がいっぱいの状態のネットワークにおいて最適な構成を形成する。
【０１０５】
９．アプリケーション（例えば、図１のサーバ１のサブシステム４又はサーバ３のサブシステム１０、又は、図２のサーバ２１のサブシステム２６により実行されるアプリケーション）は、本発明の一般的な実施形態の利点を獲得するため変更する必要がある。通常は、サーバエージェント及びアダプタエージェントの各々は、アプリケーションから見えないような方法で動作し、関係するインタフェースのいずれかを使用するどのようなプログラム及び装置も、（データ通信操作のみを行うプログラム及び装置も含めて）記憶データ負荷均衡化の利益をうける。
【０１０６】
本発明の他の特徴は、本発明に係るアダプタエージェントの実施形態を実行するようプログラムされた、又はその他で構成されたアダプタ（例えば、図１のアダプタ５、７、９、及び１１のいずれか、又は、図２のアダプタ２５、２７、２９、及び３１のいずれか）、このようなアダプタと一体化したディスクドライブ（又は他の記憶装置）（例えば、図１に示したような単一の装置１００としてのアダプタ９（及びアダプタ１１）と一体化した、ディスクドライブとしての記憶サブシステム１５の実施形態）、そのようなアダプタと一体化したＪＢＯＤ（又は他の記憶システム）（例えば、図２に示したような単一の装置１０１としてのアダプタ２９（及びアダプタ３１）と一体化した、ＪＢＯＤとしての記憶サブシステム３３の実施形態）、本発明に係るサーバエージェントの実施形態を実行するようプログラムされた、又はその他で構成されたサーバ（例えば、図１のサーバ１及び３のいずれか、又は図２のサーバ２１）、本発明に係るサーバエージェントの実施形態のハードウェアによる実施形態（例えば、ハードウェアに組み込まれた、図１のエージェント６）、及び、本発明に係るアダプタエージェントの実施形態のハードウェアによる実施形態（例えば、ハードウェアに組み込まれた、図１のエージェント１４）である。
【０１０７】
本発明の他の特徴は、本発明に係るシステム、アダプタ、記憶装置、ＪＢＯＤ、サーバ、又は他の装置の実施形態での操作を行う方法である。そのような方法は、
コンバージドネットワークを介して、サーバからアダプタへ要求をアサートするステップであって、前記サーバは、サーバエージェントを含むよう構成され、前記アダプタはアダプタエージェントを含むよう構成されていることを特徴とするステップと、
前記要求に応答して前記アダプタエージェントにより前記サーバのサーバインタフェースにアサートされた少なくとも１つのアダプタインタフェース過負荷表示を特定するためにサーバエージェントを採用するステップであって、前記アダプタインタフェース過負荷表示は、前記アダプタのアダプタインタフェースが過負荷かどうかを表示することを特徴とするステップと、
前記サーバインタフェースを含む経路であって、その経路を通って前記アダプタを介して少なくとも１つの記憶装置に前記サーバがアクセスするように設けられた、経路において、前記アダプタインタフェース過負荷表示を用いる方法で前記経路が過負荷かどうかを判断するために前記サーバエージェントを採用するステップと、を含む。
【０１０８】
本発明の特定の形態が図示され説明されているが、本発明は、説明され図示された特定の実施形態又は説明された特定の方法に限定されるべきではないことを理解すべきである。方法を記述する特許請求の範囲は、請求項に明示的に記載されていない限り、特定の順序のステップを含意するものではない。
【図１】
2018530845.tif 000003
【図２】
2018530845.tif 000004
【国際調査報告】
2018530845.tif 000005