-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf Computer und insbesondere auf Mechanismen zum Migrieren und Zwischenspeichern von Datensegmenten in einer Datenverarbeitungs-Speicherumgebung.
-
Beschreibung des verwandten Standes der Technik
-
In der heutigen Gesellschaft sind Computersysteme gang und gäbe. Computersysteme können auf dem Gebiet der Datenverarbeitung verwendet werden, wobei sich ”Zwischenspeicher” für gewöhnlich auf einen kleinen, schnellen Hauptspeicher oder eine Speichereinheit bezieht, die verwendet wird, um Daten oder Anweisungen zu speichern, auf die kürzlich zugegriffen wurde, auf die häufig zugegriffen wird oder auf die künftig wahrscheinlich zugegriffen werden wird. Ein Lesen aus einem Zwischenspeicher oder ein Schreiben in einen Zwischenspeicher ist (hinsichtlich Zugriffszeit und/oder Ressourcennutzung) für gewöhnlich günstiger als ein Zugreifen auf andere Hauptspeicher oder Speichereinheiten. Nachdem Daten zwischengespeichert wurden, kann auf diese im Zwischenspeicher zugriffen werden, und die Daten müssen nicht erneut abgerufen und/oder erneut verarbeitet werden, wodurch sowohl Zeit als auch Ressourcen gespart werden.
-
KURZDARSTELLUNG DER BESCHRIEBENEN AUSFÜHRUNGSFORMEN
-
Zwischenspeicher können als Mehrebenen-Zwischenspeicher bereitgestellt werden. Beispielsweise kann ein Zwischenspeichersystem sowohl einen „primären” als auch einen „sekundären” Zwischenspeicher beinhalten. Beim Lesen von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit zunächst im primären Zwischenspeicher nach Daten suchen und wenn die Daten nicht vorhanden sind, im sekundären Zwischenspeicher nach den Daten suchen. Wenn sich die Daten in keinem der Zwischenspeicher befinden, kann das Datenverarbeitungssystem oder die Datenverarbeitungseinheit Daten von Plattenlaufwerken oder anderen Speichereinheiten abrufen. Beim Schreiben von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit Daten in den primären Zwischenspeicher schreiben. Diese Daten können schließlich in den sekundären Zwischenspeicher oder eine Speichereinheit ausgelagert werden, um Platz im primären Zwischenspeicher zu schaffen.
-
Speicherumgebungen in Computersystemen können sogenannte mehrstufige Speicherarchitekturen beinhalten, die eine Vielfalt von Speichermedien wie Unternehmens-Festplattenlaufwerke (HDD), Serial-Advanced-Technology-Attachment-(SATA-)Plattenlaufwerke, Halbleiterdatenträger (SSD), Magnetbandlaufwerke und andere Einheiten beinhalten können. Daten können zwischen solchen Einheiten migriert werden. Ein Platzieren einiger Arten von Daten im geeigneten Medium kann die Gesamtleistung der Speicherumgebung stark verbessern.
-
Bei solchen mehrstufigen Speicherarchitekturen kann eine Verbesserung dergestalt eingeführt werden, dass einige Datensegmente unter Verwendung der mehrstufigen Speichermechanismen migriert werden können, während andere den sekundären Zwischenspeicher verwenden können, oder umgekehrt oder beides. Auf diese Weise kann die Gesamtleistung der Speicherumgebung weiter verbessert werden.
-
Bei solchen mehrstufigen Speicherarchitekturen, die sich der oben genannten „hybriden” Migrations- und Zwischenspeichermechanismen bedienen, besteht ein Bedarf an einem wirksamen Mittel, mit dem die diversen Speicherorganisationen (Datenträger, Pools usw.) zwischen Zwischenspeicher und mehrstufigen Speicherarchitekturen berücksichtigt werden, um eine optimale Leistung zu erzielen, wenn große „Anhäufungen” (clumps) von Daten „intensiv genutzt” werden.
-
Demgemäß und unter Berücksichtigung des Vorstehenden werden diverse beispielhafte Verfahrens-, System- und Computerprogrammprodukt-Ausführungsformen zum Verarbeiten von Daten in einer Datenverarbeitungs-Speicherumgebung durch eine Prozessoreinheit bereitgestellt, wobei die Datenverarbeitungs-Speicherumgebung zumindest Zwischenspeicher mit hoher Geschwindigkeit und mit niedrigerer Geschwindigkeit sowie mehrstufige Speicherebenen enthält. Bei einer Ausführungsform werden lediglich beispielhaft Gruppen von Datensegmenten zwischen den mehrstufigen Speicherebenen migriert, so dass gleichmäßig intensiv genutzte der Gruppen von Datensegmenten unter Verwendung eines Halbleiterdatenträger-(SSD-)Abschnitts der mehrstufigen Speicherebenen migriert werden, häufchenweise intensiv genutzte der Gruppen von Datensegmenten unter Verwendung des SSD-Abschnitts migriert werden, während der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten verwendet wird, und dass selten intensiv genutzten der Gruppen von Datensegmenten unter Verwendung des Zwischenspeichers mit niedrigerer Geschwindigkeit migriert werden, während eine niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten verwendet wird.
-
Neben der vorstehenden beispielhaften Ausführungsform werden diverse andere System- und Computerprogrammprodukt-Ausführungsformen bereitgestellt, und diese bieten entsprechende Vorteile. Die vorstehende Kurzdarstellung soll ausgewählte Konzepte, die in der folgenden ausführlichen Beschreibung näher beschrieben sind, in vereinfachter Form vorstellen. Diese Kurzdarstellung soll keine Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands kennzeichnen und auch nicht als Hilfe bei der Ermittlung des Umfangs des beanspruchten Gegenstands dienen. Der beanspruchte Gegenstand ist nicht auf Umsetzungen beschränkt, die beliebige oder alle der im Hintergrund angeführten Nachteile ausräumen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Um die Vorteile der Erfindung besser verstehen zu können, folgt eine eingehendere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf spezifische Ausführungsformen, die in den beiliegenden Zeichnungen veranschaulicht sind. Unter der Maßgabe, dass diese Zeichnungen Ausführungsformen der Erfindung zeigen und daher nicht als deren Umfang einschränkend anzusehen sind, wird die Erfindung anhand der beiliegenden Zeichnungen spezifischer und ausführlicher beschrieben und erläutert, wobei in den Zeichnungen:
-
1 ein Übersichts-Blockschaubild ist, das eine beispielhafte mehrstufige Speicherumgebung zeigt, in der Mechanismen gemäß der vorliegenden Erfindung umgesetzt sein können;
-
2 ein Übersichts-Blockschaltbild ist, das ein beispielhaftes Speichersystem zeigt, in dem Mechanismen gemäß der vorliegenden Erfindung umgesetzt sein können;
-
3 ein Übersichts-Blockschaltbild ist, das eine Ausführungsform eines Mehrebenen-Zwischenspeichers gemäß der Erfindung zeigt;
-
4 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum schlanken Zuweisen eines Speicherdatenträgers für einen Flash-Zwischenspeicher unter gemeinsamer Nutzung eines Speicherbereichspools zwischen Flash-Zwischenspeicher- und mehrstufigen Speicherarchitekturen zum Verbessern der Speichermigrationsleistung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
-
5 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Verwenden von Heatmaps (Karten der Nutzungsintensität von Daten) unterschiedlicher Granularität in Kombination mit Flash-Zwischenspeicher- und mehrstufigen Speicherarchitekturen zum Verbessern der Speichermigrationsleistung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt; und
-
6 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Freigeben von Flash-Zwischenspeicherplatz/Bereinigen von Speichern in Verbindung mit den beispielhaften Verfahren zeigt, wie sie in den obigen 4 und 5 veranschaulicht sind.
-
AUSFÜHRLICHE BESCHREIBUNG GEWISSER AUSFÜHRUNGSFORMEN
-
Bei einer beispielhaften mehrstufigen Speicherumgebung kann eine Migration von Datensegmenten für gewöhnlich mit großer Granularität betrieben werden. Dazu werden große Datenblöcke (z. B. 1 Gigabyte (GB)) zumindest teilweise auf der Grundlage von Statistiken migriert, die über große Intervalle gesammelt wurden. Bei einem solchen mehrstufigen System kann ein Datensegment migriert werden, wenn der Speicherbereich als ”intensiv genutzt” ermittelt wird (z. B. eine große Trefferanzahl aufgrund von Lesevorgängen aus dem Datensegment bzw. Schreibvorgängen in dieses).
-
Im Gegensatz zu Vorgängen mit großer Granularität, die von mehrstufigen Mechanismen durchgeführt werden, kann der sekundäre Zwischenspeicher oder „Flash-Zwischenspeicher” Datensegmente mit kleinerer Granularität bearbeiten (z. B. Speicherspur von 64 Kilobyte (KB)) und speichert Speicherspuren auf einem Flash-Hauptspeicher zwischen, wenn die Speicherspuren aus dem primären Zwischenspeicher (d. h. Dynamischer Nur-Lese-Speicher (DRAM)) tiefer gestuft werden.
-
Zwar kann ein mehrstufiger Speicher in Bezug auf das Zwischenspeichern von gleichmäßig intensiv genutzten Daten vorteilhaft und ein „Flash-Zwischenspeicher” für das Zwischenspeichern von selten intensiv genutzten Daten vorteilhaft sein, jedoch kann es zu gewissen Situationen kommen, in denen große Anhäufungen von Datensegmenten intensiv genutzt werden können. Es besteht ein Bedarf an einem Mechanismus, der ein solches Szenario wirksam handhabt.
-
Um eine solche Handhabung zu erzielen, stellen die veranschaulichten Ausführungsformen ein Hinzufügen einer weiteren Speicherstufe zum Zwischenspeichern und Migrieren und ein gemeinsames Nutzen von Datensegmenten zwischen mehrstufigem Speicher (große Granularität), mehrstufigem Speicher (mittlere Granularität) und Flash-Zwischenspeicher (geringe Granularität) bereit.
-
Darüber hinaus stellen die veranschaulichten Ausführungsformen Mechanismen zum Verwenden von Heatmaps bereit, die auf der Grundlage dieser unterschiedlicher Granularitäten arbeiten, um ein Ermittlungswerkzeug für das Migrieren und Zwischenspeichern von Datensegmenten in einer Datenverarbeitungs-Speicherumgebung vorzusehen, so dass eine optimale Leistung erzielt wird, wie nachstehend ausführlicher beschrieben. Datensegmente werden in diesem Heatmap-Kontext untersucht, um zu ermitteln, ob sie ”gleichmäßig”, ”gehäuft” oder ”selten” intensiv genutzt werden, wie nachstehend ausführlicher veranschaulicht. Danach werden unterschiedliche Zwischenspeicher- und Migrationsmechanismen auf jene Datensegmente angewandt, die als gleichmäßig intensiv genutzt, häufchenweise intensiv genutzt bzw. selten intensiv genutzt ermittelt wurden.
-
Es wird nun auf 1 Bezug genommen, in der ein Blockschaubild einer mehrstufigen Datenverarbeitungs-Speicherumgebung 100 gemäß einigen Ausführungsformen veranschaulicht ist. Die Datenverarbeitungs-Speicherumgebung 100 enthält eine erste Datenverarbeitungseinheit, z. B. ein Speichersystem 102, die mit einer oder mehreren Datenverarbeitungseinheiten, z. B. Clients 104, verbunden ist. Bei einigen Ausführungsformen können das Speichersystem 102 und die Clients 104 eine beliebige geeignete Datenverarbeitungseinheit aufweisen, darunter die derzeit auf dem Gebiet bekannten, z. B. ein Personal Computer, eine Arbeitsstation, ein Mainframe, ein Computer im mittleren Leistungsbereich, ein Netzwerkgerät, ein Palmtop-Computer, eine Telefoneinheit, ein Blade-Computer, ein mobiler Computer usw.
-
Bei einigen Ausführungsformen kann eine Speicherverwaltungseinheit 106, z. B. das Produkt Tivoli® Storage Manager® (TSM), das von international Business Machines (IBM®) Corporation vermarktet wird, für ein sicheres Speichern und Verwalten von Datensegmenten gemäß Aspekten der vorliegenden Erfindung verwendet werden. Die Speicherverwaltungseinheit 106 kann in einem Speicherverwaltungsserver, z. B. einem TSM-Server 102, oder anderswo ausgeführt werden. Bei einer Ausführungsform ist die Speicherverwaltungseinheit von und/oder in Verbindung mit einer Prozessoreinheit 105 betreibbar, wie gezeigt. Der Fachmann wird verstehen, dass diverse andere Konfigurationen des Prozessors 105, der Speicherverwaltungseinheit 106 und ähnlicher weiterer Verarbeitungs- und/oder Hauptspeicherkomponenten in Betracht gezogen werden. IBM, Tivoli und Tivoli Storage Manager sind Handelsmarken oder eingetragene Handel der IBM Corporation.
-
Der TSM kann Datenspeicherdienste für Clients, z. B. TSM-Clients 104a, zum Verwalten von Daten bereitstellen. Der TSM-Server 102 kann Dateien speichern, die von einem oder mehreren TSM-Clients 104a, 104b an den TSM-Server 102 gesendet werden. Die Speicherverwaltungseinheit 100 und/oder die Prozessoreinheit 105 kann bzw. können einem Systemadministrator ermöglichen, Speicherpools zu konfigurieren, wenn ein Speicherpool eine Gruppe von Einheiten aufweist, die zum Speichern von Daten verwendet werden, die von den TSM-Clients 104a, 104b erhalten werden. Speicherpools werden als Ziele zum Speichern von Vorgängen aus den TSM-Clients 104a, 104b verwendet; entsprechende Verarbeitungshinweise finden sich in TSM-Serverrichtlinien und anderen Unterlagen.
-
Wie gezeigt, kann eine Vielfalt von Speichereinheiten in einer Speicherhierarchie organisiert sein. Speichermedien innerhalb der Speicherhierarchie können somit in Datenstrukturen gruppiert werden, die hier als Speicherpools bezeichnet werden. Die Speicherhierarchie kann so organisiert sein, dass sie einer oder mehreren Kennzahlen entspricht, z. B. einer Leistungskennzahl, bei der es sich um eine Schreib- oder Lesegeschwindigkeit handeln kann. Die Speicherhierarchie 108 kann wie gezeigt so organisiert sein, dass die Hierarchiespitze einen Zwischenspeicherpool 110 mit einer höchsten Menge oder Qualität einer bestimmten Leistungskennzahl enthalten kann. Unter dem Zwischenspeicherpool 110 kann eine Anzahl von Einheiten der Klasse Halbleiterdatenträger (SSD) anhand der gleichen, ähnlichen oder anderer Kennzahlen in SSD-Pools organisiert sein (z. B. SSD-Pools 112 und 114).
-
Gemäß den Mechanismen der veranschaulichten Ausführungsformen kann die bestimmte Leistungskennzahl an sogenannte „Heatmaps” (der Einfachheit halber nicht gezeigt) gebunden sein, die anzeigen, ob Datensegmente mit geringen, mittleren oder großen Granularitäten einer gewissen Eigenschaft entsprechen, wie nachstehend ausführlicher beschrieben. Bei einer Ausführungsform kann diese Eigenschaft „gleichmäßig intensiv genutzt”, „häufchenweise intensiv genutzt” oder „selten intensiv genutzt” genannt werden, wie wiederum nachstehend ausführlicher beschrieben.
-
Unter den SSD-Pools 112 und 114 kann danach eine Stufe von Plattenpools (z. B. Plattenpools 116, 118 und 120) organisiert sein. Wie der Fachmann verstehen wird, können die Plattenpools 116, 118 und 120 eine Vielfalt von Platteneinheiten beinhalten, z. B. Pools von Unternehmens-Plattenlaufwerken, SATA-Plattenlaufwerken, Platteneinheiten, die in einer bestimmten Redundant-Array-of-Independent-Disks-(RAID-)Konfiguration konfiguriert sind, und dergleichen.
-
Die erste Stufe von Plattenpools kann sich über einer zweiten Stufe von Plattenpools (z. B. Pools 122, 124 und 126) befinden, da sie eine größere Menge, ein oder mehrere stärkere Attribute oder eine bessere Qualität der Leistungskennzahl aufweist. Unter der zweiten Stufe von Plattenpools kann sodann eine weitere Stufe von Magnetbandpools (z. B. Magnetbandpool 128, 130 und 132) organisiert sein. Für den Fachmann sind diverse Möglichkeiten für die Organisation solcher Speicherhierarchien 108 offensichtlich. Bei einer Ausführungsform kann der Systemadministrator durch Eingaben in den administrativen TSM-Client 104b oder einen anderen Mechanismus bei der Durchführung solcher Konfigurationen in der Speicherhierarchie 108 helfen. Zwar sind hier die Magnetbandpools 128, 130 und 132 innerhalb der Speicherhierarchie 108 liegend gezeigt sind, es sei jedoch angemerkt, dass solche Magnetbandpools im Allgemeinen in einem Speicherteilsystem zu finden sind, das in Bezug auf in der Hierarchie höher eingereihte Pools extern ist.
-
Unter Bezugnahme auf 2 ist eine Ausführungsform eines Speichersystems 102 gezeigt, das eine Anordnung von Festplattenlaufwerken 204 und Halbleiterdatenträger 204 enthält. Die internen Komponenten des Speichersystems 102 sind gezeigt, da das Zwischenspeichersystem bei einigen Ausführungsformen innerhalb eines solchen Speichersystems 102 umgesetzt sein kann, selbst wenn das Zwischenspeichersystem auch auf andere Speichersysteme 102 anwendbar sein kann. Wie gezeigt, enthält das Speichersystem 102 eine Speichersteuereinheit 200, einen oder mehrere Schalter 202 und eine oder mehrere Speichereinheiten 204, z. B. Festplattenlaufwerke 204 oder Halbleiterdatenträger 204 (z. B. Datenträger 204 auf der Grundlage von Flash-Hauptspeicher). Die Speichersteuereinheit 200 kann einem oder mehreren Clients 104 (z. B. Open-System- und/oder Mainframe-Server 104) das Zugreifen auf Daten in der einen oder den mehreren Speichereinheiten 204 ermöglichen. Die Clients 104 (z. B. 1) können über ein Speicherbereichsnetz (SAN, Storage Area Network) 220 zugänglich sein, wie gezeigt.
-
Bei ausgewählten Ausführungsformen enthält die Steuereinheit 200 einen oder mehrere Server 206. Die Speichersteuereinheit 200 kann auch Hostadapter 208 und Einheitenadapter 210 enthalten, um die Speichersteuereinheit 200 mit Hosteinheiten 106 bzw. Speichereinheiten 203, 204 zu verbinden. Mehrere Server 206a, 206b können eine Redundanz bereitstellen, um sicherzustellen, dass Daten für verbundene Hosts 106 immer zur Verfügung stehen. Wenn ein Server 206a ausfällt, bleibt somit der andere Server 206b funktionsfähig, um sicherzustellen, dass eine E/A zwischen den Clients 104 und den Speichereinheiten 204 fortgesetzt werden kann. Dieser Prozess kann als „Funktionsübernahme” bezeichnet werden.
-
Ein Beispiel für ein Speichersystem 102 mit einer Architektur ähnlich der in 2 gezeigten ist das DS8000TM-Unternehmensspeichersystem von IBM®. Das DS8000TM ist eine Hochleistungs-Speichersteuereinheit mit sehr hoher Speicherkapazität, die einen Plattenspeicher bereitstellt, der so ausgelegt ist, dass er durchgehende Vorgänge unterstützt. Die Modelle der DS8000TM-Reihe können die POWER5TM-Server 206a, 206b von IBM verwenden, die in die Virtualisierungsmodultechnologie von IBM integriert sein können. Nichtsdestotrotz ist das hier offenbarte Zwischenspeichersystem nicht auf das DS8000TM-Unternehmensspeichersystem von IBM® beschränkt, sondern kann in einem beliebigen vergleichbaren oder analogen Speichersystem 110 umgesetzt werden, unabhängig vom Hersteller, vom Produktnamen oder von den Komponenten oder Komponentennamen, die dem System 110 zugehörig sind. Außerdem wird ein beliebiges System, dass von einer oder mehreren Ausführungsformen der Erfindung profitieren könnte, als in den Umfang der Erfindung fallend angesehen. Somit ist das DS8000TM von IBM® nur beispielhaft dargeboten und soll nicht einschränkend sein.
-
Bei ausgewählten Ausführungsformen kann jeder Server 206 einen oder mehrere Prozessoren 212 (z. B. symmetrische n-Wege-Multiprozessoren) und einen Hauptspeicher 214 enthalten. Als Hauptspeicher 214 kommt ein flüchtiger Hauptspeicher (z. B. RAM) sowie ein nichtflüchtiger Hauptspeicher (z. B. ROM, EPROM, EEPROM, Festplatten, Flash-Hauptspeicher usw.) infrage. Der flüchtige Hauptspeicher und der nichtflüchtige Hauptspeicher können bei einigen Ausführungsformen Softwaremodule speichern, die auf dem einen oder den mehreren Prozessoren 212 ausgeführt und verwendet werden, um auf Daten in den Speichereinheiten 204 zuzugreifen. Die Server 206 können zumindest eine Instanz dieser Softwaremodule beherbergen. Diese Softwaremodule können alle Lese- und Schreibanfragen an logische Datenträger in den Speichereinheit 204 verwalten.
-
Bei ausgewählten Ausführungsformen kann der Hauptspeicher 214 einen Zwischenspeicher 218 enthalten. Immer wenn ein Client 104 (z. B. ein Open-System- oder Mainframe-Server 104) einen Lesevorgang durchführt, kann der Server 206, der den Lesevorgang durchgeführt, Daten aus den Speichereinheiten 204 abrufen und diese in seinem Zwischenspeicher 218 speichern, wenn diese erneut benötigt werden. Wenn die Daten von einem Client 104 erneut angefordert werden, kann der Server 206 die Daten anstatt aus den Speichereinheiten 204 aus dem Zwischenspeicher 218 abrufen, wodurch sowohl Zeit als auch Ressourcen gespart werden. Wenn ein Client 104 einen Schreibvorgang durchführt, kann der Server 106, der die Schreibanfrage erhält, den Schreibvorgang gleichermaßen in seinem Zwischenspeicher 218 speichern und den Schreibvorgang zu einem späteren Zeitpunkt an die Speichereinheiten 204 auslagern. Wenn ein Schreibvorgang im Zwischenspeicher 218 gespeichert wird, kann der Schreibvorgang auch in einem nichtflüchtigen Speicher 220 des gegenüberliegenden Servers 206 gespeichert werden, so dass der Schreibvorgang bei einem Ausfall des ersten Servers 206 durch den gegenüberliegenden Server 206 wiederhergestellt werden kann.
-
Unter Bezugnahme auf 3 und unter weiterer allgemeiner Bezugnahme auf 2 kann ein Speichersystem 102 wie zuvor erwähnt sowohl Festplattenlaufwerke 204 als auch Halbleiterdatenträger (SSDs) 204 enthalten, z. B. Halbleiterdatenträger 204 auf der Grundlage von Flash-Speichern. Die E/A-Leistung der SSDs 204 oder anderer Typen von Halbleiterdatenträgern ist für gewöhnlich viel höher als die E/A-Leistung der Festplattenlaufwerke 204. Aufgrund der höheren E/A-Leistung können die Halbleiterdatenträger 204 bei einigen Ausführungsformen verwendet werden, um einen großen sekundären Zwischenspeicher 300 zwischen dem primären Zwischenspeicher 218 und den Festplattenlaufwerken 204 bereitzustellen. Dieser große sekundäre Zwischenspeicher 300 kann die E/A-Leistung des Speichersystems 102 erheblich verbessern und kann hier als „Flash-Zwischenspeicher” bezeichnet werden. Der primäre Zwischenspeicher kann hier als Hochgeschwindigkeits-Zwischenspeicher oder Zwischenspeicher mit höherer Geschwindigkeit bezeichnet werden (da er für gewöhnlich Zugriff auf die schnellsten Dynamischer-Nur-Lese-Speicher- bzw. DRAM-Architekturen hat), auch wenn diese Terminologie in keinster Weise einschränkend sein soll.
-
Wenn eine Leseanfrage vom Server 206 (z. B. 2) erhalten wird, kann ein Server 206 unter Verwendung des sekundären Zwischenspeichers 300 zunächst im primären Zwischenspeicher 218 nach Daten suchen und wenn die Daten nicht vorhanden sind, im sekundären Zwischenspeicher 300 (der sich in den Halbleiterdatenträgern 204 befindet) nach den Daten suchen. Wenn die Daten in keinem Zwischenspeicher vorhanden sind, kann der Server 206 die Daten aus den Plattenlaufwerken 204 abrufen. Beim Schreiben von Daten kann der Server 206 gleichermaßen zunächst die geänderten Daten in den primären Zwischenspeicher 218 schreiben. Diese geänderten Daten können schließlich in den sekundären Zwischenspeicher 300 ausgelagert werden, um Platz im primären Zwischenspeicher 218 zu schaffen. Diese Daten können danach auf die Plattenlaufwerke 204 ausgelagert werden, um je nach Bedarf Platz im sekundären Zwischenspeicher 300 zu schaffen.
-
Bei einigen Ausführungsformen kann der sekundäre Zwischenspeicher 300 derart bemessen sein, dass er ungefähr 1 bis 20 Prozent oder bei anderen Ausführungsformen ungefähr 5 Prozent der Gesamtspeicherkapazität des Speichersystems 102 bereitstellt. Bei einem Speichersystem 102, das ungefähr 10 Terabyte (TB) an Speicherkapazität (sowohl von den Festplattenlaufwerken 204 als auch den Halbleiterdatenträger 204) aufweist, können somit ungefähr 0,5 TB dieses Speicherplatzes als sekundärer und „Flash”-Zwischenspeicher 300 verwendet werden. Bei einer derart hohen Speicherkapazität des sekundären Zwischenspeichers 300 müssen Daten gegebenenfalls weitaus seltener als bei herkömmlichen primären oder sekundären Zwischenspeichern aus dem sekundären Zwischenspeicher 300 ausgelagert werden. Beispielsweise könnte ein sehr großer sekundärer Zwischenspeicher 300 Schreibvorgänge für einen gesamten Tag speichern, ohne dass die Schreibvorgänge auf die Plattenlaufwerke 204 ausgelagert werden müssen. Die Schreibvorgänge könnten danach in der Nacht oder während eines Zeitraums mit relativer Inaktivität ausgelagert werden. Algorithmen zum Verwalten von Zwischenspeichern können so umgestaltet werden, dass der zusätzliche Platz im sekundären Zwischenspeicher 300 effizient genutzt wird und von den Leistungsverbesserungen profitiert wird, die durch Verwendung eines großen sekundären Zwischenspeichers 300 möglich werden.
-
Wie in 3 gezeigt, kann jeder Zwischenspeicher 218, 300 Daten 302a, 302b und Metadaten 304a, 304b speichern. Die Daten 302a, 302b können in Form von Speicherspuren gespeichert werden. Jeder Speicherspur im sekundären Zwischenspeicher 300 kann ein sekundärer Speicherspur-Steuerblock (STCB, Secondary Track Control Block) zugeordnet sein. Der STCB kann hier auch als Zwischenspeicher-Flash-Steuerblock (CFCB, Cache Flash Control Block) bezeichnet werden. Der STCB kann neben anderen Informationen für jede Speicherspur einen Zeiger auf die nächste Speicherspur in der Kette, Informationen darüber, ob die Speicherspur frei ist oder verwendet wird, sowie Informationen enthalten, die anzeigen, welche Sektoren in der Speicherspur geändert wurden. Bei einigen Ausführungsformen können die STCBs für alle Speicherspuren in einer STCB-Tabelle 306, die wie gezeigt im sekundären Zwischenspeicher 300 gespeichert ist, oder anderswo gespeichert werden.
-
Darüber hinaus kann jeder Speicherspur im sekundären Zwischenspeicher 300 ein sekundärer Stride-Steuerblock (SSCB, Secondary Stride Control Block) zugeordnet sein. Der SSCB kann wie der STCB diagnostische und/oder statische Informationen enthalten, diese beziehen sich jedoch auf im sekundären Zwischenspeicher 300 gespeicherte Strides (Gruppen von Speicherspuren). Der SSCB kann hier auch als Zwischenspeicher-Flash-Element (CFE, Cache Flash Element) bezeichnet werden. Bei einigen Ausführungsformen können die SSCBs für alle Strides in einer SSCB-Tabelle 308, die wie gezeigt im sekundären Zwischenspeicher 300 gespeichert ist, oder anderswo gespeichert werden.
-
Gleichermaßen kann der primäre Zwischenspeicher 218 Metadaten 304a speichern, die dem sekundären Zwischenspeicher 300 zugehörig sind. Beispielsweise kann der primäre Zwischenspeicher 218 eine sekundäre Zwischenspeicher-Indextabelle (SCIT, Secondary Cache Index Table) 308 speichern, die ein Verzeichnis für Speicherspuren im sekundären Zwischenspeicher 300 bereitstellt. Bei einigen Ausführungsformen ist die SCIT 308 im Wesentlichen eine Hashtabelle mit einer konstanten Hashfunktion. Um eine spezifische Speicherspur in der SCIT 308 zu lokalisieren, kann die Hashfunktion einen Speicherspuridentifikator (z. B. eine Speicherspurnummer) in einen Hashwert umwandeln. Dieser Hashwert kann dann in der SCIT 308 nachgeschlagen werden, um den STCB für die Speicherspur zu finden. Alternativ könnte die SCIT 308 in ein Zwischenspeicherverzeichnis des primären Zwischenspeichers 218 integriert werden, wodurch eine einzelne Hashtabelle bereitgestellt wird, die Speicherspuren sowohl für den primären als auch den sekundären Zwischenspeicher 218, 300 speichert. Bei ausgewählten Ausführungsformen wird die SCIT 308 ausschließlich im primären Zwischenspeicher 218 gehalten. Die SCIT 308 kann (im Fall einer Funktionsübernahme, eines Zurücksetzens oder eines einleitenden Ladens des Mikrocodes (IML, Initial Microcode Load)) durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
-
Bei einigen Ausführungsformen kann der primäre Zwischenspeicher 218 auch eine Liste von freien Speicherspuren (LOFT, List of Free Tracks) 310 speichern, die anzeigt, welche Speicherspuren im sekundären Zwischenspeicher 300 frei sind (d. h. unbelegt). Diese Liste 310 kann verwendet werden, um freien Platz im sekundären Zwischenspeicher 300 zu lokalisieren, um Daten aus dem primären Zwischenspeicher 218 in den sekundären Zwischenspeicher 300 auszulagern. Bei ausgewählten Ausführungsformen kann das Einfügen oder Entfernen von Speicherspuren aus der LOFT 310 logstrukturiert durchgeführt werden. Beispielsweise können Speicherspuren am Ende der LOFT 310 eingefügt und an der vorderen Stelle der LOFT 310 gelöscht werden. Die LOFT 310 kann ausschließlich im primären Zwischenspeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
-
In dem primären Zwischenspeicher 218 kann auch ein sortierter Speicherspurbaum (STOT, Sorted Tree of Tracks) 312 gespeichert werden, der die Speicherspuren nach „Speicherspurkennung” oder einem anderen Indikator sortiert. Die STOT 312 kann verwendet werden, um die Suchzeit (auf den Plattenlaufwerken 204) beim Auslagern von Speicherspuren aus dem sekundären Zwischenspeicher 300 auf die Plattenlaufwerke 204 zu minimieren. Die STOT 312 kann ausschließlich im primären Zwischenspeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
-
In dem primären Zwischenspeicher 218 können auch Statistiken pro Stride (STATS, Statistics per Stride) 314 für jeden Stride gespeichert werden, der eine oder mehrere Speicherspuren im sekundären Zwischenspeicher 300 hat. Ein „Stride” bezieht sich auf einen Satz von logisch sequenziellen Daten, die über mehrere Platten segmentiert sein könnten, verknüpft mit weiteren Paritätsinformationen, wie z. B. in einer RAID-5-Konfiguration (Redundant Array of Inexpensive Disks) verwendet. Im Allgemeinen können die STATS 314 verwendet werden, um zu ermitteln, welche Speicherspur die geringste Anzahl von Plattenvorgängen erfordert, um eine Auslagerung aus dem sekundären Zwischenspeicher 300 auf die Plattenlaufwerke 204 durchzuführen. Im Allgemeinen ist der Auslagerungsaufwand für eine Speicherspur niedriger, wenn mehr Speicherspuren in einem Stride vorhanden sind. Bei der Auswahl von auszulagernden Speicherspuren können Speicherspuren, die die geringste Anzahl von Plattenvorgängen erfordern, zuerst ausgelagert werden, um die Ressourcennutzung zu minimieren. Bei ausgewählten Ausführungsformen können die STATS 314 Informationen wie für jeden Stride die Anzahl von Speicherspuren, die im sekundären Zwischenspeicher 300 vorhanden sind, und die Anzahl von Plattenvorgängen, die zum Auslagern einer Speicherspur in einem Stride erforderlich sind, speichern. Bei einigen Ausführungsformen können die STATS 314 ein „Neuheiten”-Bit für jeden Stride speichern. Das Neuheitenbit kann jedes Mal erhöht werden, wenn ein Entfernungsprozess einen Stride durchläuft. Das Neuheitenbit kann jedes Mal zurückgesetzt werden, wenn eine Speicherspur zu einem Stride hinzugefügt wird. Das Neuheitenbit kann verwendet werden, um Strides, auf die aktiv geschrieben wird, im sekundären Zwischenspeicher 300 zu halten. Die STATS 314 kann ausschließlich im primären Zwischenspeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
-
Die oben beschriebenen Metadaten 304a, 304b können auf diverse unterschiedliche Arten strukturiert und gespeichert werden und sind nicht auf die veranschaulichte Struktur oder Organisation beschränkt. Die Metadaten 304a, 304b werden beispielhaft angeführt, um eine Technik zum Speichern und Strukturieren der Metadaten 304a, 304b zu zeigen. Bei einigen Ausführungsformen beispielsweise können die Daten und Metadaten zusammen in einer kreisförmigen logstrukturierten Anordnung im sekundären Zwischenspeicher 300 gespeichert werden. Andere Verfahren zum Strukturieren und Speichern von Metadaten 304a, 304b können verwendet werden und fallen in den Umfang der Erfindung.
-
Wie zuvor erwähnt, besteht ein Vorteil eines großen sekundären Zwischenspeichers 300 darin, dass Daten weitaus seltener als bei herkömmlichen sekundären Zwischenspeichern aus der sekundären Zwischenspeicher 300 ausgelagert werden können. Dadurch ist es möglich, dass sich mehr Daten im zweiten Zwischenspeicher 300 ansammeln können, bevor diese auf die Plattenlaufwerke 204 ausgelagert werden. Bei ausgewählten Ausführungsformen können eine Vorrichtung und ein Verfahren gemäß der Erfindung somit so konfiguriert sein, dass sie warten, bis sich vollständige Datenstrides angesammelt haben und im zweiten Zwischenspeicher 300 zusammenfügen, bis die Daten auf die Plattenlaufwerke 204 ausgelagert werden. Wie oben erläutert, kann dies die Anzahl von Plattenvorgängen minimieren, die zum Auslagern von Daten aus dem sekundären Zwischenspeicher 300 auf die Plattenlaufwerke 204 erforderlich sind, wodurch die allgemeine Systemleistung verbessert wird.
-
Unter Bezugnahme auf 4 ist ein beispielhaftes Verfahren zum schlanken Zuweisen eines mit niedrigerer Geschwindigkeit (z. B. „Flash-Zwischenspeicher”) (im Gegensatz zur Verwendung eines Zusatz-Datenträgers mit fester Größe) unter gemeinsamer Nutzung von Datensegmenten mit diversen Granularitäten zwischen dem Flash-Zwischenspeicher und mehreren mehrstufigen Speicherebenen in einer Datenverarbeitungsumgebung veranschaulicht. Bei der veranschaulichten Ausführungsform ist der sekundäre Zwischenspeicher als die Zwischenspeicherebene mit niedrigerer Geschwindigkeit dargestellt, und der Zwischenspeicher mit höherer Geschwindigkeit kann in der Speichersteuereinheit als DRAM-Zwischenspeicher umgesetzt sein wie bei einer vorherigen beispielhaften Veranschaulichung. Ein Verfahren 400 beginnt (Schritt 402). Bei einer Ausführungsform ist die mehrstufige Speicherarchitektur so konfiguriert, dass sie einen gleichen Speicherpool (z. B. Speicherbereichspool) gemeinsam mit dem Zwischenspeicher mit niedrigerer Geschwindigkeit nutzt. Bei einer Ausführungsform kann ein solcher gemeinsam genutzter Speicherpool 1-GB-Speicherbereiche von Datensegmenten beinhalten. Anstatt einen Zusatzdatenträger zu verwenden, wird die Zwischenspeicherspeicher mit niedrigerer Geschwindigkeit schlank zugewiesen (z. B. mit variabler Größe und dynamischer Antwort auf sich ändernde Speicherbedingungen). Bei einer Ausführungsform kann der schlank zugewiesene Zwischenspeicher mit niedrigerer Geschwindigkeit um die oben genannte Datengröße von 1-GB-Blöcken wachsen oder schrumpfen, wiederum je nach sich verändernden Speicherbedingungen in der Umgebung.
-
Demgemäß und unter Berücksichtigung des Vorstehenden werden in Schritt 404 Gruppen von Datensegmenten zwischen mehrstufigem Speicher migriert, so dass gleichmäßig intensiv genutzte Datensegmente auf einen Halbleiterdatenträger-(SSD-)Abschnitt der mehrstufigen Speicherebenen migriert werden, sogenannte „häufchenweise intensiv genutzte” Datensegmente, wie nachstehend ausführlicher beschrieben, werden migriert, um den SSD-Abschnitt zu verwenden, während gleichzeitig der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten Datensegmente verwendet wird, und selten intensiv genutzte Datensegmente werden migriert, um den Zwischenspeicher mit niedrigerer Geschwindigkeit zu verwenden, während gleichzeitig eine sogar noch niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten Datensegmente verwendet wird. Danach endet das Verfahren 400 (Schritt 406).
-
Das Verfahren 400 kann weiter verbessert werden, indem Heatmaps mit unterschiedlicher Granularität für ein Ermitteln, welche Datensegmente gleichmäßig intensiv genutzt, häufchenweise intensiv genutzt bzw. selten intensiv genutzt werden, verwendet werden. Bei einer Ausführungsform beispielsweise kann eine zweistufige Begutachtung erfolgen, wobei gegebenenfalls festgestellt wird, dass ein ausgewähltes Datensegment gleichmäßig intensiv genutzt oder häufchenweise intensiv genutzt wird, indem z. B. zunächst die Heatmap mit großer Granularität (d. h. 1-GB-Blöcke) untersucht wird, um zu ermitteln, ob die Heatmap mit großer Granularität intensiv genutzt wird, und ist dies nicht der Fall, wird die Heatmap mit kleinerer Granularität (z. B. ein Stride-nach-Stride-Vergleich oder KB-Blöcke) untersucht, um zu ermitteln, ob eine gewisse Anzahl dieser granularen Abschnitte intensiver als ein vorab festgelegter Schwellenwert genutzt wird. Wenn bei einem bestimmten Speicherbereich mehr als 500 Strides in einem 1-GB-Speicherbereich intensiv genutzt werden, kann man davon ausgehen, dass die Heatmap mit niedrigerer Granularität einen gleichmäßig intensiv genutzten Speicherbereich anzeigt. Wenn eine gewisse Anzahl über einem vorab festgelegten Schwellenwert von Abschnittabschnitten des 1-GB-Speicherbereichs intensiv genutzt wird, kann der Speicherbereich wiederum als gleichmäßig intensiv genutzt angesehen werden. Wenn alternativ die Heatmap für den 1-GB-Speicherbereich keine intensive Nutzung anzeigt, aber zumindest einer der Abschnittabschnitte des Datensegments (z. B. 10- oder 100-MB-Abschnittdatenbereiche) intensiv genutzt wird, kann der jeweilige Speicherbereich als häufchenweise intensiv genutzt angesehen werden.
-
Um eine seltene intensive Nutzung zu ermitteln, kann die Heatmap mit größerer Granularität gleichermaßen zunächst herangezogen werden, um eine intensive Nutzung über einem vorab festgelegten Schwellenwert zu ermitteln, und ist dies nicht der Fall, kann die Heatmap mit niedrigerer Granularität verwendet werden, um zu ermitteln, ob weniger als die vorab festgelegte Anzahl von granularen Abschnitten intensiver als der vorab festgelegte Schwellenwert genutzt werden.
-
Die ermittelte gleichmäßige intensive Nutzung, häufchenweise intensive Nutzung und/oder seltene intensive Nutzung kann danach verwendet werden, um Daten zwischen Flash-Zwischenspeicher- und mehrstufigen Speicherarchitekturen gemäß den Mechanismen der vorliegenden Erfindung zu migrieren, wie nachstehend ausführlicher beschrieben und in 5 gezeigt.
-
5 veranschaulicht ein weiteres beispielhaftes Verfahren zum Migrieren von Daten gemäß Mechanismen der veranschaulichten Ausführungsformen unter Berücksichtigung gleichmäßiger und seltener intensiver Nutzung, die z. B. gemäß der vorherigen Beschreibung ermittelt werden kann.
-
Ein Verfahren 500 beginnt (Schritt 502) mit der Konfiguration von Heatmaps mit kleiner, mittlerer und großer Granularität (Schritt 504). Bei einer Ausführungsform können diese Heatmaps auf 1-GB-Speicherbereichen für die größere Granularität, auf mittleren Abschnittspeicherbereichen (z. B. 10- oder 100-MB-Abschnitten) für die mittlere Granularität und auf einer Anzahl von N Plattenblöcken (z. B. einem Stride von 1-MB-Blöcken) für die kleinere Granularität konfiguriert werden.
-
Man betrachte die folgende beispielhafte Ausführungsform. Ein bestimmter Flash-Zwischenspeicher kann mit einem 1- bis 128-Blöcken-Zwischenspeicher, Ebene 2 (L2), konfiguriert sein, ein Zwischenspeicher mit niedrigerer Geschwindigkeit kann mit einer oberen Stufe mit einer 10-MB-Kopie-SDD auf L2 und einer unteren Stufe mit 1-GB-Migrations-HDD auf L3 konfiguriert sein. Bei einem solchen Beispiel können 100-x-10-MB-Blöcke (im Gegensatz zu 1-GB-Blöcken) auf einem SSD-Speicher für häufchenweise intensiv genutzte 1-GB-Speicherbereiche verwendet werden. Für diese Blöcke können gleichmäßig intensiv genutzte Segmente im SSD-Abschnitt zwischengespeichert und/oder aus dem Flash-Zwischenspeicher migriert werden, und der Flash-Zwischenspeicher kann verwendet werden, um den 1-GB-Speicherbereich in den SSD-Abschnitt zu verschieben. Im Fall von selten intensiv genutzten Segmenten kann der Flash-Zwischenspeicher verwendet werden, um solche Daten und/oder aus dem SSD-Abschnitt migrierte Daten zwischenzuspeichern. Im Fall von häufchenweise intensiv genutzten Segmenten können neben den oben genannten 1-GB-Speicherbereichen schließlich 10-MB-Blöcke verwendet werden, und der Flash-Zwischenspeicher kann (soweit möglich) verwendet werden, um diese Segmente zwischenzuspeichern, wobei der Rest in den SSD-Abschnitt migriert und/oder dort zwischengespeichert wird.
-
Unter erneuter Bezugnahme auf das Verfahren 500 wird in Schritt 506 ermittelt, ob ein ausgewählter Speicherbereich gleichmäßig intensiv genutzt oder häufchenweise intensiv genutzt wird. Wie zuvor erwähnt, kann bei einer Ausführungsform festgestellt werden, dass der Speicherbereich gleichmäßig intensiv genutzt wird, wenn die Heatmap für die größere Granularität eine hohe Nutzungsintensität anzeigt (d. h. intensiver als ein vorab festgelegter Schwellenwert) und/oder alternativ wenn zumindest eine Anzahl von M der N Plattenblöcke mit niedrigerer Granularität intensiv genutzt wird. Wie zuvor erwähnt, kann bei einer Ausführungsform erneut festgestellt werden, dass der Speicherbereich häufchenweise intensiv genutzt wird, wenn die Heatmap für die große Granularität keine hohe Nutzungsintensität anzeigt, jedoch zumindest eine der Anhäufungen in einem Speicherteilbereich (wiederum vielleicht 10- oder 100-MB-Abschnitte) intensiv genutzt wird.
-
Wenn festgestellt wird, dass der Speicherbereich gleichmäßig intensiv genutzt oder häufchenweise intensiv genutzt wird, geht das Verfahren 500 zu Schritt 516 über, in dem abgefragt wird, ob der gleichmäßig intensiv genutzte/häufchenweise intensiv genutzter Speicherbereich aktuell im SSD-Abschnitt der mehrstufigen Speicherarchitektur gespeichert ist (z. B. im Gegensatz zum Flash-Zwischenspeicher mit niedrigerer Geschwindigkeit). Ist dies nicht der Fall, wird der gesamte intensiv genutzte Speicherbereich oder der häufchenweise intensiv genutzte Abschnittspeicherbereich auf den SSD-Abschnitt der mehrstufigen Speicherarchitektur migriert (Schritt 520), und das Verfahren kehrt zu Schritt 506 zurück. Bei einer Ausführungsform ist der Zugriff des Flash-Zwischenspeichers (oder die Datenverarbeitung einer beliebigen Form solcher zwischengespeicherten Daten) auf solche migrierten Daten deaktiviert, bis der Speicherbereich oder Abschnittspeicherbereich vollständig auf den SSD-Abschnitt migriert wurde, damit die Leistung nicht negativ beeinflusst wird.
-
Unter erneuter Bezugnahme auf Schritt 516, wenn festgestellt wird, dass der Speicherbereich aktuell im SSD-Abschnitt zwischengespeichert ist, wird/werden der Speicherbereich/der eine oder die mehreren Speicherteilbereiche im SSD-Abschnitt gehalten (Schritt 518), und das Verfahren kehrt zu Schritt 506 zurück.
-
Unter erneuter Bezugnahme auf Schritt 506, wenn festgestellt wird, dass der Speicherbereich nicht gleichmäßig intensiv genutzt wird, geht das Verfahren 500 zu Schritt 508, in dem abgefragt wird, ob der Speicherbereich selten intensiv genutzt wird. Erneut wird bei einer Ausführungsform gegebenenfalls festgestellt, dass der Speicherbereich selten intensiv genutzt wird, wenn die Heatmap für die größere Granularität keine hohe Nutzungsintensität anzeigt (d. h. nicht intensiver als ein vorab festgelegter Schwellenwert) und/oder alternativ wenn zumindest eine Anzahl von M der N Plattenblöcke mit niedrigerer Granularität nicht intensiv genutzt wird.
-
Wenn in Schritt 508 festgestellt wird, dass der Speicherbereich nicht selten intensiv genutzt wird, kehrt das Verfahren zu Schritt 506 zurück, wie gezeigt. Wenn festgestellt wird, dass der Speicherbereich selten intensiv genutzt wird, geht das Verfahren zu Schritt 510, in dem erneut abgefragt wird, ob sich der Speicherbereich im SSD-Abschnitt der mehrstufigen Speicherarchitektur befindet (wiederum im Gegensatz zum Zwischenspeicher mit niedrigerer Geschwindigkeit). Ist dies der Fall, wird jener Abschnitt des Speicherbereichs, bei dem eine seltene Nutzung festgestellt wird, unter Verwendung des SSD-Abschnitts in den Zwischenspeicher mit niedrigerer Geschwindigkeit migriert (Schritt 514) und der gesamte Speicherbereich (oder bei einer weiteren Ausführungsform alternativ jener Abschnitt des Speicherbereichs, der nicht als selten intensiv genutzt erachtet wird) von der SSD auf die HDD migriert. Das Verfahren 500 kehrt sodann zu Schritt 506 zurück, um bezüglich eines weiteren Speicherbereichs abzufragen (oder vielleicht wird der gleiche Speicherbereich mittlerweile gleichmäßig intensiv genutzt). Unter erneuter Bezugnahme auf Schritt 510, wenn festgestellt wird, dass der Speicherbereich aktuell im SSD-Abschnitt zwischengespeichert ist, wird der Speicherbereich im SSD-Abschnitt gehalten (Schritt 512), und das Verfahren kehrt zu Schritt 506 zurück.
-
In 6 wird sodann ein beispielhafter Mechanismus zur Speicherplatzrückgewinnung/Speicherbereinigung auf Datensegmenten, die in einem Flash-Zwischenspeicher zwischengespeichert sind, gemäß der vorliegenden Erfindung, um angemessen Platz zum Zwischenspeichern und Migrieren von Daten beispielsweise über einen Zeitraum zu halten.
-
Ein Verfahren 600 beginnt (Schritt 602) mit dem Untersuchen eines Datensegments (z. B. Speicherbereich), um einen aktuellen Belegungsgrad zu ermitteln (Schritt 604). Wiederum kann die relevante Größe des Speicherbereichs hier variieren, im Einklang mit den vorherigen Beispielen kann die Speicherbereichsgröße jedoch 1 GB betragen. Wenn festgestellt wird, dass der Speicherbereich unter einen bestimmten Belegungsgrad fällt (Schritt 606), wird der Speicherbereich speicherbereinigt, um Platz im Flash-Zwischenspeicher freizugeben (Schritt 608). Unter erneuter Bezugnahme auf Schritt 606, wenn ermittelt wird, dass die Belegungsgrad nicht unter den oben genannten Belegungsgrad fällt, kehrt das Verfahren 600 zu Schritt 604 zurück, um einen weiteren Speicherbereich (oder vielleicht zu einem späteren Zeitpunkt den gleichen Speicherbereich) zu prüfen. Der Fachmann wird verstehen, dass der Belegungsgrad eines bestimmten Speicherbereichs in einem ermittelten Flash-Zwischenspeicher abnehmen kann, wenn Speicherbereiche auf die verwalteten Speicherstufen migriert werden oder Speicherspuren aus dem Speicherbereich gemäß einer Migrationsrichtlinie (z. B. selten verwendet (LRU, Least Recently Used) tiefer gestuft werden.
-
Wie der Fachmann verstehen wird, können diverse Schritte im Verfahren 500 individuell auf eine bestimmte Anwendung angepasst werden. Jedenfalls können einige Datensegmente zwischen dem mehrstufigen Speicher und dem Flash-Zwischenspeicher (dem Zwischenspeicher mit niedrigerer Geschwindigkeit) hin- und zurückgeleitet werden, z. B. wenn festgestellt wurde, dass ein ausgewähltes Datensegment, das sich aktuell im Flash-Zwischenspeicher befindet, nun gleichmäßig intensiv genutzt wird, wobei das gesamte Segment auf eine SSD migriert wird, wobei der Flash-Zwischenspeicher nicht abgeschaltet wird, bis der Speicherbereich migriert wurde, oder wenn festgestellt wird, dass ein ausgewähltes Datensegment, das sich aktuell im Flash-Zwischenspeicher befindet, nun selten intensiv genutzt wird, wobei jene Abschnitte der Segmente, bei denen eine seltene Nutzung festgestellt wird, auf den SSD-Abschnitt der mehrstufigen Speicherarchitektur migriert werden.
-
Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung in Form eines Systems, eines Verfahrens oder eines Computerprogrammprodukts umgesetzt sein. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer ausschließlich aus Hardware bestehenden Ausführungsform, einer ausschließlich aus Software bestehenden Ausführungsform (unter anderem Firmware, residente Software, Microcode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier allesamt allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das als ein oder mehrere computerlesbare Medien umgesetzt ist, die einen computerlesbaren Programmcode aufweisen.
-
Es kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise ein/e elektrische/s, magnetische/s, optische/s, elektromagnetische/s, Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder -verbreitungsmedium oder eine geeignete Kombination des Vorstehenden sein, ohne jedoch darauf beschränkt zu sein. Spezifischere Beispiele (eine nichterschöpfende Liste) für das computerlesbare Speichermedium sind unter anderem: eine elektrische Verbindung mit einem oder mehreren Leitungen, ein tragbarer Computerdatenträger, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein elektronisch löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder eine Anweisungsausführungseinheit oder in Verbindung damit enthalten oder speichern kann.
-
Der in einem computerlesbaren Medium enthaltene Programmcode kann mithilfe eines geeigneten Mediums übertragen werden, beispielsweise drahtlos, kabelgebunden, Lichtwellenleiterkabel, HF usw. oder durch eine Kombination des Vorstehenden, ohne jedoch darauf beschränkt zu sein. Computerprogrammcodes zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung können in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, beispielsweise objektorientierte Programmiersprachen wie Java, Smalltalk und C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie „C”-Programmiersprachen oder ähnliche Programmiersprachen. Der Programmcode kann zur Gänze am Computer des Benutzers, teilweise am Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder gänzlich auf dem entfernt angeordneten Computer oder -Server ausgeführt werden. Bei letzterem Szenario kann der entfernt angeordnete Computer über einen beliebigen Netzwerktyp, beispielsweise lokales Netz (LAN, Local Area Network) oder Weitverkehrsnetz (WAN, Wide Area Network), mit dem Computer des Benutzers verbunden sein oder die Verbindung zu einem externen Computer kann hergestellt sein (z. B. über einen Internet-Diensteanbieter über Internet).
-
Aspekte der vorliegenden Erfindung sind unter Bezugnahme auf die Ablaufplandarstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung oben beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplandarstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder Blockschaltbildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erstellen, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel für das Umsetzen von in dem einen oder den mehreren Ablaufplan- und/oder Blockschaltbildblöcken angegebenen Funktionen/Aktionen schaffen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu arbeiten, so dass die im computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel schaffen, darunter Anweisungen beinhaltet, die die in den einen oder mehreren Ablaufplan- und/oder Blockschaltbildblöcken angegebene Funktion/Aktion umsetzen. Die Computerprogrammanweisungen können auch in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu bewirken, dass eine Reihe von Funktionsschritten auf dem Computer, auf der anderen programmierbaren Vorrichtung oder auf anderen Einheiten durchgeführt wird, um ein durch einen Computer ausgeführtes Verfahren zu schaffen, so dass die Anweisungen, die auf dem Computer oder auf der anderen programmierbaren Vorrichtung ausgeführt werden, Verfahren zum Umsetzen der in dem einen oder den mehreren Ablaufplan- und/oder Blockschaltbildblöcken angegebenen Funktionen/Aktionen bereitstellen.
-
Der Ablaufplan und das Blockschaltbild in den obigen Figuren zeigen die Architektur, die Funktionalität und den Betrieb möglicher Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block des Ablaufplans oder der Blockschaltbilder ein Modul, ein Segment oder einen Abschnitt von Codes darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen für die Umsetzung der einen oder mehreren angegebenen logischen Funktionen aufweist. Es sei darüber hinaus angemerkt, dass die in den Blöcken ausgewiesenen Funktionen bei einigen alternativen Ausführungsformen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten könnten. Beispielsweise können zwei aufeinanderfolgen Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach Funktionalität. Es sei ferner angemerkt, dass jeder Block der Blockschaltbilder und/oder der Ablaufplandarstellung und Kombinationen von Blöcken in den Blockschaltbildern und/oder in der Ablaufplandarstellung durch spezifische hardware-basierte Systeme umgesetzt sein können, die die angegebenen Funktionen oder Aktionen oder Kombinationen von spezifischen Hardware- und Computeranweisungen durchführen.
-
Zwar wurden eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich beschrieben, der Fachmann wird jedoch verstehen, dass Änderungen und Anpassungen dieser Ausführungsformen vorgenommen werden können, ohne sich vom Umfang der vorliegenden Erfindung, wie er in den nachstehenden Ansprüchen angeführt ist, zu entfernen.