-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung bezieht sich allgemein auf Computer und im Besonderen auf eine Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen in einer Datenverarbeitungsumgebung.
-
HINTERGRUND
-
Computersysteme sind in der heutigen Gesellschaft weit verbreitet. Computersysteme sind am Arbeitsplatz, zuhause oder in der Schule zu finden. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten beinhalten. Datenspeichersysteme oder Plattenspeichersysteme werden zum Verarbeiten und Speichern von Daten verwendet. Ein Speichersystem kann ein oder mehrere Plattenlaufwerke beinhalten. Diese Datenverarbeitungssysteme erfordern üblicherweise eine große Menge an Datenspeicherplatz. Kundendaten oder Daten, die durch Benutzer innerhalb des Datenverarbeitungssystems erzeugt werden, nehmen einen großen Teil dieses Datenspeicherplatzes in Anspruch. Viele dieser Computersysteme beinhalten virtuelle Speicherkomponenten.
-
Datenkomprimierung ist weit verbreitet, um die Menge an Daten, die zum Verarbeiten, Übertragen oder Speichern eines bestimmten Informationsumfangs erforderlich sind, zu verringern. Bei Datenkomprimierung handelt es sich um das Codieren von Daten so, dass ihre Darstellung minimiert wird. Komprimierung kann zum Beispiel verwendet werden, um die Speicheranforderungen für Dateien zu verringern, um die Datenübertragungsgeschwindigkeit über einen Kanal zu erhöhen oder um Redundanz vor einer Verschlüsselung für erhöhte Sicherheit zu verringern.
-
KURZDARSTELLUNG
-
Bei einer Ausführungsform wird ein Verfahren zur Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen mithilfe einer Prozessoreinheit bereitgestellt. Für eine Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen wird eine Entscheidung darüber, an welche der Datenkomprimierungsdomänen Schreiboperationen weitergeleitet werden sollten, durch Lesen beliebig ausgewählter Daten der Schreiboperationen zum Berechnen eines Satzes von Klassifizierungsheuristiken getroffen, wodurch ein Fingerabdruck für jede der Schreiboperationen erstellt wird. Die Schreiboperationen mit einem ähnlichen Fingerabdruck werden zusammen in einem ähnlichen Komprimierungsstrom komprimiert.
-
Bei einer weiteren Ausführungsform wird ein Computersystem zur Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen bereitgestellt. Das Computersystem beinhaltet ein computerlesbares Medium und einen Prozessor, der mit dem computerlesbaren Medium in betriebsfähiger Verbindung steht. Für eine Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen entscheidet der Prozessor, an welche der Datenkomprimierungsdomänen Schreiboperationen weitergeleitet werden sollten, durch Lesen beliebig ausgewählter Daten der Schreiboperationen zum Berechnen eines Satzes von Klassifizierungsheuristiken, wodurch ein Fingerabdruck für jede der Schreiboperationen erstellt wird. Die Schreiboperationen mit einem ähnlichen Fingerabdruck werden zusammen in demselben Komprimierungsstrom komprimiert.
-
Bei einer weiteren Ausführungsform wird ein Computerprogrammprodukt zur Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen bereitgestellt. In dem computerlesbaren Speichermedium sind Abschnitte des computerlesbaren Programmcodes gespeichert. Die Abschnitte des computerlesbaren Programmcodes beinhalten einen ersten ausführbaren Abschnitt, der durch Lesen beliebig ausgewählter Daten der Schreiboperationen zum Berechnen eines Satzes von Klassifizierungsheuristiken entscheidet, an welche der Datenkomprimierungsdomänen Schreiboperationen weitergeleitet werden sollten, wodurch ein Fingerabdruck für jede der Schreiboperationen erstellt wird. Die Schreiboperationen mit einem ähnlichen Fingerabdruck werden zusammen in demselben Komprimierungsstrom komprimiert.
-
Zusätzlich zu der obigen beispielhaften Verfahrensausführungsform werden sonstige beispielhafte Ausführungsformen von Systemen und Computerprogrammprodukten bereitgestellt und bieten damit in Zusammenhang stehende Vorteile. Die obige Kurzdarstellung ist bereitgestellt worden, um eine Auswahl von Konzepten in vereinfachter Form vorzustellen, die im Folgenden in der ausführlichen Beschreibung näher beschrieben werden. Diese Kurzdarstellung soll weder dazu dienen, Schlüsselmerkmale oder Wesensmerkmale des beanspruchten Gegenstandes zu kennzeichnen, noch soll sie als Hilfsmittel zur Festlegung des Umfangs des beanspruchten Gegenstandes verwendet werden. Der beanspruchte Gegenstand ist nicht auf Implementierungen beschränkt, die beliebige oder sämtliche Nachteile beseitigen, die im Hintergrund angemerkt wurden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Ausführungsformen der Erfindung werden nun lediglich als Beispiel unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
-
1 ein Blockschaubild ist, das eine Computerspeicherumgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
-
2 ein Blockschaubild ist, das eine Hardware-Struktur eines beispielhaften Datenspeichersystems in einem Computersystem veranschaulicht, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
-
3 ein Ablaufplan ist, der ein beispielhaftes Verfahren zur Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können; und
-
4 ein Ablaufplan ist, der ein zusätzliches beispielhaftes Verfahren zur Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Wie zuvor erwähnt, werden Computersysteme dazu verwendet, eine Vielfalt von Datentypen zu speichern und zu verwalten. Ähnliche Daten mithilfe desselben Komprimierungsstroms zu komprimieren, verbessert das Komprimierungsverhältnis und verringert den erforderlichen Speicherplatz. Wenn Daten geschrieben werden, selbst in aufeinanderfolgende Blöcke in einer Datei, ist der Inhalt jedoch nicht immer ähnlich. Man denke zum Beispiel an ein Dokument mit Abbildungen und Text. Wenn zwei getrennte Komprimierungsströme für das Dokument mit Abbildungen und Text erstellt werden und anschließend jeder Datentyp an einen eigenen Komprimierungsstrom gesendet wird, wird die Datenkomprimierung effizienter, und das Komprimierungsverhältnis der Daten insgesamt wird verbessert.
-
Bei einem Blockspeichersystem werden Datenblöcke ohne jegliche Angabe, welcher Datentyp geschrieben wird, in den Speicher geschrieben, und es erfolgt keine Angabe einer Beziehung zwischen Schreibvorgängen (z. B. Schreibvorgänge derselben Datei und Schreibvorgänge desselben Datentyps). Infolgedessen ist es beim Komprimieren einer Schreiboperation der Daten möglich, Daten zusammen zu komprimieren, die keine gemeinsamen Attribute (und keine Wiederholungen) aufweisen, was zu einem verschlechterten Komprimierungsverhältnis führt. Ein Blockspeichersystem weist keine Informationen über den Typ (oder die Klasse) der geschriebenen Daten auf und kann daraus keinen Vorteil ziehen. Zu Versuchen, dieses Problem zu lösen, zählt ein Ansatz zu einem Blocksystem unter Verwendung der räumlichen Lokalität des Raums der logischen Blockadressen (LBA). Jegliche Schreibvorgänge in einen bestimmten LBA-Bereich werden zusammen komprimiert, und dabei wird in gewisser Hinsicht eine Dateisystem-/Datenbank-Zuordnungsstrategie verfolgt – fortlaufendes Zuordnen von Dateien oder zusammengehöriger Dateien. Ein solcher Ansatz folgt der verbreiteten Heuristik, dass Daten in einer einzelnen Datei sich ähneln und in einem einzigen Komprimierungsstrom komprimiert werden sollten – einer Heuristik, die sich als nicht immer zutreffend herausgestellt hat, weshalb die Effizienz der Datenkomprimierung verringert ist. Insofern ist es erforderlich, in Echtzeit eine Entscheidung darüber zu treffen, welcher Komprimierungsstrom verwendet werden sollte, anderenfalls ist die Verwendung getrennter Komprimierungsströme nicht zweckmäßig. Infolgedessen sollte ein Entscheidungsalgorithmus, der auswählt, welcher Komprimierungsstrom verwendet werden sollte, schnell sein (wobei schnell ein relativer Begriff ist und es sich um einen Bruchteil der Zeit handeln sollte, die zum Komprimieren der Daten mithilfe der verfügbaren Hardware nach dem Stand der Technik erforderlich ist).
-
Folglich stellt die vorliegende Erfindung bei einer Ausführungsform ein Verfahren zur Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen mithilfe einer Prozessoreinheit bereit. Für eine Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen wird eine Entscheidung darüber, an welche der Datenkomprimierungsdomänen Schreiboperationen weitergeleitet werden sollten, durch Lesen beliebig ausgewählter Daten der Schreiboperationen zum Berechnen eines Satzes von Klassifizierungsheuristiken getroffen, wodurch ein Fingerabdruck für jede der Schreiboperationen erstellt wird. Die Schreiboperationen mit einem ähnlichen Fingerabdruck werden zusammen in einem ähnlichen Komprimierungsstrom komprimiert.
-
Wie im Folgenden beschrieben wird, „erkennt” die vorliegende Erfindung die „Klasse” (oder Merkmale) der Daten ohne vorherige Informationen (z. B. werden die Komprimierungsdomänen oder Komprimierungsströme klassifiziert). Die vorliegende Erfindung ermöglicht ein Schreiben in mehrere Komprimierungsströme auf Grundlage von Domänen von Daten. Die vorliegende Erfindung identifiziert und entscheidet, an welche Komprimierungsdomäne eine Schreiboperation weitergeleitet werden sollte, und entscheidet, welcher Komprimierungsstrom verwendet wird. Eine Komprimierungsdomäne kann einen oder mehrere aktive Komprimierungsströme aufweisen. Das Erkennungsverfahren liest kleine Fragmente der Eingabedaten, die beliebig ausgewählt werden, und berechnet einen Satz von Klassifizierungsheuristiken, sodass ein Fingerabdruck für die Daten erstellt wird. Daten mit ähnlichen Fingerabdrücken werden zusammen in einem einzigen Komprimierungsstrom komprimiert, wohingegen Schreiboperationen, die Daten mit unterschiedlichen Fingerabdrücken und Merkmalen (z. B. Abbildung gegenüber Text) enthalten, in unterschiedliche Komprimierungsströme aufgeteilt werden. Eine solche Klassifizierung und Aufteilung von Daten erhöht die Effizienz und ermöglicht eine bessere Verwendung eines verteilten Systems (d. h. mehrerer Komprimierungsknoten), indem zugelassen wird, dass mehr Knoten die Komprimierung der Daten unterstützen, indem ähnliche Daten in einem einzigen Strom gehalten werden, jedoch mehrere Maschinen verwendet werden. Der Identifizierungs- und Erkennungsalgorithmus ist schnell und muss die Daten nicht komprimieren, um zu entscheiden, welche Komprimierungsdomäne und welchen Komprimierungsstrom er verwenden sollte.
-
Unter Bezugnahme auf 1 wird nun eine beispielhafte Architektur 10 eines Datenspeichersystems in einer Datenverarbeitungsumgebung dargestellt. Das Computersystem 10 beinhaltet eine Zentraleinheit (central processing unit, CPU) 12, die mit einer oder mehreren Massenspeichereinheiten 14 und einer Speichereinheit 16 verbunden ist. Zu Massenspeichereinheiten können Festplattenlaufwerk(hard disk drive, HDD)-Einheiten, Halbleitereinheiten (solid-state devices, SSD) usw. zählen, die in einem redundanten Array unabhängiger Platten (redundant array of independent disks, RAID) konfiguriert sein können. Die ferner beschriebenen Sicherungsvorgänge können auf der/den Einheit(en) 14 ausgeführt werden, die sich in dem System 10 oder anderswo befinden. Die Speichereinheit 16 kann einen Speicher wie zum Beispiel einen elektrisch löschbaren, programmierbaren Festwertspeicher (electrically erasable programmable read only memory, EEPROM) oder einen Host zusammengehöriger Einheiten beinhalten. Die Speichereinheit 16 und die Massenspeichereinheit 14 sind über ein Signalträgermedium mit der CPU 12 verbunden. Darüber hinaus ist die CPU 12 durch einen Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, an das eine Mehrzahl von zusätzlichen Computersystemen 22 und 24 angeschlossen ist.
-
2 ist ein beispielhaftes Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung veranschaulicht. Unter Bezugnahme auf 2 werden Host-Computer 210, 220, 225 dargestellt, die jeweils als Zentraleinheit zum Durchführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 fungieren. Bei den Hosts (physischen oder virtuellen Einheiten) 210, 220 und 225 kann es sich um eine oder mehrere neue physische Einheiten oder logische Einheiten handeln, um die Ziele der vorliegenden Erfindung in dem Datenspeichersystem 200 zu erreichen. Bei einer Ausführungsform kann, nur als Beispiel, ein Datenspeichersystem 200 als IBM® System StorageTM DS8000TM implementiert werden. Eine Netzwerkverbindung 260 kann ein Fibre-Channel-Fabric, eine Fibre-Channel-Punkt-zu-Punkt-Verbindung, ein(e) Fibre-Channel-over-Ethernet-Fabric oder -Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, ein beliebiger sonstiger 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 davon sein. Die Hosts 210, 220 und 225 können lokal oder an einem oder mehreren Orten verteilt sein und können mit einer beliebigen Art von Fabric (oder Fabric-Channel) (in 2 nicht dargestellt) oder Netzwerkadapter 260 für die Speichersteuereinheit 240 wie zum Beispiel Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, drahtlosen oder Koaxialadaptern ausgestattet sein. Das Datenspeichersystem 200 ist dementsprechend mit einem geeigneten Fabric (in 2 nicht dargestellt) oder Netzwerkadapter 260 für eine Datenübertragung ausgestattet. Das Datenspeichersystem 200 wird in 1 so dargestellt, dass es die Speichersteuereinheit 240 und einen Speicher 230 aufweist.
-
Um ein völliges Verständnis der hierin beschriebenen Verfahren zu erleichtern, wird die Speichersteuereinheit 240 in 2 als einzelne Verarbeitungseinheit dargestellt, die einen Mikroprozessor 242, einen Systemspeicher 243 und nichtflüchtigen Speicher (nonvolatile storage, „NVS”) 216 beinhaltet, die im Folgenden ausführlicher beschrieben werden. Es wird darauf hingewiesen, dass bei einigen Ausführungsformen die Speichersteuereinheit 240 aus mehreren Verarbeitungseinheiten besteht, die jeweils ihren eigenen Prozessorkomplex und Systemspeicher aufweisen und durch ein dediziertes Netzwerk innerhalb des Datenspeichersystems 200 untereinander verbunden sind. Der Speicher 230 kann aus einer oder mehreren Speichereinheiten wie zum Beispiel Speicher-Arrays bestehen, die durch ein Speichernetzwerk mit der Speichersteuereinheit 240 verbunden sind.
-
Bei einigen Ausführungsformen können die in dem Speicher 230 enthaltenen Einheiten in einer Loop-Architektur verbunden sein. Die Speichersteuereinheit 240 verwaltet den Speicher 230 und erleichtert das Verarbeiten von Schreib- und Lese-Anforderungen, die für den Speicher 230 bestimmt sind. Der Systemspeicher 243 der Speichersteuereinheit 240 speichert Programmbefehle und Daten, auf die der Prozessor 242 zum Ausführen von Funktionen und Verfahrensschritten, die dem Verwalten des Speichers 230 zugehörig sind, und zum Ausführen der Schritte und Verfahren der vorliegenden Erfindung in einer Computerspeicherumgebung zugreifen kann. Bei einer Ausführungsform beinhaltet der Systemspeicher 243 die Betriebs-Software 250 in einer Computerspeicherumgebung einschließlich der hierin beschriebenen Verfahren und Operationen, ist dieser zugehörig oder steht mit dieser in Verbindung. Wie in 2 dargestellt, kann der Systemspeicher 243 auch einen Cache 245 für den Speicher 230, der hierin auch als „Cache-Speicher” bezeichnet wird, zum Puffern von „Schreibdaten” und „Lesedaten”, die sich jeweils auf Schreib-/Lese-Anforderungen und ihre zugehörigen Daten beziehen, beinhalten oder mit diesem in Verbindung stehen. Bei einer Ausführungsform ist der Cache 245 in einer Einheit außerhalb des Systemspeichers 243 zugeordnet, bleibt jedoch durch einen Mikroprozessor 242 zugreifbar und kann dazu dienen, zusätzlich zum Ausführen der hierin beschriebenen Operationen zusatzliche Sicherheit vor Datenverlust bereitzustellen.
-
Bei einigen Ausführungsformen ist der Cache 245 mit einem flüchtigen Speicher und nichtflüchtigen Speicher implementiert und über einen lokalen Bus (in 2 nicht dargestellt) für eine verbesserte Leistungsfähigkeit des Datenspeichersystems 200 mit dem Mikroprozessor 242 verbunden. Auf den in der Datenspeicher-Steuereinheit enthaltenen NVS 216 kann durch den Mikroprozessor 242 zugegriffen werden, und er dient dazu, zusätzliche Unterstützung für Operationen und die Ausführung der vorliegenden Erfindung bereitzustellen, wie in sonstigen Figuren beschrieben. Der NVS 216 kann auch als „persistenter” Cache oder „Cache-Speicher” bezeichnet werden und ist mit einem nichtflüchtigen Speicher implementiert, der Strom von außen nutzen kann, um darin gespeicherte Daten zu halten. Der NVS kann für jegliche Zwecke, die geeignet sind, die Ziele der vorliegenden Erfindung zu erreichen, in und mit dem Cache 245 gespeichert sein. Bei einigen Ausführungsformen versorgt eine Notstromquelle (in 2 nicht dargestellt) wie zum Beispiel eine Batterie den NVS 216 im Fall eines Stromausfalls an dem Datenspeichersystem 200 mit genügend Strom, um die darin gespeicherten Daten zu halten. Bei bestimmten Ausführungsformen ist die Kapazität des NVS 216 geringer als oder gleich wie die Gesamtkapazität des Cache 245.
-
Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie zum Beispiel Speicher-Arrays bestehen. Bei einem Speicher-Array handelt es sich um eine logische Gruppierung einzelner Speichereinheiten, wie zum Beispiel einer Festplatte. Bei bestimmen Ausführungsformen besteht der Speicher 230 aus einem JBOD(Just a Bunch of Disks, ein Bündel unabhängiger Platten)-Array oder einem RAID(Redundant Array of Independent Disks)-Array. Eine Sammlung physischer Speicher-Arrays kann ferner so kombiniert werden, dass eine Rangordnung ausgebildet wird, die den physischen Speicher von der logischen Konfiguration trennt. Der Speicherplatz bei einer Rangordnung kann logischen Datenträgern zugeordnet werden, die den in einer Schreib-/Lese-Anforderung angegebenen Speicherort definieren.
-
Bei einer Ausführungsform kann, nur als Beispiel, das Speichersystem, wie es in 2 dargestellt wird, einen logischen Datenträger oder einfach einen „Datenträger” beinhalten, der verschiedene Arten von Zuordnungen aufweisen kann. Speicher 230a, 230b und 230n werden als Ränge in dem Datenspeichersystem 200 dargestellt und werden hierin als Rang 230a, 230b und 230n bezeichnet. Die Ränge können sich lokal bei dem Datenspeichersystem 200 befinden oder sich an einem physisch entfernten Ort befinden. Mit anderen Worten, eine Steuereinheit für einen lokalen Speicher kann eine Verbindung mit einer Steuereinheit für einen entfernt angeordneten Speicher herstellen und einen Speicher an dem entfernten Ort verwalten. Der Rang 230a wird mit zwei vollständigen Datenträgern 234 und 236 wie auch mit einem Teildatenträger 232a konfiguriert dargestellt. Der Rang 230b wird mit einem weiteren Teildatenträger 232b dargestellt. Folglich ist der Datenträger 232 über die Ränge 230a und 230b hinweg zugeordnet. Der Rang 230n wird als vollständig dem Datenträger 238 zugeordnet dargestellt – das heißt, der Rang 230n bezieht sich auf den gesamten physischen Speicher für den Datenträger 238. Aus den obigen Beispielen wird ersichtlich, dass ein Rang so konfiguriert sein kann, dass er einen oder mehrere Teil- und/oder gesamte Datenträger beinhalten kann. Datenträger und Ränge können des Weiteren in sogenannte „Spuren” unterteilt werden, die einen festen Speicherblock darstellen. Eine Spur ist daher einem bestimmten Datenträger zugehörig und kann einen bestimmten Rang bekommen.
-
Die Speichersteuereinheit 240 kann ein Komprimierungsstrommodul 255, ein Datenkomprimierungsdomänenmodul 257 und ein Daten klassifizierungsmodul 259 in einer Computerspeicherumgebung beinhalten. Das Komprimierungsstrommodul 255, das Datenkomprimierungsdomänenmodul 257 und das Datenklassifizierungsmodul 259 können mit jeder einzelnen Komponente der Speichersteuereinheit 240, den Hosts 210, 220, 225 und den Speichereinheiten 230 gemeinsam arbeiten. Bei dem Komprimierungsstrommodul 255, dem Datenkomprimierungsdomänenmodul 257 und dem Datenklassifizierungsmodul 259 kann es sich strukturell um ein vollständiges Modul handeln, das so zusammen und gemeinsam miteinander arbeitet, dass eine solche Funktionalität durchgeführt wird, wie sie im Folgenden beschrieben wird, oder es kann sich um einzelne Module handeln. Das Komprimierungsstrommodul 255, das Datenkomprimierungsdomänenmodul 257 und das Datenklassifizierungsmodul 259 können sich auch in dem Cache 245 oder sonstigen Komponenten der Speichersteuereinheit 240 befinden, sodass sie die Ziele der vorliegenden Erfindung erreichen.
-
Die Speichersteuereinheit 240 kann mit einem Steuer-Switch 241 zum Steuern des Fibre-Channel-Protokolls für die Host-Computer 210, 220, 225, einem Mikroprozessor 242 zum Steuern sämtlicher Speichersteuereinheiten 240, einem nichtflüchtigen Steuerspeicher 243 zum Speichern eines Mikroprogramms (Betriebs-Software) 250 zum Steuern des Betriebs der Speichersteuereinheit 240, Daten zum Steuern und jeder Tabelle, das im Folgenden beschrieben wird, dem Cache 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffern 244 zum Unterstützen des Cache 245 beim Lesen und Schreiben von Daten, einem Steuer-Switch 241 zum Steuern eines Protokolls zum Steuern einer Datenübertragung zu oder von den Speichereinheiten 230, dem Komprimierungsstrommodul 255, dem Datenkomprimierungsdomänenmodul 257 und dem Datenklassifizierungsmodul 259 aufgebaut sein, in dem Informationen festgelegt werden können. Mehrere Puffer 244 können mit der vorliegenden Erfindung in einer Datenverarbeitungsumgebung implementiert werden oder eine sonstige Funktionalität entsprechend den Mechanismen der veranschaulichten Ausführungsformen durchführen.
-
Bei einer Ausführungsform sind, nur als Beispiel, die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und die Speichersteuereinheit 240 durch einen Netzwerkadapter (dabei könnte es sich um einen Fibre Channel handeln) 260 als Schnittstelle, d. h. über einen Switch, der bisweilen als „Fabric” bezeichnet wird, verbunden. Bei einer Ausführungsform wird, nur als Beispiel, der Betrieb des in 2 dargestellten Systems beschrieben. Der Mikroprozessor 242 kann den Speicher 243 so steuern, dass er Befehisinformationen von der Host-Einheit (physisch oder virtuell) 210 und Informationen zum Identifizieren der Host-Einheit (physisch oder virtuell) 210 speichert. Der Steuer-Switch 241, die Puffer 244, der Cache 245, die Betriebs-Software 250, der Mikroprozessor 242, der Speicher 243, der NVS 216, das Komprimierungsstrommodul 255, das Datenkomprimierungsdomänenmodul 257 und das Datenklassifizierungsmodul 259 stehen miteinander in Verbindung und können getrennte Komponenten oder eine einzige Komponente sein. Darüber hinaus können mehrere, wenn nicht sämtliche der Komponenten wie zum Beispiel die Betriebs-Software 245 mit dem Speicher 243 in einer Computerspeicherumgebung enthalten sein. Zu für die vorliegende Erfindung geeigneten Zwecken können alle Komponenten innerhalb der Speichereinheit miteinander verknüpft sein und können miteinander in Verbindung stehen.
-
Unter Bezugnahme auf 3 wird nun ein beispielhaftes Verfahren 300 für eine Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen veranschaulicht. Das Verfahren 300 beginnt (Schritt 302) mit einem Entscheiden, an welche der Datenkomprimierungsdomänen Schreiboperationen weitergeleitet werden sollten, durch Lesen beliebig ausgewählter Daten der Schreiboperationen zum Berechnen eines Satzes von Klassifizierungsheuristiken, wodurch ein Fingerabdruck für jede der Schreiboperationen erstellt wird (Schritt 304). Das Verfahren 300 komprimiert in einem Komprimierungsstrom diejenigen der Schreiboperationen zusammen, die einen ähnlichen Fingerabdruck aufweisen (Schritt 306). Das Verfahren 300 endet (Schritt 308).
-
Auf Grundlage des Obigen wird nun unter Bezugnahme auf 4 ein zusätzliches beispielhaftes Verfahren 400 für eine Echtzeitklassifizierung von Daten in Daten komprimierungsdomänen dargestellt. Zum Identifizieren und Entscheiden, an welche Komprimierungsdomänen eine Schreiboperation weitergeleitet werden sollte, und zum Entscheiden, welcher Komprimierungsstrom verwendet werden sollte, wie in 3 beschrieben, beginnt das Verfahren 400 (Schritt 402) mit einem Auswählen einer Datenstichprobe (z. B. einer kleinen Datenstichprobe, die eine vorgegebene Größe haben kann, die durch einen Benutzer definiert werden kann) des Eingabedatenpuffers (Schritt 404). Bei einer Ausführungsform kann es sich bei dem Eingabedatenpuffer um eine Anwendungsdatei oder einen Datenblock handeln. Außerdem kann es sich bei der ausgewählten Datenstichprobe um den gesamten Eingabepuffer, beliebig ausgewählte (oder vordefinierte) Sequenzen von Bytes aus dem Puffer mit einer vordefinierten oder vielleicht einer anpassbaren Größe (z. B. an die bisher als Stichprobe genommenen Daten anpassbar) handeln.
-
Das Verfahren 400 berechnet einen Fingerabdruck für die Daten durch Anwenden des Satzes von Heuristiken an der Datenstichprobe (Schritt 406). Die Heuristiken können sehr schnell berechnet werden (wobei schnell ein relativer Begriff im Vergleich mit der Zeit ist, die zum Komprimieren erforderlich ist), und die Heuristiken sind in der Lage anzugeben, welche Daten zusammen komprimiert werden sollten und welche Daten nicht zusammen komprimiert werden sollten. Der berechnete Fingerabdruck wird mit den Fingerabdrücken vorheriger Daten verglichen, die an jeden der aktiven/offenen Komprimierungsströme gesendet worden sind (Schritt 408). Auf Grundlage des Vergleichs werden Daten an die/den am besten passenden Komprimierungsdomäne/-strom gesendet, die/der ähnliche Daten komprimiert hat (entsprechend dem Abstand von dem Datenfingerabdruck) (Schritt 410). Der Begriff Abstand bezieht sich auf den Grad der Ähnlichkeit zwischen den Fingerabdrücken. Beispielsweise Berechnen des Hamming-Abstands zwischen dem aktuellen Fingerabdruck und den Fingerabdrücken der Daten, die durch jede(n) der Komprimierungsdomänen/-ströme komprimiert worden sind und Auswählen des Stroms mit dem kleinsten Abstand. Der Abstand zwischen den Fingerabdrücken kann als Abstandsvektor oder beliebige sonstige mathematische Vektorabstandsfunktionen berechnet werden. Alternativ kann das Verfahren 400 die Daten an eine neue Komprimierungsdomäne senden, wenn keine am besten passende Komprimierungsdomäne aktiv/offen ist (z. B. wird ein neuer Komprimierungsstrom erstellt) (Schritt 412). Das Verfahren 400 endet (Schritt 414).
-
Bei einer Ausführungsform kann es sich bei der Fingerabdruckheuristik um ein beliebiges und/oder eine Kombination der folgenden Beispiele handeln: (1) die Entropie der Stichprobendaten; (2) den Kernzeichensatz (Kernsatz) – den Satz (und die Größe) von Zeichen, die die Mehrzahl (die als vordefinierter Prozentsatz festgelegt wird) der Bytes in der Stichprobe bilden. Beispielsweise den Satz von Zeichen, die 90% der Stichprobe ausmachen; (3) ein vollständiges oder Teilhistogramm der Stichprobendaten oder des Kernsatzes einschließlich einer kompakten Form (weniger Bits zum Zählen) des Histogrammzählwerts; (4) Gruppen dominanter oder nichtdominanter Zeichen aus der Stichprobe; (5) einen Mittelwert, eine Streuung und/oder ein unterschiedliches Moment des Histogramms oder Kernsatzes; und (6) eine Angabe der in den Daten festgestellten Datenstruktur. Beispielsweise das Vorhandensein eines Headers(Joint Photographic Experts Group (JPEG)/Graphics Interchange Format (GIF)-Header), die Struktur der Daten oder das Vorhandensein von Trennzeichen.
-
Bei einer Ausführungsform besteht eine zusätzliche Möglichkeit für die Fingerabdruckheuristik darin, einige Similarity-Preserving-Hash(SPH)-Verfahren zu verwenden. Bei SPH handelt es sich um eine Funktion über einen Datensatz oder einen Teil des Datensatzes, wobei Datensätze mit gemeinsamen Zeichenfolgen auch einen ähnlichen Wert aufweisen. Beispielsweise kann beim Berechnen des Kernsatzes die vorliegende Erfindung den Kernsatz als 256 Bit langen Vektor betrachten (unter der Annahme, dass es sich bei dem Kernsatz um Zeichen handelt) und einen Fehlerkorrekturcode (error correcting code, ECC) auf den Kernsatz anwenden. Wenn zum Beispiel in einer Datei der Kernsatz A bis Z lautet und er in einem weiteren A bis Z ohne J lautet, würde sie folglich ein ECC als ähnlich befinden. Es ist außerdem zu beachten, dass sich Komprimierungsdomänen auf einer einzigen Maschine oder auf mehreren Maschinen befinden können, die zum Komprimieren der Daten zusammenarbeiten.
-
Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können.
-
Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinhelt oder eine beliebige geeignete Kombination der Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
-
Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination des Obigen, ohne darauf beschränkt zu sein. Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung sind oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben worden. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist. Die Computerprogrammbefehle können außerdem auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu implementieren.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Implementieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Implementierungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen implementiert werden können.
-
Es sind zwar eine oder mehrere Ausführungsformen der vorliegenden Erfindung genau veranschaulicht worden, dem Fachmann ist jedoch ersichtlich, dass Modifizierungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung, wie sie in den folgenden Ansprüchen dargelegt wird, abzuweichen.