JP4430710B2 - フェイルオーバおよび負荷分散 - Google Patents

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

Info

Publication number
JP4430710B2
JP4430710B2 JP2007500707A JP2007500707A JP4430710B2 JP 4430710 B2 JP4430710 B2 JP 4430710B2 JP 2007500707 A JP2007500707 A JP 2007500707A JP 2007500707 A JP2007500707 A JP 2007500707A JP 4430710 B2 JP4430710 B2 JP 4430710B2
Authority
JP
Japan
Prior art keywords
network adapter
driver
filter driver
data path
hba
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007500707A
Other languages
English (en)
Other versions
JP2007527172A (ja
Inventor
ドロズドフ、アレクセイ
センニコフスキー、ミハイル
ベリャコフ、アレクサンダー
Original Assignee
ザクリトエ・アクツィオネルノエ・オブシェストヴォ インテル エー/オー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ザクリトエ・アクツィオネルノエ・オブシェストヴォ インテル エー/オー filed Critical ザクリトエ・アクツィオネルノエ・オブシェストヴォ インテル エー/オー
Publication of JP2007527172A publication Critical patent/JP2007527172A/ja
Application granted granted Critical
Publication of JP4430710B2 publication Critical patent/JP4430710B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)
  • Small-Scale Networks (AREA)
  • Computer And Data Communications (AREA)

Description

