-
Die
vorliegende Erfindung bezieht sich auf Netzwerkspeichercontroller,
und insbesondere auf einen Netzwerkspeichercontroller, der redundante modulare
Komponenten für
die Datenverarbeitungsfunktionen unabhängig von der I/O-Schnittstelle
verwendet. Speziell bezieht sich die vorliegende Erfindung auf eine
Netzwerkspeicher-Vorrichtung für
das Verbinden eines Host-Rechners mit mindestens einer Speichervorrichtung,
ein Verfahren für
die Verzonung (zoning) eines Speichercontrollermoduls (CMM) zu einem
Kanal-Schnittstellenmodul
innerhalb einer Netzwerkspeicher-Vorrichtung und eine Vorrichtung,
in welcher ein Kanal-Schnittstellenmodul mit einem besonderen Speichercontrollermodul verbunden
wird.
-
Hintergrund der Erfindung
-
Netzwerkspeichercontroller
werden typischerweise verwendet, um ein Host-Rechnersystem mit Peripherie-Speichervorrichtungen,
wie beispielsweise Plattenlaufwerke oder Bandlaufwerke zu verbinden.
Der Netzwerkspeichercontroller agiert wie eine Schnittstelle zwischen
dem Host-Rechner und den Peripherie-Speichervorrichtungen. In vielen
Anwendungen führt
der Netzwerkspeichercontroller Verarbeitungsfunktionen der Daten
aus, welche zwischen dem Host-Rechner und den Peripherievorrichtungen übertragen
werden. Eine übliche
Anwendung eines solchen Systems ist ein Redundant Array of Independent
Disks (RAID). Ein RAID-System speichert Daten auf mehreren Plattenlaufwerken,
um die Daten vor Plattenlaufwerksausfall zu schützen. Wenn ein Plattenlaufwerk
ausfällt,
ist das RAID-System im allgemeinen in der Lage die Daten, welche
auf dem ausgefallenen Laufwerk gespeichert waren, aus den übriggebliebenen
Laufwerken des Arrays wiederherzustellen. Ein RAID-System verwendet
einen Speichercontroller, welcher in vielen Fällen einen RAID-Controller umfasst,
eine Schnittstelle zwischen dem Host-Rechner und dem Plattenlaufwerks-Array.
-
Viele
Anwendungen erfordern ein Speichersystem, um eine sehr hohe Verfügbarkeit
aufzuweisen. Diese hohe Verfügbarkeit
stellt ein Hauptanliegen für
viele Anwendungen dar, wie z. B. für Finanzinstitute und Luftfahrtreservierungssysteme,
weil der Anwender sich sehr stark auf die im RAID-System gespeicherten
Daten verlässt.
Bei diesen Anwendungstypen kann die Nichtverfügbarkeit der vom RAID-System
gespeicherten Daten zu bedeutenden Einnahmeverlusten und/oder Kundenunzufriedenheit führen. Das
Verwenden eines RAID-Systems
in solch einer Anwendung erhöht
die Verfügbarkeit
der gespeicherten Daten, weil beim Ausfall eines einzelnen Plattenlaufwerks,
die Daten trotzdem vom System gespeichert und aufgefunden werden
können.
Zusätzlich
zum Einsatz eines RAID-Systems ist es üblich, redundante RAID-Controller
zu verwenden, um die Verfügbarkeit
eines Speichersystems weiterzuverbessern. In solch einer Situation
werden zwei oder mehrer Controller in einem RAID-System verwendet, wobei
jeder Controller eine Ausfallsicherungsfähigkeit aufweist, so dass wenn
ein Controller ausfällt, der
andere übriggebliebene
Controller die Funktionen für
den ausgefallenen Controller übernimmt. Solch
eine Plattform verbessert die Verfügbarkeit eines RAID-Systems,
doch es kann zu mehreren Nachteilen führen, wie nachfolgend erörtert.
-
1 zeigt
eine Blockdiagrammdarstellung eines heute üblichen RAID-Netzwerk-Speichercontrollers 10,
der als dualer Controller konfiguriert ist, welches eine Fiber-Channel Fiber-Channel-Verbindung
darstellt. Das ist in diesem Beispiel der Host-Rechner und das Disk-Array,
die beide mit der Netzwerkspeicher-Bridge über Fiber-Channel-Verbindungen kommunizieren.
Während
Fiber-Channel ein übliches
Kanalmedium für
solche Systeme darstellt, versteht es sich, dass beispielsweise
andere Kanäle
verwendet werden können,
wie beispielsweise Small Computer System Interface (SCSI) oder Ethernet.
Das in 1 gezeigte RAID-System, umfasst zwei Host-Ports,
Host-Port-1 14 und Host-Port-2 18 und zwei Platten-Ports,
Platten-Port-1 22 und Platten-Port-2 26. Jeder
Host-Port 14, 18 kann für verschiedene Rechner zugeordnet
werden, und jeder Platten-Port 22, 26 kann unter schiedlichen Platten-Arrays
zugeordnet werden, wie es für RAID-Systeme
nach dem Stand der Technik bekannt ist. Die Netzwerkspeicher-Bridge 10 umfasst
duale RAID-Controller, den Controller-A 30, und den Controller-B 34.
In einem System, welches die Verzonung der Controller verwendet,
kann der Controller-A 30 auf den Host-Port-1 14 und
den Platten-Port-1 22 verzont
(zoned) werden, und der Controller-B 34 kann auf den Host-Port-2 18 und
den Platten-Port-2 26 verzont werden.
-
Im
Stand der Technik ist es bekannt, dass Systeme, welche duale Controller
mit Write Back Caching verwenden, eine Datenspiegelung zwischen den
Controller erfordern, um die Kohärenz
des Cache sicherzustellen. Jeder Controller 30, 34 muss eine
Kopie der Daten und des Status der anderen Controller haben, um
eine Redundanz der Controller beizubehalten und dadurch die Funktion
des RAID-Systems beizubehalten, wenn einer der Controller ausfällt. Das
Spiegeln der Daten zwischen den Controller kann die Performance
eines RAID-Systems
verschlechtern, weil die Übertragung
der Daten zwischen den Controller Rechenleistung der Controller
verwendet, wie auch Kanalbandbreite, wie nachfolgend detailliert
beschrieben.
-
Die
Controller 30, 34 sind über eine Fiber Channel Rückwandplatine 38 verbunden,
welche zwischen den zwei I/O-Modulen angeschlossen ist, I/O-Modul-1 42,
und I/O-Modul-2 46. Jeder Controller 30, 34 umfasst
ein CPU Subsystem 50, einen Speicher 54 (beispielsweise
Double Data Rate), Steuerlogik 58, eine Fiber-Channel-Dualport-Verbindung
mit den zwei Host-Anschlüssen 62a, 62b und
eine Fiber Channel-Dualport-Verbindung mit den zwei Plattenanschlüssen 66a, 66b.
Das CPU-Subsystem 50 führt die
Funktionen aus, die für
die Speicherung der Daten in einem Platten-Array notwendig sind,
einschließlich
des Daten-Striping
und dem Veranlassen und Ausführen
der Lese- und Schreibbefehle. Der Speicher 54 ist ein nicht
flüchtiger
Speicherbereich für
Daten und andere Informationen. Die Steuerlogik 58 führt mehrere
Funktionen aus, die beispielsweise Schnittstellenfunktionen mit
dem CPU-Subsystem 50, Speicher 54 und der Host-Anschlüsse 62a, 62b und
der Plattenanschlüsse 66a, 66b.
Die Steuerlogik 58 kann ebenfalls soweit andere Funktionen
aufweisen, einschließlich
einer Paritätsgenerierungsfunktion,
beispielsweise als ein Exclusive-OR-(XOR-)Prozessor. Die Host-Anschlüsse 62a, 62b und
Plattenanschlüsse 66a, 66b ermöglichen
die Kommunikation mit der Fiber Channel Rückwandplatine 38.
Die I/O-Module 42, 46 umfassen LRC-(Link-Resiliency-Circuits-)Schaltungen 70,
ebenfalls bekannt als Port-Bypass-Schaltungen,
welche die Funktion haben, jeden Host-Port 14, 18 und
jeden Platten-Port 22, 26 an
jeden Controller 30, 34 anzuschließen. Dies
ermöglicht
beiden Controller 30, 34 auf die beiden Host-Ports 14, 18 und
auf die beiden Disk-Ports 22, 26 zuzugreifen.
-
Um
eine vollständige
Redundanz zu bieten, muss jeder Controller eine Verbindung zu jedem Host-Port 14, 18 und
jedem Platten-Port 22, 26 aufweisen. Auf diese
Art kann beim Ausfall eines der Controller der andere Controller
den Betrieb fortsetzen. Wie oben beschrieben, ist es üblich, dass
jeder Host-Port 14, 18 verschiedenen Host-Rechnern
zugeordnet ist, und dass jeder Platten-Port 22, 26 unterschiedlichen
Disc-Arrays zugeordnet ist. In diesen Fällen ist jeder Controller 30, 34 typischerweise
einem Platten-Port und einem Host-Port zugeordnet, was zur Verbesserung
der Performance eines RAID-Systems führt. Dennoch sind in diesem
Fall die Hälfte
dieser Anschlüsse
passiv. Beispielsweise wenn der Controller-A 30 dem Host-Port-1 14 und dem
Platten-Port-1 22 zugeordnet ist, empfängt der Controller-A 30 die
gesamte Kommunikation von dem Host-Port-1 14 und steuert
den Disk-Array (die Disk-Arrays) und den Platten-Port-1 22.
Ebenso würde
der Controller-B 34 dem Host-Port-2 18 und dem Platten-Port-2 26 zugeordnet
werden. Diese Techniken sind im Stand der Technik bekannt und können die
Performance eines RAID-Systems verbessern, wie auch die Steuerung
und die Kommunikation der zwei Controller 30, 34 vereinfachen.
Im Beispiel aus 1 sind auf den Controller-A 30 die
Host-Portverbindungen 62a und Platten-Portverbindungen 66a an dem
Host-Port-1 14 und Platten-Port-1 22 entsprechend
angeschlossen, über
die LRCs 70 des I/O-Moduls-1 42 angeschlossen.
Weil der Controller-A 30 dem Host-Port-1 14 und
Platten-Port-1 22 zugeordnet ist, kommunizieren die Host-Portverbindung 62a und
Platten-Portverbindung 66a aktiv mit dem Host-Port-1 14 und
dem Platten-Port-1 22. Die übriggebliebene Host-Portverbindung 62b und
Platten-Portverbindung 66b sind
an dem Host-Port-1 18 und Platten-Port-2 26 über die
LRCs 70 des I/O-Moduls-2 46 angeschlossen. Diese
Verbindungen sind typischerweise passive Verbindungen, weil der
Controller-A 30 nicht aktiv mit dem Host-Port-2 18 und dem
Platten-Port-2 26 kommuniziert,
solange der Controller-B 34 nicht ausfällt. Ebenso könnte der Controller-B 34 dem
Host-Port-2 18 und Platten-Port-2 26 zugeordnet
werden. Dadurch würde
die Host-Portverbindung 62b und Platten-Portverbindung 66b für den Controller-B 34 mit
dem Host-Port-2 18 und Platten-Port-2 26 über die
LRCs 70 des I/O-Moduls-2 46 kommunizie ren. Die übriggebliebene
Host-Portverbindung 62a und Platten-Portverbindung 66a werden
an den Host-Port-1 14 und Platten-Port-1 22 über LRCs 70 der
I/O-Module-1 42 verbunden. Wie oben beschrieben werden
bei typischen redundanten Controllerfunktionen mit Write-Back-Caching, Daten
zwischen den Controller gespiegelt. Beim Spiegeln der Daten zwischen
dem Controller-A 30 und dem Controller-B 34 ist
es üblich, die
gespiegelten Daten über
die Platten-Portverbindungen zu übertragen.
Beispielsweise kann der Controller-B 34 Daten über den
Host-Port-2 18 empfangen, welcher in ein Platten-Array über den
Platten-Port 2 geschrieben
werden sollen. Der Controller-B 34 würde diese Daten empfangen und
im Speicher 54 abspeichern. Um die Kohärenz des Puffers beizubehalten,
muss der Controller-B 34 diese Daten ebenfalls dem Controller-A 30 kommunizieren,
damit beide Controller die Daten beinhalten, und wenn einer ausfällt, kann
der andere die Daten weiterhin abspeichern. In einem herkömmlichen
System wird dieser Datentransfer in mehreren Schritten durchgeführt. Zuerst
sendet der Controller-B 34 die Daten über die Platten-Portverbindung 66a,
welcher den LRC 70 mit dem Platten-Port-1 22 verbindet.
Die Daten würden
dann zu der Art übertragen
werden, die dem Platten-Port-1 22 zugeordnet ist, und dem
LRC 70 zurückübertragen
werden, wo sie dann an der Platten-Portverbindung 66a auf
dem Controller-A empfangen
würden.
Der Controller-A würde
die Daten dann im Speicher 54 ablegen, eine Kopie der Daten,
die ursprünglich
dem Controller-B 34 übertragen wurden,
bereitstellen. Der Controller-B 34 würde die geeigneten Schritte
durchführen,
um die Daten auf dem Disk-Array zu schreiben. Sobald die Daten auf den
Disk-Array geschrieben wurden, benachrichtigt der Controller-B 34 dies
dem Controller-A 30, wobei derselbe Kommunikationspfad
wie oben beschrieben, benutzt wird, und der Controller-A 30 entfernt dann
die Eintragung der geschriebenen Daten. Ebenso, wenn der Controller-A 30 Daten
empfängt, die
auf den Disk-Array am Platten-Port-1 22 geschrieben werden
sollen, sendet er die Daten an den Controller-B 34 unter
Verwendung derselben Spiegelungstechnik.
-
Während diese
Technik den übriggebliebenen
Platten-Port auf jedem Controller verwenden kann, bleibt der zweite
Host-Port auf jedem Controller unbenutzt, deshalb passiv, während des
Normalbetriebs des Systems. Die passiven Anschlüsse auf jedem Controller fingen
eine signifikante Menge von Hardware dem Controller hinzu, und können signifikante
Zusatzkosten dem Netzwerkspeichercontroller 10 verursachen.
Deshalb wäre
es vorteilhaft einen redundanten Netzwerkspeichercontroller bereit
zu stellen, welcher eine hohe Verfügbarkeit beibehält, während die
Kosten und die Hardware, die den passiven Ports auf dem Controller
zugeordnet sind, reduziert werden.
-
Zusätzlich führt das
Spiegeln der Daten in solch einem System dazu, dass die gespiegelten
Daten und die gespeicherten Daten über denselben Port des Controllers
gesendet werden, wie der, der die gespiegelten Daten empfängt. Bandbreite
zu und von dem Disk-Array werden durch die gespiegelten Daten verbraucht,
was dazu (ihren kann, dass die Performance der Netzwerkspeicher-Bridge
verringert wird. Zusätzlich
werden während
der Datenspiegelung Prozessverarbeitungsressourcen des Controllers 30, 34 verbraucht,
weil der Controller während des
Versendens der Daten diese in eine zu übertragende Form bringen muss,
und der Controller, der die Daten empfängt, muss die Daten, die über den
Platten-Port angekommen sind, verarbeiten. Beispielsweise werden
in dem Fiber Channel Ausführungsbeispiel,
welches in 1 gezeigt wird, werden die gespiegelten
Daten gemäß dem Fiber
Channel-Protokoll formatiert, was mehrere Interrupts und Bearbeitungsressourcen
erfordert. Daher wäre
es vorteilhaft, einen Netzwerkspeichercontroller zu haben, welcher wenig
oder keine Kanalbandbreite während
der Datenspiegelung zwischen den Controller benötigt. Es wäre ebenfalls vorteilhaft einen
Netzwerkspeichercontroller zu haben, welcher weniger Ressourcen
für die
Datenspiegelung verbraucht.
-
Mit
dem kontinuierlichen Ansteigen der Nachfrage nach Datenspeicher
erfordern RAID-Controller
ferner des öfteren
das Aufrüsten
zusätzlicher Plattenlaufwerke
oder schnelleren Busschnittstellen. Ein RAID-Controller kann aber
möglicherweise
nicht dazu konfiguriert sein, zusätzliche Busschnittstellenkapazität hinzuzufügen oder
einen neuen Busschnittstellentyp zu unterstützen. Solche Controller müssen üblicherweise
ersetzt werden, wenn eine Aufrüstung erfolgt.
Dieses Ersetzen des Controllers kann die Kosten einer Aufrüstung für ein RAID-System
erhöhen.
Das Ersetzen eines funktionsfähigen RAID-Controllers
stellt einen Wertverlust dar, welcher die Entscheidung, ein RAID-System
aufzurüsten, verhindern
kann. Daher wäre
es vorteilhaft, ein System zu haben, welches sowohl ein leichtes
Aufrüsten der
Kapazität
als auch neue Schnittstellentypen bei reduzierten Kosten unterstützt.
-
Ein
Ansatz zur Behebung dieser Mängel
ist in
US 5,790,775 beschrieben.
Dieses Patent offenbart ein Verfahren und eine Vorrichtung zur Durchführung erkennbarer
Speichercont roller-Ausfallsicherung (failover) und -Ausfallwiederherstellung
(failback). Ein Controller wird bereitgestellt, der geeignet ist,
die Identität
eines ausgefallenen Controllers zu übernehmen während er fortsetzt, zu seinen
eigenen SCSI IDs zu reagieren, so dass alle SCSI IDs und ihre assoziierten
LUNs des ausgefallenen Controller von dem funktionierenden Controller übernommen werden.
Wenn der ausgefallene Controller wiederhergestellt ist, ist die
Ausfallwiederherstellung zu dem Controller ebenfalls erkennbar.
-
Ein
weiterer Ansatz ist beschrieben in
US 5,812,754 .
Dieses Patent offenbart ein hoch verfügbares RAID-System, das ein
FC-AL-(fiber channel arbitrated loop)Interface aufweist, das mit
einer Diskettenanordnung verbunden ist. Das System stellt duale und
isolierte Arbitrated Host- und Speichergeräte-Loopschaltkreise zur Verfügung für redundante und
unabhängige
I/O-Pfade zu Hostcomputern. Jeder Loop umfasst Bypass-Schaltkreise,
die verhindern, dass der Ausfall einer Gerätes die Funktion des Loops
in Mitleidenschaft zieht.
-
Ein
dritter Ansatz ist in
US 6,243,829 beschreiben.
Dieses Patent offenbart einen betriebssicheren fehlertoleranten
I/O-Controller, der redundante synchrone Speicher unterstützt. Der
I/O-Controller umfasst mehrere I/O-Control-Logik-Einheiten, wobei jede
I/O-Control-Logik-Einheit
mit einem Hostserver kommuniziert und anderen externen Geräten. Ein Master-Speichercontroller
kann simultan Speicherschreiboperationen im sowohl Master- als auch
Slavespeicher ausführen,
um ein Ausweichen (switchover) von der Master-I/O-Control-Logikeinheit
auf die Slave-I/O-Control-Logikeinheit zu ermöglichen. Die simultanen Speicherschreiboperationen
stellen sicher, dass sich die Speicher in beiden I/O-Control-Logikeinheiten in
einem konsistenten Status befinden, damit das Ausweichen ohne Datenverlust
erfolgt.
-
Entsprechend
gibt es eine Notwendigkeit, eine Vorrichtung und ein Verfahren zu
entwickeln für den
Einsatz in einem Netzwerkspeichercontroller, welcher:
- (1) Redundanz bei verringerten Kosten für passive Komponenten bereitstellt,
- (2) die Menge an gespiegelten Daten, welcher über die
Platten oder Host-Anschlüsse übertragen werden,
reduziert,
- (3) die Verarbeitungsüberlast
reduziert, welche für die
Datenspiegelung benötigt
wird und
- (4) leicht austauschbare und aufrüstbare Komponenten bereitstellt.
-
Zusammenfassung der Erfindung
-
Diese
Aufgabe wird gelöst
durch einen Netzwerkspeicher-Vorrichtung für das Verbinden eines Host-Rechners
mit mindestens einer Speichervorrichtung gemäß Anspruch 1, ein Verfahren
für die Verzonung
eines Speichercontrollermoduls (CMM) zu einem Kanal-Schnittstellenmodul
(CIM) innerhalb einer Netzwerkspeicher-Vorrichtung gemäß Anspruch
10 und eine Vorrichtung, in welcher ein Kanal-Schnittstellenmodul
(CIM) mit einem besonderen Speichercontrollermodul (CMM) verbunden
wird, gemäß Anspruch
20, wobei die jeweils abhängigen
Ansprüche
vorteilhafte Weiterbildungen betreffen.
-
Gemäß der vorliegenden
Erfindung wird eine Vorrichtung und ein Verfahren bereitgestellt,
die die Verbindung eines Host-Rechners mit zumindest einer Speichervorrichtung
umfassen. Die Vorrichtung umfasst eine passive Rückwandplatine mit einer Anzahl
von Datenbussen, einschließlich
eines ersten Datenbusses und eines zweiten Datenbusses. Die Vorrichtung
umfasst mindestens zwei Kanalschnittstellenmodule, welche mit der
passiven Rückwandplatine,
dem Host-Rechner und den Speichervorrichtungen verbunden ist. Die
Kanalschnittstellenmodule sind betriebsbereit, um Speicherdaten
zu und von dem Host-Rechner
und den Speichervorrichtungen zu senden und zu empfangen, und die
Speicherdaten selektiv an die Datenbusse zu übertragen. Die Vorrichtung
umfasst ebenfalls mindestens zwei Speichercontrollermodule, welche
an die passive Rückwandplatine
angeschlossen sind und den Kanalschnittstellenmodulen über die
passive Rückwandplatine
kommunizieren, und welche die Speicherdaten speichern und verarbeiten,
welche zu und von den Kanalschnittstellenmodulen übertragen
werden.
-
Das
erste Kanalschnittstellenmodul weist einen ersten Geschalteten Pfad
(Switched Path) und eine zweiten Geschalteten Pfad auf, worin der
erste Geschaltete Pfad freigegeben ist, um den ersten Geschalteten
Pfad mit dem ersten Speichercontrollermodul unter Verwendung der
passiven Rückwandplatine
zu verbinden, und der zweite Geschaltete Pfad nicht freigegeben
ist, um mit dem zweiten Speichercontrollermodul verbunden zu werden.
Der zweite Geschaltete Pfad ist freigegeben und der erste Geschaltete
Pfad ist nicht freigegeben, wenn ein Ausfall des ersten Speichercontrollermoduls
mit Hilfe des zweiten Speichercontrollermoduls erkannt wird.
-
Die
Kanalschnittstellenmodule umfassen einen Kommunikationspfadanteil
und einen Kanalschnittstellenanteil. Der Kanalschnittstellenanteil
ist betriebsbereit, um die gespeicherten Daten zwischen dem Host-Rechner
und/oder den Speichervorrichtungen und dem Kommunikationspfadanteil
zu übertragen.
Der Kommunikationspfadanteil ist betriebsbereit, um die Daten selektiv
zwischen dem Kanalschnittstellenanteil und der passiven Rückwandplatine
zu übertragen.
In einem Ausführungsbeispiel
umfasst das erste Kanalschnittstellenmodul einen ersten Bus-Port
und einen zweiten Bus-Port, und das zweite Kanalschnittstellenmodul
umfasst einen dritten Bus-Port und einen vierten Bus-Port, wobei
jeder der Busanschlüsse
betriebsbereit ist, um den Kommunikationspfadanteil an die passive
Rückwandplatine
anzubinden.
-
Die
Speichercontrollermodule umfassen einen Busschnittstellenanteil,
welcher mit der passiven Rückwandplatine
verbunden ist, einen Speicher für das
temporäre
Speichern der Speicherdaten, und einen Verarbeitungsanteil, welcher
die Speicherdaten organisiert und ordnet. Der Busschnittstellenanteil umfasst
mindestens eine Rückwandplatinen-Schnittstelle,
welche mit der passiven Rückwandplatine
verbunden ist, eine Speicherschnittstelle, welche mit dem Speicher
verbunden ist, einen Verarbeitungsanteil, welcher mit dem Verarbeitungsanteil
verbunden ist, einen Bridge-Kern, welcher die Steuerlogik umfasst,
welche betriebsbereit ist um die Verarbeitung zur Schnittstelle,
Speicherschnittstelle und Rückwandplatinen-Schnittstelle zu
verbinden. Der Busschnittstellenanteil kann ebenfalls einen exklusiven OR(XOR)-Prozessor
umfassen, welcher XOR-Funktionen an den Datenblocks vornimmt. In
einem Ausführungsbeispiel
umfasst der Busschnittstellenanteil ebenfalls einen DMA-(Direct-Memory-Access-)Prozessor,
welcher eine DMA-Verbindung zur passiven Rückwandplatine bereitstellt.
In einem anderen Ausführungsbeispiel
umfasst das erste Speichercontrollermodul eine erste Busschnittstelle
und eine zweite Busschnittstelle, und das zweite Speichercontrollermodul
umfasst eine dritte Busschnittstelle und eine vierte Busschnittstel le,
wobei jede Busschnittstelle betriebsbereit ist um den Busschnittstellenanteil
mit der passiven Rückwandplatine
zu verbinden.
-
Die
passive Rückwandplatine
umfasst mindestens erste und zweite Datenbusse und in einem Ausführungsbeispiel
umfasst sie ebenfalls dritte und vierte Datenbusse. Die Datenbusse
auf der passiven Rückwandplatine
können
PCIX-(next generation Peripheral Component Interconnect)Busse sein.
In einem Ausführungsbeispiel
ist der erste Bus-Port mit dem ersten Datenbus verbunden und der
zweite Bus-Port ist mit dem dritten Datenbus verbunden. Der dritte
Bus-Port ist mit dem zweiten Datenbus und der vierte Bus-Port ist
mit dem vierten Datenbus verbunden. Die erste Busschnittstelle ist
mit dem ersten Datenbus verbunden und die zweite Busschnittstelle ist
mit dem zweiten Datenbus verbunden. Die dritte Busschnittstelle
ist mit dem dritten Datenbus und die vierte Busschnittstelle ist
mit dem vierten Datenbus verbunden.
-
Der
Kommunikationspfadanteil des ersten Kanalschnittstellenmoduls kann
einen ersten Geteilten Pfad (Shared Path), einen ersten Geschalteten Pfad
und einen zweiten Geschalteten Pfad aufweisen, und der Kommunikationspfadanteil
des zweiten Kanalschnittstellenmoduls kann einen zweiten Geteilten
Pfad, einen dritten Geschalteten Pfad und einen vierten Geschalteten
Pfad aufweisen. In diesem Ausführungsbeispiel
ist der erste Geteilte Pfad mit dem ersten Bus-Port und dem zweiten
Bus-Port verbunden. Der erste Geschaltete Pfad ist mit dem ersten
Bus-Port und dem Kanalschnittstellenanteil verbunden. Der zweite
Geschaltete Pfad ist mit dem zweiten Bus-Port und dem Kanalschnittstellenanteil verbunden.
Der zweite Geteilte Pfad ist mit dem dritten Bus-Port und dem vierten
Bus-Port verbunden. Der dritte Geschaltete Pfad ist mit dem dritten Bus-Port
und dem Kanalschnittstellenanteil verbunden. Der vierte Geschaltete
Pfad ist mit dem vierten Bus-Port und dem Kanalschnittstellenanteil
verbunden. Jeder Geschaltete Pfad ist betriebsbereit um die Kommunikation,
welche den Kanalschnittstellenanteil einbezieht, freizugeben oder
zu sperren. Ein Verfahren für
die Verzonung eines Speichercontrollermoduls in ein Kanalschnittstellenmodul
wird ebenfalls vorgesehen. Das Verfahren sieht das Bereitstellen
eines ersten Kanalschnittstellenmoduls vor, welches einen ersten
Geschalteten Pfad und einen zweiten Geschalteten Pfad aufweist.
Der erste Geschaltete Pfad ist mit einem ersten Speichercontrollermodul verbunden,
unter Verwendung einer passiven Rückwandplatine und der zweite
Geschaltete Pfad ist mit einem zweiten Speichercontrollermodul verbunden unter
Verwendung der passiven Rückwandplatine. Der
erste Geschaltete Pfad wird dann freigegeben, und der zweite Geschaltete
Pfad wird gesperrt. Das Verfahren sieht ebenfalls das Bereitstellen
eines zweiten Kanalschnittstellenmoduls vor, welches einen dritten
Geschalteten Pfad und einen vierten Geschalteten Pfad aufweist.
Der dritte Geschaltete Pfad wird mit dem ersten Speichercontrollermodul
verbunden, unter Verwendung der passiven Rückwandplatine und der vierte
Geschaltete Pfad wird mit dem zweiten Speichercontrollermodul verbunden
unter Verwendung der passiven Rückwandplatine.
Der vierte Geschaltete Pfad wird freigegeben, und der dritte Geschaltete
Pfad wird gesperrt. In einem Ausführungsbeispiel ist das erste
Speichercontrollermodul betriebsbereit, um den Ausfall des zweiten
Speichercontrollermoduls zu erfassen, und das zweite Speichercontrollermodul
ist betriebsbereit, um den Ausfall des ersten Speichercontrollermoduls
zu erfassen. Wenn das erste Speichercontrollermodul den Ausfall
des zweiten Speichercontrollermoduls erkennt wird die Verwendung
des zweiten Speichercontrollermoduls unterbrochen. Der dritte Geschaltete
Pfad wird freigegeben und der vierte Geschaltete Pfad wird gesperrt.
-
In
einem Ausführungsbeispiel
wird ein Ausfall erkannt, wenn das erste Speichercontrollermodul ein
Heartbeat-(Herzschlag-)Signal des zweiten Speichercontrollermoduls überwacht,
und eine Unregelmäßigkeit
des Heartbeat feststellt. Ein Ausfallsignal wird dann von dem ersten
Speichercontrollermodul an das zweite Speichercontrollermodul gesendet. Das
zweite Speichercontrollermodul empfängt das Ausfallsignal und unterbricht
den Betrieb. Ebenso überwacht
das zweite Speichercontrollermodul ein Heartbeat Signal des ersten
Speichercontrollennoduls, und beim Erkennen eines Ausfalls unterbricht es
den Betrieb des ersten Speichercontrollermoduls, gibt den zweiten
Geschalteten Pfad frei und sperrt den ersten Geschalteten Pfad.
-
In
einen anderen Ausführungsbeispiel
erkennt das erste Speichercontrollermodul den Ausfall des ersten
Kanalschnittstellenmoduls. Beim Erkennen des Ausfalls unterbricht
das erste Speichercontrollermodul das erste Kanalschnittstellenmodul
und gibt den dritten Geschalteten Pfad frei. Das erste Speichercontrollermodul
geht dann außer
Betrieb. Während
des Betriebs kann das erste Kanalschnittstellenmodul eine Laufzeitdiagnose
durchführen,
wobei deren Ergebnisse von dem ersten Speichercontrollermodul auf
Unregelmäßigkeiten über prüft werden.
Beim Erkennen eines Ausfalls sendet das erste Speichercontrollermodul
ein Ausfallsignal an das erste Kanalschnittstellenmodul und das
erste Kanalschnittstellenmodul empfängt das Ausfallsignal und unterbricht
seinen Betrieb.
-
Beschreibung der Zeichnungen
-
1 ist
eine Blockdiagrammdarstellung einer konventionellen Dual-Controller-Netzwerkspeicher-Bridge;
-
2 ist
eine Blockdiagrammdarstellung einer Netzwerkspeichervorrichtung
der vorliegenden Erfindung;
-
3 ist
eine Blockdiagrammdarstellung eines Speichercontrollermoduls der
vorliegenden Erfindung;
-
4 ist
eine Blockdiagrammdarstellung eines Kanalschnittstellenmoduls der
vorliegenden Erfindung;
-
5 ist
eine Blockdiagrammdarstellung einer redundanten Netzwerkspeicher-Bridge
der vorliegenden Erfindung;
-
6 ist
eine Blockdiagrammdarstellung einer redundanten Netzwerkspeicher-Bridge,
welche ein ausgefallenes Speichercontrollermodul zeigt;
-
7 ist
eine Blockdiagrammdarstellung einer redundanten Netzwerkspeicher-Bridge,
welche ein ausgefallenes Kanalschnittstellenmodul zeigt;
-
8 ist
eine Blockdiagrammdarstellung einer redundanten Netzwerkspeicher-Bridge,
welche vier Kanalschnittstellenmodule zeigt;
-
9 ist
eine Blockdiagrammdarstellung einer Netzwerkspeicher-Bridge, welche
einen 2GB-Fiber-Channel Verbindungskanal verwendet;
-
10 ist
eine Blockdiagrammdarstellung einer Netzwerkspeicher-Bridge, welche
einen Ultra 320 SCSI-Kanal verwendet;
-
11 ist
eine Blockdiagrammdarstellung einer Netzwerkspeicher-Bridge, welche
einen Gigabit-Ethernet-Kanal verwendet;
-
Detaillierte Beschreibung
-
Mit
Bezug auf 2 wird ein Blockdiagramm der
Netzwerk-Bridge 100 der vorliegenden Erfindung gezeigt.
Die Netzwerk-Bridge 100 umfasst eine oder mehrere Speichercontrollermodule
CMMs (Controller Memory Modules). Im Ausführungsbeispiel welches in 2 gezeigt
wird gibt es zwei CMMs, CMM-A 104, und CMM-B 108,
obwohl ein einziger CMM verwendet werden kann, für Anwendungen in welchen keine
Redundanz erforderlich ist, und zusätzliche CMMs werden in Anwendungen
verwendet, welche eine zusätzliche
Redundanz oder eine höhere
Performance erfordern. Jeder CMM 104, 108 weist
zwei Rückwandplatinen-Schnittstellen 112 auf.
Das System weist eine passive Bus-Rückwandplatine 116 auf,
welche zwei Busse für
jeden CMM aufweist. In dem gezeigten Ausführungsbeispiel verwendet die Bus-Rückwandplatine 116 PCIX
Busse (Peripheral Component Interconnect), wobei es ersichtlich
ist, dass jede Bustechnologie verwendet werden kann, einschließlich Switched-Architekturen
wie beispielsweise Infiniband oder RapidIO wie auch übliche Busarchitekturen
wie beispielsweise PCI Local Bus. Die passive Bus-Rückwandplatine 116 kann
einem ersten Datenbus 120, einem zweiten Datenbus 124, einem
dritten Datenbus 128, und einem vierten Datenbus 132 aufweisen.
Der erste Datenbus 120 und zweite Datenbus 124 werden
mit den Rückwandplatinen-Schnittstellen 112 auf
CMM-A 104 über CMM-Busverbindungen 134 angebunden,
und der dritte Datenbus 128 und vierte Datenbus 132 werden mit
den Rückwandplatinen-Schnittstellen 112 auf CMM-B 108 über CMM-Busverbindungen 134 angebunden.
-
In
dem in 2 gezeigten Ausführungsbeispiel werden PCIX-Busse
für die
passive Rückwandplatine 116 verwendet.
Das Verwenden von PCIX-Bussen ermöglicht die Verbindung von verhältnismäßig hochleistungsfähigen Busverbindungskomponenten
an die passive Rückwandplatine 116 mit
einem gutbekannten und verhältnismäßig einfachen
Bus protokoll. Die PCIX-Technik ist eine Technik der nächsten Generation,
welche den üblichen PCI-Bus
wirksam einsetzt. Die PCIX-Technik ermöglicht Systeme und Vorrichtungen,
welche bei Busfrequenzen von bis zu 133 Mhz arbeiten, unter Verwendung
einer 64-Bit oder 32-Bit-Busbandbreite und bei einer Bandbreite
von bis zu 1 066 Mb/s mit 64-Bit, 133 Mhz PCIX-Bus. Der PCIX-Bus
verwendet ein Register zu Registerprotokoll, welches die Taktzwänge im Zusammenhang
mit der hohen Frequenz üblicher PCI-Busse
erleichtert, und eine höhere
Frequenz für den
Betrieb des PCIX-Busses ermöglicht.
Zusätzlich zu
der Fähigkeit
die Busfrequenz zu erhöhen,
umfasst der PCIX-Bus mehrere Techniken, welche die Buseffizienz
verbessern, einschließlich
Attribute Phase, Split-Transaction-Unterstützung, optimierte Wait-States
und Standartblockgrößenbewegungen.
-
Attribute
Phase verwendet ein 36-Bit-Attributenfeld, welches die Bustransaktionen
detaillierter beschreibt als es die PCI-Spezifikation erlaubt. Sie folgt
gleich nach der Adressphase und umfasst mehrere Bit Zuordnungen,
welche Informationen über
die Größe der Transaktion,
Anordnung der Transaktionen, Cache-Snooping-Erfordernissen, und
der Identität
des Transaktionsinitiators. Mit einer Split-Transaction, wie sie
von PCIX unterstützt
wird, sendet die Vorrichtung, welche die Daten anfordert ein Signal
an das Ziel. Die Zielvorrichtung informiert den Anforderer, das
es die Anforderung akzeptiert hat. Der Anforderer kann weitere Informationen
bearbeiten, bis die Zielvorrichtung eine neue Transaktion auslöst und die
Daten an den Anforderer zuschickt. Dadurch ermöglichen die Split-Transactions
eine effizientere Nutzung des Busses. Die Wait-States werden durch den
PCIX optimiert, wodurch die Verwendung der Wait-States ausgeschlossen
wird, die von üblichen PCIX-Busprotokollen verwendet
werden, mit Ausnahme der Initial-Target Latency. Wenn eine PCIX Vorrichtung
keine zu übertragende
Daten hat, entfernt sie sich vom Bus, so dass eine andere Vorrichtung
die Busbandbreite nutzen kann. Dies ermöglicht eine effizientere Busnutzung
des Busses und der Speicherressourcen. Mit Standartblockgrößenbewegungen
dürfen
Adapter und Bridges (Host zu PCIX und PCIX zu PCIX) Transaktionen
nur an natürlich angeordneten
128-Bite-Grenzen unterbrechen. Dies ermöglicht längere Signalfolgen und eine
effizientere Nutzung von Cache-Line basierenden Ressourcen, wie
beispielsweise des Prozessorbusses und Hauptspeichers. Es ermöglicht ebenfalls
eine gebündeltere Architektur
innerhalb der PCIX Vorrichtungen.
-
Die
Netzwerk-Bridge 100 weist eine oder mehrer CIMs (Channel
Interface Modules) auf. In dem in 2 gezeigten
Ausführungsbeispiel
gibt es zwei CIMs, CIM-1 136 und CIM-2 140, wobei
es sich versteht, dass die Anzahl variieren kann, abhängig von
der Konfiguration und der Anwendung in welcher die Netzwerk-Bridge 100 verwendet
wird. Jedes CIM 136, 140 weist zwei CIM-Busschnittstellen-Port 144a, 144b auf.
Auf jeden CIM 136, 140 ist ein CIM Busschnittstellen-Port 144a mit
einem Bus verbunden, welcher mit dem CMM-A 104 verbunden
ist, und ein CIM-Busschnittstellen-Port 144b ist mit einem Bus
verbunden, welcher mit dem CMM-B 108 über die CIM Busverbindungen 146 angeschlossen
ist. In dem in 2 gezeigten Ausführungsbeispiel
ist das CIM-1 136 mit dem ersten Datenbus 120 und
dem dritten Datenbus 128 verbunden, und das CIM-2 140 ist
mit dem zweiten Datenbus 124 und dem vierten Datenbus 132 verbunden.
Beide CIM 136, 140 weisen einen Host-Port 148 auf,
welcher mit einem Host-Kanal 152 verbunden ist, welcher
an einen Host-Rechner (nicht gezeigt) angeschlossen ist. Die beiden
CIMs 136, 140 weisen ebenfalls einen Platt-Port 156 auf,
welcher an einen Platten-Kanal 158 angeschlossen ist, welcher
an eine oder mehrere Speichervorrichtungen (nicht gezeigt) angeschlossen
ist. In alternativen Ausführungsbeispielen,
wie nachfolgend detailliert beschrieben, kann ein CIM nur Host-Ports
oder nur Platten-Ports umfassen, abhängig von der Anwendung und
den erforderten Kanalschnittstellen.
-
Wenn
der Host-Rechner Daten sendet, werden sie über den Host-Kanal 152 übertragen
und an dem Host-Port 148 auf den CIMs 136, 140 empfangen.
Diese Daten werden an die CMMs 104, 108 über die
passive Rückwandplatine 116 gesendet.
Die CMMs 104, 108 enthalten Speicher- und Verarbeitungseinheiten,
die nachfolgend detailliert beschrieben werden, welche die Daten
in eine geeignete Form zum abspeichern in den Speichervorrichtungen anordnen.
Wenn zum Beispiel das System ein RAID 5 Disk Array System
verwendet, ordnen die CMMs 104, 108 die Daten
in geeignete Daten-Stripes, welche auf die Platten geschrieben werden
sollen, und berechnen einen Paritätsblock für die Daten-Stripes. Dadurch
verarbeiten die CMMs 104, 108 die Daten und formatieren
sie zum speichern. Sobald das erfolgt ist, übertragen die CMMs 104, 108 die
für das Speichern
bereitgestellten Daten an die CIMs 136, 140 über die
passive Rückwandplatine 116.
Die CIMs 136, 140 senden dann die Daten an die
Speichervorrichtungen, welche an dem Plattenport 156 angeschlossen
sind. Wie nachfolgend detailliert beschrieben, können die Daten zwischen den
CMMs 104, 108 unter Verwendung der CIMs 136, 140 und
der passiven Rückwandplatine 116 übertragen
werden. Zusätzlich
können
wie nachfolgend erörtert,
die CMMs 104, 108 und CIMs 136, 140 für bestimmte
Laufwerke oder Hosts verzont werden.
-
Diese
Konfiguration ermöglicht
eine modulare und redundante Architektur, in welcher der Host-Kanal 152 und
der Platten-Kanal 158 nicht notwendigerweise demselben
Kanalmedium angehören.
Die Modularität
der CMMs 104, 108 und CIMs 136, 140 ermöglicht Aufrüstungen
zu relativ niedrigen Kosten und ein leichtes Austauschen der ausgefallenen
Einheiten. Das Verwenden einer passiven Rückwandplatine 116 um
die Daten zwischen den CMMs 104, 108 auszutauschen,
vermeidet das Verwenden der Kanalbandbreite des Platten-Kanals 158 oder
des Host-Kanals 152, wie es bei einer Datenspiegelung in
einer herkömmlichen
redundanten Controllerumgebung nötig
ist, wie nachfolgend erörtert.
-
Mit
Bezug auf die 3 wird eine Blockdiagrammdarstellung
eines CMM 104 gezeigt. Das CMM 104 umfasst mehrere
Komponenten, einschließlich
eines CPU-Subsystems 160, eines Speichers 164,
und einer Schnittstelle FPGA 168. Das CPU-Subsystem 160 kann
eine Standarttyp CPU sein, wie beispielsweise ein weitverbreiteter
Mikroprozessor, oder es kann ein anwendungsspezifischer Prozessor
sein. In einem Ausführungsbeispiel
ist das CPU-Subsystem 160 ein
Intel PentiumTM Mikroprozessor. Das CPU-Subsystem 160 kommuniziert
mit der Schnittstelle FPGA 168 einen Standartbus verwendet,
wie beispielsweise einen PCI-Bus. Der Speicher 164 ermöglicht eine
temporäre
Speicherung der Daten innerhalb der CMM 104. Diese Speicherung wird
während
normaler Lese- und Schreibvorgänge für verschiedene
Zwecke genutzt, wie beispielsweise speichernd von sogenannten „Queued
Data", welche darauf
warten auf das Platten Array geschrieben zu werden. In einem Ausführungsbeispiel
wird ein DDR-Speicher-DIMM verwendet, welche mit der Schnittstelle
FPGA 168 kommuniziert, eine Busschnittstelle verwendend.
-
Die
Schnittstelle FPGA 168 umfasst eine Anzahl von Komponenten.
Es versteht sich, dass diese Komponenten in eine einzige FPGA kombiniert
werden können,
oder auf mehreren Komponenten innerhalb der CMM 104 angeordnet
sein können.
In einem in 3 gezeigten Ausführungsbeispiel
umfasst die Schnittstelle FPGA 168 eine PCI-Schnittstelle 172, eine
Speicherschnittstelle 176, einen XOR-Prozessor 180,
einen Bridge-Kern 184, einen DMA-Prozessor 188,
Daten FIFOs 192, und zwei Rückwandplatine Schnittstellen 112.
Die PCI-Schnittstelle 172 agiert wie eine Schnittstelle
zwischen dem CPU-Subsystem 160 und den anderen Bereichen
der Schnittstelle FPGA 168. In dem gezeigten Ausführungsbeispiel
verwendet diese Schnittstelle eine Standart-PCI-Busverbindung. Die
PCI-Schnittstelle 172 verbindet einen Bridge-Kern 184,
welcher seinerseits an die Rückwandplatinen-Schnittstelle 112 angeschlossen
ist, wobei die Schnittstelle den ersten Datenbus 120 und
zweiten Datenbus 124 auf der passiven Rückwandplatine 116 miteinander
verbindet.
-
Die
Speicherschnittstelle 176 agiert wie eine Schnittstelle
zwischen dem Speicher 164 und der Schnittstelle FPGA 168.
Der XOR-Prozessor 180 dient dazu, XOR-Transaktionen an
den zu speichernden Daten auszuführen,
um Paritätsinformationen über die
zu schreibenden Daten zu erhalten. Der XOR-Prozessor 180 wird
ebenfalls in solchen Fällen genutzt,
wo die Verwendung der Paritätsinformationen
dazu benötigt
wird, um Daten aus einem ausgefallenen Laufwerk in einem Platten-Array
wiederherzustellen. Der XOR-Prozessor 180 verbindet das CPU-Subsystem 160 über die
PCI-Schnittstelle 172. Die Daten-FIFOs 192 verbinden
die Speicherschnittstelle 176 und den Bridge-Kern 184,
und sind ihrerseits an der Rückwandplatinen-Schnittstelle 112 angeschlossen.
Die Daten-FIFOs dienen als eine Warteschlange, welche vom CMM 104 verwendet
werden, um die Lese- und Schreibvorgänge zu verwalten. Der DMA-Prozessor 188 dient
dazu um die DMA-Daten bereitzustellen und zu empfangen, von einem
anderen DMM, wenn die CMMs betriebsbereit sind, um Redundanz zu
bieten, wie nachfolgend detailliert erörtert.
-
Mit
Bezug auf 4 wird eine Blockdiagrammdarstellung
eines CIM 136 gezeigt. Das CIM 136 umfasst einen
PCIX FPGA 200 und eine Kanal-Schnittstelle 204.
Der Geschaltete/Geteilte (Switched/Shared) PCIX FPGA 200 umfasst
einen ersten Geschalteten (Switched) PCIX Path 208 und
einen zweiten Geschalteten PCIX Path 212, und einen Geteilten
(Shared) PCIX Path 216. Jeder Geschaltete PCIX Path 208, 212 ist
mit einem Busschnittstellen Port 144 verbunden, welcher
seinerseits an einen PCIX Bus auf der passiven Rückwandplatine 116 über eine
CIM Busverbindung 146 angeschlossen ist. Jeder Geschaltete
PCIX Path 208, 212 hat ebenfalls einen freigegebenen
Eingang 214. Der freigegebene Eingang 214 wird
dafür verwendet,
die Switched PCIX Path 208, 212 freizugeben oder
zu sperren. Der Geteilte PCIX Path 216 umfasst einen Bridge-Kern 220,
welcher entscheidet, welche Daten über den Geteilten Pfad 216 geroutet
werden, und übergibt
diese Daten über
den Geteilten Pfad 216 zur anderen CIM-Busverbindung 146.
Des gleichen umfasst jeder Geschaltete PCIX Path 208, 212 ebenfalls einen
Bridge-Kern 224, welcher entscheidet, welche Daten über den
Geschalteten Pfad 208, 212 geroutet werden, und überträgt diese
Daten über
die Kanalschnittstelle 204.
-
Die
Kanalschnittstelle 204 verbindet den Geschalteten/Geteilten
PCIX FPGA 200 mit dem Host-Kanal 152 und dem Platten-Kanal 158.
Die Kanalschnittstelle umfasst ein Steuerregister 228,
einen Adressensteuerungsteil 232, eine PCIX-Schnittstelle 236,
einen Host-Port 148, und einen Platten-Port 156.
Die Steuerregister 228 werden dafür verwendet, die Kommunikation über den
Host-Kanal 152 oder Platten-Kanal 158 zu steuern.
Der Adressensteuerungsbereich 232 wird dafür verwendet,
die Daten an die richtigen Adressen, entweder des Host-Rechners oder
der Speichervorrichtungen zu leiten. Die PCIX-Schnittstelle 236 funktioniert
um die Daten von dem Geschalteten/Geteilten PCIX FPGA 200 zu übermitteln,
und die Daten an den Host-Port 148 und den Platten-Port 156 zu übertragen.
Die PCIX-Schnittstelle 236 ermöglicht die
Kommunikation über
das geeignete Kanalmedium für
die Anwendung. Beispielsweise wenn der Host-Kanal 152 und der
Platten-Kanal 158 Fiber Channel verwenden, arbeitet die
PCIX Schnittstelle 236 als Schnittstelle zwischen dem Geschalteten/Geteilten
PCIX FPGA 200 und dem Fiber Channel. Desgleichen, wenn
der Host-Kanal 152 und
der Platten-Kanal 158 einen SCSI-Kanal verwenden, agiert
die PCIX-Schnittstelle 236 als
Schnittstelle zwischen dem Geschalteten/Geteilten PCIX FPGA 200 und
dem SCSI-Kanal. Wenn sowohl der Host-Kanal 152 als auch
der Platten-Kanal 158 dasselbe Kanalmedium verwenden, kann
das CIM 136 identische Host-Ports 148 und Platten-Ports 156 für die Kommunikation
mit sowohl dem Host-Kanal 152 als auch dem Platten-Kanal 158 verwenden.
-
In
einem Ausführungsbeispiel
verwenden der Platten-Kanal 158 und der Host-Kanal 152 nicht das
gleiche Kanalmedium. In diesem Ausführungsbeispiel wird je ein
unterschiedliches CIM für
jedes unterschiedliche Kanalmedium verwendet. Beispielsweise wenn
der Host-Rechner Fiber-Channel verwendet, und das Platten-Array
einen SCSI-Kanal verwenden, wird der Host-Rechner mit einem CIM unter
Verwendung einer Fiber Channel Schnittstelle verbunden, und das
Platten-Array wird über
ein anderes CIM unter Verwen dung einer SCSI-Kanal-Schnittstelle
verbunden. Wenn eine Redundanz benötigt wird, können zwei
oder mehrere CIMs mit jedem Kanalmedium verbunden werden.
-
In
dem in 4 gezeigten Ausführungsbeispiel kommuniziert
der erste Geschaltete PCIX Path 208 mit dem ersten Datenbus 120 und
ein zweiter Geschlateter PCIX Path 212 kommuniziert mit
dem dritten Datenbus 128 über den Busschnittstellen-Port 144 und
CIM-Busverbindung 146.
Der Geteilte PCIX Path 216 kann als Kommunikationspfad
für ein
CMM verwendet werden, um mit einem anderen CMM zu kommunizieren,
wie nachfolgend detailliert beschrieben. Es versteht sich, dass
eine ähnliche
Konfiguration verwendet wird, um die übriggebliebenen CIMs, die auf
der Netzwerk-Bridge vorhanden sind verwendet wird. Beispielsweise
im Ausführungsbeispiel,
das in 2 gezeigt wird, wird das CIM-2 140 mit
dem zweiten Datenbus 124 und dem vierten Datenbus 132 verbunden,
und dadurch hat der Geschaltete/Geteilte PCIX FPGA 200,
im CIM-2 140 enthalten, Geschaltete PCIX Paths 208, 212,
welche mit dem zweiten Datenbus 124 und vierten Datenbus 132 entsprechend
kommunizieren. Desgleichen, wenn mehr als zwei CIMs vorhanden sind,
werden diese so konfiguriert, um mit den geeigneten Bussen auf der
passiven Rückwandplatine 116 zu
kommunizieren, wie es die Anwendung erfordert.
-
Wieder
mit Bezug auf die 2–4 wird der
Freigabe-Eingang 214 dazu verwendet, einen CIM 136, 140 auf
ein bestimmtes CMM 104, 108 zu Verzonen. In solch
einem Fall hat ein CMM 104 oder 108 den exklusiven
Besitz für
ein CIM 136 oder 140 durch Freigabe des Zugangs
zu dem CIM 136 oder 140 von dem Bussegment, mit
dem das CMM 104 oder 108 verbunden ist. In einem
Ausführungsbeispiel
wird beispielsweise das CMM-A 104 auf CIM-1 136 verzont
und CMM-B 108 wird auf CIM-2 140 verzont. Dadurch
hat CMM-A 104 den exklusiven Besitz am CIM-1 136,
und CMM-B 108 hat den exklusiven Besitz am CIM-2 140.
Diese Verzonung wird durch die Aktivierung des Freigabe-Eingangs 214 in
dem ersten Switched PCIX Path 208 im CIM-1 136 erreicht,
und durch das Sperren des Freigabe-Eingangs 214 im zweiten
Geschalteten PCIX Path 212 im CIM-1 136. Das führt dazu,
dass nur der erste Geschaltete PCIX Path 208 mit der Kanal-Schnittstelle 204 kommuniziert.
Wie oben erwähnt
kommuniziert im CIM-1 136 der erste Geschaltete PCIX Path 208 mit
dem ersten Datenbus, und dadurch wird das CMM-A 104 auf
CIM-1 136 verzont. Desgleichen wird für die Verzonung des CIM-2 140 auf
CMM-B 108 der Freigabe-Eingang 214 im zweiten
Geschalteten Pfad 212 aktiviert und der Freigabe-Eingang
auf dem ersten PCIX Path 208 wird nicht aktiviert. Dies
führt dazu,
dass nur der zweite Geschaltete PCIX Path 212 in CIM-2 140 mit
der Kanal-Schnittstelle 204 kommuniziert, und dadurch wird
CMM-B 108 auf CIM-2 140 verzont. Durch Zulassung,
dass nur ein CMM 104 oder 108 ein CIM 136 oder 140 steuert,
wird die Kanalsteuerung, das Mapping und das Management vereinfacht.
Die Verzonung ist insbesondere dann nützlich, wenn zwei oder mehrere
Host-Kanäle oder Platten-Kanäle vorhanden
sind. Beispielsweise, wenn zwei Host-Kanäle und zwei Platten-Kanäle vorhanden
sind, kann das CMM-A 104 zu einem ersten Host-Kanal und
dem ersten Platten-Kanal verzont werden, und das CMM-B 108 kann
zum zweiten Host-Kanal und dem zweiten Platten-Kanal verzont werden.
Dadurch wird CMM-A 104 Daten von dem ersten Host-Kanal über CIM-1 136 senden
und empfangen, und CMM-B 108 wird Daten von dem zweiten Host-Kanal über CIM-2 140 senden
und empfangen. Das Verwenden der Verzonung in den CMMs vereinfacht
die Steuerung in einer aktiven Anwendung, weil die CMMs keine Kohärenzüberprüfung durchführen müssen. Eine
Kohärenzüberprüfung ist
erforderlich, wenn keine Verzonung implementiert wird, weil beide CMMs
denselben Kanal beanspruchen würden.
In solch einem Fall, muss vor der Durchführung irgendeiner Funktion
die Daten betreffend, wie beispielsweise eine Lese- oder Schreibfunktion
ein CMM überprüfen, dass
der andere CMM keine Funktion an den Daten vornimmt. Diese Kohärenzüberprüfung kann
kompliziert zu implementieren sein, und kann die Performance verschlechtern,
wegen des zusätzlichen
Overheads, das jedes CMM durchführen
muss.
-
Mit
Bezug auf 5 wird eine Blockdiagrammdarstellung
einer Netzwerk-Bridge 100a gezeigt, die redundante Komponenten
aufweist. In diesem Ausführungsbeispiel
werden zwei CMMs verwendet, CMM-A 104 und CMM-B 108.
Es werden zwei CIMs verwendet, CIM-1 136 und CIM-2 140. CMM-A 104 und
CIM-1 136 werden beide mit dem ersten Datenbus 120 auf
der passiven Rückwandplatine 116 angeschlossen.
CMM-A 104 und CIM-2 140 werden beide mit dem zweiten
Datenbus 124 auf der passiven Rückwandplatine 116 verbunden.
CMM-B 108 und CIM-1 136 werden beide mit dem dritten
Datenbus 128 auf der passiven Rückwandplatine 116 verbunden.
CMM-B 108 und CIM-2 140 werden beide mit dem vierten
Datenbus 132 auf der passiven Rückwandplatine 116 verbunden.
-
Wie
es für
einen Fachmann ersichtlich ist erfordern redundante Controller eine
Datenspiegelung zwischen den zwei Controller, die an dem Speicher-Subsystem
angeschlossen sind. Dies ist so wegen der Verwendung eines sogenannten White-Back-Cache,
wobei der Controller Daten von dem Host-Rechner erhält, die
Daten puffert und eine Meldung an den Host-Rechner schickt, dass die Daten geschrieben
worden sind. Dadurch erkennt der Rechner, dass die Daten geschrieben
worden sind, wenn sie tatsächlich
im Controller gespeichert worden sind und hier darauf warten in
den Platten-Array geschrieben zu werden. Um sicherzustellen, dass
die Daten bei einem Ausfall nicht verloren gehen, spiegeln redundante
Controller diese Daten zum anderen Controller, wodurch sie eine
andere Kopie der Daten auf dem Controller aufweisen. Dies ist als
Pufferkohärenz
bekannt (Cache Coherency). In einem Ausführungsbeispiel spiegeln die
CMMs 104, 108 die Daten, um für die Netzwerk-Bridge 100a eine
Pufferkohärenz
zu bieten. Dies kann durch die Umsetzung eines DMA-Pfades zwischen CMM-A 104 und
CMM-B 108 erfolgen. Dies kann dadurch erreicht werden, durch
die Bereitstellung eines DMA-Prozessors 188 in der Schnittstelle
FPGA 168, wie oben mit Bezug auf 3 erörtert, und
einem Geteilten Pfad 216, welcher in dem Geschalteten/Geteilten
Pfad FPGA 200 angeordnet ist, wie oben mit Bezug auf 4 erörtert wurde.
Jedes CMM 104, 108 verwendet diesen DMA-Pfad zum
senden und empfangen von Daten von dem anderen CMM. Durch die Verwendung
des DMA-Pfads können
die beiden CMMs 104, 108 Daten spiegeln, ohne
die Verwendung des Host-Kanals 152, oder des Platten-Kanals 158 zu
benötigen,
wodurch keine Bandbreite im Platten-Kanal 158 oder Host-Kanal 152 durch
die CMMs 104, 108 für Datenspiegelung zu verbrauchen.
Zusätzlich
werden durch die Verwendung eines DMA-Pfads zwischen zwei CMMs 104, 108 weniger
Prozessressourcen von den CMMs 104, 108 benötigt, um
das Spiegeln auszuführen,
als beim Spiegeln unter Verwendung des Host-Kanals 152 oder
des Platten-Kanals 158.
-
Außerdem ist
eine Failover Reset Link 240 (Ausfallrücksetzverbindung) zwischen
CMM-A 104 und CMM-B 108 vorhanden. Die Ausfallrücksetzverbindung 240 wird
für die
Mitteilung eines Ausfalls eines der CMMs 104, 108 verwendet.
In einen Ausführungsbeispiel
ist die Ausfallrücksetzverbindung 240 eine
serielle Verbindung zwischen CMM-A 104 und CMM-B 108.
In diesem Ausführungsbeispiel
hält jeder
CMM 104, 108 ein Herzschlagssignal bei, welches über die
Ausfallrücksetzverbindung 240 übertragen
wird, und von dem anderen CMM überwacht wird.
Wenn ein Problem im Herzschlagsignal erkannt wird, kann ein CMM 104, 108 ein
Signal über
die Ausfallrücksetzverbindung
senden, um den Betrieb des anderen CMM zu beenden. Beispielsweise
wenn der CMM-B 108 einen Ausfall aufweist, erkennt das CMM-A 104,
dass das Herzschlagssignal vom CMM-B 108 nicht mehr aktiv
ist. Nach einer vorgegebenen Zeitspanne, in welcher kein Herzschlagssignal empfangen
wird, sendet das CMM-A 104 ein Abbruchsignal an das CMM-B 108.
Sobald das CMM-B 108 das Abbruchsignal empfängt, beendet
es den Betrieb. Das CMM-A übernimmt
die Steuerung sämtlicher
Lese- und Schreibvorgänge.
Desgleichen, wenn das CMM-A 104 ausfällt würde das CMM-B 108 den
Hinweis über
die Ausfallrücksetzverbindung 240 empfangen,
und die Steuerung sämtlicher
Lese- und Schreibvorgänge übernehmen.
Dadurch ist das System redundant und setzt den Betrieb fort, wenn ein
CMM 104 oder 108 ausfällt.
-
Mit
Bezug auf 6 wird der Betrieb des Systems
beim Ausfall eines CMMs nachfolgend beschrieben. Wie in 6 gezeigt
weist die Netzwerk-Bridge 100a ein CMM-A 104 und
CMM-B 108, eine passive PCIX Rückwandplatine 116,
und ein CIM-1 136 und ein CIM-2 140 auf. Wenn
CMM-A 104 ausfällt,
erkennt CMM-B 108 den Ausfall über die Ausfallrücksetzverbindung 240,
wie oben beschrieben, und beendet den Betrieb auf CMM-A 104. CMM-B 108 übernimmt
die Steuerung für
den gesamten Speicher und die Steuerung der Transaktionen, die bisher
von CMM-A 104 geleitet wurden. Sobald das geschieht sendet
CMM-B 108 einen Befehl an CIM-1 136 und CIM-2 140,
um lediglich die Kommunikation mit CMM-B 108 freizugeben.
In diesem Fall würde
CIM-1 136 den Befehl erhalten, und den ersten Geschalteten
Pfad 208, der an dem ersten Datenbus 120 angeschlossen
ist sperren, und den zweiten Geschalteten Pfad 212 freigeben,
der an den dritten Datenbus 128 angeschlossen ist, wodurch CMM-B 108 an
den Host-Port 148 und Platten-Port 156 auf CIM-1 136 angeschlossen
wird. CIM-2 140 empfangt außerdem den Befehl von CMM-B 108, und
führt dieselbe
Funktion aus, um den ersten Geschalteten Pfad 208 zu sperren,
der am zweiten Datenbus 124 angeschlossen ist, und gibt
den zweiten Geschalteten Pfad 212 frei, der an dem vierten
Datenbus 132 angeschlossen ist. In einem Ausführungsbeispiel
umfasst die passive Rückwandplatine 116 logische
Steuerverbindungen, welche mit den Freigabe-Eingängen 214 auf
den CIMs 136, 140 verbunden sind, und mit den
CMMs 104, 108 verbunden sind. Die CMMs 104, 108 können diese
logischen Steuerverbindungen verwenden, um die Geschalteten Pfade 208, 212 und
die CIMs 136, 140 freizugeben oder zu sperren.
Alternativ können
andere Ausführungsbeispiele
verwendet werden, um die Geschalteten Pfades 208, 212 freizugeben
oder zu sperren, wie beispielsweise eine Steuerlogik innerhalb des
CIM, welches die Steuerinformationen über die PCIX, Busse auf der
passiven Rückwandplatine 116 beispielsweise
erhält.
-
Mit
Bezug auf 7 wird der Betrieb des Systems
beschrieben, wenn ein CIM ausfällt.
Die CMMs 104, 108 führen periodisch eine Ablaufdiagnose
durch, welche überprüft, ob sämtliche
Komponenten innerhalb des CIM 136, 140 richtig
funktionieren. Die Ergebnisse dieser Ablaufdiagnose werden den CMMs 104, 108 über die
logischen Steuerverbindungen übermittelt.
Das CMM 104, 108, welches auf ein CIM 136, 140 verzont
ist, überwacht
diese Ablaufdiagnose, und in dem Fall eines Fehlers oder Ausfalls, übermittelt
es einen Befehl über
die logische Steuerlinie und den Betrieb dieses CIM 136 oder 140 zu
beenden. Wie in 7 dargestellt ist CIM-1 136 ausgefallen.
CMM-A 104 erkennt das CIM-1 136 ausgefallen ist,
und sperrt CIM-1 136. CMM-A 104 übermittelt diese
Information an CMM-B 108 über den Geteilten Pfad 216 auf
CIM-2 140. CMM-B 108 empfängt diese Information und übernimmt
die Steuerung der gesamten Kommunikation zwischen dem Host-Port 148 und
Platten-Port 156 auf CIM-2 140. CMM-A 104 verbleibt
in einem passiven Zustand bis CIM-1 136 ausgetauscht wurde,
oder der Ausfall beseitigt wurde.
-
Mit
Bezug auf 8 wird ein Blockdiagramm einer
Netzwerk-Bridge 100b gezeigt, in welchem vier CIM Module
vorhanden sind. In diesem Ausführungsbeispiel
kommunizieren zwei CMMs, CMM-A 104 und CMM-B 108 mit
vier CIMs, CIM-1 136, CIM-2 140, CIM-3 300 und
CIM-4 304. In diesem Ausführungsbeispiel sind die CMM-A
Geschaltete Pfades 208 auf CIM-1 136 und CIM-2 140 freigegeben.
Desgleichen sind in CIM-3 300 und CIM-4 304, die CMM-B
Geschalteten Pfades 212 freigegeben. Daher bieten CIM-1 136 und
CIM-2 140 die Schnittstelle zwischen CMM-A 104 und
dem Host-Port 148 und der Platten-Port 156 und
CIM-3 300 und CIM-4 304 bieten eine Schnittstelle
zwischen CMM-B 108 und dem Host-Port 148 und Platten-Port 156.
Eine Netzwerk-Bridge dieses Ausführungsbeispiels
ist für
mehrere Fälle
nützlich,
beispielsweise wenn mehrere Hosts vorhanden sind. In diesem Ausführungsbeispiel
ermöglichen
CIM-1 136 und CIM-2 140 die Kommunikation zu einem
ersten Host, und CIM-3 300 und CIM-4 304 ermöglichen
die Kommunikation zu einem zweiten Host. Dieselbe Anordnung kann
für mehrere
Platten-Knoten erfolgen, beispielsweise zwei separate RAID-Arrays.
Es versteht sich, dass diese Konfiguration ein ska lierbares System
bietet, welche die Kommunikation zwischen einem oder mehreren Host-Knoten und einem
oder mehreren Platten-Knoten bietet, wobei ebenfalls ein redundanter
Betrieb ermöglicht
wird. Zusätzlich
kann solch ein Ausführungsbeispiel
nützlich
sein für
die Verbindung von Hosts und/oder Platten-Arrays, welche unterschiedliche
Kanalmedien verwenden. Ein existierendes System kann beispielsweise
zwei CIMs aufweisen und Fiber Channel-Verbindungen sowohl für den Host
als auch für
die Platten-Kanäle
verwenden. Wenn ein Anwender das System aufrüsten möchte, um zusätzlich ein
weiteres Disk-Array hinzuzufügen, welches
eine SCSI-Verbindung verwendet, könnten zusätzliche CIMs hinzugefügt werden,
welche die Kommunikation mit einem SCSI-Kanal ermöglichen, wodurch
das Aufrüsten
eines existierenden Systems ermöglicht
wird, ohne die existierende Hardware zu ersetzen.
-
Mit
Bezug auf die 9–11, werden mehrere
alternative Ausführungsbeispiele
für einen CIM
gezeigt, um ein Beispiel unterschiedlicher Konfigurationen eines
CIM zu bieten, und die unterschiedlichen Kanalmedien, mit denen
ein CIM verbunden werden kann. 9 zeigt
eine Blockdiagrammdarstellung eines von PCIX auf Gigabit Interconnect (GBIC)
konfigurierten CIM 136a. Innerhalb des CIM 136a,
ist das Geschaltete/Geteilte PCIX FPGA 200 mit einer Dual-Port
2Gb-Fiber-Channel-Schnittstelle 400 verbunden. Jeder Port
der zweifach Port 2Gb-Fiber-Channel-Schnittstelle 400 ist
mit einem SERDES (Serializer/Deserializer) 404a, 404b verbunden.
Jeder SERDES 404a, 404b ist mit dem Kanalmedium mithilfe
einer 2Gb-Fiber-Channel-Verbindung verbunden. In dem in 9 gezeigten
Ausführungsbeispiel
ist ein SERDES 404a mit einem GBIC-Host-Kanal 152a verbunden,
und der andere SERDES 404b ist mit einem GBIC-Platten-Kanal 158a verbunden.
-
10 zeigt
eine Blockdiagrammdarstellung eines PCIX zu SCSI CIM 136b.
Innerhalb des CIM 136b, ist das Geschaltete/Geteilte PCIX
FPGA 200 mit der zweifach Port Ultra 320 SCSI-Schnittstelle 408 verbunden.
Jeder Port der zweifach Port Ultra 320 SCSI Schnittstelle 408 ist
mit einem Host oder Platten-Kanal verbunden, und weist ebenfalls
eine Verbindung zu einem Abschluss 412, der für SCSI-Systeme
erforderlich ist auf. In dem in 10 gezeigten
Ausführungsbeispiel
ist ein Port, der Dual Port Ultra 320 SCSI Schnittstelle 408 mit
einem VHDIC-Host-Kanal 152b (Very High Density Interconnect)
verbunden, und ein Port der Dual Port Ultra 320 SCSI Schnittstelle 408 mit
einem VHDIC-Platten-Kanal 158b verbunden.
-
11 zeigt
eine Blockdiagrammdarstellung eines PCIX auf Ethernet CIM 136c,
welcher Quick-Switch-Verbindungen 416a, 416b in
den Geschalteten Pfaden verwendet. Die Quick-Switch-Verbindungen 416a, 416b sind
Bus-Relays welche Freigabe-Eingänge
umfassen, welche dazu dienen die Quick-Switch-Verbindungen 416a, 416b freizugeben und
zu sperren. Jede Quick-Switch-Verbindung 416a, 416b ist
mit einer Schnittstellen-Verbindung 420 verbunden,
welche eine FPGA-Beschleunigung und Daten-FIFOs umfasst. Die Schnittstellenverbindung 420 ist
an ein Gigabit-Ethernet-ASIC 424 angeschlossen, welches
eine geeignete Verarbeitung an den Daten vornimmt, um die Daten über eine
Ethernet-Verbindung
zu übertragen.
Das Gigabit-Ethernet-ASIC 424 ist mit einem MAC/physischen
Konverter 428 verbunden, welches das Signal in ein physikalisches
Signal umwandelt, welches zu einem Transformator 432 geroutet
wird, um ein Signal mit einer geeigneten Spannung aufzugeben. In
einem Ausführungsbeispiel
ist der Transformator 432 mit einer GBIC-Verbindung mit einem
Platten-Kanal 158c verbunden. In dem Ausführungsbeispiel
aus 11, wenn ein redundantes System benötigt wird,
werden Geteilte Pfade (Shared-Paths) auf anderen CIMs bereitgestellt.
Es versteht sich, das unterschiedliche Kanalmedien in einem einzigen
System verwendet werden können,
durch die Anwendung einer Kombination von unterschiedlichen Schnittstellenmodulen, wie
beispielsweise jene, die in den 9–11 gezeigt
werden. Beispielsweise kann ein Host-Rechner mit einer Netzwerk-Bridge
durch die Verwendung eines Fiber-Channel-Mediums verbunden werden,
und die Netzwerk-Bridge
kann mit einem Platten-Array durch die Verwendung eines SCSI-Kanalmediums verbunden
werden.