-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft im Allgemeinen Computer und insbesondere ein Verfahren, System und Computerprogrammprodukt zum Steigern einer Datenzwischenspeicherungsleistung in Datenverarbeitungs-Speicherumgebungen.
-
Beschreibung des einschlägigen Stands der Technik
-
Computer und Computersysteme sind in einer Vielzahl von Situationen in der Gesellschaft von heute zu finden. Datenverarbeitungsumgebungen und Netzwerke sind zu Hause, am Arbeitsplatz, in der Schule, in Behörden und in anderen Situationen zu finden. Datenverarbeitungsumgebungen speichern Daten zunehmend in einer oder mehreren Speicherumgebungen, die in vielen Fällen von der lokalen Schnittstelle entfernt angeordnet sind, die einem Benutzer angeboten werden.
-
Diese Datenverarbeitungs-Speicherumgebungen können viele Speichereinheiten verwenden, wie beispielsweise Plattenlaufwerke, die oft zusammenarbeiten, um eine große Datenmenge zu speichern, abzurufen und zu aktualisieren, die dann für einen Host-Computer bereitstellt werden können, der die Daten anfordert oder sendet. In einigen Fällen wird eine Anzahl von Datenspeicher-Subsystemen insgesamt wie ein einzelnes Datenspeichersystem verwaltet. Diese Subsysteme können durch Host„sysplex“- (Systemkomplex) Konfigurationen verwaltet werden, die mehrere Verarbeitungseinheiten oder Cluster (Gruppen) von Verarbeitungseinheiten kombinieren. Auf diese Weise können Mehrstufen-/Mehrsystem-Datenverarbeitungsumgebungen, die oft eine Vielfalt von Typen von Speichereinheiten enthalten, zum Organisieren und Verarbeiten von großen Datenmengen verwendet werden.
-
Aus der
US 2009/0204765 A1 ist es bekannt, zur Festlegung der Nutzung des Zwischenspeichers nicht nur eine Least Recently Used - (LRU-) Methodik zu nutzen, sondern auch die Häufigkeit des Vorkommens von Datenblöcken zu berücksichtigen.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Viele Mehrstufen-/Mehrsystem-Datenverarbeitungsumgebungen setzen Datendeduplizierungstechniken zum Verbessern einer Speicherleistung durch Verringern der Menge von dupliziertem Speicher über Speichereinheiten übergreifend um. Datendeduplizierungssysteme werden zunehmend angewendet, da sie ein Verringern der Gesamtmenge von physischem Speicher unterstützen, die zum Speichern von Daten erforderlich ist. Diese Verringerung wird erreicht, indem sichergestellt wird, dass duplizierte Daten nicht mehrfach gespeichert werden. Wenn zum Beispiel ein Datenblock mit einem bereits gespeicherten Datenblock übereinstimmt, wird stattdessen ein Zeiger auf die ursprünglichen Daten in der virtuellen Speicherzuordnung gespeichert anstatt einen neuen physischen Speicherplatz für den neuen Datenblock zuzuordnen. Somit ist jeder Datenblock in einem Datendeduplizierungssystem einem „Referenzzähler“ zugehörig, der angibt, wie viele virtuelle Zuordnungselemente auf einen bestimmten Datenblock zeigen.
-
Inline-Datendeduplizierungssysteme müssen die vorgenannten virtuellen Speicherzuordnungsinformationen (einschließlich Referenzzählerinformationen) für einen schnellen Zugriff auf die Daten im Arbeitsspeicher verwalten. Andernfalls tritt ein weiterer Zuordnungsfehler-Nachteil auf, wenn Zuordnungsinformationen aus dem physischen Speicher abgerufen werden, wodurch die Speicherlatenz beträchtlich erhöht wird. Derartige Speicherzuordnungsinformationen stehen daher problemlos für eine Verwendung durch andere Speicherkomponenten innerhalb des Speicher-Controllers zur Verfügung.
-
Herkömmliche Datenzwischenspeicherungs-Algorithmen (Mechanismen, die vorgeben, wie lange häufig verwendete Daten im Zwischenspeicher beibehalten werden als im Gegensatz dazu auf eine Platte ausgelagert zu werden) können so genannte „Least Recently Used“- (LRU) Methodiken umsetzen, wobei Dateien, die in letzter Zeit am wenigsten verwendet wurden, als erste verworfen (ausgelagert) werden. Diese Methodiken erfordern ein Beobachten dessen, was wann verwendet worden ist, was ressourcenintensiv sein kann, wenn sichergestellt werden soll, dass der Algorithmus immer das in letzter Zeit am wenigstens verwendete Element verwirft, und trotzdem werden möglicherweise nicht immer die besten Dateien angegeben, die im Zwischenspeicher beibehalten werden sollen und welche Dateien unter einer bestimmten Gruppe von Umständen nicht beizubehalten sind. Es besteht ein Bedarf an einer wirksameren Art einer Zwischenspeicherverwaltung von häufig verwendeten Datensegmenten.
-
Angesichts des vorgenannten Bedarfs an einem besseren Verwalten der Zwischenspeicherung derartiger Daten werden verschiedene Ausführungsformen zum Verbessern der Zwischenspeicherungsleistung in einer Datenverarbeitungsumgebung durch einen Prozessor bereitgestellt. Nur als Beispiel werden in einer Ausführungsform für einen Zwischenspeicher, in dem eine Vielzahl von Datensegmenten vorübergehend gespeichert wird, auf die häufig zugegriffen wird, Referenzzählerinformationen über die Vielzahl von Datensegmenten in Verbindung mit den Least-Recently-Used- (LRU) Informationen verwendet, um eine Zeitlänge zum Beibehalten der Vielzahl von Datensegmenten in dem Zwischenspeicher gemäß einer vordefinierten Gewichtung zu bestimmen, wobei ungeachtet der LRU-Informationen diejenigen der Vielzahl von Datensegmenten mit höheren Referenzzählern länger beibehalten werden als diejenigen mit niedrigeren Referenzzählern. Die Erfindung umfasst insbesondere:
- Untersuchen von Referenzzählerinformationen während eines Deduplizierungsvorgangs, wobei die Referenzzählerinformation eine Anzahl von virtuellen Zuordnungselementen ist, die auf einen bestimmten Datenblock zeigen,
- Verwenden der Referenzzählerinformationen über die Vielzahl von Datensegmenten, um sowohl zu dem Zwischenspeicher die Vielzahl von Datensegmenten hinzuzufügen als auch eine Zeitlänge zum Beibehalten der Vielzahl von Datensegmenten in dem Zwischenspeicher gemäß einer vordefinierten Gewichtung zu bestimmen, die der Referenzzählerinformation entspricht und jedem der Vielzahl von Datensegmenten zugeordnet ist, wobei ungeachtet der LRU-Informationen diejenigen der Vielzahl von Datensegmenten mit höheren Referenzzählern länger beibehalten werden als diejenigen mit niedrigeren Referenzzählern,
- Bestimmen, ob die Referenzzählerinformation der Vielzahl von Datensegmenten, die zu dem Zwischenspeicher hinzugefügt wurden, aktualisiert worden ist oder ob ein vorbestimmtes Zeitintervall abgelaufen ist, wobei wenn die Referenzzählerinformation nicht aktualisiert worden ist oder das vorbestimmte Zeitintervall nicht abgelaufen ist,
- ein erneutes Bestimmen, ob die Referenzzählerinformation der Vielzahl von Datensegmenten, die zu dem Zwischenspeicher hinzugefügt wurden, aktualisiert worden ist oder ob das vorbestimmte Zeitintervall abgelaufen ist,
- nach Ablauf des vorbestimmten Zeitintervalls erneutes Bestimmen der Zeitlänge, wobei die vordefinierte Gewichtung gemäß der Durchlaufzeit des vordefinierten Zeitintervalls abnimmt, und
- Hinzufügen zu oder Entfernen von den Zwischenspeicherteilen der Vielzahl von Datensegmenten in dem Zwischenspeicher auf Grundlage der Referenzzählerinformationen.
-
Zusätzlich zu der vorgenannten beispielhaften Ausführungsform werden verschiedene System- und Computerprogrammausführungsformen bereitgestellt und sorgen für zugehörige Vorteile.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Damit die Vorteile der Erfindung leicht zu verstehen sind, wird unter Bezugnahme auf spezifische Ausführungsformen, die in den Zeichnungen im Anhang veranschaulicht werden, eine speziellere Beschreibung der oben kurz beschriebenen Erfindung vorgelegt. Das Verständnis vorausgesetzt, dass diese Zeichnungen nur typische Ausführungsformen der Erfindung veranschaulichen und daher nicht als deren Schutzumfang einschränkend zu betrachten sind, wird die Erfindung mit zusätzlicher Spezifität und Ausführlichkeit unter Verwendung der begleitenden Zeichnungen beschrieben und erklärt, wobei:
- 1 ein Blockschaubild ist, das eine beispielhafte Datenverarbeitungsumgebung veranschaulicht, die Aspekte der vorliegenden Erfindung umsetzen kann;
- 2 ein Blockschaubild ist, das eine Hardware-Struktur eines Datenspeichersystems veranschaulicht, in dem wiederum Aspekte der vorliegenden Erfindung umgesetzt werden können;
- 3 ein Blockschaubild einer Zwischenspeichersystem-Ausführungsform der vorliegenden Erfindung ist, die eine Beziehung zwischen Datendeduplizierungssystem und Zwischenspeicher-Verwaltungsmodul zum Verbessern der Zwischenspeicherungsleistung veranschaulicht;
- 4 ein Ablaufplan einer beispielhaften Ausführungsform zum Steigern der Datenzwischenspeicherungsleistung ist, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
- 5 ein Ablaufplan einer weiteren beispielhaften Ausführungsform zum Steigern der Datenzwischenspeicherungsleistung ist, in der wiederum Aspekte der vorliegenden Erfindung umgesetzt werden können; und
- 6 ein Ablaufplan einer beispielhaften Ausführungsform für eine Zwischenspeicherverwaltung von Datensegmenten ist, in der wiederum Aspekte der vorliegenden Erfindung umgesetzt werden können.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Wie vorher erwähnt, setzt eine Vielfalt von Datenzwischenspeicherungs-Algorithmen verschiedene Maßnahmen von LRU-Methodiken um, wobei Dateien, die als in letzter Zeit am wenigsten verwendet identifiziert werden, gekennzeichnet werden, um aus dem Zwischenspeicher auf einen festen Speicher (z.B. Platte oder Band) ausgelagert zu werden. In Datenspeicherumgebungen mit Datendeduplizierungsfunktionalität (wie beispielsweise eine integrierte Datendeduplizierungs-Engine) scheitert jede Methodik auf LRU-Grundlage bei der Berücksichtigung von problemlos verfügbaren Referenzzählerinformationen, die unter anderem die Anzahl von virtuellen Instanzen eines Datenblocks angeben, die auf einen vorgegebenen physisch gespeicherten Datenblock zeigen.
-
Der wirksamste Datenzwischenspeicherungs-Algorithmus wäre, immer die Informationen zu verwerfen, die für die längste Zeit in der Zukunft nicht benötigt werden. Herkömmliche Datenzwischenspeicherungs-Algorithmen versuchen diesen utopischen Zustand zu erreichen, schaffen es jedoch nie. Daher besteht immer ein vorhandener Bedarf zum Verbessern der Mechanismen, durch die diese Informationen im Zwischenspeicher beibehalten oder verworfen werden. Um auf den gegenwärtigen Stand der Technik einzugehen und diesen zu verbessern, beschreiben die veranschaulichten Ausführungsformen Mechanismen zum Verwenden der Referenzzählerinformationen, die vorher als durch das Datendeduplizierungssystem bereitgestellt beschrieben wurden, um (zum Beispiel bei Verwendung in Verbindung mit LRU-Informationen) Datenzwischenspeicherungs-Algorithmen zu verbessern, indem derartigen Algorithmen zumindest teilweise ein besseres Bild über den Zustand der Daten im Zwischenspeicher vermittelt wird, und um dadurch die Gesamtleistung der Speicherumgebung zu verbessern.
-
Speichersysteme, die eine Datendeduplizierungsfunktionalität enthalten, setzen für jedes Datensegment einen Referenzzähler um, der zum Beispiel angibt, wie viele Segmente von virtuellem Speicher einem einzelnen Segment von physischem Speicher zugeordnet sind. Referenzzählerinformationen stehen im Allgemeinen problemlos zur Verfügung, da eine derartige Referenzzählerfunktionalität in den meisten, wenn nicht sogar allen Inline-Datendeduplizierungssystemen zu finden ist. Durch Verbessern der Zwischenspeicherungsleistung von Datenblöcken in Speicherkonfigurationen, die untergeordnete Datendeduplizierungssysteme enthalten, kann die durchschnittliche Latenz von Eingabe/Ausgabe- (E/A) Vorgängen in der Speicherumgebung insgesamt beträchtlich verringert werden.
-
In der folgenden Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Bestandteil davon bilden und die mehrere Ausführungsformen der vorliegenden Erfindung veranschaulichen. Es versteht sich, dass weitere Ausführungsformen verwendet werden können und strukturelle und vorgangsbezogene Änderungen vorgenommen werden können, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen.
-
Unter Bezugnahme auf 1 wird ein Beispiel-Computersystem 10 dargestellt, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können. Das Computersystem 10 enthält eine zentrale Verarbeitungseinheit (CPU) 12, die mit einer bzw. mehreren Massenspeichereinheiten 14 und einer Arbeitsspeichereinheit 16 verbunden ist. Die Massenspeichereinheiten können Festplattenlaufwerk- (HDD) Einheiten enthalten, die in einer redundanten Anordnung von unabhängigen Platten (RAID) konfiguriert sein können. Die des Weiteren beschriebenen Zwischenspeicherverwaltungsvorgänge können auf der Einheit bzw. den Einheiten 14 ausgeführt werden, die sich im System 10 oder anderswo befinden. Die Arbeitsspeichereinheit 16 kann einen derartigen Arbeitsspeicher wie einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM) oder eine Menge zugehöriger Einheiten enthalten. Die Arbeitsspeichereinheit 16 und die Massenspeichereinheit 14 sind mit der CPU 12 über ein Signalträgermedium verbunden. Außerdem ist die CPU 12 über einen Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine damit verbundene Vielzahl von weiteren Computersystemen 22 und 24 aufweist. Das Computersystem 10 kann eine oder mehrere Prozessoreinheiten (z.B. die CPU 12) und weitere Arbeitsspeichereinheiten 16 für jede einzelne Komponente des Computersystems 10 enthalten, um jeden hierin beschriebenen Vorgang auszuführen, um die Zwecke der vorliegenden Erfindung zu erreichen.
-
2 ist ein beispielhaftes Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Gezeigt werden Host-Computer 210, 220, 225, von denen jeder als eine zentrale Verarbeitungseinheit zum Ausführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 arbeitet. Die Hosts (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erreichen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 sein. Nur als Beispiel kann in einer Ausführungsform das Datenspeichersystem 200 als IBM® System Storage™ DS8000™ umgesetzt werden. Eine Netzwerkverbindung 260 kann eine Fibre-Channel-Struktur, eine Fibre Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-über-Ethernet-Struktur oder Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, irgendein anderer E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, heterogen, homogen, öffentlich (z.B. das Internet), privat oder eine beliebige Kombination davon sein. Die Hosts 210, 220 und 225 können lokal oder auf eine oder mehrere Positionen verteilt sein und können mit einem beliebigen Typ von Struktur (oder Strukturkanal) (nicht gezeigt in 2) oder Netzwerkadapter 260 zu einem Speicher-Controller 240 ausgestattet sein, wie beispielsweise Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, drahtlose oder koaxiale Adapter. Das Datenspeichersystem 200 ist dementsprechend mit einer geeigneten Struktur (nicht gezeigt in 2) oder dem Netzwerkadapter 260 zum Übertragen von Daten ausgestattet. Das Datenspeichersystem 200 ist in 2 dargestellt und weist den Speicher-Controller 240 und einen Speicher 230 auf.
-
Um ein besseres Verständnis der hierin beschriebenen Verfahren zu unterstützen, wird der Speicher-Controller 240 in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemarbeitsspeicher 243 und einen nicht-flüchtigen Speicher („NVS“) 216 enthält, die im Folgenden ausführlicher beschrieben werden. Es wird angemerkt, dass in einigen Ausführungsformen der Speicher-Controller 240 mehrere Verarbeitungseinheiten aufweist, die jeweils ihren eigenen Prozessorkomplex und Systemarbeitsspeicher haben und durch ein dediziertes Netzwerk in dem Datenspeichersystem 200 miteinander verbunden sind. Der Speicher 230 kann eine oder mehrere Speichereinheiten aufweisen, wie beispielsweise Speicheranordnungen, die durch ein Speichernetzwerk mit dem Speicher-Controller 240 verbunden sind.
-
In einigen Ausführungsformen können die im Speicher 230 enthaltenen Einheiten in einer Schleifenarchitektur verbunden sein. Der Speicher-Controller 240 verwaltet den Speicher 230 und erleichtert die Verarbeitung von Schreib- und Lese-Anforderungen, die für den Speicher 230 bestimmt sind. Der Systemarbeitsspeicher 243 des Speicher-Controllers 240 speichert Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen auszuführen, die dem Verwalten des Speichers 230 zugehörig sind. In einer Ausführungsform enthält der Systemarbeitsspeicher 243 eine Betriebssoftware 250, ist dieser zugehörig oder steht mit dieser in Datenübertragung, und ist teilweise für ein Ausführen der Funktionalität der vorliegenden Erfindung konfiguriert. Wie in 2 gezeigt, kann der Systemarbeitsspeicher 243 auch eine Datenübertragung enthalten oder mit einem Zwischenspeicher 245 für den Speicher 230 in Datenübertragung stehen, der hierin auch als „Cache-Speicher“ bezeichnet wird, um „Schreibdaten“ und „Lesedaten“ zu puffern, die jeweils auf Schreib-/Lese-Anforderungen und deren zugehörige Daten verweisen. In einer Ausführungsform wird der Zwischenspeicher 245 in einer außerhalb des Systemarbeitsspeichers 243 befindlichen Einheit zugeordnet, wobei auf ihn jedoch weiterhin durch den Mikroprozessor 242 zugegriffen werden kann und er zusätzlich zu einem Ausführen der hierin beschriebenen Vorgänge zum Bereitstellen eines zusätzlichen Schutzes vor Datenverlust dienen kann.
-
In einigen Ausführungsformen wird der Zwischenspeicher 245 mit einem flüchtigen Arbeitsspeicher und einem nicht-flüchtigen Arbeitsspeicher umgesetzt und für eine verbesserte Leistung des Datenspeichersystems 200 mit dem Mikroprozessor 242 über einen lokalen Bus (nicht gezeigt in 2) verbunden. Auf den in dem Datenspeicher-Controller enthaltenen NVS 216 kann durch den Mikroprozessor 242 zugegriffen werden, und er dient zum Bereitstellen von zusätzlicher Unterstützung von Vorgängen und der Ausführung der vorliegenden Erfindung, wie in weiteren Figuren beschrieben. Der NVS 216 kann auch als „permanenter“ Zwischenspeicher oder „Cache-Arbeitsspeicher“ bezeichnet werden und wird mit einem nicht flüchtigen Arbeitsspeicher umgesetzt, der eine externe Stromquelle zum Beibehalten der darin gespeicherten Daten verwenden kann. Der NVS kann in und zusammen mit dem Zwischenspeicher 245 für alle Zwecke gespeichert werden, die geeignet sind, um die Ziele der vorliegenden Erfindung zu erreichen. In einigen Ausführungsformen versorgt eine Notstromversorgungsquelle (nicht gezeigt in 2) wie beispielsweise eine Batterie den NVS 216 mit ausreichender Energie, um die darin gespeicherten Daten im Fall eines Spannungsverlusts des Datenspeichersystems 200 beizubehalten. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner oder gleich der Gesamtkapazität des Zwischenspeichers 245.
-
Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie beispielsweise Speicheranordnungen bestehen. Eine Speicheranordnung ist eine logische Gruppierung von einzelnen Speichereinheiten wie beispielsweise eine Festplatte. In bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD- (Just a Bunch of Disks) Anordnung oder einer RAID- (Redundant Array of Independent Disks) Anordnung. Eine Sammlung von physischen Speicheranordnungen kann ferner kombiniert werden, um eine Speicherbank zu bilden, die den physischen Speicher von der logischen Konfiguration löst. Der Speicherplatz in einer Speicherbank kann in logischen Datenträgern zugeordnet werden, die den Speicherort definieren, der in einer Schreib-/Lese-Anforderung angegeben wird.
-
Nur als Beispiel kann in einer Ausführungsform das in 2 gezeigte Speichersystem einen logischen Datenträger oder einfach „Datenträger“ enthalten, der verschiedene Arten von Zuordnungen aufweisen kann. Speicher 230a, 230b und 230n werden im Datenspeichersystem 200 als Speicherbänke gezeigt, und auf sie wird hierin als Speicherbank 230a, 230b und 230n Bezug genommen. Speicherbänke können für das Datenspeichersystem 200 lokal sein oder können sich an einem physisch entfernten Ort befinden. Mit anderen Worten, ein lokaler Speicher-Controller kann mit einem entfernt angeordneten Speicher-Controller verbunden sein und den Speicher an dem entfernt angeordneten Ort verwalten. Die Speicherbank 230a wird als mit zwei vollständigen Datenträgern 234 und 236 sowie einem teilweisen Datenträger 232a konfiguriert gezeigt. Die Speicherbank 230b wird mit einem weiteren teilweisen Datenträger 232b gezeigt. Somit wird der Datenträger 232 über die Speicherbänke 230a und 230b übergreifend zugeordnet. Die Speicherbank 230n wird als vollständig dem Datenträger 238 zugeordnet gezeigt - d.h. die Speicherbank 230n nimmt auf den vollständigen Speicher für einen Datenträger 238 Bezug. Aus den vorgenannten Beispielen wird klar, dass eine Speicherbank so konfiguriert werden kann, dass sie einen oder mehrere teilweise und/oder vollständige Datenträger enthält. Datenträger und Speicherbänke können ferner in sogenannte „Spuren“ unterteilt werden, die einen festen Speicherblock darstellen. Eine Spur ist daher einem vorgegebenen Datenträger zugehörig und kann einer vorgegebene Speicherbank zugeordnet werden.
-
Der Speicher-Controller 240 kann eine Datendeduplizierungs-Engine 255, ein Zwischenspeicherverwaltungsmodul 257 und eine Speicherzuordnung/Datenhäufigskeitsindexzuordnung (DFIM) 259 enthalten, wie des Weiteren beschrieben wird. Das Zwischenspeicherverwaltungsmodul 257 kann in Verbindung mit jeder und allen Komponenten des Speicher-Controllers 240, den Hosts 210, 220, 225 und den Speichereinheiten 230 arbeiten. Das Zwischenspeicherverwaltungsmodul 257 kann, wie dem Fachmann klar sein wird, strukturell ein vollständiges Modul sein oder kann anderen einzelnen Modulen zugehörig sein und/oder darin enthalten sein. Das Zwischenspeicherverwaltungsmodul 257 und/oder die Speicherzuordnung/DFIM 259 können sich auch in dem Zwischenspeicher 254 oder anderen Komponenten befinden. Der Zwischenspeicher 254 wird so gezeigt, dass er eine Anzahl von häufig verwendeten Datensegmenten 261 enthält, die für schnellen Zugriff in dem Zwischenspeicher beibehalten werden und deren Verwaltung unter anderen Komponenten durch das Zwischenspeicherverwaltungsmodul 257 ausgeführt wird.
-
Der Speicher-Controller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre Channel Protocol zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller Speicher-Controller 240, einen nicht-flüchtigen Steuerungsarbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speicher-Controllers 240, wobei Daten zur Steuerung und jede Tabelle später beschrieben werden, einen Zwischenspeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Zwischenspeichers 245 beim Lesen und Schreiben von Daten, einen Steuerschalter 241 zum Steuern eines Protokolls zum Steuern einer Datenübertragung zu oder von den Speichereinheiten 230 und ein Verdichtungsvorgangsmodul 255 und ein Verdichtungsvorgangslistenmodul 257, in denen Informationen eingerichtet werden können. Mehrere Puffer 244 können mit der vorliegenden Erfindung umgesetzt werden, um die hierin beschriebenen Vorgänge zu unterstützen.
-
In einer Ausführungsform werden die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und der Speicher-Controller 240 über einen Netzwerkadapter (dieser könnte ein Fibre Channel sein) 260 als Schnittstelle verbunden, d.h. über mindestens einen als „Struktur“ bezeichneten Schalter. In einer Ausführungsform wird der Betrieb des in 2 gezeigten Systems beschrieben. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 so steuern, dass er Befehlsinformationen von der Host-Einheit (physisch oder virtuell) 210 und Informationen zum Identifizieren der Host-Einheit (physisch oder virtuell) 210 speichert. Der Steuerschalter 241, die Puffer 244, der Zwischenspeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das Verdichtungsvorgangsmodul 255 und das Verdichtungsvorgangslistenmodul 257 sind miteinander in Datenübertragung verbunden und können getrennte Komponenten oder eine einzelne Komponente sein. Ferner können einige, wenn nicht alle der Komponenten wie beispielsweise die Betriebssoftware 250 in dem Arbeitsspeicher 243 enthalten sein. Alle Komponenten in den gezeigten Einheiten können miteinander verbunden sein und zu Zwecken, die für die vorliegende Erfindung geeignet sind, miteinander in Datenübertagung stehen.
-
Der Speicher-Controller 240 wird so gezeigt, dass er eine Datendeduplizierungs-Engine 255, eine Speicherzuordnung/Datenhäufigskeitsindexzuordnung (DFIM) 259 („Speicherzuordnung“ 259) und ein Zwischenspeicherverwaltungsmodul 257 enthält. Die Datendeduplizierungs-Engine 255, das Zwischenspeicherverwaltungsmodul 257 und die DFIM 259 können in Verbindung mit jeder und allen Komponenten des Speicher-Controllers 240, den Hosts 210, 220, 225 und den Speichereinheiten 230 arbeiten, um die Funktionalität gemäß der vorliegenden Erfindung zu erzielen. Die Datendeduplizierungs-Engine 255, das Zwischenspeicherverwaltungsmodul 257 und die DFIM 259 können strukturell ein vollständiges Modul sein oder können anderen einzelnen Modulen zugehörig sein und/oder darin verkörpert sein. Das Zwischenspeicherverwaltungsmodul 257 und die DFIM 259 können auch in dem Zwischenspeicher 245 oder anderen Komponenten verkörpert sein.
-
Die Datendeduplizierungs-Engine 255 ist so konfiguriert, dass sie in Verbindung mit anderen Komponenten des Speicher-Controllers 240 wie dem Mikroprozessor 242 Datendeduplizierungsvorgänge an Schreibdaten ausführt, die dem Speicher 230 durch den Speicher-Controller 240 übergeben werden.
-
Wie vorher angegeben, enthält der Speicher-Controller 240 eine Datenhäufigkeitsindexzuordnung (DFIM) 259 oder kurz Speicherzuordnung 259. Der Zwischenspeicher 245 oder was als ganzheitlicher Begriff als Zwischenspeichersystem 245 bezeichnet werden kann, (welches das Zwischenspeicherverwaltungsmodul 257, die Speicherzuordnung 259 oder sogar die Datendeduplizierungs-Engine 255 enthalten kann), akzeptiert Schreibdaten von den Hosts 210, 220 und 225 oder ähnlichen Einheiten, die dann in den Zwischenspeicher 245 gestellt werden. Die Datendeduplizierungs-Engine 255 prüft dann die Schreibdaten auf Duplizierung in dem Zwischenspeicher 245 und schreibt einen Index und eine Häufigkeit dafür in die Speicherzuordnung 259.
-
Unter folgender Bezugnahme auf 3 wird ein Blockschaubild von verschiedenen Funktionsaspekten der vorliegenden Erfindung als beispielhafter Ablauf dargestellt. Insbesondere wird gezeigt, dass das Zwischenspeichersystem 245 akzeptiert, dass Schreibdaten 302 durch die Datendeduplizierungs-Engine 255 als ein Schreibvorgang 304 in den Zwischenspeicher 245 verarbeitet werden. Da die Schreibdaten 302 durch die Datendeduplizierungs-Engine 255 verarbeitet werden, und wie vorher beschrieben, die Schreibdaten 302 auf Deduplizierung mit vorhandenem Speicher geprüft werden, übergibt die Deduplizierungs-Engine 255 die Häufigkeits- und Index-Informationen 306 an die Speicher-/Datenhäufigkeitsindexzuordnung (DFIM) 259. Speichersysteme, in denen eine Datendeduplizierungsfunktionalität verkörpert ist wie in 3 gezeigt, enthalten einen Referenzzähler für jeden Datenblock, der unter anderen Angaben angibt, wie viele Blöcke von virtuellem Speicher einem einzelnen Block von physischem Speicher zugeordnet sind.
-
Wenn Daten aus dem Zwischenspeicher 245 ausgelesen werden 308, wird die Speicherzuordnung 259 aktualisiert. Die in der Speicherzuordnung 259 enthaltenen Informationen, die Referenzzählerinformationen 310 enthalten, werden für ein Zwischenspeicherverwaltungsmodul 260, das sich ebenfalls in bidirektionaler Datenübertragung 314 zwischen dem Zwischenspeicher 245 und dem Speicher-Controller 240 (2) und damit den Hosts 210, 220 und 225 befindet, als Lesedaten 312 bereitgestellt. Zumindest teilweise auf der Grundlage einer derartigen Aktivität kann das Zwischenspeicherverwaltungsmodul 260 bestimmen, welche Abschnitte der Schreibdaten 302 in das Zwischenspeichersystem 245 gestellt werden sollen und für welche angemessene Zeitlänge, wie des Weiteren gemäß Aspekten der vorliegenden Erfindung veranschaulicht wird.
-
Unter folgender Bezugnahme auf 4 wird ein Ablaufplan eines Verfahrens zum Verbessern der Zwischenspeicherungsleistung in einer Speicherumgebung in einer beispielhaften Ausführungsform gezeigt. Ein Verfahren 400 beginnt (Schritt 402) unter Verwendung der vorgenannten Referenzzählerinformationen in Verbindung mit LRU-Informationen (und in weiteren Ausführungsformen anderen statistischen Informationen, die für einen Fachmann offenkundig sind), um eine angemessene Zeitlänge zum Beibehalten von Datensegmenten 261 (2) im Zwischenspeicher 245 zu bestimmen (Schritt 404), auf die besonders häufig zugegriffen wird. Das Verfahren 400 endet (Schritt 406).
-
Die folgende 5 ist ein Ablaufplan eines Verfahrens zum Umsetzen einer derartigen Verwendung von Referenzzählerinformationen, wie vorher in 4 gezeigt, in einer weiteren beispielhaften Ausführungsform. Hier beginnt ein Verfahren 500 (Schritt 502), indem Referenzzählerdaten untersucht werden, die von der Deduplizierungs-Engine im Laufe eines Deduplizierungsvorgangs wie vorher beschrieben erhalten wurden (Schritt 504). In einer Ausführungsform können die Referenzzählerinformationen für einen bestimmten Datenblock in ungefährer Synchronisation mit der Leistung eines Deduplizierungsvorgangs für diesen gewählten Datenblock erhalten/untersucht werden. Auf der Grundlage der Referenzzählerinformationen (und/oder durch Umsetzung einer bestimmten Speicherrichtlinie) wird eine Beibehaltungsdauer für ein bestimmtes Segment oder für eine Anzahl von Segmenten in dem Zwischenspeicher erstellt (Schritt 506). Wiederum kann hier in einer Ausführungsform das Erhalten der Referenzzählerinformationen, ein Aktualisieren von Referenzzählerinformationen, eine Untersuchung von Referenzzählerinformationen und/oder eine Analyse von Referenzzählerinformationen zum Bestimmen einer bestimmten Beibehaltungsdauer in einer ungefähren Synchronisation mit der Leistung des vorgenannten Deduplizierungsvorgangs auftreten.
-
Unter Fortsetzung von 5 fragt das Verfahren 500 dann ab, ob die Referenzzählerinformationen für das referenzierte Datensegment aktualisiert worden sind (z.B. gemäß einem Deduplizierungsvorgang schrittweise erhöht worden sind) oder ob zum Beispiel ein vordefiniertes Zeitintervall abgelaufen ist (Schritt 508). Falls dies der Fall ist, wird die Beibehaltungsdauer, die vorher in Schritt 506 erstellt worden ist, erneut aufgerufen, um nochmals eine neue ungefähre Beibehaltungsdauer in dem Zwischenspeicher zu bestimmen (Schritt 510). In einer Ausführungsform kann dies ausgeführt werden, indem eine vordefinierte Gewichtung anfangs einem Datensegment zugewiesen wird, das mit den Referenzzählerinformationen in Wechselbeziehung steht, wobei sie sich nach dem Ablauf des vordefinierten Zeitraums verringert, wenn die Referenzzählerinformationen nicht schrittweise erhöht werden. Der Zweck einer Zuweisung einer Gewichtung ermöglicht unter anderem, dass diejenigen Datensegmente mit hohen Referenzzählern schließlich aus dem Zwischenspeicher verworfen werden, selbst wenn auf die Datensegmente über einen langen Zeitraum nicht zugegriffen wurde.
-
Wenn beim Zurückkehren zu Schritt 508 die Referenzzählerinformationen nicht aktualisiert worden sind oder das vordefinierte Zeitintervall nicht abgelaufen ist, kehrt das Verfahren 500 zum Schritt 508 mit dem Zeitübergang zurück, um erneut abzufragen, ob eine oder beide dieser Bedingungen erfüllt worden sind.
-
Wie einem Fachmann klar sein wird, kann eine breite Vielfalt von Speicherrichtlinien (die zum Beispiel mit der Unterstützung durch einen Administrator/Benutzer erstellt werden können) daraufhin zur Anwendung gebracht werden, ob ein bestimmtes Segment oder eine Gruppe von Daten auf der Grundlage der aktuellen Referenzzählerinformationen für diesen Eintrag oder die Gruppe von Einträgen für eine bestimmte Dauer beibehalten werden sollen. Da die Referenzzählerinformationen für ein bestimmtes Segment von Daten die Wahrscheinlichkeit eines Zugriffs auf einen bestimmten Eintrag angeben, können dieselben Informationen intelligent von derartigen Richtlinien oder anderweitig in Zwischenspeicherzuordnungs-Mechanismen verwendet werden (wie beispielsweise ein Zwischenspeicherzuordnungs-Algorithmus, der durch das vorher beschriebene Zwischenspeicherverwaltungsmodul umgesetzt werden kann), um diejenigen in der Speicherzuordnung gespeicherten Kandidateneinträge zu bestimmen, die aus dem Zwischenspeicher ausgelagert werden sollten.
-
In Anbetracht des Vorgenannten ist das folgende Beispiel zu betrachten. Zehn (10) Zuordnungstabelleneinträge (Datensegmente) werden als Kandidaten für eine Auslagerung erstellt. Von diesen zehn Zuordnungstabelleneinträgen werden diejenigen, die höhere Referenzzahlen enthalten (in einer Ausführungsform für alle Datensegmente zusammen), später ausgelagert als diejenigen, die einen niedrigeren Referenzzähler haben. Auf diese Weise werden Speicherzuordnungsabschnitte, die entsprechende höhere Referenzzähler haben, länger beibehalten in der Erwartung, dass sie wiederverwendet werden, und wenn dieser Fall eintritt, wird der bestimmte Eintrag für einen schnellen Zugriff im Zwischenspeicher gefunden.
-
Die folgende 6 veranschaulicht einen Ablaufplan eines beispielhaften Verfahrens für eine Verwaltung der Beibehaltung von Daten im Zwischenspeicher unter Verwendung von Referenzzählerwerten, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können. Ein Verfahren 600 beginnt (Schritt 602) mit einer Abfrage, ob der Zwischenspeicher voll ist, und ob trotz dieser Tatsache neue Datensegmente von einer Platte abgerufen werden sollen (wodurch erforderlich wird, dass andere Zuordnungseinträge ausgelagert werden) (Schritt 604). Wenn dies der Fall ist, werden die Datensegmente insgesamt untersucht, um zu bestimmen, welche dieser Segmente aus dem Zwischenspeicher ausgelagert werden sollen (Schritt 606). Als Teil dieses Untersuchungsprozesses fragt das Verfahren 600 danach ab, ob ein bestimmter untersuchter Eintrag einen Referenzzählerwert hat, der hoch ist (in einer Ausführungsform zum Beispiel höher als ein bestimmter, durch eine Richtlinie eingerichteter Schwellenwert) und/oder eine entsprechende schwerwiegende zugewiesene Gewichtung hat und/oder weiterhin hat (Schritt 608). Wenn dies der Fall ist, wird der Eintrag in dem Zwischenspeicher beibehalten (Schritt 610). Wenn bestimmt wird, dass der Eintrag keinen hohen Wert und/oder keine Gewichtung über einem vordefinierten Schwellenwert hat, wird das Datensegment gekennzeichnet, um aus dem Zwischenspeicher ausgelagert zu werden (Schritt 612), und ein neues Segment kann an seiner Stelle in den Zwischenspeicher eingelagert werden. Das Verfahren 600 fährt dann mit Schritt 604 fort oder kehrt zu diesem zurück wie vorher beschrieben.
-
Wie einem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung“, „Modul“, „Prozess“ oder „System“ Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode verkörpert ist.
-
Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
-
In einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder jede geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
-
Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
-
Aspekte der vorliegenden Erfindung werden im Folgenden unter Bezugnahme auf Veranschaulichungen eines Ablaufplans und/oder von Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Der Ablaufplan und die Blockschaubilder in den vorgenannten Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
-
Obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht worden sind, wird für Fachleute offenkundig sein, dass an diesen Ausführungsformen Modifizierungen und Anpassungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.