DE10317925B4 - Steuerungskommunikation über eine ständig eingeschaltete Steuerungsverbindung - Google Patents

Steuerungskommunikation über eine ständig eingeschaltete Steuerungsverbindung Download PDF

Info

Publication number
DE10317925B4
DE10317925B4 DE10317925A DE10317925A DE10317925B4 DE 10317925 B4 DE10317925 B4 DE 10317925B4 DE 10317925 A DE10317925 A DE 10317925A DE 10317925 A DE10317925 A DE 10317925A DE 10317925 B4 DE10317925 B4 DE 10317925B4
Authority
DE
Germany
Prior art keywords
control
controller
data
pair
loop
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
DE10317925A
Other languages
English (en)
Other versions
DE10317925A1 (de
Inventor
Robert A. Boise Rust
Tammy T. Boise Van de Graaff
Barry J. Boise Oldfield
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE10317925A1 publication Critical patent/DE10317925A1/de
Application granted granted Critical
Publication of DE10317925B4 publication Critical patent/DE10317925B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • 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
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • 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
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • 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
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • 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
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • G06F11/2092Techniques of failing over between control units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

Plattenarray (102), das folgende Merkmale aufweist:
eine Mehrzahl von Plattenlaufwerken (214);
zumindest zwei Steuerungspaare (208), wobei jedes Steuerungspaar (208) eine erste Steuerung aufweist, die durch einen Spiegelbus (400) mit einer zweiten Steuerung gekoppelt ist, wobei jede Steuerung Zugriff auf jedes Plattenlaufwerk (214) aus der Mehrzahl von Plattenlaufwerken (214) hat; und
eine einzige Steuerungsschleife, die alle Steuerungen durch eine Mehrzahl von Schleifenbussen (402) koppelt.

Description

  • Die vorliegende Offenbarung bezieht sich auf Plattenarrays und insbesondere auf eine Steuerungsverbindungsstruktur in Mehrfachsteuerungs-Plattenarrays bzw. -Diskarrays, die eine fortdauernde Kommunikation zwischen Steuerungen in verschiedenen Ausfallszenarios ermöglicht.
  • Moderne Massenspeichersysteme liefern weiterhin zunehmende Speicherkapazitäten, um Benutzeranforderungen von Hostcomputersystemanwendungen zu erfüllen. Ein zunehmender Verlaß auf eine Massenspeicherung einer hohen Kapazität führte zu einer entsprechenden Nachfrage nach einer verbesserten Zuverlässigkeit derartiger Speichersysteme. Eine populäre Lösung in bezug auf die die Nachfrage nach einer erhöhten Speicherkapazität und Zuverlässigkeit ist die Verwendung mehrerer kleinerer Speichermodule, die in Geometrien konfiguriert sind, die eine Redundanz gespeicherter Daten ermöglichen, um im Fall verschiedener Ausfälle eine Datenintegrität zu gewährleisten.
  • RAID-Plattenarrays (RAID = redundantes Array von Laufwerken, redundant array of independent disks) sind ein Beispiel einer fehlertoleranten Massenspeichertechnologie, die sich als Reaktion auf die ständig steigende Nachfrage nach einer größeren Speicherkapazität und -zuverlässigkeit entwickelt hat. Zusätzlich dazu, daß RAID-Plattenarrays eine Redundanz gespeicherter Daten liefern, um im Falle verschiedener Ausfälle eine Datenintegrität zu gewährleisten, stellen sie Hostcomputersystemen auch große Mengen an Speicherkapazität bereit. Deshalb umfassen derartige Plattenarrays in der Regel redundante Komponenten wie beispielsweise Steuerungen und Leistungsversorgungen, sowie Im-Betrieb-Umschichtungsfähigkeiten (Hot-Swap-Fähigkeiten) für verschiedene Teilsystemmodule (d.h. eine Fähigkeit, Module auszutauschen, ohne das System herunterzufahren).
  • Herkömmliche RAID-Arrays weisen üblicherweise zwei Steuerungen auf, die das Array verwalten und Gespiegelter-Speicher-Operationen für eine Datenredundanz durchführen. Die Steuerungen bewirken, daß das Array dem Hostcomputer als ein einziges, sehr zuverlässiges Plattenlaufwerk mit einer hohen Kapazität erscheint. Beide Steuerungen weisen einen unabhängigen Zugriff auf alle Datencache-Informationen, alle Eingangs-/Ausgangszustandsinformationen (I/O-Zustandsinformationen) und alle Systemzustandsinformationen, so daß ein Ausfall einer der Steuerungen die verbleibende funktionierende Steuerung nicht daran hindert, auf alle Informationen zuzugreifen, die notwendig sind, um den alleinigen Betrieb des Arrays zu übernehmen. An Steuerungsverbindungsbussen ist eine beträchtliche Bandbreite erforderlich, um es den Steuerungen zu ermöglichen, die notwendigen Informationen zum Verarbeiten von Host-I/O-Anforderungen und zum Durchführen von Gespiegelter-Speicher-Operationen zu transferieren.
  • Während Plattenarrays größer werden, können zu den Arrays Steuerungspaare hinzugefügt werden, um ihre Rechenressourcen zu vergrößern und um die Systemleistung aufrechtzuerhalten oder zu verbessern. Während die Anzahl von Steuerungspaaren zunimmt, nimmt jedoch die Menge an Daten, die über die Steuerungsverbindungsbusse zwischen Steuerungen fließen, dramatisch zu. Wenn beispielsweise ein Steuerungspaar „A" einen Hostcomputer-Schreibbefehl empfängt, der für den Cachespeicher an dem Steuerungspaar „B" bestimmt ist, trägt die Steuerungsverbindung nicht nur einen gespiegelten Datenverkehr und Interprozessorkommunikationen zwischen Steuerungen im Paar „B", sondern sie trägt auch einen Paarzu-Paar-Verkehr zwischen den beiden Steuerungspaaren „A" und „B". Erstens muß die Verbindung den Verkehr von der Steuerungstafel im Paar „A", die die Hostdaten empfing, zu der Steuerungstafel im Paar „B", die der Zielort der Host daten ist, tragen. Zweitens muß die Verbindung den Spiegelverkehr zwischen den beiden Steuerungstafeln, die das Steuerungspaar „B" bilden, tragen. Deshalb kann ein Anstieg der Anzahl von Steuerungspaaren in einem Plattenarray zu Leistungsengpässen aufgrund von Bandbreitenbeschränkungen der Steuerungsverbindungsbusse beitragen.
  • Eine weitere Betrachtung in bezug auf Steuerungsverbindungen bezieht sich auf neu erscheinende Technologien, die breitere Schnittstellen zwischen Plattenarrays und Hostsystemen ermöglichen. Während leistungsfähigere Hostcomputerverbindungen zum Verbinden von RAID-Speicherarrays mit Hostcomputersystemen entwickelt werden, erfahren Steuerungsverbindungsbusse einen entsprechenden Anstieg der Menge an Daten, die zwischen Steuerungen in einem Array fließen. Wiederum können Bandbreitenbeschränkungen bei Steuerungsverbindungsbussen in dem Array zu Leistungsengpässen führen.
  • Ein weiteres Problem, das sich aus einem Hinzufügen von mehr Steuerungen zu einem Plattenarray (d.h. einem Clustern der Steuerungen) ergibt, besteht darin, daß mehr und mehr Daten zu entfernten Steuerungen wandern statt zu einer lokalen Steuerung in dem Gespiegelte-Steuerung-Paar, wo die Daten empfangen werden. Wenn lediglich 2 Steuerungstafeln in einem Plattenarray vorliegen, ist der gesamte Hostcomputerplattenverkehr für den lokalen gespiegelten Cachespeicher bestimmt, weil es lediglich einen gespiegelten Cachespeicher gibt. Wenn sich jedoch 4 Steuerungstafeln in einem Array befinden, sinkt der Prozentsatz an Daten, die zu dem lokalen gespiegelten Cachespeicher fließen, auf 50 % ab. Die Hälfte des Verkehrs bleibt in dem lokalen Cachespeicher, während die andere Hälfte für den Cachespeicher des entfernten Paars bestimmt ist. Bei 16 Paaren von Steuerungen sind lediglich 7 % des Verkehrs lokal. Somit ändern sich die Charakteristika der Steuerungsverbindung mit dem Clustern von Steuerungen in dem Plattenarray dramatisch.
  • Eine weitere wichtige Überlegung in bezug auf Kommunikationen zwischen Steuerungen in einem geclusterten Plattenarray ist die Wirkung, die Ausfälle in der Steuerungsverbindung auf die Funktionstüchtigkeit des Arrays haben. Derzeit kann ein Ausfall in einer Steuerungsverbindung zu einem Ausfall der Funktionstüchtigkeit verwandter Arrayelemente führen. Um ein dauerhaftes Blockiertsein des Plattenarrays unter derartigen Umständen zu vermeiden, müssen verschiedene Zeitüberwachungsfunktionen entworfen und in die Arrayhardware eingebaut werden. Dies führt zu Problemen beim Hardwareentwurf und erhöht ferner die Komplexität von Firmware, die in der Lage sein muß, den Verlust von Steuerungskommunikationen unverzüglich zu tolerieren.
  • Es ist die Aufgabe der vorliegenden Erfindung, Plattenarrays, Steuerungsverbindungsstrukturen, prozessorlesbare Medien sowie Verfahren zu schaffen, die eine effiziente Nutzung von aktuellen und zukünftigen Verbindungsbandbreitenfähigkeiten liefern und die fortgesetzte Steuerung-zu-Steuerung-Kommunikationen und eine Plattenarray-Funktionstüchtigkeit bei verschiedenen Verbindungsausfallszenarien ermöglichen.
  • Diese Aufgabe wird durch Plattenarrays gemäß den Ansprüchen 1 oder 10, Steuerungsverbindungsstrukturen gemäß den Ansprüchen 11 oder 19, prozessorlesbare Medien gemäß den Ansprüchen 21, 26, 30 oder 34 sowie durch Verfahren gemäß den Ansprüchen 35, 37, 39 oder 40 gelöst.
  • Eine Steuerungsverbindungsstruktur ermöglicht Kommunikationen mit einer geringen Latenz/einer hohen Bandbreite durch Spiegelbusse, die Steuerungen als Gespiegelte-Steuerung-Paare in einem RAID-Plattenarray, das eine Mehrzahl von Gespiegelte-Steuerung-Paare (d.h. Geclusterte-Steuerung-Paare) aufweist, miteinander koppeln. Die Verbindungsstruktur bildet ferner eine Steuerungsschleife, die Steuerungen durch Schleifenbusse miteinander koppelt. Die Steuerungsschleife liefert eine automatische Ersatzbetriebsfunktion, die in dem Fall, daß ein Ausfall in der Steuerungsschleife auftritt, fortgesetzte Kommunikationen zwischen Steuerungspaaren ermöglicht.
  • Bei einem ersten Ausführungsbeispiel umfaßt ein Plattenarray zumindest zwei Paare von Steuerungen. Jedes Steuerungspaar weist eine erste und eine zweite Steuerung auf, die Gespiegelter-Speicher-Operationen durch einen Spiegelbus durchführen, der Spiegeldatenverkehr zwischen den beiden gespiegelten Steuerungen in dem Steuerungspaar trägt. Ferner ist eine Steuerungsschleife durch die Verbindung aller Steuerungen durch eine Mehrzahl von Schleifenbussen gebildet. Jede Steuerung ist mit zwei logisch benachbarten Steuerungen durch einen Schleifenbus gekoppelt, derart, daß eine Endlosschleife von Steuerungen gebildet wird. Die Steuerungsschleife ermöglicht, daß Daten und Steuerinformationen in beiden Richtungen zwischen den beiden oder mehreren Steuerungspaaren an der Schleife entlangwandern. Eine Routing- bzw. Weiterleitungslogik in jeder Steuerung steuert den Datenfluß in der Schleife derart, daß Datenpakete normalerweise an die nächstgelegene gespiegelte Steuerung, die Arrayadressen in den Datenpaketüberschriften zugeordnet ist, weitergeleitet werden.
  • Ein Ausfall in der Steuerungsschleife bewirkt, daß die Schleife zu einer einzigen Kette von Steuerungen ausfällt. Obwohl die Steuerungsschleife ausgefallen ist, ist die Steuerungskette in der Lage, zwischen allen Steuerungspaaren eine fortgesetzte Kommunikation bereitzustellen. Eine Hardwareschaltungsanordnung an jeder Steuerung liefert eine automatische Ersatzbetriebsfunktion, die Ausfälle in der Steuerungsschleife toleriert, indem sie einen Ausfall erfaßt und Daten in eine andere Richtung umleitet, um den Ausfall (500) zu meiden. Deshalb werden Daten, die anfänglich in einer Richtung durch die Schleife wandern, in die entgegengesetzte Richtung umgeleitet oder „zurückgesandt" („bounced"), wenn ein Schleifenausfall angetroffen wird.
  • Die Steuerungskette trägt dann die Daten zu ihrem Ziel-Steuerungspaar.
  • Ein weiteres Ausführungsbeispiel umfaßt die Steuerungen, die wie bei dem vorherigen Ausführungsbeispiel konfiguriert sind und durch zwei Rückwandplatinenverbindungstafeln miteinander gekoppelt sind. Eine Hälfte jedes Spiegelbusses und eine Hälfte jedes Schleifenbusses verläuft durch jede der beiden Rückwandplatinen. Im Normalbetrieb können beide Hälften jedes Busses in Übereinstimmung miteinander arbeiten, oder es ist eine Hälfte jedes Busses in der Lage, im Fall einer Ausfallbedingung den gesamten Datenverkehr beider Hälften zu übernehmen. Somit ermöglicht die duale Rückwandplatinenkonfiguration eine während des Betriebs erfolgende Reparatur jeder der beiden Rückwandplatinen. Eine Hardwareschaltungsanordnung an Steuerungstafeln erfaßt automatisch ausgefallene Verbindungen zwischen Tafeln. Ein erfaßter Ausfall an jeglichem Bus führt automatisch zu einem Ersatzbetrieb des Busses dahingehend, daß er die funktionstüchtige Hälfte des Busses verwendet. Somit kann jede der beiden Rückwandplatinen entfernt und repariert werden, während weiter Daten zwischen Steuerungen über die funktionstüchtige Hälfte jedes Busses, der durch die verbleibende Rückwandplatine läuft, fließen.
  • Ein drittes Ausführungsbeispiel umfaßt zwei oder mehr Sätze von Steuerungen, die allgemein wie bei den vorherigen Ausführungsbeispielen konfiguriert und logisch in Ebenen gekoppelt sind. Das Ausführungsbeispiel ermöglicht, daß die Größe eines Plattenarraysystems maßstäblich beträchtlich vergrößert wird, indem die Anzahl von Steuerungen durch zusätzliche Steuerungsschleifen erhöht wird. Jede Schleife von Steuerungen ist als eine Ebene von Steuerungen konfiguriert, die auf eine andere Ebene von Steuerungen gestapelt ist. Jede zusätzliche Steuerungsschleife weist dieselben Eigenschaften auf wie bei den zuvor beschriebenen Ausführungsbeispielen, wenn unterbrochene oder ausgefallene Verbindungen den Transfer von Daten durch das System nicht deaktivieren.
  • Bei einem anderen Ausführungsbeispiel umfassen Steuerungen programmierbare Weiterleitungsregister, die Weiterleitungsinformationen enthalten, um die Richtung eines Datenflusses entlang einer Steuerungsschleife zu steuern. Die Weiterleitungsregister ermöglichen einen abgestimmten Datenfluß entlang Schleifenbussegmenten, so daß kein einzelnes Schleifenbussegment überlastet ist. Wenn eine Steuerung einen Hostcomputer-I/O-Befehl empfängt, ist die Weiterleitungslogik der Steuerung konfiguriert, um auf die Weiterleitungsinformationen von dem programmierbaren Weiterleitungsregister zuzugreifen, um die Richtung zu bestimmen, in der die I/O-Befehlsdaten gesendet werden sollen.
  • Bei einem weiteren Ausführungsbeispiel ist die Weiterleitungslogik konfiguriert, um Weiterleitungsregister umzuprogrammieren, wenn in einer Steuerungsschleife ein Ausfall auftritt, so daß ein Datenfluß zwischen Steuerungen effizienter ist. Eine Hardwareschaltungsanordnung erfaßt einen Ausfall automatisch und leitet Daten um, um den Ausfall zu meiden. Ein kontinuierliches Senden von Daten in eine Richtung und ein anschließendes Umleiten derselben durch eine „Hardware"-Umleitung stellt nicht die effizienteste Verwendung der Kapazität der Verbindungsstruktur dar. Wenn eine Hardware einen Ausfall erfaßt und Daten umleitet, benachrichtigt sie deshalb auch die Weiterleitungslogik von dem Ausfall, damit Weiterleitungsregister umprogrammiert werden, um modifizierte Datenrouten zu liefern, die den Ausfall meiden, ohne die am wenigsten effiziente Hardware-Umleitung zu durchlaufen. Somit werden Daten anfänglich in einer Richtung weitergeleitet, die den Ausfall meidet. Die Hardwareerfassungsschaltungsanordnung kann ferner konfiguriert sein, um Weiterleitungsregister umzuprogrammieren.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen, in denen dieselben Bezugszeichen für gleiche Komponenten und Merkmale verwendet werden, näher erläutert. Es zeigen:
  • 1 eine Systemumgebung, die zum Implementieren einer Array-Speichervorrichtung, die eine immer eingeschaltete Steuerungsverbindungsstruktur aufweist, geeignet ist;
  • 2 ein Blockdiagramm, das ein bestimmtes Ausführungsbeispiel der Systemumgebung der 1 ausführlicher veranschaulicht, wobei die Umgebung eine Hostcomputervorrichtung und eine Array-Speichervorrichtung umfaßt, die als RAID-Plattenarray, das eine immer eingeschaltete Steuerungsverbindungsstruktur aufweist, implementiert ist;
  • 3 ein Blockdiagramm, das ein Steuerungspaar, wie beispielsweise das in dem Blockdiagramm der 2 veranschaulichte Steuerungspaar, ausführlicher veranschaulicht;
  • 4 eine logische Darstellung einer Steuerungsverbindungsstruktur, wie sie beispielsweise bei dem RAID-Plattenarray der 2 implementiert sein könnte;
  • 5 die Steuerungsverbindungsstruktur der 4 in einem bestimmten Ausfallsszenario;
  • 6 eine Steuerungsverbindungsstruktur wie beispielsweise die der 4 bei einer redundanten Rückwandplatinenkonfiguration;
  • 7 die Steuerungsverbindungsstruktur der 6 in einem bestimmten Reparaturszenario;
  • 8 eine logische Darstellung eines weiteren Ausführungsbeispiels einer Steuerungsverbindungsstruktur, die eine zusätzliche Steuerungsverbindungsebene aufweist, wie sie beispielsweise bei dem RAID-Plattenarray der 2 implementiert sein könnte; und
  • 9 ein Flußdiagramm, das ein Beispiel eines allgemeinen Verfahrens zum Durchführen von Steuerungskommunikationen über eine immer eingeschaltete Steuerungsverbindungsstruktur veranschaulicht.
  • Eine Steuerungsverbindungsstruktur in einem RAID-Plattenarray ermöglicht kontinuierliche Kommunikationen mit einer geringen Latenz/einer hohen Bandbreite zwischen einer Mehrzahl von Steuerungspaaren in dem Array. Spiegelbusse tragen einen Hochgeschwindigkeitsspiegelverkehr zwischen gespiegelten Steuerungen, die Gespiegelter-Speicher-Operationen ausführen. Schleifenbusse tragen Kommunikationen zwischen Prozessoren und anderen Verkehr zwischen Steuerungspaaren, die in einer Steuerungsschleife miteinander gekoppelt sind. Vorteile der Verbindungsstruktur umfassen eine Fähigkeit, fortgesetzte Steuerungskommunikationen und Online-Plattenarray-Operationen unter verschiedenen Ausfall- und Reparaturbedingungen, die ein Plattenarray ansonsten funktionsuntüchtig machen würden, zu unterstützen. Zusätzlich liefert die Steuerungsverbindungsstruktur eine problemlose Ausweitung der Anzahl von Steuerungen in Plattenarrays während Arrays weiterhin größenmäßig zunehmen, um steigende Speicheranforderungen von Benutzerhostsystemen zu erfüllen.
  • Beispielhafte Systemumgebung zum Implementieren einer immer eingeschalteten Steuerungsverbindungsstruktur
  • 1 veranschaulicht eine Systemumgebung 100, die zum Implementieren einer immer eingeschalteten Steuerungsver bindungsstruktur geeignet ist. Das System 100 umfaßt eine Array-Speichervorrichtung (z.B. ein RAID-Speicherarray) 102, das durch das Netzwerk 106 wirksam mit (einer) Hostvorrichtung(en) 104 gekoppelt ist. In der Regel stellt die Speichervorrichtung 102 mehrere redundante Netzwerkverbindungen 106 bereit. Eine Netzwerkverbindung 106 kann beispielsweise ein LAN (lokales Netzwerk), ein WAN (Weitverkehrsnetz), ein Intranet, das Internet, eine faseroptische Kabelverbindung, eine drahtlose Verbindung, eine direkte Verbindung oder eine beliebige andere Kommunikationsverbindung umfassen. Die Hostvorrichtung(en) 104 kann bzw. können als Vielzahl von Mehrzweck-Rechenvorrichtungen implementiert sein, einschließlich beispielsweise eines Personal-Computers (PC), eines Laptop-Computers, eines Servers, eines Webservers und anderer Vorrichtungen, die konfiguriert sind, um mit der Array-Speichervorrichtung 102 zu kommunizieren. Obwohl Ausführungsbeispiele der Array-Speichervorrichtung 102 hierin als RAID-Speicherarrays offenbart sind, ist die Array-Speichervorrichtung 102 diesbezüglich nicht eingeschränkt. Dementsprechend ist diese Offenbarung auf andere Konfigurationen von Array-Speicherkomponenten anwendbar, wie sie derzeit existieren oder in der Zukunft existieren könnten, die unterschiedliche Arrayarchitekturen umfassen, die eine fehlertolerante Hochleistungs-Massenspeicherung bieten sollen, die derjenigen, die durch derzeit erhältliche RAID-Systeme geliefert wird, ähnlich ist. Deshalb bezieht sich die Array-Speichervorrichtung 102 allgemeiner auf eine Mehrzahl von Speicherkomponenten/-vorrichtungen, die in einem Array für den allgemeinen Zweck des Erhöhens der Speicherleistung wirksam gekoppelt sind. Speicherleistungsziele umfassen in der Regel eine Speicherkapazität, geringe Kosten pro gespeichertem Megabyte, eine hohe Eingangs-/Ausgangsleistung und eine hohe Datenverfügbarkeit durch Redundanz und Fehlertoleranz. Speicherkomponenten/-vorrichtungen, die in Array-Speichervorrichtungen 102 wirksam gekoppelt sind, können Vorrichtungen wie beispielsweise magnetische Plattenlaufwerke, Bandlaufwerke, optische Lese- /Schreibplattenlaufwerke, Festkörperplatten und dergleichen umfassen. Derartige Speicherkomponenten sind auf dem Gebiet der Datenspeichertechnologie allgemein hinreichend bekannt.
  • Beispielhaftes Ausführungsbeispiel eines Systems zum Implementieren einer immer eingeschalteten Steuerungsverbindungsstruktur
  • 2 und 3 sind Blockdiagramme, die ein bestimmtes Ausführungsbeispiel einer Hostcomputervorrichtung 104 und einer Array-Speichervorrichtung 102, wie sie in der Systemumgebung 100 der 1 implementiert sein könnten, veranschaulichen. Die Array-Speichervorrichtung 102 der 1 ist in 2 als ein RAID-Speicherarray 102 verkörpert, das eine Mehrzahl von geclusterten Steuerungspaaren 208 (Steuerung = CTLR) aufweist. Die Hostvorrichtung 104 ist allgemein als ein Computer verkörpert, beispielsweise als ein Personal-Computer (PC), ein Laptop-Computer, ein Server, ein Webserver und andere Computervorrichtungen, die konfiguriert sind, um mit dem RAID-Speicherarray 102 zu kommunizieren.
  • Die Hostvorrichtung 104 umfaßt in der Regel einen Prozessor 200, einen flüchtigen Speicher 202 (d.h. RAM) und einen nichtflüchtigen Speicher 204 (z.B. ROM, Festplatte, Floppy-Disk, CD-ROM usw.). Der nichtflüchtige Speicher 204 liefert allgemein eine Speicherung von computerlesbaren Anweisungen, Datenstrukturen, Programmodulen und anderen Daten für die Hostvorrichtung 104. Die Hostvorrichtung 104 kann verschiedene Anwendungsprogramme 206, die in dem Speicher 204 gespeichert und an einem Prozessor 200 ausgeführt werden, implementieren, die Daten erzeugen oder ansonsten auf Daten zugreifen, die zum Zweck einer Speicherung und einer anschließenden Wiedergewinnung über die Netzverbindung 106 an das RAID-Speicherarray 102 transferiert werden sollen. Derartige Anwendungen 206 können Softwareprogramme umfassen, die beispielsweise Textverarbeitungsprogramme, Datenbanken, Tabellenkalkulationen, Browser, Multimedia-Player, Illustratoren, CAD-Tools und dergleichen umfassen. Somit liefert die Hostvorrichtung 104 einen regelmäßigen Fluß von Daten-I/O-Anforderungen, die durch das RAID-Speicherarray 102 bedient werden sollen.
  • Das RAID-Speicherarray 102 ist allgemein konzipiert, um eine fortdauernde Datenspeicherung und Datengewinnung für Computervorrichtungen, wie beispielsweise die Hostvorrichtung(en) 104, zu liefern, und dies unter verschiedenen Fehlerbedingungen, die auftreten können, zu tun. Somit umfaßt das RAID-Array 102 in der Regel redundante Teilsysteme, wie beispielsweise Steuerungspaare 208 und Leistungs- und Kühlungsteilsysteme 210, die einen fortgesetzten Zugriff auf das RAID-Array 102 auch während eines Ausfalls eines der Teilsysteme ermöglichen. Ferner liefert das RAID-Array 102 in der Regel Im-Betrieb-Umschichtungsfähigkeiten (Hot-Swap-Fähigkeiten) für Arraykomponenten (d.h. die Fähigkeit, Komponenten zu entfernen und zu ersetzen, während das Array 102 online bleibt), beispielsweise die Steuerungen in den Steuerungspaaren 208, die Leistungs-/Kühlungsteilsysteme 210 und die Plattenlaufwerke 214 in dem Array von Platten 212.
  • Jedes Steuerungspaar an dem RAID-Array 102 umfaßt eine erste Steuerung (z.B. CTLR A1) und eine zweite Steuerung (z.B. CTLR A2). Die beiden Steuerungen in jedem Steuerungspaar 208 spiegeln einander und sind allgemein konfiguriert, um Daten auf Plattenlaufwerken 214 auf redundante Weise zu speichern und auf dieselben zuzugreifen. Somit führen die Steuerungen A1 und A2 Aufgaben wie beispielsweise ein Abbilden von Hostdaten auf Plattenlaufwerke, ein Durchführen von RAID-Berechnungen, ein Spiegeln von Daten zwischen redundanten Steuerungstafeln, ein Anbringen von Validierungskennungen an Daten, bevor die Daten auf Plattenlaufwerken 214 gesichert werden, und ein Prüfen der Kennungen, um sicherzustellen, daß Daten von einem Plattenlaufwerk 214 korrekt sind, bevor die Daten an eine Hostvorrichtung 104 zurückgesandt werden, durch. Steuerungen in jedem Steuerungspaar 208 tolerieren ferner Fehler wie beispielsweise Ausfälle des Plattenlaufwerks 214, indem sie Daten, die während derartiger Ausfälle verlorengehen können, neu erstellen.
  • 3 ist ein Blockdiagramm, das ein Beispiel einer Steuerung A1 von einem Steuerungspaar 208(1) ausführlicher veranschaulicht. Die Steuerung (CTRL) A2 von dem Steuerungspaar 208(1) ist in 3 dargestellt, ist jedoch nicht spezifisch im Detail ausgeführt, da sie genauso wie die Steuerung A1 konfiguriert ist. Unter Bezugnahme auf die Steuerung A1 als ein repräsentatives Beispiel einer Steuerung umfaßt jede Steuerung in einem Steuerungspaar 208 an einem RAID-Array 102 in der Regel (einen) I/O-Prozessor(en), wie beispielsweise (einen) FC-I/O-Prozessor(en) (FC = fiber channel = Faserkanal) 216, (einen) Hauptprozessor(en) 218, einen nichtflüchtigen RAM (NV-RAM, NV = nonvolatile = nichtflüchtig) 220, einen Speicher 222 (z.B. ROM, RAM) und eine oder mehrere ASICs (application specific integrated circuits = anwendungsspezifische Schaltungen), beispielsweise eine Speichersteuerungs-ASIC 224. Der NV-RAM 220 wird in der Regel durch eine batteriegestützte Stromversorgung (nicht gezeigt) gestützt, die in dem Fall, daß eine Leistung an die Steuerung(en) 208 verlorengeht, Daten in dem NV-RAM 220 aufbewahrt. Der Speicher 222 liefert allgemein eine Speicherung von computerlesbaren Anweisungen, Datenstrukturen, Programmodulen und anderen Daten für das RAID-Speicherarray 102. Dementsprechend umfaßt der nichtflüchtige Speicher 222 eine Firmware 226, die allgemein konfiguriert ist, um an (einem) Prozessor(en) 218 ausgeführt zu werden und normale Operationen des Plattenarrays 102 zu unterstützen. Ferner ist die Firmware 226 in der Regel konfiguriert, um verschiedene Fehlerszenarios, die in dem RAID-Array 102 auftreten können, zu handhaben.
  • Wie nachfolgend ausführlicher erörtert wird, sind die Weiterleitungslogik 228 und das bzw. die Weiterleitungsre gister 230 konfiguriert, um Daten zwischen verschiedenen Steuerungspaaren 208 über eine Steuerungsverbindungsstruktur weiterzuleiten. Ferner wird nachstehend eine Hardwareerfassungs- und Umleitungsschaltung 232 ausführlicher erörtert, die allgemein konfiguriert ist, um Steuerungsverbindungsausfälle zu erfassen und Daten umzuleiten, um derartige Ausfälle zu umgehen.
  • FC-I/O-Prozessor(en) 216 an Steuerungen (z.B. der Steuerung A1 der 3) empfängt bzw. empfangen Daten und Befehle von der Hostvorrichtung 104 über die Netzverbindung 106. FC-I/O-Prozessor(en) 216 kommuniziert mit (einem) Hauptprozessor(en) 218 durch Standardprotokolle und Unterbrechungsprozeduren, um Daten und Befehle an redundante Steuerungen (z.B. Steuerung A2 der 3) zu transferieren und allgemein Daten zwischen dem NV-RAM 220 und verschiedenen Plattenlaufwerken 214 zu bewegen, um zu gewährleisten, daß Daten auf redundante Weise gespeichert werden.
  • Die Speichersteuer-ASIC 224 steuert allgemein eine Datenspeicherung und -wiedergewinnung, eine Datenmanipulation, eine Redundanzverwaltung und dergleichen durch Kommunikationen zwischen gespiegelten Steuerungen wie beispielsweise den Steuerungen A1 und A2 der 3. Die Speichersteuerungs-ASIC 224 handhabt ein Spiegeln von Daten zwischen Steuerungen, ein Kennzeichnen von Datensektoren, die auf Platten 214 in dem Array von Platten 212 in Streifen geschrieben werden, sowie eine Datenrekonstruktion im Fall eines Plattenlaufwerksausfalls. Ein Datenstreifenschreiben und ein Paritätsprüfen sind Fachleuten hinreichend bekannt. Die Speichersteuer-ASIC 224 umfaßt ferner in der Regel interne Puffer (nicht gezeigt), die ein Testen des Speichers 222 erleichtern, um sicherzustellen, daß alle Regionen eines gespiegelten Speichers (z.B. zwischen gespiegelten Steuerungen A1 und A2) regelmäßig verglichen werden, um identisch zu sein, und auf ECC-Fehler (ECC = Fehlerprüfung und -korrektur = error checking and correction) geprüft werden. Die Speichersteuer-ASIC 224 benachrichtigt den Prozessor 218 von diesen und anderen Fehlern, die sie erfaßt. Die Firmware 226 ist konfiguriert, um Fehler, die durch die Speichersteuer-ASIC 224 erfaßt werden, auf tolerante Weise zu verwalten, was beispielsweise ein Verhindern der Korruption von Daten des Arrays 102 oder ein Herumarbeiten um einen erfaßten Fehler/Defekt durch ein redundantes Teilsystem, um zu verhindern, daß das RAID-Array 102 abstürzt, umfaßt.
  • Exemplarische Ausführungsbeispiele einer immer eingeschalteten Steuerungsverbindungsstruktur
  • 4 veranschaulicht ein Beispiel einer immer eingeschalteten Steuerungsverbindungsstruktur, die zur Implementierung in dem RAID-Speicherarray 102 der 1 und 2 geeignet ist. 4 umfaßt eine Mehrzahl von Steuerungspaaren 208, die durch ein Netz von Spiegelbussen 400 (durch durchgezogene Pfeile dargestellt) und Schleifenbussen 402 (durch gestrichelte Pfeile dargestellt) miteinander verbunden sind. Jedes Steuerungspaar 208(1), 208(2), 208(3) und 208(4) umfaßt eine erste und eine zweite Steuerung, die durch eine erste Verbindung bzw. einen Spiegelbus 400 wirksam gekoppelt sind. Beispielsweise ist die Steuerung A1 durch einen Spiegelbus 400 mit der Steuerung A2 gekoppelt, die Steuerung B1 ist durch einen weiteren Spiegelbus 400 mit der Steuerung B2 gekoppelt, und so weiter. Die Spiegelbusse 400 tragen einen Spiegelverkehr zwischen den beiden Steuerungen in jedem der Gespiegelte-Steuerung-Paare 208(1), 208(2), 208(3) und 208(4). Die Spiegelbusse 400 zwischen jedem Steuerungspaar 208 sind deshalb in der Lage, Transfers mit einer niedrigen Latenz/einer hohen Bandbreite zu liefern, während Hostdaten- und RAID-Abbildungen gespeichert werden und während in einem gespiegelten Speicher (z.B. NV-RAM 220) auf sie zugegriffen wird.
  • Jede Steuerung in der Steuerungsverbindungsstruktur der 4 ist zusätzlich durch eine zweite Verbindung, die als Schleifenbusse 402 bezeichnet wird, mit zwei anderen logisch benachbarten Steuerungen gekoppelt. Die beiden logisch benachbarten Steuerungen, die durch die Schleifenbusse 402 mit einer bestimmten Steuerung gekoppelt sind, umfassen nicht die gespiegelte Steuerung dieser bestimmten Steuerung, die bereits durch einen Spiegelbus 400 gekoppelt ist. Somit ist die Steuerung B1 beispielsweise durch Schleifenbusse 402 mit logisch benachbarten Steuerungen A1 und C1 gekoppelt.
  • Die Steuerungsverbindungsstruktur umfaßt zwei Punkte, an denen die Schleifenbusse 402 zwischen ersten Steuerungen von den Steuerungspaaren 208 zu zweiten Steuerungen von den Steuerungspaaren 208 überkreuzen. Die Überkreuzung bildet eine Verbindung zwischen einer Reihe von ersten Steuerungen (d.h. A1, B1, C1 und D1) und einer Reihe von zweiten Steuerungen (d.h. A2, B2, C2 und D2), die wiederum eine Endlosschleife von Steuerungen bildet. Unter Bezugnahme auf die Steuerungsverbindungsstruktur der 4 überkreuzt ein Schleifenbus 402, um die erste Steuerung A1 mit der logisch benachbarten zweiten Steuerung D2 zu koppeln. Desgleichen überkreuzt ein Schleifenbus 402, um die erste Steuerung D1 mit der logisch benachbarten zweiten Steuerung A2 zu koppeln. Somit bildet jede Steuerung dadurch, daß sie mit zwei logisch benachbarten, jedoch nicht gespiegelten Steuerungen gekoppelt ist, einen Bestandteil einer durchgehenden Steuerungsschleife.
  • Während Spiegelbusse 400 in der Regel einen Spiegelverkehr zwischen zwei Steuerungen in einem Gespiegelte-Steuerung-Paar (z.B. 208(1)) tragen, tragen die Schleifenbusse 402 einen Verkehr zwischen den verschiedenen Steuerungspaaren. Ein Paar-zu-Paar-Verkehr bzw. „Schleifenverkehr" umfaßt Daten, die an einer Steuerung (z.B. Steuerung A1 des Steuerungspaars 208(1)) empfangen werden und die für ein anderes Paar von gespiegelten Steuerungen (z.B. Steuerungspaar 208(3)) bestimmt sind, zusätzlich zu dem gesamten IPC-Verkehr (IPC = inter-processor communication = Kommunikati on zwischen Prozessoren). Ein Paar-zu-Paar-Verkehr fließt in beiden Richtungen um die Steuerungsschleife.
  • Wie oben kurz erwähnt wurde, sind die Weiterleitungslogik 228 und das bzw. die Weiterleitungsregister 230 (siehe 3) konfiguriert, um Daten zwischen verschiedenen Steuerungspaaren 208 über die Steuerungsverbindungsstruktur weiterzuleiten. Allgemein leitet die Weiterleitungslogik 228 Daten entlang der durchgehenden Steuerungsschleife (siehe 4) weiter, so daß Daten über die schnellste Route an ihrem Bestimmungsort ankommen und so daß jedes Segment der Steuerungsschleife effizient genutzt wird. Die Weiterleitungslogik 228 ermittelt die beste Richtung, in der Daten entlang der Steuerungsschleife gesendet werden sollen, auf der Basis von Informationen/Anweisungen von dem bzw. den Weiterleitungsregister(n) 230 und der Abbildung des Arrays von Hostadressen zu Arrayadressen. Eine Steuerung, die die Daten empfängt, weist einen Anfangsblock oder eine Datenpaketüberschrift zu, der bzw. die identifiziert, welches Steuerungspaar 208 der richtige Zielort für die Daten ist. Die Weiterleitungslogik 228 verwendet die dem Datenanfangsblock zugeordnete Anweisungen des Weiterleitungsregisters 230, die Daten in einer Richtung entlang der Steuerungsschleife zu senden, die die Daten in der Regel, aber nicht zwingenderweise, zu der nächsten gespiegelten Steuerung des Zielsteuerungspaares bringt. Beispielsweise werden Daten, die durch die Steuerung A1 208(1) von einem Host 104 empfangen werden und für ein Steuerungspaar B 208(2) bestimmt sind, über das einzige Segment des Schleifenbusses 402 zwischen den Steuerungen A1 und B1 nach rechts weitergeleitet. Somit werden die Daten zu der nächstgelegenen gespiegelten Steuerung B1 des Zielsteuerungspaars B 208(2) weitergeleitet.
  • Weiterleitungsregister 230 ist ein bzw. sind programmierbare Register, die in der Weiterleitungslogik 228 angeordnet sind und die die Weiterleitungslogik 228 mit Informationen darüber versorgen, in welche Richtung Daten, die für ein bestimmtes Steuerungspaar 208 bestimmt sind, zu senden sind. Routingregister 230 wird bzw. werden anfänglich beispielsweise durch den Prozessor 218 programmiert, um Informationen zu enthalten, die die Weiterleitungslogik 228 verwendet, um zu bestimmen, in welcher Richtung Daten über die Steuerungsschleife weiterzuleiten sind (4).
  • Unter bestimmten Umständen kann die nächstgelegene gespiegelte Steuerung eines Zielsteuerungspaars 208 gleich weit von der Steuerung, die die Daten sendet, entfernt sein. Unter Bezugnahme auf 4 befinden sich beispielsweise Daten, die durch die Steuerung A1 208(1) von einer Hostvorrichtung 104 empfangen werden und für ein Steuerungspaar C 208(3) bestimmt sind, gleich weit von der nächstgelegenen gespiegelten Steuerung des Zielsteuerungspaars C 208(3) entfernt. Das heißt, daß es für die Weiterleitungslogik 228 an der Steuerung A1 nicht kürzer ist, die Daten mittels der Steuerung B1 208(2) an die Steuerung C1 208(3) zu senden, als die Daten mittels der Steuerung D2 208(4) an die Steuerung C2 208(3) zu senden. Angenommen, daß Arbeitslasten von der bzw. den Hostvorrichtung(en) 104 gleichmäßig über die verschiedenen Steuerungen der 4 verteilt sind, ermöglichen die programmierbaren Weiterleitungsregister 230 einen gleichmäßig abgestimmten Fluß von Daten über alle Segmente des Schleifenbusses 402 der Steuerungsschleife. In dem Fall, in dem die nächstgelegene gespiegelte Steuerung eines Zielsteuerungspaars 208 gleich weit von der Steuerung, die die Daten sendet, entfernt ist, können die Weiterleitungsregister 230 somit der Weiterleitungslogik 228 an jeder Steuerung sagen, derartige gleich weit entfernten Daten in derselben Richtung um die Steuerungsschleife zu senden, beispielsweise nach rechts bzw. im Uhrzeigersinn. Wenn Daten an der Steuerung A1 208(1) für das Steuerungspaar C 208(3) bestimmt sind, werden sie also mittels der Steuerung B1 208(2) an die Steuerung C1 208(3) gesendet. Desgleichen gilt, daß, wenn Daten an der Steuerung B1 208(2) für das Steuerungspaar D 208(4) bestimmt sind, sie mittels der Steuerung C1 208(3) an die Steuerung D1 208(4) gesandt werden, statt mittels der Steuerung A1 208(1) an die Steuerung D2 208(4) gesandt zu werden. Folglich wird das Segment des Schleifenbusses 402 zwischen der Steuerung A1 208(1) und der Steuerung B1 208(2) nicht durch übermäßigen Verkehr überlastet. Wenn ferner Arbeitslasten von der bzw. den Hostvorrichtung(en) 104 insgesamt gleichmäßig über die verschiedenen Steuerungen verteilt sind, ist der Datenfluß über jedes Segment der Steuerungsschleife gleichmäßig abgestimmt.
  • Wie oben unter Bezugnahme auf 2 und 3 kurz erwähnt wurde, ist eine Ausfallerfassungs- und Umleitungsschaltung 232 konfiguriert, um Ausfälle in der Steuerungsverbindungsstruktur zu erfassen und Daten umzuleiten, um die Ausfälle zu umgehen. 5 veranschaulicht die oben erörterte Steuerungsverbindungsstruktur der 4 und umfaßt ein Beispiel eines Ausfalls 500 in der Steuerungsschleife an einem bestimmten Punkt in dem Schleifenbus 402. Aus 5 geht hervor, daß ein Bruch in der Steuerungsschleifenverbindungsstruktur bewirkt, daß die durchgehende Steuerungsschleife aufgrund eines Fehlers in eine Steuerungskette übergeht. Somit markiert jeglicher Ausfall 500 in der Steuerungsschleife die Endpunkte der Steuerungskette. Die Endpunkte der Steuerungskette der 5 befinden sich an der Steuerung C1 208(3) und der Steuerung B1 208(2). Die Erfassungs-/Umleitungshardwareschaltungen 232 an den Steuerungen C1 208(3) und B1 208(2) erfassen automatisch den Schleifenausfall 500 und senden („bounce") Daten, die auf den Ausfall 500 treffen, in der umgekehrten Richtung zurück. Falls Daten beispielsweise von der Steuerung A1 208(1) durch die Steuerung B1 208(2) zu der Steuerung C1 208(3) wandern, sendet die Erfassungs-/Umleitungshardwareschaltung 232 an der Steuerung B1 208(2) die Daten über die Steuerungskette zurück, so daß sie mittels der Steuerung D1 208(4) an der Steuerung C1 208(3) ankommen.
  • Zusätzlich zu einem Erfassen und Umleiten oder Zurücksenden („bouncing") von Daten um einen Ausfall 500 herum können die Hardwareschaltungen 232 dem bzw. den Prozessor(en) 218 eine Benachrichtigung von dem Ausfall liefern, so daß der bzw. die Prozessor(en) 218 die Weiterleitungsregister 230 an den Steuerungen umprogrammieren kann bzw. können. Dies befähigt die Weiterleitungslogik 228, den Ausfall 500 zu meiden, wenn sie die Daten anfänglich über die Steuerungsverbindungsstruktur weiterleitet. Ein derartiges Umprogrammieren der Weiterleitungsregister 230 nutzt die Steuerungsverbindung bei einer Ausfallbedingung auf effizientere Weise. Alternativ dazu können die Hardwareschaltungen 232 selbst die Weiterleitungsinformationen in den Weiterleitungsregistern 230 unter derartigen Ausfallbedingungen modifizieren.
  • Unter bestimmten Umständen können auch Spiegelbusse 400, die in der Regel einen Spiegelverkehr zwischen zwei Steuerungen in einem Gespiegelte-Steuerung-Paar (z.B. 208(1)) tragen, verwendet werden, um einen „Schleifenverkehr" zu tragen. Beispielsweise können bei einer Konfiguration einer „teilweise bestückten" Rückwandplatine, bei der kein Steuerungspaar vorhanden ist, „Schleifenverkehr"-Daten über einen Spiegelbus 400 zwischen einem Gespiegelte-Steuerung-Paar weitergeleitet werden, um die nicht vorhandenen Steuerungen zu meiden, während trotzdem eine vollständige Steuerungsschleifenverbindung aufrechterhalten wird. Deshalb kann die Steuerungsschleife unter Verwendung von sowohl Schleifenbussen 402 als auch Spiegelbussen 400 gebildet werden. Unter diesen Umständen liefern Hardwareschaltungen 232 gewisse Informationen über ein physisches Vorhandensein auf niedriger Ebene an die Weiterleitungslogik 228, die den Weg, über den Verkehr durch die Steuerungsschleife weitergeleitet wird, ändern.
  • 6 veranschaulicht ein weiteres Ausführungsbeispiel der immer eingeschalteten Steuerungsverbindungsstruktur, die zur Implementierung in dem RAID-Speicherarray 102 der 1 und 2 geeignet ist. Die Verbindungsstruktur der 6 ist wie die oben beschriebene Verbindungsstruktur der 4 konfiguriert. Somit tragen Spiegelbusse 400 einen Spiegelverkehr zwischen den beiden Steuerungen in jedem der Gespiegelte-Steuerung-Paare 208(1), 208(2), 208(3) und 208(4), und jede Steuerung bildet aufgrund der Tatsache, daß sie durch die Verbindung 402 mit zwei logisch benachbarten, jedoch nicht gespiegelten Steuerungen gekoppelt ist, einen Bestandteil einer durchgehenden Steuerungsschleife. Ferner umfaßt das Ausführungsbeispiel der 6 jedoch eine Doppelrückwandplatine-Konfiguration, die die während des Betriebs erfolgende Reparatur einer ausgefallenen Rückwandplatine ermöglicht, während die verbleibende Rückwandplatine weiterhin eine voll funktionierende Verbindungsstruktur zwischen allen Steuerungen in dem RAID-Speicherarray 102 liefert.
  • Bei dem Ausführungsbeispiel der 6 ist jede Steuerung von den Steuerungspaaren 208(1), 208(2), 208(3) und 208(4) mit zwei separaten Verbindungen gekoppelt oder in dieselben eingesteckt. Die Verbindungen sind als Rückwandplatinen 600 und 602 verkörpert. Die Rückwandplatine Nr. 1 600 und die Rückwandplatine Nr. 2 602 tragen beide eine Hälfte jedes Busses, der in der Steuerungsverbindungsstruktur der 4 gezeigt ist. Ferner ist jede Hälfte jedes Busses (d.h. der Spiegelbusse 400 und der Schleifenbusse 402) bidirektional. Somit ist der Schleifenbus 402, der einen Paar-zu-Paar-Verkehr von der Steuerung A1 208(1) an die Steuerung D1 208(4) trägt, derart geteilt, daß eine Hälfte des Verkehrs über die Rückwandplatine Nr. 1 600 wandert und eine Hälfte des Verkehrs über die Rückwandplatine Nr. 2 602 wandert. Ferner sind alle Schleifenbusse 402, die die in 4 beschriebene Steuerungsschleife bilden, desgleichen zwischen der Rückwandplatine Nr. 1 600 und der Rückwandplatine Nr. 2 602 aufgeteilt. Überdies ist jeder Spiegelbus 400, der einen Spiegelverkehr zwischen zwei gespiegelten Steuerungen in jedem der Steuerungspaare 208(1), 208(2), 208(3) und 208(4) trägt, desgleichen derart geteilt, daß eine Hälfte des Verkehrs über die Rückwandplatine Nr. 1 600 und eine Hälfte des Verkehrs über die Rückwandplatine Nr. 2 602 wandert.
  • Fachleute werden erkennen, daß die in dem Ausführungsbeispiel der 6 beschriebenen Rückwandplatinen nicht das einzige physische Verbindungsmedium sind, über das Busse geteilt sein können. Somit ist das Ausführungsbeispiel der 6 beispielhaft und nicht einschränkend veranschaulicht. Beispielsweise können Kabel als das physische Verbindungsmedium, über das die Busse in Hälften geteilt sind, verwendet werden. Somit würde das Entfernen oder der Ausfall eines Kabels, das eine Hälfte eines Busses trägt, nicht verhindern, daß Daten über ein Kabel fließen, das die andere funktionstüchtige Hälfte des Busses trägt.
  • 7 veranschaulicht die immer eingeschaltete Steuerungsverbindungsstruktur der 6 während eines Betriebs, wobei eine der beiden Rückwandplatinen 600, 602 entfernt wurde. Die Verbindungsstruktur der Doppelrückwandplatine-Konfiguration der 6 ermöglicht, daß das RAID-Speicherarray 102 weiter in Betrieb und funktionstüchtig bleibt, während eine der beiden Rückwandplatinen fehlerhaft wird oder zu Reparaturzwecken entfernt wird. Wie oben unter Bezugnahme auf 5 erörtert wurde, erfaßt die Ausfallerfassungs- und Umleitungsschaltungsanordnung 232 an jeder Steuerung automatisch ausgefallene Verbindungen in der Steuerungsverbindungsstruktur. Wenn die Hardwareschaltung 232 erfaßt, daß ein Abschnitt einer Verbindung oder eines Busses (400, 402) nicht länger funktionstüchtig ist, leitet sie einen Ersatzbetrieb des funktionierenden Abschnitts ein. Wie in 7 veranschaulicht ist, bewirkt ein Entfernen der Rückwandplatine Nr. 2 602, daß die Ausfallerfassungs- und Umleitungsschaltungsanordnung 232 an jeder Steuerungstafel 208 einen Ersatzbetrieb der funktionstüchtigen Hälfte jedes Busses einleitet, die immer noch über die Rückwandplatine Nr. 1 600 getragen wird. Die verbleibende Rückwandplatine (d.h. Rückwandplatine Nr. 1 600) stellt weiterhin alle Kommunikationen und den gesamten Datenfluß von einer Steuerung an eine andere bereit, die bzw. der unter normalen Betriebsbedingungen stattfindet. Somit kann das Plattenarray 102 in Betrieb und funktionstüchtig bleiben.
  • Obwohl die oben unter Bezugnahme auf 4, 5, 6 und 7 beschriebenen immer eingeschalteten Steuerungsverbindungsstrukturen 4 Steuerungspaare umfassen, sind die Verbindungsstrukturen in dieser Hinsicht nicht beschränkt. Im einzelnen ist jede Steuerungsverbindungsstruktur flexibel, um zusätzliche oder weniger Steuerungspaare 208 unterzubringen. Beispielsweise kann die Steuerungsverbindungsstruktur lediglich 2 Steuerungspaare oder auch ganze 16, 32 oder mehr Steuerungspaare 208 aufweisen, die in derselben allgemeinen Verbindungskonfiguration, wie sie in den 4, 5, 6 und 7 gezeigt ist, wirksam gekoppelt sind. Ein Erhöhen der Anzahl von Steuerungspaaren 208 über die in den 4, 5, 6 und 7 gezeigte hinaus würde bei diesen Konfigurationen ein Erweitern der Steuerungsschleifen beinhalten.
  • 8 veranschaulicht ein weiteres Ausführungsbeispiel einer immer eingeschalteten Steuerungsverbindungsstruktur, die für eine Implementierung in dem RAID-Speicherarray 102 der 1 und 2 geeignet ist. Obwohl, wie gerade oben erwähnt wurde, die Anzahl von Steuerungen bei den zuvor beschriebenen Steuerungsverbindungsstrukturen durch ein Erweitern der Steuerungsschleifen erhöht werden kann, ermöglicht die Verbindungsstruktur bei dem Ausführungsbeispiel der 8 eine Erhöhung der Anzahl von Steuerungspaaren 208 durch die Einführung zusätzlicher Steuerungsschleifen. Dies wird allgemein dadurch bewerkstelligt, daß ein oder zwei Ebenen von Steuerungen zu denen, die bereits in den Ausführungsbeispielen, die oben unter Bezugnahme auf 4, 5, 6 und 7 beschrieben wurden, vorhanden sind, hinzugefügt werden. Ein Erhöhen der Anzahl von Steuerungen durch ein Hinzufügen von „Ebenen" ermöglicht, daß die durchschnittliche Weglänge zwischen zwei beliebigen Steuerungen kürzer ist als wenn Steuerungen durch ein Erweitern einer einzelnen Steuerungsschleife hinzugefügt würden. Ein Hinzufügen von Steuerungs-„Ebenen" fügt ferner mehrere Umleitungswege hinzu, die verwendet werden können, um mehrere Verbindungsausfälle zu ermöglichen, während eine vollständige Verbindbarkeit aufrechterhalten wird.
  • Jede Steuerungsebene in der Mehrebenen-Steuerungsverbindungsstruktur der 8 ist auf eine ähnliche Weise wie die oben beschriebene Steuerungsverbindungsstruktur der 4 konfiguriert. Somit umfaßt eine erste Steuerungsebene 800 der 8 wie auch die Steuerungsverbindungsstruktur der 4 Steuerungspaare 208(1), 208(2), 208(3) und 208(4), die als Gespiegelte-Steuerung-Paare miteinander gekoppelt sind, und eine durchgehende Steuerungsschleife, die durch ein Koppeln aller einzelnen Steuerungen von den Steuerungspaaren gebildet ist. Ferner umfaßt die Steuerungsverbindungsstruktur der 8 jedoch eine oder mehrere zusätzliche Steuerungsebenen, wie beispielsweise Ebene 2 802. Jede zusätzliche Steuerungsebene ist wie die erste Steuerungsebene 800 konfiguriert.
  • Dementsprechend tragen für jede Steuerungsebene (z.B. Ebene 1 800, Ebene 2 802 usw.) Spiegelbusse 400 (durch durchgezogene Pfeile dargestellt) einen Spiegelverkehr zwischen den beiden Steuerungen in jedem der Gespiegelte-Steuerung-Paare (z.B. Steuerungspaare 208(1), 208(2), 208(3), 208(4) 208(5), 208(6), 208(7) und 208(8) der 8). Ferner bildet jede Steuerung auf einer gegebenen Steuerungsebene (z.B. Ebene 1 800, Ebene 2 802) aufgrund der Tatsache, daß sie über Schleifenbusse 402 (durch gestrichelte Pfeile dargestellt) mit zwei logisch benachbarten, aber nicht gespiegelten Steuerungen auf derselben Ebene gekoppelt ist, einen Bestandteil einer durchgehenden Steuerungsschleife. Somit ist die Steuerungsverbindungsstruktur für jede Steuerungsebene wie die oben unter Bezugnahme auf 4 beschriebene Steuerungsverbindungsstruktur konfiguriert.
  • Steuerungsebenen bei der Mehrebenen-Verbindungsstruktur der 8, beispielsweise Ebenen 800 und 802, sind durch Schleifenbusse 402, die Steuerungen auf einer Steuerungsebene mit entsprechenden Steuerungen auf einer anderen Ebene koppeln, miteinander gekoppelt. Beispielsweise entspricht die Steuerungstafel A1 von dem Steuerungspaar 208(1) auf der Steuerungsebene 1, 800 der Steuerungstafel A3 von dem Steuerungspaar 208(5) auf der Steuerungsebene 2, 802. Somit koppelt ein Schleifenbus 402 die Steuerungstafel A1 208(1) wirksam mit der Steuerungstafel A3 208(5). Zusätzlich dazu, daß die Mehrebenen-Steuerungsverbindungsstruktur der 8 die oben unter Bezugnahme auf die Verbindungsstruktur der 4 beschriebenen Kommunikationen von Steuerung zu Steuerung (d.h. gespiegelte Kommunikationen zwischen Steuerungen in einem gespiegelten Paar und Paar-zu-Paar-Kommunikationen zwischen verschiedenen Steuerungspaaren) ermöglicht, ermöglicht sie Paar-zu-Paar-Kommunikationen zwischen Steuerungspaaren, die sich auf unterschiedlichen Steuerungsebenen befinden. Wie die Steuerungsverbindungsstruktur der 4 stellt die Verbindungsstruktur der 8 ferner dieselben Ausfallerfassungs- und Umleitungsmerkmale durch Ausfallerfassungs- und Umleitungsschaltungen 232 bereit.
  • Exemplarisches Verfahren zum Aufrechterhalten von Steuerungskommunikationen über eine immer eingeschaltete Steuerungsverbindungsstruktur
  • Unter hauptsächlicher Bezugnahme auf 9 wird nun ein exemplarisches Verfahren zum Aufrechterhalten von Steuerungskommunikationen über eine immer eingeschaltete Steuerungsverbindungsstruktur in einem Mehrfachsteuerungs-RAID-Speicherarray 102 beschrieben. Das Verfahren gilt allgemein für die oben unter Bezugnahme auf 18 erörterten exemplarischen Ausführungsbeispiele.
  • 9 ist ein Flußdiagramm, das ein Beispiel eines allgemeinen Verfahrens einer Steuerungskommunikation zeigt, die über eine immer eingeschaltete Steuerungsverbindungsstruktur in einem Mehrfachsteuerungs-RAID-Speicherarray 102 durchgeführt wird. Die Elemente des beschriebenen Verfahrens können durch beliebige geeignete Mittel, beispielsweise durch die Ausführung von prozessorlesbaren Anweisungen, die auf einem prozessorlesbaren Medium, einschließlich einer Platte, eines ROM oder einer anderen derartigen Speichervorrichtung definiert sind, durchgeführt werden.
  • Unter Bezugnahme auf das bei 9 veranschaulichte Verfahren werden bei Block 900 Daten an einer ersten Steuerung in einem Mehrfachsteuerungs-Speicherarray, wie beispielsweise dem RAID-Speicherarray 102, empfangen. Bei Block 902 wird ein Steuerungspaar, das das Ziel für die Daten ist, auf der Basis einer Abbildung der Hostadresse der Daten auf eine Arrayadresse ermittelt. Auf der Basis der Abbildung wird den Daten eine Paketüberschrift (oder einen „Anfangsblock") zugewiesen. Bei Block 903 wird in dem bzw. den Weiterleitungsregister(n) 230 auf (eine) Anweisung(en), die dem Datenanfangsblock zugewiesen ist bzw. sind, zugegriffen. Bei Block 904 werden die Daten über eine Steuerungsschleife in einer ersten Richtung, die durch (eine) Anweisung(en) des Weiterleitungsregisters 230 für die zugeordneten Anfangsblockinformationen ermittelt wird, gesandt. In der Regel bringt diese erste Richtung die Daten zu der nächstgelegenen gespeicherten Steuerung, die zu dem Zielsteuerungspaar gehört. Bei Block 906 wird in der Steuerungsschleife ein Ausfall erfaßt. Bei Block 908 werden die Daten automatisch in eine zweite Richtung um die Steuerungsschleife, die den erfaßten Ausfall meidet, umgeleitet oder zurückgesandt („bounced"). Bei Block 909 werden Informationen bezüglich des Schleifenausfalls gemeinsam mit anderen Steuerungen verwendet, so daß sie ihre Umleitungsregister umprogrammieren können, um den Ausfall zu meiden. Bei Block 910 werden Weiterleitungsregister mit neuen Weiterleitungsinformationen, die auf dem erfaßten Ausfall beruhen, umprogrammiert. Bei Block 912 werden die neuen Weiterleitungsinformationen verwendet, um zusätzlich empfangene Daten in einer Richtung über die Steuerungsschleife zu senden, die den erfaßten Ausfall meidet.
  • Während ein oder mehrere Verfahren mittels Flußdiagrammen und mittels eines Textes, der den Blöcken der Flußdiagrammen zugeordnet ist, offenbart wurden, versteht es sich, daß die Blöcke nicht unbedingt in der Reihenfolge, in der sie dargestellt werden, durchgeführt werden müssen und daß eine alternative Reihenfolge zu ähnlichen Vorteilen führen kann.

Claims (40)

  1. Plattenarray (102), das folgende Merkmale aufweist: eine Mehrzahl von Plattenlaufwerken (214); zumindest zwei Steuerungspaare (208), wobei jedes Steuerungspaar (208) eine erste Steuerung aufweist, die durch einen Spiegelbus (400) mit einer zweiten Steuerung gekoppelt ist, wobei jede Steuerung Zugriff auf jedes Plattenlaufwerk (214) aus der Mehrzahl von Plattenlaufwerken (214) hat; und eine einzige Steuerungsschleife, die alle Steuerungen durch eine Mehrzahl von Schleifenbussen (402) koppelt.
  2. Plattenarray (102) gemäß Anspruch 1, bei dem jede Steuerung in der Steuerungsschleife durch einen ersten Schleifenbus (402) mit einer ersten logisch benachbarten Steuerung gekoppelt ist und durch einen zweiten Schleifenbus (402) mit einer zweiten logisch benachbarten Steuerung gekoppelt ist.
  3. Plattenarray (102) gemäß Anspruch 1 oder 2, bei dem die Steuerungsschleife ferner folgende Merkmale aufweist: eine Erste-Steuerung-Reihe, bei der alle ersten Steuerungen als eine Reihe von Steuerungen gekoppelt sind; und eine Zweite-Steuerung-Reihe, bei der alle zweiten Steuerungen als eine Reihe von Steuerungen gekoppelt sind; und wobei eine Anfangssteuerung in der Erste-Steuerung-Reihe mit einer Endsteuerung in der Zweite-Steuerung- Reihe gekoppelt ist und eine Endsteuerung in der Erste-Steuerung-Reihe mit einer Anfangssteuerung in der Zweite-Steuerung-Reihe gekoppelt ist.
  4. Plattenarray (102) gemäß einem der Ansprüche 1 bis 3, bei dem jeder Bus (400, 402) in eine erste Hälfte und eine zweite Hälfte unterteilt ist, wobei das Plattenarray (102) ferner folgende Merkmale aufweist: eine erste Verbindung (600), mit der jede Steuerung (208) wirksam gekoppelt ist, wobei die erste Verbindung die erste Hälfte jedes Busses (400, 402) trägt; und eine zweite Verbindung (602), mit der jede Steuerung (208) wirksam gekoppelt ist, wobei die zweite Verbindung die zweite Hälfte jedes Busses (400, 402) trägt.
  5. Plattenarray (102) gemäß Anspruch 4, bei dem die erste Verbindung (600) und die zweite Verbindung (602) aus einer Gruppe von Verbindungen ausgewählt sind, die folgende umfaßt: eine Rückwandplatine (600, 602); und ein Kabel.
  6. Plattenarray (102) gemäß einem der Ansprüche 1 bis 5, bei dem jede Steuerung (208) eine Weiterleitungslogik (228) aufweist, die konfiguriert ist, um Daten entlang der Steuerungsschleife weiterzuleiten.
  7. Plattenarray (102) gemäß Anspruch 6, bei dem die Weiterleitungslogik (228) ein programmierbares Weiterleitungsregister (230) aufweist, das konfiguriert ist, um Weiterleitungsinformationen zu enthalten, die durch die Weiterleitungslogik (228) verwendbar sind.
  8. Plattenarray (102) gemäß einem der Ansprüche 1 bis 7, bei dem jede Steuerung (208) eine Hardwareschaltung (232) aufweist, die konfiguriert ist, um einen Ausfall in der Steuerungsschleife zu erfassen und um Daten umzuleiten, um den Ausfall (500) zu meiden.
  9. Plattenarray (102) gemäß Anspruch 8, bei dem die Hardwareschaltung (232) ferner konfiguriert ist, um einen Inhalt eines Weiterleitungsregisters (230) zu modifizieren, so daß Daten anfänglich weitergeleitet werden, um den Ausfall (500) zu meiden.
  10. Plattenarray (102), das folgende Merkmale aufweist: zumindest zwei Steuerungspaare (208), wobei jedes Steuerungspaar (208) eine erste Steuerung aufweist, die durch einen Spiegelbus (400) mit einer zweiten Steuerung gekoppelt ist; und eine Steuerungsschleife, die alle Steuerungen durch eine Mehrzahl von Schleifenbussen (402) und zumindest einen Spiegelbus (400) koppelt.
  11. Steuerungsverbindungsstruktur in einem Plattenarray (102), die folgende Merkmale aufweist: eine Mehrzahl von Steuerungen (208); eine Mehrzahl von Kommunikationsbussen (400, 402), die die Mehrzahl von Steuerungen (208) wirksam miteinander koppeln, wobei jeder Kommunikationsbus (400, 402) in eine erste Hälfte und eine zweite Hälfte aufgeteilt ist; eine erste Verbindung (600), mit der jede der Mehrzahl von Steuerungen (208) gekoppelt ist, wobei die erste Verbindung (600) die erste Hälfte der Mehrzahl von Kommunikationsbussen (400, 402) trägt; und eine zweite Verbindung (602), mit der jede der Mehrzahl von Steuerungen (208) gekoppelt ist, wobei die zweite Verbindung (602) die zweite Hälfte der Mehrzahl von Kommunikationsbussen (400, 402) trägt.
  12. Steuerungsverbindungsstruktur gemäß Anspruch 11, bei der die Mehrzahl von Steuerungen (208) eine Mehrzahl von Steuerungspaaren (208) aufweist, wobei jedes Steuerungspaar (208) eine erste Steuerung und eine zweite Steuerung aufweist.
  13. Steuerungsverbindungsstruktur gemäß Anspruch 12, bei der die Mehrzahl von Kommunikationsbussen (400, 402) folgende Merkmale aufweist: zwischen jedem Steuerungspaar (208) einen Spiegelbus (400), der die erste Steuerung mit der zweiten Steuerung wirksam koppelt; und einen Schleifenbus (402), der jede Steuerung mit zwei logisch benachbarten Steuerungen wirksam koppelt, derart, daß alle Steuerungen einen Bestandteil einer durchgehenden Steuerungsschleife bilden.
  14. Steuerungsverbindungsstruktur gemäß einem der Ansprüche 11 bis 13, bei der jede Steuerung ferner eine Weiterleitungslogik (228) aufweist, die konfiguriert ist, um Daten auf der Basis eines Adreßanfangsblocks und einer Weiterleitungsanweisung entlang der Steuerungsschleife an ein Zielsteuerungspaar weiterzuleiten.
  15. Steuerungsverbindungsstruktur gemäß Anspruch 14, bei der die Weiterleitungslogik (228) ein programmierbares Weiterleitungsregister (230) aufweist, das konfiguriert ist, um die Weiterleitungsanweisung zu enthalten, wobei die Weiterleitungslogik (228) ferner konfiguriert ist, um auf das programmierbare Weiterlei tungsregister (230) zuzugreifen und Daten auf der Basis der Weiterleitungsanweisung entlang der Steuerungsschleife an ein Zielsteuerungspaar weiterzuleiten.
  16. Steuerungsverbindungsstruktur gemäß einem der Ansprüche 11 bis 15, bei der jede Steuerung (208) eine Hardwareschaltung (232) aufweist, die konfiguriert ist, um einen Ausfall in der Verbindungsstruktur zu erfassen und um Daten über die Verbindungsstruktur umzuleiten, um den Ausfall (500) zu meiden.
  17. Steuerungsverbindungsstruktur gemäß Anspruch 16, bei der die Hardwareschaltung (232) ferner konfiguriert ist, um einen Inhalt eines Weiterleitungsregisters (230) zu modifizieren, so daß Daten anfänglich über die Verbindungsstruktur weitergeleitet werden, um den Ausfall (500) zu meiden.
  18. Steuerungsverbindungsstruktur gemäß einem der Ansprüche 11 bis 17, bei der die erste Verbindung (600) und die zweite Verbindung (602) aus einer Gruppe von Verbindungen ausgewählt sind, die folgende umfaßt: eine Rückwandplatine (600, 602); und ein Kabel.
  19. Steuerungsverbindungsstruktur, die folgende Merkmale aufweist: eine erste Steuerungsebene (800), die zumindest zwei Steuerungspaare (208) aufweist, wobei jedes Steuerungspaar (208) eine erste Steuerung aufweist, die durch einen Spiegelbus (400) mit einer zweiten Steuerung gekoppelt ist; und eine erste Steuerungsschleife, die alle Steuerungen auf der ersten Steuerungsebene durch eine Mehrzahl von Schleifenbussen (402) koppelt.
  20. Steuerungsverbindungsstruktur gemäß Anspruch 19, die ferner folgende Merkmale aufweist: eine zweite Steuerungsebene (802), die zumindest zwei Steuerungspaare (208) aufweist, wobei jedes Steuerungspaar (208) eine erste Steuerung aufweist, die durch einen Spiegelbus (400) mit einer zweiten Steuerung gekoppelt ist; und eine zweite Steuerungsschleife, die alle Steuerungen auf der zweiten Steuerungsebene (802) durch eine Mehrzahl von Schleifenbussen (402) koppelt; wobei jede erste Steuerung jedes Steuerungspaars (208) auf der ersten Steuerungsebene (800) über einen Schleifenbus (402) mit einer entsprechenden ersten Steuerung eines entsprechenden Steuerungspaars (208) auf der zweiten Steuerungsebene (802) gekoppelt ist und jede zweite Steuerung jedes Steuerungspaars (208) auf der ersten Steuerungsebene (800) über einen Schleifenbus (402) mit einer entsprechenden zweiten Steuerung eines entsprechenden Steuerungspaars (208) auf der zweiten Steuerungsebene (802) gekoppelt ist.
  21. Prozessorlesbares Medium (202, 204, 220, 222), das prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Bestimmen (902) eines Zielsteuerungspaars (208) für ein Datenpaket auf der Basis einer Busadresse für das Datenpaket und einer Arrayabbildung der Hostadresse auf eine Arrayadresse; und anfänglichen Senden (904) des Datenpakets über eine Steuerungsschleife hin zu dem Zielsteuerungspaar (208) in einer ersten Richtung, die durch einen Datenanfangsblock und eine Weiterleitungsanweisung bestimmt wird.
  22. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 21, bei dem das Bestimmen (902) ferner ein Anbringen des Datenanfangsblocks an dem Datenpaket umfaßt.
  23. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 21 oder 22, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Erfassen (906) eines Ausfalls (500) in der Steuerungsschleife; und Umleiten (908) des Datenpakets in einer zweiten Richtung hin zu dem Zielsteuerungspaar (208).
  24. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 23, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Umprogrammieren (910), auf der Basis des Ausfalls (500), eines Weiterleitungsregisters (230) mit neuen Weiterleitungsinformationen; und anfänglichen Senden (912), auf der Basis der neuen Weiterleitungsinformationen, von zusätzlichen Datenpaketen in einer Richtung über die Steuerungsschleife, die den Ausfall (500) meidet.
  25. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 24, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: gemeinsamen Verwenden von Ausfallinformationen mit allen Steuerungen; und Umprogrammieren, auf der Basis der Ausfallinformationen, von Weiterleitungsregistern (230) an jeder Steuerung mit neuen Weiterleitungsinformationen.
  26. Prozessorlesbares Medium (202, 204, 220, 222), das prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Empfangen, an einer ersten Steuerung, eines Datenpakets, das für ein Steuerungspaar (208) bestimmt ist; Anbringen eines Anfangsblocks an dem Datenpaket; Zugreifen, von einem Weiterleitungsregister (230), auf eine dem Anfangsblock zugeordnete Weiterleitungsanweisung; und Senden des Datenpakets, auf der Basis der Weiterleitungsanweisung, über eine Steuerungsschleife in einer ersten Richtung an eine erste gespiegelte Steuerung der beiden gespiegelten Steuerungen in dem Steuerungspaar (208).
  27. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 26, das weitere prozessorausführbare Anweisungen aufweist, die zum Bestimmen des Steuerungspaars (208) auf der Basis einer Hostadresse für das Datenpaket und einer Arrayabbildung der Hostadresse auf eine Arrayadresse konfiguriert sind.
  28. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 26 oder 27, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Erfassen (906) eines Ausfalls (500) in der Steuerungsschleife; und Umleiten (908) des Datenpakets in einer zweiten Richtung an eine zweite gespiegelte Steuerung der beiden gespiegelten Steuerungen in dem Steuerungspaar (208).
  29. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 28, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Umprogrammieren (910), auf der Basis des Ausfalls (500), des Weiterleitungsregisters (230) mit neuen Weiterleitungsinformationen; und anfänglichen Senden (912), auf der Basis der neuen Weiterleitungsinformationen, von zusätzlichen Datenpaketen in einer Richtung über die Steuerungsschleife, die den Ausfall (500) meidet.
  30. Prozessorlesbares Medium (202, 204, 220, 222), das prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Empfangen, an einer ersten Steuerung in einer ersten Steuerungsebene (800), von Daten, die für ein Steuerungspaar (208) einer zweiten Ebene, das in einer zweiten Steuerungsebene (802) angeordnet ist, bestimmt sind; Senden der Daten über eine Steuerungsschleife der ersten Ebene an ein Steuerungspaar (208) der ersten Ebene, das dem Steuerungspaar (208) der zweiten Ebene entspricht; und weiteren Senden der Daten von dem Steuerungspaar (208) der ersten Ebene an das Steuerungspaar (208) der zweiten Ebene über einen Schleifenbus (402), der die erste Steuerungsebene (800) mit der zweiten Steuerungsebene (802) koppelt.
  31. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 30, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Erfassen (906) eines Ausfalls (500) in einer Steuerungsschleife; und Umleiten (908) von Daten, die über die Steuerungsschleife wandern, von einer ersten Richtung in eine zweite Richtung, um den Ausfall (500) zu meiden.
  32. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 31, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Programmieren, auf der Basis des Ausfalls (500), von Weiterleitungsregistern (230) an allen Steuerungen in der Steuerungsschleife mit Weiterleitungsinformationen; und anfänglichen Senden (912), auf der Basis der Weiterleitungsinformationen, von zusätzlichen Daten in einer Richtung über die Steuerungsschleife, die den Ausfall (500) meidet.
  33. Prozessorlesbares Medium (202, 204, 220, 222) gemäß Anspruch 31 oder 32, das weitere prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: gemeinsamen Verwenden von Ausfallinformationen mit allen Steuerungen; und Umprogrammieren, auf der Basis der Ausfallinformationen, von Weiterleitungsregistern (230) an jeder Steuerung mit neuen Weiterleitungsinformationen.
  34. Prozessorlesbares Medium (202, 204, 220, 222), das prozessorausführbare Anweisungen aufweist, die konfiguriert sind zum: Empfangen von Daten an einer ersten Steuerung in einer ersten Steuerungsebene (800); Senden der Daten von der ersten Steuerung an ein Steuerungspaar (208) einer zweiten Ebene über einen Schleifenbus (402), der die erste Steuerungsebene (800) mit einer zweiten Steuerungsebene (802) koppelt; und weiteren Senden der Daten über eine Steuerungsschleife der zweiten Ebene an ein Zielsteuerungspaar (208) in der zweiten Steuerungsebene (802).
  35. Verfahren zum Weiterleiten von Daten zwischen Steuerungspaaren (208) in einem Mehrfachsteuerungs-Plattenarray, das folgende Schritte aufweist: Bestimmen (902) eines Zielsteuerungspaars (208) für ein Datenpaket auf der Basis einer Hostadresse für das Datenpaket und einer Arrayabbildung der Hostadresse auf eine Arrayadresse; und anfängliches Senden (904) des Datenpakets über eine Steuerungsschleife hin zu einer nächstgelegenen gespiegelten Steuerung des Zielsteuerungspaars (208) in einer ersten Richtung, die durch einen Datenanfangsblock und eine Weiterleitungsanweisung bestimmt wird.
  36. Verfahren gemäß Anspruch 35, das ferner folgende Schritte aufweist: Erfassen (906) eines Ausfalls (500) in der Steuerungsschleife; und Umleiten (908) des Datenpakets in einer zweiten Richtung hin zu einer nächstgelegenen gespiegelten Steuerung des Zielsteuerungspaars (208).
  37. Verfahren zum Weiterleiten von Daten zwischen Steuerungspaaren (208) in einem Mehrfachsteuerungs-Plattenarray, das folgende Schritte aufweist: Empfangen, an einer ersten Steuerung, eines Datenpakets, das für ein Steuerungspaar (208) bestimmt ist; Anbringen eines Anfangsblocks an dem Datenpaket; Zugreifen, von einem Weiterleitungsregister (230), auf eine Weiterleitungsanweisung, die dem Anfangsblock zugeordnet ist; und Senden, auf der Basis der Weiterleitungsanweisung, des Datenpakets über eine Steuerungsschleife in einer ersten Richtung an eine erste gespiegelte Steuerung der beiden gespiegelten Steuerungen in dem Steuerungspaar (208).
  38. Verfahren gemäß Anspruch 37, das ferner ein Bestimmen des Steuerungspaars (208) auf der Basis einer Hostadresse für das Datenpaket und einer Arrayabbildung der Hostadresse auf eine Arrayadresse aufweist.
  39. Verfahren zum Weiterleiten von Daten zwischen Steuerungspaaren (208) in einem Mehrfachsteuerungs-Plattenarray, das folgende Schritte aufweist: Empfangen, an einer ersten Steuerung in einer ersten Steuerungsebene (800), von Daten, die für ein Steuerungspaar (208) einer zweiten Ebene, das in einer zweiten Steuerungsebene (802) angeordnet ist, bestimmt sind; Senden der Daten über eine Steuerungsschleife der ersten Ebene an ein Steuerungspaar (208) der ersten Ebene, das dem Steuerungspaar (208) der zweiten Ebene entspricht; und weiteres Senden der Daten von dem Steuerungspaar (208) der ersten Ebene an das Steuerungspaar (208) der zweiten Ebene über einen Schleifenbus (402), der die erste Steuerungsebene (800) mit der zweiten Steuerungsebene (802) koppelt.
  40. Verfahren zum Weiterleiten von Daten zwischen Steuerungspaaren (208) in einem Mehrfachsteuerungs-Plattenarray, das folgende Schritte aufweist: Empfangen von Daten an einer ersten Steuerung in einer ersten Steuerungsebene (800); Senden der Daten von der ersten Steuerung an ein Steuerungspaar (208) der zweiten Ebene über einen Schleifenbus (402), der die erste Steuerungsebene (800) mit einer zweiten Steuerungsebene (802) koppelt; und weiteres Senden der Daten über eine Steuerungsschleife der zweiten Ebene an ein Zielsteuerungspaar (208) in der zweiten Steuerungsebene (802).
DE10317925A 2002-05-14 2003-04-17 Steuerungskommunikation über eine ständig eingeschaltete Steuerungsverbindung Expired - Fee Related DE10317925B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/146546 2002-05-14
US10/146,546 US20030217211A1 (en) 2002-05-14 2002-05-14 Controller communications over an always-on controller interconnect

Publications (2)

Publication Number Publication Date
DE10317925A1 DE10317925A1 (de) 2003-12-04
DE10317925B4 true DE10317925B4 (de) 2005-05-04

Family

ID=29269756

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10317925A Expired - Fee Related DE10317925B4 (de) 2002-05-14 2003-04-17 Steuerungskommunikation über eine ständig eingeschaltete Steuerungsverbindung

Country Status (4)

Country Link
US (2) US20030217211A1 (de)
JP (1) JP2003330626A (de)
DE (1) DE10317925B4 (de)
GB (1) GB2388700B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US7146448B2 (en) * 2001-09-28 2006-12-05 Dot Hill Systems Corporation Apparatus and method for adopting an orphan I/O port in a redundant storage controller
US7536495B2 (en) * 2001-09-28 2009-05-19 Dot Hill Systems Corporation Certified memory-to-memory data transfer between active-active raid controllers
US6941396B1 (en) * 2003-02-19 2005-09-06 Istor Networks, Inc. Storage controller redundancy using bi-directional reflective memory channel
US7266665B2 (en) * 2003-06-17 2007-09-04 International Business Machines Corporation Method, system, and article of manufacture for remote copying of data
US7305520B2 (en) * 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7543096B2 (en) * 2005-01-20 2009-06-02 Dot Hill Systems Corporation Safe message transfers on PCI-Express link from RAID controller to receiver-programmable window of partner RAID controller CPU memory
JP2007206766A (ja) * 2006-01-31 2007-08-16 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びその障害箇所診断方法。
US7536508B2 (en) * 2006-06-30 2009-05-19 Dot Hill Systems Corporation System and method for sharing SATA drives in active-active RAID controller system
US7865766B2 (en) * 2006-07-26 2011-01-04 International Business Machines Corporation Providing increased availability of I/O drawers during concurrent I/O hub repair
WO2008050456A1 (fr) * 2006-10-27 2008-05-02 Fujitsu Limited Système informatique, dispositif de relais de données, et procédé de commande de système informatique
US7669007B2 (en) * 2007-01-04 2010-02-23 International Business Machines Corporation Mirrored redundant array of independent disks (RAID) random access performance enhancement
US7681089B2 (en) * 2007-02-20 2010-03-16 Dot Hill Systems Corporation Redundant storage controller system with enhanced failure analysis capability
US7783917B2 (en) * 2007-02-26 2010-08-24 International Business Machines Corporation Selection of data arrays
US9231846B2 (en) * 2011-11-22 2016-01-05 Microsoft Technology Licensing, Llc Providing network capability over a converged interconnect fabric
FR2988931B1 (fr) * 2012-03-30 2015-10-16 Schneider Toshiba Inverter Dispositif de commande employe dans un systeme d'alimentation electrique a decoupage
US11327858B2 (en) 2020-08-11 2022-05-10 Seagate Technology Llc Preserving data integrity during controller failure

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0845906A2 (de) * 1996-12-02 1998-06-03 International Business Machines Corporation Geteiltes Ring Audio/Videoserversystem
US6230240B1 (en) * 1998-06-23 2001-05-08 Hewlett-Packard Company Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface
US6330687B1 (en) * 1998-11-13 2001-12-11 Digi-Data Corporation System and method to maintain performance among N single raid systems during non-fault conditions while sharing multiple storage devices during conditions of a faulty host computer or faulty storage array controller

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5847111B2 (ja) * 1979-09-10 1983-10-20 株式会社日立製作所 ル−プ伝送システム
US5544330A (en) * 1994-07-13 1996-08-06 Emc Corporation Fault tolerant interconnect topology using multiple rings
US5761705A (en) * 1996-04-04 1998-06-02 Symbios, Inc. Methods and structure for maintaining cache consistency in a RAID controller having redundant caches
US5922077A (en) * 1996-11-14 1999-07-13 Data General Corporation Fail-over switching system
US6504817B2 (en) * 1997-03-31 2003-01-07 Hewlett-Packard Company Fiber channel arbitrated loop dynamic loop sizing
FR2762695B1 (fr) * 1997-04-29 1999-05-28 Bull Sa Procede et dispositif de connexion de l'unite centrale d'un systeme de traitement de donnees a un sous-systeme de stockage de donnees a redondance
AU9689898A (en) * 1997-11-14 1999-06-07 3Ware, Inc. High-performance architecture for disk array controller
US6192027B1 (en) * 1998-09-04 2001-02-20 International Business Machines Corporation Apparatus, system, and method for dual-active fibre channel loop resiliency during controller failure
US6493795B1 (en) * 1998-12-30 2002-12-10 Emc Corporation Data storage system
DE60028793T2 (de) * 1999-08-24 2007-05-24 Network Appliance, Inc., Sunnyvale Skalierbarer dateiserver mit hochverfügbaren paaren
US6578158B1 (en) * 1999-10-28 2003-06-10 International Business Machines Corporation Method and apparatus for providing a raid controller having transparent failover and failback
US6643795B1 (en) * 2000-03-30 2003-11-04 Hewlett-Packard Development Company, L.P. Controller-based bi-directional remote copy system with storage site failover capability
KR100364895B1 (ko) * 2000-06-12 2002-12-16 아라리온 (주) 데이터 액세스 제어 방법 및 시스템
US6839788B2 (en) * 2001-09-28 2005-01-04 Dot Hill Systems Corp. Bus zoning in a channel independent storage controller architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0845906A2 (de) * 1996-12-02 1998-06-03 International Business Machines Corporation Geteiltes Ring Audio/Videoserversystem
US6230240B1 (en) * 1998-06-23 2001-05-08 Hewlett-Packard Company Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface
US6330687B1 (en) * 1998-11-13 2001-12-11 Digi-Data Corporation System and method to maintain performance among N single raid systems during non-fault conditions while sharing multiple storage devices during conditions of a faulty host computer or faulty storage array controller

Also Published As

Publication number Publication date
US20050246579A1 (en) 2005-11-03
US7480815B2 (en) 2009-01-20
JP2003330626A (ja) 2003-11-21
GB2388700A (en) 2003-11-19
US20030217211A1 (en) 2003-11-20
GB2388700B (en) 2005-12-14
DE10317925A1 (de) 2003-12-04

Similar Documents

Publication Publication Date Title
DE10317925B4 (de) Steuerungskommunikation über eine ständig eingeschaltete Steuerungsverbindung
DE102014117465B4 (de) Unterstützter kohärenter gemeinsamer Speicher
DE102012210914B4 (de) Switch-Fabric-Management
DE102004054783B4 (de) System und Verfahren für Kommunikationen in einem seriell angeschlossenen SCSI-Speichernetzwerk
DE69632424T2 (de) Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
DE69636663T2 (de) System und Verfahren zur Zugriffsverteilung von Mehrfachspeichermatrixen zwischen Mehrfachwirtrechnersystemen
DE69915243T2 (de) Speicherplattenanordnung-Steuerungsvorrichtung
DE112011100623B4 (de) Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz
DE602004005344T2 (de) Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort
DE102004027672A1 (de) Speicherplattenarraysystem
EP2880534B1 (de) Hochverfügbares rechnersystem, arbeitsverfahren und dessen verwendung
DE102011014588A1 (de) Multicasting-Schreibanforderungen an Mehrfachspeicher-Controller
DE10124514A1 (de) Fehlertolerante, gemeinsam genutzte Systemressource mit einem Hochverfügbarkeitskommunikationen bereitstellenden Kommunikationsdurchgang
DE10124482A1 (de) Fehlertolerante Systemressource mit niedriger Latenzzeit, mit übergeordneter Protokollierung von Systemressourcentransaktionen und serverübergreifend gespiegelter Protokollierung von übergeordneten Systemressourcentransaktionen
DE112019000211B4 (de) Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen
DE19515661C2 (de) Halbleiter-Plattenvorrichtung
DE19723909A1 (de) Verfahren zum Erzielen einer geteilten Paritätsersatzplatte in einem RAID-Untersystem
DE10048402B4 (de) Datenspeichersystem
DE10236179A1 (de) Speichersystem und Verfahren zur Verwendung desselben
US8504786B2 (en) Method and apparatus for backing up storage system data
DE10220886A1 (de) Datenspeichersysteme mit verbesserten Netzwerkschnittstellen
EP1231537A1 (de) Automatische Inbetriebnahme eines Clustersystems nach einem heilbaren Fehler
DE112020003062T5 (de) Dynamische anpassung einer logischen speicherkapazität für speicherlaufwerke
DE112016003465T5 (de) Autonomer Paritätsaustausch in Datenspeichersystemen
DE112020001089T5 (de) Verbessern von cache-trefferverhältnissen bei ausgewählten datenträgern in einem speichersystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20111101