本開示内容は、フェイルオーバおよび負荷分散の方法、システム、およびプログラムに関する。
I_T nexusは、イニシエータ・デバイスとターゲット・デバイスとの組み合わせである。入力/出力(I/O)処理を要求するデバイスはイニシエータと呼ばれ、これらの処理を実行するデバイスはターゲットと呼ばれる。例えば、ホストコンピュータはイニシエータでありうるし、ストレージデバイスはターゲットでありうる。ターゲットは1つ以上の独立したストレージデバイスを有してもよい。
ホストバスアダプタ(HBA)は、オペレーティングシステムとスモール・コンピュータ・システム・インタフェース(SCSI)バスとを「接続」するハードウェアデバイスである。HBAは、ホストコンピュータと通信パスの間のデータ転送を管理する。HBAチーミングは、「チーム」を形成することを目的として集められたいくつかのHBAのグループを指し、チーム内の各HBAは、特定のターゲットに接続されかつ特定のターゲットにデータを送信しうる。HBAチームは、インターネット・スモール・コンピュータ・システム・インタフェース(iSCSI)(IETF RFC 3347,published February 2003)のポータル・グループ・コンセプト上に構築されてもよい。iSCSIは、2003年2月にIETFによって標準として定義された。ポータル・グループ・コンセプトは、ポータル間に広がる接続におけるセッションの調整機能を集合的にサポートする、iSCSIネットワークエンティティ内のネットワークポータルの集合と定義されうる。
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接続間で負荷を分散すること)を処理しうる。
しかし、従来技術では、それぞれが同一ターゲットに対して1つ以上の接続を有する、いくつかのHBA間におけるフェイルオーバおよび負荷分散を行うことが必要とされている。
明細書全体において参照番号が対応する部分を表す図面について、以下に説明する。
いくつかの実施形態が実装されるコンピュータ環境を示す図である。 特定の実施形態が実装されるコンピュータ環境を示す図である。 任意のクラス下位フィルタドライバを含む、Windowsストレージデバイス・ドライバスタックを示すブロック図である。 いくつかの実施形態によるSCSI環境において使用されうる、フェイルオーバおよび負荷分散機能を有するストレージデバイス・ドライバスタックを示すブロック図である。 いくつかの実施形態によるフェイルオーバおよび負荷分散機能を有するイニシエータの構成例を示すブロック図である。 いくつかの実施形態による第2のストレージデバイス・スタックを隠蔽する処理を示す第1の図である。 いくつかの実施形態による第2のストレージデバイス・スタックを隠蔽する処理を示す第2の図である。 いくつかの実施形態による通知機構の処理を示す第1の図である。 いくつかの実施形態による通知機構の処理を示す第2の図である。 いくつかの実施形態による通知機構の処理を示す第3の図である。 いくつかの実施形態による負荷分散の処理を示す第1の図である。 いくつかの実施形態による負荷分散の処理を示す第2の図である。
以下の説明では、本明細書の一部でありいくつかの実施形態を説明する、添付の図面が参照される。実施形態の範囲から逸脱することなく、その他の実施形態が利用されてもよく、また、構造および処理が変更されてもよいと理解されるべきである。
図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において実行される。
コンピュータ102は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータなどのような、従来技術のコンピュータデバイスを含んでもよい。いかなるCPU104およびオペレーティングシステム110が使用されてもよい。メモリ管理操作の一部として、メモリ106内のプログラムおよびデータは、ストレージ108にスワップされてもよい。
データストレージ140は、1つ以上の論理ユニット(すなわち、nが正の整数である場合は、n個の論理ユニット。いくつかの実施形態では、nは128より小さい。)を有する。理解を容易にすることを目的として、論理ユニット0、論理ユニット1、および論理ユニットnが示される。各論理ユニットは、独立したストレージデバイスとして説明されてもよい。更に、論理ユニット番号(LUN)は、各論理デバイスに対して関連付けられる。いくつかの実施形態では、HBAチームは、ターゲットおよびLUNに基づいて構成され(すなわち、あるターゲットの特定のLUNに対してデータを送信できるHBAが1つのHBAチームにグループ化される)、また、1つのHBAは、異なる複数のHBAチームに属してもよい。
各ネットワークアダプタ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によって、データのパケットを送受信することができる。
ストレージドライバ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パケット内にデータをパッケージすることを目的として、データをトランスポート・プロトコル・レイヤに送信する。
バスコントローラ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)、または従来技術のいかなるネットワーク通信プロトコルを実装してもよい。
ストレージ108は、内部ストレージデバイス、接続されたストレージデバイス、またはネットワーク経由でアクセス可能なストレージを含んでもよい。ストレージ108内のプログラムは、メモリ106にロードされてCPU104によって実行される。入力デバイス150は、CPU104に対するユーザ入力を提供することを目的として使用され、キーボード、マウス、ペンスタイラス、マイクロフォン、タッチ・センシティブ・ディスプレイスクリーン、または従来技術の他のいかなる有効化または入力機構を含んでもよい。出力デバイス152は、CPU104、または、ディスプレイモニタ、プリンタ、ストレージなどのような他のコンポーネントから転送される情報をレンダリングすることができるデバイスである。
いくつかの実施形態では、ストレージドライバ120に加えて、コンピュータ102は他のドライバも有してもよい。
ネットワークアダプタ128は、コンピュータ102またはネットワーク176から受信するパケットを処理することを目的とした追加の操作を行う、追加のハードウェアロジックを有してもよい。更に、ネットワークアダプタ128は、コンピュータ102にかかる処理の負荷を更に軽減することを目的としてトランスポート・プロトコル・レイヤをコンピュータストレージドライバ120ではなくネットワークアダプタに実装するために、トランスポート・レイヤ・オフロード・エンジン(TOE)を実装してもよい。あるいは、トランスポート・レイヤは、ストレージドライバまたは他のドライバ120(例:オペレーティングシステムにより提供される)に実装されてもよい。
いくつかの実施形態では、種々の構造および/またはバッファ(図示なし)がメモリ106に存在してもよく、また、メモリ106から独立したストレージユニットに存在してもよい。
図1Bは、特定の実施形態が実装されるコンピュータ環境を示す。図1Bを参照すると、コンピュータ102は、ホストバスアダプタ(HBA)128a、128b、および128cと相互に作用するストレージドライバ120を有する。各HBA128a、128b、および128cは、ネットワークアダプタ128(図1A)として説明されうる。コンピュータ102およびHBA128a、128b、および128cは、イニシエータとして説明されてもよく、データストレージ140は、ターゲットとして説明されてもよい。データストレージ140は、論理ユニットを表す論理ユニット番号(LUN)を図示する。
図2Aは、任意のクラス下位フィルタドライバを含むWindowsストレージデバイス・ドライバスタック200を示すブロック図である。ストレージデバイス・ドライバスタック200は、ストレージクラスドライバ212に対してパケットを送受信しうる上位レイヤプロトコル(ULP)210を有する。ストレージクラスドライバ212は、クラス下位フィルタドライバ214に対してパケットを送受信しうる。いくつかの実施形態では、クラス下位フィルタドライバは任意である。クラス下位フィルタドライバ214は、ポートドライバ216に対してパケットを送受信しうる。ポートドライバ216は、ミニポートドライバ218と通信する。ミニポートドライバ218は、実施形態により提供されるコールバックインタフェースによって、クラス下位フィルタドライバ214と通信することができる。
実施形態は、HBA接続間のフェイルオーバおよび負荷分散を提供することを目的として、クラス下位フィルタドライバ214に基づく特別なフィルタドライバをポートドライバ216の上に提供する。フィルタドライバは、HBAコンテキスト・スイッチングおよびパス・コントロールを処理する。また、フィルタドライバはパケットの分散も提供する。特に、フィルタドライバは、ストレージクラスドライバ212とポートドライバ216の間の入力/出力リクエストパケット(IRP)に含まれるSCSIリクエストブロック(SRB)を探索する。いくつかの実施形態では、フィルタドライバは下位レベルのクラスフィルタドライバとして実装される。フィルタドライバは、ストレージデバイスのインスタンスが作成されるとすぐに通知される。そして、フィルタドライバは、ストレージドライバスタック200のクラス下位フィルタドライバ214の下に設置される。
図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と通信することができる。
図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チーミングに基づく。
また、いくつかの実施形態では、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によっても形成される。
実施形態は、フィルタドライバにフェイルオーバおよび負荷分散機能を実装することを目的として、新しいコールバックインタフェースを提供する。
フェイルオーバ技術は、第1のHBAまたは第1のHBAを通過するデータパスが障害状態になった場合に、ターゲットへの通信パスにおける高可用性(すなわち、同一のターゲットに接続された第2のHBAにパケットが送信される)を提供する。フェイルオーバを行うことを目的として、実施形態は、第2のストレージデバイス・スタックの隠蔽、および、通知機構を提供する。
図4Aおよび4Bは、いくつかの実施形態による第2のストレージデバイス・スタックの隠蔽の処理を示す。制御は、論理ユニットに対してストレージデバイス・スタックが構築される、ブロック400から開始する。ブロック402において、このストレージデバイス・スタックは論理ユニットに対する第1のストレージデバイス・スタックであるかどうかが判定される。それが第1のストレージデバイス・スタックである場合、処理はブロック404に進み、そうでない場合、処理はブロック404に進む。すなわち、同一のターゲットに対していくつかのHBAが接続されている場合には、各HBAに対してフィルタドライバがSRBを処理およびリダイレクトできるように、各HBAのターゲットにある各SCSI LUNに対してストレージデバイス・スタックが作成される。同一ターゲットに対して構築された各ストレージデバイス・スタック上にファイルシステムがマウントされると、同一ストレージデバイスのインスタンスに対する複数のアクセスによる、同期の問題に至る可能性がある。このため、各LUNに対する第1のストレージデバイス・スタックは、「プライマリ」ストレージデバイス・スタックとなる。その後、そのLUNに対して構築されたその他すべてのストレージデバイス・スタックは、「セカンダリ」ストレージデバイス・スタックとして扱われる。このように、ブロック404において、ストレージデバイス・スタックは、プライマリ・ストレージデバイス・スタックとして指名される。ブロック406において、ストレージデバイス・スタックは、セカンダリ・ストレージデバイス・スタックとして指名される。
例えば、ストレージクラスドライバ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から始まるストレージデバイス・スタックは、セカンダリ・ストレージデバイス・スタックである。セカンダリ・ストレージデバイス・スタックの隠蔽により、データは、プライマリ・ストレージデバイス・スタックを経由して送信され、また、セカンダリ・ストレージデバイス・スタックを経由しない。
図4Bを参照すると、制御は、セカンダリ・ストレージデバイス・スタックからのパケットの処理が成功ステータスで完了される、ブロック420から開始する。ブロック422において、フィルタドライバは、成功ステータスをエラーステータスに変更する。ブロック424において、フィルタドライバは、センスキーの値を準備未完了にセットする。ブロック426において、フィルタドライバは、ストレージデバイスにメディアが存在しないことを示すセンスコードをセットする。このように、いくつかの実施形態では、セカンダリ・ストレージデバイス・スタック上へのファイルシステムのマウントを阻止することを目的として、フィルタドライバは、セカンダリ・ストレージデバイス・スタックからの処理が完了したSRBのステータスを成功ステータスからエラーステータス(例:SRB_STATUS_ERROR)にフリップし、センスキーの値をSCSI_SENSE_NOT_READYにセットし、追加のセンスコードをSCSI_ADSENSE_NO_MEDIA_IN_DEVICEにセットする。
図5A、5B、および5Cは、いくつかの実施形態による通知機構の処理を示す。フィルタドライバおよびミニポートドライバは、相互に作用するためのプロトコルを実装する。
図5Aは、いくつかの実施形態によるミニポートドライバに実装されたフェイルオーバ処理の動作を示す。図5Aを参照すると、制御は、ミニポートドライバにおいて特定のHBAデータパスに対するパケットが受信される、ブロック500から開始する。「HBAデータパス」は、HBAを経由するミニポートからターゲットに至るデータパスとして説明されてもよい。パケットの1つのタイプはSRBでもよい。パケットの1つのタイプは、SRBであってもよい。ブロック502において、HBAデータパスが障害状態となると処理はブロック504に進み、HBAデータパスが障害状態でない場合は、処理はブロック508に進む。
ブロック504において、ミニポートドライバは、通知コールバックメソッドを使用してHBAデータパスが障害状態となったことをフィルタドライバに通知する。任意に、ミニポートドライバは、フィルタドライバに新規のHBAデータパス識別子を提供し、フィルタドライバは、パケットを新規のHBAデータパスにリダイレクトする。例えば、HBA1 318、HBA2 338、およびHBA3 358によって形成されるHBAチームに対しては、HBA1 318が障害状態となった場合、ミニポートは、HBA2 338およびHBA3 358のいずれかを含む新規のHBAデータパスを指定してもよい。いくつかの実施形態では、フィルタドライバのデバイス追加方法として、通知コールバックメソッドへのポインタおよび現在のHBAデータパスに対するフィルタデバイス・エクステンションへのポインタが、I/Oコントロール(IOCTL)によってミニポートドライバに送信されてもよい。いくつかの実施形態では、HBAデータパスが障害状態となると、ミニポートドライバは、状態パラメータと現在のパスに相当するフィルタドライバのデバイスエクステンションを指すポインタパラメータと共に、通知コールバックメソッドをコールすることによって、HBAデータパスが障害状態となったことをフィルタドライバに通知する。
ミニポートドライバは、ポートドライバにSRBキューをフリーズまたはバスリセットを開始させる可能性があるので、エラー状態ではパケットの処理を完了しない。その代わり、ブロック506において、ミニポートドライバは、障害状態となったHBAデータパスに対するペンディング(すなわち、未処理)および新規パケットに対する処理を成功ステータスで完了する。ブロック508では、HBAデータパスが障害状態ではないので、ミニポートドライバは、そのHBAデータパスによってターゲットにパケットを送信する。
例えば、ミニポート316において、HBA1 318に送信するSRBが受信されかつHBA1 318が障害状態にあると、ミニポートドライバ316は、SRBを他のHBAにリダイレクトするようにフィルタドライバ312に通知することを目的として、HBA1 318に対する全てのペンディングSRBの処理をプロトコルの一部として完了する。例えば、フィルタドライバ312は、SRBをHBA2 338またはHBA3 358にリダイレクトしてもよい。
図5Bは、いくつかの実施形態によるフェイルオーバを行うことを目的としてフィルタドライバに実装される動作を示す。制御は、フィルタドライバがHBAデータパス障害通知を受信する、ブロック510から開始する。ブロック512において、新規HBAデータパスがミニポートドライバによって指定された場合、処理はブロック514に進み、指定されなかった場合、処理はブロック518に進む。ブロック514において、フィルタドライバは、障害状態のパスから処理が完了された各パケットのステータスを成功からビジーに変更する。このステータスの変更により、クラスドライバは、パケットを再送信する。パケットが再送信されると、フィルタドライバは、それらを新規の要求として扱い、可能であれば、それらを新規パスにリダイレクトする。
ブロック516において、フィルタドライバは、クラスドライバによってミスされたパケットを指定されたHBAデータパスに送信する。ブロック518においては、新規パスの識別子が指定されていないので、フィルタドライバは、新規パスを選択する。いくつかの実施形態では、HBAチームにパスが1つだけ存在する場合には、フィルタドライバは、障害状態となったHBAデータパスに新規パケットを送信し続ける(例:PATH_THROUGHモードで運用)。
図5Cは、いくつかの実施形態による、HBAが修復されたときにミニポートドライバに実装される動作を示す。制御は、HBAデータパスが修復される(例:HBAがオンライン状態となる、または、このHBAを経由する以前障害状態だったデータパスが修復される)、ブロック520から開始する。HBAデータパスが修復されると、ミニポートドライバは、通知コールバックメソッド(ブロック522)をコールすることによってフィルタドライバに通知する。いくつかの実施形態では、ミニポートドライバは、状態パラメータおよび現在のパスに相当するフィルタドライバのデバイスエクステンションを指すポインタパラメータと共に通知コールバックメソッドをコールすることによって、HBAデータパスが修復されたことをフィルタドライバに通知する。ミニポートドライバは、フィルタドライバが新規パケットをリダイレクトすべき新規パスの識別子をフィルタドライバに送信してもよい。ブロック524において、新規HBAデータパスが指定された場合、処理はブロック526に進み、指定されない場合には、処理はブロック528に進む。
修復通知のあと、新規HBAデータパスが指定された場合は、フィルタドライバは、新規パケットを新規HBAデータパスに送信する(ブロック526)。新規HBAデータパスが指定されない場合は、フィルタドライバは、現在のアクティブパスにパケットを送信し続ける。
フェイルオーバ処理に加えて、実施形態は、複数のHBAに及ぶ複数のHBAデータパス間におけるI/O負荷の分散を行うフィルタドライバを提供する。実施形態は、静的な負荷分散および動的な負荷分散を提供する。
図6Aおよび図6Bは、いくつかの実施形態による負荷分散の動作を示す。負荷分散を行うことを目的として、HBAチームの各HBAデータパスは、各データパスが処理することができる負荷の全I/O負荷に対する割合を表す、負荷分散シェアと呼ばれる値を有する。
図6Aは、いくつかの実施形態による静的な負荷分散の動作を示す。制御は、フィルタドライバにおいて送信されるデータパケットが受信される、ブロック600から開始する。ブロック602において、フィルタドライバは、HBAチームの各HBAデータパスに関連する負荷分散シェアを決定する。静的な負荷分散を行うことを目的として、負荷分散シェアは、手動で指定され、例えばWindowsレジストリなどに保存されてもよい。ミニポートドライバは、負荷分散シェアの値を取得し、通知コールバックメソッドによってそれらをフィルタドライバに転送する。負荷分散シェアの値を受信すると、フィルタドライバは、負荷分散シェアを新しい値に更新する。
ブロック604において、フィルタドライバは、各HBAデータパスに対して送信するパケットの可変平均データ長(MDL)を決定する(例:パケットのSCSI転送の長さ)。いくつかの実施形態では、負荷分散は、パケットの数ではなく転送されたパケットの実際のデータ長に基づいてもよい。ブロック606において、フィルタドライバは、各HBAデータパスに対するデータ分担量を決定する。いくつかの実施形態では、HBAデータパスのデータ分担量は、HBAデータパスのMDLと、HBAデータパスの負荷分散シェアとHBAチームにおける負荷分散シェアの最小値の割合との積(すなわち、データ分担量=MDL*(負荷分散シェア/チームにおける負荷分散シェアの最小値))である。
いくつかの実施形態では、MDLは、各パケットまたはパケットの各グループに対して再計算され、データ分担量は、定期的に再計算される(例:一定数のパケットが転送された後)。定期的な再計算の間隔は、HBAチームのHBAデータパスの数と調整可能な負荷分散の更新頻度の係数との積によって決定されてもよい。負荷分散の更新頻度の係数は、負荷分散の調整および性能の向上を可能にする。負荷分散の更新頻度は、例えばシステム管理者によって設定されてもよい。データ分担量を更新する頻度が高いほど、指定された負荷分散シェアと実際の負荷分散シェア間の違いは小さくなる。また、より頻繁な更新は、プロセッサ時間をより消費する可能性がある。
ブロック608において、フィルタドライバは、ターゲット論理ユニットに対する最大コマンド数を決定する。ブロック610において、フィルタドライバは、データ分担量またはターゲット論理ユニットに対する最大コマンド数に達するまでパケットが1つのHBAデータパスに送信されるラウンドロビン技術を使用して、パケットを送信するHBAデータパスを選択する。
すなわち、静的な負荷分散を行うことを目的として、ラウンドロビン技術が使用されてもよい。いくつかの実施形態では、ラウンドロビンの処理を行うことを目的として、現在のHBAチームの正常なHBAデータパスは、ダブルリンクドリストに集められる。そして、HBAデータパスは、負荷分散処理の間、このリストを使って切り替えられる。あるいは、パケットフローは、次のHBAチームメンバに切り替えられる。すなわち、いくつかの実施形態では、送信されたデータ量がHBAデータパスに対して以前計算されたデータ転送量またはターゲットLUN単位の最大SCSIコマンド数に達するまで、そのパスに対するパケットの送信は継続する。
静的な負荷分散においては、HBAデータパス間における実際のパケットの分散は、指定された分散(例:例えばシステム管理者によって指定された負荷分散シェア)とは異なってもよい。実際の分散と指定された分散の違いが小さいほど、静的な負荷分散の品質は高くなる。指定された負荷分散シェアの値は、静的な負荷分散の性能に影響を与える。
図6Bは、いくつかの実施形態による動的な負荷分散の動作を示す。動的な負荷分散は、パス間におけるI/O負荷を動的に調整することにより、他のパスに使用可能な帯域が存在する間は1つのHBAデータパスに対する混雑を回避する。このように、動的な負荷分散は、ストレージ/ネットワークの利用可能な帯域の、より効率的な使用を実現しようとする。
制御は、フィルタドライバがデータパケットを受信する、ブロック620から開始する。ブロック622において、フィルタドライバは、HBAチームの各HBAデータパスに対するデータ転送速度を決定する。いくつかの実施形態では、各HBAデータパスのデータ転送スピードは、転送されたデータの合計に対するデータ転送に費やした時間の合計の比率として計算される。更新ルーチンは、転送速度が更新される頻度を決定する。動的な負荷分散における調整可能なパラメータは、更新ルーチンが起動される頻度を定義する転送速度の更新頻度の係数である。転送速度の更新頻度の係数は、サブシステム特有の動作に基づいて調整されてもよい。
ブロック624において、フィルタドライバは、各HBAデータパスの負荷分散シェアを更新する。HBAチームの各パスに対する負荷分散シェアは、そのデータ転送速度に比例して更新されてもよい(例:選択されたHBAデータパスのデータ転送速度/HBAチームのデータ転送速度)。ブロック626において、フィルタドライバは、負荷分散シェアに基づいてパケットを送信するHBAデータパスを選択する。
フェイルオーバおよび負荷分散モードで動作している場合には、HBAの障害は、1つ以上のHBAチームメンバを使用不可能にする。いくつかの実施形態では、残りのHBAチームメンバは、動作を継続して指定された負荷分散シェア間において同一の割合を維持する。
このように、いくつかの実施形態は、高可用性と静的および動的な負荷分散との組み合わせを提供する。このソリューションを実装するソフトウェアモジュールは、比較的小規模でありシステムに対して小さいオーバヘッドしか課さない。いくつかの実施形態は、デバイススタックに対するフィルタドライバの挿入・削除によって、実施形態のソリューションによって提供される機能を迅速かつ容易に有効化および無効化する能力を提供する。実施形態は、種々のプラットフォーム(例:Windowsプラットフォーム(32ビットまたは64ビット))と共用できる。また、実施形態は、いかなるSCSIおよび/またはiSCSIベースのSANおよび/またはネットワー・アタッチト・ストレージ(NAS)システムに対しても適用可能である。更に、フェイルオーバおよび負荷分散に関する実施形態は、複数(2つ以上)のHBAをサポートする。
本発明の実施例に関する追加の詳細な説明
上述のフェイルオーバおよび負荷分散の技術は、標準的なプログラミングおよび/またはソフトウェア、ファームウェア、ハードウェア、またはそのいかなる組み合わせを開発する工業技術を使用した方法、装置、または製品として実装されてもよい。本明細書における「製品」は、ハードウェアによって制御される論理(例:統合回路チップ、プログラマブル・ゲート・アレイ(PGA)、特定用途向け集積回路(ASIC)、など)に実装されたコードまたは論理、または、磁気ストレージ媒体(例:ハードディスクドライブ、フロッピーディスク、テープ、など)、光ストレージ(CD−ROM、光ディスク、など)、揮発性および非揮発性メモリデバイス(例:EEPROM、ROM、PROM、RAM、DRAM、SRAM、ファームウェア、プログラマブルロジック、など)などの、コンピュータ読み取り可能な媒体を指す。コンピュータ読み取り可能な媒体内のコードは、プロセッサによってアクセスされ実行される。好ましい実施形態が実装されたコードは、更に、転送メディアまたはネットワーク上のファイルサーバからアクセス可能であってもよい。このような場合、コードが実装される製品は、ネットワーク転送線、ワイヤレス転送メディア、空間を伝播する信号、ラジオ波、赤外線信号などの転送メディアを備えてもよい。このように、「製品」は、コードが埋め込まれた媒体を含んでもよい。更に、製品は、コードが埋め込まれ、処理され、実行されるハードウェアおよびソフトウェアコンポーネントの組み合わせを含んでもよい。当然のことながら、当業者は、本発明の実施形態の範囲から逸脱することなくこの構成に対して多くの修正が加えられうること、および、製品はいかなる従来技術の情報を担う媒体を含んでもよいことを認識するであろう。
上述の実施形態では、一定のロジックは、ドライバに実装された。代わりの実施形態では、ドライバおよび/またはネットワークアダプタに実装されたロジックは、その全てまたは一部がネットワークハードウェアに実装されてもよい。
いくつかの実施形態では、ネットワークアダプタは、PCIカードとして実装されてもよい。代わりの実施形態では、ネットワークアダプタは、コンピュータ102のマザーボードに設置された集積回路コンポーネントを含んでもよい。
いくつかの実施形態では、ネットワークアダプタは、ネットワークアダプタのポートに接続されたケーブルを介してデータを転送するように設定されてもよい。代わりの実施形態では、ネットワークアダプタの実施形態は、ワイヤレスLANのようなワイヤレスネットワークまたは接続によってデータを転送するように設定されてもよい。
図4A、図4B、図5A、図5B、図5C、図6A、および図6Cに示される論理は、一定のイベントが一定の順番で発生することを示す。代わりの実施形態では、ある動作は、異なる順番で実行されてもよく修正または削除されてもよい。更に、上述の論理に動作を追加しても、上述の実施形態と同じである。また、上述の処理は、順次に実行されてもよくまたは並列に実行されてもよい。更に、動作は、1つのプロセッシングユニットまたは分散プロセッシングユニットによって実行されてもよい。
上述の種々の実施形態に関する説明は、本発明を図示および説明することを目的として提供された。これらの説明は、本発明の実施形態の全てを説明していないし、また、これらに限定されない。上記の説明により、多くの修正またはバリエーションが可能である。本発明の実施形態の範囲は、上述の詳細な説明によってではなく、添付の特許請求の範囲によって限定されることが意図される。上述の明細書、例、およびデータは、本発明の実施形態における構成の製造および使用に関する完全な説明を提供している。本発明の実施形態の本質および範囲から逸脱することなく、多くの実施形態が構築されうることから、本発明の実施形態は下記に添付の特許請求の範囲に属する。

