-
Technisches Gebiet
-
Diese Erfindung bezieht sich auf Speichersysteme und insbesondere auf das Einfügen eines Flash-basierten Caches in große Speichersysteme.
-
Hintergrundinformationen
-
Das Aufkommen von Flash-basierten Solid-State-Laufwerken (Solid-State Drives, SDDs) revolutioniert die Hauptspeicher-Computerarchitektur von Notebooks bis hin zu Unternehmensspeichersystemen. Flash-basierte SSDs stellen eine Leistung bei wahlfreien E/A-Zugriffen sowie Zugriffslatenzzeiten bereit, die um Größenordnungen besser sind als diejenigen von sich drehenden Festplattenlaufwerken (Hard-Disk Drives, HDDs). Zudem weisen Flash-basierte SSDs einen deutlich geringeren Stromverbrauch auf.
-
Flash-basierte Speichererweiterungskarten treten als Werkzeuge für die Speichererweiterung und -verbesserung sogar in Netzwerkumgebungen in Erscheinung. Üblicherweise werden diese Erweiterungskarten unter Verwendung von PCI-e-Steckplätzen (Peripheral Component Interconnect Express) direkt in Hosts eingesetzt, wodurch die Karten näher beim Prozessor des Hosts als bei den Speicherplatten angeordnet werden, auf die der Host über ein Netzwerk zugreift. Indem die Erweiterungskarten näher beim Prozessor angeordnet werden, werden zusätzliche Latenzzeiten durch Disk-Array-Controller und Netzwerkprotokolle vermieden.
-
Obwohl Flash-basierte SSDs und Flash-basierte Speichererweiterungskarten eine Leistung bei wahlfreien E/A-Zugriffen und eine Zugriffslatenzzeit bereitstellen, die um Größenordnungen besser ist als diejenige von HDDs, hängt die Leistung bei wahlfreien Lese/Schreib-E/A-Zugriffen stark von der Architektur der Halbleiterspeichercontroller ab, die einer Einheit zugehörig sind. So liegen die Lese- und Schreibzugriffszeiten von Flash-basierten SSDs wie erwähnt in der Regel um zwei Größenordnungen unter denen von HDDs, wobei die Latenzzeit für einen DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) in großen Speichersystemen wie z.B. Unternehmensspeichersystemen, die HDDs für die Speicherung verwenden, dennoch zwei Größenordnungen besser ist als diejenige von Flash-basierten SSDs.
-
Die Gesamtsystemleistung, ausgedrückt in E/A-Operationen pro Sekunde (I/O Operations Per Second, IOPS) und Latenzzeit, hängt nicht nur von der internen Architektur des Halbleiterspeichercontrollers, sondern auch stark von der Gesamt-Systemarchitektur ab, z.B. davon, wie eine Flash-basierte Speichererweiterung in ein System eingefügt ist und welche Schnittstellen bereitgestellt werden.
-
1 ist eine schematische Darstellung, die eine Ausführungsform eines herkömmlichen Speichersystems 100 gemäß dem Stand der Technik abbildet. Das System 100 beinhaltet eine Vielzahl von E/A-Gehäusen 102a-n, die eine Schnittstelle zwischen einem oder mehreren Hosts 104a-n und einer oder mehreren Speichereinheiten 106a-n bereitstellen. Die Speichereinheiten 106a-n können in einem Gehäuse wie z.B. einem Plattengehäuse untergebracht sein, in dem eine oder mehrere HDDs untergebracht sind.
-
Ein E/A-Gehäuse, wie es hier verwendet wird, bezieht sich auf eine Einheit, in der verschiedene E/A-Adapter und Verbindungseinheiten untergebracht sind, die eine Datenübertragung zwischen Prozessoren der E/A-Speichereinheit und den E/A-Adaptern bereitstellen. In der Regel sind die E/A-Gehäuse 102a-n paarweise installiert, um einen Redundanzschutz bereitzustellen. Bei den in einem E/A-Gehäuse enthaltenen E/A-Adaptern handelt es sich in der Regel entweder um einen Hostadapter 108a-n oder um einen Einheitenadapter 110a-n. Ein E/A-Gehäuse weist eine Vielzahl von verfügbaren Steckplätzen auf, mit denen ein Hostadapter 108a-n oder ein Einheitenadapter 110a-n verbunden sein kann. In vielen Fällen bleibt jedoch ein E/A-Gehäuse mit mehreren offenen Steckplätzen für die Erweiterung oder für anderweitige Verwendungszwecke übrig.
-
Ein Hostadapter 108a-n ist ein Adapter, der eine Verbindung zwischen einem Host 104a-n und dem E/A-Gehäuse 102a-n bereitstellt. Die Hosts 104a-n sind in der Regel über ein Netzwerk 112 mit den Hostadaptern 108a-n verbunden, das verschiedene Einheiten wie Router, Switches und ähnliches umfasst. Die Hosts 104a-n sind in der Regel unter Verwendung einer Netzwerktechnologie wie Fibre Channel, Fibre Connectivity (FICON), Enterprise Systems Connection (ESCON) oder eines anderweitigen Verbindungsprotokolls, das dem Fachmann bekannt ist, mit einem Hostadapter 108a-n verbunden. Bei einem Einheitenadapter 110a-n handelt es sich um eine Einheit, die eine Verbindung zwischen einer Einheit, wie z.B. einer Speichereinheit 106a-n, und dem E/A-Gehäuse 102a-n bereitstellt. Bei einer Ausführungsform können die Einheitenadapter 110a-n FC-AL-Einheitenadapter (Fibre Channel Arbitrated Loop) sein. Bei einer typischen Ausführungsform kann jeder Einheitenadapter 110a-n zwei getrennt geschaltete Netzwerke verbinden, die eine Datenübertragung mit den Speichereinheiten 106a-n bereitstellen. Wenn ein Einheitenadapter 110a-n mit einer Speichereinheit 106a-n verbunden ist, kann er eine geschaltete Verbindung verwenden, um die Daten über den kürzest möglichen Pfad zu übertragen. Die Datenübertragung zwischen den verschiedenen Bestandteilen des Systems 100 wird durch einen oder mehrere Prozessorkomplexe 114a-b ermöglicht. Bei einer gemeinsamen Architektur, wie sie in typischen Unternehmensspeichersystemen realisiert ist, werden zwei Prozessorkomplexe 114a-b verwendet, um die Zuverlässigkeit zu erhöhen und die Leistung zu verbessern. Ein Prozessorkomplex 114a-b ist üblicherweise mit jedem E/A-Gehäuse 102a-n verbunden und beinhaltet die Logik, die notwendig ist, um eine Datenübertragung zwischen den Hostadaptern 108a-n und den Einheitenadaptern 110a-n bereitzustellen und so einem Host 104a-n, der mit einem Hostadapter 108a-n verbunden ist, zu ermöglichen, über einen Einheitenadapter 110a-n auf eine Speichereinheit 106a-n zuzugreifen. Ein Prozessorkomplex 114a-n kann hier auch als zentrale Elektronik (Central Electronics Complex, CEC) bezeichnet werden.
-
In herkömmlichen Systemen beinhaltet der Prozessorkomplex in der Regel einen flüchtigen Speicher wie den DRAM 116a-b und einen nicht flüchtigen Speicher, der als NVS (Non-Volatile Storage) 118a-b bezeichnet wird und üblicherweise als batteriegepufferter DRAM konfiguriert ist. Die Speicher 116, 118 der Prozessorkomplexe werden üblicherweise verwendet, um Daten zwischenzuspeichern, die Datenanforderungen zugehörig sind, welche von dem System 100 verarbeitet werden.
-
Während des Betriebs werden Lese- und Schreibanforderungen von den Hosts 104a-n zuerst von einem Hostadapter 108a-n verarbeitet, der wiederum mit einem Prozessorkomplex 114a interagiert. Der Prozessorkomplex 114a verwaltet alle Lese- und Schreibanforderungen an die logischen Datenträger der Speichereinheiten 106a-n. Bei Schreibanforderungen kann der Prozessorkomplex 114a eine Fast-Write-Operation verwenden, bei der die Daten in dem flüchtigen Speicher 116a eines Prozessorkomplexes 114a zwischengespeichert und außerdem in den permanenten Speicher 118b des anderen Prozessorkomplexes 114b geschrieben werden. Der Prozessorkomplex 114a kann den Schreibvorgang dann bereits als abgeschlossen melden, bevor die Daten tatsächlich auf den Datenträger geschrieben wurden. Dies stellt eine Fast-Write-Latenz bereit. Allerdings können Einschränkungen bei Größe, Zeit und Leistung die Leistungsfähigkeit der Prozessorkomplexspeicher 116, 118 beeinträchtigen, wenn diese als Datencache verwendet werden.
-
Wenn ein Host 104a-n eine Lese-Operation durchführt, ruft ein Prozessorkomplex 114a-b die Daten unter Verwendung der Hochleistungs-Koppelnetzarchitektur aus den Speichereinheiten 106a-n ab. Wenn die Daten abgerufen und an einen Host 104a-n übergeben wurden, können sie auch in dem flüchtigen Speicher 116a-b zwischengespeichert werden, falls sie bei einer künftigen Leseanforderung erneut benötigt werden sollten. Bei einer Ausführungsform versuchen die Prozessorkomplexe 114a-b, künftige Leseanforderungen vorherzusehen, indem sie Algorithmen wie z.B. Sequential Pre-fetching in Adaptive Replacement Cache (SARC) verwenden. Bei Verwendung derartiger Algorithmen werden die Daten so lange wie möglich im Cache gehalten. Wenn ein Cachetreffer auftritt, bei dem die angeforderten Daten bereits im Cache vorhanden sind, muss der Host 104a-n nicht darauf warten, dass sie aus den Speichereinheiten 106a-n abgerufen werden. Allerdings ist aufgrund von Einschränkungen bei Größe, Zeit und Leistung der Prozessorkomplexspeicher 116, 118 die Cache-Fähigkeit dieser Speicher unter Umständen nicht in jedem Fall zufriedenstellend.
-
US-Patent 7 421 552-B2 (Long, M., „Techniques for Managing Data within a Data Storage System using a Flash-based Memory Vault“) offenbart Methoden für das Verwalten von Daten innerhalb eines Datenspeichersystems, das einen Flash-basierten Speicher verwendet, das Durchführen von Datenspeicheroperationen für eine Gruppe von Hosts unter Verwendung eines flüchtigen Cachespeichers sowie für eine Gruppe von Magnetplattenlaufwerken, während das Datenspeichersystem von einer primären Energiequelle mit Strom versorgt wird.
-
Aus diesem Grund besteht in der Technik ein Bedarf, das oben genannte Problem zu lösen.
-
Die
US 2008/0244188 A1 betrifft Eine Vorrichtung zum Aufzeichnen von Informationen, umfassend: ein plattenförmiges Aufzeichnungsmedium; einen Cache-Speicher, der so konfiguriert ist, dass er als Cache für das plattenförmige Aufzeichnungsmedium dient; einen nichtflüchtigen Speicher mit einer Geschwindigkeit des Schreibens und Auslesens von Informationen, die langsamer als der Cache-Speicher ist, und der so konfiguriert ist, dass er ein Cache für das plattenförmige Aufzeichnungsmedium ist; und eine Steuereinheit, die so konfiguriert ist, dass sie die gegenseitige Übertragung von Informationen zwischen jedem der plattenförmigen Aufzeichnungsmedien, dem Cache-Speicher und dem nichtflüchtigen Speicher und dem Äußeren steuert, die gegenseitige Übertragung von Informationen zwischen dem plattenförmigen Aufzeichnungsmedium, dem Cache-Speicher und dem nichtflüchtigen Speicher steuert und ein Einstellen eines Ersatzbereichs, der einem in dem plattenförmigen Aufzeichnungsmedium erzeugten Defektbereich entspricht, in dem nichtflüchtigen Speicher steuert.
-
Die
US 7634585 B2 betrifft ein abnehmbares Speichermodul, das zwischen einen Host und ein Plattenlaufwerk geschaltet wird. Das Speichermodul umfasst ein nichtflüchtiges Festkörperlaufwerk, das zum Zwischenspeichern von Daten verwendet wird, die vom Host zur Speicherung im Plattenlaufwerk gesendet werden. Das Caching findet unter der Kontrolle eines Speicher-Controllers im Speichermodul statt und kann für den Host transparent sein. Das Plattenlaufwerk kann beim Zwischenspeichern der Daten ausgefahren bleiben, wodurch Strom gespart wird. Der Bestimmungsort für Host-Daten kann auf Grundlage der gewünschten Geschwindigkeit, der Stromversorgung und des erwarteten Bedarfs an diesen Daten ermittelt werden. Ein Host kann spezifische Befehle an das Speichermodul senden, um zusätzliche Funktionen zu aktivieren.
-
Die
US 2007/0255898 A1 betrifft ein Schreibmedium, das so ausgewählt wird, dass es die schnellste Operation realisiert, nachdem Daten, die einen Schreibbefehl beinhalten, vom Host-Gerät empfangen wurden. Ein Speichergerät umfasst eine Host-Schnittstelle, eine Cache-Speicherschnittstelle, eine Festplattenschnittstelle, eine Flash-Speicherschnittstelle, einen Befehlsanalysierungsabschnitt, der den Inhalt eines von der Host-Schnittstelle eingegebenen Befehls analysiert, einen Zustandsbestimmungsabschnitt, der auf Grundlage der Beziehung zwischen der Schreibdatengröße und dem freien Platz des CacheSpeichers bestimmt, in welchen der Cache-Speicher und Flash-Speicher Daten schneller geschrieben werden können, wenn der im Befehlsanalysierungsabschnitt analysierte Befehl ein Schreibbefehl ist, und einen Medienauswahlabschnitt, der ein Datenschreibziel entsprechend dem Bestimmungsergebnis des Zustandsbestimmungsabschnitts bestimmt.
-
KURZE ZUSAMMENFASSUNG
-
Aus der obigen Erörterung sollte deutlich werden, dass ein Bedarf an einer Vorrichtung, einem System und Verfahren für die Verbesserung bestehender Speicherarchitekturen und Systeme für die Datenzwischenspeicherung besteht. Zweckdienlicherweise würde eine derartige Vorrichtung, ein System und Verfahren Flash-basierte Speichereinheiten in einen oder mehrere freie Steckplätze eines E/A-Gehäuses einfügen, um Caching- und Speicherfähigkeiten bereitzustellen, welche die Architektur- und Caching-Fähigkeiten nach dem Stand der Technik verbessern.
-
Die vorliegende Erfindung wurde als Reaktion auf den gegenwärtigen Stand der Technik und insbesondere als Reaktion auf die Probleme und Erfordernisse entwickelt, die durch derzeit verfügbare Speichersystemarchitekturen noch nicht vollständig gelöst bzw. erfüllt werden. Entsprechend werden Vorrichtungen gemäß den Ansprüchen 1 und 3, Verfahren gemäß den Ansprüchen 7 und 10 und ein Computerprogrammprodukt gemäß dem Anspruch 11 für das Einfügen eines Flash-basierten Caches in ein Speichersysteme bereitgestellt, die/das viele oder alle der oben erwähnten Nachteile des Stands der Technik beseitigt. Bevorzugte Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
-
Eine beispielhafte Vorrichtung zum Einfügen eines Flash-basierten Caches wird mit einer Vielzahl von Modulen und Einheiten bereitgestellt. Diese Module und Einheiten in den beschriebenen Ausführungsformen beinhalten ein Eingabe-/Ausgabe(E/A)-Gehäusemodul, einen Hostadapter, einen Einheitenadapter, eine Flash-basierte Caching-Einheit („Flash-Cache) und einen primären Prozessorkomplex.
-
In einem Beispiel beinhaltet das E/A-Gehäusemodul ein oder mehrere E/A-Gehäuse mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten. Der Hostadapter ist mit einem ersten Steckplatz des E/A-Gehäusemoduls verbunden und so konfiguriert, dass er einen Host mit dem E/A-Gehäuse verbindet. Der Einheitenadapter ist mit einem zweiten Steckplatz des E/A-Gehäusemoduls verbunden und so konfiguriert, dass er eine Speichereinheit mit dem E/A-Gehäusemodul verbindet. Der Flash-Cache ist mit einem dritten Steckplatz des E/A-Gehäusemoduls verbunden und beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden. Der primäre Prozessorkomplex verwaltet Datenanforderungen, die durch das E/-A-Gehäusemodul verarbeitet werden, indem er mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um die Datenanforderungen zu verwalten.
-
In einem Beispiel umfasst der primäre Prozessorkomplex ferner einen DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) für das vorübergehende Zwischenspeichern von Daten, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden. Bei einer weiteren Ausführungsform umfasst der primäre Prozessorkomplex ferner einen NVS-Cache (Non-Volatile Storage, nicht flüchtiger Speicher), der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten beinhaltet, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden. Bei einer Ausführungsform ist der primäre Prozessorkomplex so konfiguriert, dass er Daten, die in dem DRAM-Cache oder in dem NVS-Cache zwischengespeichert sind, in den Flash-Cache auslagert.
-
In einem Beispiel ist die Vorrichtung ferner so konfiguriert, dass sie einen sekundären Prozessorkomplex beinhaltet, der als sekundäre Verwaltungseinheit für Datenanforderungen dient, die durch das E/A-Gehäusemodul verarbeitet werden, so dass der sekundäre Prozessorkomplex mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten. Bei einer weiteren Ausführungsform beinhaltet der zweite Prozessorkomplex einen DRAM-Cache für das vorübergehende Zwischenspeichern von Daten, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden. Bei einer weiteren Ausführungsform umfasst der zweite Prozessorkomplex ferner einen NVS-Cache, der eine nicht flüchtige Speichereinheit umfasst, um Daten zwischenzuspeichern, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden.
-
In einem Beispiel ist der Flash-Cache genau einem Komplex des primären Prozessorkomplexes und eines sekundären Prozessorkomplexes zugeordnet, wobei sowohl der primäre als auch der sekundäre Prozessorkomplex so konfiguriert ist, dass er Datenanforderungen verwaltet, die durch das E/A-Gehäuse verarbeitet werden. Bei einer weiteren Ausführungsform wird der mindestens eine Flash-Cache, der zunächst dem primären Prozessorkomplex zugeordnet ist, als Reaktion auf einen Ausfall des primären Prozessorkomplexes dem sekundären Prozessorkomplex zugeordnet.
-
Bei einer beispielhaften Vorrichtung ist der Flash-Cache in Bereiche unterteilt, die einen Lese-Cachebereich, der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, und einen Schreib-Cachebereich, der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, umfassen. Bei einer weiteren Ausführungsform ist der Flash-Cache ferner in einen Zusatz-Lese-Cachebereich, der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich, der Daten speichert, die nicht in einen Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden, unterteilt.
-
In einem Beispiel ist der primäre Prozessorkomplex so konfiguriert, dass er für Caching-Operationen, die durch das E/A-Gehäusemodul verarbeitet werden, ausschließlich den Flash-Cache nutzt, so dass der primäre Prozessorkomplex für Caching-Operationen keinen getrennten DRAM-Cache und/oder NVS-Cache verwendet.
-
In einem weiteren Beispiel wird ein System vorgestellt, das einen Flash-basierten Cache in ein Speichersystem einfügt. Das Verfahren der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung oben dargelegten Funktionen durchzuführen. Das System kann in verschiedenen Konfigurationen ausgeführt sein, um einen Flash-Cache in einen zusätzlichen Steckplatz eines E/A-Gehäuses aufzunehmen.
-
Insbesondere beinhaltet das System in einem Beispiel ein E/A-Gehäusemodul mit einem oder mehreren E/A-Gehäusen, die über eine Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten verfügen. Vorzugsweise weist es mindestens einen Hostadapter auf, der mit einem ersten Steckplatz des E/A-Gehäusemoduls verbunden ist, wobei der Hostadapter so konfiguriert ist, dass er einen Host mit dem E/A-Gehäusemodul verbindet. Dabei ist mindestens ein Host mit dem mindestens einen Hostadapter verbunden. Mindestens ein Einheitenadapter ist mit einem zweiten Steckplatz des E/A-Gehäusemoduls verbunden, und der Einheitenadapter ist so konfiguriert, dass er eine Speichereinheit mit dem E/A-Gehäusemodul verbindet.
-
In einem Beispiel beinhaltet das System außerdem mindestens eine Speichereinheit, die mit dem mindestens einen Einheitenadapter verbunden ist. Das System beinhaltet des Weiteren mindestens eine Flash-basierte Caching-Einheit („Flash-Cache), die mit einem dritten Steckplatz des E/A-Gehäusemoduls verbunden ist. Der Flash-Cache beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden. Das System kann ferner einen primären Prozessorkomplex beinhalten, der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden. Der primäre Prozessorkomplex tauscht mit dem mindestens einen Hostadapter, dem mindestens einen Einheitenadapter und dem mindestens einen Flash-Cache Daten aus, um die Datenanforderungen zu verwalten.
-
Bei einer beispielhaften Implementierung des Systems ist der Host ein Computersystem, wobei das Computersystem mindestens einen Prozessor und einen Speicher beinhaltet. Bei einer weiteren Ausführungsform beinhaltet die Speichereinheit ein oder mehrere Festplattenlaufwerke und ein Magnetbandlaufwerk.
-
Ferner wird ein Verfahren der vorliegenden Erfindung vorgestellt, mit dem ein Flash-basierter Cache in ein Speichersystem eingefügt wird. Das Verfahren der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung und des Systems oben dargelegten Funktionen durchzuführen.
-
In einem weiteren Beispiel beinhaltet das Verfahren das Verbinden von mindestens einer Flash-basierten Caching-Einheit („Flash-Cache“) mit einem E/A-Gehäusemodul, wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden. Das Verfahren kann ferner das Empfangen einer Datenanforderung in einem Hostadapter beinhalten, der mit einem ersten Steckplatz eines E/A-Gehäusemoduls verbunden ist. Der Hostadapter ist so konfiguriert, dass er einen Host mit dem E/A-Gehäusemodul verbindet. Das E/A-Gehäusemodul beinhaltet ein oder mehrere E/A-Gehäuse mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten, und das E/A-Gehäusemodul verfügt über mindestens einen Einheitenadapter, der mit einem zweiten Steckplatz des E/A-Gehäusemoduls verbunden ist. Der Einheitenadapter ist so konfiguriert, dass er eine Speichereinheit mit dem E/A-Gehäusemodul verbindet.
-
Das beispielhafte Verfahren kann auch das Übertragen der Datenanforderung an einen primären Prozessorkomplex, der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden, sowie das Zugreifen auf mindestens eine Flash-basierte Caching-Einheit („Flash-Cache“) beinhalten, um eine oder mehrere Caching-Operationen durchzuführen, die der Datenanforderung zugehörig sind. Der Flash-Cache ist mit einem dritten Steckplatz des E/A-Gehäusemoduls verbunden. Der Flash-Cache beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden.
-
Bei einer weiteren beispielhaften Implementierung des Verfahrens kann die Datenanforderung eine Leseanforderung sein, und das Zugreifen auf den mindestens einen Flash-Cache zur Durchführung einer oder mehrerer Caching-Operationen kann das Abrufen von Daten aus dem Flash-Cache beinhalten. Bei einer weiteren Ausführungsform kann die Datenanforderung eine Schreibanforderung sein, und das Zugreifen auf den mindestens einen Flash-Cache zur Durchführung einer oder mehrerer Caching-Operationen kann das Speichern von Daten, die der Schreibanforderung zugehörig sind, in dem Flash-Cache beinhalten. Bei einer weiteren Ausführungsform kann das Verfahren ferner das Auslagern von in dem Flash-Cache gespeicherten Daten in die Speichereinheit beinhalten, die mit dem Einheitenadapter verbunden ist.
-
In einem weiteren Beispiel wird ein Computerprogramm bereitgestellt, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, welches Softwarecode-Teile umfasst, die, wenn das Programm auf einem Computer ausgeführt wird, die Schritte der oben erwähnten Verfahren durchführen.
-
Figurenliste
-
Im Folgenden wird die vorliegende Erfindung lediglich beispielhaft und mit Bezug auf bevorzugte Ausführungsformen beschrieben, wie sie in den folgenden Figuren dargestellt werden:
-
- 1 ist eine schematische Darstellung, die eine Ausführungsform eines herkömmlichen Speichersystems gemäß dem Stand der Technik zeigt, in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung realisiert werden kann;
- 2 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems mit einem eingefügten Flash-basierten Cache gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
- 3 ist eine schematische Darstellung, die eine Ausführungsform einer Flash-basierten Caching-Einheit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
- 4 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems mit einem eingefügten Flash-basierten Cache und ohne einen nicht flüchtigen Speicher-Cache gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
- 5 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems, das ausschließlich einen eingefügten Flash-basierten Cache verwendet, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
- 6 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens für das Einfügen eines Flash-Caches in ein Speichersystem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; und
- 7 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens für das Verarbeiten von Datenanforderungen in einem Speichersystem mit einem Flash-Cache gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Der Fachmann weiß, dass Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung in Gestalt einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder in Gestalt einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte, die zusammenfassend als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können, miteinander vereint. Zudem können Aspekte der vorliegenden Erfindung in Gestalt eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, auf denen computerlesbarer Programmcode enthalten ist.
-
Viele der in dieser Beschreibung erläuterten Funktionseinheiten wurden als Module bezeichnet, um ihre Realisierungsunabhängigkeit zu unterstreichen. So kann ein Modul z.B. als Hardwareschaltung realisiert werden, die kundenspezifische VLSI-Schaltungen oder Gate Arrays, vorgefertigte Halbleiter wie Logikchips, Transistoren oder andere diskrete Bestandteile umfasst. Alternativ kann ein Modul als programmierbare Hardware-Einheiten wie z.B. Field Programmable Gate Arrays (FPGA), Programmable Array Logic (PAL), programmierbare Logikeinheiten oder Ähnliches realisiert sein.
-
Module können auch in Software realisiert und von verschiedenen Arten von Prozessoren ausgeführt werden. Ein bestimmtes Modul von ausführbarem Code kann z.B. einen oder mehrere physische oder logische Blöcke von Computerbefehlen umfassen, die z.B. als Objekt, Prozedur oder Funktion aufgebaut sein können. Dessen ungeachtet muss der ausführbare Code eines bestimmten Moduls nicht physisch an einer einzigen Stelle vorliegen, sondern kann auch unterschiedliche Befehle umfassen, die an verschiedenen Stellen gespeichert werden und die, wenn sie logisch miteinander verbunden werden, das Modul umfassen und den vorgesehenen Zweck für das Modul erzielen.
-
Tatsächlich kann ein Modul von ausführbarem Code ein einziger Befehl oder viele Befehle sein und sogar über mehrere verschiedene Codesegmente innerhalb verschiedener Programme und über mehrere Speichereinheiten hinweg verteilt sein. Ebenso können Betriebsdaten hier innerhalb von Modulen kenntlich gemacht und dargestellt sowie in jeder beliebigen geeigneten Form realisiert werden und innerhalb einer beliebigen geeigneten Art von Datenstruktur organisiert sein. Dabei können die Betriebsdaten als ein einziger Datensatz zusammengestellt sein, oder sie können auf verschiedene Stellen, darunter verschiedene Speichereinheiten, verteilt sein, und sie können zumindest teilweise als bloße elektronische Signale in einem System oder Netzwerk vorhanden sein. Wenn ein Modul oder Teile eines Moduls in Software realisiert werden, sind die Softwareteile auf einem oder mehreren computerlesbaren Medien gespeichert.
-
Dabei kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien genutzt werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem bzw. eine entsprechende Vorrichtung oder Einheit oder aber eine beliebige geeignete Kombination der vorgenannten Elemente sein, ohne jedoch auf diese beschränkt zu sein.
-
Konkretere Beispiele des computerlesbaren Speichermediums würden Folgendes beinhalten (wobei dies eine nicht vollständige Liste darstellt): eine elektrische Verbindung mit einem oder mehreren Leitern, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen Lichtwellenleiter, eine tragbare CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination der vorgenannten Elemente. In Verbindung mit diesem Dokument kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm enthalten oder speichern kann, welches von oder in Zusammenhang mit einem System, einer Vorrichtung oder Einheit für die Befehlsausführung verwendet wird.
-
Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem computerlesbaren Programmcode beinhalten, z.B. als Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form von unterschiedlichen Formen annehmen, darunter, ohne darauf beschränkt zu sein, eine elektromagnetische Form, eine optische Form oder auch jede geeignete Kombination hiervon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm austauschen, weiterleiten oder übertragen kann, welches für die Nutzung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zur Befehlsausführung vorgesehen ist. Auf einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlose, drahtgebundene, Lichtwellenleiterkabel-, Funk- und andere Medien oder eine beliebige Kombination der vorgenannten Medien.
-
Computerprogrammcode für das Ausführen der Arbeitsschritte für Aspekte der vorliegenden Erfindung können in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Im Folgenden werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf schematische Ablaufdiagramme und/oder schematische Darstellungen von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen sowie Kombinationen von Blöcken in den schematischen Ablaufdiagrammen und/oder den schematischen Darstellungen durch Computerprogrammbefehle realisiert werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen angegeben werden.
-
Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsartikel hervorbringen, der Befehle enthält, mit denen die Funktion/Handlung, die in dem Block bzw. den Blöcken der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen angegeben ist, realisiert wird.
-
Die Computerprogrammbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Betriebsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder den anderen Einheiten ausgeführt wird, um einen auf einem Computer realisierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderweitigen Datenverarbeitungsvorrichtung ausgeführt werden, Prozesse bereitstellen, mit denen die Funktionen/Handlungen, die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaltbilds angegeben sind, realisiert werden.
-
Die schematischen Ablaufdiagramme und/oder schematischen Darstellungen in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Vorrichtungen, Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen ein Modul, ein Segment oder einen Code-Teil darstellen, der einen oder mehrere ausführbare Befehle umfasst, mit denen sich die angegebene(n) logische(n) Funktion(en) realisieren lässt/lassen.
-
Zu beachten ist ferner, dass bei manchen alternativen Ausführungsformen die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten können. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Auch sind andere Schritte und Verfahren vorstellbar, die hinsichtlich Funktion, Logik oder Auswirkung gleichwertig mit einem oder mehreren Blöcken oder Teilen hiervon aus den dargestellten Figuren sind.
-
2 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems 200 mit einer eingefügten Flash-basierten Caching-Einheit („Flash-Cache“) 220a-n gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
-
Das System 200 beinhaltet eine Gruppe von einem oder mehreren E/A-Gehäusen 202a-n, die eine Schnittstelle zwischen einem oder mehreren Hosts 204a-n und einer oder mehreren Speichereinheiten 206a-n bereitstellen. Die Speichereinheiten 206a-n können in einem Gehäuse wie z.B. einem Plattengehäuse untergebracht sein, in dem eine oder mehrere HDDs oder andere Arten von Speichereinheiten wie z.B. Magnetbandlaufwerke oder optische Laufwerke untergebracht sind. Bei einer Ausführungsform können die Speichereinheiten 206a-n eine Anordnung von Platten beinhalten, die so konfiguriert sein können, dass sie verschiedene Arten von Redundanzschutz bereitstellen.
-
Wie hier verwendet, kann die Gruppe von E/A-Gehäusen auch gemeinsam als ein E/A-Gehäusemodul 201 bezeichnet werden. Ein E/A-Gehäuse 202a-n im hier verwendeten Sinne bezieht sich auf eine Einheit, in der verschiedene E/A-Adapter 208a-n, 210a-n sowie Verbindungseinheiten untergebracht sind, um eine Datenübertragung zwischen den E/A-Speichereinheits-Prozessoren 214a-b und den E/-Adaptern 208a-n, 210a-n bereitzustellen. Üblicherweise sind die E/A-Gehäuse 102a-n paarweise installiert, um einen Redundanzschutz bereitzustellen. Bei den in einem E/A-Gehäuse 202-n enthaltenen E/A-Adaptern 208a-n, 210a-n handelt es sich üblicherweise entweder um einen Hostadapter 208a-n oder um einen Einheitenadapter 210a-n. Ein E/A-Gehäuse 202a-n weist in der Regel eine Vielzahl von verfügbaren Steckplätzen auf, mit denen ein Hostadapter 208a-n oder ein Einheitenadapter 210a-n verbunden sein kann. Wie oben erwähnt, kann ein E/A-Gehäuse 202a-n mit mehreren offenen Steckplätzen konfiguriert sein, um eine Erweiterung um zusätzliche Adapter oder anderweitige Zwecke zu ermöglichen.
-
Ein Hostadapter 208a-n ist ein Adapter, der eine Verbindung zwischen einem Host 204a-n und dem E/A-Gehäuse 202a-n bereitstellt. Ein Host 204a-n ist üblicherweise eine Datenverarbeitungsmaschine wie z.B. ein Personalcomputer, ein Laptop, ein Client oder ähnliches, die auf das Speichersystem 200 zugreift, indem sie Datenanforderungen durch das E/A-Gehäuse 202a-n an verschiedene Speichereinheiten 206a-n oder Teilsysteme stellt. Die Hosts 204a-n sind üblicherweise über das Netzwerk 212 mit den Hostadaptern 208a-n verbunden, und das Netzwerk 212 beinhaltet in der Regel verschiedene Einheiten wie Router, Switches und Ähnliches. Die Hosts 204a-n können unter Verwendung einer Netzwerktechnologie wie Fibre Channel, Fibre Connectivity („FICON“), Enterprise Systems Connection („ESCON“) oder eines anderweitigen Verbindungsprotokolls, das dem Fachmann bekannt ist, mit einem Hostadapter 108a-n verbunden sein.
-
Ein Einheitenadapter 210a-n ist eine Einheit, die eine Verbindung zwischen einer Einheit wie z.B. einer Speichereinheit 206a-n und dem E/A-Gehäuse 202a-n bereitstellt. Bei einer Ausführungsform können die Einheitenadapter 210a-n FC-AL(Fibre Channel Arbitrated Loop)-Einheitenadapter sein. Bei einer typischen Ausführungsform kann jeder Einheitenadapter 210a-n zwei getrennt geschaltete Netzwerke verbinden, die eine Datenübertragung mit den Speichereinheiten 206a-n bereitstellen. Wenn bei einer Ausführungsform ein Einheitenadapter 210a-n eine Verbindung mit einer Speichereinheit 206a-n bereitstellt, kann er eine geschaltete Verbindung verwenden, um die Daten über den kürzest möglichen Pfad zu übertragen. Wie der Fachmann weiß, sind selbstverständlich auch andere Arten von Verbindungen und Datenübertragungsprotokollen denkbar.
-
Die Datenübertragung zwischen den verschiedenen Bestandteilen des Systems 200 wird durch einen oder mehrere Prozessorkomplexe 214a-b ermöglicht. Bei einer gemeinsamen Architektur, wie sie in typischen Unternehmensspeichersystemen realisiert ist, werden zwei Prozessorkomplexe 214a-b verwendet, um die Zuverlässigkeit zu erhöhen und die Leistung zu verbessern. Üblicherweise ist einer der primäre Prozessorkomplex 214a und der andere der sekundäre Prozessorkomplex 214b. Beide Prozessorkomplexe 214a-b sind üblicherweise mit jedem E/A-Gehäuse 202a-n verbunden und beinhalten die Logik, die notwendig ist, um eine Datenübertragung zwischen den Hostadaptern 208a-n und den Einheitenadaptern 110a-n bereitzustellen und so einem Host 204a-n, der mit einem Hostadapter 208a-n verbunden ist, zu ermöglichen, über einen Einheitenadapter 210a-n auf eine Speichereinheit 206a-n zuzugreifen. Ein Prozessorkomplex 214an kann hier auch als zentrale Elektronik (Central Electronics Complex, CEC) bezeichnet werden.
-
Bei der abgebildeten Ausführungsform beinhaltet der Prozessorkomplex 214a-b einen flüchtigen Speicher wie den dynamischen Arbeitsspeicher (Dynamic Random Access Memory, DRAM) 216a-b und einen nicht flüchtigen Speicher, der als NVS (Non-Volatile Storage) 218a-b bezeichnet wird und üblicherweise als batteriegepufferter DRAM konfiguriert ist. Selbstverständlich können bei anderen Ausführungsformen andere Arten von flüchtigen und nicht flüchtigen Speichern durch den Prozessorkomplex verwendet werden, wie für den Fachmann offensichtlich ist. Der Speicher 216, 218 der Prozessorkomplexe 214a-b dient in der Regel zum Zwischenspeichern von Daten, die Datenanforderungen zugehörig sind, welche durch das System 200 verarbeitet werden.
-
Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält das System 200 einen Flash-Cache 220a-n in einem freien Steckplatz des E/A-Gehäusemoduls 201. Vorzugsweise kann eine Vielzahl von Flash-Caches 220a-n verwendet werden, und jeder Flash-Cache 220a-n kann einem bestimmten Prozessorkomplex 214a-b zugeordnet sein. Der Flash-Cache 220a-n beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul 201 verarbeitet werden. Bei einer denkbaren Ausführungsform kann sich ein „Flash-basierter“ Speicher auch auf andere Arten von Halbleiterspeichern beziehen, wie z.B. Phasenwechselspeicher (Phase Change Memory, PCM), die ähnliche Eigenschaften wie ein Flash-Speicher haben können, die jedoch - je nach Konfiguration und Architektur des Systems 200 - bessere Leistungseigenschaften aufweisen können. Zusätzlich könnte bei manchen Ausführungsformen ein Flash-Cache 220a in zwei oder mehrere Partitionen aufgeteilt sein, die jeweils von einem der Prozessorkomplexe 214a-b verwaltet werden könnten. Dies würde die Verwendung von weniger Flash-Caches 220a-n ermöglichen und damit die Gesamtkosten senken. Bei einer derartigen Ausführungsform kann in einem zweiten Flash-Cache 220c eines zweiten E/A-Gehäuses 202b eine Datenredundanz bereitgestellt werden.
-
Indem ein Flash-Cache 220a-n in einen freien Steckplatz des E/A-Gehäusemoduls 201 eingesetzt wird, verbessert der Flash-Cache 220a-n die Leistung (z.B. durch eine höhere Cache-Trefferquote) des Systems 200, während er sich gleichzeitig ohne bedeutsame Änderungen an den Einheiten und Bestandteilen des Systems 200 nahtlos in bestehende Architekturen einfügt. Zudem ist der Flash-Cache 220a-n skalierbar und kann erheblich größer werden als der DRAM-Cache 216a-b und der NVS-Cache 214a-b herkömmlicher Systeme.
-
Bei der abgebildeten Ausführungsform dient der Flash-Cache 220a-n als Zwischenspeicher und bildet zusammen mit dem DRAM-Cache 216a-b und dem NVS-Cache 218a-b ein zweischichtiges Caching-System.. So können Daten z.B. zuerst in dem DRAM-Cache 216a-b zwischengespeichert und dann in den Flash-Cache 220a-n ausgelagert werden, bevor sie weiter in die Speichereinheiten 206a-n ausgelagert werden. Dies ermöglicht eine Verbesserung der Architektur mit mindestens denselben Leistungsmerkmalen hinsichtlich der Befehle pro Sekunde und der Latenzzeit, während gleichzeitig der verfügbare Cache vergrößert wird, um die Cache-Trefferquote zu verbessern.
-
3 ist eine schematische Darstellung, die eine Ausführungsform einer Flash-basierten Caching-Einheit 220a bzw. eines Flash-Caches gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt, kann der Flash-Cache 220a in verschiedene Bereiche unterteilt werden, um verschiedene Caching-Operationen zu verarbeiten. Die abgebildete Ausführungsform zeigt einen Schreibbereich 302, einen Lesebereich 304, einen Zusatz-Lesebereich 306 und einen Speicherbereich 308. Obwohl die abgebildete Ausführungsform vier verschiedene Bereiche zeigt, ist denkbar, dass ein Flash-Cache 220a mit nur einer anderen Bereichsart bereitgestellt wird. Im Allgemeinen wird der Lesebereich 304 zur Speicherung einer gespiegelten Datenkopie verwendet, wobei die andere Kopie entweder in einem DRAM-Cache 216a, einem NVS-Cache 218a oder einem Flash-Cache 220a vorhanden ist, während der Zusatz-Lesebereich 306 zwischengespeicherte Daten enthält, die nicht in einen anderen Cache gespiegelt werden müssen. Bei einer bevorzugten Ausführungsform wird die Verwaltung des Lesebereichs 304 durch einen der Prozessorkomplexe 214a-b gesteuert, und die Verwaltung des Zusatz-Lesebereichs 306 erfolgt intern durch den Flash-Cache 200a-n.
-
Der Schreibbereich 302 ist so konfiguriert, dass er vorübergehend Daten speichert, die einer Schreibanforderung zugehörig sind. Üblicherweise werden die Schreibdaten entweder in eine Speichereinheit 206a-n oder in einen Lesebereich des Flash-Caches 220a ausgelagert. Der Lesebereich 304 speichert Daten für Leseanforderungen, so dass die Daten nicht aus den Speichereinheiten 206a-n abgerufen werden müssen, sondern stattdessen direkt aus dem Lesebereich 304 des Flash-Caches abgerufen werden. Vorzugsweise kann ein Hostadapter 208a-n in demselben E/A-Gehäuse 202a-n wie der entsprechende Flash-Cache 220a-n direkt auf den Lesebereich 304 zugreifen. Der Zusatz-Lesebereich 306 dient zur Erweiterung des verfügbaren Lese-Bereichsspeichers, um so die Wahrscheinlichkeit eines Cachetreffers bei einer Leseanforderung zu erhöhen.
-
Der Speicherbereich 308 ist vorzugsweise so konfiguriert, dass er sich ähnlich wie eine Speichereinheit der Speicherstufe 0 verhält. So kann der Speicherbereich 308 z.B. zum Speichern von Daten verwendet werden, die nie auf Platten ausgelagert werden, z.B. Metadaten, die von den Prozessorkomplexen 214a-b verwendet werden, oder Daten, die vorzugsweise in einem Flash-Cache 220a-n gespeichert werden. Bei einer Ausführungsform kann der Speicherbereich 308 des Flash-Caches 220a einer Nummer der logischen Einheit (Logical Unit Number, LUN) zugewiesen werden, um auf den Bereich als eine Speichereinheit zuzugreifen.
-
Bei manchen Ausführungsformen können Daten, die in dem Speicherbereich 308 eines Flash-Caches 220a gespeichert sind, in den Speicherbereich eines anderen Flash-Caches 220b ausgelagert werden, um einen Redundanzschutz bereitzustellen. Somit kann eine Schreibanforderung Daten in dem Schreibbereich eines ersten Flash-Caches 220a und dem Schreibbereich eines zweiten Flash-Caches 220c speichern. Vorzugsweise befinden sich der erste und zweite Flash-Cache 220a, 220c in verschiedenen E/A-Gehäusen 202a-n. Darauffolgende Leseanforderungen können die Daten dann direkt aus dem Schreibbereich der Flash-Caches 220a, 220c abrufen. Vorzugsweise ruft eine von einem Hostadapter 208a empfangene Schreibanforderung Daten aus einem Flash-Cache 220a ab, der innerhalb desselben E/A-Gehäuses 202a wie dieser selbst konfiguriert ist.
-
Während des Betriebs verarbeitet das System 200 mit einem Prozessorkomplex-Cache 216a-b, 218a-b und einem Flash-Cache 220a-n sowohl Lese- als auch Schreibanforderungen auf eine verbesserte Art und Weise.
-
Mit Blick auf eine Schreibanforderung wird diese von einem Hostadapter 208a empfangen, und der Hostadapter 208a fragt den primären Prozessorkomplex 214a, wo die Daten gespeichert werden sollen. Der Prozessorkomplex 214a sendet eine Antwort zurück, die einen Speicherort angibt, an den die Daten verschoben werden sollen. In der Regel antwortet der Prozessorkomplex mit zwei Speicherorten, einem flüchtigen DRAM-Cache-Speicherort 216a und einem nicht flüchtigen Speicherort entweder in dem NVS-Cache 218b des sekundären Prozessorkomplexes 214b oder einem oder zwei Speicherorten in Schreibbereichen der Flash-Caches 220a-n. Wenn der primäre Prozessorkomplex 214a nicht erreichbar ist, kann bei einer Ausführungsform der sekundäre Prozessorkomplex 214b gefragt werden, und der sekundäre Prozessorkomplex 214b wird der neue primäre Prozessorkomplex 214a.
-
Der primäre Prozessorkomplex 214a antwortet auf eine Schreibanforderung, indem er Platz in seinem DRAM-Cache 216a zuweist. Üblicherweise wird der Platz in dem NVS-Cache 218b des sekundären Prozessorkomplexes 214b ebenfalls zugewiesen, um als Sicherung für die zwischengespeicherten Daten zu dienen. Danach verlagert der Hostadapter 208a die Daten an die von dem primären Prozessorkomplex 214a angegebenen Speicherorte, darunter den DRAM-Cache 216a und den NVS-Cache 218b.
-
Zu einem späteren Zeitpunkt kann der Prozessorkomplex 214a-b die Daten dann aus dem DRAM-Cache 216a und dem NVS-Cache 218b in den Flash-Cache 220a-n auslagern. Danach kann der Prozessorkomplex 214a-b die Daten aus dem Flash-Cache 220a-n in die Speichereinheiten 206a-n auslagern. Hierfür wird ein Einheitenadapter 210a informiert, und der Einheitenadapter 210a lagert die Daten aus dem Flash-Cache 220a-n an die Speichereinheit 206a-n aus, die mit dem Einheitenadapter 210a verbunden ist. Dabei wird vorzugsweise ein Einheitenadapter 210a-n verwendet, der sich in demselben E/A-Gehäuse 202a-n befindet, in dem die Daten in dem Flash-Cache 220a-n gespeichert werden. In manchen Fällen können die Daten direkt aus dem DRAM-Cache 216a oder NVS-Cache 218b an die Speichereinheit 206a-n ausgelagert werden. Sobald die Auslagerungsoperation abgeschlossen ist, informiert der Einheitenadapter 210a den Prozessorkomplex 214a über den Abschluss der Operation.
-
Sobald die Daten aus dem Flash-Cache 220a-n an die Speichereinheiten 206a-n ausgelagert sind, kann der primäre Prozessorkomplex 214a die Daten entweder in dem Schreibbereich 302 des Flash-Caches 220a-n freigeben oder sie für einen künftigen Zugriff gemäß Leseanforderungen, die eben diese Daten anfordern, virtuell in einen Zusatz-Lesebereich 306 des Flash-Caches 220a verschieben. Auf diese Weise kann der Flash-Cache 220a-n interne Zuordnungseinträge ungültig machen und somit Schreib-Vervielfachungen verringern. Nachdem dies erledigt ist, wird eine Abschlussmeldung von dem Flash-Cache 220a-n an den Prozessorkomplex 214a gesendet.
-
Bei einer Ausführungsform erfordert das Verschieben von Daten aus einem Cachebereich (z.B. dem Schreibbereich 302) in einen anderen (z.B. dem Zusatz-Lesebereich 306) kein tatsächliches Neukopieren der Daten. Stattdessen werden die dem Flash-Cache 220a-n zugehörigen Metadaten aktualisiert, so dass sie die Bereichsänderung der Daten widerspiegeln. Bei einem Ausfall des primären Prozessorkomplexes 214a können die Metadaten an den NVS-Cache 218a-b des sekundären Prozessorkomplexes 214b oder an den Flash-Cache 220a-n selbst (z.B. in dem Speicherbereich 308) ausgegeben werden. Daraufhin kann der sekundäre Prozessorkomplex 214b übernehmen, die Metadaten entweder aus seinem NVS-Cache 218b oder aus dem Flash-Cache 220a-n abrufen und anschließend mit dem normalen Betrieb fortfahren.
-
Mit Blick auf eine Leseanforderung empfängt der Hostadapter 208a die Leseanforderung und fragt den Prozessorkomplex 214a nach dem Speicherort der angeforderten Daten. Einer oder mehrere der Prozessorkomplexe 214a-b antwortet mit dem Speicherort der Daten, der entweder in seinem lokalen DRAM-Cache 216a-b, seinem NVS-Cache 218a-b, in einem der Bereiche des Flash-Caches 220a-n, der dem Prozessorkomplex 214a-b zugeordnet ist, oder in einer Speichereinheit 206a-n sein kann, die mit dem System 200 verbunden ist. Der Hostadapter 208a ruft dann die Daten aus dem angegebenen Speicherort ab und stellt sie dem Host 204a-n bereit. Mitunter wurden die Daten unter Umständen noch nicht aus dem Schreibbereich 302 an die Lesebereiche 304, 306 verschoben. Dessen ungeachtet können die Daten auch in diesem Fall bei Bedarf direkt aus dem Schreibbereich 302 abgerufen werden. Wenn Daten aus einer der Speichereinheiten 206a-n abgerufen werden, verwendet der Prozessorkomplex 214a-b in der Regel einen Einheitenadapter 210a-n zum Abrufen der Daten.
-
4 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems 300 mit einem eingefügten Flash-basierten Cache 220a-n und ohne einen NVS-Cache 218a-b gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Bei dieser Ausführungsform werden ebenfalls verschiedene Flash-Caches 220a-n in die freien Steckplätze des E/A-Gehäusemoduls 201 eingesetzt, wobei jedoch die üblicherweise mit den Prozessorkomplexen 214a-b verbundenen NVS-Caches 218a-b entfernt sind. Bei dieser Ausführungsform dient der Flash-Cache 220a-n als nicht flüchtiger Speicher für die Prozessorkomplexe 214a-b, so dass Kosten verringert werden können und die Wirksamkeit erhöht werden kann, indem die Notwendigkeit, den NVS-Cache 218a-b mit Strom zu versorgen, vermieden wird. Zudem wird, verglichen mit einer Ausführungsform, die den NVS-Cache 218a-b beinhaltet, weniger Fabric-Bandbreite verbraucht, während dennoch ein skalierbarer Schreibcache in Form des Flash-Caches 220a bereitgestellt wird.
-
Auch der Betrieb des Systems 300 weist geringfügige Abweichungen auf, da der NVS-Cache 218a-b aus dem System 300 entfernt wird. Mit Blick auf eine Schreibanforderung fragt der Hostadapter 208a auch hier den primären Prozessorkomplex 214a, wo die Schreibdaten zwischengespeichert werden sollen, und der primäre Prozessorkomplex 214a antwortet, indem er Platz in seinem DRAM-Cache 216a und in dem Schreibbereich 302 eines Flash-Caches 220a zuweist. Die Daten werden in beide Speicherorte geschrieben, wobei der Flash-Cache 220a nun anstelle des NVS-Caches 218b als nicht flüchtiger Speicher der Schreibdaten dient und wobei der DRAM-Cache 216a im Vergleich zu dem Flash-Cache 220a eine höhere Speicherleistung bereitstellt.
-
Bei einer Ausführungsform werden die Daten direkt aus dem DRAM-Cache 216a in die Speichereinheiten 206a-n ausgelagert. Entsprechend kann der Flash-Cache 220a-n die Schreibdaten aus seinem Schreibbereich 302 freigeben. Bei einer Ausführungsform werden die Daten aus dem Schreib-Cachebereich 302 in den Zusatz-Lesebereich 306 (oder den Lesebereich 304) verschoben, indem die dem Flash-Cache 220a zugehörigen Metadaten aktualisiert werden. Der Abschluss dieser Aktion wird dann an die Prozessorkomplexe 214a-b zurückgemeldet. Alternativ können die Daten auch aus einem Flash-Cache 220a in einen anderen Flash-Cache 220c ausgelagert werden, bevor sie in die Speichereinheiten 206a-n ausgelagert werden. So dient ein zweiter Flash-Cache 220c z.B. als Zweitebenen-Zwischenspeicher zwischen einem ersten Flash-Cache 220a und den Speichereinheiten 206a-n.
-
Weil mindestens eine Kopie der Daten in einem Flash-Cache 220a-n gespeichert wird, werden unter Umständen zusätzliche Verarbeitungseinheiten benötigt, um der im Gegensatz zu einem DRAM bedeutend höheren Schreiblatenzzeit eines Flash-basierten Speichers entgegenzuwirken. Dies kann bei einer Ausführungsform durch die Verwendung eines Ringpuffers in dem Flash-Cache erzielt werden, der entweder batteriegepuffert ist oder mit Superkondensatoren geschützt wird. Nachdem die Daten in diesen Ringpuffer verlagert wurden, kann der Flash-Cache sofort die erfolgreiche Schreiboperation melden, bevor die Daten tatsächlich in den Flash-Speicher verschoben wurden. Um Strom und Kosten zu sparen, ist der Ringpuffer im Vergleich zu dem NVS-Cache 218a-b in der Regel verhältnismäßig klein und kann von Metadaten enthaltenden Strukturen, die dem Flash-Cache 220a-n zugehörig sind, getrennt sein.
-
Abgesehen davon, dass der NVS-Cache 218a-b nicht mehr als möglicher Lese-Datenspeicherort verfügbar ist, entspricht der Lesepfad demjenigen, der oben mit Bezug auf 2 beschrieben wurde.
-
5 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems 400 zeigt, das ausschließlich einen Flash-Cache 220a-n ohne einen DRAM-Cache 216a-b oder einen NVS-Cache 218a-b gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet. Bei der abgebildeten Ausführungsform werden der DRAM-Cache 216a-b und der NVS-Cache 218a-b der vorherigen Ausführungsformen durch die Flash-Caches 220a-n ersetzt, die mit dem E/A-Gehäusemodul 201 verbunden sind. Bei einer Ausführungsform macht sich diese Architektur das Vorhandensein einer Peer-to-Peer-Datenübertragungsmöglichkeit zwischen den E/A-Gehäusen 202a-n zunutze, die dem System 400 ermöglicht, eine zweite Kopie von Daten in einen zweiten Flash-Cache 220c in einem anderen E/A-Gehäuse 202b zu schreiben, ohne hierfür CPU-Zyklen des Prozessorkomplexes 214a zu beanspruchen, dabei jedoch Übertragungsbandbreite des Prozessorkomplexes 214a nutzt.
-
Wenn eine Schreibanforderung durch den Hostadapter 208a empfangen wird, fragt der Hostadapter 208a bei dieser Ausführungsform den Prozessorkomplex 214a ebenfalls nach einem Speicherort, an den die Daten verschoben werden sollen. Die möglichen Speicherorte können als Metadaten 402a-b gespeichert werden. Ein erster Zielspeicherort, der einem ersten Flash-Cache 220a in einem ersten E/A-Gehäuse 202a entspricht, wird zurückgegeben, und ein zweiter Zielspeicherort, der einem zweiten Flash-Cache 220c in einem zweiten E/A-Gehäuse 202b entspricht, wird zurückgegeben. Danach überträgt der Hostadapter 208a die Schreibdaten an die zwei Speicherorte der beiden verschiedenen Flash-Cache-Speicherorte.
-
Zu einem späteren Zeitpunkt können die Daten dann auf eine ähnliche Art und Weise, wie dies oben mit Bezug auf andere Ausführungsformen beschrieben wurde, auf Datenträger ausgelagert oder in andere Bereiche des Flash-Caches 220a-n verschoben werden. Vorzugsweise können die Prozessorkomplexe 214a-b dennoch gespeicherte Metadaten 402a-b verwalten, die dem Flash-Cache 220a-n zugehörig sind. Bei einem Ausfall des primären Prozessorkomplexes 214a können die Metadaten 402a-b an den sekundären primären Komplex 214b oder den Flash-Cache 220a-n oder aber an beide ausgegeben werden.
-
6 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens 600 für das Einfügen eines Flash-Caches 220a-n in ein Speichersystem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Das Verfahren 600 der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung und des Systems oben dargelegten Funktionen durchzuführen.
-
Das Verfahren 600 beginnt, wenn mindestens ein Flash-Cache 220a-n mit einem E/A-Gehäusemodul 201 verbunden wird 602. Der Flash-Cache 220a-n beinhaltet vorzugsweise einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul 201 verarbeitet werden, zwischenspeichert. Das E/A-Gehäusemodul 201 beinhaltet ein oder mehrere E/A-Gehäuse 2021-n mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten.
-
Eine Datenanforderung wird von einem Hostadapter 208a, der mit einem ersten Steckplatz des E/A-Gehäusemoduls 201 verbunden ist, empfangen 604. Der Hostadapter ist so konfiguriert, dass er einen Host 204a-n mit dem E/A-Gehäusemodul 201 verbindet. Das E/A-Gehäusemodul 201 verfügt über mindestens einen Einheitenadapter 210a-n, der mit einem zweiten Steckplatz des E/A-Gehäusemoduls 201 verbunden ist. Der Einheitenadapter ist so konfiguriert, dass er eine Speichereinheit 206a-n mit dem E/A-Gehäusemodul 201 verbindet.
-
Als Nächstes leitet der Hostadapter 208a die Datenanforderung an einen primären Prozessorkomplex 214a weiter 606, der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden. Der primäre Prozessorkomplex 214a greift auf den Flash-Cache zu 608, um eine oder mehrere Caching-Operationen, die der Datenanforderung zugehörig sind, durchzuführen. Der Flash-Cache 220a-n ist mit einem dritten Steckplatz des E/A-Gehäusemoduls 201 verbunden. Auf diese Weise ist ein Speichersystem in der Lage, einen Flash-basierten Cache 220a-n zu integrieren.
-
Bei einer Ausführungsform ist die Datenanforderung eine Leseanforderung, und das Zugreifen auf den mindestens einen Flash-Cache 220a-n zur Durchführung einer oder mehrerer Caching-Operationen beinhaltet das Abrufen von Daten aus dem Flash-Cache 220a-n. Bei einer anderen Ausführungsform ist die Datenanforderung eine Schreibanforderung, und das Zugreifen auf den mindestens einen Flash-Cache 220a-n zur Durchführung einer oder mehrerer Caching-Operationen beinhaltet das Speichern von Daten, die der Schreibanforderung zugehörig sind, in dem Flash-Cache 220a-n.
-
7 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens 700 für das Verarbeiten von Datenanforderungen, darunter Lese- und Schreibanforderungen, in einem Speichersystem mit einem Flash-Cache 220a-n gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Das Verfahren 700 der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung und des Systems oben dargelegten Funktionen durchzuführen.
-
Das Verfahren 700 beginnt, wenn der Hostadapter 208a eine Datenanforderung von einem Host 204a-n empfängt 702. Dabei wird zunächst ermittelt 704, ob es sich bei der Datenanforderung um eine Leseanforderung handelt. Wenn die Datenanforderung eine Leseanforderung ist, wird als nächstes ermittelt 706, ob die der Datenanforderung entsprechenden Daten in dem Flash-Cache 220a-n verfügbar sind. Wenn die Daten in dem Flash-Cache 220a-n verfügbar sind, werden sie aus dem Flash-Cache 220a-n abgerufen 708, wobei dies vorzugsweise geschieht, ohne dass hierfür auf zusätzliche Speichereinheiten zugegriffen wird. Wenn die Daten nicht in dem Flash-Cache 220a-n verfügbar sind, werden sie aus einer Speichereinheit 206a-n abgerufen 710. Dabei ist denkbar, dass die Daten bei anderen Ausführungsformen auch aus einem flüchtigen Cache (z.B. dem DRAM-Cache 216a) oder einem nicht flüchtigen Cache (z.B. dem NVS-Cache 218a), der dem Prozessorkomplex 214a-b zugehörig ist, abgerufen werden könnten.
-
Wenn ermittelt wird 704, dass die Datenanforderung keine Leseanforderung, sondern eine Schreibanforderung ist, werden die Daten in einem Schreibbereich 302 des Flash-Caches 220a zwischengespeichert 712. Bei einer Ausführungsform können die Daten zunächst in einen nicht flüchtigen DRAM-Cache 216a geschrieben und anschließend in den Flash-Cache 220a ausgelagert werden. Bei einer weiteren Ausführungsform können Daten, die in den Schreibbereich 302 des Flash-Cache 220a geschrieben wurden, in eine Speichereinheit 206a-n ausgelagert werden 714. Auf diese Weise können Datenanforderungen unter Verwendung eines Flash-Caches, der mit minimalen Änderungen an der Architektur in ein Speichersystem eingefügt wird, verarbeitet werden. Das Verfahren verbessert die Wahrscheinlichkeit von Cachetreffern und senkt in manchen Fällen die Kosten und erhöht die Gesamtleistung des Speichersystems.