-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft allgemein Computer und konkret zum Verwenden einer Ähnlichkeitssuche für ein effizientes Abrufen von Auszügen (digests) bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem in einer Datenverarbeitungsumgebung.
-
BESCHREIBUNG DES STANDES DER TECHNIK
-
In der heutigen Gesellschaft sind Computersysteme alltäglich. Computersysteme findet man beispielsweise am Arbeitsplatz, zu Hause oder in der Schule. Zu Computersystemen können Datenspeichersysteme bzw. Plattenspeichersysteme zum Verarbeiten und Speichern von Daten gehören. Täglich müssen große Datenmengen verarbeitet werden, und die aktuelle Tendenz deutet darauf hin, dass diese Mengen in absehbarer Zukunft weiter ansteigen werden. Eine wirksame Weise zum Lösen des Problems besteht in der Verwendung von Deduplizierung. Der einem Deduplizierungssystem zugrunde liegende Gedanke besteht darin, die Tatsache auszunutzen, dass große Teile der verfügbaren Daten immer wieder kopiert werden, indem wiederholte Daten ausfindig gemacht und lediglich beim ersten Vorkommen gespeichert werden. Nachfolgende Kopien werden mit Verweisen auf das gespeicherte Vorkommen ersetzt, wodurch die Speicheranforderungen erheblich verringert werden, wenn sich die Daten tatsächlich wiederholen.
-
ZUSAMMENFASSUNG DER BESCHRIEBENEN AUSFÜHRUNGSFORMEN
-
In einer Ausführungsform wird ein Verfahren zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem unter Verwendung einer Prozessoreinheit in einer Datenverarbeitungsumgebung bereitgestellt. In einer Ausführungsform werden Eingabedaten lediglich beispielhaft in Daten-Chunks mit fester Größe aufgeteilt. Für jeden der Daten-Chunks mit fester Größe werden Ähnlichkeitselemente, Auszugsblockbegrenzungen und Auszugswerte berechnet. in einer die Ähnlichkeitselemente für jeden der Daten-Chunks mit fester Größe in einem Repository enthaltenden Suchstruktur (d. h. einem Index) wird nach übereinstimmenden Ähnlichkeitselementen gesucht. Positionen ähnlicher Daten werden beruhend auf gefundenen übereinstimmenden Ähnlichkeitselementen in dem Repository ausfindig gemacht. Die Positionen der ähnlichen Daten werden zum Ausfindigmachen von gespeicherten Auszugswerten und entsprechenden gespeicherten Auszugsblockbegrenzungen der ähnlichen Daten in dem Repository und zum Laden dieser in den Hauptspeicher verwendet. Die Auszugswerte und die entsprechenden Auszugsblockbegrenzungen der Eingabedaten werden mit den gespeicherten Auszugswerten und den entsprechenden gespeicherten Auszugsblockbegrenzungen abgeglichen, um Datenübereinstimmungen zu finden.
-
In einer anderen Ausführungsform wird ein Computersystem zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem unter Verwendung einer Prozessoreinheit in einer Datenverarbeitungsumgebung bereitgestellt. Das Computersystem beinhaltet ein durch einen Computer lesbares Medium und einen Prozessorder, der mit dem durch einen Computer lesbaren Medium einen Datenaustausch ausführen kann. In einer Ausführungsform teilt der Prozessor Eingabedaten lediglich beispielhaft in Daten-Chunks mit fester Größe auf. Für jeden der Daten-Chunks mit fester Größe werden Ähnlichkeitselemente, Auszugsblockbegrenzungen und Auszugswerte berechnet. In einer die Ähnlichkeitselemente für jeden der Daten-Chunks mit fester Größe in einem Repository enthaltenden Suchstruktur (d. h. einem Index) wird nach übereinstimmenden Ähnlichkeitselementen gesucht. Positionen ähnlicher Daten werden in dem Repository ausfindig gemacht. Die Positionen der ähnlichen Daten werden zum Ausfindigmachen von gespeicherten Auszugswerten und entsprechenden gespeicherten Auszugsblockbegrenzungen der ähnlichen Daten in dem Repository und zum Laden dieser in den Hauptspeicher verwendet. Die Auszugswerte und die entsprechenden Auszugsblockbegrenzungen der Eingabedaten werden mit den gespeicherten Auszugswerten und den entsprechenden gespeicherten Auszugsblockbegrenzungen abgeglichen, um Datenübereinstimmungen zu finden.
-
In einer weiteren Ausführungsform wird ein Computerprogrammprodukt zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem unter Verwendung einer Prozessoreinheit in einer Datenverarbeitungsumgebung bereitgestellt. Auf dem durch einen Computer lesbaren Speichermedium sind durch einen Computer lesbare Programmcodeteile gespeichert. Die durch einen Computer lesbaren Programmcodeteile beinhalten einen ersten ausführbaren Teil, der Eingabedaten in Daten-Chunks mit fester Größe aufteilt. Für jeden der Daten-Chunks mit fester Größe werden Ähnlichkeitselemente, Auszugsblockbegrenzungen und Auszugswerte berechnet. in einer die Ähnlichkeitselemente für jeden der Daten-Chunks mit fester Größe in einem Repository enthaltenden Suchstruktur (d. h. einem Index) wird nach übereinstimmenden Ähnlichkeitselementen gesucht. Positionen ähnlicher Daten werden in dem Repository ausfindig gemacht. Die Positionen der ähnlichen Daten werden zum Ausfindigmachen von gespeicherten Auszugswerten und entsprechenden gespeicherten Auszugsblockbegrenzungen der ähnlichen Daten in dem Repository und zum Laden dieser in den Hauptspeicher verwendet. Die Auszugswerte und die entsprechenden Auszugsblockbegrenzungen der Eingabedaten werden mit den gespeicherten Auszugswerten und den entsprechenden gespeicherten Auszugsblockbegrenzungen abgeglichen, um Datenübereinstimmungen zu finden.
-
Zusätzlich zu der vorangegangenen beispielhaften Ausführungsform eines Verfahrens werden andere beispielhafte Ausführungsformen von Systemen und Computerprodukten bereitgestellt, die ähnliche Vorteile bereitstellen. Die vorangegangene Zusammenfassung wurde bereitgestellt, um eine Auswahl von Konzepten in vereinfachter Form vorzustellen, die nachfolgend in der ausführlichen Beschreibung näher beschrieben werden. Weder soll diese Zusammenfassung Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands bestimmen, noch soll sie als Hilfe beim Ermitteln des Umfangs des beanspruchten Gegenstands verwendet werden. Der beanspruchte Gegenstand ist nicht auf Ausführungen beschränkt, die einen beliebigen oder alle im Abschnitt Hintergrund genannten Nachteile lösen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Damit die Vorteile der Erfindung ohne Weiteres verstanden werden, wird eine ausführlichere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf spezifische Ausführungsformen angeführt, die in den beigefügten Zeichnungen veranschaulicht werden. Unter dem Verständnis, dass diese Zeichnungen Ausführungsformen der Erfindung abbilden und deshalb nicht als deren Umfang einschränkend anzusehen sind, wird die Erfindung durch die Verwendung der beigefügten Zeichnungen mit zusätzlicher Genauigkeit und Ausführlichkeit erläutert, in denen:
-
1 ein Blockschaubild ist, das eine Datenverarbeitungssystemumgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
-
2 ein Blockschaubild ist, das eine Hardwarestruktur eines Datenspeichersystems in einem Computersystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können;
-
3 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können;
-
4 ein Ablaufplan ist, der ein beispielhaftes alternatives Verfahren zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können; und
-
5 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum effizienten Berechnen sowohl von Ähnlichkeitssuchwerten als auch von Begrenzungen von Auszugsblöcken unter Verwendung einer einzelnen linearen Berechnung von rollierenden Hash-Werten in einem Datendeduplizierungssystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Die Datendeduplizierung ist ein äußerst wichtiges und dynamisches Feld in Datenverarbeitungsspeichersystemen. Datendeduplizierung bezieht sich auf das Verringern und/oder Beseitigen von redundanten Daten. Bei der Datendeduplizierung wird ein Datenobjekt, bei dem es sich um eine Datei, einen Datenstrom oder eine andere Datenform handeln kann, in einen oder mehrere Chunks oder Blöcke genannte Teile aufgeteilt. Bei einem Datendeduplizierungsprozess werden doppelte Datenkopien verringert oder beseitigt, wodurch eine minimale Menge von redundanten Kopien bzw. eine einzelne Kopie der Daten übrigbleiben. Das Ziel eines Datendeduplizierungssystems besteht im Speichern einer einzelnen Kopie von duplizierten Daten, und die Herausforderungen beim Erreichen dieses Ziels liegen im effizienten Finden der duplizierten Datenmuster in einem üblicherweise großen Repository und dem Speichern der Datenmuster in einer speichereffizienten deduplizierten Form. Eine nennenswerte Herausforderung bei Deduplizierungsspeichersystemen besteht im Skalieren zum Unterstützen von äußerst großen Daten-Repositories. Derartige große Repositories können Größen bis zu Petabyte (1 Petabyte = 250 Byte) oder mehr erreichen. Derartige Repository-Größen unterstützende Deduplizierungsspeichersysteme müssen eine effiziente Verarbeitung zum Finden von duplizierten Datenmustern innerhalb der Repositories bereitstellen, wobei die Effizienz nach dem Ressourcenverbrauch zum Erreichen von Deduplizierung bemessen wird (Ressourcen können CPU-Zyklen, RAM-Speicher, dauerhafter Speicher, Vernetzung usw. sein). In einer Ausführungsform kann ein Deduplizierungsspeichersystem darauf beruhen, einen suchoptimierten Index von als Fingerabdruck oder Auszug bekannten Werten zu pflegen, wobei ein (kleiner) Fingerabdruck einen (größeren) Datenblock in dem Repository darstellt. Bei den Fingerabdruckwerten kann es sich um beruhend auf den Daten der Blöcke berechnete kryptografische Hash-Werte handeln. In einer Ausführungsform können sichere Hash-Algorithmen (SHA) wie z. B. SHA-1 oder SHA-256 verwendet werden, bei denen es sich um eine Familie von kryptografischen Hash-Funktionen handelt.
-
Das Erkennen von Übereinstimmungen von Fingerabdrücken unter Verwendung von Index-Nachschlagen ermöglicht das Speichern von Verweisen auf Daten, die bereits in einem Repository vorhanden sind.
-
Zum Bereitstellen einer angemessenen Deduplizierung bei diesem Ansatz muss die mittlere Größe der Datenblöcke, aufgrund denen Fingerabdrücke erzeugt werden, auf kleinere Größen begrenzt werden und darf nicht zu groß sein. Der Grund dafür liegt darin, dass eine Änderung eines Bits innerhalb eines Datenblocks wahrscheinlich den entsprechenden Fingerabdruck des Datenblocks ändern wird, und folglich wird das Schema, wenn es größere Datenblöcke gibt, im Vergleich dazu, wenn es kleinere Blöcke gibt, empfindlicher gegenüber Aktualisierungen in den Daten. Eine übliche Datenblockgröße kann abhängig von dem Typ von Anwendung und der Arbeitslast zwischen 4 KB und 64 KB liegen. Somit können kleine Datenblöcke lediglich beispielhaft Größen von bis zu 64 KB aufweisen, und große Datenblöcke sind Datenblöcke, deren Größe über 64 KB beträgt.
-
Zum Unterstützen von äußerst großen Repositories, die bis auf Petabyte skalieren (z. B. Repositories, die auf mindestens ein Petabyte skalieren), wird die Anzahl von zu speichernden Fingerabdrücken gepaart mit der Größe eines Fingerabdrucks (zwischen 16 Byte und 64 Byte liegend) untragbar. Für 1 Petabyte an deduplizierten Daten mit einer mittleren Datenblockgröße von 4 KB und einer Fingerabdruckgröße von 32 Byte (z. B. mit SHA-256) beträgt der zum Speichern der Fingerabdrücke benötigte Speicher zum Beispiel 8 Terabyte. Das Pflegen einer suchoptimierten Datenstruktur für derartige Umfänge von Fingerabdrücken ist schwierig und erfordert Optimierungstechniken. Vorhandene Optimierungstechniken skalieren jedoch nicht auf diese Größen und behalten dabei die Leistungsfähigkeit bei. Aus diesem Grund müssen die unterstützten Repositories relativ klein sein (in der Größenordnung von einigen Dutzend TB), um eine angemessene Leistungsfähigkeit bereitzustellen. Selbst für derartige kleinere Größen ergeben sich erhebliche Herausforderungen und Laufzeitkosten aufgrund des großen Umfangs der Fingerabdruck-Indizes, die bei der Deduplizierungsverarbeitung einen Engpass erzeugen.
-
Zum Lösen dieses Problems kann ein Deduplizierungssystem in einer Ausführungsform auf einem Zwei-Schritt-Ansatz zum Suchen nach Datenmustern während des Deduplizierens beruhen. In dem ersten Schritt wird ein großer Chunk eingehender Daten (z. B. ein paar Megabyte) in dem Repository auf ähnliche (anstelle von identisch gleichen) Daten-Chunks von bestehenden Daten durchsucht, und der eingehende Daten-Chunk wird entsprechend in Intervalle aufgeteilt und mit entsprechenden (ähnlichen) Repository-Intervallen gepaart. In dem zweiten Schritt wird auf Paare von ähnlichen Intervallen ein byteweiser Abgleich-Algorithmus angewendet, um identisch gleiche Teilintervalle zu erkennen, die bereits in einem Daten-Repository gespeichert sind. Der Abgleich-Algorithmus aus dem zweiten Schritt ist auf das Lesen sämtlicher relevanter ähnlicher Daten in dem Repository angewiesen, um sie byteweise mit den Eingangsdaten zu vergleichen.
-
Trotzdem besteht ein Problem, das aus dem byteweisen Vergleichen von dem Abgleich-Algorithmus aus dem zweiten Schritt zugrunde liegenden Daten herrührt, darin, dass Daten mit ungefähr derselben Größe und Geschwindigkeit wie die eingehenden Daten aus dem Repository für Vergleichszwecke gelesen werden sollten. Ein 1 GB an eingehenden Daten pro Sekunde verarbeitendes System sollte für einen byteweisen Vergleich zum Beispiel etwa 1 GB an Daten pro Sekunde aus dem Repository lesen. Dies erfordert von die Repository-Daten speichernden Speichereinheiten im Wesentlichen hohe Kapazitäten von E/A pro Sekunde, was wiederum deren Kosten erhöht.
-
Zusätzliche Tendenzen in der Informationstechnologie, die sich mit dem oben genannten Problem überschneiden, sind Folgende: (1) Verbesserungen des Verarbeitungsvermögens durch Erhöhen von CPU-Geschwindigkeiten und der Anzahl von CPU-Kernen. (2) Erhöhung der Plattendichte, während der Plattendurchsatz relativ konstant bleibt oder sich nur mäßig verbessert. Das bedeutet, dass es im Verhältnis zu der Datenkapazität weniger Spindeln gibt, wodurch der Gesamtdurchsatz praktisch verringert wird. Aufgrund des oben beschriebenen Problems gibt es einen Bedarf zum Entwickeln einer alternativen Lösung zur Integration in einer oben beschriebenen Ausführungsform eines Zwei-Schritt-Deduplizierungssystems, das kein Lesen aus dem Repository mit hohen Geschwindigkeiten/Umfängen erfordert.
-
Deshalb gehen in einer Ausführungsform lediglich beispielhaft zusätzliche Ausführungsformen diese Probleme an, und der Ressourcenverbrauch wird von Platten hin zu den CPUs verlagert, um aus den oben genannten Tendenzen einen Nutzen zu ziehen. Die hierin beschriebenen Ausführungsformen sind in die oben beschriebene Ausführungsform einer skalierbaren Zwei-Schritt-Deduplizierung integriert, und es wird eine Ähnlichkeitssuche zum Konzentrieren auf das Nachschlagen von Auszügen während der Deduplizierung verwendet. In einer Ausführungsform wird eine globale Ähnlichkeitssuche als Grundlage für das Konzentrieren auf die Ähnlichkeitssuche für Auszüge von Repository-Daten verwendet, die am wahrscheinlichsten mit den Eingabedaten übereinstimmen.
-
Die hierin beschriebenen Ausführungsformen verringern die von zugrunde liegenden Platten benötigte Kapazität von E/A pro Sekunde, ziehen einen Nutzen aus den Erhöhungen des Datenverarbeitungsvermögens und der Plattendichte und verringern die Kosten der Verarbeitung sowie Wartungskosten und umgebungsbedingten Aufwand (z. B. die elektrische Leistungsaufnahme) erheblich.
-
In einer Ausführungsform werden Eingabedaten in kleine Segmente (z. B. 4 KB) aufgeteilt, und für jedes derartige Segment wird ein Auszug (ein kryptografischer Hash-Wert, z. B. SHA1) berechnet. Zuerst wird ein wie oben beschriebener Ähnlichkeitssuchalgorithmus auf einen Block von Eingabe-Daten-Chunks (z. B. 16 MB) angewendet, und die Positionen der ähnlichsten Bezugsdaten in dem Repository werden ausfindig gemacht und gefunden. Diese Positionen werden dann zum Nachschlagen der Auszüge der ähnlichen Bezugsdaten verwendet. Die Auszüge sämtlicher in dem Repository enthaltenen Daten werden in einer Form gespeichert und abgerufen, die deren Vorkommen in den Daten entspricht. Wenn eine Position einer Sektion von in dem Repository enthaltenen Daten bekannt ist, werden die der Sektion von Daten zugehörigen Auszüge in dem Repository effizient ausfindig gemacht und abgerufen. Als Nächstes werden diese Bezugsauszüge in den Hauptspeicher geladen, und anstelle des Vergleichens von Daten zum Finden von Übereinstimmungen werden die Eingabeauszüge und die geladenen Bezugsauszüge miteinander abgeglichen.
-
Die beschriebenen Ausführungsformen stellen einen neuen grundlegenden Ansatz zum Gestalten eines Datendeduplizierungssystems bereit, das einen skalierbaren Zwei-Schritt-Ansatz einer Ähnlichkeitssuche gefolgt von einer Suche nach identisch gleich übereinstimmenden Segmenten mit Hilfe eines effizienten und kostengünstigen auf Auszügen/Fingerabdrücken beruhenden Abgleich-Algorithmus (anstelle eines byteweisen Datenvergleichs) integriert. Der auf Auszügen/Fingerabdrücken beruhende Abgleich-Algorithmus ermöglicht es, nur einen kleinen Bruchteil (1%) des Umfangs von Daten zu lesen, der bei einem byteweisen Datenvergleich benötigt wird. Die hierin vorgeschlagene vorliegende Erfindung, ein Deduplizierungssystem, kann zusätzlich zu einer hohen Effizienz und Leistungsfähigkeit und verringerten Kosten für Verarbeitung und Hardware eine hohe Skalierbarkeit auf äußerst große Daten-Repositories bereitstellen.
-
In einer Ausführungsform kann der Begriff „ähnliche Daten” lediglich beispielhaft folgendermaßen bezeichnet werden: für beliebige Eingabedaten werden Daten, die ähnlich sind wie die Eingabedaten, als Daten festgelegt, die weitgehend gleich (d. h. nicht vollständig, aber zu mindestens 50% ähnlich) wie die Eingabedaten sind. Wenn man die Daten aus binärer Sicht (Perspektive) betrachtet, bedeutet dies, dass es sich bei ähnlichen Daten um Daten handelt, bei denen die meisten Bytes (d. h. nicht vollständig, aber zu mindestens 50% ähnlich) gleich sind wie die Eingabedaten.
-
In einer Ausführungsform kann der Begriff „ähnliche Suche” lediglich beispielhaft als Prozess zum Suchen von Daten bezeichnet werden, die ähnlich sind wie die Eingabedaten in einem Daten-Repository. In einer Ausführungsform kann dieser Prozess unter Verwendung einer Suchstruktur von Ähnlichkeitselementen durchgeführt werden, die gepflegt wird und innerhalb derer gesucht wird.
-
In einer Ausführungsform kann der Begriff „Ähnlichkeitselemente” lediglich beispielhaft beruhend auf den Daten berechnet werden und eine globale Suche nach Daten ermöglichen, die ähnlich sind wie die Eingabedaten in einem Daten-Repository. Im Allgemeinen werden ein oder mehrere Ähnlichkeitselemente berechnet, die einen großen (z. B. mindestens 16 MB) Daten-Chunk darstellen.
-
Somit stellen die verschiedenen hierin beschriebenen Ausführungsformen verschiedene Lösungen zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem unter Verwendung einer Prozessoreinheit in einer Datenverarbeitungsumgebung bereit. In einer Ausführungsform werden Eingabedaten lediglich beispielhaft in Daten-Chunks mit fester Größe aufgeteilt. Für jeden der Daten-Chunks mit fester Größe werden Ähnlichkeitselemente, Auszugsblockbegrenzungen und Auszugswerte berechnet. In einer die Ähnlichkeitselemente für jeden der Daten-Chunks mit fester Größe in einem Daten-Repository enthaltenden Suchstruktur (d. h. einem Index) wird nach übereinstimmenden Ähnlichkeitselementen gesucht. Positionen ähnlicher Daten werden in einem Repository ausfindig gemacht. Die Positionen der ähnlichen Daten werden zum Ausfindigmachen von gespeicherten Auszugswerten und entsprechenden gespeicherten Auszugsblockbegrenzungen der ähnlichen Daten in dem Repository und zum Laden dieser in den Hauptspeicher verwendet. Es sei angemerkt, dass die Positionen in einer Ausführungsform entweder physisch oder logisch (d. h. virtuell) sein können. Die Positionen beziehen sich auf Daten innerhalb eines Daten-Repositories. Die wichtige Eigenschaft einer ,Position' besteht darin, dass bei Kenntnis einer Position (physisch oder logisch) in den Daten des Repositories die Daten an dieser Position effizient ausfindig gemacht werden können und auf diese zugegriffen werden kann. Die Auszugswerte und die entsprechenden Auszugsblockbegrenzungen werden mit den gespeicherten Auszugswerten und den entsprechenden gespeicherten Auszugsblockbegrenzungen abgeglichen, um Datenübereinstimmungen zu finden.
-
In einer Ausführungsform stellt die vorliegende Erfindung eine Lösung zum Nutzen einer Ähnlichkeitssuche bereit, um für eine effiziente Deduplizierungsverarbeitung die relevanten Auszüge aus dem Repository in den Hauptspeicher zu laden. In einem Datendeduplizierungssystem wird die Deduplizierung durchgeführt, indem die Daten in große Chunks mit fester Größe aufgeteilt und für jeden Chunk (2 Gegenstände – Ähnlichkeitselemente und Auszugsblöcke/Auszugswerte) Hash-Werte (Auszugsblock/Auszugswert) für die Ähnlichkeitssuche und Auszugswerte berechnet werden. Das Datendeduplizierungssystem sucht nach übereinstimmenden Ähnlichkeitswerten der Chunks in einer Suchstruktur von Ähnlichkeitswerten und findet die Positionen von ähnlichen Daten in dem Repository. Das Datendeduplizierungssystem verwendet diese Positionen von ähnlichen Daten zum Ausfindigmachen von gespeicherten Auszügen der ähnlichen Repository-Daten und übereinstimmenden Eingabe- und Repository-Auszugswerten und zum Laden dieser in den Hauptspeicher, um Datenübereinstimmungen zu finden.
-
In einer Ausführungsform sorgt die vorliegende Erfindung für ein effizientes Berechnen sowohl von Ähnlichkeitssuchwerten als auch der Segmentierung (d. h. von Begrenzungen) von Auszugsblöcken unter Verwendung einer einzelnen linearen Berechnung von rollierenden Hash-Werten. In einem Datendeduplizierungssystem werden die Eingabedaten in Chunks aufgeteilt, und für jeden Chunk wird ein Satz von rollierenden Hash-Werten berechnet. Eine einzelne lineare Abfrage der rollierenden Hash-Werte erzeugt sowohl Ähnlichkeitssuchwerte als auch Begrenzungen der Auszugsblöcke des Chunks. Jeder rollierende Hash-Wert entspricht einem fortlaufenden Fenster von Bytes an relativen Byte-Adressen. Die Ähnlichkeitssuchwerte werden zum Suchen nach ähnlichen Daten in dem Repository verwendet. Die Auszugsblock-Segmentierung wird zum Berechnen von Auszugsblock-Begrenzungen und entsprechenden Auszugswerten des Chunks für übereinstimmende Auszüge verwendet. Jeder rollierende Hash-Wert trägt zu der Berechnung der Ähnlichkeitswerte und zu der Berechnung der Auszugsblock-Segmentierungen bei. Jeder rollierende Hash-Wert kann nach dem Beitragen zu den Berechnungen verworfen werden. Die beschriebene Ausführungsform stellt eine beträchtliche Verarbeitungseffizienz und Verringerung des CPU-Verbrauchs sowie erhebliche Verbesserungen der Leistungsfähigkeit bereit.
-
Somit verwendet der Deduplizierungsansatz der vorliegenden Erfindung wie oben beschrieben einen Zwei-Schritt-Prozess zum Suchen nach Datenmustern während des Deduplizierens. In dem ersten Schritt wird ein großer Chunk eingehender Daten (z. B. 2 Megabyte „MB”) in dem Repository auf ähnliche (anstelle von identisch gleichen) Chunks von bestehenden Daten durchsucht, und der eingehende Chunk wird entsprechend in Intervalle aufgeteilt und mit entsprechenden (ähnlichen) Repository-Intervallen gepaart. Der in dem ersten Schritt verwendete Ähnlichkeitsindex ist kompakt und einfach zu pflegen und durchsuchbar, da die für eine Ähnlichkeitssuche verwendeten Elemente im Verhältnis zu den Daten, die sie darstellen, sehr kompakt sind (z. B. stellen 16 Byte 4 Megabyte dar). Darüber hinaus ist in dem ersten Schritt zusätzlich zu einer Berechnung von Ähnlichkeitselementen eine Berechnung von Auszugssegmenten und entsprechenden Auszugswerten für den Eingabe-Daten-Chunk beinhaltet. All diese Berechnungen beruhen auf einer einzelnen Berechnung von rollierenden Hash-Werten. In dem zweiten Schritt werden Bezugsauszüge der ähnlichen Repository-Intervalle abgerufen, und dann werden die Eingabeauszüge mit den Bezugsauszügen abgeglichen, um Datenübereinstimmungen zu erkennen.
-
In einer Ausführungsform wird in dem hierin beschriebenen auf Ähnlichkeit beruhenden Deduplizierungsansatz ein Strom von Eingabedaten in Chunks (z. B. mindestens 16 MB) aufgeteilt, und jeder Chunk wird in zwei Hauptschritten verarbeitet. In dem ersten Schritt wird ein Ähnlichkeitssuchprozess angewendet, und Positionen der ähnlichsten Bezugsdaten in dem Repository werden gefunden. Innerhalb dieses Schrittes werden für den Eingabe-Chunk beruhend auf einer einzelnen linearen Berechnung von rollierenden Hash-Werten sowohl Ähnlichkeitssuchelemente als auch Auszugssegmentbegrenzungen berechnet. Für den Eingabe-Chunk werden Auszugswerte beruhend auf der erzeugten Segmentierung berechnet und in der Reihenfolge ihres Vorkommens in den Eingabedaten in einem Hauptspeicher gespeichert. Die Positionen von ähnlichen Daten werden dann zum Nachschlagen der Auszüge der ähnlichen Bezugsdaten und zum Laden dieser Auszüge in den Hauptspeicher, ebenfalls der Reihe nach, verwendet. Dann werden die Eingabeauszüge mit den Bezugsauszügen abgeglichen, um Datenübereinstimmungen zu bilden.
-
Wenn das Deduplizieren eines Eingabe-Chunks abgeschlossen ist, werden die den Eingabe-Chunks zugehörigen Auszüge in dem Repository gespeichert und dienen als Bezugsauszüge für nachfolgende Eingabedaten. Die Auszüge werden in einer linearen Form, die unabhängig von der deduplizierten Form ist, in der die diese Auszüge beschreibenden Daten gespeichert sind, und in der Reihenfolge ihres Vorkommens in den Daten gespeichert. Das Verfahren zum Speichern ermöglicht ein effizientes Abrufen von Auszugssektionen unabhängig von Fragmentierung beschreibenden deduplizierten Speicherformen und sorgt somit für einen geringen Verbrauch von E/A und Datenverarbeitungsressourcen.
-
In 1 ist eine beispielhafte Architektur 10 einer Datenverarbeitungssystem-Umgebung abgebildet. Das Computersystem 10 beinhaltet eine zentrale Verarbeitungseinheit (CPU) 12, die mit einem Datenübertragungsanschluss 18 und einer Hauptspeichereinheit 16 verbunden ist. Der Datenübertragungsanschluss 18 tauscht mit einem Datenübertragungsnetzwerk 20 Daten aus. Das Datenübertragungsnetzwerk 20 und das Speichernetzwerk können so konfiguriert sein, dass sie mit einem Server (Hosts) 24 und Speichersystemen, zu denen die Speichereinheiten 14 gehören können, Daten austauschen. Zu den Speichersystemen können Festplattenlaufwerks-(HDD-, Hard-Disk-Drive-)Einheiten, Halbleitereinheiten (SSD, Solid-State Devices) usw. gehören, die in einer redundanten Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks) konfiguriert sein können. Die unten beschriebenen Operationen können auf der/den Speichereinheit(en) 14 ausgeführt werden, die sich in dem System 10 oder andernorts befindet/befinden und mehrere Hauptspeichereinheiten 16 aufweisen kann/können, die unabhängig und/oder in Verbindung mit anderen CPU-Einheiten 12 arbeiten. Zu der Hauptspeichereinheit 16 kann Hauptspeicher wie zum Beispiel elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM, Electrically Erasable Programmable Read Only Memory) oder ein Host verwandter Einheiten gehören. Die Hauptspeichereinheit 16 und die Speichereinheiten 14 sind über ein signalführendes Medium mit der CPU 12 verbunden. Außerdem ist die CPU 12 über den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine angeschlossene Vielzahl zusätzlicher Computer-Host-Systeme 24 aufweist. Außerdem können die Hauptspeichereinheit 16 und die CPU 12 in jeder Komponente des Datenverarbeitungssystems 10 eingebettet und darin beinhaltet sein. Jedes Speichersystem kann ebenfalls separate und/oder verschiedene Hauptspeichereinheiten 16 und die CPU 12 beinhalten, die gemeinsam oder als separate Hauptspeichereinheit 16 und/oder CPU 12 arbeiten.
-
2 ist ein beispielhaftes Blockschaubild 200, das eine Hardwarestruktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Es werden Host-Computer 210, 220, 225 gezeigt, die jeweils als zentrale Verarbeitungseinheit zum Durchführen von Datenverarbeitung als Teil eines Datenspeichersystems 200 dienen. Bei den Cluster-Hosts/Knoten (physische oder virtuelle Einheiten) 210, 220 und 225 kann es sich um eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erreichen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 handeln. In einer Ausführungsform kann ein Datenspeichersystem 200 lediglich beispielhaft als IBM® ProtecTIER® Deduplizierungssystem TS7650GTM ausgeführt sein. Bei einer Netzwerkverbindung 260 kann es sich um eine Fibre-Channel-Fabric, eine Fibre-Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-over-Ethernet-Fabric oder eine Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, einen beliebigen anderen E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, heterogen, homogen, öffentlich (d. h. das Internet), privat oder eine beliebige Kombination daraus handeln. Die Hosts 210, 220 und 225 können lokal oder über einen oder mehrere Standorte verteilt sein und sie können mit jedem beliebigen Typ von Fabric-(oder Fabric-Kanal-) (in 2 nicht gezeigt) oder Netzwerk-Adapter 260 mit der Speichersteuereinheit 240 verbunden sein, wie zum Beispiel Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, Drahtlos- oder Koaxial-Adapter. Das Datenspeichersystem 200 ist entsprechend mit einem geeigneten Fabric-(in 2 nicht gezeigt) oder Netzwerk-Adapter 260 für den Datenaustausch ausgestattet. Das Datenspeichersystem 200 ist in 2 als die Speichersteuereinheiten 240 und die Cluster-Hosts 210, 220 und 225 aufweisend gezeigt. Die Cluster-Hosts 210, 220 und 225 können Cluster-Knoten beinhalten.
-
Um ein besseres Verständnis für die hierin beschriebenen Verfahren zu ermöglichen, ist die Speichersteuereinheit 240 in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemhauptspeicher 243 und einen nichtflüchtigen Speicher („NVS”, nonvolatile storage) 216 beinhaltet. Es sei angemerkt, dass die Speichersteuereinheit 240 in einigen Ausführungsformen aus mehreren Verarbeitungseinheiten besteht, die jeweils ihre eigene Prozessorfunktionseinheit und ihren eigenen Systemhauptspeicher aufweisen und über ein speziell dafür vorgesehenes Netzwerk innerhalb des Datenspeichersystems 200 miteinander verbunden sind. Der Speicher 230 (in 3 mit 230a, 230b und 230n bezeichnet) kann aus einer oder mehreren Speichereinheiten wie zum Beispiel Speicheranordnungen bestehen, die (über ein Speichernetzwerk) mit der Speichersteuereinheit 240 verbunden sind, wobei ein oder mehrere Cluster-Hosts 210, 220 und 225 mit jeder Speichersteuereinheit 240 verbunden sind.
-
In einigen Ausführungsformen können die in dem Speicher 230 beinhalteten Einheiten in einer Schleifenarchitektur verbunden sein. Die Speichersteuereinheit 240 verwaltet den Speicher 230 und ermöglicht das Verarbeiten von für den Speicher 230 bestimmten Schreib- und Leseanforderungen. Der Systemhauptspeicher 243 der Speichersteuereinheit 240 speichert Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte der vorliegenden Erfindung zum Ausführen und Verwalten des Speichers 230 wie hierin beschrieben auszuführen. In einer Ausführungsform beinhaltet der Systemhauptspeicher 243 die Betriebssoftware 250 zum Durchführen von hierin beschriebenen Verfahren und Arbeitsschritten, ist dieser Software zugehörig oder tauscht mit dieser Daten aus. Wie in 2 gezeigt ist, kann der Systemhauptspeicher 243 ebenfalls einen hierin auch als „Cachespeicher” bezeichneten Zwischenspeicher 245 für den Speicher 230 beinhalten oder mit diesem Daten austauschen, um „Schreibdaten” und „Lesedaten” zu puffern, die sich auf Schreib- bzw. Leseanforderungen und deren zugehörige Daten beziehen. In einer Ausführungsform ist der Zwischenspeicher 245 in einer Einheit angelegt, die sich außerhalb des Systemhauptspeichers 243 befindet, bleibt aber trotzdem zugänglich für den Mikroprozessor 242 und kann dazu dienen, neben dem Ausführen der hierin beschriebenen Arbeitsschritte einen zusätzlichen Schutz vor Datenverlust bereitzustellen.
-
In einigen Ausführungsformen ist der Zwischenspeicher 245 mit einem flüchtigen Speicher und einem nichtflüchtigen Speicher umgesetzt und für eine verbesserte Leistungsfähigkeit des Datenspeichersystems 200 über einen lokalen Bus (in 2 nicht gezeigt) mit dem Mikroprozessor 242 verbunden. Der in der Datenspeicher-Steuereinheit beinhaltete NVS 216 ist zugänglich für den Mikroprozessor 242 und dient zum Bereitstellen einer zusätzlichen Unterstützung für Arbeitsschritte und zum Ausführen der vorliegenden Erfindung, wie in anderen Figuren beschrieben ist. Der NVS 216 kann auch als „dauerhafter” Zwischenspeicher oder „Cachespeicher” bezeichnet werden und ist mit nichtflüchtigem Speicher umgesetzt, der externen Strom nutzen kann, um die darin gespeicherten Daten zu behalten. Der NVS kann in und mit dem Zwischenspeicher 245 für jeden beliebigen Zweck gespeichert werden, die dazu geeignet sind, die Ziele der vorliegenden Erfindung zu erreichen. In einigen Ausführungsformen speist eine Notstromversorgung (in 2 nicht gezeigt) wie zum Beispiel eine Batterie den NVS 216 mit ausreichend Strom für das Behalten der darin gespeicherten Daten, sollte der Strom für das Datenspeichersystem 200 ausfallen. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner als oder gleich wie die Gesamtkapazität des Zwischenspeichers 245.
-
Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie zum Beispiel Speicheranordnungen bestehen. Bei einer Speicheranordnung handelt es sich um eine logische Gruppierung von einzelnen Speichereinheiten wie zum Beispiel eine Festplatte. In bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD-Anordnung (Just a Bunch of Disks, nur ein Haufen Festplatten) oder einer RAID-Anordnung (Redundant Array of Independent Disks, redundante Anordnung unabhängiger Platten). Eine Sammlung von physischen Speicheranordnungen kann darüber hinaus kombiniert werden, um einen Rank zu bilden, der den physischen Speicher von der logischen Konfiguration trennt. Der Speicherplatz in einem Rank kann in logische Datenträger aufgeteilt werden, welche den in einer Schreib/Lese-Anforderung festgelegten Speicherort definieren.
-
In einer Ausführungsform kann das wie in 2 gezeigte Speichersystem lediglich beispielhaft einen logischen Datenträger oder einfach „Datenträger” beinhalten und verschiedene Arten von Zuordnungen aufweisen. Die Speicher 230a, 230b und 230n sind als Ranks in dem Datenspeichersystem 200 gezeigt und werden hierin als Rank 230a, 230b und 230n bezeichnet. Ranks können sich lokal in dem Datenspeichersystem 200 oder an einem physisch entfernten Standort befinden. Anders ausgedrückt, eine lokale Speichersteuereinheit kann sich mit einer entfernt angeordneten Speichersteuereinheit verbinden und den Speicher an dem entfernten Standort verwalten. Der Rank 230a ist als mit zwei vollständigen Datenträgern 234 und 236 sowie einem Teildatenträger 232a konfiguriert gezeigt. Der Rank 230b ist mit einem anderen Teildatenträger 232b gezeigt. Somit ist der Datenträger 232 auf die Ranks 230a und 230b aufgeteilt. Der Rank 230n ist als vollständig dem Datenträger 238 zugeordnet gezeigt – das heißt, der Rank 230n bezieht sich auf den gesamten physischen Speicher für den Datenträger 238. Aufgrund der obigen Beispiele wird man verstehen, dass ein Rank so konfiguriert sein kann, dass er einen oder mehrere Teildatenträger und/oder vollständige Datenträger beinhaltet. Datenträger und Ranks können darüber hinaus in so genannte „Tracks” geteilt werden, die einen festen Speicherblock darstellen. Ein Track ist deshalb einem bestimmten Datenträger zugewiesen, und ihm kann ein bestimmter Rank zugewiesen werden.
-
Die Speichersteuereinheit 240 kann ein Datenduplikationsmodul 255, ein Ähnlichkeitsindexmodul 257 (z. B. eine Ähnlichkeitssuchstruktur) und ein Ähnlichkeitssuchmodul 259 beinhalten. Das Datenduplikationsmodul 255, das Ähnlichkeitsindexmodul 257 und das Ähnlichkeitssuchmodul 259 können in Verbindung miteinander und mit jeder Komponente der Speichersteuereinheit 240, den Hosts 210, 220, 225 und den Speichereinheiten 230 funktionieren. Das Datenduplikationsmodul 255, das Ähnlichkeitsindexmodul 257 und das Ähnlichkeitssuchmodul 259 können strukturell ein vollständiges Modul sein oder anderen einzelnen Modulen zugehörig und/oder in diesen beinhaltet sein. Das Datenduplikationsmodul 255, das Ähnlichkeitsindexmodul 257 und das Ähnlichkeitssuchmodul 259 können sich auch in dem Zwischenspeicher 245 oder in anderen Komponenten befinden.
-
Die Speichersteuereinheit 240 beinhaltet eine Steuervermittlungseinheit 241 zum Steuern des Fibre-Channel-Protokolls für die Host Computer 210, 220, 225, einen Mikroprozessor 242 zum Steuern der gesamten Speichersteuereinheit 240, einen nichtflüchtigen Steuerspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs der Speichersteuereinheit 240, Daten zur Steuerung, den Zwischenspeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Zwischenspeichers 245 beim Lesen und Schreiben von Daten, eine Steuervermittlungseinheit 241 zum Steuern eines Protokolls zum Steuern der Datenübertragung zu oder von den Speichereinheiten 230, dem Datenduplikationsmodul 255, dem Ähnlichkeitsindexmodul 257 und dem Ähnlichkeitssuchmodul 259, in der Informationen festgelegt werden können. In der vorliegenden Erfindung können mehrere Puffer 244 zur Unterstützung der hierin beschriebenen Arbeitsschritte umgesetzt werden. In einer Ausführungsform sind die Cluster-Hosts/Knoten 210, 220, 225 und die Speichersteuereinheit 240 durch einen Netzwerkadapter 260 (bei dem es sich um einen Fibre-Channel handeln könnte) als Schnittstelle verbunden, d. h., über mindestens eine Vermittlungseinheit, die „Fabric” genannt wird.
-
In einer Ausführungsform sind die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und die Speichersteuereinheit 240 durch ein Netzwerk 260 (bei dem es sich um einen Fibre-Channel handeln könnte) als Schnittstelle verbunden, d. h., über mindestens eine Vermittlungseinheit, die „Fabric” genannt wird. In einer Ausführungsform wird der Betrieb des in 2 gezeigten Systems beschrieben. Der Mikroprozessor 242 kann den Hauptspeicher 243 so steuern, dass er Befehlsinformationen von der (physischen oder virtuellen) Host-Einheit 210 und Informationen zum Identifizieren der (physischen oder virtuellen) Host-Einheit 210 speichert. Die Steuervermittlungseinheit 241, die Puffer 244, der Zwischenspeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Hauptspeicher 243, der NVS 216, das Datenduplikationsmodul 255, das Ähnlichkeitsindexmodul 257 und das Ähnlichkeitssuchmodul 259 tauschen miteinander Daten aus und können separate oder eine einzelne Komponente(n) sein. Ebenfalls können mehrere oder sogar sämtliche Komponenten wie zum Beispiel die Betriebssoftware 250 in dem Hauptspeicher 243 beinhaltet sein. Sämtliche Komponenten innerhalb der gezeigten Einheiten können miteinander verbunden sein und zu für die vorliegende Erfindung geeigneten Zwecken miteinander Daten austauschen. Wie oben erwähnt, können sich das Datenduplikationsmodul 255, das Ähnlichkeitsindexmodul 257 und das Ähnlichkeitssuchmodul 259 auch in dem Zwischenspeicher 245 oder in anderen Komponenten befinden. Von daher können das Datenduplikationsmodul 255, das Ähnlichkeitsindexmodul 257 und das Ähnlichkeitssuchmodul 259 beruhend auf der Speicherarchitektur und den Benutzervorgaben nach Bedarf verwendet werden.
-
Wie oben erwähnt, werden die Eingabedaten in einer Ausführungsform in große Chunks mit fester Größe (z. B. 16 MB) aufgeteilt, und auf jeden Eingabe-Chunk wird ein Ähnlichkeitssuchverfahren angewendet. Ein Ähnlichkeitssuchverfahren berechnet beruhend auf dem Eingabe-Daten-Chunk kompakte Ähnlichkeitselemente, die auch als Unterscheidungsmerkmale (DCs, distinguishing characteristics) bezeichnet werden können, und sucht nach übereinstimmenden Ähnlichkeitselementen, die in einer kompakten Suchstruktur (d. h. einem Index) in dem Repository gespeichert sind. Die Größe der für jeden Daten-Chunk gespeicherten Ähnlichkeitselemente beträgt üblicherweise 32 Byte (wobei die Chunk-Größe einige Megabyte beträgt), wodurch die die Ähnlichkeitselemente speichernde Suchstruktur äußerst kompakt und einfach zu pflegen und durchsuchbar ist.
-
Die Ähnlichkeitselemente werden durch Berechnen von rollierenden Hash-Werten für die Daten des Chunks berechnet, nämlich durch Erzeugen eines rollierenden Hash-Wertes für jedes fortlaufende Fenster von Bytes an einer relativen Byte-Adresse und anschließendes Auswählen von spezifischen Hash-Werten und zugehörigen Positionen (nicht unbedingt den genauen Positionen dieser Hash-Werte) als Ähnlichkeitselemente des Chunks.
-
Ein wichtiger Aspekt und eine Neuartigkeit, die durch die vorliegende Erfindung bereitgestellt werden, besteht darin, dass eine einzelne lineare Berechnung von rollierenden Hash-Werten, wobei es sich um eine berechnungstechnisch aufwendige Operation handelt, als Grundlage zum Berechnen sowohl der Ähnlichkeitselemente eines Chunks (für eine Ähnlichkeitssuche) als auch der Segmentierung der Daten des Chunks in Auszugsblöcke (zum Finden genauer Übereinstimmungen) dient. Jeder rollierende Hash-Wert wird zu der Berechnung der Ähnlichkeitselemente sowie zu der Berechnung der Auszugsblock-Segmentierung hinzugefügt. Nach dem Hinzufügen zu den beiden Berechnungen kann ein rollierender Hash-Wert verworfen werden, da der Bedarf zum Speichern des rollierenden Hash-Wertes minimiert oder beseitigt wird. Dieses algorithmische Element stellt eine beträchtliche Effizienz und Verringerung des CPU-Verbrauchs sowie erhebliche Verbesserungen der Leistungsfähigkeit bereit.
-
In einer Ausführungsform erzeugt das Ähnlichkeitssuchverfahren der vorliegenden Erfindung zwei Ausgabetypen. Bei dem ersten Ausgabetyp handelt es sich um einen Satz von Positionen der ähnlichsten Bezugsdaten in dem Repository. Bei dem zweiten Ausgabetyp handelt es sich um die Auszüge des Eingabe-Chunks, bestehend aus der Segmentierung in Auszugsblöcke und den den Auszugsblöcken entsprechenden Auszugswerten, wobei die Auszugswerte beruhend auf den Daten der Auszugsblöcke berechnet werden.
-
In einer Ausführungsform werden die Auszüge in dem Repository in einer Form gespeichert, die dem Vorkommen der Auszüge in den Daten entspricht. Wenn eine Position in dem Repository und die Größe einer Sektion von Daten bekannt ist, wird der Ort der diesem Datenintervall entsprechenden Auszüge in dem Repository effizient ermittelt. Die durch das Ähnlichkeitssuchverfahren erzeugten Positionen werden dann zum Nachschlagen der gespeicherten Auszüge der ähnlichen Bezugsdaten und zum Laden dieser Bezugsauszüge in den Hauptspeicher verwendet. Dann werden die Eingabeauszüge mit den geladenen Bezugsauszügen abgeglichen, anstatt Daten zu vergleichen. Der Abgleichprozess wird durchgeführt, indem die Bezugsauszüge in eine kompakte Suchstruktur von Auszügen in dem Hauptspeicher geladen werden und dann die Suchstruktur von Auszügen für jeden Eingabeauszug nach dem Vorhandensein dieses Auszugswertes durchsucht wird. Die Suche in der Suchstruktur von Auszügen wird beruhend auf den Auszugswerten durchgeführt. Wenn eine Übereinstimmung gefunden wird, werden die diesem Auszug zugehörigen Eingabedaten als in dem Repository gefunden festgelegt, und die Position der Eingabedaten in dem Repository wird beruhend auf der Position des Bezugsauszugs in dem Repository ermittelt. In diesem Fall wird die identische Gleichheit zwischen den durch den Eingabeauszug abgedeckten Eingabedaten und den durch den übereinstimmenden Bezugsauszug abgedeckten Repository-Daten erfasst. Wenn keine Übereinstimmung gefunden wird, werden die diesem Auszug zugehörigen Eingabedaten als nicht in dem Repository gefunden festgelegt, und als neue Daten erfasst. In einer Ausführungsform handelt es sich bei der Ähnlichkeitssuchstruktur um eine globale Suchstruktur von Ähnlichkeitselementen und bei einer Hauptspeicher-Suchstruktur von Auszügen um eine lokale Suchstruktur von Auszügen in dem Hauptspeicher. Die Suche in der Hauptspeicher-Suchstruktur von Auszügen wird durch die Auszugswerte durchgeführt.
-
3 ist ein Ablaufplan, der ein beispielhaftes Verfahren 300 zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können. Das Verfahren 300 beginnt (Schritt 302). Das Verfahren 300 teilt Eingabedaten in Daten-Chunks auf (Schritt 304). Die Eingabedaten können in Daten-Chunks mit fester Größe aufgeteilt werden. Das Verfahren 300 berechnet für jeden der Daten-Chunks Ähnlichkeitselemente, Auszugsblockbegrenzungen, und entsprechende Auszugswerte werden berechnet (Schritt 306). Das Verfahren 300 sucht in einer Suchstruktur (d. h. einem Index) für jeden der Daten-Chunks (bei denen es sich um Daten-Chunks mit fester Größe handeln kann) nach übereinstimmenden Ähnlichkeitselementen (Schritt 308). Die Positionen der ähnlichen Daten werden in einem Repository (z. B. einem Daten-Repository) ausfindig gemacht (Schritt 310). Das Verfahren 300 verwendet die Positionen der ähnlichen Daten zum Ausfindigmachen von gespeicherten Auszugswerten und entsprechenden gespeicherten Auszugsblockbegrenzungen der ähnlichen Daten in dem Repository und zum Laden dieser in den Hauptspeicher (Schritt 312). Das Verfahren 300 gleicht die Auszugswerte und die entsprechenden Auszugsblockbegrenzungen der Eingabedaten mit den gespeicherten Auszugswerten und den entsprechenden gespeicherten Auszugsblockbegrenzungen ab, um Datenübereinstimmungen zu finden (Schritt 314). Das Verfahren 300 endet (Schritt 316).
-
4 ist ein Ablaufplan, der ein beispielhaftes alternatives Verfahren 400 zum Abrufen von Auszügen beruhend auf einer Ähnlichkeitssuche bei der Deduplizierungsverarbeitung in einem Datendeduplizierungssystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können. Das Verfahren 400 beginnt (Schritt 402). Das Verfahren 400 teilt die Eingabedaten in Chunks auf (z. B. teilt es die Eingabedaten in große Chunks mit fester Größe auf) (Schritt 404) und berechnet beruhend auf Daten des Eingabe-Daten-Chunks rollierende Hash-Werte, Ähnlichkeitselemente, Auszugsblockbegrenzungen und Auszugswerke für einen Eingabe-Daten-Chunk (Schritt 406). Das Verfahren 400 sucht in einer Ähnlichkeitssuchstruktur (d. h. einem Index) nach Ähnlichkeitselementen des Eingabe-Daten-Chunks (Schritte 408 und 410). Das Verfahren 400 ermittelt, ob es genügend oder ausreichend viele übereinstimmende Ähnlichkeitselemente gibt (Schritt 412). Wenn nicht genügend übereinstimmende Ähnlichkeitselemente gefunden werden, stellt das Verfahren 400 fest, dass in dem Repository keine ähnlichen Daten für den Eingabe-Daten-Chunk gefunden wurden, und die Daten des Eingabe-Chunks werden in einem Repository gespeichert (Schritt 414) und das Verfahren 400 endet dann (Schritt 438). Wenn genügend Ähnlichkeitselemente gefunden werden, ermittelt das Verfahren 400 für jedes in einem Repository gefundene ähnliche Datenintervall die Position und die Größe jedes ähnlichen Datenintervalls in dem Repository (Schritt 416). Das Verfahren 400 macht die das ähnliche Datenintervall in dem Repository darstellenden Auszüge ausfindig (Schritt 418). Das Verfahren 400 lädt diese Auszüge in eine Suchdatenstruktur von Auszügen in dem Hauptspeicher (Schritt 420). Das Verfahren 400 ermittelt, ob es irgendwelche zusätzlichen ähnlichen Datenintervalle gibt (Schritt 422). Falls dem so ist, kehrt das Verfahren 400 zu Schritt 416 zurück. Falls dem nicht so ist, berücksichtigt das Verfahren 400 jeden Auszug des Eingabe-Daten-Chunks (Schritt 424). Das Verfahren 400 ermittelt, ob der Auszugswert in der Hauptspeicher-Suchstruktur von Auszügen vorhanden ist (Schritt 426). Falls dem so ist, erfasst das Verfahren 400 die identische Gleichheit zwischen den durch den Auszug abgedeckten Eingabedaten und den Repository-Daten mit dem übereinstimmenden Auszugswert (Schritt 428). Falls dem nicht so ist, erfasst das Verfahren 400, dass die durch den Auszug abgedeckten Eingabedaten nicht in dem Repository gefunden wurden (Schritt 430). Aus beiden Schritten 428 und 430 ermittelt das Verfahren 400, ob es zusätzliche Auszüge des Eingabe-Daten-Chunks gibt (Schritt 432). Falls dem so ist, kehrt das Verfahren 400 zu Schritt 424 zurück. Falls dem nicht so ist, entfernt das Verfahren 400 die Ähnlichkeitselemente der abgeglichenen Daten in dem Repository aus der Ähnlichkeitssuchstruktur (Schritt 434 und Schritt 410). Das Verfahren 400 fügt die Ähnlichkeitselemente des Eingabe-Daten-Chunks zu der Ähnlichkeitssuchstruktur hinzu (Schritt 436). Das Verfahren 400 endet (Schritt 438).
-
5 ist ein Ablaufplan, der ein beispielhaftes Verfahren 500 zum effizienten Berechnen sowohl von Ähnlichkeitssuchwerten als auch von Begrenzungen von Auszugsblöcken unter Verwendung einer einzelnen linearen Berechnung von rollierenden Hash-Werten in einem Datendeduplizierungssystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können. Das Verfahren 500 beginnt (Schritt 502). Das Verfahren 500 teilt Eingabedaten in Daten-Chunks auf (Schritt 504). Bei den Daten-Chunks kann es sich um Daten-Chunks mit fester Größe handeln. Das Verfahren 500 berücksichtigt jedes fortlaufende Fenster von Bytes an einer relativen Byte-Adresse in den Eingabedaten (Schritt 506). Das Verfahren 500 ermittelt, ob es ein zusätzliches zu verarbeitendes fortlaufendes Fenster von Bytes gibt (Schritt 508). Falls dem so ist, berechnet das Verfahren 500 einen rollierenden Hash-Wert beruhend auf den Daten des fortlaufenden Fensters von Bytes (Schritt 510). Das Verfahren 500 steuert den rollierenden Hash-Wert zu der Berechnung der Ähnlichkeitswerte und zu der Berechnung der Auszugsblock-Segmentierungen (d. h. der Auszugsblockbegrenzungen) bei (Schritt 512). Das Verfahren 500 verwirft den rollierenden Hash-Wert (Schritt 514) und kehrt zu Schritt 506 zurück. Falls dem nicht so ist, schließt das Verfahren 500 die Berechnung der Ähnlichkeitselemente und der Auszugsblock-Segmentierung ab und erzeugt die endgültige(n) Ähnlichkeitselemente und Auszugsblock-Segmentierung der Eingabedaten (Schritt 516). Das Verfahren 500 berechnet Auszugswerte beruhend auf der Auszugsblock-Segmentierung, wobei jedem Auszugsblock ein entsprechender Auszugswert zugewiesen wird (Schritt 518). Die Ähnlichkeitselemente werden zum Suchen nach ähnlichen Daten in dem Repository verwendet (Schritt 520). Die Auszugsblöcke und die entsprechenden Auszugswerte werden zum Abgleichen mit den in einem Repository gespeicherten Auszugsblöcken und entsprechenden Auszugswerten verwendet, um Daten in dem Repository zu ermitteln, die identisch gleich mit den Eingabedaten sind (Schritt 522). Das Verfahren 500 endet (Schritt 524).
-
Der Fachmann wird verstehen, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindliche Software, Mikrocode, usw.) oder einer Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines auf einem oder mehreren durch einen Computer lesbaren Medien enthaltenen Computerprogrammprodukts annehmen, die durch einen Computer lesbaren Programmcode enthalten.
-
Es kann jede Kombination aus einem oder mehreren durch einen Computer lesbaren Medien verwendet werden. Bei dem durch einen Computer lesbaren Medium kann es sich um ein durch einen Computer lesbares Signalmedium oder ein durch einen Computer lesbares Speichermedium handeln. Bei einem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine mobile Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein mobiler Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination daraus. In dem Kontext dieses Dokuments kann es sich bei einem durch einen Computer lesbaren Speichermedium um jedes beliebige physische Medium handeln, das ein Programm enthalten bzw. speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird.
-
Auf einem durch einen Computer lesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw. oder jede geeignete Kombination daraus, jedoch nicht auf diese beschränkt. Computerprogrammcode für das Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).
-
Aspekte der vorliegenden Erfindung wurden oben unter Bezugnahme auf Ablaufpläne und/oder Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
-
Diese Computerprogrammanweisungen können auch auf einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die/den in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebene(n) Funktion/Schritt umsetzen. Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um das Ausführen einer Folge von Prozessschritten auf dem Computer, der anderen programmierbaren Vorrichtung bzw. den anderen Einheiten zu veranlassen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Schritte erzeugen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den obigen Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweist. Es sei auch angemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen.