-
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 1–8 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.