DE112004002797T5 - Ausfallsicherung und Lastausgleich - Google Patents

Ausfallsicherung und Lastausgleich Download PDF

Info

Publication number
DE112004002797T5
DE112004002797T5 DE112004002797T DE112004002797T DE112004002797T5 DE 112004002797 T5 DE112004002797 T5 DE 112004002797T5 DE 112004002797 T DE112004002797 T DE 112004002797T DE 112004002797 T DE112004002797 T DE 112004002797T DE 112004002797 T5 DE112004002797 T5 DE 112004002797T5
Authority
DE
Germany
Prior art keywords
data
network adapter
filter driver
data path
driver
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.)
Granted
Application number
DE112004002797T
Other languages
English (en)
Other versions
DE112004002797B4 (de
Inventor
Alexander Belyakov
Mikhail Seenikovsky
Alexey Drozdov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel AO ZAO
Original Assignee
Intel AO ZAO
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 Intel AO ZAO filed Critical Intel AO ZAO
Publication of DE112004002797T5 publication Critical patent/DE112004002797T5/de
Application granted granted Critical
Publication of DE112004002797B4 publication Critical patent/DE112004002797B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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

Abstract

Verfahren in einem Computersystem zur Ausfallsicherung, wenn wenigstens einer von einem ersten Netzwerkadapter und einem Datenpfad durch den ersten Netzwerkadapter ausfällt, wobei das Computersystem einen Filtertreiber aufweist, und wobei der erste Netzwerkadapter mit einem zweiten Netzwerkadapter verbunden ist, umfassend:
Empfangen einer Pfadausfall-Benachrichtigung mit dem Filtertreiber, daß wenigstens einer von dem ersten Netzwerkadapter und dem Datenpfad durch den ersten Netzwerkadapter ausgefallen ist; und
Umlenken von Paketen mit dem Filtertreiber, die an den ersten Netzwerkadapter gerichtet sind, an den zweiten Netzwerkadapter.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • 1. GEBIET
  • Die Offenbarung betrifft ein Verfahren, System, und Programm zur Ausfallsicherung und zum Lastausgleich.
  • 2. BESCHREIBUNG DES STANDS DER TECHNIK
  • Eine I_T-Verknüpfung ist ein Paar aus einer Initiator-Vorrichtung und einer Target-(Ziel)-Vorrichtung. Die Vorrichtungen, die Eingabe/Ausgabe-(I/O)-Operationen anfordern, werden als Initiatoren bezeichnet, und die Vorrichtungen, die diese Operationen durchführen, werden als Targets bezeichnet. Beispielsweise kann ein Host-Computer ein Initiator sein, und eine Speichervorrichtung kann ein Target sein. Das Target kann eine oder mehrere separate Speichervorrichtungen aufweisen.
  • Ein Host-Bus-Adapter (HBA) ist eine Hardware-Vorrichtung, die das Betriebssystem und einen SCSI-(Small Computer System Interface)-Bus verbindet. Der HBA verwaltet die Übertragung von Daten zwischen dem Host-Computer und dem Kommunikationspfad. HBA-Gruppierung bezeichnet das Gruppieren von mehreren HBAs zu einer „Gruppe", wobei jeder HBA in einer Gruppe mit einem bestimmten Target verbunden ist und Daten an dieses lenken kann. HBA-Gruppen können auf einem iSCSI-(Internet Small Computer System Interface)- (IETF RFC 3347, veröffentlich im Februar 2003)-Portalgruppenkonzept aufbauen. iSCSI wurde im Februar 2003 von der IETF als Standard definiert. Ein Portalgruppenkonzept kann als eine Sammlung von Netzwerkportalen in einer iSCSI-Netzwerkeinheit beschrieben werden, die kollektiv die Fähigkeit zur Koordination einer Sitzung mit Verbindungen unterstützt, die diese Portale umspannen.
  • HBA-Gruppierung kann mit SCSI-(Small Computer System Interface) (American National Standards Institute (ANSI) SCSI Controller Commands-2 (SCC-2) NCITS.318:1998)-Initiatoren benutzt werden, die auf den Betriebssystemen Windows® 2000, Windows® XP, oder Windows®.NET laufen. Die Strategie der Verbindungswiederherstellung einer I_T-Verknüpfung kann auf mehreren TCP-(Transmission Control Protocoll)-Verbindungen beruhen (Internet Engineering Task Force (IETF) Request for Comments (RFC) 793, veröffentlicht September 1981). Das heißt, Pakete von iSCSI-Initiatoren, die auf Windows®-Betriebssystemen laufen, werden über eine Vielzahl von Verbindungen zwischen einem Initiator und einem Target übertragen und/oder empfangen. Wenn in einem HBA eine Vielzahl von Verbindungen zu demselben Target hergestellt wird, kann ein Miniport-Treiber die Ausfallsicherung (d.h. das Umlenken von Paketen zu einer anderen Verbindung, wenn eine Verbindung ausfällt) und Lastausgleich (d.h. Ausgleichen der Last zwischen den HBA-Verbindungen) übernehmen.
  • Allerdings besteht im Stand der Technik ein Bedarf an Ausfallsicherung und Lastausgleich für mehrere HBAs, von denen jeder eine oder mehrere Verbindungen zu demselben Target aufweisen kann.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Bezugnehmend auf die Figuren, wobei gleiche Bezugszeichen jeweils entsprechende Bauteile bezeichnen, zeigt:
  • 1A eine Rechnerumgebung, in der bestimmte Ausführungsformen implementiert sind;
  • 1B eine Rechnerumgebung, in der bestimmte spezifische Ausführungsformen implementiert sind;
  • 2A in einem Blockdiagramm Windows®-Speichervorrichtungs-Treiber mit einem optionalen Class-Lower-Filtertreiber;
  • 2B in einem Blockdiagramm einen Speichergerätetreiberstapel mit Fähigkeiten zur Ausfallsicherung und zum Lastausgleich, der in einer SCSI-Umgebung gemäß bestimmten Ausführungsformen benutzt werden kann;
  • 3 in einem Blockdiagramm ein Beispiel einer Anordnung eines Initiators mit Fähigkeiten zur Ausfallsicherung und zum Lastausgleich gemäß bestimmten Ausführungsformen;
  • 4A und 4B Operationen zum Verbergen eines sekundären Speichergerätestapels gemäß bestimmten Ausführungsformen;
  • 5A, 5B und 5C Operationen für einen Benachrichtigungsmechanismus gemäß bestimmten Ausführungsformen; und
  • 6A und 6B Operationen zum Lastausgleich gemäß bestimmten Ausführungsformen.
  • GENAUE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • In der folgenden Beschreibung wird Bezug genommen auf die begleitenden Figuren, die einen Teil der Beschreibung bilden, und die mehrere Ausführungsformen illustrieren. Es versteht sich, daß andere Ausführungsformen benutzt und strukturelle sowie operative Änderungen durchgeführt werden können, ohne von dem Umfang der Ausführungsformen abzuweichen.
  • 1A zeigt eine Rechnerumgebung, in der Ausführungsformen implementiert werden können. Ein Computer 102 dient als ein Initiator, während Datenspeicher 104 als ein Target dient, um eine I T-Verknüpfung zu bilden. Computer 102 weist eine oder mehrere Zentraleinheiten (CPUs) 104, einen flüchtigen Speicher 106, einen nicht flüchtigen Speicher 108 (z.B. Magnetplattenlaufwerke, optische Laufwerke, ein Bandlaufwerk usw.), ein Betriebssystem 110 (z.B. Windows®2000, Windows®XP, oder Windows®.NET), und einen oder mehrere Netzwerkadapter 128 auf. In bestimmten Ausführungsformen ist jeder Netzwerkadapter ein Host-Bus-Adapter (HBA). Ein Filtertreiber 112, ein Miniport-Treiber 114, und ein Applikationsprogramm 124 laufen außerdem in Speicher 106 ab.
  • Der Computer 102 kann eine im Stand der Technik bekannte Rechnervorrichtung aufweisen, wie z.B. einen Hauptrechner, Server, Personalcomputer, Arbeitsplatzrechner, Laptop, Handheld-Computer usw. Jede CPU 104 und jedes Betriebssystem 110 können benutzt werden. Programme und Daten in Speicher 106 können als Teil von Speicherverwaltungsoperationen in Speicher 108 umgelagert werden.
  • Der Datenspeicher 140 weist eine oder mehrere logische Einheiten auf (d.h. „n" logische Einheiten, wobei „n" eine positive ganze Zahl sein kann, die in einigen Ausführungsformen unter 128 liegt). Nur zum erleichterten Verständnis sind eine logische Einheit 0, eine logische Einheit 1, und eine logische Einheit „n" dargestellt. Jede logische Einheit kann als eine separate Speichervorrichtung beschrieben werden. Zusätzlich ist jeder logischen Einheit eine logische Einheitsnummer (Logical Unit Number – LUN) zugeordnet. In bestimmten Ausführungsformen ist eine HBA-Gruppe nach Target und LUN geordnet (d.h. jeder HBA, der Daten zu einer bestimmten LUN eines Targets lenken kann, ist einer HBA-Gruppe zugeordnet), und ein HBA kann verschiedenen HBA-Gruppen angehören.
  • Jeder Netzwerkadapter 128 weist mehrere Komponenten auf, die in der Hardware des Netzwerkadapters 128 implementiert sind. Jeder Netzwerkadapter 128 ist dazu in der Lage, Datenpakete über Netzwerk 176 zu übertragen und zu empfangen, das ein lokales Netzwerk (Local Area Network – LAN), das Internet, ein Weitverkehrsnetzwerk (Wide Area Network – WAN), ein Speichernetzwerk (Storage Area Network – SAN), WiFi (Institute of Electrical and Electronics Engineers (IEEE) 802.11b, veröffentlicht am 16. September 1999), Funk-LAN (IEEE 802.11b, veröffentlicht am 16. September 1999) usw. umfassen kann.
  • Speichertreiber 120 laufen in Speicher 106 ab und weisen für Netzwerkadapter 128 spezifische Befehle auf, um mit dem Netzwerkadapter 128 zu kommunizieren, und um eine Schnittstelle zwischen dem Betriebssystem 110 und jedem Netzwerkadapter 128 zu bilden. Ein Netzwerkadapter 128 und Speichertreiber 120 implementieren Logik, um iSCSI-Pakete zu verarbeiten, wobei ein SCSI-Befehl in dem iSCSI-Paket verpackt ist, und das iSCSI-Paket in einem TCP-Paket verpackt ist. Die Transportprotokollschicht packt die Ladung des empfangenen TCP-(Transmission Control Protocol) (Internet Engineering Task Force (IETF) Request for Comments (RFC) 793, veröffentlicht September 1981)-Pakets aus, und überträgt die Daten an den Speichertreiber 120, um z.B. zu dem Applikationsprogramm 124 zurückzukehren. Außerdem überträgt ein Applikationsprogramm 124, das Daten überträgt, die Daten an den Speichertreiber 120, der die Daten dann an die Transportprotokollschicht leitet, um sie in einem TCP/IP-Paket zu verpacken, bevor sie über das Netzwerk 176 übertragen werden.
  • Eine Bus-Steuerung 134 erlaubt es jedem Netzwerkadapter 128, auf einem Computerbus 160 zu kommunizieren, der eine im Stand der Technik bekannte Busschnittstelle umfassen kann, wie z.B. einen PCI-(Peripheral Component Interconnet)-Bus, einen PCI-Expressbus, eine Industriestandardarchitektur (ISA), eine erweiterte ISA, eine Mikrokanalarchitektur (MCA) usw. Der Netzwerkadapter 128 weist eine physikalische Kommunikationsschicht 132 zum Implementieren einer MAC-(Media Access Control)-Funktion zum Senden und Empfangen von Netzwerkpaketen von und an entfernte Datenspeicher über ein Netzwerk 176. In bestimmten Ausführungsformen kann der Netzwerkadapter 128 das Ethernet-Protokoll (IEEE-Standard 802.3, veröffentlicht am B. März 2002), Fibre Channel (IETF RFC 3643, veröffentlicht im Dezember 2003), oder jedes andere im Stand der Technik bekannte Kommunikationsprotokoll implementieren.
  • Der Speicher 108 kann eine interne Speichervorrichtung oder einen beigeordneten oder über Netzwerk zugänglichen Speicher umfassen. Programme in dem Speicher 108 werden in den Speicher 106 geladen und von der CPU 104 ausgeführt. Eine Eingabevorrichtung 150 wird benutzt, um Nutzereingaben an die CPU 104 bereitzustellen, und kann eine Tastatur, eine Maus, einen Stylus-Stift, ein Mikrophon, einen berührungsempfindlichen Bildschirm, oder jeden anderen im Stand der Technik bekannten Aktivierungs- oder Eingabemechanismus umfassen. Eine Ausgabevorrichtung 152 ist dazu in der Lage, Information, die von der CPU 104, oder einer anderen Komponente, wie z.B. einem Anzeigebildschirm, Drucker oder Speicher usw. übertragen werden, wiederzugeben.
  • In bestimmten Ausführungsformen kann der Computer neben der Speichervorrichtung 120 andere Vorrichtungen aufweisen.
  • Der Netzwerkadapter 128 kann zusätzliche Hardware-Logik zum Durchführen von zusätzlichen Operationen zum Verarbeiten von durch den Computer 102 oder das Netzwerk 176 empfangenen Paketen aufweisen. Außerdem kann der Netzwerkadapter 128 eine Transportschicht-Entladungsmaschine (Transport Layer Offload Engine – TOE) implementieren, um die Transportprotokollschicht in dem Netzwerkadapter zu implementieren, und nicht im Speichertreiber 120 des Computers, um die Arbeitslast des Computers 102 weiter zu senken.
  • Alternativ kann die Transportschicht in dem Speichertreiber oder anderen Treibern 120 (die beispielsweise durch ein Betriebssystem bereitgestellt sind) implementiert sein.
  • Verschiedene Strukturen und/oder Puffer (nicht dargestellt) können in Speicher 106 angesiedelt sein, oder können in bestimmten Ausführungsformen in einer Speichereinheit angeordnet sein, die separat von dem Speicher 106 ist.
  • 1B zeigt eine Rechnerumgebung, in der bestimmte spezifische Ausführungsformen implementiert sind. In 1B weist Computer 102 Speichertreiber 120 auf, die mit Host-Bus-Adaptern (HBAs) 128a, 128b, und 128c zusammenwirken. Jeder HBA 128a, 128b, und 128c kann als ein Netzwerkadapter 128 (1A) beschrieben werden. Der Computer 102 und die HBAs 128a, 128b, und 128c können als Initiator beschrieben werden, während der Datenspeicher 140 als ein Target beschrieben werden kann. Der Datenspeicher zeigt logische Einheitsnummern (LUNs), die logische Einheiten darstellen.
  • 2A zeigt in einem Blockdiagramm einen Windows®-Speichergerätetreiberstapel 200 mit einem optionalen Class-Lower-Filtertreiber. Der Speichergerätetreiberstapel 200 weist ein Protokoll der höheren Schichten (Upper Layer Protocol – ULP) 210 auf, das Pakete an einen Speicherklassetreiber 212 überträgt und von diesem empfängt. Der Speicherklassetreiber 212 kann Pakete an einen Class-Lower-Filtertreiber 214 senden und von diesem empfangen. Der Class-Lower-Filtertreiber 214 ist in bestimmten Ausführungsformen optional. Der Class-Lower-Filtertreiber 214 kann Pakete an einen Anschlußtreiber 216 senden und von diesem empfangen. Der Anschlußtreiber 216 kommuniziert mit einem Miniport-Treiber 218. Der Miniport-Treiber 218 ist dazu in der Lage, mit dem Class-Lower-Filtertreiber 214 über Rückruf-Schnittstellen zu kommunizieren, die von Ausführungsformen vorgesehen werden.
  • Ausführungsformen sehen einen speziellen Filtertreiber vor, der auf dem Class-Lower-Filtertreiber 214 über dem Anschlußtreiber 216 basiert, um eine Ausfallsicherung und einen Lastausgleich zwischen HBA-Kreuzverbindungen bereitzustellen. Der Filtertreiber bearbeitet HBA-Zusammenhangsveränderung und -Pfadsteuerung. Der Filtertreiber stellt auch die Paketverteilung bereit. Insbesondere erfaßt der Filtertreiber SCSI-Anfrageblock-(SCSI Request Block – SRB)-Pakete, die in den Eingabe/Ausgabe-Anfragepaketen (Input/Output Request Packers – IRPs) zwischen dem Speicherklassetreiber 212 und dem Anschlußtreiber 216 enthalten sind. In bestimmten Ausführungsformen ist der Filtertreiber als ein Low-Level-Class- Filtertreiber implementiert. Der Filtertreiber wird benachrichtigt, sobald ein Speichervorrichtungsvorgang erzeugt wird, und der Filtertreiber schließt sich dann an den Speichertreiberstapel 200 unter dem Class-Lower-Filtertreiber 214 an.
  • 2B zeigt in einem Blockdiagramm einen Speichervorrichtungs-Treiberstapel 250 mit Fähigkeiten zur Ausfallsicherung und zum Lastausgleich, der in einer SCSI-Umgebung gemäß bestimmten Ausführungsformen benutzt werden kamt. Der Speichergerätetreiberstapel 250 kann mit einem Windows®2000-, Windows®XP-, oder Windows®.NET-Betriebssystem benutzt werden. Der Speichergerätetreiberstapel 250 weist ein Protokoll der höheren Schichten (ULP) 260 auf, das IRPs an einen SCSI-Disk-Class-Treiber 262 senden und von diesem empfangen kann. Der SCSI-Disk-Class-Treiber 262 kann SRBs/IRPs an einen Lower-Level-Class-Filtertreiber 264 senden und von diesem empfangen. Der Lower-Level-Class-Filtertreiber 264 kann SRBs/IRPs an einen SCSI-Anschlußtreiber 266 senden und von diesem empfangen. Der SCSI-Anschlußtreiber 266 kommuniziert mit einem SCSI-Miniport-Treiber 268. Der SCSI-Miniport-Treiber 268 ist dazu in der Lage, über Rückruf-Schnittstellen mit dem Lower-Level-Class-Filtertreiber 264 zu kommunizieren.
  • 3 zeigt in einem Blockdiagramm ein Beispiel für die Anordnung eines Initiators mit Fähigkeiten zur Ausfallsicherung und zum Lastausgleich gemäß bestimmten Ausführungsformen. In 3 kommunizieren Speicherklassefilter mit einem Filtertreiber, der mit einem Anschluß/Miniport-Treiber kommuniziert. Beispielsweise kommuniziert ein Speicherklassetreiber mit einem Filtertreiber mit Hilfe von Speicherklassetreiber1-Geräteobjekt 310 und Filtertreiber1-Geräteobjekt 312, der Filtertreiber kommuniziert mit einem Anschluß/Miniport-Treiber mit Hilfe von Filtertreiber1-Geräteobjekt 312 und Anschluß/Miniport-Treibergeräteobjekt 316, 314. Ein Miniport-Treiber kommuniziert mit einem HBA mit vom Anschlußtreiber exportierten Programmroutinen. Jeder HBA weist Kommunikationspfade an ein oder mehrere Targets auf. Beispielsweise weist HBA1 318 Kommunikationspfade zu Target1 320 und Target2 340 auf. HBA2 338 weist Kommunikationspfade zu Target1 320 und Target2 340 auf. HBA3 358 weist Kommunikationspfade zu Target2 340 und Target3 360 auf. Ausführungsformen sehen Ausfallsicherung und Lastausgleich für HBAs 318, 338, und 358 vor, von denen einige Verbindungen zu demselben Target aufweisen. In bestimmten Ausführungsformen basieren die vorgeschlagene Ausfallsicherung und der Lastausgleich auf HBA-Gruppierung, aufbauend auf einem iSCSI-Portalgruppenkonzept.
  • Wiederum ist in bestimmten Ausführungsformen eine HBA-Gruppe nach Target und LUN geordnet (d.h. jeder HBA, der Daten zu einer bestimmten LUN eines Target lenken kann, wird einer HBA-Gruppe zugeordnet), und ein HBA kann mehreren HBA-Gruppen angehören. Beispielsweise können Daten Datenpfade, zu denen Filtertreiber1-Geräteobjekt 213, Filtertreiber4-Geräteobjekt 332, und Filtertreiber5-Geräteobjekt 352, zu derselben LUN (nicht dargestellt) in Target2 340 passieren. Jeder dieser Datenpfade passiert jeweils einen unterschiedlichen HBA (HBA1 318, HBA2 338, bzw. HBA3 358), und so sind HBA1 318, HBA2 338, und HBA3 358 in einer HBA-Gruppe. Das heißt, für jeden HBA in der HBA-Gruppe (zur Ausfallsicherung) können Daten, die zu einer LUN in Target2 340 gelenkt werden, durch jeden HBA in der HBA-Gruppe strömen (zur Ausfallsicherung) oder durch jeden der HBAs der HBA-Gruppe zugleich (zum Lastausgleich). Als ein weiteres Beispiel ist eine HBA-Gruppe aus durch HBA1 318 und HBA2 338 gebildet, da entsprechende Datenpfade durch HBA1 318 und HBA2 338 zu einer LUN (nicht dargestellt) in Target1 320 führen.
  • Ausführungsformen sehen neue Rückruf-Schnittstellen zum Implementieren von Fähigkeiten zur Ausfallsicherung und zum Lastausgleich in einem Filtertreiber bereit.
  • Die Ausfallsicherungsverfahren stellen eine hohe Verfügbarkeit von Kommunikationspfaden an ein Target bereit, wenn ein erster HBA oder Datenpfad durch den ersten HBA ausfällt (d.h., Pakete werden an einen zweiten HBA umgelenkt, der mit demselben Target verbunden ist). Zur Ausfallsicherung sehen Ausführungsformen ein Verbergen eines sekundären Speichergerätestapels und einen Benachrichtigungsmechanismus vor.
  • 4A und 4B zeigen Operationen für das Verbergen eines sekundären Speichergerätestapels gemäß bestimmten Ausführungsformen. Die Steuerung beginnt bei Block 400 mit einem Speichergerätestapel, der für eine logische Einheit aufgebaut ist. In Block 402 wird bestimmt, ob es sich um den ersten Speichergerätestapel für diese logische Einheit handelt. Wenn ja, geht die Verarbeitung auf Block 404 über, und wenn nicht, geht die Verarbeitung auf Block 406 über. Das heißt, wenn mehrere HBAs mit demselben Target verbunden sind, wird für jede SCSI-LUN des Targets für jeden der HBAs ein Speichergerätestapel erzeugt, um es dem Filtertreiber zu ermöglichen, SRBs für jeden HBA zu bearbeiten und umzuleiten. Wenn das Dateisystem auf jedem Speichergerätestapel angeordnet ist, der für dasselbe Target aufgebaut wird, könnte dies zu Synchronisierungsproblemen aufgrund mehrfacher Zugriffe auf denselben Speichergerätevorgang führen. Deshalb wird ein erster Speichergerätestapel, der für jede LUN aufgebaut wird, ein „primärer" Speichergerätestapel. Danach werden alle anderen Speichergerätestapel, die für die LUN gebaut werden, als „sekundäre" Speichergerätestapel behandelt. So ist in Block 404 der Speichergerätestapel als ein primärer Speichergerätestapel ausgewiesen. In Block 406 ist der Speichergerätestapel als ein sekundärer Speichergerätestapel ausgewiesen.
  • Beispielsweise ist in diesem Beispiel der Speichergerätestapel von Speicherklassetreiber1-Vorrichtungsobjekt 310, Filtertreiber1-Geräteobjekt 312, Anschluß/Miniport-Geräteobjekt 314, 316 als ein primärer Speichergerätestapel ausgewiesen. Der Speichergerätestapel von Speicherklasse1a-Geräteobjekt 330, Filtertreiber4-Geräteobjekt 332, Anschluß/Miniport-Geräteobjekt 334, 336 ist in diesem Beispiel als sekundärer Speichergerätestapel ausgewiesen. In diesem Beispiel ist der Speichergerätestapel von Speicherklasse1a-Geräteobjekt 350, Filtertreiber4-Geräteobjekt 352, Anschluß/Miniport-Geräteobjekt 354, 356 als sekundärer Speichergerätestapel ausgewiesen. Der Filtertreiber ermöglicht den Dateisystemaufbau auf einem primären Speichergerätestapel (d.h. Speichergerätestapel 310, 213, 314, und 316), und verhindert, daß das Dateisystem auf den anderen sekundären Speichergerätestapeln aufbaut (z.B. Speichergerätestapel 330, 332, 334, und 336, und Speichergerätestapel 350, 352, 354, und 356). Ebenso ist der Speichergerätestapel, der mit dem Speicherklassetreiber2-Geräteobjekt startet, ein primärer Speichergerätestapel, während der Speichergerätestapel, der mit dem Speicherklassetreiber2a-Geräteobjekt startet, ein sekundärer Speichergerätestapel ist. Durch das Verbergen des sekundären Speichergerätestapels werden Daten durch die primären Speichergerätestapel gelenkt, und nicht durch die sekundären Speichergerätestapel.
  • In 4B beginnt die Steuerung bei Block 420 mit einem Paket, das mit Erfolgsstatus von einem sekundären Speichergerätestapel abgeschlossen wurde. In Block 422 ändert der Filtertreiber den Erfolgsstatus in einen Fehlerstatus ab. In Block 424 stellt der Filtertreiber den Sense-Key-Wert auf nicht bereit ein. In Block 426 stellt der Filtertreiber den Sense-Code ein, um anzuzeigen, daß kein Medium in der Speichervorrichtung vorhanden ist. Um also zu verhindern, daß das Dateisystem auf den sekundären Speichergerätestapel aufbaut, ändert der Filtertreiber in einigen Ausführungsformen den Status von abgeschlossenen SRBs von den sekundären Speichergerätestapeln mit Erfolgsstatus auf Fehlerstatus (z.B. SRB_STATUS_FEHLER), stellt einen Sense-Key-Wert auf SCSI_SENSE_NICHT_BEREIT, und stellt einen zusätzlichen Sense-Code auf SCSI_ADSENSE_KEIN_MEDIUM_IN_VORRICHTUNG um.
  • 5A, 5B, und 5C zeigen Operationen für einen Benachrichtigungsmechanismus gemäß bestimmten Ausführungsformen. Der Filtertreiber und der Miniport-Treiber implementieren ein Protokoll zum gegenseitigen Zusammenwirken.
  • 5A zeigt Operationen für eine Ausfallsicherungsverarbeitung, die in einem Miniport-Treiber implementiert ist, gemäß bestimmten Ausführungsformen. In 5A beginnt die Steuerung bei Block 500 mit dem Empfang eines Pakets für einen bestimmten HBA-Datenpfad an dem Miniport-Treiber. Der Begriff „HBA-Datenpfad" kann als ein Datenpfad von einem Miniport über einen HBA zu einem Target beschrieben werden. Ein Typ von Paket kann ein SRB sein. In Block 502 geht dann, wen der HBA-Datenpfad ausgefallen ist, die Verarbeitung auf Block 504 über, und anderenfalls auf Block 508.
  • In Block 504 benutzt der Miniport-Treiber das Benachrichtigungsrückrufverfahren, um den Filtertreiber zu benachrichtigen, daß der HBA-Datenpfad ausgefallen ist. Optional stellt der Miniport-Treiber einen neuen HBA-Datenpfadbezeichner an den Filtertreiber bereit, und der Filtertreiber leitet Pakete auf den neuen HBA-Datenpfad um. Beispielsweise kann der Miniport für die HBA-Gruppe, die durch HBA1 318, HBA2 338, und HBA3 358 gebildet wird, bei Ausfall von HBA1 318 einen neuen HBA-Datenpfad spezifizieren, der entweder HBA2 338 oder HBA3 358 enthält. In bestimmten Ausführungsformen kann ein Zeiger für das Benachrichtigungsrückrufverfahren, und ein Zeiger für die Filtervorrichtungserweiterung für einen aktuellen HBA-Datenpfad über eine I/O-Steuerung (IOCTL) in einem Gerätehinzufügungsverfahren des Filtertreibers an den Miniport-Treiber gesendet werden. In bestimmten Ausführungsformen benachrichtigt der Miniport-Treiber, wenn ein HBA-Datenpfad ausfällt, den Filtertreiber von dem Ausfall des HBA-Datenpfads, indem das Benachrichtigungsrückrufverfahren mit einem Statusparameter und mit einem Zeigerparameter aufgerufen wird, wobei der Zeiger auf die Geräteerweiterung des Filtertreibers zeigt, die dem aktuellen Pfad entspricht.
  • Der Miniport-Treiber schließt keine Pakete mit Fehlerstatus ab, da dies den Anschlußtreiber dazu veranlassen kann, eine SRB-Warteschlange einzufrieren, oder eine Bus-Rücksetzung zu initiieren. Statt dessen schließt in Block 506 der Miniport-Treiber die ausstehenden (d.h. nicht abgeschlossenen) und neu empfangenen Pakete für den ausgefallenen HBA-Datenpfad mit einem Erfolgsstatus ab. In Block 508 sendet der Miniport-Treiber das Paket über den HBA-Datenpfad an das Target, da der HBA-Datenpfad nicht ausgefallen ist.
  • Wenn beispielsweise ein SRB an Miniport 316 empfangen wird, um an HBA1 318 gelenkt zu werden, und wenn HBA1 318 ausgefallen ist, schließt der Miniport-Treiber 316 alle ausstehenden SRBs für HBA1 318 als Teil des Protokolls ab, um den Filtertreiber 312 zu benachrichtigen, die SRBs an einen anderen HBA umzuleiten. Der Filtertreiber 312 kann die SRBs beispielsweise an HBA2 338 oder HBA3 358 umleiten.
  • 5B zeigt Operationen, die in einem Filtertreiber zur Ausfallsicherungsverarbeitung implementiert sind, gemäß bestimmten Ausführungsformen. Die Steuerung beginnt bei Block 510, wobei der Filtertreiber eine Benachrichtigung zum Ausfall eines HBA-Datenpfads empfängt. In Block 512 geht, wenn ein neuer HBA-Datenpfadbezeichner von dem Miniport-Treiber spezifiziert wird, die Verarbeitung auf Block 514 über, und anderenfalls auf Block 518. In Block 514 ändert der Filtertreiber den Status jedes Pakets von dem ausgefallenen Pfad, das abgeschlossen wird, vom Erfolgsstatus zum Beschäftigungsstatus ab. Diese Statusänderung veranlaßt den Klassetreiber dazu, die Pakete erneut auszustellen. Wenn die Pakete neu ausgestellt werden, behandelt der Filtertreiber sie als neue Anfragen, und leitet sie, wenn möglich, zu einem neuen Pfad um.
  • In Block 516 sendet der Filtertreiber Pakete, die von dem Klassetreiber nicht erfaßt wurden an den spezifizierten HBA-Datenpfad. In Block 518 wählt der Filtertreiber einen neuen Pfad, da kein neuer Pfadbezeichner spezifiziert wurde. In bestimmten Ausführungsformen fährt der Filtertreiber, wenn nur ein Pfad in einer HBA-Gruppe vorhanden ist, fort, neue Pakete an den ausgefallenen HBA-Datenpfad zu senden (z.B. Arbeit im PATH_THROUGH-Modus).
  • 5C zeigt Operationen, die in einem Miniport-Treiber implementiert sind, wenn ein HBA gemäß bestimmten Ausführungsformen wiederhergestellt ist. Die Steuerung beginnt bei Block 520 mit einem wiederhergestellten HBA-Datenpfad (z.B. wird ein HBA ans Netz gebracht, oder ein HBA oder Datenpfad durch diesen HBA, der zuvor ausgefallen war, ist wiederhergestellt). Wenn ein HBA-Datenpfad wiederhergestellt ist, benachrichtigt der Miniport-Treiber den Filtertreiber durch Aufrufen des Benachrichtigungsrückrufverfahrens (Block 522). In bestimmten Ausführungsformen benachrichtigt der Miniport-Treiber den Filtertreiber von der HBA-Datenpfad-Wiederherstellung, indem er das Benachrichtigungsrückrufverfahren mit einem Statusparameter und mit einem Zeigerparameter aufruft, wobei der Zeiger auf die Geräteerweiterung des Filters zeigt, die dem aktuellen Pfad entspricht. Der Miniport-Treiber kam auch einen neuen Pfadbezeichner an den Filtertreiber leiten, an den der Filtertreiber neue Pakete umleiten soll. In Block 524 geht, wenn ein neuer HBA-Datenpfad spezifiziert wurde, die Verarbeitung auf Block 526 über, und anderenfalls auf Block 528.
  • Nach der Benachrichtigung zur Wiederherstellung sendet der Filtertreiber, wenn ein neuer HBA-Datenpfad spezifiziert wurde, die neuen Pakete an den neuen HBA-Datenpfad (Block 526). Wenn kein neuer HBA-Datenpfad spezifiziert wurde, fährt der Filtertreiber fort, die Datenpakete auf dem gegenwärtig aktiven Pfad zu senden.
  • Zusätzlich zur Ausfallsicherungsverarbeitung sehen Ausführungsformen einen Filtertreiber zum Ausgleich der I/O-Arbeitslast für eine Vielzahl von HBa-Datenpfaden vor, die eine Vielzahl von HBAs umspannen. Ausführungsformen stehen einen statischen Lastausgleich und einen dynamischen Lastausgleich vor.
  • 6A und 6B zeigen Operationen zum Lastausgleich gemäß bestimmten Ausführungsformen. Für den Lastausgleich weist jeder HBA-Datenpfad in einer HBA-Gruppe einen zugeordneten Wert auf, der als Lastausgleichanteil bezeichnet wird, und der einen Prozentsatz einer gesamten I/O-Arbeitslast darstellt, die der jeweilige HBA-Datenpfad bearbeiten kann.
  • 6A zeigt Operationen für einen statischen Lastausgleich gemäß bestimmten Ausführungsformen. Die Steuerung beginnt bei Block 600 mit dem Empfang eines Datenpakets, das an den Filtertreiber übertragen werden soll. In Block 602 bestimmt der Filtertreiber den Lastausgleichanteil, der jedem HBA-Datenpfad in der HBA-Gruppe zugeordnet ist. Für den statischen Lastausgleich können die Lastausgleichanteile manuell festgelegt werden, und beispielsweise in einem Windows®-Register gespeichert werden. Der Miniport-Treiber empfängt die Lastausgleichanteilswerte, und leitet diese mit Hilfe des Benachrichtigungsrückrufverfahrens an den Filtertreiber weiter. Beim Empfang der ermittelten Lastausgleichanteilswerte aktualisiert der Filtertreiber die Lastausgleichanteile mit neuen Werten.
  • In Block 604 bestimmt der Filtertreiber die gleitende Mittelwert-Datenlänge (MDL) der übertragenen Pakete für jeden HBA-Datenpfad (z.B. SCSI-Übertragungslänge der Pakete). In be stimmten Ausführungsformen kann der Lastausgleich auf der tatsächlichen Datenlänge übertragener Pakete basieren, und nicht auf der Anzahl von Paketen. In Block 606 bestimmt der Filtertreiber eine Datenquote für jeden HBA-Datenpfad. In bestimmten Ausführungsformen ist die Datenquote für einen HBA-Datenpfad die MDL für den HBA-Datenpfad, multipliziert mit einem Verhältnis des Lastausgleichanteils für den HBA-Datenpfad und einem minimalen Wert eines Lastausgleichanteils in der HBA-Gruppe (d.h. Datenquote = MDL (Lastausgleichanteil/minimaler Lastausgleichanteil in der Gruppe).
  • In bestimmten Ausführungsformen wird MDL für jedes Paket oder jede Paketgruppe neu berechnet, während Datenquoten regelmäßig neu berechnet werden (z.B. nachdem eine bestimmte Anzahl von Paketen übertragen wurde). Die regelmäßigen Intervalle können durch ein Produkt der Zahl von HBA-Datenpfaden in der HBA-Gruppe, und durch einen einstellbaren Häufigkeits-Aktualisierungsfaktor bestimmt werden. Der Lastausgleichhäufigkeits-Aktualisierungsfaktor erlaubt das Einstellen des Lastausgleichs und erhöht die Leistung. Der Lastausgleichhäufigkeits-Aktualisierungsfaktor kann beispielsweise durch einen Systemadministrator eingestellt werden. Je höher die Häufigkeit der Aktualisierung von Datenquoten, desto niedriger die Differenz zwischen spezifizierten und tatsächlichen Lastausgleichanteilen. Auch können häufigere Aktualisierungen mehr Prozessorzeit in Anspruch nehmen.
  • In Block 608 bestimmt der Filtertreiber eine maximale Anzahl von Kommandos für eine logische Einheit eines Target. In Block 610 wählt der Filtertreiber einen HBA-Datenpfad, auf dem die Pakete gesendet werden, mit Hilfe eines Rundlaufverfahrens, wobei Pakete auf einem HBA-Datenpfad verschickt werden, bis eine Datenquote erreicht ist, oder eine maximale Anzahl von Kommandos für die logische Einheit eines Target erreicht ist.
  • Das heißt, für den statischen Lastausgleich kann ein Rundlaufverfahren benutzt werden. In bestimmten Ausführungsformen werden gültige HBA-Datenpfade für eine aktuelle HBA-Gruppe in einer doppelt verlinkten Liste für die Rundlaufoperation gesammelt. Dann werden die HBA-Datenpfade während der Lastausgleichsoperation mit Hilfe dieser Listen vertauscht. Das heißt, in bestimmten Ausführungsformen dauert das Senden von Paketen für einen bestimmten Pfad an, bis die Menge an übertragenen Daten die zuvor berechnete Datenquote für diesen HBA-Datenpfad erreicht, oder mit eine maximale Anzahl von SCSI-Kommandos für eine Target-LUN erreicht ist.
  • Bei dem statischen Lastausgleich kann die tatsächliche Verteilung von Paketen auf den HBA-Datenpfaden von einer festgelegten Verteilung abweichen (d.h. von Lastausgleichanteilen, die z.B. durch einen Systemadministrator festgelegt wurden). Je kleiner die Differenz zwischen der tatsächlichen und der festgelegten Verteilung, desto höher die Qualität des statischen Lastausgleichs. Die festgelegten Lastausgleichanteilswerte beeinflussen die Leistung des statischen Lastausgleichs.
  • 6B zeigt Operationen für einen dynamischen Lastausgleich gemäß bestimmten Ausführungsformen. Ein dynamischer Lastausgleich vermeidet Stauungen auf einem einzelnen HBA-Datenpfad, solange auf anderen Pfaden Bandbreite verfügbar ist, idem die I/O-Arbeitslast zwischen den Pfaden dynamisch angepaßt wird. Auf diese Weise bemüht sich der dynamische Lastausgleich um eine effizientere Nutzung einer verfügbaren Speicher/Netzwerk-Bandbreite.
  • Die Steuerung beginnt bei Block 620, wobei der Filtertreiber ein Datenpaket empfängt. In Block 622 bestimmt der Filtertreiber eine Datenübertragungsgeschwindigkeit für jeden HBA-Datenpfad in der HBA-Gruppe. In bestimmten Ausführungsformen wird die Datenübertragungsgeschwindigkeit für jeden HBA-Datenpfad als ein Verhältnis der insgesamt übertragenen Daten und der zum Übertragen der Daten verwendeten Gesamtzeit berechnet. Eine Aktualisierungsprogrammroutine bestimmt, wie oft die Übertragungsgeschwindigkeiten aktualisiert werden sollen. Ein einstellbarer Parameter für den dynamischen Lastausgleich ist ein Übertragungsgeschwindigkeits-Aktualisierungshäufigkeitsfaktor, der festlegt, wie oft die Aktualisierungsprogrammroutine aufgerufen werden soll. Der Übertragungsgeschwindigkeits-Aktualisierungshäufigkeitsfaktor kann anhand des spezifischen Verhaltens des Zustell-Subsystems eingestellt werden.
  • In Block 624 aktualisiert der Filtertreiber den Lastausgleichanteil für jeden HBA-Datenpfad. Lastausgleichanteile für jeden Pfad in der HBA-Gruppe können proportional zu ihrer Datenübertragungsgeschwindigkeit aktualisiert werden (d.h. die Datenübertragungsgeschwindigkeit für den ausgewählten HBA-Datenpfad geteilt durch die Datenübertragungsgeschwindigkeit der HBA-Gruppe). In Block 626 wählt der Filtertreiber einen HBA-Datenpfad anhand der Lastausgleichanteile aus, auf dem das Paket gesendet werden soll.
  • Während der Arbeit im Ausfallsicherungs- und Lastausgleichsmodus deaktivieren HBA-Ausfälle ein oder mehrere HBA-Gruppenmitglieder. In Ausführungsformen arbeiten die verbleibenden HBA-Gruppenmitglieder weiter, und halten dasselbe Verhältnis zwischen Lastausgleichanteilen aufrecht, das festgelegt wurde.
  • So sehen Ausführungsformen eine Kombination aus hoher Verfügbarkeit und statischem und dynamischem Lastausgleich vor. Ein Software-Modul, das die Lösung implementiert, ist relativ klein, und verursacht minimale Kosten für das System. Ausführungsformen sehen die Fähigkeit vor, die Funktion, die von Ausführungsformen der Lösung bereitgestellt wird, schnell und leicht ein- und auszuschalten, indem der Filtertreiber in den Gerätestapel eingeführt wird bzw. wieder aus diesem entfernt wird. Ausführungsformen sind mit verschiedenen Plattformen kompatibel (z.B. Windows-Plattformen, entweder 32-Bit oder 64-Bit). Auch sind Ausführungsformen auf jedes SCSI- und/oder iSCSI-basierte SAN- und/oder NAS-(Network Attached Storage, am Netzwerk angeschlossene Speicher)-Systeme anwendbar. Außerdem unterstützen Ausführungsformen für Ausfallsicherung und Lastausgleich mehrere (zwei oder mehr) HBAs.
  • Zusätzliche Ausführungsformdetails
  • Die beschriebenen Verfahren für Ausfallsicherung und Lastausgleich können als ein Verfahren, eine Vorrichtung oder ein Gegenstand implementiert sein, unter Benutzung von üblichen Programmier- und/oder Ingenieursverfahren zur Herstellung von Software, Firmware, Hardware, oder einer Kombination derselben. Der Begriff „Gegenstand", wie hier benutzt, bezeichnet Code oder Logik, der oder die in Hardwarelogik implementiert ist (z.B. ein integrierter Schaltkreischip, ein programmierbares Gate-Array (PGA), ein applikationsspezifischer integrierter Schaltkreis (ASIC) usw.), oder ein computerlesbares Medium, wie z.B. ein Magnetspeichermedium (z.B. Festplattenlaufwerke, Disketten, Band usw.), optische Speicher (CD-ROMs, optische Laufwerke usw.), flüchtige und nicht flüchtige Speichervorrichtungen (z.B. EEPROMs, ROMs, RAM, DRAMs, SRAMs, Firmware, programmierbare Logik usw.). Ein Prozessor greift auf Code in dem computerlesbaren Medium zu und verarbeitet ihn. Der Code, in dem bevorzugte Ausführungsformen implementiert sind, kann ein Übertragungsmedium, Signale, die sich durch den Raum fortpflanzen, Radiowellen, Infrarotsignale usw. umfassen. So kann der "Gegenstand" das Medium umfassen, auf dem der Code verkörpert ist. Außerdem kann der Gegenstand eine Kombination aus Hardware- und Softwarekomponenten umfassen, in der der Code verkörpert ist, verarbeitet und ausgeführt wird.
  • Fachleute werden verstehen, daß viele Modifikationen an dieser Anordnung vorgenommen werden können, ohne von dem Umfang der Ausführungsformen abzuweichen, und daß der Gegenstand jedes Information tragende Medium umfassen kann, das im Stand der Technik bekannt ist.
  • In den beschriebenen Ausführungsformen wurde eine bestimmte Logik in einem Treiber implementiert. In alternativen Ausführungsformen kann die Logik, die in dem Treiber und/oder Netzwerkadapter implementiert ist, ganz oder teilweise in Netzwerk-Hardware implementiert sein.
  • In bestimmten Ausführungsformen kann der Netzwerkadapter als eine PCI-Karte implementiert sein. In alternativen Ausführungsformen kann der Netzwerkadapter integrierte Schaltkreiskomponenten umfassen, die an dem Mutterbord des Computers 203 angeordnet sind.
  • In bestimmten Ausführungsformen kann der Netzwerkadapter dazu konfiguriert sein, Daten über ein Kabel zu übertragen, das mit einem Anschluß an dem Netzwerkadapter verbunden ist. In alternativen Ausführungsformen können die Netzwerkadapter-Ausführungsformen dazu konfiguriert sein, Daten über ein Funknetzwerk oder eine Funkverbindung zu übertragen, wie z.B. ein Funk-LAN.
  • Die dargestellte Logik aus 4A, 4B, 5A, 5B, 5C, 6A, und 6C zeigt, daß bestimmte Vorgänge in einer bestimmten Abfolge auftreten. In alternativen Ausführungsformen können bestimmte Operationen in einer anderen Abfolge ausgeführt, modifiziert, oder entfernt werden. Außerdem können der oben beschriebenen Logik Operationen hinzugefügt werden, und trotzdem den beschriebenen Ausführungsformen entsprechen. Auch können hier beschriebene Operationen sequentiell ablaufen, oder bestimmte Operationen können parallel verarbeitet werden. Außerdem können Operationen von einer einzelnen Verarbeitungseinheit oder von verteilten Verarbeitungseinheiten verarbeitet werden.
  • Die vorangehende Beschreibung verschiedener Ausführungsformen erfolgte zu Zwecken der Erläuterung und Beschreibung. Sie soll nicht umfassend sein oder die Ausführungsformen auf die genauen offenbarten Formen beschränken. Angesichts der aufgeführten Lehren sind viele Modifikationen und Variationen möglich. Es ist vorgesehen, daß der Umfang der Ausführungsformen nicht durch diese genaue Beschreibung beschränkt ist, sondern vielmehr durch die beiliegenden Ansprüche. Die vorangehenden Ausführungen, Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Benutzung der Zusammensetzung der Ausführungsformen dar. Da viele Ausführungsformen ohne Abweichung von dem Geist und Umfang der Ausführungsformen durchgeführt werden können, liegen die Ausführungsformen in den beiliegenden Ansprüchen vor.
  • ZUSAMMENFASSUNG
  • Die Erfindung betrifft Verfahren zur Ausfallsicherung und zum statischen und dynamischen Lastausgleich. Ein Filtertreiber empfängt eine Benachrichtigung über einen Pfadausfall, daß wenigstens einer eines ersten Netzwerkadapters und des Datenpfades durch den ersten Netzwerkadapter ausgefallen ist, und leitet Pakete, die an den ersten Netzwerkadapter gerichtet sind, auf einen zweiten Netzwerkadapter um. Ein Miniport-Treiber bestimmt, daß wenigstens ein Netzwerkadapter und Datenpfad durch den Netzwerkadapter ausgefallen sind, und benachrichtigt den Filtertreiber, daß wenigstens ein Netzwerkadapter und Datenpfad durch den Netzwerkadapter ausgefallen sind. Der Filtertreiber bestimmt eine Datenquote für jeden von mehreren Datenpfaden, bestimmt eine Maximalzahl von Befehlen für die jeweilige logische Einheit des Target, und wählt einen Datenpfad, auf dem ein Paket gesendet werden soll, basierend auf der Datenquote und der Maximalzahl von Befehlen. Der Filtertreiber bestimmt eine Datenübertragungsgeschwindigkeit für jeden von mehreren Datenpfaden, aktualisiert einen Lastausgleichanteil für die Datenpfade anhand der Datenübertragungsgeschwindigkeit von jedem der Datenpfade, und wählt einen Datenpfad, auf dem ein Paket gesendet werden soll, basierend auf dem Lastausgleichanteil der Datenpfade.

Claims (48)

  1. Verfahren in einem Computersystem zur Ausfallsicherung, wenn wenigstens einer von einem ersten Netzwerkadapter und einem Datenpfad durch den ersten Netzwerkadapter ausfällt, wobei das Computersystem einen Filtertreiber aufweist, und wobei der erste Netzwerkadapter mit einem zweiten Netzwerkadapter verbunden ist, umfassend: Empfangen einer Pfadausfall-Benachrichtigung mit dem Filtertreiber, daß wenigstens einer von dem ersten Netzwerkadapter und dem Datenpfad durch den ersten Netzwerkadapter ausgefallen ist; und Umlenken von Paketen mit dem Filtertreiber, die an den ersten Netzwerkadapter gerichtet sind, an den zweiten Netzwerkadapter.
  2. Verfahren nach Anspruch 1, außerdem umfassend: Ändern des Erfolgsstatus jedes Pakets mit dem Filtertreiber, das an den ersten Netzwerkadapter gerichtet war, bevor die Pfadausfall-Benachrichtigung empfangen wurde, in einen Beschäftigungsstatus.
  3. Verfahren nach Anspruch 1, außerdem umfassend: Bestimmen eines neuen Datenpfads mit dem Filtertreiber, der den zweiten Netzwerkadapter aufweist.
  4. Verfahren nach Anspruch 1, außerdem umfassend: Empfangen einer Benachrichtigung mit dem Filtertreiber, daß der erste Netzwerkadapter wiederhergestellt ist; und Bestimmen eines Datenpfads für neue Datenpakete mit dem Filtertreiber aufgrund dessen, ob die Benachrichtigung einen neuen Datenpfad festlegt.
  5. Verfahren nach Anspruch 1, außerdem umfassend: Ausweisen eines ersten Speichergerätestapels als einen primären Speichergerätestapel mit dem Filtertreiber, in Reaktion auf das Aufbauen des ersten Speichergerätestapels für eine logische Einheit; und Ausweisen eines folgenden Speichergerätestapels als einen sekundären Speichergerätestapel mit dem Filtertreiber, in Reaktion auf das Aufbauen des folgenden Speichergerätestapels für die logische Einheit.
  6. Verfahren nach Anspruch 5, außerdem umfassend: Verhindern eines Anordnens des Dateisystems auf dem sekundären Speichergerätestapel mit dem Filtertreiber.
  7. Verfahren zur Ausfallsicherung, wenn wenigstens einer von einem ersten Netzwerkadapter und einem Datenpfad durch den ersten Netzwerkadapter ausfällt, wobei der Netzwerkadapter mit einem Miniport-Treiber verbunden ist, der mit einem Filtertreiber verbunden ist, umfassend: Bestimmen, mit dem Miniport-Treiber, daß der Netzwerkadapter ausgefallen ist; und mit dem Miniport-Treiber den Filtertreiber darüber benachrichtigen, daß der Netzwerkadapter ausgefallen ist.
  8. Verfahren nach Anspruch 7, außerdem umfassend: Festlegen eines neuen Datenpfads mit dem Miniport-Treiber, der von dem Filtertreiber zum Umlenken von Paketen zu benutzen ist.
  9. Verfahren nach Anspruch 7, außerdem umfassend: Abschließen des Verarbeitens ausstehender Pakete mit dem Miniport-Treiber, die an den ersten Netzwerkadapter gerichtet sind, mit einem Erfolgsstatus.
  10. Verfahren nach Anspruch 7, außerdem umfassend: mit dem Miniport-Treiber bestimmen, daß der Netzwerkadapter wiederhergestellt ist; und Benachrichtigen des Filtertreibers mit dem Miniport-Treiber, daß der Netzwerkadapter wiederhergestellt ist.
  11. Verfahren zum statischen Lastausgleich, das in einem Filtertreiber implementiert ist, wobei der Filtertreiber folgendes ausführt: Bestimmen einer Datenquote für jeden einer Vielzahl von Datenpfaden; Identifizieren einer maximalen Zahl von Kommandos für eine logische Zieleinheit; und Auswählen eines Datenpfads, auf dem Pakete zu senden sind, basierend auf der Datenquote und der maximalen Zahl von Kommandos.
  12. Verfahren nach Anspruch 11, wobei der Filtertreiber außerdem folgendes ausführt: Bestimmen eines Lastausgleichanteils, der jedem Datenpfad in einer Gruppe zugeordnet wird; und Bestimmen einer mittleren Datenlänge von übertragenen Paketen für jeden Datenpfad.
  13. Verfahren nach Anspruch 11, wobei der Datenpfad mit Hilfe eines Rundlaufverfahrens ausgewählt wird, und wobei Pakete über den ausgewählten Datenpfad verschickt werden, bis wenigstens eine der Datenquoten für den Datenpfad erfüllt ist, und bis eine maximale Zahl von Kommandos erreicht ist.
  14. Verfahren zum dynamischen Lastausgleich, das in einem Filtertreiber implementiert ist, wobei der Filtertreiber folgendes ausführt: Bestimmen einer Datenübertragungsgeschwindigkeit für jeden einer Vielzahl von Datenpfaden; Aktualisieren eines Lastausgleichanteils für jeden der Vielzahl von Datenpfaden, basierend auf der Datenübertragungsgeschwindigkeit von jedem der Vielzahl von Datenpfaden; und Auswählen eines Datenpfades, auf dem ein Paket zu senden ist, basierend auf dem Lastausgleichanteil von jedem der Vielzahl von Datenpfaden.
  15. Verfahren nach Anspruch 14, wobei die Datenübertragungsgeschwindigkeit für jeden der Vielzahl von Datenpfaden als ein Verhältnis der insgesamt übertragenen Daten zu der insgesamt für das Übertragen der Daten benötigten Zeit berechnet wird.
  16. Verfahren nach Anspruch 14, wobei eine Häufigkeit, mit der die Datenübertragungsgeschwindigkeit bestimmt wird, einstellbar ist.
  17. System, das an einen Netzwerk- und Datenspeicher gekoppelt ist, umfassend: einen Host-Computer; eine Speichersteuerung, die den Eingang/Ausgang-(I/O)-Zugriff auf den Datenspeicher verwaltet, wobei die Speichersteuerung an den Host-Computer gekoppelt ist; einen ersten Netzwerkadapter; einen zweiten Netzwerkadapter; und einen Filtertreiber an dem Host-Computer, wobei der Filtertreiber zu folgendem in der Lage ist: Empfangen einer Pfadausfall-Benachrichtigung, daß wenigstens einer von einem ersten Netzwerkadapter und einem Datenpfad durch den ersten Netzwerkadapter ausgefallen ist, und Umlenken von Paketen, die an den ersten Netzwerkadapter gerichtet sind, an den zweiten Netzwerkadapter.
  18. System nach Anspruch 17, wobei der Filtertreiber außerdem zu folgendem in der Lage ist: Ändern eines Erfolgsstatus jedes Pakets, das an den ersten Netzwerkadapter gerichtet wurde, bevor die Pfadausfall-Benachrichtigung empfangen wurde, in einen Beschäftigungsstatus.
  19. System nach Anspruch 17, wobei der Filtertreiber außerdem zu folgendem in der Lage ist: Bestimmen eines neuen Datenpfades, der den zweiten Netzwerkadapter aufweist.
  20. System nach Anspruch 17, wobei der Filtertreiber außerdem zu folgendem in der Lage ist: Empfangen einer Benachrichtigung, daß der erste Netzwerkadapter wiederhergestellt ist; und Bestimmen eines Datenpfads für neue Datenpakete, basierend darauf, ob die Benachrichtigung einen neuen Datenpfad festgelegt hat.
  21. System nach Anspruch 17, wobei der Filtertreiber außerdem zu folgendem in der Lage ist: Ausweisen eines ersten Speichergerätestapels als einen primären Speichergerätestapel, in Reaktion auf das Aufbauen des ersten Speichergerätestapels für eine logische Einheit; und Ausweisen eines folgenden Speichergerätestapels als einen sekundären Speichergerätestapel, in Reaktion auf das Aufbauen des folgenden Speichergerätestapels für die logische Einheit.
  22. System nach Anspruch 21, wobei der Filtertreiber außerdem zu folgendem in der Lage ist: Verhindern, daß das Dateisystem auf dem sekundären Speichergerätestapel angeordnet wird.
  23. System, das an einen Netzwerk und einen Datenspeicher gekoppelt ist, umfassend: einen Host-Computer; eine Speichersteuerung, die den Eingang/Ausgang-(I/O)-Zugriff auf den Datenspeicher verwaltet, wobei die Speichersteuerung an den Host-Computer gekoppelt ist; einen Filtertreiber an dem Host-Computer; wenigstens zwei Netzwerkadapter an dem Host-Computer; und einen Miniport-Treiber an dem Host-Computer, wobei der Miniport-Treiber dazu in der Lage ist, zu bestimmen, daß wenigstens einer der Netzwerkadapter ausgefallen ist, und den Filtertreiber darüber zu benachrichtigen, daß der Netzwerkadapter ausgefallen ist.
  24. System nach Anspruch 23, wobei der Miniport-Treiber außerdem zu folgendem in der Lage ist: Festlegen eines neuen Datenpfads, der von dem Filtertreiber zum Umlenken von Paketen zu benutzen ist.
  25. System nach Anspruch 23, wobei der Miniport-Treiber außerdem zu folgendem in der Lage ist: Abschließen der Verarbeitung ausstehender Pakete, die an den ausgefallenen Netzwerkadapter gerichtet sind, mit einem Erfolgsstatus.
  26. System nach Anspruch 23, wobei der Miniport-Treiber außerdem zu folgendem in der Lage ist: Bestimmen, daß der ausgefallene Netzwerkadapter wiederhergestellt ist; und Benachrichtigen des Filtertreibers darüber, daß der ausgefallene Netzwerkadapter wiederhergestellt ist.
  27. System, das an einen Netzwerk und einen Datenspeicher gekoppelt ist, umfassend: einen Host-Computer; eine Speichersteuerung, die den Eingang/Ausgang-(I/O)-Zugriff auf den Datenspeicher verwaltet, wobei die Speichersteuerung an den Host-Computer gekoppelt ist; einen Filtertreiber an dem Host-Computer; einen Filtertreiber, der dazu in der Lage ist, eine Datenquote für jeden von einer Vielzahl von Datenpfaden zu bestimmen, eine maximale Zahl von Kommandos für eine logische Zieleinheit zu bestimmen, und einen Datenpfad auszuwählen, auf dem Pakete zu senden sind, basierend auf der Datenquote und der maximalen Zahl von Befehlen.
  28. System nach Anspruch 27, wobei der Filtertreiber außerdem folgendes ausführt: Bestimmen eines Lastausgleichanteils, der jedem Datenpfad in einer Gruppe zugeordnet wird; und Bestimmen einer mittleren Datenlänge übertragener Pakete für jeden Datenpfad.
  29. System nach Anspruch 27, wobei der Datenpfad mit Hilfe eines Rundlaufverfahrens ausgewählt wird, und wobei Pakete über den ausgewählten Datenpfad verschickt werden, bis wenigstens eine der Datenquoten für den Datenpfad erfüllt ist, und bis eine maximale Zahl von Kommandos erreicht ist.
  30. System, das an ein Netzwerk und einen Datenspeicher gekoppelt ist, umfassend: einen Host-Computer; eine Speichersteuerung, die den Eingang/Ausgang-(I/O)-Zugriff auf den Datenspeicher verwaltet, wobei die Speichersteuerung an den Host-Computer gekoppelt ist; einen Filtertreiber an dem Host-Computer; einen Filtertreiber, der dazu in der Lage ist, eine Datenübertragungsgeschwindigkeit für jeden der Datenpfade zu bestimmen, einen Lastausgleichanteil für jeden der Datenpfade basierend auf der Datenübertragungsgeschwindigkeit von jedem der Datenpfade zu aktualisieren, und einen Datenpfad auszuwählen, auf dem ein Paket zu senden ist, basierend auf dem Lastausgleichanteil von jedem der Datenpfade.
  31. System nach Anspruch 30, wobei die Datenübertragungsgeschwindigkeit für jeden der Datenpfade als ein Verhältnis der insgesamt übertragenen Daten zu der insgesamt zum Übertragen der Daten benötigten Zeit berechnet wird.
  32. System nach Anspruch 30, wobei eine Häufigkeit, mit der die Datenübertragungsgeschwindigkeit bestimmt wird, einstellbar ist.
  33. Gegenstand, der ein Speichermedium umfaßt, in dem Befehle gespeichert sind, die, wenn sie von einer Rechnervorrichtung ausgeführt werden, zu folgendem führen: Empfangen einer Pfadausfallbenachrichtigung, daß wenigstens einer von dem ersten Netzwerkadapter und dem Datenpfad durch den ersten Netzwerkadapter ausgefallen ist; und Umlenken von Paketen, die an den ersten Netzwerkadapter gerichtet sind, an den zweiten Netzwerkadapter.
  34. Gegenstand nach Anspruch 33, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Ändern eines Erfolgszustands jedes Pakets, das an den ersten Netzwerkadapter gerichtet war, bevor die Pfadausfallbenachrichtigung empfangen wurde, in einen Beschäftigungsstatus.
  35. Gegenstand nach Anspruch 33, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Bestimmen eines neuen Datenpfads, der den zweiten Netzwerkadapter aufweist.
  36. Gegenstand nach Anspruch 33, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Empfangen einer Benachrichtigung, daß der erste Netzwerkadapter wiederhergestellt ist; und Bestimmen eines Datenpfads für neue Datenpakete, basierend darauf, ob die Benachrichtigung einen neuen Datenpfad festgelegt hat.
  37. Gegenstand nach Anspruch 33, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Ausweisen eines ersten Speichergerätestapels als einen primären Speichergerätestapel, in Reaktion auf das Aufbauen des ersten Speichergerätestapels für eine logische Einheit; und Ausweisen eines folgenden Speichergerätestapels als einen sekundären Speichergerätestapel, in Reaktion auf das Aufbauen des folgenden Speichergerätestapels für die logische Einheit.
  38. Gegenstand nach Anspruch 37, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Verhindern, daß das Dateisystem auf dem sekundären Speichergerätestapel angeordnet wird.
  39. Gegenstand, der ein Speichermedium umfaßt, in dem Befehle gespeichert sind, die, wenn sie ausgeführt werden, außerdem zu folgendem führen: Bestimmen, daß der Netzwerkadapter ausgefallen ist; und Benachrichtigen des Filtertreibers, daß der Netzwerkadapter ausgefallen ist.
  40. Gegenstand nach Anspruch 39, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Festlegen eines neuen Datenpfads, der von dem Filtertreiber zum Umlenken von Paketen zu benutzen ist.
  41. Gegenstand nach Anspruch 39, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Abschließen der Verarbeitung ausstehender Pakete, die an den ersten Netzwerkadapter gerichtet sind, mit einem Erfolgsstatus.
  42. Gegenstand nach Anspruch 39, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Bestimmen, daß der Netzwerkadapter wiederhergestellt ist; und Benachrichtigen des Filtertreibers, daß der Netzwerkadapter wiederhergestellt ist.
  43. Gegenstand, der ein Speichermedium umfaßt, in dem Befehle gespeichert sind, die, wenn sie ausgeführt werden, zu folgendem führen: Bestimmen einer Datenquote für jeden von mehreren Datenpfaden; Identifizieren einer maximalen Zahl von Kommandos für eine logische Zieleinheit: und Auswählen eines Datenpfads, auf dem Pakete zu senden sind, basierend auf der Datenquote und der maximalen Zahl von Kommandos.
  44. Gegenstand nach Anspruch 43, wobei die Befehle, wenn sie ausgeführt werden, außerdem zu folgendem führen: Bestimmen eines Lastausgleichanteils, der jedem Datenpfad in einer Gruppe zugeordnet wird; und Bestimmen einer mittleren Datenlänge übertragener Pakete für jeden Datenpfad.
  45. Gegenstand nach Anspruch 43, wobei der Datenpfad mit Hilfe eines Rundlaufverfahrens ausgewählt wird, und wobei Pakete über den ausgewählten Datenpfad verschickt werden, bis wenigstens eine der Datenquoten für den Datenpfad erfüllt ist, und bis eine maximale Zahl von Kommandos erreicht ist.
  46. Gegenstand, der ein Speichermedium umfaßt, in dem Befehle gespeichert sind, die, wenn sie ausgeführt werden, zu folgendem führen: Bestimmen einer Datenübertragungsgeschwindigkeit für jeden von einer Vielzahl von Datenpfaden; Aktualisieren eines Lastausgleichanteils für jeden der Datenpfade, basierend auf der Datenübertragungsgeschwindigkeit für jeden der Datenpfade; und Auswählen eines Datenpfads, auf dem ein Paket zu senden ist, basierend auf dem Lastausgleichanteil von jedem der Datenpfade.
  47. Gegenstand nach Anspruch 46, wobei die Datenübertragungsgeschwindigkeit für jeden der Datenpfade als ein Verhältnis der insgesamt übertragenen Daten und der insgesamt zum Übertragen der Daten benötigten Zeit berechnet wird.
  48. Gegenstand nach Anspruch 46, wobei die Häufigkeit, mit der die Datenübertragungsgeschwindigkeit bestimmt wird, einstellbar ist.
DE112004002797.7T 2004-03-19 2004-03-19 Ausfallsicherung und Lastausgleich Expired - Fee Related DE112004002797B4 (de)

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
DE112004002797T5 true DE112004002797T5 (de) 2007-01-11
DE112004002797B4 DE112004002797B4 (de) 2015-12-31

Family

ID=34993888

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004002797.7T Expired - Fee Related DE112004002797B4 (de) 2004-03-19 2004-03-19 Ausfallsicherung und Lastausgleich

Country Status (6)

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

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
US7443867B2 (en) * 2003-08-15 2008-10-28 Nortel Networks Limited Method for performing network services
DE112004002797B4 (de) * 2004-03-19 2015-12-31 Zakrytoe Aktsionernoe Obschestvo "Intel A/O" Ausfallsicherung und Lastausgleich
US8266438B2 (en) 2004-10-25 2012-09-11 Security First Corp. Secure data parser method and system
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
US8677014B2 (en) 2006-11-27 2014-03-18 Cisco Technology, Inc. Fine granularity exchange level load balancing in a multiprocessor storage area network
US7882283B2 (en) 2006-11-27 2011-02-01 Cisco Technology, Inc. Virtualization support in a multiprocessor storage area network
EP2482218A3 (de) * 2006-12-05 2012-10-31 Security First Corporation Verbessertes Sicherungsverfahren auf einem Datenspeicher mit einem sicheren Datenparser
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 (de) * 2008-06-04 2012-03-28 Software AG System und Verfahren für eine allgemeine Integration einer Datenbank in einen Hochverfügbarkeitscluster
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
CA2781872A1 (en) 2009-11-25 2011-06-09 Security First Corp. Systems and methods for securing data in motion
EP2362651A1 (de) * 2010-02-19 2011-08-31 Thomson Licensing Mehrwegige Lieferung für anpassungsfähige Strömung
JP5663083B2 (ja) 2010-03-31 2015-02-04 セキュリティー ファースト コープ. 移動中のデータをセキュア化するためのシステムおよび方法
US8824492B2 (en) * 2010-05-28 2014-09-02 Drc Computer Corporation Accelerator system for remote data storage
US8281033B1 (en) * 2010-06-29 2012-10-02 Emc Corporation Techniques for path selection
CN105071936B (zh) 2010-09-20 2018-10-12 安全第一公司 用于安全数据共享的系统和方法
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
US9916456B2 (en) 2012-04-06 2018-03-13 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 磁碟陣列卡擴展管理方法及系統
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
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
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
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
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
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
US9473590B1 (en) 2012-12-21 2016-10-18 Emc Corporation Client connection establishment over fibre channel using a block device access model
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
US9338819B2 (en) * 2013-05-29 2016-05-10 Medtronic Minimed, Inc. Variable data usage personal medical system and method
US9274989B2 (en) 2013-06-12 2016-03-01 International Business Machines Corporation Impersonating SCSI ports through an intermediate proxy
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
US9274916B2 (en) 2013-06-12 2016-03-01 International Business Machines Corporation Unit attention processing in proxy and owner storage systems
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
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 緯創資通股份有限公司 伺服器品質驗證方法及其系統
CN107210971A (zh) * 2014-12-18 2017-09-26 诺基亚通信公司 网络负载平衡器
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
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
US6208616B1 (en) * 1997-05-13 2001-03-27 3Com Corporation System for detecting errors in a network
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
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
US6769071B1 (en) * 2001-01-23 2004-07-27 Adaptec, Inc. Method and apparatus for intelligent failover in a multi-path 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
CN100520724C (zh) * 2002-08-02 2009-07-29 草谷(U.S)公司 用于实现故障切换恢复的网络系统及方法
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 富士通株式会社 伝送帯域制御装置
DE502004001427D1 (de) 2003-05-15 2006-10-19 Siemens Ag Verfharen und netzknoten fuer eine selbst-regulierende, autonome und dezentrale verkehrsverteilung in einem mehrwege-netz
US20050010837A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method and apparatus for managing adapters in a data processing system
DE60324037D1 (de) 2003-08-07 2008-11-20 Telecom Italia Spa Verfahren zur statistischen schätzung der verkehrsdispersion in einem telekommunikationsnetz
US7443867B2 (en) 2003-08-15 2008-10-28 Nortel Networks Limited Method for performing network services
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
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
US20050185789A1 (en) * 2004-01-30 2005-08-25 Goodwin Kevin M. Forestalling actions that otherwise would defeat access-control mechanism for volume
DE112004002797B4 (de) 2004-03-19 2015-12-31 Zakrytoe Aktsionernoe Obschestvo "Intel A/O" Ausfallsicherung und Lastausgleich
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
GB0616648D0 (en) 2006-10-04
CN1942862A (zh) 2007-04-04
US7992039B2 (en) 2011-08-02
US7721150B2 (en) 2010-05-18
JP2007527172A (ja) 2007-09-20
US20100185794A1 (en) 2010-07-22
US20110258484A1 (en) 2011-10-20
US20080222661A1 (en) 2008-09-11
WO2005091141A1 (en) 2005-09-29
JP4430710B2 (ja) 2010-03-10
CN100501684C (zh) 2009-06-17
US8429452B2 (en) 2013-04-23
GB2426609B (en) 2008-05-14
GB2426609A (en) 2006-11-29
DE112004002797B4 (de) 2015-12-31

Similar Documents

Publication Publication Date Title
DE112004002797B4 (de) Ausfallsicherung und Lastausgleich
DE112008001682B4 (de) Speicherbereichsnetzwerk mit Erkennung auf der Zielseite und dem Hochladen einer Routing- Tabelle
DE10296675T5 (de) Virtuelles Vernetzungssystem und -verfahren in einem Verarbeitungssystem
DE69922693T2 (de) Systemem und verfahren für netzwerkvorrichtung und ein-ausgabegerätetreiber
DE69922690T2 (de) Fehlertolerante netze
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE60303026T2 (de) System, verfahren und produkt zur verwaltung des datenverkehrs in einem netzwerk
DE60302876T2 (de) Master-knotenauswahl in geclusterten knotenkonfigurationen
DE69832744T2 (de) System und Verfahren zur automatischen dynamischen Ringadressveränderungen
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE112012001753B4 (de) 3 -Anmeldesequenz für eine Fibre-Channel-Weiterleiterstruktur
DE112011100822T5 (de) Aufrechterhalten der Durchlässigkeit eines Datenübertragungspfades in einem Datenspeichernetzwerk
US7827251B2 (en) Fast write operations to a mirrored volume in a volume manager
DE102012206283B4 (de) Verteilung des Datenflusses auf mehrere Pfade (Multi-Pathing) in einem Speicherbereichsnetzwerk
EP2880534B1 (de) Hochverfügbares rechnersystem, arbeitsverfahren und dessen verwendung
DE112013006643B4 (de) Speichersystem und steuerungsverfahren für speichersystem
DE112005003217B4 (de) Routing von Mitteilungen
DE112007002211T5 (de) Vorrichtung und Verfahren zum Verbinden von SAS RAID Controller-Vorrichtungs-Kanälen über redundante Speichersubsysteme hinweg
DE202016009110U1 (de) System, Adapter, Vorrichtung und Server zum Ausgleichen von Speicherdatenverkehr in konvergierten Netzwerken
CN105900068A (zh) 路径管理的系统、装置和方法
DE112019007502T5 (de) Zuordnen von nvme-over-fabric-paketen mithilfe von virtuellen ausgangswarteschlangen
DE112012006160B4 (de) Netzwerkknotenelement, Subnetzmanager, System und Verfahren zur effizienten Verteilung von Subnetzverwaltungsdaten über ein RDMA-Netzwerk
DE60317541T2 (de) Verfahren zur bestimmung eines übergeordneten portals in einem drahtlosen netzwerk und entsprechende portaleinrichtung
DE102004059754A1 (de) Ein Disk Array System mit Failover und Load Balance Funktionen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004002797

Country of ref document: DE

Date of ref document: 20070111

Kind code of ref document: P

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee