説明

フェイルオーバおよび負荷分散

本発明は、フェイルオーバの技術と静的および動的な負荷分散の技術とに関する。フィルタドライバは、第1のネットワークアダプタおよび第1のネットワークアダプタを通過するデータパスのうち少なくとも1つが障害状態となったことを示すパス障害通知を受信し、第1のネットワークアダプタに送信されたパケットを第2のネットワークアダプタにリルートする。ミニポートドライバは、ネットワークアダプタおよびそのネットワークアダプタを通過するデータパスのうち少なくとも1つが障害状態となったことを判定し、フィルタドライバに対して、ネットワークアダプタおよびそのネットワークアダプタを通過するデータパスのうち少なくとも1つが障害状態となったことを通知する。フィルタドライバは、複数のデータパスの各データパスに対するデータ分担量を決定し、あるターゲット論理ユニットに対する最大コマンド数を決定し、データ分担量と最大コマンド数に基づいてパケットを送信するデータパスを選択する。フィルタドライバは、複数のデータパスの各データパスにおけるデータ転送速度を決定し、複数のデータパスの各データパスにおけるデータ転送速度に基づいて複数のデータパスの各データパスに対する負荷分散シェアを更新し、複数のデータパスの各データパスに対する負荷分散シェアに基づいてパケットを送信するデータパスを選択する。