Claims (18)

  1. 第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過するデータパスのうちの少なくとも1つが障害状態となった場合に、フィルタドライバを有するコンピュータシステムがフェイルオーバを行う方法であって、
    前記方法は、
    前記フィルタドライバによって、前記第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過する前記データパスのうちの少なくとも1つが障害状態となったことを示すパス障害通知を受信することと、
    前記フィルタドライバによって、前記パス障害通知が受信される前に前記第1のネットワークアダプタに対して送信された各パケットの成功ステータスをビジーステータスに変更することと、
    前記フィルタドライバによって、前記第1のネットワークアダプタに送信されたパケットを第2のネットワークアダプタリダイレクトすることと
    を備える方法。
  2. 前記フィルタドライバによって、前記第2のネットワークアダプタを含む新規データパスを決定することを更に備える請求項1に記載の方法。
  3. 前記フィルタドライバによって、前記第1のネットワークアダプタが修復されたことを示す通知を受信することと、
    前記フィルタドライバによって、前記通知が新規データパスを指定したかどうかに基づいて新規データパケットを送信するデータパス決定することと
    を更に備える請求項1または2に記載の方法。
  4. フィルタドライバに接続されたミニポートドライバに接続されたネットワークアダプタ、および前記ネットワークアダプタを通過するデータパスのうちの少なくとも1つが障害状態となった場合に、フェイルオーバを行う方法であって、
    前記方法は、
    前記ミニポートドライバによって、前記ネットワークアダプタが障害状態となったことを判定することと、
    前記ミニポートドライバによって、前記ネットワークアダプタが障害状態となったことを前記フィルタドライバに通知することと
    前記ミニポートドライバによって、前記ネットワークアダプタに送信されたペンディングパケットの処理を成功ステータスで完了することと
    を備える方法。
  5. 前記ミニポートドライバによって、パケットをリダイレクトすることを目的として前記フィルタドライバによって使用される新規データパスを指定することを更に備える請求項4に記載の方法。
  6. 前記ミニポートドライバによって、前記ネットワークアダプタが修復されたことを判定することと、
    前記ミニポートドライバによって、前記ネットワークアダプタが修復されたことを前記フィルタドライバに通知することと
    を更に備える請求項4または5に記載の方法。
  7. ネットワークおよびデータストレージに接続されたシステムであって、
    前記システムは
    ホストコンピュータと、
    前記ホストコンピュータに接続された、前記データストレージへの入力/出力(I/O)アクセスを管理するストレージコントローラと、
    第1のネットワークアダプタと、
    第2のネットワークアダプタと、
    前記第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過するデータパスのうち少なくも1つが障害状態となったことを示すパス障害通知を受信し、前記パス障害通知が受信される前に前記第1のネットワークアダプタに送信された各パケットの成功ステータスをビジーステータスに変更し、前記第1のネットワークアダプタに送信されたパケットを前記第2のネットワークアダプタにリダイレクトすることができる前記ホストコンピュータ内のフィルタドライバと
    を備えるシステム。
  8. 前記フィルタドライバは、更に、前記第2のネットワークアダプタを含む新規データパスを決定することができる請求項に記載のシステム。
  9. 前記フィルタドライバは、
    前記第1のネットワークアダプタが修復されたことを示す通知の受信と、
    前記通知が新規データパスを指定したかどうかに基づく新規データパケット用のデータパスの決定と
    を更に行うことができる請求項7または8に記載のシステム。
  10. ネットワークおよびデータストレージに接続されたシステムであって、
    前記システムは、
    ホストコンピュータと、
    前記ホストコンピュータに接続された、前記データストレージへの入力・出力(I/O)アクセスを管理するストレージコントローラと、
    前記ホストコンピュータ内のフィルタドライバと、
    前記ホストコンピュータ内の少なくとも2つのネットワークアダプタと、
    複数の前記ネットワークアダプタのうち少なくとも1つが障害状態となったことを判定し、前記フィルタドライバに対して前記ネットワークアダプタが障害状態となったことを通知し、障害状態となった前記ネットワークアダプタに送信されたペンディングパケットの処理を成功ステータスで完了することができる前記ホストコンピュータ内のミニポートドライバと
    を備えるシステム。
  11. 前記ミニポートドライバは、更に、
    パケットをリダイレクトすることを目的として前記フィルタドライバによって使用される新規データパスを指定することができる請求項10に記載のシステム。
  12. 前記ミニポートドライバは、更に、
    障害状態となった前記ネットワークアダプタが修復されたことを判定し、
    前記フィルタドライバに対して障害状態となった前記ネットワークアダプタが修復されたことを通知することができる請求項10または11に記載のシステム。
  13. 命令群を有するプログラムであって、
    前記命令群は、コンピュータデバイスによって実行されることにより、前記コンピュータデバイスに、
    第1のネットワークアダプタおよび前記第1のネットワークアダプタを通過するデータパスのうち少なくとも1つが障害状態となったことを示すパス障害通知を受信させ
    前記パス障害通知が受信される前に前記第1のネットワークアダプタに送信された各パケットの成功ステータスをビジーステータスに変更させ、
    前記第1のネットワークアダプタに送信されたパケットを第2のネットワークアダプタリダイレクトさせる
    プログラム
  14. 前記命令群がコンピュータデバイスによって実行されることにより、前記コンピュータデバイスに、更に、
    前記第2のネットワークアダプタを含む新規データパスを決定させる
    請求項13に記載のプログラム
  15. 前記命令群がコンピュータデバイスによって実行されることにより、前記コンピュータデバイスに、更に、
    前記第1のネットワークアダプタが修復されたことを示す通知を受信させ
    前記通知が新規データパスを指定したかどうかに基づいて新規データパケット用のデータパスを決定させる
    請求項13または14に記載のプログラム
  16. 命令群を有するプログラムであって、
    前記命令群は、コンピュータデバイスによって実行されることにより、前記コンピュータデバイスに、
    ネットワークアダプタが障害状態となったことを判定させ
    前記ネットワークアダプタが障害状態となったことをフィルタドライバに対して通知させ、
    前記ネットワークアダプタに送信されたペンディングパケットの処理を成功ステータスで完了させる
    プログラム
  17. 前記命令群がコンピュータデバイスによって実行されることにより、前記コンピュータデバイスに、更に、
    パケットをリダイレクトすることを目的として前記フィルタドライバによって使用される新規データパスを指定させる
    請求項16に記載のプログラム
  18. 前記命令群がコンピュータデバイスによって実行されることにより、前記コンピュータデバイスに、更に、
    前記ネットワークアダプタが修復されたことを判定させ
    前記ネットワークアダプタが修復されたことを前記フィルタドライバに通知させる
    請求項16または17に記載のプログラム
JP2007500707A 2004-03-19 2004-03-19 フェイルオーバおよび負荷分散 Expired - Fee Related JP4430710B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2004/000105 WO2005091141A1 (en) 2004-03-19 2004-03-19 Failover and load balancing

Publications (2)

Publication Number Publication Date
JP2007527172A JP2007527172A (ja) 2007-09-20
JP4430710B2 true JP4430710B2 (ja) 2010-03-10

Family

ID=34993888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007500707A Expired - Fee Related JP4430710B2 (ja) 2004-03-19 2004-03-19 フェイルオーバおよび負荷分散

Country Status (6)

Country Link
US (3) US7721150B2 (ja)
JP (1) JP4430710B2 (ja)
CN (1) CN100501684C (ja)
DE (1) DE112004002797B4 (ja)
GB (1) GB2426609B (ja)
WO (1) WO2005091141A1 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391865B2 (en) 1999-09-20 2008-06-24 Security First Corporation Secure data parser method and system
US7496104B2 (en) * 2003-08-15 2009-02-24 Nortel Networks Limited Enhanced encapsulation mechanism using GRE protocol
WO2005091141A1 (en) * 2004-03-19 2005-09-29 Zakrytoe Aktsionernoe Obschestvo 'intel A/O' Failover and load balancing
CN102609640B (zh) 2004-10-25 2015-07-15 安全第一公司 安全数据分析方法和系统
US7636345B2 (en) * 2006-02-01 2009-12-22 Comsys Communication & Signal Processing Ltd. Apparatus for and method of time related communications between multiple devices having different time bases
US7743129B2 (en) * 2006-05-01 2010-06-22 International Business Machines Corporation Methods and arrangements to detect a failure in a communication network
US7821973B2 (en) * 2006-10-24 2010-10-26 Hewlett-Packard Development Company, L.P. Sharing of host bus adapter context
US7882283B2 (en) 2006-11-27 2011-02-01 Cisco Technology, Inc. Virtualization support in a multiprocessor storage area network
US8677014B2 (en) 2006-11-27 2014-03-18 Cisco Technology, Inc. Fine granularity exchange level load balancing in a multiprocessor storage area network
US8904080B2 (en) * 2006-12-05 2014-12-02 Security First Corp. Tape backup method
US7688753B1 (en) * 2007-12-28 2010-03-30 Emc Corporation Selection of a data path based on one or more performance characteristics of a computer system
US8656167B2 (en) 2008-02-22 2014-02-18 Security First Corp. Systems and methods for secure workgroup management and communication
US8103775B2 (en) * 2008-03-13 2012-01-24 Harris Corporation System and method for distributing a client load from a failed server among remaining servers in a storage area network (SAN)
US20090254924A1 (en) * 2008-04-04 2009-10-08 Microsoft Corporation Operating system interfaces for virtual wifi and softap capable drivers
CN101299201B (zh) 2008-05-08 2010-06-02 成都市华为赛门铁克科技有限公司 存储系统数据备份方法及装置
US7839788B2 (en) * 2008-05-19 2010-11-23 Lsi Corporation Systems and methods for load balancing storage system requests in a multi-path environment based on transfer speed of the multiple paths
EP2131279B1 (en) * 2008-06-04 2012-03-28 Software AG System and method for a generic integration of a database into a high availability cluster
US8041987B2 (en) * 2008-11-10 2011-10-18 International Business Machines Corporation Dynamic physical and virtual multipath I/O
US8274881B2 (en) * 2009-05-12 2012-09-25 International Business Machines Corporation Altering access to a fibre channel fabric
CN106411909A (zh) 2009-11-25 2017-02-15 安全第公司 对移动中数据进行保护的系统和方法
EP2362651A1 (en) * 2010-02-19 2011-08-31 Thomson Licensing Multipath delivery for adaptive streaming
EP2553905B1 (en) 2010-03-31 2018-05-09 Security First Corp. Systems and methods for securing data in motion
CN103238305A (zh) * 2010-05-28 2013-08-07 安全第一公司 用于安全数据储存的加速器系统
US8281033B1 (en) * 2010-06-29 2012-10-02 Emc Corporation Techniques for path selection
EP2619939A2 (en) 2010-09-20 2013-07-31 Rick L. Orsini Systems and methods for secure data sharing
KR20120037785A (ko) * 2010-10-12 2012-04-20 삼성전자주식회사 부하 균형을 유지하는 시스템 온 칩 및 그것의 부하 균형 유지 방법
US8954808B1 (en) * 2010-11-30 2015-02-10 Symantec Corporation Systems and methods for performing input/output path failovers
US8321617B1 (en) * 2011-05-18 2012-11-27 Hitachi, Ltd. Method and apparatus of server I/O migration management
JP5422611B2 (ja) * 2011-06-24 2014-02-19 株式会社日立製作所 計算機システム、ホストバスアダプタ制御方法及びそのプログラム
US20130124916A1 (en) * 2011-11-16 2013-05-16 Microsoft Corporation Layout of mirrored databases across different servers for failover
US9015372B2 (en) 2012-01-12 2015-04-21 Hewlett-Packard Development Company, L.P. Managing data paths between computer applications and data storage devices
CA2869425A1 (en) 2012-04-06 2013-10-10 Security First Corp. Systems and methods for securing and restoring virtual machines
TW201413461A (zh) * 2012-09-17 2014-04-01 Hon Hai Prec Ind Co Ltd 磁碟陣列卡擴展管理方法及系統
US9473590B1 (en) 2012-12-21 2016-10-18 Emc Corporation Client connection establishment over fibre channel using a block device access model
US9531765B1 (en) * 2012-12-21 2016-12-27 Emc Corporation System and method for maximizing system data cache efficiency in a connection-oriented data proxy service
US9514151B1 (en) 2012-12-21 2016-12-06 Emc Corporation System and method for simultaneous shared access to data buffers by two threads, in a connection-oriented data proxy service
US9591099B1 (en) 2012-12-21 2017-03-07 EMC IP Holding Company LLC Server connection establishment over fibre channel using a block device access model
US9407601B1 (en) 2012-12-21 2016-08-02 Emc Corporation Reliable client transport over fibre channel using a block device access model
US9270786B1 (en) * 2012-12-21 2016-02-23 Emc Corporation System and method for proxying TCP connections over a SCSI-based transport
US9563423B1 (en) * 2012-12-21 2017-02-07 EMC IP Holding Company LLC System and method for simultaneous shared access to data buffers by two threads, in a connection-oriented data proxy service
US9712427B1 (en) 2012-12-21 2017-07-18 EMC IP Holding Company LLC Dynamic server-driven path management for a connection-oriented transport using the SCSI block device model
US9647905B1 (en) 2012-12-21 2017-05-09 EMC IP Holding Company LLC System and method for optimized management of statistics counters, supporting lock-free updates, and queries for any to-the-present time interval
US9338819B2 (en) * 2013-05-29 2016-05-10 Medtronic Minimed, Inc. Variable data usage personal medical system and method
US9779003B2 (en) 2013-06-12 2017-10-03 International Business Machines Corporation Safely mapping and unmapping host SCSI volumes
US9940019B2 (en) 2013-06-12 2018-04-10 International Business Machines Corporation Online migration of a logical volume between storage systems
US9769062B2 (en) 2013-06-12 2017-09-19 International Business Machines Corporation Load balancing input/output operations between two computers
US8819317B1 (en) 2013-06-12 2014-08-26 International Business Machines Corporation Processing input/output requests using proxy and owner storage systems
US9274989B2 (en) 2013-06-12 2016-03-01 International Business Machines Corporation Impersonating SCSI ports through an intermediate proxy
US9274916B2 (en) 2013-06-12 2016-03-01 International Business Machines Corporation Unit attention processing in proxy and owner storage systems
TWI514250B (zh) * 2013-11-18 2015-12-21 Synology Inc 用來管理一儲存系統之方法與裝置以及計算機程式產品
US9286171B2 (en) * 2013-12-12 2016-03-15 International Business Machines Corporation Priming failover of stateful offload adapters
TWI544342B (zh) * 2013-12-17 2016-08-01 緯創資通股份有限公司 伺服器品質驗證方法及其系統
KR20170094796A (ko) * 2014-12-18 2017-08-21 노키아 솔루션스 앤드 네트웍스 오와이 네트워크 로드 밸런서
US9954799B2 (en) 2015-05-14 2018-04-24 International Business Machines Corporation Adaptive service chain management
US9477489B1 (en) * 2015-07-09 2016-10-25 Dell Products L.P. Software based self-encrypting drive (SED) sleep resuming method
CN105376095A (zh) * 2015-11-26 2016-03-02 曙光信息产业股份有限公司 一种访问ip均衡方法及装置
US10102074B2 (en) 2015-12-01 2018-10-16 International Business Machines Corporation Switching allocation of computer bus lanes
US10296484B2 (en) 2015-12-01 2019-05-21 International Business Machines Corporation Dynamic re-allocation of computer bus lanes
US9870162B2 (en) * 2016-03-18 2018-01-16 Dell Products L.P. Method to virtualize PCIe controllers to support boot/hibernation/crash-dump from a spanned virtual disk
CN106371922A (zh) * 2016-08-29 2017-02-01 成都支付通卡友电子商务有限公司 动态负载平衡批量处理系统
US10275327B2 (en) 2017-01-05 2019-04-30 Hewlett Packard Enterprises Development LP Virtual fibre channel port migration
US11050660B2 (en) * 2018-09-28 2021-06-29 EMC IP Holding Company LLC Host device with multi-path layer implementing path selection based at least in part on fabric identifiers
US11748278B2 (en) 2019-06-20 2023-09-05 Intel Corporation Multi-protocol support for transactions

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4403286A (en) 1981-03-06 1983-09-06 International Business Machines Corporation Balancing data-processing work loads
US5168208A (en) 1988-05-09 1992-12-01 Onan Corporation Microprocessor based integrated generator set controller apparatus and method
US5006781A (en) 1988-05-09 1991-04-09 Onan Corporation Microprocessor based integrated generator set controller apparatus and method
US5086499A (en) * 1989-05-23 1992-02-04 Aeg Westinghouse Transportation Systems, Inc. Computer network for real time control with automatic fault identification and by-pass
US5724569A (en) 1991-03-29 1998-03-03 Bull S.A. Apparatus for evaluating database query performance having libraries containing information for modeling the various system components of multiple systems
US5493689A (en) 1993-03-01 1996-02-20 International Business Machines Corporation System for configuring an event driven interface including control blocks defining good loop locations in a memory which represent detection of a characteristic pattern
US5495426A (en) 1994-01-26 1996-02-27 Waclawsky; John G. Inband directed routing for load balancing and load distribution in a data communication network
US5790775A (en) * 1995-10-23 1998-08-04 Digital Equipment Corporation Host transparent storage controller failover/failback of SCSI targets and associated units
JP3628777B2 (ja) * 1995-10-30 2005-03-16 株式会社日立製作所 外部記憶装置
US6185601B1 (en) 1996-08-02 2001-02-06 Hewlett-Packard Company Dynamic load balancing of a network of client and server computers
US6081511A (en) 1996-08-14 2000-06-27 Cabletron Systems, Inc. Load sharing for redundant networks
US7760627B2 (en) 1996-10-24 2010-07-20 Hewlett-Packard Development Company, L.P. Method and apparatus for automatic load-balancing on a multi-segment network
US6208616B1 (en) * 1997-05-13 2001-03-27 3Com Corporation System for detecting errors in a network
US6314525B1 (en) * 1997-05-13 2001-11-06 3Com Corporation Means for allowing two or more network interface controller cards to appear as one card to an operating system
US6253334B1 (en) * 1997-05-13 2001-06-26 Micron Electronics, Inc. Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses
US6430610B1 (en) * 1998-09-02 2002-08-06 Steeleye Technology, Inc. TCP/IP address protection mechanism in a clustered server environment
US6438133B1 (en) 1998-09-09 2002-08-20 Cisco Technology, Inc. Load balancing mechanism for a translational bridge environment
US6381218B1 (en) * 1998-09-11 2002-04-30 Compaq Computer Corporation Network controller system that uses directed heartbeat packets
US6470397B1 (en) * 1998-11-16 2002-10-22 Qlogic Corporation Systems and methods for network and I/O device drivers
US6728748B1 (en) 1998-12-01 2004-04-27 Network Appliance, Inc. Method and apparatus for policy based class of service and adaptive service level management within the context of an internet and intranet
US6654801B2 (en) 1999-01-04 2003-11-25 Cisco Technology, Inc. Remote system administration and seamless service integration of a data communication network management system
US6453360B1 (en) 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US6711137B1 (en) 1999-03-12 2004-03-23 International Business Machines Corporation System and method for analyzing and tuning a communications network
US6526521B1 (en) * 1999-06-18 2003-02-25 Emc Corporation Methods and apparatus for providing data storage access
US6658018B1 (en) 1999-06-30 2003-12-02 Intel Corporation Method and system of providing advanced teaming functionality capable of utilizing heterogeneous adapters to improve utility and performance
JP3601393B2 (ja) 2000-01-11 2004-12-15 日本電気株式会社 データグラム中継装置及びその方法
US7139282B1 (en) 2000-03-24 2006-11-21 Juniper Networks, Inc. Bandwidth division for packet processing
US6687735B1 (en) 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
US6718481B1 (en) * 2000-05-26 2004-04-06 Emc Corporation Multiple hierarichal/peer domain file server with domain based, cross domain cooperative fault handling mechanisms
US6629166B1 (en) * 2000-06-29 2003-09-30 Intel Corporation Methods and systems for efficient connection of I/O devices to a channel-based switched fabric
US6618798B1 (en) * 2000-07-11 2003-09-09 International Business Machines Corporation Method, system, program, and data structures for mapping logical units to a storage space comprises of at least one array of storage units
US6775235B2 (en) * 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US6802021B1 (en) * 2001-01-23 2004-10-05 Adaptec, Inc. Intelligent load balancing for a multi-path storage system
US6769071B1 (en) * 2001-01-23 2004-07-27 Adaptec, Inc. Method and apparatus for intelligent failover in a multi-path system
US6823477B1 (en) * 2001-01-23 2004-11-23 Adaptec, Inc. Method and apparatus for a segregated interface for parameter configuration in a multi-path failover system
US7139242B2 (en) 2001-03-28 2006-11-21 Proficient Networks, Inc. Methods, apparatuses and systems facilitating deployment, support and configuration of network routing policies
JP2002304331A (ja) 2001-04-05 2002-10-18 Nec Corp 冗長パス制御装置及び方法
RU2202123C2 (ru) * 2001-06-06 2003-04-10 Бачериков Геннадий Иванович Параллельная вычислительная система с программируемой архитектурой
US7016299B2 (en) * 2001-07-27 2006-03-21 International Business Machines Corporation Network node failover using path rerouting by manager component or switch port remapping
US20030074473A1 (en) 2001-10-12 2003-04-17 Duc Pham Scalable network gateway processor architecture
US7318095B2 (en) * 2001-11-21 2008-01-08 Clearcube Technology, Inc. Data fail-over for a multi-computer system
US7126910B1 (en) 2001-12-13 2006-10-24 Alcatel Load balancing technique for a resilient packet ring
US7111084B2 (en) * 2001-12-28 2006-09-19 Hewlett-Packard Development Company, L.P. Data storage network with host transparent failover controlled by host bus adapter
JP3964212B2 (ja) * 2002-01-16 2007-08-22 株式会社日立製作所 記憶装置システム
US6779064B2 (en) 2002-01-24 2004-08-17 Hewlett-Packard Development Company, L.P. System, method, and computer program product for on-line replacement of a host bus adapter
CA2371654A1 (en) 2002-02-13 2003-08-13 Alcatel Canada Inc. System and method for parallel connection selection in a communication network
US7134040B2 (en) * 2002-04-17 2006-11-07 International Business Machines Corporation Method, system, and program for selecting a path to a device to use when sending data requests to the device
US20060242313A1 (en) 2002-05-06 2006-10-26 Lewiz Communications Network content processor including packet engine
KR20050027276A (ko) * 2002-08-02 2005-03-18 그라스 밸리 (유.에스.) 아이엔씨. 미디어 영역 네트워크를 위한 실시간 페일-오버 복구
US7307948B2 (en) * 2002-10-21 2007-12-11 Emulex Design & Manufacturing Corporation System with multiple path fail over, fail back and load balancing
US7280482B2 (en) 2002-11-01 2007-10-09 Nokia Corporation Dynamic load distribution using local state information
JP2004227098A (ja) * 2003-01-20 2004-08-12 Hitachi Ltd 記憶デバイス制御装置の制御方法、及び記憶デバイス制御装置
JP3769544B2 (ja) 2003-01-31 2006-04-26 富士通株式会社 伝送帯域制御装置
CN100583810C (zh) 2003-05-15 2010-01-20 诺基亚西门子通信有限责任两合公司 多路径网中的自动调节的、自主的和离散的通信量分配的方法和网络节点
US20050010837A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method and apparatus for managing adapters in a data processing system
AU2003260381A1 (en) 2003-08-07 2005-02-25 Telecom Italia S.P.A. A method for the statistical estimation of the traffic dispersion in telecommunication network
US7496104B2 (en) 2003-08-15 2009-02-24 Nortel Networks Limited Enhanced encapsulation mechanism using GRE protocol
US7783779B1 (en) * 2003-09-19 2010-08-24 Vmware, Inc Storage multipath management in a virtual computer system
US7330972B2 (en) * 2003-09-26 2008-02-12 Intel Corporation Remote management device key administration using network adapters
US7313681B2 (en) * 2003-11-20 2007-12-25 International Business Machines Corporation Apparatus, system, and method for adapter fastload
US7603463B2 (en) 2003-12-12 2009-10-13 Nortel Networks Limited Method and apparatus for allocating processing capacity of system processing units in an extranet gateway
US20050185789A1 (en) * 2004-01-30 2005-08-25 Goodwin Kevin M. Forestalling actions that otherwise would defeat access-control mechanism for volume
US7281169B2 (en) * 2004-01-30 2007-10-09 Dell Products L.P. Method, software and system for multi-path fail-over recovery in sequential storage systems
WO2005091141A1 (en) * 2004-03-19 2005-09-29 Zakrytoe Aktsionernoe Obschestvo 'intel A/O' Failover and load balancing
US7760626B2 (en) 2004-03-31 2010-07-20 Intel Corporation Load balancing and failover
US7636309B2 (en) 2005-06-28 2009-12-22 Alcatel-Lucent Usa Inc. Multi-path routing using intra-flow splitting
US7710872B2 (en) 2005-12-14 2010-05-04 Cisco Technology, Inc. Technique for enabling traffic engineering on CE-CE paths across a provider network
US20070153763A1 (en) 2005-12-29 2007-07-05 Rampolla Richard A Route change monitor for communication networks
US8555288B2 (en) 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
US7756029B2 (en) 2007-05-24 2010-07-13 Harris Stratex Networks Operating Corporation Dynamic load balancing for layer-2 link aggregation
US8738752B2 (en) 2008-01-30 2014-05-27 Cisco Technology, Inc. Local placement of large flows to assist load-balancing

