-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf Computer und im Besonderen auf ein Verfahren, System und Computerprogrammprodukt zum Bewahren von Redundanz und anderen Datensicherheitseigenschaften in Datenverarbeitungsumgebungen mit integrierten Datendeduplizierungssystemen.
-
Beschreibung der verwandten Technik
-
Computer und Computersysteme finden sich in einer Vielzahl von Bereichen der heutigen Gesellschaft. So können Datenverarbeitungsumgebungen und -netzwerke zuhause, bei der Arbeit, in der Schule, bei Behörden und in anderen Bereichen zu finden sein. Datenverarbeitungsumgebungen speichern Daten zunehmend in einer oder mehreren Speicherumgebungen, die in vielen Fällen von der örtlichen Schnittstelle, welche einem Benutzer dargestellt wird, entfernt gelegen sind.
-
Diese Datenverarbeitungsspeicherumgebungen können viele Speichereinheiten wie z.B. Festplattenlaufwerke verwenden, die häufig zusammenarbeiten, um eine große Menge von Daten zu speichern, abzurufen und zu aktualisieren, die dann einem Host-Computer bereitgestellt werden können, der die Daten anfordert oder sendet. In manchen Fällen wird eine Anzahl von Datenspeicherteilsystemen zusammenfassend als ein einziges Datenspeichersystem verwaltet. Diese Teilsysteme können durch Host-Sysplex-Konfigurationen (System Complex) verwaltet werden, die mehrere Verarbeitungseinheiten oder Gruppen von Verarbeitungseinheiten miteinander kombinieren. Auf diese Art und Weise können aus mehreren Schichten bzw. Systemen bestehende Datenverarbeitungsumgebungen, die häufig verschiedenartige Speichereinheiten beinhalten, dazu verwendet werden, große Mengen von Daten zu organisieren und zu verarbeiten.
-
Die Druckschrift US 2011 / 0 016 091 A1 betrifft ein Verfahren zur Verwaltung von durch Anwendungen erzeugten Datenobjekten. Das Verfahren umfasst: Empfangen einer ersten Operationsanforderung für erste Daten, die von einer ersten Anwendung erzeugt werden, die auf einer ersten Client-Einheit ausgeführt wird, wobei die ersten Daten eine Mehrzahl von ersten Datenobjekten umfassen; Analysieren der ersten Daten, um eines oder mehrere der Mehrzahl von ersten Datenobjekten zu identifizieren, die für eine Deduplizierung in Betracht gezogen werden sollen; Empfangen einer zweiten Operationsanforderung für zweite Daten, die von einer zweiten Anwendung erzeugt werden, wobei die zweiten Daten eine Mehrzahl von zweiten Datenobjekten umfassen und die zweiten Daten ein anderes Dateiformat als die ersten Daten haben; Analysieren der zweiten Daten, um eines oder mehrere der Mehrzahl von zweiten Datenobjekten zu identifizieren, die für eine Deduplizierung in Betracht kommen; und Einfügen eines Indikators in mindestens eine Kopie der ersten Daten und eine Kopie der zweiten Daten, der auf Grundlage des ersten und des zweiten Dateiformats angibt, dass das eine oder die mehreren ersten Datenobjekte und das eine oder die mehreren zweiten Datenobjekte nicht zusammen für eine Deduplizierung in Betracht gezogen werden sollten.
-
Die Druckschrift US 2011 / 0 238 914 A1 betrifft ein Speichersystem, das umfasst: eine 1. Schnittstelle, die Informationen empfängt, die von einer übergeordneten Einheit zu übertragen sind, einen Cache-Speicher, der die Informationen vorübergehend speichert, eine Speichereinheit, die einen Speicherbereich zum Speichern der Informationen aufweist, eine 2. Schnittstelle, die die Informationen an die Speichereinheit sendet, und eine Steuereinheit, die einen Steuerprozess in Bezug auf die Informationen ausführt; wobei die Steuereinheit aus den Informationen redundante Teile entfernt, die bereits in dem Speicherbereich vorhanden sind, und die verbleibenden Teile komprimiert und sie in dem relevanten Speicherbereich speichert.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Der Erfindung liegt die Aufgabe zugrunde ein Verfahren, ein System sowie ein Computerprogrammprodukt zum schnellen Bewahren von Datenredundanz in einem Datendeduplizierungssystem zu schaffen.
-
Viele Datenverarbeitungsumgebungen, die aus mehreren Schichten bzw. Systemen bestehen, realisieren Datendeduplizierungstechnologien, um die Speicherleistung zu verbessern, indem die Menge von dupliziertem Speicher über mehrere Speichereinheiten hinweg verringert wird. Datendeduplizierungssysteme werden in steigendem Maße genutzt, da sie dazu beitragen, die Gesamtmenge an physischem Speicher zu verringern, der zum Speichern von Daten notwendig ist. Diese Verringerung wird erzielt, indem sichergestellt wird, dass doppelt vorhandene Daten nicht mehrfach gespeichert werden. Wenn stattdessen z.B. ein eingehender Block von SCHREIB-Anwendungsdaten mit einem bereits gespeicherten Datenblock übereinstimmt, wird in dem virtuellen Speicherabbild ein Zeiger auf die ursprünglichen Daten gespeichert, anstatt dem neuen Datenblock neuen physischen Speicherplatz zuzuordnen.
-
In bestimmten Situationen kann die Deduplizierung, d.h. die einmalige Speicherung doppelt vorhandener Daten, jedoch im Widerspruch z.B. zu den Redundanzanforderungen einer gehosteten Anwendung, einer Speicherrichtlinie oder anderweitigen Anforderungen stehen. Benötigt wird ein Mechanismus, bei dem mehrfach zu speichernde Daten geschützt werden, ohne dass die Vorteile von Deduplizierungssystemen verringert werden, indem für die übrigen Daten ohne eine derartige Anforderung eine Deduplizierung stattfinden kann.
-
In Anbetracht des Vorgenannten werden verschiedene Ausführungsformen zum Bewahren von Datenredundanz in Datendeduplizierungssystemen offenbart. Bei einer lediglich als Beispiel dienenden Ausführungsform wird ein Verfahren für eine derartige Bewahrung offenbart. Ein Anzeiger wird konfiguriert. Der Anzeiger wird mit einem ausgewählten Datensegment bereitgestellt, das durch das Deduplizierungssystem geschrieben werden soll, um anzuzeigen, dass das ausgewählte Datensegment keiner Deduplizierungsoperation unterzogen werden darf.
-
Zusätzlich zu der vorgenannten beispielhaften Ausführungsform werden verschiedene Ausführungsformen eines Systems und Computerprogrammprodukts bereitgestellt, die damit zusammenhängende Vorteile zur Verfügung stellen.
-
Figurenliste
-
Um die Vorteile der Erfindung besser verständlich zu machen, wird eine ausführlichere Beschreibung der oben kurz beschriebenen Erfindung vorgelegt, wobei auf die spezifischen Ausführungsformen Bezug genommen wird, die in den beigefügten Zeichnungen dargestellt werden. Unter der Voraussetzung, dass diese Zeichnungen lediglich typische Ausführungsformen der Erfindung abbilden und somit nicht als Beschränkung ihres inhaltlichen Umfangs zu verstehen sind, wird die Erfindung anhand der beigefügten Zeichnungen konkreter und ausführlicher beschrieben und erläutert, bei denen:
- 1 ein Blockschaubild ist, das eine beispielhafte Datenverarbeitungsumgebung veranschaulicht, die Aspekte der vorliegenden Erfindung realisieren kann;
- 2 ein Blockschaubild ist, das eine Hardware-Struktur eines Datenspeichersystems zeigt, in der ebenfalls Aspekte der vorliegenden Erfindung realisiert sein können;
- 3 eine beispielhafte Schreibanforderung ist, in der Aspekte der vorliegenden Erfindung realisiert sein können;
- 4 ein Blockschaubild eines beispielhaften Prozesses des Schreibens von Daten durch eine Datendeduplizierungsmaschine ist, in dem ebenfalls Aspekte der vorliegenden Erfindung realisiert sein können;
- 5 ein beispielhaftes Verfahren zum Sicherstellen von Redundanz in Datendeduplizierungssystemen gemäß der vorliegenden Erfindung ist; und
- 6 ein beispielhaftes Verfahren zum Verarbeiten von Daten ist, in dem Aspekte der vorliegenden Erfindung realisiert sein können.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Eine Datendeduplizierung in Speicher-Controllern arbeitet üblicherweise „hinter den Kulissen“ einer Anwendung und kann mitunter sogar den Interessen der Anwendung zuwiderlaufen, wenn entgegen den Bedürfnissen der Anwendung Deduplizierungsoperationen durchgeführt werden. Diese Situation kann eintreten, wenn eine Anwendung mehrere Kopien derselben Daten schreibt und beabsichtigt, mehrere physische Kopien beizubehalten, während das Deduplizierungsteilsystem (die Deduplizierungsmaschine) diese übereinstimmenden Kopien findet und die Kopien schließlich dedupliziert, während es die Daten speichert. Dies kann von Nachteil für die Anwendung sein, die davon ausgeht, dass sie mehrere Kopien in verschiedenen Speicherstellen vorfindet, und von dem Speicherteilsystem in dem Glauben belassen wird, dass dies der Fall sei, während in Wahrheit nur eine einzige Kopie der Daten geschrieben wurde.
-
In diesem Zusammenhang soll das folgende Beispiel betrachtet werden. Zur Sicherstellung von Redundanz schreiben Dateisysteme in der Regel vorzugsweise mehrere physische Kopien des Superblocks bzw. eines Segments von Metadaten, der das Dateisystem beschreibt, in eine Speichereinheit auf der Grundlage von Datenblöcken (oder anderen Metadaten) auf einer virtuellen Platte. Da der Inhalt des Superblocks identisch ist, würde eine Datendeduplizierung dazu führen, dass eine einzige physische Kopie des Superblocks beibehalten wird und mehrere virtuelle Adressen auf ein und denselben physischen Datenblock zeigen. Diese Situation sollte unbedingt vermieden werden, da der Verlust eines einzigen Datenblocks in der physischen Kopie des Superblocks dazu führen kann, dass das Dateisystem vollkommen unbrauchbar wird, da keine redundanten Kopien des Superblocks vorhanden sind. Herkömmlicherweise sind keine Methoden vorhanden, die dieses Problem von Datendeduplizierungssystemen direkt lösen.
-
Mit verschiedenen indirekten Methoden kann versucht werden, das Problem zu lösen. Bei einem Beispiel kann der Speicherpool, aus dem das Datendeduplizierungsteilsystem physischen Speicher ausgliedert, gespiegelt werden (d.h. der Speicherpool enthält zwei oder drei Kopien derselben Daten). Auf diese Weise können trotz Deduplizierung mehrere redundante Kopien erzeugt werden.
-
Allerdings bietet dies aus folgenden Gründen nur einen ungenügenden Schutz für die Anwendung: Erstens möchte die Anwendung womöglich beispielsweise zehn Kopien derselben Daten beibehalten. Wenn der Speicherpool jedoch bidirektional gespiegelt wird, kann er höchstens zwei Kopien enthalten. Da die Datendeduplizierung physische Speicherpools ausgliedert, die große Mengen von Speicher und mehrere Dateisysteme umspannen, ist es zweitens wahrscheinlich, dass sich mehrere Anwendungen und Dateisysteme ein und denselben physischen Speicherpool teilen. Somit kann es sein, dass einige kritische Kopien von Daten (wie z.B. der Superblock) physisch auf derselben Platte platziert werden. Da eine Deduplizierung verhindern würde, dass mehrere Kopien derselben Daten in mehrere physische Speicherstellen geschrieben werden, verringert sich die Anzahl von Kopien kritischer Daten, und die Daten können für mehrere Dateisysteme auf ein derselben physischen Platte gespeichert werden. Dadurch steigt jedoch die Gefahr, dass einzelne Fehler schwerwiegend sind.
-
Die veranschaulichten Ausführungsformen stellen mehrere Mechanismen bereit, welche die oben erörterten Probleme lösen. Ein Ziel dieser Mechanismen besteht darin, sicherzustellen, dass das Deduplizierungsteilsystem in dem Speicher-Controller (oder wo auch immer es sich befindet) ein Gleichgewicht zwischen dem Vorteil, die Anzahl von Datenkopien zu verringern, und den Anwendungsanforderungen bezüglich des physischen Zuordnens mehrerer Kopien von kritischen Daten herstellt. Jede der Methoden, die in den folgenden veranschaulichten Ausführungsformen beschrieben werden, kann unter einer Vielzahl von Umständen verwendet werden und Vorteile mit sich bringen, die für diese Umstände spezifisch sind.
-
In einer derartigen Ausführungsform kann die Anwendung dem Ziel-Speicher-Controller einen Anzeiger für ein ausgewähltes Datensegment bereitstellen, um kenntlich zu machen, dass das bestimmte Datensegment nicht Gegenstand von Deduplizierungsoperationen ist. Diese Aktion zwingt den Speicher-Controller dann dazu, den angegebenen Datenblöcken neuen physischen Speicher zuzuordnen. Ein solcher Anzeiger kann ein Bit beinhalten, das eine binäre Eins oder eine binäre Null sein kann, je nachdem, ob die gewünschte Deduplizierung für das ausgewählte Datensegment/den ausgewählten Datenblock durchgeführt werden soll.
-
Indem bei der beschriebenen Ausführungsform die Anwendung vorgeben kann, ob ein Schreibvorgang dedupliziert werden muss, kann sie eine Speicherrichtlinie, die den von ihr erzeugten Daten zugehörig ist, flexibel umsetzen. Auf diese Weise ist die Anwendung besser als das Deduplizierungssystem in der Lage, zu ermitteln, ob sich ausgewählte Datenblöcke auch dann in getrennten physischen Speicherstellen befinden müssen, wenn sie identisch sind. Darüber hinaus übernimmt der Speicher-Controller (oder eine andere Speicherverwaltungseinheit) weiterhin seine Aufgabe einer Datenreduzierung durch Deduplizierung und räumt gleichzeitig der Anwendung genügend Steuerungsmöglichkeiten ein, um im Bedarfsfall eine Deduplizierung zu verhindern.
-
Indem Schreibbefehle mit einem Anzeiger bereitgestellt werden, um dem Speicher-Controller (oder wiederum einer anderweitigen Speicherverwaltungseinheit) anzuzeigen, ob die ausgewählten Daten die Deduplizierung überspringen müssen, wird der Anwendung eine sehr engmaschige Steuerung zur Verfügung gestellt, die eine flexible Umsetzung ermöglicht und gleichzeitig die Vorteile der Deduplizierungsfunktion und des Bewahrens von Redundanz für Schlüsseldaten aufrechterhält.
-
In der folgenden Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Bestandteil hiervon bilden und mehrere Ausführungsformen der vorliegenden Erfindung veranschaulichen. Dabei dürfte offensichtlich sein, dass auch andere Ausführungsformen verwendet und Änderungen an Struktur und Funktion vorgenommen werden können, ohne vom Geltungsumfang der vorliegenden Erfindung abzuweichen.
-
Mit Blick auf 1 wird ein als Beispiel dienendes Computersystem 10 dargestellt, in dem Aspekte der vorliegenden Erfindung realisiert sein können. Das Computersystem 10 beinhaltet eine Zentraleinheit (CPU) 12, die mit einer oder mehreren Massenspeichereinheiten 14 und einer Speichereinheit 16 verbunden ist. Die Massenspeichereinheiten können Festplattenlaufwerks-Einheiten (Hard Disk Drive, HDD) beinhalten, die in einer redundanten Anordnung unabhängiger Festplatten (Redundant Array of Independent Disks, RAID) konfiguriert sein können. Die Datenverwaltungsoperationen, bei denen Aspekte der vorliegenden Erfindung wie weiterhin beschrieben realisiert sein können, können auf der bzw. den Einheiten 14 durchgeführt werden, die sich in dem System 10 oder an einer anderen Stelle befindet. Die Speichereinheit 16 kann einen Arbeitsspeicher wie z.B. einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (Electrically Erasable Programmable Read Only Memory, EEPROM) oder eine Anzahl verwandter Einheiten beinhalten.
-
Der gezeigte Arbeitsspeicher 16 beinhaltet ein Anwendungsprogramm 15 und ein Anwendungsprogramm 17, in dem ein Dateisystem 19 betrieben werden kann. Die Anwendung 15 und die Anwendung 17 können Segmente von Daten, z.B. Datenstücke oder Datenblöcke, die in Einheiten wie z.B. der Massenspeichereinheit 14 physisch gespeichert sind, erzeugen, löschen oder anderweitig verwalten. Das Dateisystem 19 stellt ein Mittel bereit, um Daten, die beibehalten werden sollen, nachdem das Anwendungsprogramm 17 beendet wird, zu organisieren, indem es Verfahrensweisen zum Speichern, Abrufen und Aktualisieren von Daten bereitstellt, und verwaltet darüber hinaus den verfügbaren Speicherplatz auf der bzw. den Einheiten, welche die Daten beinhalten. Das Dateisystem 19 organisiert Daten auf eine wirkungsvolle Art und Weise und ist auf die spezifischen Eigenschaften der Einheit (z.B. des Computers 10 und/oder des Arbeitsspeichers 16) abgestimmt. Bei einer Ausführungsform kann die Anwendung 17 ein Betriebssystem 17 sein, wobei das Dateisystem 19 eine enge Kopplung zwischen dem Betriebssystem 17 und dem Dateisystem 19 aufrechterhält. Das Dateisystem 19 kann Mechanismen bereitstellen, um den Zugriff auf die Daten und Metadaten zu steuern, und es kann Mechanismen zur Sicherstellung der Datenzuverlässigkeit beinhalten, wie sie z.B. für weitere konkrete Aspekte der vorliegenden Erfindung notwendig sind, wie der Fachmann weiß. Das Dateisystem 19 kann ein Mittel bereitstellen, mit dem mehrere Anwendungsprogramme 15, 17 Daten in derselben Datei nahezu gleichzeitig aktualisieren können.
-
In der veranschaulichten Ausführungseinheit sind die Speichereinheit 16 und die Massenspeichereinheit 14 über ein signaltragendes Medium mit der CPU 12 verbunden. Zusätzlich ist die CPU 12 über einen Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, mit dem eine Vielzahl von zusätzlichen Computersystemen 22 und 24 verbunden sind. Das Computersystem 10 kann eine oder mehrere Prozessoreinheiten (z.B. die CPU 12) und zusätzliche Speichereinheiten 16 für jede einzelne Komponente des Computersystems 10 beinhalten, um jede hier beschriebene Operation durchzuführen und die Zwecke der vorliegenden Erfindung zu erfüllen.
-
2 ist ein beispielhaftes Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Dabei werden Hostcomputer 210, 220, 225 gezeigt, die jeweils als eine Zentraleinheit zum Durchführen einer Datenverarbeitung im Rahmen eines Datenspeichersystems 200 dienen. Die Hosts (physische oder virtuelle Einheiten) 210, 220 und 225 können ein oder mehrere neue physische Einheiten oder logische Einheiten sein, mit denen die Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 erreicht werden. Bei einer lediglich als Beispiel dienenden Ausführungsform kann ein Datenspeichersystem 200 als IBM® System Storage™ DS8000™ realisiert sein. Eine Netzwerkverbindung 260 kann eine Fibre-Channel-Fabric, eine Fibre-Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-over-Ethernet-Fabric (FCoE-Fabric) eine FICON- oder ESCON-E/A-Schnittstelle, jede andere Art von E/A-Schnittstelle, ein Funknetz, Festnetz, lokales Netz (LAN), Weitverkehrsnetz (WAN), ein heterogenes, homogenes, öffentliches (z.B. das Internet) oder privates Netz oder auch eine Kombination hiervon sein. Die Hosts 210, 220 und 225 können lokal oder über einen oder mehrere Standorte verteilt sein und mit jeder Art von Fabric (oder Fabric-Channel) (in 2 nicht gezeigt) oder Netzwerkadapter 260 zum Speicher-Controller 240 ausgerüstet sein, z.B. mit Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, Funk- oder Koaxialadaptern. Das Datenspeichersystem 200 ist entsprechend mit einer geeigneten (in 2 nicht gezeigten) Fabric oder einem Netzwerkadapter 260 ausgerüstet, um Daten zu übertragen. Das in 2 abgebildete Datenspeichersystem 200 weist einen Speicher-Controller 240 und einen Speicher 230 auf.
-
Für ein besseres Verständnis der hier beschriebenen Verfahren zeigt 2 einen Speicher-Controller 240 als eine einzelne Verarbeitungseinheit mit einem Mikroprozessor 242, einem Systemspeicher 243 und einem nichtflüchtigen Speicher (Non-Volatile Memory, NVS) 216, die im Folgenden ausführlicher beschrieben wird. Dabei wird darauf verwiesen, dass bei manchen Ausführungsformen der Speicher-Controller 240 mehrere Verarbeitungseinheiten aufweist, die jeweils über einen eigenen Prozessorkomplex und Systemspeicher verfügen und durch ein dediziertes Netzwerk innerhalb des Datenspeichersystems 200 miteinander verbunden sind. Der Speicher 230 kann aus einer oder mehreren Speichereinheiten wie beispielsweise Speicheranordnungen bestehen, die durch ein Speichernetzwerk mit dem Speicher-Controller 240 verbunden sind.
-
Bei manchen Ausführungsformen können die in dem Speicher 230 enthaltenen Einheiten in einer Schleifenarchitektur verbunden sein. Der Speicher-Controller 240 verwaltet den Speicher 230 und ermöglicht das Verarbeiten von Schreib- und Leseanforderungen, die für den Speicher 230 vorgesehen sind. Der Systemspeicher 243 des Speicher-Controllers 240 speichert Programmbefehle und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen in Zusammenhang mit dem Verwalten des Speichers 230 durchzuführen. Bei einer Ausführungsform enthält der Systemspeicher 243 die Betriebssoftware 250 bzw. ist dieser zugehörig oder tauscht mit ihr Daten aus und ist teilweise dafür konfiguriert, die Funktionalität der vorliegenden Erfindung zu realisieren. Wie 2 zeigt, kann der Systemspeicher 243 auch einen hier als „Cachespeicher“ bezeichneten Cache 245 für den Speicher 230 beinhalten oder mit diesem Daten austauschen, um „Schreibdaten“ und „Lesedaten“ zwischen zu speichern, die sich auf Schreib- bzw. Lese-Anforderungen und die ihnen zugehörigen Daten beziehen. Bei einer Ausführungsform wird der Cache 245 in einer Einheit zugeordnet, die außerhalb des Systemspeichers 243 angesiedelt, für den Mikroprozessor 242 jedoch zugänglich ist und dazu dienen kann, ergänzend zum Ausführen der hier beschriebenen Operationen, zusätzlichen Schutz gegen Datenverlust bereitzustellen.
-
Bei einigen Ausführungsformen ist der Cache 245 mit einem flüchtigen Arbeitsspeicher und einem nichtflüchtigen Arbeitsspeicher realisiert und für eine verbesserte Leistung des Datenspeichersystems 200 über einen (in 2 nicht gezeigten) lokalen Bus mit dem Mikroprozessor 242 verbunden. Der in dem Datenspeicher-Controller enthaltene NVS 216 kann für den Mikroprozessor 242 zugänglich sein und dient dazu, zusätzliche Unterstützung für Operationen und Ausführung der vorliegenden Erfindung bereitzustellen, wie sie in anderen Figuren beschrieben sind. Der NVS 216 kann auch als „dauerhafter“ Cache oder „Cachespeicher“ bezeichnet werden und ist mit einem nichtflüchtigen Speicher realisiert, der über eine externe Stromversorgung verfügen kann, um die darin gespeicherten Daten aufrechtzuerhalten. Der NVS kann für jeden Zweck, der geeignet ist, die Ziele der vorliegenden Erfindung zu erreichen, in und mit dem Cache 245 gespeichert sein. Bei manchen Ausführungsformen versorgt eine (in 2 nicht gezeigte) Notstromquelle wie beispielsweise eine Batterie den NVS 216 mit ausreichend Strom, um die darin gespeicherten Daten bei einer Stromunterbrechung des Datenspeichersystems 200 aufrechtzuerhalten. Bei bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner als oder gleich der Gesamtkapazität des Cache 245.
-
Der Speicher 230 kann in physischer Hinsicht einen oder mehrere Speichereinheiten wie z.B. Speicheranordnungen aufweisen. Eine Speicheranordnung ist eine logische Zusammenfassung einzelner Speichereinheiten wie z.B. eine Festplatte. Bei bestimmten Ausführungsformen weist der Speicher 230 eine JBOD(Just a Bunch of Disks)-Anordnung oder eine RAID(Redundant Array of Independent Disks)-Anordnung auf. Zudem kann eine Ansammlung von physischen Speicheranordnungen weiterhin zu einem Rang zusammengeschlossen sein, die den physischen Speicher von der logischen Konfiguration trennt. Der Speicherbereich in einem Rang kann logischen Speicherdatenträgern zugeordnet sein, welche die in einer Schreib/Lese-Anforderung angegebene Speicherstelle definieren.
-
Bei einer lediglich als Beispiel dienenden Ausführungsform kann das in 2 gezeigte Speichersystem einen logischen Datenträger oder einfach „Datenträger“ beinhalten, der verschiedene Arten von Zuordnungen aufweisen kann. Die Speicher 230a, 230b und 230n sind als Ränge des Datenspeichersystems 200 abgebildet und werden hier als Rang 230a, 230b und 230n bezeichnet. Ränge können lokal im Datenspeichersystem 200 oder an einem physisch entfernten Ort angesiedelt sein. Anders ausgedrückt: Ein lokaler Speicher-Controller kann mit einem entfernt angeordneten Speicher-Controller verbunden sein und einen Speicher an dem entfernt liegenden Ort verwalten. Der Rang 230a ist mit zwei vollständigen Datenträgern 234 und 236 sowie mit einem partiellen Datenträger 232a konfiguriert. Der Rang 230b ist mit einem weiteren Teil-Datenträger 232b abgebildet. Somit kann der Datenträger 232 über die Ränge 230a und 230b verteilt sein. Der Rang 230n ist als vollständig dem Datenträger 238 zugeordnet abgebildet, d.h. der Rang 230n bezieht sich auf den kompletten physischen Speicher des Datenträgers 238. Aus den obigen Beispielen dürfte klar sein, dass ein Rang so konfiguriert sein kann, dass er einen oder mehrere partielle und/oder vollständige Datenträger beinhaltet. Datenträger und Ränge können des Weiteren in so genannte „Spuren“ unterteilt sein, die für einen festen Speicherblock stehen. Eine Spur ist somit einem gegebenen Datenträger zugewiesen und kann einem gegebenen Rang zugeordnet werden.
-
Der Speicher-Controller 240 beinhaltet einen Steuerschalter 241 zum Steuern des Fibre-Channel-Protokolls für die Hostcomputer 210, 220, 225, einen Mikroprozessor 242 zum Steuern des gesamten Speicher-Controllers 240, einen nichtflüchtigen Steuerspeicher 243 zum Speichern eines Mikroprogramms 250 (Betriebssoftware), um den Betrieb des Speicher-Controllers 240 zu steuern, Daten für die Steuerung und jede Tabelle, die später beschrieben werden, den Cache 245 zum vorübergehenden Speichern (Zwischenspeichern) von Daten und Pufferspeicher 244, um den Cache 245 beim Lesen und Schreiben von Daten zu unterstützen, einen Steuerschalter 241 zum Steuern eines Protokolls, um die Datenübertragung zu oder von den Speichereinheiten 230 zu steuern, und ein Komprimierungsbetriebsmodul 255 sowie ein Komprimierungsbetriebslisten-Modul 257, in dem Daten gesetzt werden können. Um die hier beschriebenen Operationen zu unterstützen, können mehrere Pufferspeicher 244 mit der vorliegenden Erfindung realisiert sein.
-
Bei einer Ausführungsform sind die Hostcomputer oder die eine bzw. die mehreren physischen oder virtuellen Einheiten 210, 220, 225 sowie der Speicher-Controller 240 über einen Netzwerkwerkadapter 260 (bei dem es sich um einen Fibre-Channel-Adapter handeln kann) als eine Schnittstelle, d.h. über einen als „Fabric“ bezeichneten Schalter verbunden. Bei einer Ausführungsform wird die Funktionsweise des in 2 gezeigten Systems beschrieben. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 steuern, um Befehlsdaten von der (physischen oder virtuellen) Hosteinheit 210 und Daten zum Identifizieren der (physischen oder virtuellen) Hosteinheit 210 zu speichern. Der Steuerschalter 241, die Pufferspeicher 244, der Cache 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das Komprimierungsbetriebsmodul 255 und das Komprimierungsbetriebslisten-Modul 257 tauschen Daten miteinander aus und können getrennte Komponenten oder eine einzige Komponente sein. Zudem können einige, wenn nicht alle Komponenten wie beispielsweise die Betriebssoftware 250 in dem Arbeitsspeicher 243 enthalten sein. Zu Zwecken, die mit der vorliegenden Erfindung im Einklang sind, können alle Komponenten innerhalb der gezeigten Einheiten miteinander verbunden sein und Daten miteinander austauschen.
-
Der gezeigte Speicher-Controller 240 beinhaltet eine Datendeduplizierungsmaschine 255, in der eine Anzahl von Schreibanforderungen 259 verarbeitet wird. Die Datendeduplizierungsmaschine 255 kann in struktureller Hinsicht ein vollständiges Modul sein oder anderen einzelnen Modulen zugehörig und/oder in diese integriert sein. Die Datendeduplizierungsmaschine 255 ist so konfiguriert, dass sie gemeinsam mit anderen Komponenten des Speicher-Controllers 240 wie z.B. dem Mikroprozessor 242 Datendeduplizierungsoperationen für Schreibdaten durchführt, die durch den Speicher-Controller 240 an den Speicher 230 geleitet werden.
-
Wie weiter oben bereits erwähnt, beinhaltet der Speicher-Controller 240 den Cache 245 (der in seiner Gesamtheit als Cachesystem bezeichnet werden kann) und akzeptiert Schreibdaten von den Hosts 210, 220 und 225 oder ähnlichen Einheiten, die dann in den Cachespeicher 245 gestellt werden. Die Datendeduplizierungsmaschine 255 überprüft danach, ob die Schreibdaten in dem Cachespeicher 245 doppelt vorhanden sind. Die Schreibanforderungen 259, welche die Anwendung 17 (1) vor Deduplizierungsoperationen schützen möchte, werden wie dargestellt mit Anzeigern 257 kenntlich gemacht. Dabei ist zu beachten, dass der Anzeiger in dem Schreibbefehl und nicht in den zu schreibenden Daten (d.h. den Nutzdaten des Schreibbefehls) gesetzt wird. Die Schreibanforderungen 259 mit dem Anzeiger 257, die durch die Datendeduplizierungsmaschine 255 weitergeleitet werden, zeigen der Datendeduplizierungsmaschine 255 an, dass sie nicht Gegenstand einer Deduplizierungsoperation sind.
-
Bei einer Ausführungsform ermittelt die Anwendung 17 bzw. das Dateisystem 19 zunächst, ob ein gegebener Datenblock mehrfach im physischen Speicher gespeichert werden muss. Dabei kann es sich um Superblock-Metadaten handeln, die dem Dateisystem 19 selbst zugehörig sind. Die Anwendung 17 kann danach eine Schreibanforderung 259 an den zugrundeliegenden Plattentreiber (Gerätetreiber) veranlassen, wobei der Anzeiger 257 (z.B. als binäre Eins) gesetzt ist, was anzeigt, dass dieser Datenblock auch dann nicht dedupliziert werden darf, wenn festgestellt wird, dass er mit einem zuvor geschriebenen Datenblock identisch ist.
-
In einem darauffolgenden Schritt bereitet der Plattentreiber wiederum einen Befehl wie z.B. einen SCSI-Befehl (Small Computer Systems Interface) vor, bei dem das Bit so gesetzt ist, dass es gegenüber dem Speicher-Controller 240 angibt, dass die Deduplizierung übersprungen werden soll. Wenn er den gekennzeichneten Datenblock empfängt, überspringt der Speicher-Controller 240, wie dem Fachmann klar sein dürfte, über die Datendeduplizierungsmaschine 255 die Deduplizierungsschritte der Erzeugung eines Fingerabdrucks, der Überprüfung auf Übereinstimmung usw. und schreibt den ausgewählten Datenblock auch dann direkt in eine neue Speicherstelle der physischen Platte, wenn frühere Instanzen identischer Daten bereits in dem Speicher-Controller 240 gespeichert sein sollten.
-
Bei Anwendungen, die auf Benutzerebene ausgeführt werden, kann in einer Ausführungsform der Schreibsystemaufruf mit einem erweiterten Attribut bereitgestellt werden, das angibt, dass ein Datenblock auch dann auf die physische Platte geschrieben werden muss, wenn sein Inhalt mit Daten übereinstimmt, die zu einem früheren Zeitpunkt bereits auf die Platte geschrieben wurden. Wenn dies der Fall ist, werden abhängig davon, ob der Schreibvorgang z.B. in einen Block oder an eine Dateischnittstelle erfolgt ist, auf ähnliche Art und Weise wie oben beschrieben zusätzliche Schritte durchgeführt.
-
Mit Blick auf 3 wird eine Ausführungsform einer Eingabe/Ausgabe-Anforderung gezeigt, bei der es sich konkret um einen Schreibbefehl 300 auf zeitlicher Grundlage handelt, der von dem Host 210 (2) an den Speicher-Controller 240 gesendet werden kann. Bei einer Ausführungsform ist die Schreibanforderung 300 ein SCSI-Befehl. 3 gibt jedes Bit an, das in den 32 Bytes eines Befehlsblocks enthalten ist. So gibt in Byte 0 z.B. ein Operationscode die Art des auszuführenden Befehls an, d.h. einen Schreibbefehl auf zeitlicher Grundlage. Die Bytes 2 bis 9 sind für die logische Blockadresse (LBA) vorgesehen, die eine erste Dateneinheit kenntlich macht. Die Bytes 10 bis 13 sind für die Übertragungslänge vorgesehen, welche die Anzahl an geschriebenen Blöcken angibt, beginnend mit der ersten Dateneinheit, usw. Der Fachmann weiß, dass die verschiedenen Felder und/oder die unterschiedliche Anwendbarkeit dieser Felder in der Schreibanforderung 300 entsprechend der jeweiligen Realisierung variieren kann.
-
In der veranschaulichten Ausführungsform aus 3 befindet sich der Anzeiger 257 in Bit 7 von Byte 1 des Schreibbefehls 300. Somit kann der Anzeiger 257 eine binäre Null oder eine binäre Eins sein, um anzuzeigen, dass die gekennzeichneten zu schreibenden Daten nicht Gegenstand einer Datendeduplizierungsoperation sind, die von der Datendeduplizierungsmaschine 255 durchgeführt wird (ebenfalls 2). Auch hier dürfte dem Fachmann klar sein, dass andere, ähnliche Anzeiger auf die Schreibanforderung angewendet bzw. in Zusammenhang mit der Schreibanforderung und/oder Schreibdaten bereitgestellt werden können, um bestimmte Teile von Daten zu kennzeichnen, die von einer Deduplizierung ausgenommen sein sollen.
-
Mit Blick auf das Blockschaubild aus 4 werden verschiedene funktionelle Aspekte der vorliegenden Erfindung als beispielhafter Ablauf dargestellt. Konkret wird gezeigt, wie das Cachesystem 245 Schreibdaten 402, die durch die Datendeduplizierungsmaschine 255 verarbeitet werden sollen, als eine Schreiboperation 404 in den Cache 245 akzeptiert. Wenn die Schreibdaten 402 durch die Datendeduplizierungsmaschine 255 verarbeitet werden, werden sie - wie weiter oben bereits erwähnt - normalerweise daraufhin überprüft, ob sie in dem bestehenden Speicher bereits vorhanden sind. Da die Schreibanforderung 259 jedoch den Anzeiger 257 enthält, wird keine Deduplizierungsoperation durchgeführt, und die Schreibdaten werden durch die Deduplizierungsmaschine 255 und den Cachespeicher 245 geleitet und gelangen schließlich in den physisch zugeordneten Speicher 230.
-
Bei einer alternativen Ausführungsform, die zum Zwecke einer anschaulicheren Darstellung hier nicht gezeigt ist, kann das Cachesystem 245 vor der Deduplizierungsmaschine 255 angeordnet sein. In diesem Fall wird der Anzeiger 257 in dem Schreibbefehl 259 gesetzt, und das entsprechende Datensegment wird durch den Cache 245 geschrieben. Alternativ speichert der Cache 245 den Bit-Anzeiger 257, so dass bei einer späteren Löschung des Segments der Anzeiger 257 für einen gegebenen Satz von Segmenten der Deduplizierungsmaschine 255 zur Verfügung steht. Dabei dürfte dem Fachmann klar sein, dass zugunsten einer bestimmten Anwendung auch andere Abwandlungen der in 4 abgebildeten Funktionsaspekte durchgeführt werden können, z.B. ein Betriebsablauf und eine Platzierung, wie sie weiter oben erwähnt wurden.
-
Die im Folgenden beschriebene 5 ist ein beispielhaftes Verfahren 500 zum Sicherstellen von Datenredundanz in Speicherteilsystemen mit Datendeduplizierungssystemen, in denen Aspekte der veranschaulichten Ausführungsformen realisiert sein können. Das Verfahren 500 beginnt (Schritt 502) mit der Konfiguration eines Anzeigers, der mit einem ausgewählten Datensegment bereitgestellt wird (z.B. innerhalb eines SCSI-Schreibbefehls), das durch das Datendeduplizierungssystem geschrieben werden soll, um anzuzeigen, dass das ausgewählte Datensegment keiner Deduplizierungsoperation unterzogen werden darf (Schritt 504). Danach endet das Verfahren 500 (Schritt 506).
-
In der im Folgenden beschriebenen 6 wird ein beispielhaftes Verfahren 600 zum Verarbeiten von Daten veranschaulicht, in dem ebenfalls verschiedene Aspekte der vorliegenden Erfindung realisiert sein können. Das Verfahren 600 beginnt (Schritt 602) mit der Konfiguration des Anzeigers wie weiter oben beschrieben (Schritt 604). In der veranschaulichten Ausführungsform wird der Anzeiger in Zusammenhang mit einer Schreibanforderung als ein gesetztes Bit in einem SCSI-Schreibbefehl bereitgestellt (Schritt 606). Danach wird der Befehl durch den Speicher-Controller verarbeitet (Schritt 608). Wenn der SCSI-Befehl ein gesetztes Bit für bestimmte ausgewählte Daten enthält (Schritt 610), wird verhindert, dass eine Deduplizierungsoperation für das zugehörige Datensegment durchgeführt wird (Schritt 612), und das zugehörige Datensegment wird entsprechend direkt in eine neu zugeordnete physische Speicherstelle geschrieben (Schritt 614).
-
Wenn - zurück in Schritt 610 - der SCSI-Befehl das gesetzte Bit für das betreffende ausgewählte Datensegment nicht enthält, wird das zugehörige Datensegment durch verschiedene Deduplizierungsalgorithmen in der Deduplizierungsmaschine verarbeitet (z.B. indem es anhand anderer zuvor gespeicherter Versionen des Datensegments auf eine Deduplizierung überprüft wird und eine andere Deduplizierungsfunktionalität durchgeführt wird, die dem Fachmann bekannt sein dürfte). Danach endet das Verfahren 600 (Schritt 618).
-
Die Mechanismen der veranschaulichten Ausführungsformen sind wie weiter oben beschrieben auf die Schreibanforderungen selbst anwendbar oder können - bei anderen Ausführungsformen - in Zusammenhang mit den jeweils ausgewählten Daten realisiert werden. So können bei einer Ausführungsform die Superblock-Metadaten selbst mit dem Anzeiger gekennzeichnet werden, um kenntlich zu machen, dass die Daten nicht Gegenstand von Datendeduplizierungsoperationen sind. Dem Fachmann dürften auch andere für eine spezifische Anwendung geeignete Techniken bekannt sein, mit denen eine Anzeige in Zusammenhang mit ausgewählten Daten bereitgestellt werden kann.
-
Der Fachmann weiß, dass Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogramm ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung in Gestalt einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (z.B. Firmware, residente Software, Mikrocode usw.) oder in Gestalt einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte vereint, welche zusammenfassend als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung in Gestalt eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, auf denen computerlesbarer Programmcode enthalten ist.
-
Dabei kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien genutzt werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem bzw. eine entsprechende Vorrichtung oder Einheit oder aber eine beliebige geeignete Kombination der vorgenannten Elemente sein, ohne jedoch auf diese beschränkt zu sein. Konkretere Beispiele des computerlesbaren Speichermediums würden Folgendes beinhalten (wobei dies eine nicht vollständige Liste darstellt): eine elektrische Verbindung mit einem oder mehreren Leitern, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen Lichtwellenleiter, einen tragbaren CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination der vorgenannten Elemente. In Verbindung mit diesem Dokument kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm enthalten oder speichern kann, welches von oder in Zusammenhang mit einem der Befehlsausführung dienenden System, einer Vorrichtung oder Einheit verwendet wird.
-
Auf einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlose, drahtgebundene, Lichtwellenleiterkabel-, HF- und andere Medien oder eine beliebige Kombination der vorgenannten Medien. Computerprogrammcode für das Ausführen von Arbeitsschritten für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein, unter anderem eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, unter anderem ein LAN oder ein WAN, mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Im Folgenden werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann/können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegeben werden.
-
Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsartikel hervorbringen, der Befehle aufweist, mit denen die Funktion/Handlung, die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegeben ist, realisiert wird. Die Computerprogrammbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Betriebsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder den anderen Einheiten ausgeführt wird, so dass die Befehle, die auf dem Computer oder der anderweitigen Datenverarbeitungsvorrichtung ausgeführt werden, Prozesse bereitstellen, mit denen die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen realisiert werden.
-
Der Ablaufplan und die Blockschaubilder in den obigen Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Code-Teil darstellen, der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die angegebene(n) logische(n) Funktion(en) realisieren lässt/lassen. Zu beachten ist ferner, dass bei manchen alternativen Ausführungsformen die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten können. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Ebenfalls erwähnenswert ist, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellung sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplan-Darstellung durch Spezialsysteme auf der Grundlage von Hardware, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert werden kann/können.
-
Obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung im Einzelnen dargestellt wurden, weiß der Fachmann, dass Änderungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom inhaltlichen Umfang der vorliegenden Erfindung abzuweichen, wie er in den folgenden Ansprüchen dargelegt ist.