【発明の詳細な説明】
【技術分野】
【0001】
本開示内容は、フェイルオーバおよび負荷分散の方法、システム、およびプログラムに関する。
【背景技術】
【0002】
I_T nexusは、イニシエータ・デバイスとターゲット・デバイスとの組み合わせである。入力/出力(I/O)処理を要求するデバイスはイニシエータと呼ばれ、これらの処理を実行するデバイスはターゲットと呼ばれる。例えば、ホストコンピュータはイニシエータでありうるし、ストレージデバイスはターゲットでありうる。ターゲットは1つ以上の独立したストレージデバイスを有してもよい。
【0003】
ホストバスアダプタ(HBA)は、オペレーティングシステムとスモール・コンピュータ・システム・インタフェース(SCSI)バスとを「接続」するハードウェアデバイスである。HBAは、ホストコンピュータと通信パスの間のデータ転送を管理する。HBAチーミングは、「チーム」を形成することを目的として集められたいくつかのHBAのグループを指し、チーム内の各HBAは、特定のターゲットに接続されかつ特定のターゲットにデータを送信しうる。HBAチームは、インターネット・スモール・コンピュータ・システム・インタフェース(iSCSI)(IETF RFC 3347,published February 2003)のポータル・グループ・コンセプト上に構築されてもよい。iSCSIは、2003年2月にIETFによって標準として定義された。ポータル・グループ・コンセプトは、ポータル間に広がる接続におけるセッションの調整機能を集合的にサポートする、iSCSIネットワークエンティティ内のネットワークポータルの集合と定義されうる。
【0004】
HBAチーミングは、Windows(登録商標) 2000、Windows XP、Windows .NETオペレーティングシステムを実行するスモール・コンピュータ・システム・インタフェース(SCSI)(American National Standards Institute (ANSI) SCSI Controller Commands−2(SCC−2) NCITS.318:1998)イニシエータと共に使用されてもよい。I_T nexusの接続を回復する方法は、複数のトランスミッション・コントロール・プロトコル(TCP)接続(Internet Engineering Task Force (IETF) Request for Comments (RFC) 793, published September 1981)に基づいてもよい。すなわち、Windowsオペレーティングシステム上で実行されるiSCSIイニシエータから送信されたパケットは、複数のイニシエータとターゲットの間の接続によって送信および/または受信される。1つのHBA内で同一ターゲットに対して複数の接続が確立されると、ミニポートドライバは、フェイルオーバ(すなわち、1つの接続が障害状態になった場合に、他の接続にパケットをルーティングすること)および負荷分散(すなわち、複数のHBA接続間で負荷を分散すること)を処理しうる。
【0005】
しかし、従来技術では、それぞれが同一ターゲットに対して1つ以上の接続を有する、いくつかのHBA間におけるフェイルオーバおよび負荷分散を行うことが必要とされている。
【0006】
明細書全体において参照番号が対応する部分を表す図面について、以下に説明する。
【図面の簡単な説明】
【0007】
【図1A】いくつかの実施形態が実装されるコンピュータ環境を示す図である。
【図1B】特定の実施形態が実装されるコンピュータ環境を示す図である。
【図2A】任意のクラス下位フィルタドライバを含む、Windowsストレージデバイス・ドライバスタックを示すブロック図である。
【図2B】いくつかの実施形態によるSCSI環境において使用されうる、フェイルオーバおよび負荷分散機能を有するストレージデバイス・ドライバスタックを示すブロック図である。
【図3】いくつかの実施形態によるフェイルオーバおよび負荷分散機能を有するイニシエータの構成例を示すブロック図である。
【図4A】いくつかの実施形態による第2のストレージデバイス・スタックを隠蔽する処理を示す第1の図である。
【図4B】いくつかの実施形態による第2のストレージデバイス・スタックを隠蔽する処理を示す第2の図である。
【図5A】いくつかの実施形態による通知機構の処理を示す第1の図である。
【図5B】いくつかの実施形態による通知機構の処理を示す第2の図である。
【図5C】いくつかの実施形態による通知機構の処理を示す第3の図である。
【図6A】いくつかの実施形態による負荷分散の処理を示す第1の図である。
【図6B】いくつかの実施形態による負荷分散の処理を示す第2の図である。
【発明を実施するための最良の形態】
【0008】
以下の説明では、本明細書の一部でありいくつかの実施形態を説明する、添付の図面が参照される。実施形態の範囲から逸脱することなく、その他の実施形態が利用されてもよく、また、構造および処理が変更されてもよいと理解されるべきである。
【0009】
図1Aは、いくつかの実施形態が実装されうるコンピュータ環境を示す。コンピュータ102はイニシエータとして動作し、データストレージ140はターゲットとして動作して、I_T nexusを形成する。コンピュータ102は、1つ以上の中央演算処理装置(CPU)104、揮発性メモリ106、非揮発性ストレージ108(例:磁気ディスクドライブ、光ディスクドライブ、テープドライブ、など)、オペレーティングシステム110(例:Windows 2000、Windows XP、Windows .NET)、および1つ以上のネットワークアダプタ128を有する。いくつかの実施形態では、各ネットワークアダプタはホストバスアダプタ(HBA)である。更に、フィルタドライバ112、ミニポートドライバ114、およびアプリケーションプログラム124は、メモリ106において実行される。
【0010】
コンピュータ102は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータなどのような、従来技術のコンピュータデバイスを含んでもよい。いかなるCPU104およびオペレーティングシステム110が使用されてもよい。メモリ管理操作の一部として、メモリ106内のプログラムおよびデータは、ストレージ108にスワップされてもよい。
【0011】
データストレージ140は、1つ以上の論理ユニット(すなわち、nが正の整数である場合は、n個の論理ユニット。いくつかの実施形態では、nは128より小さい。)を有する。理解を容易にすることを目的として、論理ユニット0、論理ユニット1、および論理ユニットnが示される。各論理ユニットは、独立したストレージデバイスとして説明されてもよい。更に、論理ユニット番号(LUN)は、各論理デバイスに対して関連付けられる。いくつかの実施形態では、HBAチームは、ターゲットおよびLUNに基づいて構成され(すなわち、あるターゲットの特定のLUNに対してデータを送信できるHBAが1つのHBAチームにグループ化される)、また、1つのHBAは、異なる複数のHBAチームに属してもよい。
【0012】
各ネットワークアダプタ128は、ネットワークアダプタ128のハードウェアに実装された種々のコンポーネントを有する。各ネットワークアダプタ128は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、ストレージエリアネットワーク(SAN)、WiFi(Institute of Electrical and Electronics Engineers (IEEE) 802.11b, published September 16, 1999)、ワイヤレスLAN(IEEE 802.11b, published September 16, 1999)などを含むネットワーク176によって、データのパケットを送受信することができる。
【0013】
ストレージドライバ120は、メモリ160内で実行され、各ネットワークアダプタ128と通信をすることおよびオペレーティングシステム110と各ネットワークアダプタ128の間をインタフェースで接続することを目的として、ネットワークアダプタ128特有のコマンドを有する。ネットワークアダプタ128およびストレージドライバ120は、SCSIコマンドがiSCSIパケットにラップされてiSCSIパケットがTCPパケットにラップされるように、iSCSIパケットを処理するロジックを実装する。トランスポート・プロトコル・レイヤは、受信したトランスミッション・コントロール・プロトコル(TCP)(Internet Engineering Task Force (IETF) Request for Comments (RFC) 793, published September 1981)パケットからペイロードを取り出して、例えばアプリケーションプログラム124にデータを渡すことを目的として、ストレージドライバ120にデータを転送する。更に、アプリケーションプログラム124は、ストレージドライバ120にデータを送信し、ストレージドライバ120は、ネットワーク176を介してデータを送信する前にTCP/IPパケット内にデータをパッケージすることを目的として、データをトランスポート・プロトコル・レイヤに送信する。
【0014】
バスコントローラ134は、各ネットワークアダプタ128がコンピュータバス160と通信できるようにする。コンピュータバス160は、Peripheral Component Interconnect(PCI)バス、PCI expressバス、Industry Standard Architecture(ISA)、Extended ISA、MicroChannel Architecture(MCA)などのような、いかなる従来技術のバスインタフェースを含んでもよい。ネットワークアダプタ128は、ネットワーク176によってリモートデータストレージとのネットワークパケットの送受信を行うメディアアクセスコントロール(MAC)機能を実装することを目的として、物理通信レイヤ132を有する。いくつかの実施形態では、ネットワークアダプタ128は、イーサネットプロトコル(IEEE std.802.3, published March 8, 2002)、ファイバーチャネル(IETF RFC 3643, published December 2003)、または従来技術のいかなるネットワーク通信プロトコルを実装してもよい。
【0015】
ストレージ108は、内部ストレージデバイス、接続されたストレージデバイス、またはネットワーク経由でアクセス可能なストレージを含んでもよい。ストレージ108内のプログラムは、メモリ106にロードされてCPU104によって実行される。入力デバイス150は、CPU104に対するユーザ入力を提供することを目的として使用され、キーボード、マウス、ペンスタイラス、マイクロフォン、タッチ・センシティブ・ディスプレイスクリーン、または従来技術の他のいかなる有効化または入力機構を含んでもよい。出力デバイス152は、CPU104、または、ディスプレイモニタ、プリンタ、ストレージなどのような他のコンポーネントから転送される情報をレンダリングすることができるデバイスである。
【0016】
いくつかの実施形態では、ストレージドライバ120に加えて、コンピュータ102は他のドライバも有してもよい。
【0017】
ネットワークアダプタ128は、コンピュータ102またはネットワーク176から受信するパケットを処理することを目的とした追加の操作を行う、追加のハードウェアロジックを有してもよい。更に、ネットワークアダプタ128は、コンピュータ102にかかる処理の負荷を更に軽減することを目的としてトランスポート・プロトコル・レイヤをコンピュータストレージドライバ120ではなくネットワークアダプタに実装するために、トランスポート・レイヤ・オフロード・エンジン(TOE)を実装してもよい。あるいは、トランスポート・レイヤは、ストレージドライバまたは他のドライバ120(例:オペレーティングシステムにより提供される)に実装されてもよい。
【0018】
いくつかの実施形態では、種々の構造および/またはバッファ(図示なし)がメモリ106に存在してもよく、また、メモリ106から独立したストレージユニットに存在してもよい。
【0019】
図1Bは、特定の実施形態が実装されるコンピュータ環境を示す。図1Bを参照すると、コンピュータ102は、ホストバスアダプタ(HBA)128a、128b、および128cと相互に作用するストレージドライバ120を有する。各HBA128a、128b、および128cは、ネットワークアダプタ128(図1A)として説明されうる。コンピュータ102およびHBA128a、128b、および128cは、イニシエータとして説明されてもよく、データストレージ140は、ターゲットとして説明されてもよい。データストレージ140は、論理ユニットを表す論理ユニット番号(LUN)を図示する。
【0020】
図2Aは、任意のクラス下位フィルタドライバを含むWindowsストレージデバイス・ドライバスタック200を示すブロック図である。ストレージデバイス・ドライバスタック200は、ストレージクラスドライバ212に対してパケットを送受信しうる上位レイヤプロトコル(ULP)210を有する。ストレージクラスドライバ212は、クラス下位フィルタドライバ214に対してパケットを送受信しうる。いくつかの実施形態では、クラス下位フィルタドライバは任意である。クラス下位フィルタドライバ214は、ポートドライバ216に対してパケットを送受信しうる。ポートドライバ216は、ミニポートドライバ218と通信する。ミニポートドライバ218は、実施形態により提供されるコールバックインタフェースによって、クラス下位フィルタドライバ214と通信することができる。
【0021】
実施形態は、HBA接続間のフェイルオーバおよび負荷分散を提供することを目的として、クラス下位フィルタドライバ214に基づく特別なフィルタドライバをポートドライバ216の上に提供する。フィルタドライバは、HBAコンテキスト・スイッチングおよびパス・コントロールを処理する。また、フィルタドライバはパケットの分散も提供する。特に、フィルタドライバは、ストレージクラスドライバ212とポートドライバ216の間の入力/出力リクエストパケット(IRP)に含まれるSCSIリクエストブロック(SRB)を探索する。いくつかの実施形態では、フィルタドライバは下位レベルのクラスフィルタドライバとして実装される。フィルタドライバは、ストレージデバイスのインスタンスが作成されるとすぐに通知される。そして、フィルタドライバは、ストレージドライバスタック200のクラス下位フィルタドライバ214の下に設置される。
【0022】
図2Bは、いくつかの実施形態によるSCSI環境において使用されうる、フェイルオーバおよび負荷分散機能を有するストレージデバイス・ドライバスタック250を示すブロック図である。ストレージデバイス・ドライバスタック250は、Windows 2000、Windows XP、またはWindows .NETオペレーティングシステムと共に使用されてもよい。ストレージデバイス・ドライバスタック250は、SCSIディスククラスドライバ262に対してIRPを送受信しうる上位レイヤプロトコル(ULP)260を有する。SCSIディスククラスドライバ262は、下位レベルクラスフィルタドライバ264に対してSRB/IRPを送受信しうる。下位レベルクラスフィルタドライバ264は、SCSIポートドライバ266に対してSRB/IRPを送受信しうる。SCSIポートドライバ266は、SCSIミニポートドライバ268と通信を行う。SCSIミニポートドライバ268は、コールバックインタフェースによって下位レベルクラスフィルタドライバ264と通信することができる。
【0023】
図3は、いくつかの実施形態によるフェイルオーバおよび負荷分散機能を有するイニシエータの構成例を示すブロック図である。図3を参照すると、ストレージクラスドライバは、ポート/ミニポートドライバと通信するフィルタドライバと通信する。例えば、ストレージクラスドライバは、ストレージクラスドライバ1デバイスオブジェクト310およびフィルタドライバ1デバイスオブジェクト312を使用してフィルタドライバと通信し、フィルタドライバは、フィルタドライバ1デバイスオブジェクト312およびポート/ミニポートドライバデバイスオブジェクト316、314を使用してポート/ミニポートドライバと通信する。ミニポートドライバは、ポートドライバのエクスポートルーチンによってHBAと通信する。各HBAは、1つ以上のターゲットへの通信パスを有する。例えば、HBA1 318は、ターゲット1 320およびターゲット2 340への通信パスを有する。HBA2 338は、ターゲット1 320およびターゲット2 340への通信パスを有する。HBA3 358は、ターゲット2 340およびターゲット3360への通信パスを有する。実施形態は、いくつかのHBAが同一ターゲットへの接続を有する複数のHBA318、338、および358間におけるフェイルオーバおよび負荷分散を提供する。いくつかの実施形態では、提案されるフェイルオーバおよび負荷分散の手法は、iSCSIポータル・グループ・コンセプト上に構築されるHBAチーミングに基づく。
【0024】
また、いくつかの実施形態では、1つのHBAチームは、ターゲットおよびLUNに基づいて構成され(すなわち、ターゲットの特定のLUNに対してデータを送信できるHBAがHBAチームにグループ化される)、1つのHBAは、それぞれ異なる複数のHBAチームに属してもよい。例えば、データは、ターゲット2 340内の同一のLUN(図示なし)に対して、フィルタドライバ1デバイスオブジェクト312、フィルタドライバ4デバイスオブジェクト332、およびフィルタドライバ5デバイスオブジェクト352を含むデータパスを通過しうる。これらの各データパスは、異なるHBA(それぞれHBA1 318、HBA2 338、HBA3 358)を通過するので、HBA1 318、HBA2 338、およびHBA3 358は、1つのHBAチームに属する。すなわち、HBAチームの各HBAに対して、ターゲット2 340内のLUNに送信されるデータは、HBAチーム内の各HBAを通過してもよく(フェイルオーバ)、また、HBAチーム内の各HBAを同時に通過してもよい(負荷分散)。他の例としては、ターゲット1 320のLUN(図示なし)へのデータパスは、HBA1 318およびHBA2 338を通過するので、HBAチームは、HBA1 318およびHBA2 338によっても形成される。
【0025】
実施形態は、フィルタドライバにフェイルオーバおよび負荷分散機能を実装することを目的として、新しいコールバックインタフェースを提供する。
【0026】
フェイルオーバ技術は、第1のHBAまたは第1のHBAを通過するデータパスが障害状態になった場合に、ターゲットへの通信パスにおける高可用性(すなわち、同一のターゲットに接続された第2のHBAにパケットが送信される)を提供する。フェイルオーバを行うことを目的として、実施形態は、第2のストレージデバイス・スタックの隠蔽、および、通知機構を提供する。
【0027】
図4Aおよび4Bは、いくつかの実施形態による第2のストレージデバイス・スタックの隠蔽の処理を示す。制御は、論理ユニットに対してストレージデバイス・スタックが構築される、ブロック400から開始する。ブロック402において、このストレージデバイス・スタックは論理ユニットに対する第1のストレージデバイス・スタックであるかどうかが判定される。それが第1のストレージデバイス・スタックである場合、処理はブロック404に進み、そうでない場合、処理はブロック404に進む。すなわち、同一のターゲットに対していくつかのHBAが接続されている場合には、各HBAに対してフィルタドライバがSRBを処理およびリダイレクトできるように、各HBAのターゲットにある各SCSI LUNに対してストレージデバイス・スタックが作成される。同一ターゲットに対して構築された各ストレージデバイス・スタック上にファイルシステムがマウントされると、同一ストレージデバイスのインスタンスに対する複数のアクセスによる、同期の問題に至る可能性がある。このため、各LUNに対する第1のストレージデバイス・スタックは、「プライマリ」ストレージデバイス・スタックとなる。その後、そのLUNに対して構築されたその他すべてのストレージデバイス・スタックは、「セカンダリ」ストレージデバイス・スタックとして扱われる。このように、ブロック404において、ストレージデバイス・スタックは、プライマリ・ストレージデバイス・スタックとして指名される。ブロック406において、ストレージデバイス・スタックは、セカンダリ・ストレージデバイス・スタックとして指名される。
【0028】
例えば、ストレージクラスドライバ1デバイスオブジェクト310、フィルタドライバ1デバイスオブジェクト312、ポート/ミニポートドライバデバイスオブジェクト314および316のストレージデバイス・スタックは、この例では、プライマリ・ストレージデバイス・スタックとして指名される。ストレージクラスドライバ1aデバイスオブジェクト330、フィルタドライバ4デバイスオブジェクト332、ポート/ミニポートドライバデバイスオブジェクト334および336のストレージデバイス・スタックは、この例では、セカンダリ・ストレージデバイス・スタックとして指名される。ストレージクラスドライバ1aデバイスオブジェクト350、フィルタドライバ5デバイスオブジェクト352、ポート/ミニポートドライバデバイスオブジェクト354および356のストレージデバイス・スタックは、この例では、セカンダリ・ストレージデバイス・スタックとして指名される。フィルタドライバは、1つのプライマリ・ストレージデバイス・スタック(例:ストレージデバイス・スタック310、312、314、および316)上へのファイルシステムのマウントを可能にし、セカンダリ・ストレージデバイス・スタック(例:ストレージデバイス・スタック330、332、334、および336、ストレージデバイス・スタック350、352、354、および356)上へのファイルシステムのマウントを防ぐ。同様に、ストレージクラスドライバ2デバイスオブジェクトから始まるストレージデバイス・スタックは、プライマリ・ストレージデバイス・スタックであり、ストレージクラスドライバ2aから始まるストレージデバイス・スタックは、セカンダリ・ストレージデバイス・スタックである。セカンダリ・ストレージデバイス・スタックの隠蔽により、データは、プライマリ・ストレージデバイス・スタックを経由して送信され、また、セカンダリ・ストレージデバイス・スタックを経由しない。
【0029】
図4Bを参照すると、制御は、セカンダリ・ストレージデバイス・スタックからのパケットの処理が成功ステータスで完了される、ブロック420から開始する。ブロック422において、フィルタドライバは、成功ステータスをエラーステータスに変更する。ブロック424において、フィルタドライバは、センスキーの値を準備未完了にセットする。ブロック426において、フィルタドライバは、ストレージデバイスにメディアが存在しないことを示すセンスコードをセットする。このように、いくつかの実施形態では、セカンダリ・ストレージデバイス・スタック上へのファイルシステムのマウントを阻止することを目的として、フィルタドライバは、セカンダリ・ストレージデバイス・スタックからの処理が完了したSRBのステータスを成功ステータスからエラーステータス(例:SRB_STATUS_ERROR)にフリップし、センスキーの値をSCSI_SENSE_NOT_READYにセットし、追加のセンスコードをSCSI_ADSENSE_NO_MEDIA_IN_DEVICEにセットする。
【0030】
図5A、5B、および5Cは、いくつかの実施形態による通知機構の処理を示す。フィルタドライバおよびミニポートドライバは、相互に作用するためのプロトコルを実装する。
【0031】
図5Aは、いくつかの実施形態によるミニポートドライバに実装されたフェイルオーバ処理の動作を示す。図5Aを参照すると、制御は、ミニポートドライバにおいて特定のHBAデータパスに対するパケットが受信される、ブロック500から開始する。「HBAデータパス」は、HBAを経由するミニポートからターゲットに至るデータパスとして説明されてもよい。パケットの1つのタイプはSRBでもよい。パケットの1つのタイプは、SRBであってもよい。ブロック502において、HBAデータパスが障害状態となると処理はブロック504に進み、HBAデータパスが障害状態でない場合は、処理はブロック508に進む。
【0032】
ブロック504において、ミニポートドライバは、通知コールバックメソッドを使用してHBAデータパスが障害状態となったことをフィルタドライバに通知する。任意に、ミニポートドライバは、フィルタドライバに新規のHBAデータパス識別子を提供し、フィルタドライバは、パケットを新規のHBAデータパスにリダイレクトする。例えば、HBA1 318、HBA2 338、およびHBA3 358によって形成されるHBAチームに対しては、HBA1 318が障害状態となった場合、ミニポートは、HBA2 338およびHBA3 358のいずれかを含む新規のHBAデータパスを指定してもよい。いくつかの実施形態では、フィルタドライバのデバイス追加方法として、通知コールバックメソッドへのポインタおよび現在のHBAデータパスに対するフィルタデバイス・エクステンションへのポインタが、I/Oコントロール(IOCTL)によってミニポートドライバに送信されてもよい。いくつかの実施形態では、HBAデータパスが障害状態となると、ミニポートドライバは、状態パラメータと現在のパスに相当するフィルタドライバのデバイスエクステンションを指すポインタパラメータと共に、通知コールバックメソッドをコールすることによって、HBAデータパスが障害状態となったことをフィルタドライバに通知する。
【0033】
ミニポートドライバは、ポートドライバにSRBキューをフリーズまたはバスリセットを開始させる可能性があるので、エラー状態ではパケットの処理を完了しない。その代わり、ブロック506において、ミニポートドライバは、障害状態となったHBAデータパスに対するペンディング(すなわち、未処理)および新規パケットに対する処理を成功ステータスで完了する。ブロック508では、HBAデータパスが障害状態ではないので、ミニポートドライバは、そのHBAデータパスによってターゲットにパケットを送信する。
【0034】
例えば、ミニポート316において、HBA1 318に送信するSRBが受信されかつHBA1 318が障害状態にあると、ミニポートドライバ316は、SRBを他のHBAにリダイレクトするようにフィルタドライバ312に通知することを目的として、HBA1 318に対する全てのペンディングSRBの処理をプロトコルの一部として完了する。例えば、フィルタドライバ312は、SRBをHBA2 338またはHBA3 358にリダイレクトしてもよい。
【0035】
図5Bは、いくつかの実施形態によるフェイルオーバを行うことを目的としてフィルタドライバに実装される動作を示す。制御は、フィルタドライバがHBAデータパス障害通知を受信する、ブロック510から開始する。ブロック512において、新規HBAデータパスがミニポートドライバによって指定された場合、処理はブロック514に進み、指定されなかった場合、処理はブロック518に進む。ブロック514において、フィルタドライバは、障害状態のパスから処理が完了された各パケットのステータスを成功からビジーに変更する。このステータスの変更により、クラスドライバは、パケットを再送信する。パケットが再送信されると、フィルタドライバは、それらを新規の要求として扱い、可能であれば、それらを新規パスにリダイレクトする。
【0036】
ブロック516において、フィルタドライバは、クラスドライバによってミスされたパケットを指定されたHBAデータパスに送信する。ブロック518においては、新規パスの識別子が指定されていないので、フィルタドライバは、新規パスを選択する。いくつかの実施形態では、HBAチームにパスが1つだけ存在する場合には、フィルタドライバは、障害状態となったHBAデータパスに新規パケットを送信し続ける(例:PATH_THROUGHモードで運用)。
【0037】
図5Cは、いくつかの実施形態による、HBAが修復されたときにミニポートドライバに実装される動作を示す。制御は、HBAデータパスが修復される(例:HBAがオンライン状態となる、または、このHBAを経由する以前障害状態だったデータパスが修復される)、ブロック520から開始する。HBAデータパスが修復されると、ミニポートドライバは、通知コールバックメソッド(ブロック522)をコールすることによってフィルタドライバに通知する。いくつかの実施形態では、ミニポートドライバは、状態パラメータおよび現在のパスに相当するフィルタドライバのデバイスエクステンションを指すポインタパラメータと共に通知コールバックメソッドをコールすることによって、HBAデータパスが修復されたことをフィルタドライバに通知する。ミニポートドライバは、フィルタドライバが新規パケットをリダイレクトすべき新規パスの識別子をフィルタドライバに送信してもよい。ブロック524において、新規HBAデータパスが指定された場合、処理はブロック526に進み、指定されない場合には、処理はブロック528に進む。
【0038】
修復通知のあと、新規HBAデータパスが指定された場合は、フィルタドライバは、新規パケットを新規HBAデータパスに送信する(ブロック526)。新規HBAデータパスが指定されない場合は、フィルタドライバは、現在のアクティブパスにパケットを送信し続ける。
【0039】
フェイルオーバ処理に加えて、実施形態は、複数のHBAに及ぶ複数のHBAデータパス間におけるI/O負荷の分散を行うフィルタドライバを提供する。実施形態は、静的な負荷分散および動的な負荷分散を提供する。
【0040】
図6Aおよび図6Bは、いくつかの実施形態による負荷分散の動作を示す。負荷分散を行うことを目的として、HBAチームの各HBAデータパスは、各データパスが処理することができる負荷の全I/O負荷に対する割合を表す、負荷分散シェアと呼ばれる値を有する。
【0041】
図6Aは、いくつかの実施形態による静的な負荷分散の動作を示す。制御は、フィルタドライバにおいて送信されるデータパケットが受信される、ブロック600から開始する。ブロック602において、フィルタドライバは、HBAチームの各HBAデータパスに関連する負荷分散シェアを決定する。静的な負荷分散を行うことを目的として、負荷分散シェアは、手動で指定され、例えばWindowsレジストリなどに保存されてもよい。ミニポートドライバは、負荷分散シェアの値を取得し、通知コールバックメソッドによってそれらをフィルタドライバに転送する。負荷分散シェアの値を受信すると、フィルタドライバは、負荷分散シェアを新しい値に更新する。
【0042】
ブロック604において、フィルタドライバは、各HBAデータパスに対して送信するパケットの可変平均データ長(MDL)を決定する(例:パケットのSCSI転送の長さ)。いくつかの実施形態では、負荷分散は、パケットの数ではなく転送されたパケットの実際のデータ長に基づいてもよい。ブロック606において、フィルタドライバは、各HBAデータパスに対するデータ分担量を決定する。いくつかの実施形態では、HBAデータパスのデータ分担量は、HBAデータパスのMDLと、HBAデータパスの負荷分散シェアとHBAチームにおける負荷分散シェアの最小値の割合との積(すなわち、データ分担量=MDL*(負荷分散シェア/チームにおける負荷分散シェアの最小値))である。
【0043】
いくつかの実施形態では、MDLは、各パケットまたはパケットの各グループに対して再計算され、データ分担量は、定期的に再計算される(例:一定数のパケットが転送された後)。定期的な再計算の間隔は、HBAチームのHBAデータパスの数と調整可能な負荷分散の更新頻度の係数との積によって決定されてもよい。負荷分散の更新頻度の係数は、負荷分散の調整および性能の向上を可能にする。負荷分散の更新頻度は、例えばシステム管理者によって設定されてもよい。データ分担量を更新する頻度が高いほど、指定された負荷分散シェアと実際の負荷分散シェア間の違いは小さくなる。また、より頻繁な更新は、プロセッサ時間をより消費する可能性がある。
【0044】
ブロック608において、フィルタドライバは、ターゲット論理ユニットに対する最大コマンド数を決定する。ブロック610において、フィルタドライバは、データ分担量またはターゲット論理ユニットに対する最大コマンド数に達するまでパケットが1つのHBAデータパスに送信されるラウンドロビン技術を使用して、パケットを送信するHBAデータパスを選択する。
【0045】
すなわち、静的な負荷分散を行うことを目的として、ラウンドロビン技術が使用されてもよい。いくつかの実施形態では、ラウンドロビンの処理を行うことを目的として、現在のHBAチームの正常なHBAデータパスは、ダブルリンクドリストに集められる。そして、HBAデータパスは、負荷分散処理の間、このリストを使って切り替えられる。あるいは、パケットフローは、次のHBAチームメンバに切り替えられる。すなわち、いくつかの実施形態では、送信されたデータ量がHBAデータパスに対して以前計算されたデータ転送量またはターゲットLUN単位の最大SCSIコマンド数に達するまで、そのパスに対するパケットの送信は継続する。
【0046】
静的な負荷分散においては、HBAデータパス間における実際のパケットの分散は、指定された分散(例:例えばシステム管理者によって指定された負荷分散シェア)とは異なってもよい。実際の分散と指定された分散の違いが小さいほど、静的な負荷分散の品質は高くなる。指定された負荷分散シェアの値は、静的な負荷分散の性能に影響を与える。
【0047】
図6Bは、いくつかの実施形態による動的な負荷分散の動作を示す。動的な負荷分散は、パス間におけるI/O負荷を動的に調整することにより、他のパスに使用可能な帯域が存在する間は1つのHBAデータパスに対する混雑を回避する。このように、動的な負荷分散は、ストレージ/ネットワークの利用可能な帯域の、より効率的な使用を実現しようとする。
【0048】
制御は、フィルタドライバがデータパケットを受信する、ブロック620から開始する。ブロック622において、フィルタドライバは、HBAチームの各HBAデータパスに対するデータ転送速度を決定する。いくつかの実施形態では、各HBAデータパスのデータ転送スピードは、転送されたデータの合計に対するデータ転送に費やした時間の合計の比率として計算される。更新ルーチンは、転送速度が更新される頻度を決定する。動的な負荷分散における調整可能なパラメータは、更新ルーチンが起動される頻度を定義する転送速度の更新頻度の係数である。転送速度の更新頻度の係数は、サブシステム特有の動作に基づいて調整されてもよい。
【0049】
ブロック624において、フィルタドライバは、各HBAデータパスの負荷分散シェアを更新する。HBAチームの各パスに対する負荷分散シェアは、そのデータ転送速度に比例して更新されてもよい(例:選択されたHBAデータパスのデータ転送速度/HBAチームのデータ転送速度)。ブロック626において、フィルタドライバは、負荷分散シェアに基づいてパケットを送信するHBAデータパスを選択する。
【0050】
フェイルオーバおよび負荷分散モードで動作している場合には、HBAの障害は、1つ以上のHBAチームメンバを使用不可能にする。いくつかの実施形態では、残りのHBAチームメンバは、動作を継続して指定された負荷分散シェア間において同一の割合を維持する。
【0051】
このように、いくつかの実施形態は、高可用性と静的および動的な負荷分散との組み合わせを提供する。このソリューションを実装するソフトウェアモジュールは、比較的小規模でありシステムに対して小さいオーバヘッドしか課さない。いくつかの実施形態は、デバイススタックに対するフィルタドライバの挿入・削除によって、実施形態のソリューションによって提供される機能を迅速かつ容易に有効化および無効化する能力を提供する。実施形態は、種々のプラットフォーム(例:Windowsプラットフォーム(32ビットまたは64ビット))と共用できる。また、実施形態は、いかなるSCSIおよび/またはiSCSIベースのSANおよび/またはネットワー・アタッチト・ストレージ(NAS)システムに対しても適用可能である。更に、フェイルオーバおよび負荷分散に関する実施形態は、複数(2つ以上)のHBAをサポートする。
本発明の実施例に関する追加の詳細な説明
【0052】
上述のフェイルオーバおよび負荷分散の技術は、標準的なプログラミングおよび/またはソフトウェア、ファームウェア、ハードウェア、またはそのいかなる組み合わせを開発する工業技術を使用した方法、装置、または製品として実装されてもよい。本明細書における「製品」は、ハードウェアによって制御される論理(例:統合回路チップ、プログラマブル・ゲート・アレイ(PGA)、特定用途向け集積回路(ASIC)、など)に実装されたコードまたは論理、または、磁気ストレージ媒体(例:ハードディスクドライブ、フロッピーディスク、テープ、など)、光ストレージ(CD−ROM、光ディスク、など)、揮発性および非揮発性メモリデバイス(例:EEPROM、ROM、PROM、RAM、DRAM、SRAM、ファームウェア、プログラマブルロジック、など)などの、コンピュータ読み取り可能な媒体を指す。コンピュータ読み取り可能な媒体内のコードは、プロセッサによってアクセスされ実行される。好ましい実施形態が実装されたコードは、更に、転送メディアまたはネットワーク上のファイルサーバからアクセス可能であってもよい。このような場合、コードが実装される製品は、ネットワーク転送線、ワイヤレス転送メディア、空間を伝播する信号、ラジオ波、赤外線信号などの転送メディアを備えてもよい。このように、「製品」は、コードが埋め込まれた媒体を含んでもよい。更に、製品は、コードが埋め込まれ、処理され、実行されるハードウェアおよびソフトウェアコンポーネントの組み合わせを含んでもよい。当然のことながら、当業者は、本発明の実施形態の範囲から逸脱することなくこの構成に対して多くの修正が加えられうること、および、製品はいかなる従来技術の情報を担う媒体を含んでもよいことを認識するであろう。
【0053】
上述の実施形態では、一定のロジックは、ドライバに実装された。代わりの実施形態では、ドライバおよび/またはネットワークアダプタに実装されたロジックは、その全てまたは一部がネットワークハードウェアに実装されてもよい。
【0054】
いくつかの実施形態では、ネットワークアダプタは、PCIカードとして実装されてもよい。代わりの実施形態では、ネットワークアダプタは、コンピュータ102のマザーボードに設置された集積回路コンポーネントを含んでもよい。
【0055】
いくつかの実施形態では、ネットワークアダプタは、ネットワークアダプタのポートに接続されたケーブルを介してデータを転送するように設定されてもよい。代わりの実施形態では、ネットワークアダプタの実施形態は、ワイヤレスLANのようなワイヤレスネットワークまたは接続によってデータを転送するように設定されてもよい。
【0056】
図4A、図4B、図5A、図5B、図5C、図6A、および図6Cに示される論理は、一定のイベントが一定の順番で発生することを示す。代わりの実施形態では、ある動作は、異なる順番で実行されてもよく修正または削除されてもよい。更に、上述の論理に動作を追加しても、上述の実施形態と同じである。また、上述の処理は、順次に実行されてもよくまたは並列に実行されてもよい。更に、動作は、1つのプロセッシングユニットまたは分散プロセッシングユニットによって実行されてもよい。
【0057】
上述の種々の実施形態に関する説明は、本発明を図示および説明することを目的として提供された。これらの説明は、本発明の実施形態の全てを説明していないし、また、これらに限定されない。上記の説明により、多くの修正またはバリエーションが可能である。本発明の実施形態の範囲は、上述の詳細な説明によってではなく、添付の特許請求の範囲によって限定されることが意図される。上述の明細書、例、およびデータは、本発明の実施形態における構成の製造および使用に関する完全な説明を提供している。本発明の実施形態の本質および範囲から逸脱することなく、多くの実施形態が構築されうることから、本発明の実施形態は下記に添付の特許請求の範囲に属する。

【特許請求の範囲】
【請求項1】
第2のネットワークアダプタに接続された第1のネットワークアダプタ、および前記第1のネットワークアダプタを通過するデータパスのうちの少なくとも1つが障害状態となった場合に、フィルタドライバを有するコンピュータシステムがフェイルオーバを行う方法であって、
前記方法は、
前記フィルタドライバによって、前記第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過する前記データパスのうちの少なくとも1つが障害状態となったことを示すパス障害通知を受信することと、
前記フィルタドライバによって、前記第1のネットワークアダプタに送信されたパケットを前記第2のネットワークアダプタにリルートすることと
を備える方法。
【請求項2】
前記フィルタドライバによって、前記パス障害通知が受信される前に前記第1のネットワークアダプタに対して送信された各パケットの成功ステータスをビジーステータスに変更することを更に備える請求項1に記載の方法。
【請求項3】
前記フィルタドライバによって、前記第2のネットワークアダプタを含む新規データパスを決定することを更に備える請求項1に記載の方法。
【請求項4】
前記フィルタドライバによって、前記第1のネットワークアダプタが修復されたことを示す通知を受信することと、
前記フィルタドライバによって、前記通知が新規データパスを指定したかどうかに基づいて新規データパケットを送信するデータパス決定することと
を更に備える請求項1に記載の方法。
【請求項5】
前記フィルタドライバによって、論理ユニットに対する第1のストレージデバイス・スタックが構築されたことに応じて前記第1のストレージデバイス・スタックをプライマリ・ストレージデバイス・スタックとして指定することと、
前記フィルタドライバによって、前記論理ユニットに対する次のストレージデバイス・スタックが構築されたことに応じて前記次のストレージデバイス・スタックをセカンダリ・ストレージデバイス・スタックとして指定することと
を更に備える請求項1に記載の方法。
【請求項6】
前記フィルタドライバによって、前記セカンダリ・ストレージデバイス・スタック上へのファイルシステムのマウントを防ぐことを更に備える請求項5に記載の方法。
【請求項7】
フィルタドライバに接続されたミニポートドライバに接続されたネットワークアダプタ、および前記ネットワークアダプタを通過するデータパスのうちの少なくとも1つが障害状態となった場合に、フェイルオーバを行う方法であって、
前記方法は、
前記ミニポートドライバによって、前記ネットワークアダプタが障害状態となったことを判定することと、
前記ミニポートドライバによって、前記ネットワークアダプタが障害状態となったことを前記フィルタドライバに通知することと
を備える方法。
【請求項8】
前記ミニポートドライバによって、パケットをリルートすることを目的として前記フィルタドライバによって使用される新規データパスを指定することを更に備える請求項7に記載の方法。
【請求項9】
前記ミニポートドライバによって、前記第1のネットワークアダプタに送信されたペンディングパケットの処理を成功ステータスで完了することを更に備える請求項7に記載の方法。
【請求項10】
前記ミニポートドライバによって、前記ネットワークアダプタが修復されたことを判定することと、
前記ミニポートドライバによって、前記ネットワークアダプタが修復されたことを前記フィルタドライバに通知することと
を更に備える請求項7に記載の方法。
【請求項11】
フィルタドライバに実装される、静的な負荷分散を行う方法であって、
前記フィルタドライバは
複数のデータパスの各データパスに対するデータ分担量を決定することと、
ターゲット論理ユニットに対する最大コマンド数を特定することと、
前記データ分担量および前記最大コマンド数に基づいてパケットを送信するデータパスを選択することと
を実行する方法。
【請求項12】
前記フィルタドライバは、
チームの各データパスに関連する負荷分散シェアを決定することと、
各データパスに対して送信されるパケットの平均データ長を決定することと
を更に実行する請求項11に記載の方法。
【請求項13】
前記データパスに対する前記データ分担量および最大コマンド数のうちの少なくとも1つに達するまで、パケットが選択されたデータパスに送信されるラウンドロビン技術を使用して、前記データパスが選択される請求項11に記載の方法。
【請求項14】
フィルタドライバに実装される動的な負荷分散を行う方法であって、
前記フィルタドライバは
複数のデータパスの各データパスに対するデータ転送速度を決定することと、
前記複数のデータパスの各データパスに対する前記データ転送速度に基づいて前記複数のテータパスの各データパスに対する負荷分散シェアを更新することと、
前記複数のデータパスの各データパスに対する前記負荷分散シェアに基づいてパケットを送信するデータパスを選択することと
を実行する方法。
【請求項15】
前記複数のデータパスの各データパスに対する前記データ転送速度が、転送されたデータの合計に対するデータ転送に費やした時間の合計の比率として計算される請求項14に記載の方法。
【請求項16】
前記データ転送速度が決定される頻度は調整可能である請求項14に記載の方法。
【請求項17】
ネットワークおよびデータストレージに接続されたシステムであって、
前記システムは
ホストコンピュータと、
前記ホストコンピュータに接続された、前記データストレージへの入力/出力(I/O)アクセスを管理するストレージコントローラと、
第1のネットワークアダプタと、
第2のネットワークアダプタと、
前記第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過するデータパスのうち少なくも1つが障害状態となったことを示すパス障害通知を受信し、前記第1のネットワークアダプタに送信されたパケットを前記第2のネットワークアダプタにリルートすることができる前記ホストコンピュータ内のフィルタドライバと
を備えるシステム。
【請求項18】
前記フィルタドライバは、更に、前記パス障害通知が受信される前に前記第1のネットワークアダプタに送信された各パケットの成功ステータスをビジーステータスに変更することができる請求項17に記載のシステム。
【請求項19】
前記フィルタドライバは、更に、前記第2のネットワークアダプタを含む新規データパスを決定することができる請求項17に記載のシステム。
【請求項20】
前記フィルタドライバは、
前記第1のネットワークアダプタが修復されたことを示す通知の受信と、
前記通知が新規データパスを指定したかどうかに基づく新規データパケット用のデータパスの決定と
を更に行うことができる請求項17に記載のシステム。
【請求項21】
前記フィルタドライバは、
論理ユニットに対して第1のストレージデバイス・スタックが構築されたことに応じて、前記第1のストレージデバイス・スタックをプライマリ・ストレージデバイス・スタックとして指定することと、
前記論理ユニットに対して次のストレージデバイス・スタックが構築されたことに応じて、前記次のストレージデバイス・スタックをセカンダリ・ストレージデバイス・スタックとして指定することと
を更に行うことができる請求項17に記載のシステム。
【請求項22】
前記フィルタドライバは、更に、前記セカンダリ・ストレージデバイス・スタック上へのファイルシステムのマウントを防ぐ請求項21に記載のシステム。
【請求項23】
ネットワークおよびデータストレージに接続されたシステムであって、
前記システムは、
ホストコンピュータと、
前記ホストコンピュータに接続された、前記データストレージへの入力・出力(I/O)アクセスを管理するストレージコントローラと、
前記ホストコンピュータ内のフィルタドライバと、
前記ホストコンピュータ内の少なくとも2つのネットワークアダプタと、
複数の前記ネットワークアダプタのうち少なくとも1つが障害状態となったことを判定し、前記フィルタドライバに対して前記ネットワークアダプタが障害状態となったことを通知することができる前記ホストコンピュータ内のミニポートドライバと
を備えるシステム。
【請求項24】
前記ミニポートドライバは、更に、
パケットをリルートすることを目的として前記フィルタドライバによって使用される新規データパスを指定することができる請求項23に記載のシステム。
【請求項25】
前記ミニポートドライバは、更に、
障害状態となった前記ネットワークアダプタに送信されたペンディングパケットの処理を成功ステータスで完了することができる請求項23に記載のシステム。
【請求項26】
前記ミニポートドライバは、更に、
障害状態となった前記ネットワークアダプタが修復されたことを判定し、
前記フィルタドライバに対して障害状態となった前記ネットワークアダプタが修復されたことを通知することができる請求項23に記載のシステム。
【請求項27】
ネットワークおよびデータストレージに接続されたシステムであって、
前記システムは
ホストコンピュータと、
前記ホストコンピュータに接続された、前記データストレージへの入・出力(I/O)アクセスを管理するストレージコントローラと、
複数のデータパスの各データパスに対してデータ分担量を決定し、ターゲット論理ユニットに対する最大コマンド数を特定し、前記データ分担量および前記最大コマンド数に基づいてパケットを送信するデータパスを選択することができるフィルタドライバと
を備えるシステム。
【請求項28】
前記フィルタドライバは、更に、
チーム内の各データパスに関連する負荷分散シェアを決定することと、
各データパスに対して送信するパケットの平均データ長を決定することと
を行う請求項27に記載のシステム。
【請求項29】
前記データパスに対するデータ分担量および最大コマンド数のうちの少なくとも1つに達するまで選択されたデータパスにパケットが送信されるラウンドロビン技術を使用して
前記データパスが選択される請求項27に記載のシステム。
【請求項30】
ネットワークおよびデータストレージに接続されたシステムであって、
前記システムは
ホストコンピュータと、
前記ホストコンピュータに接続された、前記データストレージへの入・出力(I/O)アクセスを管理するストレージコントローラと、
複数のデータパスの各データパスに対するデータ転送速度を決定し、複数のデータパスの各データパスに対する前記データ転送速度に基づいて複数のデータパスの各データパスに対する負荷分散シェアを更新し、複数のデータパスの各データパスに対する前記負荷分散シェアに基づいてパケットを送信するデータパスを選択することができるフィルタドライバと
を備えるシステム。
【請求項31】
前記データ転送速度が、転送されたデータの合計に対するデータ転送に費やした時間の合計の比率として、前記複数のデータパスの各データパスに対して計算される請求項30に記載のシステム。
【請求項32】
前記データ転送速度が決定される頻度は調整可能である請求項30に記載のシステム。
【請求項33】
命令群を記録したストレージ媒体を備える製品であって、
コンピュータデバイスによって実行されることにより、
第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過するデータパスのうち少なくとも1つが障害状態となったことを示すパス障害通知を受信し、
前記第1のネットワークアダプタに送信されたパケットを前記第2のネットワークアダプタにリルートする
製品。
【請求項34】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
前記パス障害通知が受信される前に前記第1のネットワークアダプタに送信された各パケットの成功ステータスをビジーステータスに変更する
請求項33に記載の製品。
【請求項35】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
前記第2のネットワークアダプタを含む新規データパスを決定する
請求項33に記載の製品。
【請求項36】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
前記第1のネットワークアダプタが修復されたことを示す通知を受信し、
前記通知が新規データパスを指定したかどうかに基づいて新規データパケット用のデータパスを決定する
請求項33に記載の製品。
【請求項37】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
論理ユニットに対する第1のストレージデバイス・スタックの構築に応じて前記第1のストレージデバイス・スタックをプライマリ・ストレージデバイス・スタックに指定し、
前記論理ユニットに対する次のストレージデバイス・スタックの構築に応じて前記次のストレージデバイス・スタックをセカンダリ・ストレージデバイス・スタックに指定する
請求項33に記載の製品。
【請求項38】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
前記第2のストレージデバイス・スタック上へのファイルシステムのマウントを防ぐ
請求項37に記載の製品。
【請求項39】
命令群を記録したストレージ媒体を備える製品であって、
コンピュータデバイスによって実行されることにより、
前記ネットワークアダプタが障害状態となったことを判定し、
前記ネットワークアダプタが障害状態となったことを前記フィルタドライバに対して通知する
製品。
【請求項40】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
パケットをリルートすることを目的として前記フィルタドライバによって使用される新規データパスを指定する
請求項39に記載の製品。
【請求項41】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
前記第1のネットワークアダプタに送信されたペンディングパケットの処理を成功ステータスで完了する
請求項39に記載の製品。
【請求項42】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
前記ネットワークアダプタが修復されたことを判定し、
前記ネットワークアダプタが修復されたことを前記フィルタドライバに通知する
請求項39に記載の製品。
【請求項43】
命令群を記録したストレージ媒体を備える製品であって、
コンピュータデバイスによって実行されることにより、
複数のデータパスのうち各データパスに対するデータ分担量を決定し、
ターゲット論理ユニットに対する最大コマンド数を特定し、
前記データ分担量および前記最大コマンド数に基づいてパケットを送信するデータパスを選択する
製品。
【請求項44】
前記命令群がコンピュータデバイスによって実行されることにより、更に、
チーム内の各データパスに関連する負荷分散シェアを決定し、
各データパスに対して送信されるパケットの平均データ長を決定する
請求項43に記載の製品。
【請求項45】
前記データパスに対するデータ分担量および最大コマンド数のうちの少なくとも1つに達するまで選択されたデータパスにパケットが送信されるラウンドロビン技術を使用して、前記データパスが選択される請求項43に記載の製品。
【請求項46】
命令群を記録したストレージ媒体を備える製品であって、
コンピュータデバイスによって実行されることにより、
複数のデータパスの各データパスに対するデータ転送速度を決定し、
複数のデータパスの各データパスに対する前記データ転送速度に基づいて複数のデータパスの各データパスに対する負荷分散シェアを更新し、
複数のデータパスの各データパスに対する前記負荷分散シェアに基づいてパケットを送信するデータパスを選択する
製品。
【請求項47】
前記データ転送速度は、転送されたデータの合計に対するデータ転送に費やした時間の合計の比率として、前記複数のデータパスの各データパスに対して計算される請求項46に記載の製品。
【請求項48】
前記データ転送速度が決定される頻度は調整可能である請求項46に記載の製品。


【図1A】
image rotate

【図1B】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図6A】
image rotate

【図6B】
image rotate


【公表番号】特表2007−527172(P2007−527172A)
【公表日】平成19年9月20日(2007.9.20)
【国際特許分類】
【出願番号】特願2007−500707(P2007−500707)
【出願日】平成16年3月19日(2004.3.19)
【国際出願番号】PCT/RU2004/000105
【国際公開番号】WO2005/091141
【国際公開日】平成17年9月29日(2005.9.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.フロッピー
【出願人】(506239533)
【Fターム(参考)】