Also Published As

Publication number Publication date
GB2426609B (en) 2008-05-14
US8429452B2 (en) 2013-04-23
US20100185794A1 (en) 2010-07-22
US7992039B2 (en) 2011-08-02
CN1942862A (zh) 2007-04-04
DE112004002797T5 (de) 2007-01-11
US20080222661A1 (en) 2008-09-11
DE112004002797B4 (de) 2015-12-31
JP2007527172A (ja) 2007-09-20
GB2426609A (en) 2006-11-29
GB0616648D0 (en) 2006-10-04
US20110258484A1 (en) 2011-10-20
CN100501684C (zh) 2009-06-17
WO2005091141A1 (en) 2005-09-29
US7721150B2 (en) 2010-05-18

Similar Documents

Publication Publication Date Title
JP4430710B2 (ja) フェイルオーバおよび負荷分散
US7421511B2 (en) Path control method
US8560631B2 (en) Storage system
US8447860B2 (en) Storage area network with target side recognition and routing table upload
US8631162B2 (en) System and method for network interfacing in a multiple network environment
US20050141425A1 (en) Method, system, and program for managing message transmission through a network
JP2008083939A (ja) 計算機システム及び動的ポート割当方法
EP1859594A1 (en) Server side tftp flow control
US7275106B1 (en) Sustaining TCP connections
US20070233886A1 (en) Method and system for a one bit TCP offload
US20050044221A1 (en) Method, system, and program for processing a packet to transmit on a network in a host system including a plurality of network adaptors having multiple ports
US9219671B2 (en) Pro-active MPIO based rate limiting to avoid iSCSI network congestion/incast for clustered storage systems
WO2004036805A2 (en) System and method for network interfacing in a multiple network environment
KR20070119021A (ko) 자체-적응형 멀티캐스트 파일 전송 프로토콜
US10243859B2 (en) Communications-capability-based SDN control system
TWI406545B (zh) Linux系統下的多路徑訪問遠端邏輯設備的方法
US20050002389A1 (en) Method, system, and program for processing a packet to transmit on a network in a host system including a plurality of network adaptors
US10585823B2 (en) Leveling IO
Zhu et al. Mechanisms for high volume data transfer in grids
US10764168B1 (en) Adjusting communications parameters based on known characteristics
Sharma Study of TCP Issues over Wireless and Implementation of iSCSI over Wireless for Storage Area Networks
EP1875708A2 (en) Data processing system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090706

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090806

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091201

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091217

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131225

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees