-
HINTERGRUND
-
GEBIET DER TECHNOLOGIE
-
Die vorliegende Offenbarung betrifft Computersysteme und insbesondere die Verwaltung von Datenobjekten in einem Speichersystem.
-
Beschreibung des Stands der Technik
-
Verschiedene Rechenwerke und -systeme sind in der Lage, Daten zu speichern. Eine Teilmenge dieser Rechenwerke und Systeme sind eingerichtet, Daten als Datenobjekte zu speichern. Einige dieser Datenobjekte sind in der Lage, große Datenmengen (z. B. mindestens zwei Terabyte (2TB) Daten) zu enthalten.
-
Wenn ein Rechensystem eine Eingabe-/Ausgabeaufforderung (E/A) zum Schreiben eines Datenobjekts in einen Langzeitspeicher empfängt, wird das Datenobjekt zunächst vollständig in einen Zwischenspeicher eines Cache geschrieben. Das Datenobjekt in dem Zwischenspeicher wird anschließend in den Langzeitspeicher geschrieben und kann in der Zukunft abgefragt werden (z. B. über Leseaufforderungen und/oder Schreibaufforderungen), so dass das Datenobjekt in seiner Gesamtheit gelesen oder modifiziert werden kann (z. B. gelesen und anschließend mit neuen Daten beschrieben).
-
Für den Zugriff auf ein Datenobjekt im Langzeitspeicher über Leseaufforderungen wird das gesamte Datenobjekt in den Zwischenspeicher gelesen. Das heißt, alle Leseaufforderungen zum Lesen von Daten in dem Datenobjekt führen dazu, dass das gesamte Datenobjekt in den Zwischenspeicher gelesen wird, selbst wenn nur eine Teilmenge oder ein kleiner Teil der Daten in dem Datenobjekt gelesen werden muss.
-
Für den Zugriff auf ein Datenobjekt in einem Langzeitspeicher über Leseaufforderungen (z. B. zum Modifizieren der Daten in dem Datenobjekt) wird das gesamte Datenobjekt in den Zwischenspeicher gelesen, die Daten, welche geändert werden sollen, werden modifiziert, und das gesamte modifizierte Datenobjekt wird schließlich in den Langzeitspeicher geschrieben (nochmals geschrieben). Das heißt, dass alle Lese-Schreibaufforderungen zum Modifizieren von Daten in dem Datenobjekt dazu führen, dass das gesamte Datenobjekt in den Zwischenspeicher gelesen wird (selbst wenn die Daten, die eine Modifikation benötigen, eine Teilmenge des gesamten Datenobjekts oder nur ein kleiner Teil der Daten in dem Datenobjekt sind), Daten in dem Datenobjekt werden modifiziert und das gesamte modifizierte Datenobjekt wird gegebenenfalls in den Langzeitspeicher geschrieben (nochmals geschrieben), obwohl nur eine Teilmenge oder ein kleiner Teil der Daten in dem Datenobjekt eine Modifikation erfordert.
-
Während einige bisherige Rechenwerke und -systeme in der Lage sind, Datenobjekte zu speichern, sind diese Rechenwerke und -systeme nicht so zuverlässig und/oder effizient, wie sie sein könnten. In einigen Fällen begrenzen aus praktischen Überlegungen, wie Kosten, Größenbeschränkungen, Lagerbeschränkungen, usw. die Größe eines Cache-Speichers eines Speichersystems. Dementsprechend können in Situationen, in denen eine oder mehrere E/A-Aufforderungen (d. h. Lese-, Schreib- oder Lese-Schreibaufforderungen), die einem Datenobjekt, das größer als ein Cache-Speicher (z. B. Puffergröße) in dem Speichersystem ist, entsprechen oder zugeordnet sind, einige Speichersysteme ausfallen (z. B. crashen, usw.) und/oder zu wenig leisten (z. B. Latenzprobleme, usw.). Andere Probleme, die durch einige Speichersysteme aufgetreten sind, können ihre Ursache in einem erschöpften Cache-Speicher (z. B. voll und/oder Speichern einer Datenmenge über einer vorbestimmten Schwelle einer Datenmenge) und/oder im Nichtspeichern von einem oder mehreren gewünschten Datenobjekten und/oder Datenblöcken haben. Wenn eine Cache-Speichervorrichtung nicht ausreicht, um Leseaufforderungen zu erfüllen und/oder ihr High-Watermark für Schreibaufforderungen erreicht hat, kann die Leistung des Speichersystems beträchtlich abfallen.
-
Zum Beispiel können bisherige Rechenwerke und -systeme beim Schreiben von Datenobjekten Probleme haben, wenn die Datenobjekte größer als die Größe eines Zwischenspeichers in dem Rechenwerk und/oder -system sind. Das heißt, zumindest einige Netzwerke und/oder Systeme können eine Fehlfunktion (z. B. Crash) und/oder Latenzprobleme aufweisen, wenn die Größe eines Datenobjekts in einer Schreibaufforderung größer als die Größe seines Zwischenspeichers ist, da der Zwischenspeicher nicht in der Lage ist, Daten, die größer als ihre Speicherkapazität sind, zu schreiben.
-
Einige der bisherigen Rechenwerke und/oder -systeme können ungewollte Latenzprobleme aufweisen, da sie Lesevorgänge durch Lesen eines gesamten Datenobjekts in seinen Zwischenspeicher aus dem Langzeitspeicher ausführen, wenn nur ein Teil der Datenmenge in einem Datenobjekt gelesen werden muss. Das heißt, diese bisherigen Rechenwerke und -systeme können mehr Zeit benötigen, als notwendig ist, Lesevorgänge durchzuführen, da das gesamte Datenobjekt in den Zwischenspeicher gelesen wird, wenn nur ein Teil der Daten in dem Datenobjekt gelesen werden muss (nämlich Daten, die gelesen werden sollen oder gewünschte Daten), was die Zeit erhöht, die benötigt wird, um die gewünschten Daten in den Zwischenspeicher zu lesen.
-
In ähnlicher Weise können ungewollte Latenzprobleme in einigen bisherigen Rechenwerken und/oder -systemen auftreten, wenn Daten im Langzeitspeicher modifiziert werden, da sie Lese-Schreibvorgänge auf dem gesamten Datenobjekt durchführen, wenn nur ein Teil der Datenmenge in einem Datenobjekt modifiziert werden muss. Das heißt, einige bisherige Rechenwerke und -systeme verursachen Verzögerungen beim Durchführen von Lese-Schreibvorgängen, da das gesamte Datenobjekt in den Zwischenspeicher gelesen wird, wenn nur ein Teil der Daten in dem Datenobjekt (nämlich Daten, die modifiziert werden sollen oder gewünschte Daten) modifiziert werden muss. Dies erhöht die Zeitdauer, die benötigt wird, um die gewünschten Daten zu modifizieren, da überflüssige Daten in den Zwischenspeicher gelesen und anschließend in einen Langzeitspeicher geschrieben (neu geschrieben) werden.
-
KU RZDARSTELLU NG
-
Verschiedene Ausführungsformen werden zum Verwalten von Eingabe-/Ausgabeabläufen (E/A-Abläufen) für Datenobjekte, insbesondere, aber nicht ausschließlich, für große Objekte (LOBs) in einem Speichersystem beschrieben. In einer innovativen Ausführungsform weist ein System eine erste nichtflüchtige Cache-Speichervorrichtung und eine Speichersteuerung, die mit der Cache-Speichervorrichtung verbunden ist, auf. Die Speichersteuerung umfasst eine oder mehrere Verarbeitungsvorrichtungen zum Ausführen von Instruktionen in einer oder mehreren Anwendungen, die eingerichtet sind, um die Speichersteuerung zu veranlassen, Arbeitsprozesse auszuführen, die das Empfangen einer E/A-Aufforderung für ein Datenobjekt, das Bestimmen einer Größe des Datenobjekts und das Bestimmen des Datenobjekts als ein erstes nicht-konformes Datenobjekt in Bezug auf die Speicherschwelle der ersten nichtflüchtigen Cache-Speichervorrichtung einschließen. In einigen Ausführungsformen führt die Speichersteuerung weiterhin Arbeitsprozesse aus, welche das erste nicht-konforme Datenobjekt in eine Vielzahl von Datenblöcken teilt, von denen jeder eine Größe aufweist, die kleiner als die Speicherschwelle ist, einen oder mehrere Datenblöcke, die in einem oder mehreren Speicherplätzen der ersten nichtflüchtigen Speichervorrichtung gespeichert sind, in einen Langzeitspeicher verschiebt, um einen oder mehrere Speicherplätze frei zu machen, und einen oder mehrere Datenblöcke der ersten nicht konformen Datenobjekte in den freigewordenen einen oder mehreren Speicherplätzen der ersten nichtflüchtigen Speichervorrichtung speichert.
-
In verschiedenen Ausführungsformen ist die E/A-Aufforderung eine Schreibaufforderung, und die Speichersteuerung führt, wenn sie die Speichervorgänge des einen oder der mehreren Datenblöcke des ersten nicht konformen Datenobjekts durchführt, weiterhin Prozesse aus, die das Schreiben jedes der einen oder der mehreren Datenblöcke der ersten nichtflüchtigen Cache-Speichervorrichtung aufweisen. In einigen Ausführungsformen ist die E/A-Aufforderung eine Leseaufforderung, und die Speichersteuerung führt, wenn sie die Speichervorgänge des einen oder der mehreren Datenblöcke des ersten nicht konformen Datenobjekts durchführt, weiterhin Prozesse aus, die das Lesen eines oder mehrerer in dem Langzeitspeicher gespeicherten Datenblöcke in die erste nichtflüchtige Cache-Speichervorrichtung aufweisen. In weiteren Ausführungsformen ist die E/A-Aufforderung eine Leseaufforderung und die Speichersteuerung führt, wenn sie die Speichervorgänge des einen oder der mehreren Datenblöcke des ersten nicht konformen Datenobjekts durchführt, weiterhin Prozesse aus, die das Schreiben jedes der einen oder der mehreren Datenblöcke der ersten nichtflüchtigen Cache-Speichervorrichtung aufweisen, modifiziert Daten in dem einen oder den mehreren gelesenen Datenblöcken, um einen oder mehrere modifizierte Datenblöcke zu verwalten, und schreibt einen oder mehrere modifizierte Datenblöcke in eine Langzeitspeichervorrichtung.
-
Einige Systeme weisen die Langzeitspeichervorrichtung, die mit der Cache-Speichervorrichtung verbunden ist, auf, wobei die Bestimmung, dass das Datenobjekt ein erstes nicht konformes Objekt ist, weiterhin auf der Größe des Datenobjekts basiert, das eine verfügbare Speicherkapazität der ersten nichtflüchtigen Cache-Speichervorrichtung überschreitet. Das Speichern der einen oder mehreren Datenblöcke der ersten nicht konformen Datenobjekte in dem einen oder mehreren Speicherplätzen schließt weiterhin für jeden Datenblock des ersten nicht konformen Datenobjekts die Bestimmung ein, ob ausreichend Platz zum Speichern jedes Datenblocks in der ersten nichtflüchtigen Speichervorrichtung vorhanden ist, wenn nicht ausreichend Platz vorhanden ist, das Schreiben von einem oder mehreren vorhandenen Datenblöcken, die mit einem oder mehreren anderen Datenobjekten als dem ersten nicht konformen Datenobjekt verbunden sind und aktuell in der ersten nichtflüchtigen Speichervorrichtung gespeichert sind, in die Langzeitspeichervorrichtung, die Freigabe eines oder mehrerer Speicherplätze des einen oder der mehreren existierenden Datenblöcke, um den einen oder die mehreren frei gewordenen Speicherplätze zu verwalten, und das Schreiben jedes Datenblocks in den frei gewordenen einen oder mehrere Speicherplätze in die erste nichtflüchtige Speichervorrichtung.
-
In verschiedenen Ausführungsformen weist das System weiterhin eine zweite nichtflüchtige Cache-Speichervorrichtung auf, die mit der ersten nichtflüchtigen Cache-Speichervorrichtung verbunden ist, und die Speichersteuerung führt weiterhin Prozesse aus, welche die Replikation jedes in der ersten nichtflüchtigen Cache-Speichervorrichtung gespeicherten Datenblocks in die zweite nichtflüchtige Cache-Speichervorrichtung aufweisen. Die erste nichtflüchtige Cache-Speichervorrichtung weist in einigen Ausführungsformen eine Puffergröße auf, und die Speicherschwelle gibt die Puffergröße wieder. In weiteren Ausführungsformen weist die erste nichtflüchtige Cache-Speichervorrichtung eine Flash-Speichervorrichtung auf.
-
Die Speichersteuerung ist in verschiedenen Ausführungsformen eingerichtet, um mit einem Netzwerk verbunden zu werden, das in Kommunikation mit einer oder mehreren Client-Vorrichtungen steht. In einigen Ausführungsformen ist die Speichersteuerung zwischen der einen oder den mehreren Client-Vorrichtungen und der ersten nichtflüchtigen Cache-Speichervorrichtung angeordnet, wenn sie mit dem Netzwerk verbunden ist. In weiteren Ausführungsformen ist die Langzeitspeichervorrichtung ein Teil eines lokalen Speichernetzwerks und/oder ein Teil eines Unternehmensspeicherdienstes.
-
In einer weiteren innovativen Ausführungsform schließt ein System mit einer nichtflüchtigen Cache-Speichervorrichtung eine Puffergröße, Mittel zum Empfangen einer E/A-Aufforderung zur Bestimmung einer Größe des Datenobjekts und Mittel zum Bestimmen des Datenobjekts ein, dass es ein nicht konformes Datenobjekt in Bezug auf die Puffergröße der nichtflüchtigen Speichervorrichtung ist. Das System weist in verschiedenen Ausführungsformen weiterhin Mittel zum Unterteilen der nicht konformen Datenobjekte in eine Vielzahl von Datenblöcken auf, wobei jeder Datenblock eine Größe aufweist, die kleiner als die Puffergröße ist, Mittel zum Verschieben eines oder mehrerer Datenblöcke in einen oder mehrere Speicherplätze der nichtflüchtigen Speichervorrichtung in eine Langzeitspeichervorrichtung, um einen oder mehrere Speicherplätze frei zu machen, und Mittel zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den freigewordenen einen oder mehrere Speicherplätze der nichtflüchtige Speichervorrichtung.
-
In verschiedenen Ausführungsformen ist die E/A-Aufforderung eine Schreibaufforderung und die Mittel zum Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts weisen weiterhin Mittel zum Schreiben jedes des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den freigegebenen einen oder die mehreren Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung auf. In einigen Ausführungsformen ist die E/A-Aufforderung eine Leseaufforderung und die Mittel zum Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts weisen weiterhin Mittel zum Lesen eines oder mehrerer Datenblöcke, die in der Langzeitspeichereinrichtung gespeichert sind, in die Cache-Speichereinrichtung auf. In weiteren Ausführungsformen ist die E/A-Aufforderung eine Lese-Schreibaufforderung, und die Mittel zum Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts weisen weiterhin Mittel zum Lesen eines oder mehrerer in der Langzeitspeichereinrichtung gespeicherten Daten in dem einen oder den mehreren Lesedatenblöcken auf, um einen oder mehrere modifizierte Datenblöcke zu erzeugen, sowie Mittel zum Schreiben des einen oder der mehreren modifizierten Datenblöcke in die Langzeitspeichervorrichtung.
-
In einigen Ausführungsformen weist das System weiterhin die Langzeitspeichervorrichtung auf, die mit der Cache-Speichervorrichtung verbunden ist, und die Mittel zum Bestimmen, dass das Datenobjekt ein nicht konformes Objekt ist, weisen Mittel zum Schaffen der Grundlage für die Bestimmung einer Größe des Datenobjekts, das die Puffergröße überschreitet, auf. In einigen Systemen beinhalten die Mittel zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in einem oder mehreren Speicherplätzen für jeden Datenblock des nicht konformen Datenobjekts Mittel zur Bestimmung, ob ausreichend Platz zum Speichern jedes Datenblocks in der nichtflüchtigen Speichervorrichtung vorhanden ist, wenn nicht ausreichend Platz vorhanden ist, Mittel zum Schreiben eines oder mehrerer vorhandener Datenblöcke, die mit einem oder mehreren anderen Datenobjekten als dem nicht konformen Datenobjekt verbunden sind und aktuell in der nichtflüchtigen Speichervorrichtung gespeichert sind, in die Langzeitspeichervorrichtung, Mittel zum Freigeben des einen oder der mehreren Speicherplätze des einen oder der mehreren vorhandenen Datenblöcke, um den einen oder mehrere frei gewordene Speicherplätze zu verwalten, und Mittel zum Schreiben jedes Datenblocks in den einen oder mehreren frei gewordenen Speicherplätze in der nichtflüchtigen Speichervorrichtung.
-
In noch einer weiteren innovativen Ausführungsform schließt ein Betriebsablauf in einem nichtflüchtigen Speicher mit einem Satz nichtflüchtiger Speichervorrichtungen das Empfangen eines E/A-Befehls an eine Speichersteuerung ein, die mit einer nichtflüchtigen Speichervorrichtung mit einer Speicherschwelle verbunden ist, um einen E/A-Vorgang auf einem Datenobjekt auszuführen, das Bestimmen einer Größe des Datenobjekts, und die Bestimmung, dass das Datenobjekt ein nicht konformes Datenobjekt in Bezug auf die Speicherschwelle der Cache-Speichervorrichtung ist. Das Verfahren in verschiedenen Ausführungsformen weist weiterhin die Aufteilung der nicht konformen Datenobjekte in eine Vielzahl von Datenblöcken auf, wobei jeder Datenblock eine Größe aufweist, die kleiner als die Speicherschwelle ist, sowie das Verschieben eines oder mehrerer Datenblöcke, die in einem oder mehreren Speicherplätzen der nichtflüchtigen Cache-Speichervorrichtung in eine Langzeitspeichervorrichtung, um einen oder die mehreren Speicherplätze frei zu machen, und das Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts in den frei gewordenen einen oder mehreren Speicherplätze der nichtflüchtigen Speichervorrichtung.
-
In verschiedenen Ausführungsformen ist die E/A-Aufforderung eine Schreibaufforderung, und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weist weiterhin das Schreiben jedes des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den frei gewordenen einen oder mehrere Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung auf. In einigen Ausführungsformen ist die E/A-Aufforderung eine Leseaufforderung, und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weist weiterhin das Lesen jedes des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den frei gewordenen einen oder mehrere Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung auf. In weiteren Ausführungsformen ist die E/A-Aufforderung eine Lese-Schreibaufforderung, und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weist weiterhin das Lesen jedes des einen oder der mehreren Datenblöcke des konformen Datenobjekts in den frei gewordenen einen oder mehrere Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung auf, sowie das Modifizieren der Daten in jedem der einen oder mehreren modifizierten Datenblöcke, um einen oder mehrere modifizierte Datenblöcke zu verwalten, und das Schreiben jedes des einen oder der modifizierten Datenblöcke in die Langzeitspeichervorrichtung.
-
In einigen Ausführungsformen basiert die Bestimmung, dass das Datenobjekt ein nicht konformes Objekt ist, weiterhin auf der Größe des Datenobjekts, das eine verfügbare Speicherkapazität der Cache-Speichervorrichtung überschreitet. In einigen Verfahren schließt das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in einem oder mehreren Speicherplätzen für jeden Datenblock des nicht konformen Datenobjekts die Bestimmung ein, ob ausreichend Platz zum Speichern jedes Datenblocks in der nichtflüchtigen Speichervorrichtung vorhanden ist, und wenn nicht ausreichend Platz vorhanden ist, das Schreiben eines oder mehrerer vorhandener Datenblöcke, die mit einem oder mehreren anderen Datenobjekten als dem nicht konformen Datenobjekt verbunden sind und aktuell in der nichtflüchtigen Speichervorrichtung gespeichert sind, in die Langzeitspeichervorrichtung, die Freigabe des einen oder der mehreren Speicherplätze des einen oder der mehreren vorhandenen Datenblöcke, um den einen oder mehrere frei gewordene Speicherplätze zu verwalten, und das Schreiben jedes Datenblocks in den einen oder mehrere frei gewordenen Speicherplätze in der nichtflüchtigen Speichervorrichtung.
-
Die verschiedenen hier offenbarten Ausführungsformen umfassen Prozesse zum Beseitigen oder zumindest Reduzieren der Probleme in den bisherigen Speichernetzwerken und/oder Systemen, die oben erläutert wurden, und sind dementsprechend zuverlässiger und/oder effizienter als andere Rechenwerke und/oder Netzwerke. Das heißt, die verschiedenen hier offenbarten Ausführungsformen beinhalten Hardware und/oder Software mit der Funktionalität, die Probleme in Bezug auf die Zuverlässigkeit und/oder Latenz im Zusammenhang mit dem Schreiben von großen Datenobjekten (z. B. Datenobjekten mit einer Größe, die größer als die Speicherkapazität einer Cache-Speichervorrichtung ist) zu vermeiden oder zumindest zu verringern. Weiterhin umfassen die verschiedenen hier offenbarten Ausführungsformen Hardware und/oder Software, um die Latenzprobleme zu vermeiden oder zumindest zu verringern, die mit Aufforderungen zum Lesen von Daten (z. B. Leseaufforderungen) und/oder Aufforderungen zum Modifizieren von Daten (z. B. Lese-Schreibaufforderungen) verbunden sind. Dementsprechend stellen die hierin offenbarten Ausführungsformen verschiedene Verbesserungen an Speichernetzwerken und/oder Speichersystemen bereit.
-
Es sei klargestellt, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeitszwecke und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.
-
Figurenliste
-
Die vorliegende Offenbarung ist in den Figuren der beigefügten Zeichnungen, in denen gleiche Bezugszeichen verwendet werden, um ähnliche Elemente zu bezeichnen, beispielhaft und nicht einschränkend dargestellt.
- 1A ist ein Diagramm eines beispielhaften Computernetzwerks zum Speichern von Daten;
- 1B ist ein Diagramm eines beispielhaften Speichersystems, das in dem Computernetzwerk von 1A eingeschlossen ist;
- 2 ist ein Diagramm eines beispielhaften Computernetzwerks zum Speichern von Daten;
- 3A bis 3C sind Flussdiagramme zur Veranschaulichung verschiedener Beispiele von Eingabe-/Ausgabeabläufen (EA-Abläufe) für große Datenobjekte;
- 4 ist ein Diagramm, das Prozesse für verschiedene beispielhafte Hardware und/oder Software zum Schreiben eines Datenobjekts in eine Langzeitspeicherung veranschaulicht;
- 5A bis 5G sind Diagramme, die verschiedene Beispiele einer zumindest kürzlich verwendeten Technik (LRU) veranschaulichen, die von einer Ausführungsform einer Speichersteuerung zum Verwalten einer Cache-Speichervorrichtung verwendet werden;
- 6 ist ein Blockdiagramm eines beispielhaften Verfahrens zum Schreiben eines Datenobjekts in einen Zwischenspeicher;
- 7 ist ein Blockdiagramm eines beispielhaften Verfahrens zum Lesen eines Datenobjekts in einen Zwischenspeicher; und
- 8 ist ein Blockdiagramm eines beispielhaften Verfahrens zum Modifizieren eines Datenobjekts in einer Langzeitspeicherung.
-
DETAILLIERTE BESCHREIBUNG
-
Die hier offenbarte innovative Technologie weist verschiedene Aspekte, wie beispielsweise Systeme, Verfahren, Vorrichtungen, computerlesbare Medien, Computerprogrammprodukte, usw. zum Verwalten von Eingabe-/Ausgabeabläufen (E/A-Abläufe) für Datenobjekte, insbesondere große Datenobjekte, in einem Speichersystem auf. Die Technologie ist vorteilhafterweise effizienter und/oder sicherer als die bisherigen Rechenwerke und/oder -systeme, die zum Speichern von Daten und insbesondere zum Speichern von Datenobjekten verwendet werden, wenn die Datenobjekte große Datenmengen einschließen (große Objekte (LOBs) sind). Ein LOB umfasst eine Datenmenge oder eine Datengröße, die größer als ein temporäres nichtflüchtiges Speichermedium einer Speichervorrichtung ist, wie unten detaillierter erläutert wird.
-
Die verschiedenen unten offenbarten Ausführungsformen schließen Hardware und/oder Software ein, um die Netzwerk- und Systemzuverlässigkeit in vorteilhafter Weise zu erhöhen und/oder Latenzprobleme zu verringern, die mit dem Schreiben großer Datenobjekte in Langzeitspeicher verbunden sind (z. B. Datenobjekte, die eine Größe aufweisen, die größer als die Größe oder Speicherkapazität des Zwischenspeichers sind). Darüber hinaus beinhalten die verschiedenen hierin offenbarten Ausführungsformen Hardware und/oder Software zur Vermeidung oder zumindest Verringerung von Latenzproblemen im Zusammenhang mit den Aufforderungen (z. B. Leseaufforderungen) aus Langzeitspeichern und/oder im Zusammenhang mit Aufforderungen (z. B. Leseaufforderungen) zum Modifizieren von Daten (z. B. Objektdaten) in einem Langzeitspeicher.
-
Wenn wir uns den Zeichnungen zuwenden, ist 1A ein Blockdiagramm eines beispielhaften Speichernetzwerkes 10. Wie gezeigt, kann Speichernetzwerk 10 mehrere Client-Vorrichtungen 25 einschließen, die in der Lage sind, mit einem Speichersystem 100 über ein drahtgebundenes und/oder drahtloses Netzwerk 75 (z. B. öffentliche und/oder private Computernetzwerke in beliebiger Anzahl und/oder Konfiguration (z. B. das Internet, ein Intranet, ein Cloud-Netzwerk, usw.)) verbunden zu sein und damit zu kommunizieren, neben anderen Beispielen kann eine Client-Vorrichtung 25 oder zwei oder mehrere Client-Vorrichtungen 25 (z. B. nicht auf drei Client-Vorrichtungen 25 beschränkt) einschließen.
-
Eine Client-Vorrichtung 25 kann jede Rechen-Hardware und/oder -Software(z. B. ein Thick Client, ein Thin Client oder eine Kombination davon) sein, die in der Lage ist, auf das Speichersystem 100 unter Verwendung des Netzwerkes 75 zuzugreifen. Jede Client-Vorrichtung 25 beruht als Teil ihres jeweiligen Betriebs auf dem Senden von Eingabe-/Ausgabeaufforderungen (I/O-Aufforderungen) in das Speichersystem 100, um Daten zu schreiben, zu lesen und/oder zu ändern. Genauer gesagt, kann jede Client-Vorrichtung 25 E/A-Aufforderungen zum Lesen, Schreiben, Speichern, Kommunizieren, Verbreiten und/oder zum Senden von Anweisungen, Daten, Computerprogrammen, Software, Codes, Programmen, usw. in das Speichersystem 100 übertragen. Die Client-Vorrichtung(en) 25 und das Speichersystem 100 können zumindest einen Teil eines Client-Server-Modells aufweisen. Im Allgemeinen kann auf das Speichersystem 100 von der/den Client-Vorrichtung(en) 25 zugegriffen werden, und/oder die Kommunikation mit dem Speichersystem 100 kann durch (eine) (nicht gezeigte) Client-Vorrichtung(en) 25 durch eine Netzwerkbuchse (nicht gezeigt) unter Verwendung einer oder mehrerer prozessübergreifender Netzwerktechniken initiiert werden.
-
Unter Bezugnahme auf 1B ist ein Blockdiagramm eines beispielhaften Speichersystems 100 veranschaulicht. Wie gezeigt, kann das Speichersystem 100, neben anderen Bauteilen, eine Vielzahl von Speichervorrichtungen 102a, 102b, ...102n und eine Speichersteuerung 104, die mit den Speichervorrichtungen 102a, 102b, ...102n über ein drahtgebundenes und/oder drahtloses Netzwerk 110 verbunden ist und damit kommuniziert, aufweisen.
-
Unter Verwendung des Netzwerks 110 kann das Speichersystem 100 in verschiedenen Ausführungsformen ein Cloud-Netzwerk (IAN), ein SAN (z. B. ein Speicherbereichsnetzwerk, ein Small Area Network, ein Server Area Network und/oder ein System Area Network), ein WAN (Wide Area Network), ein LAN (Local Area Network), ein WLAN (Wireless Local Area Network), ein MAN (Metropolitan Area Network), ein EPN (Enterprise Private Network), ein VPN (Virtual Private Network) und/oder ein Personal Area Network (PAN) neben anderen Beispielen für Computernetzwerke und/oder Sätzen von Computergeräten, die zum Zweck der gemeinsamen Nutzung von Ressourcen miteinander verbunden sind, aufweisen.
-
Speichervorrichtungen 102a, 102b, ...102n (auch einfach einzeln, in verschiedenen Gruppen oder kollektiv als Speichervorrichtung(en) 102 bezeichnet) können jeweils jede Art von Speichervorrichtung sein, die in der Zukunft bekannt ist oder entwickelt wird, und in der Lage ist, Daten und/oder Datenobjekte zu speichern. In verschiedenen Ausführungsformen kann eine Speichervorrichtung 102 ein oder mehrere nicht flüchtige Computer verwendbare (z. B. lesbare, beschreibbare, usw.) Medien beinhalten, die jedes nichtflüchtige und/oder persistente Gerät oder Vorrichtung einschließen können, die Anweisungen, Daten, Computerprogramme, Software, Codes, Programme usw. zur Verarbeitung durch oder in Verbindung mit einer Computerverarbeitungsvorrichtung enthalten, speichern, kommunizieren, verbreiten und/oder senden können.
-
Wie in 1B dargestellt, können Speichervorrichtungen 102a, 102b, ...102n als Flash-Speicher (z. B. ein Solid-State-Gerät (SSD) oder eine andere nicht flüchtige Speichervorrichtung, die persistente Daten speichert, oder eine persistente Speichervorrichtung) implementiert werden. In weiteren Ausführungsformen können die Speichervorrichtungen 102a, 102b, ...102n nichtflüchtige Speicher, wie beispielsweise einen dynamische Direktzugriffsspeicher (DRAM), einen statischen Direktzugriffsspeicher (SRAM), ein Festplatten-Drive (HDD) und/oder ein Speicherband (z. B. magnetisch und/oder virtuell) neben anderen Arten von Speichervorrichtungen (z. B. nichtflüchtig und/oder persistent) einschließen.
-
In verschiedenen Ausführungsformen können eine oder mehrere Speichervorrichtungen 102a, 102b, ...102n nichtflüchtige/persistente Hardware und/oder Software einschließen, die zum Durchführen von Langzeitdatenspeichervorgängen (z. B. Datenarchivierung, Datenwiederherstellung, Datenspiegelung, Datenreplikation, usw.) eingerichtet ist. Zum Beispiel kann jede der Speichervorrichtungen 102a, 102b, ...102n nichtflüchtige und/oder persistente Hardware und/oder Software einschließen, die zum Durchführen von Langzeitdatenspeichervorgängen eingerichtet sind. Weiterhin kann eine Speichervorrichtung 102 Hardware und/oder Software einschließen, die Daten und/oder ein oder mehrere Datenobjekte in einem einzigen Eintrag speichert (z. B. wenn die Größe des Datenobjekts kleiner oder gleich der Puffergröße einer Speichervorrichtung 106 ist (z. B. die Größe eines Zwischenspeichers 108)).
-
Alternativ oder zusätzlich kann eine Speichervorrichtung 102 Hardware und/oder Software einschließen, um ein oder mehrere Datenobjekte zu speichern, die in mehrere Datenblöcke geteilt/partitioniert sind (z. B. eine Vielzahl von Datenblöcken oder zwei oder mehrere Datenblöcke). Beispielhafte Datenobjekte (und Datenblöcke) beinhalten, sind aber nicht begrenzt auf, eine Gruppe/Gruppierung von Daten, eine Datensequenz, eine Tabelle, ein Index, ein Verfahren, ein Programm, eine Ansicht, eine Momentaufnahme, und/oder ähnliche Dateninhalte/Datenklassen.
-
In einigen Ausführungsformen kann eine Speichervorrichtung 102 zumindest einen Teil eines Objektspeichersystems aufweisen. In verschiedenen Ausführungsformen kann eine Speichervorrichtung 102 Hardware und/oder Software einschließen, um Datenobjekte (z. B. Datendateien) in Containern zu speichern, die organisatorisch flach (z. B. nicht hierarchisch) sind und eindeutige Kennungen (IDs) verwenden, um die Datenobjekte abzurufen. In verschiedenen Ausführungsformen kann eine Speichervorrichtung 102 Metadaten verwenden, um Datenobjekte zu speichern und auf sie zugreifen, und die Metadaten mit ihrem dazugehörigen Datenobjekt speichern. Dementsprechend können in verschiedenen Ausführungsformen eine oder mehrere zusätzliche Speichervorrichtungen 102, wie gewünscht, dem Speichersystem 100 hinzugefügt werden, ohne den Verarbeitungsaufwand wesentlich zu erhöhen, was die Skalierbarkeit für das Speichersystem 100 bereitstellen kann.
-
Ein Datenobjekt kann eine beliebige Größe aufweisen, die in einer Speichervorrichtung 102 gespeichert werden kann. Datenobjekte, die in einer Speichervorrichtung 102 gespeichert sind, können dieselbe vorbestimmte Größe, unterschiedliche Größen oder eine Kombination des Vorstehenden einschließen. In einem Beispiel kann ein Datenobjekt eine Größe von etwa zwei oder mehreren Terabyte (2TB) Daten aufweisen, obwohl andere Größen von mehr oder weniger als 2TB Daten ebenfalls anwendbar sind. Ein Datenobjekt kann eine Größe (einschließlich einer Datenmenge) aufweisen, welche die Puffergröße übersteigt, was die Menge an verfügbarem Speicher/Speicherplatz in der Cache-Speichervorrichtung 106 und/oder in dem Zwischenspeicher 108 (z. B. Datenobjektgröße > Puffergröße) widerspiegeln kann, in welchem Fall es als LOB betrachtet wird. Ein LOB kann in einem Inode gespeichert werden.
-
Ein Inode hat eine Datenstruktur, die ein Datenobjekt und einen oder mehrere Datenblöcke, die dem Datenobjekt entsprechen, speichert. Ein Datenblock ist ein Teil oder eine Partition des Datenobjekts. Ein Inode, der ein LOB speichert, kann hierin als ein nicht konformer Inode bezeichnet werden. Beim Speichern oder Abrufen des LOB in oder aus einer Speichervorrichtung 102 kann das LOB in jedem nicht konformem Inoden in zwei oder mehrere Datenblöcke geteilt (oder partitioniert) werden. Zum Beispiel können ein oder mehrere Datenblöcke eines bestimmten nicht konformen Inoden in der Speichervorrichtung 102a gespeichert werden und ein oder mehrere Datenblöcke desselben nicht konformen Inoden in der Speichervorrichtung 102b gespeichert werden, neben anderen Beispielen der Verteilung von Datenblöcken in den Speichervorrichtungen 102a, 102b, ...102n.
-
Ein Datenobjekt kann in eine beliebige Anzahl von Datenblöcken unterteilt werden. In einigen Ausführungsformen kann ein Datenobjekt die gleiche Anzahl (oder Menge) von Datenblöcken einschließen, während in anderen Ausführungsformen zwei oder mehr Datenobjekte unterschiedliche Größen von Datenblöcken beinhalten können. In einem Beispiel kann ein Datenobjekt bis zu etwa zehntausend (10000) Datenblöcke (z. B. eine Anzahl/Menge von Datenblöcken im Bereich von 1 Datenblock bis 10000 Datenblöcken) einschließen, neben anderen beispielhaften Bereichen und/oder Mengen von Datenblöcken.
-
Ein Datenblock kann eine beliebige geeignete Größe für die langfristige oder nichtflüchtige Speicherung in einer Speichervorrichtung 102 und Speicherung in einer Cache-Speichervorrichtung 106 aufweisen, was nachstehend weiterhin erläutert wird. In einigen Ausführungsformen weisen zwei oder mehrere Datenblöcke die gleiche oder im Wesentlichen die gleiche Größe auf. Zum Beispiel können zwei oder mehrere Datenblöcke die gleiche Menge Bytes oder im Wesentlichen die gleiche Menge Bytes aufweisen (z. B. bis 90 % oder mehr in Bezug aufeinander) beinhalten. In weiteren Ausführungsformen können zwei oder mehr Datenblöcke unterschiedliche Größen aufweisen (z. B. verschiedene Datenmengen oder unterschiedliche Datenmengen einschließen). In einigen Ausführungsformen können ein erster Datenblock und ein letzter Datenblock in einem Datenobjekt unterschiedliche Größen als die anderen Datenblöcke in dem Datenobjekt aufweisen, die weiterhin die gleiche Größe oder unterschiedliche Größen in Bezug aufeinander einschließen können.
-
In einem weiteren Beispiel kann jeder Datenblock etwa zweihundert Megabyte (200 MB) Daten (z.B. mit einer Größe von etwa 200 MB ± 0-10 %) einschließen, neben anderen beispielhaften Datenblöcken, die mehr oder weniger als etwa 200 MB Daten einschließen können; und jedes Datenobjekt kann etwa 2 TB Daten einschließen (z. B. etwa ein Datenobjekt mit 2 TB ± 0-10 %), das in 10000 Datenblöcke unterteilt ist, von denen jeder etwa 200 MB Daten einschließt. Weiterhin können der erste und der letzte Datenblock (z. B. Datenblock 00001 und 10000) verschiedene Größen als die anderen Datenblöcke einschließen (z. B. die anderen 9998 Datenblöcke können etwa 200 MB Daten beinhalten, während die Datenblöcke 00001 und 10000 weniger oder mehr als etwa 200 MB einschließen können).
-
Einem Inoden für ein Datenobjekt kann eine eindeutige Objektkennung zugewiesen werden, die irgendeine Menge und/oder Kombination von alphanumerischen Zeichen und/oder Ziffern einschließen kann. Jede eindeutige Objektkennung kann zufällig zugewiesen oder in einer vorbestimmten Weise oder Reihenfolge zugewiesen werden. In einigen Ausführungsformen kann ein Datenobjekt eine eindeutige Objektkennung (z. B. DataObject ID) mit fünfundzwanzig (25) alphanumerischen Ziffern einschließen, neben anderen beispielhaften Mengen von alphanumerischen Ziffern, die größer oder kleiner als fünfundzwanzig (25) alphanumerische Ziffern sein können. Ein besonderes Beispiel einer DataObject ID, die fünfundzwanzig (25) alphanumerische Ziffern einschließt, kann sein: 1234567890123456789012345 (d. h. fünfundzwanzig (25) numerische Ziffern in diesem Beispiel) oder andere beispielhafte Kombinationen von alphabetischen Zeichen und/oder numerischen Zeichen (oder Zahlen).
-
Besondere Datenobjekte, die eine Datenmenge oder eine Datenanzahl einschließen (z. B. eine Datenobjektgröße), die kleiner oder gleich der Puffergröße oder dem Speicherplatz in der Cache-Speichervorrichtung 106 und/oder dem Zwischenspeicher 108 sind (z. B. Datenobjektgröße ≤ Puffergröße), werden als konforme Datenobjekte bezeichnet. Ein konformes Datenobjekt kann in einem als konforme Inode bezeichneten Inoden vorgesehen sein. Einem konformen Inoden kann eine eindeutige Objektkennung und eine Darstellung der Daten (z. B. Metadaten) in dem Datenobjekt zugewiesen werden. Eine beispielhafte eindeutige Objektkennung (z. B. DataObject ID) für einen konformen Inoden kann sein: 2345678901234567890123456 -<metadata>, wobei das Einbeziehen von<metadata>in diesem Beispiel eine symbolische Darstellung der aktuellen Metadaten für die Daten eines aktuell konformen Inoden ist.
-
Ein Datenblock kann eine eindeutige Datenblockkennung beinhalten, die eine beliebige Anzahl und/oder Kombination von alphanumerischen Zeichen/Ziffern einschließen kann. Jede eindeutige Datenblockkennung kann zufällig zugewiesen werden oder kann in einer vorbestimmten Weise oder Reihenfolge zugewiesen werden. In einigen Ausführungsformen kann eine eindeutige Datenblockkennung (z. B. DataChunk ID) einen Abschnitt beinhalten, der ein entsprechendes Datenobjekt (z. B. 1234567890123456789012345 in dem obigen Beispiel), einen Abschnitt (z. B. einen Satz von alphanumerischen Zeichen/Ziffern), der einen bestimmten Datenblock identifiziert (z. B. 00001 bis 10000), und einen Abschnitt der Metadaten, welche die Daten in dem Datenblock darstellen/beschreiben (z. B. dargestellt durch<metadata>), identifizieren, welche verallgemeinert werden können als: <DataObject ID>-<DataChunk ID>-<metadata>. Dementsprechend weist jeder Datenblock für ein bestimmtes Datenobjekt dasselbe Präfix (d. h. die DataObject ID) und ein anderes Postfix (d. h. Die DataChunk ID und Metadaten) auf. Ein Beispiel von drei aufeinander folgenden Datenblöcken kann die folgenden DataChunk-IDs haben:
- 1234567890123456789012345-0000 1-<metadata>;
- 1234567890123456789012345-00002-<metadata>; und
- 12345678901234567890 12345-00003-<metadata>,
wobei die Metadaten der Daten in jedem Datenblock durch <metadata> nach der DataChunk-ID in diesen Beispielen dargestellt werden. Dementsprechend können die Speichervorrichtungen 102a, 102b, ...102n konforme Datenobjekte als Ganzes und/oder LOBs, die in mehrere Datenblöcke unterteilt sind, speichern.
-
Wie gezeigt, kann die Speichersteuerung 104 neben anderen Bauteilen eine oder mehrere Cache-Speichervorrichtungen 106 beinhalten, die neben anderen Bauteilen einen Zwischenspeicher 108 einschließen können. Jede Cache-Speichervorrichtung 106 kann einzeln, in verschiedenen Gruppen oder in ihrer Gesamtheit als Cache-Speichervorrichtung(en) 106 bezeichnet werden. Eine Cache-Speichervorrichtung 106 kann jede Art von Hardware und/oder Software-Speichervorrichtung sein, die in der Zukunft bekannt ist oder entwickelt wird, und in der Lage ist, ein oder mehrere Datenobjekte und/oder Datenblöcke zum Abrufen zu speichern, wenn eine E/A-Aufforderung (z. B. Schreibaufforderung, Leseaufforderung und/oder Lese-Schreibaufforderung usw.) in dem Speichersystem 100 empfangen wird.
-
Eine Cache-Speichervorrichtung 106 kann mit einer Durchschreibbestätigung oder einer Rückschreibbestätigung auf eine Schreibaufforderung antworten. Für Durchschreibbestätigungskonfigurationen kann eine Cache-Speichervorrichtung 106 ein Datenobjekt oder einen Datenblock in den Zwischenspeicher 108 schreiben, das Datenobjekt oder den Datenblock in eine oder mehrere Speichervorrichtung 102a, Speichervorrichtung 102b, ...Speichervorrichtung 102n schreiben und die Schreibaufforderung bestätigen, nachdem sich das Datenobjekt oder der Datenblock in der (den) Speichervorrichtung(en) 102 befindet.
-
Für Rückschreibbestätigungskonfigurationen kann eine Cache-Speichervorrichtung 106 eine Schreibaufforderung bestätigen, wenn das Datenobjekt oder der Datenblock in dem Zwischenspeicher 108 gespeichert (z. B. zwischengespeichert, angehalten usw.) wird. Eine Rückschreibbestätigungskonfiguration kann einer Cache-Speichervorrichtung 106 erlauben, dass Datenobjekte und/oder Datenblöcke schnell gepuffert und anschließend die Datenobjekte und/oder die Datenblöcke in (eine) entsprechend langsamere Langzeitspeichervorrichtung(en) (z.B. eine oder mehrere Speichervorrichtungen 102a, 102b, ... 102n) geschrieben werden, wenn die Langzeitspeichervorrichtung(en) eine Bandbreite aufweist/aufweisen, um E/A-Abläufe (z. B. Lesevorgänge, Schreibvorgänge und/oder Lese-Schreibvorgänge, usw.). durchzuführen.
-
Eine Cache-Speichervorrichtung 106 kann Leseaufforderungen durch Bereitstellen eines oder mehrerer Datenobjekte und/oder eines oder mehrerer Datenblöcke in ihrem Zwischenspeicher 108 zur Speicherung ausführen. Zum Beispiel kann die Cache-Speichervorrichtung 106 eingerichtet sein, um zuvor geschriebene und/oder gelesene Datenobjekte und/oder Datenblöcke zu speichern (anzuhalten, zwischenzuspeichern, aufzunehmen, usw.). Dies kann in einigen Fällen ungeachtet jeglicher Vorabrufvorgänge durchgeführt werden, welche die Speichersteuerung 104 ausgeführt haben kann (z. B. Read-Ahead-Vorgänge, wie an anderer Stelle hierin erörtert).
-
In verschiedenen Ausführungsformen kann eine Cache-Speichervorrichtung 106 Datenobjekte und/oder Datenblöcke in ihrem Zwischenspeicher 108 gemäß einer zuletzt verwendeten Technik (LRU) speichern. Eine beispielhafte LRU-Technik entfernt/löscht ältere Datenobjekte und/oder Datenblöcke aus dem Zwischenspeicher 108, um Speicher-/Pufferplatz im Zwischenspeicher 108 freizugeben, und bestückt den frei gewordenen Speicherplatz mit (einem) neu aufgerufenen Datenobjekt(en) und/oder einem Datenblock (Datenblöcken). Mit anderen Worten kann die Speichersteuerung 104 jedes Datenobjekt oder jeden Datenblock eines Datenobjekts (z. B. eine Folge von Datenblöcken) zwischenspeichern, wenn auf das/die Datenobjekt(e) und/oder den Datenblock (die Datenblöcke) zugegriffen wird, um verfügbaren Speicherplatz in einem Zwischenspeicher 108 einer Cache-Speichervorrichtung 106 zu füllen. Andere Techniken und Variationen sind ebenfalls möglich und werden in Betracht gezogen.
-
Eine Cache-Speichereinrichtung 106 kann eine oder mehrere zukünftige Leseaufforderungen (z. B. von einem oder mehreren der Clients 50) vorwegnehmen und ein oder mehrere Datenobjekte und/oder Datenblöcke in dem Zwischenspeicher 108 speichern, welche der (den) Leseaufforderung(en) vor dem Empfang der (den) vorweggenommenen Leseaufforderung(en) entsprechen kann (können), was als Read-Ahead-Funktion bezeichnet werden kann. In einigen Ausführungsformen kann eine Cache-Speichervorrichtung 106 versuchen, einen bestimmten Satz von Datenobjekten oder einen bestimmten Satz von Datenblöcken auf Grundlage einer oder mehrerer zuvor empfangener E/A-Aufforderungen vorherzusagen. Zum Beispiel kann eine Cache-Speichervorrichtung 106 vorhersagen, dass die nächste E/A-Aufforderung eine Leseaufforderung zum Lesen eines Datenblocks einschließlich der DataChunk ID 1234567890123456789012345-00004 -<> sein wird, da die drei vorherigen E/A-Aufforderungen Leseaufforderungen waren, um Datenblöcke einschließlich der DataChunk IDs 1234567890123456789012345-00001-<>, 1234567890123456789012345-00002-<> und 1234567890123456789012345-00003-<> nacheinander zu lesen.
-
Die Effizienz und das Ausmaß, in dem ein Speichersystem arbeiten kann, kann eine Funktion der Speichermenge in seiner Cache-Speichervorrichtung sein (z. B. Puffergröße). Das heißt, größere Cache-Speichervorrichtungen können einen großen Zwischenspeicher beinhalten, der mehr Datenobjekte und/oder Datenblöcke zwischenspeichern kann, was oft zu einer besseren Leistung führt (z. B. gemessen an E/A-Abläufen pro Sekunde (IOPS), Durchsatz, usw.). Die hierin offenbarte Speichertechnologie erläutert in vorteilhafter Weise Situationen, in denen E/A-Aufforderungen LOBs entsprechen, Situationen, in denen die Cache-Speichervorrichtung voll oder im Wesentlichen voll ist (z. B. eine Datenmenge über der vorbestimmten Datenmengenschwelle), und/oder Situationen, in denen die Speichervorrichtung die gewünschten Daten nicht speichert (z. B. ein oder mehrere Objekte und/oder ein oder mehrere Datenblöcke).
-
In verschiedenen Ausführungsformen kann die Speichersteuerung 104 zwischen der/den Client-Vorrichtung(en) 25 und Cache-Speichervorrichtung(en) 106 verbunden sein. Weiterhin kann die Speichersteuerung 104 Hardware oder eine Kombination aus Hardware/Software einschließen, welche die Größe (z. B. Puffergröße) einer zugehörigen Cache-Speichervorrichtung (z. B. Cache-Speichervorrichtung(en) 106 und/oder ein oder mehrere Zwischenspeicher 108) bestimmen und von einer oder mehreren Client-Vorrichtungen (z. B. Client-Vorrichtungen 25) E/A-Aufforderungen (z. B. Schreibaufforderungen, Leseaufforderungen und Lese-Schreibaufforderungen) über ein Netzwerk (z. B. Netzwerk 75) empfangen kann. Die Speichersteuerung 104 kann in einigen Ausführungsformen die Größe eines Datenobjekts (z. B. die Datenobjektgröße) nach Empfang einer E/A-Aufforderung (z. B. einer Schreibaufforderung) bestimmen, um das Datenobjekt in einen Langzeitspeicher (z. B. Speichervorrichtungen 102a, 102b, ...102n) zu schreiben, und die Datenobjektgröße mit der Puffergröße eines Zwischenspeichers 108 in einer Cache-Speichervorrichtung 106 vergleichen.
-
Die Speichersteuerung 104 kann konformen Datenobjekten und nicht konformen Datenobjekten (LOBs) Datenobjektkennungen zuweisen. Die Speichersteuerung 104 kann konforme Datenobjekte als Ganzes in eine Cache-Speichervorrichtung 106 schreiben und kann LOBs schreiben, indem die LOBs in Datenblöcke oder Partitionen geteilt werden, wie an anderer Stelle hierin erörtert. Beispielsweise kann die Speichersteuerung 104 einem konformem Datenobjekt 2345678901234567890123456 -<> als seine DataObject ID zuweisen, muss keine DataChunk IDs zuweisen und kann Metadaten in dem Postfix beinhalten.
-
In verschiedenen Ausführungsformen kann die Speichersteuerung 104 Datenobjekte in einer Verzeichnisstruktur auf Grundlage der ihnen zugewiesenen eindeutigen Objektkennungen organisieren. Eine Verzeichnisstruktur kann eine beliebige Anzahl von Ebenen oder Strukturen enthalten, die zum Lokalisieren des Datenobjekts (der Datenobjekte) geeignet sind. In einem Beispiel können Datenobjekte in einem Verzeichnis mit drei Ebenen auf Grundlage der eindeutigen Objektkennung organisiert sein, neben anderen Beispielen, die eine geringere Anzahl von Ebenen oder eine größere Anzahl von Ebenen in einer Verzeichnisstruktur implementieren. Zum Beispiel kann der erste Satz von drei Ziffern (z. B. [123]), der zweite Satz von drei Ziffern (z. B. [456]) und der dritte Satz von drei Ziffern (z. B. [789]) die erste Ebene, die zweite Ebene beziehungsweise die dritte Ebene des Verzeichnisses mit den verbleibenden Ziffern (z. B. sechzehn (16) Ziffern (z. B. 0123456789012345)) definieren, die eine Kennung eines spezifischen Datenobjekts in dem Verzeichnis bereitstellen. Dementsprechend kann die DataObject ID für diesen speziellen Fall lauten: [123] [456] [789] 0123456789012345. Dementsprechend kann jeder Datenblock, der für dieses bestimmte Datenobjekt erzeugt wird, in einem Verzeichnis angeordnet sein, das wie folgt adressiert ist: /mnt/ssd/123/456/789/.
-
Ein Datenblock in einem gegebenen geteilten/unterteilten Datenobjekt kann mit einer eindeutigen Objektkennung, wie eine DataChunk ID, die eine beliebige Anzahl und/oder Kombination von alphanumerischen und/oder eine andere Art von Symbolen und weiterhin Metadaten einschließt, beinhalten, wie oben erläutert. Beispielsweise kann in einem besonderen Datenobjekt einem fünften Datenblock 00005-<> als seine DataChunk ID zugewiesen werden, wobei 00005 seine DataChunk ID (z. B. 00001-00004, das bereits verwendet oder zugewiesen ist) und Metadaten in dem Postfix aufweist, was in der DataObject ID dieses Beispiels durch <> dargestellt ist. Dementsprechend wäre für diesen besonderen Datenblock die DataChunk-ID 1234567890123456789012345-00005-<metadata> für ein Datenobjekt, dem die DataObject ID 1234567890123456789012345 zugewiesen ist, wobei die aktuellen Metadaten die symbolischen Metadaten in diesem Beispiel ersetzen.
-
In verschiedenen Ausführungsformen kann die Speichersteuerung 104 jeden Datenblock eines Datenobjekts, das von einer Client-Vorrichtung (z. B. Client-Vorrichtung 25) empfangen wird, in einen Zwischenspeicher 108 einer Cache-Speichervorrichtung 106 schreiben. Die Speichersteuerung 104 kann in einigen Ausführungsformen weiterhin Datenblöcke in einen Zwischenspeicher 108 schreiben, bis eine Speicherschwelle einer Cache-Speichereinrichtung 106 erfüllt ist. Zum Beispiel kann die Speicherschwelle wiederspiegeln, dass eine Ausführungsform eines Zwischenspeichers 108 voll ist, was bedeutet, dass Datenblöcke in den Zwischenspeicher 108 geschrieben werden, bis die Speicherkapazität des Zwischenspeichers 108 erreicht worden ist, wobei eine vorbestimmte Speicherplatzschwelle in dem Zwischenspeicher 108 verwendet wird (z. B. achtzig Prozent (80 %), neben anderen beispielhaften Schwellenwerten, die größer oder kleiner als 80 % sein können), und eine vorbestimmte zugeordnete Speicherkapazität für die Speicherung dieses Datenobjekttyps erfüllt ist, usw., neben anderen Beispielen.
-
Eine LRU-Technik kann in verschiedenen Ausführungsformen der Speichersteuerung 104 eingeschlossen sein, um Speicherbeschränkungen in einem Zwischenspeicher 108 zu reduzieren. Zum Beispiel kann die Speichersteuerung 104 beginnen, Datenblöcke, die in einer Cache-Speichervorrichtung 106 (z. B. in ihrem Zwischenspeicher 108) seit der längsten Zeit (z. B. LRU oder darauf zugegriffen) gespeichert sind, in eine der Speichervorrichtungen 102 geschrieben werden, um Speicherplatz in einem Zwischenspeicher 108 freizugeben (z. B. frei machen), so dass die verbleibenden Datenblöcke in dem Datenobjekt in eine Cache-Speichervorrichtung 106 geschrieben werden können.
-
Der Speichersteuerung 104 kann in verschiedenen Ausführungsformen Datenblöcke in die Cache-Speichervorrichtung(en) 106 schreiben oder weiterhin schreiben, wenn Speicherplatz in ihrem jeweiligen Zwischenspeicher 108 über die LRU-Technik verfügbar gemacht wird. Das Schreiben von Datenblöcken (z. B. LRU-Datenblöcken) in eine oder mehrere der Speichereinrichtungen 102, um Speicherplatz freizugeben, wenn Speicherplatz verfügbar wird, kann in verschiedenen Ausführungsformen als ein Push für jeden Datenblock oder das Pushen von Datenblöcken (oder des nicht-konformen Inoden) durch die Cache-Speichervorrichtung 106 in einen Langzeitspeicher (z. B. einen oder mehrere Langzeitspeicher 102a, 102b, ...102n) bezeichnet werden. Zum Beispiel kann die Speichersteuerung 104 einen Datenblock in dem nicht konformen Inoden durch die Cache-Speichervorrichtung 106 in einen Langzeitspeicher schieben, bis das gesamte Datenobjekt (d. h. jedes und jeder Datenblock) in das Speichersystem 100 (z. B. Cache-Speichervorrichtung 106 (z. B. Zwischenspeicher 108)) und/oder eine oder mehrere der Speichervorrichtungen 102) geschrieben (z. B. zwischengespeichert/gespeichert) ist. Der Push-Vorgang kann periodisch (z. B. in vorbestimmten Intervallen), im Wesentlichen kontinuierlich, und/oder kontinuierlich durch die Speichersteuerung 104 erfolgen, bis keine Datenblöcke, die in das Speichersystem 100 geschrieben werden müssen, in dem nicht konformen Inoden mehr vorhanden sind.
-
Auf diese Weise kann die Speichersteuerung 104 in einigen Fällen Datenobjekte (z. B. nicht konforme Inoden) in das Speichersystem 100 durch Pushen kleiner Mengen eines Datenobjekts (z. B. in Form von zwei oder mehr Datenblöcken) durch eine Speichervorrichtung 106 (z. B. Pufferspeicher 108) in einen Langzeitspeicher (z. B. eine oder mehrere der Speichervorrichtungen 102) schreiben, anstatt das gesamte Datenobjekt in das Speichersystem 100 auf einmal zu schreiben.
-
Das Schreiben (oder Pushen) von Datenblöcken in einem Datenobjekt durch Cache-Speichervorrichtung(en) 106 in eine oder mehrere der Speichervorrichtungen 102 ist effizienter als andere Ansätze, wie diejenigen, die das gesamte Datenobjekt zu einem einzelnen Zeitpunkt in einen Zwischenspeicher schreiben. Zum Beispiel kann das Pushen von Datenblöcken in einen Langzeitspeicher in vorteilhafter Weise schneller sein, ist weniger Aufwand, benötigt weniger Bandbreite, usw. als das Schreiben eines gesamten LOB in einem einzigen Arbeitsgang, insbesondere bei nicht konformen Inoden, deren Größe den verfügbaren Speicherplatz übersteigt, da das Schreiben kleinerer Datenblöcke in einer Reihe von Schreibvorgängen einem Zwischenspeicher 108 ermöglichen kann, im Laufe der Zeit über genügend Speicherplatz zu verfügen, um jeden einzelnen Datenblock aufzunehmen. Mit anderen Worten kann das Pushen von Datenblöcken eines LOB als zusätzliche Zeitvariable einiger Schreibvorgänge der Cache-Speichervorrichtung 106 betrachtet werden, die es der Cache-Speichervorrichtung 106 ermöglichen kann, LOBs effizienter und/oder zuverlässiger zu schreiben und/oder zwischenzuspeichern.
-
In verschiedenen Ausführungsformen kann die Speichersteuerung 104 E/A-Aufforderungen ausführen, um Datenobjekte von einer oder mehreren Speichervorrichtungen 102 in die Cache-Speichervorrichtung 106 (z. B. Zwischenspeicher 108) zu lesen. In einigen Ausführungsformen kann ein ganzes Datenobjekt (z. B. ein konformer Inode) in die Cache-Speichereinrichtung 106 (z. B. Zwischenspeicher 108) gelesen werden, wenn das Lesen von Daten innerhalb des nicht konformen Inoden angefordert wird. In einigen Ausführungsformen kann eine Teilmenge (z. B. ein oder mehrere Datenblöcke, ein oder mehrere Teile, eine oder mehrere Partitionen, usw.) eines Datenobjekts (z. B. ein konformer Inode und/oder ein nicht konformer Inode) einschließlich der gewünschten Daten in die Cache- Speichervorrichtung 106 von einer oder mehreren Speichervorrichtungen 102 gelesen werden, wenn das Lesen von Daten eines konformen Inoden oder eines nicht konformen Inoden angefordert wird. In verschiedenen Ausführungsformen kann die Speichersteuerung 104 den (die) Datenblock (Datenblöcke) in einer oder mehreren Speichervorrichtungen 102 identifizieren, einschließlich der gewünschten Daten in einer Leseaufforderung, und den (die) identifizierten Datenblock (Datenblöcke) von einer oder mehreren Speichervorrichtung(en) 102 in die Speichervorrichtung 106 lesen.
-
Ähnlich wie in verschiedenen Ausführungsformen oben besprochen, kann die Speichersteuerung 104 die hierin beschriebene LTU-Technik bei Bedarf implementieren, um Speicherplatz in der Cache-Speichervorrichtung 106 freizugeben, wenn Zwischenspeicher 108 bei der Vorbereitung einer Leseaufforderung voll ist, was bedeuten kann, dass die Speicherkapazität des Zwischenspeichers 108 erreicht worden ist, wobei eine vorbestimmte Speicherplatzschwelle in dem Zwischenspeicher 108 verwendet wird (z.B. achtzig Prozent (80 %), neben anderen Schwellenwerten, die kleiner oder größer als 80 % sein können), und eine vorbestimmte zugeordnete Speicherkapazität für die Speicherung dieses Datenobjekttyps erfüllt ist, usw. Die Speichersteuerung 104 kann erkennen, dass der Zwischenspeicher 108 voll ist und als Antwort auf diese Erkenntnis beginnen, eines oder mehrere Datenobjekte und/oder einen oder mehrere Datenblöcke aus dem Zwischenspeicher 108 gemäß der LRU-Technik zu entfernen/zu löschen.
-
In einigen Ausführungsformen kann die Speichersteuerung 104 bestimmen, ob (ein) Datenobjekt(e) und/oder Datenblock (Datenblöcke), die vom Zwischenspeicher 108 der Cache-Speichervorrichtung 106 gemäß der LRU-Technik entfernt werden sollen, in einen Langzeitspeicher geschrieben/gespeichert werden muss (z. B. eine oder mehrere der Speichervorrichtungen 102a, 102b, ...102n). Die Speichersteuerung 104 kann Datenobjekte und/oder Datenblöcke, die aus dem Zwischenspeicher 108 in die Speichervorrichtungen 102 entfernt werden sollen, bevor das (die) Datenobjekt(e) und/oder Datenblock (Datenblöcke) aus dem Zwischenspeicher 108 entfernt/gelöscht werden, schreiben, die weiterhin das (die) Datenobjekt(e) und/oder den (die) Datenblock (Datenblöcke) einschließen, die in einer oder mehreren anderen Speichervorrichtungen 102, die der unteren Erläuterung entsprechen, gespiegelt/repliziert werden.
-
In einigen Ausführungsformen kann die Speichersteuerung 104 verwendet werden, kleinere Datenmengen in der Form eines oder mehrerer Datenblöcke zu lesen oder eine Teilmenge von Daten (z. B. die gewünschten Daten) in einem Datenobjekt, das in einer oder mehreren Speichervorrichtungen 102 gespeichert ist, in den Zwischenspeicher 108 zu pushen, anstatt das gesamte Datenobjekt aus der (den) Speichervorrichtung(en) 102 in den Zwischenspeicher 108 zu lesen. Das Lesen (oder Pushen) einer Teilmenge eines Datenobjekts (z. B. eines oder mehrerer Datenblöcke) von einer oder mehreren Speichervorrichtungen 102a, 102b, ...102n in den Zwischenspeicher 108 kann vorteilhafterweise effizienter sein als das Lesen des gesamten Datenobjekts aus der (den) Speichervorrichtung(en) 102a, 102b, ...102n in den Zwischenspeicher 108, insbesondere wenn die gewünschten Daten sich in einem nicht konformen Inoden befinden, da das Lesen einer Teilmenge eines Datenobjekts (z. B. eine kleinere Menge/Anzahl von Daten in der Form eines oder mehrerer Datenblöcke) in den Zwischenspeicher 108, neben anderen Vorteilen, schneller ist, weniger Verarbeitungsaufwand im Zwischenspeicher ist und/oder weniger Bandbreite benötigt als andere Speicherlösungen oder Dienste, welche versuchen, alle Daten in einem Datenobjekt in einen Zwischenspeicher oder einen Cache-Speicher zu lesen, wie im Hintergrund erörtert.
-
In verschiedenen Ausführungsformen schließt die Speichersteuerung 104 eine Funktion zum Durchführen oder Ausführen von E/A-Aufforderungen zum Modifizieren von Datenobjekten (z. B. konformen Inoden und/oder nicht konformen Inoden) von einer oder mehreren Speichervorrichtungen 102 über die Cache-Speichervorrichtung 106 ein. In einigen Ausführungsformen kann ein ganzes Datenobjekt in die Cache-Speichervorrichtung 106 gelesen und modifiziert werden, wenn eine Lese-Schreib-Anfrage innerhalb des nicht-konformen Inoden vorliegt.
-
Die Speichersteuerung 104 kann weiterhin in den Cache-Speichervorrichtungen 106 modifizierte Datenobjekte in eine oder mehrere Speichervorrichtungen 102 neu schreiben, welche das ursprüngliche Datenobjekt in der (den) Speichervorrichtung(en) 102 durch das modifizierte Datenobjekt ersetzen. Das modifizierte/neu geschriebene Datenobjekt kann dann in einer anderen oder mehreren Speichervorrichtungen 102, die der unteren Erläuterung entsprechen, gespiegelt/repliziert werden.
-
In anderen Ausführungsformen kann eine Teilmenge eines Datenobjekts, das Daten einschließt, die geändert werden sollen, in (eine) Cache-Speichervorrichtung(en) 106 aus einem oder mehreren Speichervorrichtungen 102 gelesen und modifiziert/neu geschrieben werden, wenn eine Lese-Schreibaufforderung von Daten eines konformen Inoden oder eines nicht konformen Inoden vorliegt. In verschiedenen Ausführungsformen kann die Speichersteuerung 104 den (die) Datenblock (Datenblöcke) identifizieren, die in Speichervorrichtungen 102 gespeichert sind, einschließlich der Daten, für die eine Modifikation in einer Modifikationsaufforderung gewünscht ist (z B. Lese-Schreibaufforderung). Der(die) identifizierte(n) Datenblock (Datenblöcke) können gelesen werden (z. B. von der/den Speichervorrichtung(en) 102 in die Cache-Speichervorrichtung(en) 106) und anschließend modifiziert/neu geschrieben werden.
-
Ähnlich wie in verschiedenen Ausführungsformen oben besprochen, kann bei Bedarf die Speichersteuerung 104 die LRU-Technik implementieren, um Speicherplatz in der Cache-Speichervorrichtung 106 freizugeben, wenn der Zwischenspeicher 108 voll ist. Beispielsweise kann die Speichersteuerung 104 erkennen, dass der Zwischenspeicher 108 voll ist, und mit dem Entfernen eines oder mehrerer Datenobjekte und/oder eines oder mehrerer Datenblöcke aus dem Zwischenspeicher 108 gemäß der LRU-Technik beginnen, wie anderswo hierin erörtert.
-
In einigen Ausführungsformen kann die Speichersteuerung 104 bestimmen, ob das (die) Datenobjekt(e) und/oder der (die) Datenblock (Datenblöcke), die aus Cache-Speichervorrichtungen 106 gemäß der LRU-Technik entfernt werden sollen, in Speichervorrichtungen 102 geschrieben/gespeichert werden müssen. Zum Beispiel kann die Speichersteuerung 104 das (die) Datenobjekt(e) und/oder das (den) Datenblock (Datenblöcke), die aus einem Zwischenspeicher 108 in die Speichervorrichtung(en) 102 entfernt werden sollen, bevor das (die) Datenobjekt(e) und/oder der Datenblock (Datenblöcke) aus dem Zwischenspeicher 108 entfernt werden, schreiben, die weiterhin das (die) Datenobjekt(e) und/oder den (die) Datenblock (Datenblöcke) einschließen, die in einer oder mehreren anderen Speichervorrichtungen 102 gespiegelt/repliziert werden, wie anderswo hierin erörtert.
-
Der Speichersteuerung 104 kann in einigen Ausführungsformen weiterhin modifizierte/neu geschriebene Datenobjekte und/oder Datenblöcke in Speichervorrichtungen 102 schreiben (oder neu schreiben), nachdem sie in die Cache-Speichervorrichtung(en) 106 modifiziert/neu geschrieben wurden. In verschiedenen Ausführungsformen kann die Speichersteuerung 104 die modifizierten/neu geschriebenen Datenobjekte und/oder Datenblöcke synchron oder asynchron in die Speichervorrichtungen 102 schreiben/neu schreiben, wie anderswo hierin erörtert.
-
Auf diese Weise kann die Speichersteuerung 104 einen oder mehrere Datenblöcke zum Lesen-Schreiben (Pull-Push) einer Teilmenge der Daten, die in einem in Speichervorrichtungen 102 gespeicherten Datenobjekt modifiziert werden sollen, verwenden, anstelle der Technik in anderen Speicherlösungen oder Diensten, welche das gesamte Datenobjekt lesen und eine Teilmenge oder einen kleineren Teil der Daten in dem Datenobjekt schreiben/neu schreiben. Dementsprechend kann die Speichersteuerung 104 in vorteilhafter Weise neben anderen Vorteilen schneller sein, weniger Verarbeitungsaufwand im Zwischenspeicher aufweisen, weniger Bandbreite benötigen als andere Lösungen oder Dienste, wie im Hintergrund erörtert.
-
Die Speichersteuerung 104 kann (eine) Schnittstelle(n) zum Empfangen von Aufforderungen zum Ausführen eines Prozesses oder Verfahrens zum Verwalten von Speichervorgängen in einem Speichersystem (z. B. Speichersystem 100) beinhalten. In verschiedenen Ausführungsformen werden die Speichervorgänge verwaltet, indem eine Programmierschnittstelle (API) für einen oder mehrere der Cache-Speichervorrichtungen 106 verwendet wird, welche hierin als ein API-Cache bezeichnet wird. Die Funktion der Speichersteuerung 104 kann in einigen Ausführungsformen zahlreiche Threads (z. B. eine Vielzahl von Threads, zwei oder mehrere Threads, usw.) oder einen Thread-Pool bereitstellen, die eingerichtet sind, um die oben besprochenen E/A-Vorgänge (z. B. Schreibaufforderungen, Leseaufforderungen und/oder Lese-Schreibaufforderungen) durchzuführen. Dementsprechend kann die Speichersteuerung 104 als eine Multi-Thread-Speichersteuerung in einigen Ausführungsformen bezeichnet werden. In einigen Ausführungsformen kann die Speichersteuerung 104 die Konfiguration (z. B. Aufgabe und/oder Ablauf) jedes Threads definieren, und zahlreiche Threads können bei der Vorbereitung der Cache-Speichervorrichtung 106 gestartet werden.
-
Die Speichersteuerung 104 schließt auch die Funktion ein, einen Cache-Objekteintrag (z. B. ein CacheEntry Object) für jedes in der Cache-Speichervorrichtung 106 empfangene Datenobjekt zu erstellen (z. B. von einem Client (z. B. den Client-Vorrichtungen 50)). Die Anweisung CacheEntry* Create(...) ist ein Beispielcode, der von der Speichersteuerung 104 verwendet werden kann, um ein CacheEntry Object zu erstellen. „...“ in der Klammer dieses Beispiels kann durch eine Darstellung eines Datenobjekts (z. B. einer DataObject ID) in einem aktuellen Cache-Objekteintrag ersetzt werden. Beispielsweise kann ein Cache-Objekteintrag für ein Datenobjekt mit einer DataObject ID 1234567890123456789012345 mit der Anweisung CacheEntry* Create (DataObject ID 1234567890123456789012345) oder einer ähnlichen Codierungslogik erstellt werden, die einen Cache-Objekteintrag in ein Datenobjekt in einer unterschiedlichen Rechensprache implementiert. Dementsprechend kann jedes Datenobjekt mindestens einer CacheEntry ID und einer DataObject ID (z. B. der mindestens zwei Kennungen zugewiesen sind) zugeordnet werden.
-
Die Speichersteuerung 104 kann einen bestimmten Thread einem bestimmten Cache-Objekteintrag unter Anwendung einer Round-Robin-Technik zuweisen, neben anderen Zuweisungstechniken oder -verfahren. Weiterhin kann die Speichersteuerung 104 einen anderen Thread zuweisen, um jeden jeweiligen Cache-Objekteintrag derart zu verwalten, dass ein 1:1 -Verhältnis von Threads zu Cache-Objekteinträgen besteht.
-
Ein Thread funktioniert, um die E/A-Vorgänge für ihre zugewiesenen Cache-Objekteinträge zu verwalten. Das heißt, ein Thread kann E/A-Aufforderungen empfangen und als Antwort darauf die E/A-Vorgänge in den E/A-Aufforderungen für ihren zugewiesenen Cache-Objekteintrag durchführen. Ein Thread kann Schreibaufforderungen, Leseaufforderungen und Lese-Schreibaufforderungen an seinem zugeordneten Cache-Objekteintrag empfangen und, in Antwort darauf, jeweils Schreibvorgänge, Lesevorgänge und Lese-Schreibvorgänge an dem Datenobjekt ausführen, das mit seinem Cache-Objekteintrag übereinstimmt, der den jeweiligen Schreibaufforderungen, Leseaufforderungen und Lese-/Schreibaufforderungen entspricht. Beispiele für eine Schreibaufforderung, eine Leseaufforderung und eine Lese-Schreibaufforderung (z. B. E/A-Aufforderungen) können jeweils wie folgt sein:
- Write(CacheEntry*,(...));
- Read(CacheEntry*,(...)); und
- Read-write(CacheEntry*,(...)),
in dem „...“ in diesen beispielhaften E/A-Vorgängen die Kennung eines aktuellen Cache-Objekteintrags (Datenobjekts) darstellt.
-
Ein Thread kann eine Anzeige oder Bestätigung senden, dass der E/A-Vorgang durchgeführt oder abgeschlossen wurde. Nicht einschränkende Beispiele für eine Anzeige oder Bestätigung, dass ein E/A-Vorgang durchgeführt oder abgeschlossen wurde, sind: eine WriteDone-Bestätigung, eine ReadDone-Bestätigung und eine Read-WriteDone-Bestätigung für einen Schreibvorgang, einen Lesevorgang beziehungsweise einen Lese-Schreibvorgang.
-
Ein Thread kann Datenblöcke verwalten, die ihrem Cache-Objekteintrag (oder Datenobjekt) entsprechen oder diesem zugeordnet sind, falls vorhanden. Das heißt, derselbe Thread, der einen bestimmten Cache-Objekteintrag (oder ein Datenobjekt) verwaltet, verwaltet auch Datenblöcke, die dem bestimmten Datenobjekt entsprechen oder ihm zugeordnet sind. Zum Beispiel verwaltet der Thread, welcher zur Verwaltung eines Cache-Objekteintrags für ein Datenobjekt, das in 10000 Datenblöcke (z. B. Datenblöcke 00001-10000) geteilt ist, zugeordnet ist und die DataObject ID 1234567890123456789012345 einschließt, auch die Datenblöcke, die dem Datenobjekt entsprechen (z. B. die Datenblöcke, denen die DataChunk IDs 1234567890123456789012345-00001-<metadata> über 1234567890123456789012345-10000-<metadata>) zugewiesen ist. Auf diese Weise sind die Speichersteuerung 104 und/oder die Vielzahl von Threads in der Lage, einen oder mehrere Nachteile durch Nebenläufigkeit zu vermeiden oder zumindest zu reduzieren, die auftreten können, wenn die Threads ihre verschiedenen jeweiligen Abläufe oder Aufgaben ausführen.
-
In einigen Ausführungsformen kann die Speichersteuerung 104 Hinweisadressen in den Cache-Objekteinträgen verwenden, um die E/A-Vorgänge für die Threads, die den Cache-Objekteinträgen zugewiesen sind, zuzustellen. Eine Hinweisadresse kann verwendet werden, um jede Schreibaufforderung, Leseaufforderung und Lese-Schreibaufforderung an den Thread, der einem bestimmten Cache-Objekteintrag zugewiesen wurde, zuzustellen, so dass der Thread als Antwort darauf jeden Schreibvorgang, Lesevorgang oder Lese-SchreibVorgang gemäß der verschiedenen obigen Erläuterungen durchführen kann.
-
In verschiedenen Ausführungsformen kann die Speichersteuerung 104 für Redundanz eingerichtet sein, um sicherzustellen, dass Datenobjekte und/oder Datenblöcke in zwei oder mehrere Plätze der Cache-Speichervorrichtungen 106 gespeichert werden können. Die Datenobjekte und/oder Datenblöcke können synchron oder asynchron über eine oder mehrere der Cache-Speichervorrichtungen 106 unter Verwendung irgendeiner(s) geeigneten Redundanz - und/oder Replikationstechnik/-prozesses kopiert werden, die in der Zukunft bekannt oder entwickelt sein werden. Nicht einschränkende Beispiele für diese Replikationstechnik kann einschließen oder zugewiesen werden als: Datenduplizierung, Kopieren von Daten, Datenreplikation, Sichern von Daten und Datenspiegelung, neben anderen beispielhaften Replikationstechniken. Die Datenobjekte und/oder Datenblöcke können in derselben Cache-Speichervorrichtung 106 und/oder über zwei oder mehr Cache-Speichervorrichtungen 106 repliziert werden.
-
Die Speichersteuerung 104 kann weiterhin zum Replizieren der Datenobjekte und/oder Datenblöcke über eine oder mehrere der Speichervorrichtungen 102a, 102b, ...102n eingerichtet sein. Die Datenobjekte und/oder Datenstücke können synchron oder asynchron in eine oder mehrere der Speichervorrichtungen 102 unter Verwendung irgendeiner geeigneten Technik kopiert werden, die in Zukunft bekannt sein oder entwickelt werden wird, wie oben besprochen. Die Datenobjekte und/oder Datenblöcke können in der gleichen Speichervorrichtung 102 und/oder über zwei oder mehr Speichervorrichtungen 102 repliziert werden.
-
2 ist ein Blockdiagramm eines beispielhaften Speichernetzwerkes 20, welches neben anderen Bauteilen eine oder mehrere Client-Vorrichtungen 25 und einen Unternehmensspeicherdienst 50, der über ein drahtgebundenes und/oder drahtloses Netzwerk 75 mit einem Speichersystem 200 verbunden werden oder damit kommunizieren kann, einschließen. Jede Client-Vorrichtung 25 kann jegliche Rechen-Hardware und/oder Software (z. B. einen Thick Client, einen Thin Client oder eine Kombination davon) sein, die in der Lage ist, auf das Speichersystem 200 unter Verwendung des Netzwerkes 75 zuzugreifen. Eine Client-Vorrichtung 25 kann als Teil ihres jeweiligen Betriebsprozesses E/A-Aufforderungen an das Speichersystem 200 senden. Zum Beispiel kann eine Client-Vorrichtung 25 E/A-Aufforderungen zum Lesen, Schreiben, Speichern, Kommunizieren, Verbreiten und/oder zum Senden von Anweisungen, Daten, Computerprogrammen, Software, Codes, Programmen, usw. in das Speichersystem 200 übertragen. Die Client-Vorrichtung(en) 25 und das Speichersystem 200 können zumindest einen Teil eines Client-Server-Modells aufweisen. Im Allgemeinen kann auf das Speichersystem 200 durch die Client-Vorrichtung(en) 25 zugegriffen werden und/oder die Kommunikation mit dem Speichersystem 200 kann durch die Client-Vorrichtung(en) 25 über eine Netzwerkbuchse unter Verwendung einer oder mehrerer prozessübergreifender Netzwerktechniken initiiert werden.
-
Der Unternehmensspeicherdienst 50 kann jeden geeigneten Speicherdienst und/oder jedes geeignete Speichernetzwerk einschließen, die in der Zukunft bekannt oder entwickelt sein werden. Ein beispielhafter Unternehmensspeicherdienst 50 ist der Simple Storage Service (S3), der neben anderen Beispielen von Unternehmensspeicherdiensten von Amazon® Web Services zur Verfügung gestellt wird. In verschiedenen Ausführungsformen kann der Unternehmensspeicherdienst 50 ein Speichersystem bereitstellen, das Datenobjekte speichert, die als ein Objektspeichersystem bezeichnet werden können. Unternehmensspeicherdienst 50 kann in manchen Ausführungsformen Flat-File-Datenobjekte (z. B. nicht hierarchisch) von Containern oder Buckets speichern und kann eindeutige IDs oder Tasten zum Abrufen der Datenobjekte verwenden, obwohl auch andere Variationen möglich und in Betracht gezogen sind. Der Unternehmensspeicherdienst 50 kann in verschiedenen Ausführungsformen eine beliebige Anzahl von Speichervorrichtungen umfassen. Die Speichervorrichtungen können in einigen Ausführungsformen Metadaten verwenden, um Datenobjekte zu speichern und darauf zuzugreifen, und die Metadaten mit ihrem entsprechenden Datenobjekt ähnlich den oben erläuterten Speichervorrichtungen 102a, 102b, ...102n speichern. Dementsprechend kann der Unternehmensspeicherdienst 50 in ähnlicher Weise wie die oben erläuterten Speichervorrichtungen 102 funktionieren und/oder arbeiten und kann auf das Netzwerk 20 und/oder das Speichersystem 200 angewendet werden.
-
Wie gezeigt, kann das Speichersystem 200 neben anderen Bauteilen eine Speichersteuerung 204 mit einem oder mehreren Cache-Speichervorrichtungen 206, ähnlich der Speichersteuerung 104 beziehungsweise der (den) Cache-Speichervorrichtung(en) 106 in Speichersystem 100, aufweisen, obwohl andere geeignete Konfigurationen ebenfalls anwendbar und in Betracht gezogen sind. Speichersteuerung 204 und Speichervorrichtung(en) 206 sind in der Lage, mit der (den) Client-Vorrichtung(en) 25 und Unternehmensspeicherdienst 50 über das Netzwerk 75 verbunden zu werden und damit zu kommunizieren. In verschiedenen Ausführungsformen kann die Speichersteuerung 204 zwischen der/den Client-Vorrichtung(en) 25 und Cache-Speichervorrichtung(en) 206 verbunden sein.
-
Netzwerk 75 kann in verschiedenen Ausführungsformen jegliche Art von Rechennetzwerk(en) aufweisen, die in der Zukunft bekannt oder entwickelt sein werden, die es Client-Vorrichtungen 25, Unternehmensspeicherdienst 50 und Speichersystem 200 ermöglichen, mit Ressourcen zu kommunizieren und/oder diese gemeinsam zu nutzen. Nicht einschränkende Beispiele eines Netzwerks beinhalten, sind jedoch nicht beschränkt auf, ein Cloud-Netzwerk (IAN), ein SAN (z. B. ein Speicherbereichsnetzwerk, ein Small Area Network, ein Server Area Network und/oder ein System Area Network), ein WAN (Wide Area Network), ein LAN (Local Area Network), ein WLAN (Wireless Local Area Network), ein MAN (Metropolitan Area Network), ein EPN (Enterprise Private Network), ein VPN (Virtual Private Network) und/oder ein Personal Area Network (PAN) neben anderen Beispielen für Computernetzwerke und/oder Sätzen von Computergeräten, die zum Zweck der gemeinsamen Nutzung von Ressourcen miteinander verbunden sind.
-
Die verschiedenen Ausführungsformen des Netzwerks 20 kann Hardware und/oder Software einschließen, die Netzwerk 20 erlauben, in ähnlicher Weise wie mit Netzwerk 10 zu arbeiten, welches oben mit Bezug auf die 1A und 1B besprochen wurde. Zusätzlich kann Netzwerk 20 einen externen Speicherdienst aufweisen (z. B. Unternehmensspeicherdienst 50 kann Langzeitspeichervorgänge und Datenreplikation von Datenobjekten und/oder Datenblöcken bereitstellen). Weitere Implementierungen können eine Kombination von Netzwerk 20 und Netzwerk 10 und/oder Ausführungsformen davon einschließen, wie ein Netzwerk mit einem oder mehreren externen Speicherdiensten und einer oder mehreren lokalen oder Remote-Speichervorrichtungen, die jeweils eine langfristige Speicherung und Datenreplikation von Datenobjekten und/oder Datenblöcken bereitstellen.
-
In einigen Ausführungsformen können sich in dem Netzwerk 10 und/oder dem Netzwerk 20 eine oder mehrere der Client-Vorrichtungen 25 nicht wissen, ob sie ein Teil des Netzwerks 10 oder des Netzwerks 20 sind. Das heißt, die Abläufe des Speichersystems 100 und/oder 200 können unbekannt sein oder von einer oder mehreren der Client-Vorrichtungen 25 nicht gesehen werden (transparent sein), obwohl in weiteren Implementierungen einige oder alle Client-Vorrichtungen 25 wissen, ob sie zu Netzwerk 10 und/oder Netzwerk 20 gehören.
-
3A bis 3C sind ein Flussdiagramm von beispielhaften Prozessen für eine Speichersteuerung (z. B. Speichersteuerung 104 und/oder 204), um die Speicherung gemäß verschiedenen Ausführungsformen zu verwalten. Zumindest in der veranschaulichten Ausführungsform kann Vorgang 301 (z. B. ein Schreibvorgang) zum Zeitpunkt 1 (T1) mit der Herstellung einer Kennung eines Datenobjekts und/oder den zugehörigen Kennungen des Datenblocks (z. B. durch die Speichersteuerungseinheit 104 oder 204 (z. B. über ein Cache-API)) für ein empfangenes (und geteiltes/partitioniertes) Datenobjekt in einem Speichersystem (z. B. Speichersystem 100 oder 200), dessen Datenobjektkennung und/oder Datenblockkennungen gemäß den verschiedenen oben besprochenen Arten zugeordnet werden können, beginnen. Zum Zeitpunkt 2 (T2) kann gemäß der obigen verschiedenen Erläuterungen ein neuer Cache-Objekteintrag (z. B. CacheEntry) entsprechend dem Datenobjekt und/oder den Datenblöcken erzeugt werden (z. B. durch die Speichersteuerung 104 oder 204 (z. B. über den API-Cache)).
-
Zum Zeitpunkt 3 (T3) kann ein Thread (z. B. von der Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)) dem Cache-Objekteintrag zugewiesen werden. Die Zuordnung des Threads zu dem Cache-Objekteintrag kann das Ergebnis einer Zuweisungstechnik sein (z. B. einer Round-Robin-Zuweisungstechnik, neben anderen beispielhaften Zuweisungstechniken). Der Thread dient zum Verwalten von E/A-Abläufen für den Cache-Objekteintrag. Das heißt, der Thread kann E/A-Aufforderungen empfangen (z. B. Schreibaufforderungen, Leseaufforderungen und Lese-Schreibaufforderungen) und kann als Antwort auf E/A-Aufforderungen die E/A-Abläufe (z. B. Schreibaufforderungen, Leseaufforderungen und Lese-Schreibaufforderungen) in den E/A-Aufforderungen durchführen.
-
Zum Zeitpunkt 4 (T4) kann eine E/A-Aufforderung (z. B. in diesem Beispiel eine Schreibaufforderung) für einen bestimmten Cache-Objekteintrag (Datenobjekt) empfangen werden (z. B. von Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)). Zum Zeitpunkt 5 (T5) kann die E/A-Aufforderung (z. B. die Schreibaufforderung in diesem Beispiel) an den Thread, der dem bestimmten Cache-Objekteintrag (Datenobjekt) zugewiesen ist, geleitet werden (z. B. über eine Hinweisadresse), und der zugewiesene Thread kann die E/A-Abläufe (z. B. Schreibvorgänge in diesem Beispiel) auf dem Cache-Objekteintrag ausführen.
-
Zum Zeitpunkt 6 (T6) kann nach Abschluss der E/A-Abläufe (z. B. Schreibvorgänge in diesem Beispiel) der Thread die Ausführung der E/A-Aufforderung (z. B. Schreibaufforderung in diesem Beispiel) in der Speichersteuerung (z. B. Speichersteuerung 104 oder 204 (z. B. über ein API-Cache)) bestätigen (z. B. eine WriteDone Bestätigung in diesem Beispiel).
-
Außerdem können die Abläufe von Zeitpunkt 1 bis Zeitpunkt 6 für eine E/A-Aufforderung, die an der Speichersteuerung (z. B. Speichersteuerung 104 oder 204) für jeden anderen (z. B. neuen) Cache-Objekteintrag (z. B. ein unterschiedliches Datenobjekt und/oder unterschiedliche entsprechende Datenblöcke) empfangen wurde, wiederholt werden. Die Abläufe von Zeitpunkt 4 bis Zeitpunkt 6 können für jede E/A-Aufforderung, die an der Speichersteuerung (z. B. Speichersteuerung 104 oder 204) für den unterschiedlichen Cache-Objekteintrag (z. B. verschiedene Datenobjekte und/oder unterschiedliche entsprechende Datenblöcke) empfangen wurde, wiederholt werden.
-
Zum Zeitpunkt 4 (T4) kann eine E/A-Aufforderung (z. B. in diesem Beispiel eine Schreibaufforderung) für einen bestimmten Cache-Objekteintrag (Datenobjekt) empfangen werden (z. B. von Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)). Zum Zeitpunkt 5 (T5) kann die E/A-Aufforderung (z. B. die Schreibaufforderung in diesem Beispiel) an den Thread, der dem bestimmten Cache-Objekteintrag (Datenobjekt) zugewiesen ist, geleitet werden (z. B. über eine Hinweisadresse), und der zugewiesene Thread kann die E/A-Abläufe (z. B. Schreibvorgänge in diesem Beispiel) auf dem Cache-Objekteintrag ausführen. Zum Zeitpunkt 6 (T6) kann nach Abschluss der E/A-Abläufe (z. B. Schreibvorgänge in diesem Beispiel) der Thread die Ausführung der E/A-Aufforderung (z. B. Schreibaufforderung in diesem Beispiel) in der Speichersteuerung (z. B. Speichersteuerung 104 oder 204 (z. B. über ein API-Cache)) bestätigen (z. B. eine WriteDone Bestätigung in diesem Beispiel).
-
Außerdem können die Abläufe von Zeitpunkt 1 bis Zeitpunkt 6 für eine E/A-Aufforderung, die an der Speichersteuerung (z. B. Speichersteuerung 104 oder 204) für jeden anderen (z. B. neuen) Cache-Objekteintrag (z. B. ein unterschiedliches Datenobjekt und/oder unterschiedliche entsprechende Datenblöcke) empfangen wurde, wiederholt werden. Darüber hinaus können die Abläufe von Zeitpunkt 4 bis Zeitpunkt 6 für jede E/A-Aufforderung, die an der Speichersteuerung (z. B. Speichersteuerung 104 oder 204) für den unterschiedlichen Cache-Objekteintrag (z. B. verschiedene Datenobjekte und/oder unterschiedliche entsprechende Datenblöcke) empfangen wurde, wiederholt werden.
-
In 3B können die Vorgänge 302 (z. B. Lesevorgänge) zum Zeitpunkt 1 (T1) mit dem Empfang (z. B. durch die Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)) einer E/A-Aufforderung (z. B. Leseaufforderung in diesem Beispiel) für einen bestimmten Cache-Objekteintrag (Datenobjekt) beginnen. Die E/A-Aufforderung (z. B. die Leseaufforderung in diesem Beispiel) kann (z. B. über eine Hinweisadresse) an den Thread geleitet werden, der dem bestimmten Cache-Objekteintrag (Datenobjekt) zugeordnet ist, und der zugewiesene Thread kann die E/A-Abläufe (z. B. Lesevorgänge in diesem Beispiel) auf dem Cache-Objekteintrag zum Zeitpunkt 2 (T2) durchführen.
-
Nach Abschluss der E/A-Abläufe (z. B. Lesevorgänge in diesem Beispiel) kann der Thread zum Zeitpunkt 3 (T3) die Ausführung der E/A-Aufforderung (z. B. Leseaufforderung in diesem Beispiel) in der Speichersteuerung (z. B. Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)) bestätigen (z. B. eine ReadDone-Bestätigung in diesem Beispiel). Die Abläufe von Zeitpunkt 1 bis 3 können für jede Leseaufforderung wiederholt werden, die in der Speichersteuerung (z B. Speichersteuerung 104 oder 204) nach Zeitpunkt 3 empfangen wird.
-
In 3C können die Vorgänge 303 (z. B. Lese-Schreibvorgänge) zum Zeitpunkt 1 (T1) mit dem Empfang (z. B. durch die Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)) einer E/A-Aufforderung (z. B. Lese-Schreib-Aufforderung in diesem Beispiel) für einen bestimmten Cache-Objekteintrag (Datenobjekt) beginnen. Die E/A-Aufforderung (z. B. die Lese-Schreib-Aufforderung in diesem Beispiel) kann (z. B. über eine Hinweisadresse) an den Thread geleitet werden, der dem bestimmten Cache-Objekteintrag (Datenobjekt) zugeordnet ist, und der zugewiesene Thread kann die E/A-Abläufe (z. B. Lese-Schreib-Vorgänge in diesem Beispiel) auf dem Cache-Objekteintrag zum Zeitpunkt 2 (T2) durchführen.
-
Nach Abschluss der E/A-Abläufe (z. B. Lese-Schreib-Vorgänge in diesem Beispiel) kann der Thread zum Zeitpunkt 3 (T3) die Ausführung der E/A-Aufforderung (z. B. Lese-Schreib-Aufforderung in diesem Beispiel) in der Speichersteuerung (z. B. Speichersteuerung 104 oder 204 (z. B. über ein Cache-API)) bestätigen (z. B. eine Read-WriteDone-Bestätigung in diesem Beispiel). Die Abläufe von Zeitpunkt 1 bis 3 können für jede Lese-Schreib-Aufforderung wiederholt werden, die in der Speichersteuerung (z B. Speichersteuerung 104 oder 204) nach Zeitpunkt 3 empfangen wird.
-
In den Beispielen der 3A bis 3C können nach Abschluss der E/A-Abläufe (z. B. Schreibvorgänge, Lesevorgänge, Lese-Schreib-Vorgänge), die in dem jeweiligen Beispiel besprochen wurden, nachfolgende E/A-Aufforderungen von den Threads (z. B. Threads 1, 2 bis n) gemäß 3A bis 3C durchgeführt werden. Das heißt, in Anschluss an eine Thread-Bestätigung (z. B. eine WriteDone-Bestätigung, eine ReadDone-Bestätigung oder eine Read-WriteDone-Bestätigung) kann eine nächste E/A-Aufforderung, welche derselbe Typ E-A/Aufforderung oder eine unterschiedliche E/A-Aufforderung sein kann, von der Speichersteuerung empfangen werden und von einem der Threads 1, 2 bis n durchgeführt werden.
-
Gemäß 4 ist ein Diagramm 400 dargestellt, das beispielhafte Speichervorgänge eines Speichersystems (z. B. des Speichersystems 100 oder 200) veranschaulicht. Wie gezeigt, kann ein neu empfangenes Datenobjekt mit einem Inoden (z. B. einem nicht konformen Inoden oder einem konformen Inoden) versehen sein, dem (gemäß den verschiedenen oben erläuterten Ausführungsformen) eine Datenobjektskennung zum Zeitpunkt 1 (T1) zugewiesen werden kann. Zeitpunkt 1 kann ferner das Teilen jedes Datenobjekts in eine Vielzahl von Datenblöcken beinhalten (z. B. eine Menge von Datenblöcken in der Größenordnung von 1 Datenblock bis 10000 Datenblöcken, neben anderen beispielhaften Bereichen und/oder Mengen), wobei jedem eine jeweilige Datenblockkennung (gemäß der verschiedenen oben besprochenen Ausführungsformen) zugeordnet ist. Die Inoden können in einem Dateibaum organisiert sein, der eine hierarchische Ordnung aufweist (z. B. ein mehrfach verzweigtes oder mehrstufiges System (z. B. drei Ebenen) durch die Speichersteuerung 104/204 gemäß den verschiedenen oben besprochenen Ausführungsformen).
-
Zum Zeitpunkt 2 (T2) kann für jeden Inoden in einer Cache-Speichervorrichtung 106/206 ein Cache-Objekteintrag erzeugt werden (gemäß der verschiedenen oben beschriebenen Ausführungsformen), so dass jeder Inode mit einem entsprechenden Cache-Objekteintrag verbunden ist. Mit anderen Worten kann jeder Cache-Objekteintrag einem unterschiedlichen Datenobjekt und seinen entsprechenden Datenblöcken, falls vorhanden, entsprechen.
-
Jeder Datenblock kann zum Zeitpunkt 3 (T3) in einen Zwischenspeicher 108/208 in der Cache-Speichervorrichtung 106/206 geschrieben und zum Zeitpunkt 4 (T4) nachfolgend in eine oder mehrere Speichervorrichtungen und/oder einen Unternehmensspeicherdienst geschrieben (z. B. gespeichert) werden. In einigen Ausführungsformen können die Schreibdatenblöcke kontinuierlich auf den Zwischenspeicher 108/208 übertragen werden, bis der Zwischenspeicher 108/208 voll oder im Wesentlichen voll ist. Sobald der Zwischenspeicher 108/208 voll ist, kann eine LRU-Technik angewandt werden, um Platz freizugeben oder Platz in dem Zwischenspeicher 108/208 zu machen, so dass die Datenblöcke weiterhin in den Zwischenspeicher 108/208 geschrieben werden können. Das heißt, die in dem Zwischenspeicher 108/208 am längsten gespeicherten Daten können in den Langzeitspeicher und/oder Unternehmensspeicherdienst 75 geschrieben, aus dem Zwischenspeicher 108/208 gelöscht und durch die verbleibenden Datenblöcke in dem Zwischenspeicher 108/208 ersetzt werden. Die LRU-Technik kann in einigen Fällen das Schreiben (oder Neuschreiben) von Datenblöcken in den Langzeitspeicher vor dem Löschen/Entfernen des (der) Datenblocks (Datenblöcke) aus dem Zwischenspeicher 108/208 unterlassen, wenn der (die) Datenblock (Datenblöcke) bereits in einen Langzeitspeicher (z. B. Speichervorrichtung(en) 102, Unternehmensspeicherdienst 50, usw.) geschrieben/neu geschrieben werden (z. B. darin gespeichert). Auf diese Weise können die Datenblöcke durch das Speichersystem (z. B. Cache-Speichervorrichtung) für eine langfristige Speicherung geschoben werden.
-
Datenblöcke können vom Langzeitspeicher in den Zwischenspeicher 108/208 zum Zeitpunkt 5 (T5) gelesen werden. In einigen Ausführungsformen können die Schreibdatenblöcke kontinuierlich in den Zwischenspeicher gelesen werden, bis der Zwischenspeicher 108/208 voll ist. Sobald der Zwischenspeicher 108/208 voll ist, kann die LRU-Technik angewandt werden, um Platz freizugeben oder Platz in dem Zwischenspeicher 108/208 zu machen, so dass die Datenblöcke weiterhin in den Zwischenspeicher 108/208 geschrieben werden können. Auf diese Weise können die Datenblöcke aus dem Langzeitspeicher gezogen werden.
-
Zum Zeitpunkt 6 (T6) können ein oder mehrere Datenblöcke, die aus dem Langzeitspeicher zum Zeitpunkt 5 gelesen werden, modifiziert und nachfolgend in die Cache-Speichervorrichtung 106/206 (z. B. Zwischenspeicher 108/208) gemäß den Lese-SchreibVorgängen neu geschrieben werden. Der (Die) neu geschriebene(n) Datenblock (Datenblöcke) kann (können) zum Zeitpunkt 7 (T7) in einen Langzeitspeicher geschrieben (neu geschrieben) werden. In einer Situation, in der ein neu in den Zwischenspeicher geschriebener Datenblock ein LRU-Datenblock wird und noch nicht in den Langzeitspeicher geschrieben (neu geschrieben) ist, kann der neu geschriebene Datenblock vor dem Löschen/Entfernen aus dem Zwischenspeicher 108/208 in den Langzeitspeicher geschrieben (neu geschrieben) werden.
-
Zu verschiedenen Zeitpunkten (dargestellt als Zeit! (z. B. T!)) können die Datenobjekte und/oder Datenblöcke in dem Langzeitspeicher in einen anderen Langzeitspeicherplatz repliziert oder gespiegelt werden. Das (Die) Datenobjekt(e) und/oder der (die) Datenblock (Datenblöcke) können synchron oder asynchron repliziert/gespiegelt werden, wenn das (die) Datenobjekt(e) und/oder der (die) Datenblock (Datenblöcke) in einen Langzeitspeicher geschrieben (neu geschrieben) werden. Folglich kann T! einen beliebigen Zeitpunkt, der gleichzeitig oder nach dem Zeitpunkt 4, einschließlich eines nachfolgenden Zeitpunktes bis Zeitpunkt 7 erfolgt, darstellen.
-
Bezugnehmend nun auf die 5A bis 5G ist 5A ein Blockdiagramm, das ein Beispiel 500 veranschaulicht, das eine Vielzahl von Datenblöcken darstellt (z. B. Datenblöcke 510a bis 510d), die in Anfangspositionen (z. B. Positionen 512a bis 512d) einer LRU-Technik dargestellt sind. Diese Ausführungsform schließt vier Datenblöcke ein (z. B. Datenblöcke 510a bis 510d, welche in ihrer Gesamtheit als Datenblöcke 510 bezeichnet werden), obwohl weitere Ausführungsformen andere Mengen von Datenblöcken 510 (z. B. zwei oder mehrere Datenblöcke) einschließen können. In Beispiel 500 ist die am weitesten links dargestellte Position 512a (z. B. die ursprünglich von dem Datenblock 510a belegte Position) die zuletzt verwendete (MRU-)Position, und die am weitesten rechts dargestellte Position 512d (z. B. die ursprünglich von dem Datenblock 510d belegte Position) ist die LRU-Position, wobei die Positionen 512b und 512c Zwischenpositionen sind (z. B. LRU+2 beziehungsweise LRU+1) und ursprünglich von dem Datenblock 510b beziehungsweise von dem Datenblock 510c belegt sind).
-
In verschiedenen Ausführungsformen kann sich jedes Mal, wenn auf einen der Datenblöcke 510 zugegriffen wird (z. B. vorbehaltlich eines E-/A-Ablaufs (z. B. eines Schreibvorgangs, eines Lesevorgangs oder eines Lese-Schreibvorgangs) der Datenblock, auf den zugegriffen wird, zu einer Position 512a (z. B. der MRU-Position) bewegen und die verbleibenden Datenblöcke können sich nach Bedarf um eine Position nach rechts in Richtung der LRU-Position (z. B. Position 512d) bewegen. Die folgenden Beispiele in den 5B bis 5G sind mit fortgesetzter Bezugnahme auf 5A erstellt und können mehr Einsicht und Verständnis der verschiedenen hierin besprochenen LRU-Techniken hervorrufen; Jedoch sind die verschiedenen hier beschriebenen LRU-Techniken nicht auf die Beispiele in den 5A bis 5G beschränkt.
-
Beispiel 501 in 5B: Es wird auf den Datenblock 510b zugegriffen, was dazu führt, dass der Datenblock 510b von Position 512b zu Position 512a bewegt wird, wobei der Datenblock 510a von Position 512a zu 512b bewegt wird, und die Datenblöcke 510c und 510d verbleiben in den Positionen 512c beziehungsweise 512d.
-
Beispiel 502 in 5C: Es wird auf den Datenblock 510c zugegriffen, was dazu führt, dass der Datenblock 510c von Position 512c zu Position 512a bewegt wird, wobei der Datenblock 510a von Position 512a zu Position 512b bewegt wird, der Datenblock 510b von Position 512b zu Position 512c bewegt wird, und der Datenblock 510d in Position 512d verbleibt.
-
Beispiel 503 in 5D: Es wird auf den Datenblock 510d zugegriffen, was dazu führt, dass der Datenblock 510d von Position 512d zu Position 512a bewegt wird, wobei der Datenblock 510a von Position 512a zu 512b bewegt wird, der Datenblock 510b von Position 512b zu Position 512c bewegt wird, und der Datenblock 510c von Position 512c zu Position 512d bewegt wird.
-
Beispiel 504 in 5E: Es wird auf den Datenblock 510a zugegriffen, was dazu führt, dass die Datenblöcke 510a, 510b, 510c und 510d in den Positionen 510, 512b, 512c beziehungsweise 512d verbleiben.
-
Beispiel 505 in 5F: Es wird auf den Datenblock 510c zugegriffen, was dazu führt, dass der Datenblock 510c von Position 512c zu Position 512a bewegt wird, wobei der Datenblock 510a von Position 512a zu 512b bewegt wird, der Datenblock 510b von Position 512b zu Position 512c bewegt wird, und der Datenblock 510d in Position 512d verbleibt. Danach wird auf den Datenblock 510d zugegriffen, was dazu führt, dass der Datenblock 510d von Position 512d zu Position 512a bewegt wird, wobei der Datenblock 510c von Position 512a zu 512b bewegt wird, der Datenblock 510a von Position 512b zu Position 512c bewegt wird, und der Datenblock 510b von Position 512c zu Position 512d bewegt wird.
-
Beispiel 506 in 5E: Wenn auf einen neuen Datenblock (z. B. Datenblock 510e) zugegriffen wird, ersetzt der Datenblock 510e den Datenblock in der MRU-Position (Datenblock 510a in Position 512a in dem dargestellten Beispiel in Diagramm 500 von 5), wobei der Datenblock in der LRU-Position (z. B. Datenblock 510d in Position 512d in 5) aus dem Zwischenspeicher (z. B. Zwischenspeicher 108) gelöscht oder entfernt wird. Ferner werden die anderen Datenblöcke (z. B. Datenblöcke 510a, 510b und 510c in 5) jeweils eine Position nach rechts oder eine Position näher zu der LRU-Position (Position 512d in 5) bewegt. Insbesondere wird Datenblock 510a von Position 512a zu 512b bewegt, Datenblock 510b wird von Position 512b zu Position 512c bewegt, und Datenblock 510c wird von Position 512c zu Position 512d bewegt.
-
Beispiel 507 in 5F: Ein nachfolgender Datenblock, auf den neu zugegriffen wurde (z. B. Datenblock 510f), würde zur Folge haben, dass Datenblock 510f in die MRU-Position (z. B. Position 512a) bewegt, Datenblock 510c gelöscht/entfernt, und die Datenblöcke 510e, 510a und 510b in die Positionen 512b, 512c, und 512d bewegt werden. 5 G ist weiterhin ein veranschaulichendes Beispiel der 5F, in dem auf Datenblock 510b im Anschluss an Datenblock 510f zugegriffen wird, Datenblock 510b wird aus der LRU-Position (z. B. Position 512d) in die MRU-Position (z. B. Position 512a) bewegt, Datenblock 510f wird in Position 512b bewegt, Datenblock 510e wird in Position 512c bewegt, und Datenblock 510a wird in die LRU-Position (z. B. Position 512d) bewegt.
-
Mit Bezug auf 6 wird ein beispielhaftes Verfahren 600 veranschaulicht, in dem ein Datenobjekt in einen Zwischenspeicher 108/208 einer Cache-Speichervorrichtung 106/206 geschrieben wird. Wie gezeigt, kann das Verfahren 600 beginnen, indem es durch eine Speichersteuerung 104/204 eine E/A-Aufforderung (z. B. eine Schreibaufforderung) empfängt, um ein Datenobjekt zu speichern (Block 602), und kann die Größe des Datenobjekts (Block 604) bestimmen.
-
Die Datenobjektgröße kann mit einer Speicherschwelle und/oder der Größe eines Zwischenspeichers 108/208 verglichen werden, um zu bestimmen, ob die Datenobjektgröße größer als die Speicherschwelle und/oder Puffergröße ist (Block 606). Falls/wenn die Datenobjektgröße kleiner als die Speicherschwelle und/oder die Puffergröße ist (z. B. ein NO in Block 606), kann das Datenobjekt als ein konformes Datenobjekt bestimmt werden und in seiner Gesamtheit (Block 608) in den Zwischenspeicher 108/208 geschrieben werden. Das konforme Datenobjekt kann anschließend in eine oder mehrere der Speichervorrichtungen 102 und/oder Unternehmensspeicherdienst 50 (Block 620) geschrieben werden.
-
Falls/wenn die Datenobjektgröße größer als die Puffergröße ist (z. B. ein YES in Block 606), kann das Datenobjekt als ein nicht konformes Datenobjekt bestimmt werden und in eine Vielzahl von Datenblöcken geteilt (partitioniert) werden (Block 610). Das Datenobjekt kann in eine beliebige gewünschte Anzahl von Datenblöcken geteilt werden, und jeder Datenblock kann jede Größe beinhalten, die zur Speicherung in dem Zwischenspeicher 108/208, einem oder mehreren der Speichervorrichtungen 102 und/oder dem Unternehmensspeicherdienst 50 geeignet ist, wie anderswo hierin erörtert.
-
Verfahren 600 kann weiterhin die Bestimmung beinhalten, ob der Zwischenspeicher 108/208 verfügbar ist, um einen Datenblock (Block 612) zu speichern (zwischenzuspeichern). Zwischenspeicher 108/208 kann als verfügbar angesehen werden, falls/wenn der Zwischenspeicher nicht voll ist; andernfalls kann der Zwischenspeicher 108/208 als nicht verfügbar betrachtet werden.
-
Falls/wenn der Zwischenspeicher 108/208 nicht verfügbar ist (z. B. ein NO in Block 612), können ein oder mehrere Datenobjekte und/oder ein oder mehrere im Zwischenspeicher 108/208 gespeicherte Datenblöcke in einen oder mehrere der Speichervorrichtungen 102 und/oder den Unternehmensspeicherdienst 50 geschrieben werden, um Platz im Zwischenspeicher 108/208 (Block 614) freizugeben, und die Verfügbarkeit von Zwischenspeicher 108/208 kann neuerlich bestimmt werden (Block 612). In verschiedenen Ausführungsformen kann der Platz in dem Zwischenspeicher 108/208 frei gemacht werden, indem ein oder mehrere Datenblöcke durch den Zwischenspeicher 108/208 unter Verwendung einer LRU-Technik geschoben werden, wie an anderer Stelle hierin erörtert. Falls/wenn der Zwischenspeicher 108/208 verfügbar ist (z. B. ein JA in Block 612), können ein oder mehrere Datenblöcke in den Zwischenspeicher 108/208 (Block 616) geschrieben werden.
-
Verfahren 600 kann weiterhin die Bestimmung beinhalten, ob/wann es einen oder mehrere verbleibende Datenblöcke in dem Datenobjekt gibt, die in den Zwischenspeicher 108/208 (Block 618) geschrieben werden müssen. Wenn es mindestens einen verbleibenden Datenblock gibt, der in den Zwischenspeicher 108/208 geschrieben werden muss (z. B. ein JA in Block 618), kann die Verfügbarkeit des Zwischenspeichers 108/208 bestimmt werden (Block 612), und Blöcke 612 bis 618 können wiederholt werden, bis keine weiteren Datenblöcke in den Zwischenspeicher 108/208 geschrieben werden müssen.
-
Wenn es keine weiteren Datenblöcke gibt, die in den Zwischenspeicher 108/208 geschrieben werden müssen (z. B. ein NEIN in Block 618), kann ein Datenblock, der nicht in den Speichervorrichtungen 102 oder dem Unternehmensspeicherdienst 50 gespeichert ist, in die Speichervorrichtungen 102 und/oder den Unternehmensspeicherdienst 50 (Block 620) geschrieben werden. In einigen Ausführungsformen kann (können) jegliche(r) verbleibende(n) Datenblock (Datenblöcke) in die Speichervorrichtungen 102 oder den Unternehmensspeicherdienst 50 unmittelbar nach oder innerhalb eines kurzen Zeitraums nach Modifizierung geschrieben werden, während in anderen Ausführungsformen jegliche(r) verbleibende(r) Datenblock (Datenblöcke) in die Speichervorrichtungen 102 oder Unternehmensspeicherdienst 50 nach oder zu einer vorbestimmten Zeit zur Modifikation geschrieben werden kann (können). Ein oder einige verbleibende Datenblöcke können gemäß einer LRU-Technik in die Speichervorrichtungen 102 und/oder den Unternehmensspeicherdienst 50 geschrieben werden.
-
Bezugnehmend nun auf 7 wird ein beispielhaftes Verfahren 700 zum Lesen eines Datenobjekts in Speichervorrichtungen 102 oder dem Unternehmensspeicherdienst 50 in einen Zwischenspeicher 108/208 einer Cache-Speichervorrichtung 106/206 veranschaulicht. Wie gezeigt, kann das Verfahren 700 beginnen, indem es durch eine Speichersteuerung 104/ 204 eine E/A-Aufforderung (z. B. eine Schreibaufforderung) empfängt, um Daten in ein Datenobjekt (Block 702) zu lesen und einen oder mehrere Datenblöcke in den Speichervorrichtungen 102a, 102b, ...102n und/oder Unternehmensdatendienst 50, welche die Daten beinhalten (Block 704), zu bestimmen. In einigen Ausführungsformen können die Datenblöcke die Daten einschließen, die gelesen werden oder in derselben oder in verschiedenen Speichervorrichtungen 102 gespeichert oder positioniert werden sollen, wie an anderer Stelle hierin erörtert.
-
Verfahren 700 kann weiterhin die Bestimmung beinhalten, ob Zwischenspeicher 108/208, in den der (die) Datenblock (Datenblöcke) gelesen werden sollen, verfügbar ist (sind), um den (die) Datenblock (Datenblöcke) (Block 706) zu speichern (zwischenzuspeichern). Zwischenspeicher 108/208 kann als verfügbar angesehen werden, falls/wenn der Zwischenspeicher nicht voll ist; andernfalls kann der Zwischenspeicher 108/208 als nicht verfügbar betrachtet werden.
-
Falls/wenn der Zwischenspeicher 108/208 nicht verfügbar ist (z. B. ein NO in Block 706), können ein oder mehrere Datenobjekte und/oder ein oder mehrere im Zwischenspeicher 108/208 gespeicherte Datenblöcke aus dem Zwischenspeicher 108/208 gelöscht werden, um Platz im Zwischenspeicher 108/208 (Block 708) freizugeben, und die Verfügbarkeit von Zwischenspeicher 108/208 kann neuerlich bestimmt werden (Block 706). In verschiedenen Ausführungsformen kann im Zwischenspeicher 108/208 durch Löschen eines oder mehrerer Datenobjekte und/oder Datenblöcke aus dem Zwischenspeicher 108/208 unter Verwendung einer LRU-Technik, wie anderswo hierin erörtert, Platz frei gemacht werden. Das Löschen eines oder mehrerer Datenobjekte und/oder Datenblöcke aus dem Zwischenspeicher 108/208 kann weiterhin das Schreiben jedes Datenobjekts und/oder Datenblocks in die Speichervorrichtung(en) 102 und/oder den Unternehmensspeicherdienst 50 einschließen, das darin nicht gespeichert ist oder nicht zuvor in die Speichervorrichtungen 102 und/oder den Unternehmensspeicherdienst 50 vor dem Entfernen geschrieben worden ist.
-
Falls/wenn Pufferspeicher 108/208 verfügbar ist (z. B. ein YES in Block 612), können ein oder mehrere Datenblöcke, die mindestens einen Teil der gewünschten Daten beinhalten, in den Zwischenspeicher 108/208 (Block 710) gelesen werden. Verfahren 700 kann ferner die Bestimmung beinhalten, ob/wann es einen oder mehrere verbleibende Datenblöcke gibt, die zumindest einen Teil der gewünschten Daten einschließen, die in den Zwischenspeicher 108/208 (Block 712) gelesen werden müssen.
-
Falls/wenn es zumindest einen verbleibenden Datenblock gibt, der in den Zwischenspeicher 108/208 gelesen werden muss (z. B. ein YES in Block 712), kann die Verfügbarkeit des Zwischenspeichers 108/208 bestimmt werden (Block 706) und Blöcke 706 bis 712 können wiederholt werden, bis es keine verbleibenden Datenblöcke mehr gibt, welche die gewünschten Daten, die in den Zwischenspeicher 108/208 gelesen werden müssen, (z. B. ein NO in Block 712), einschließen. Verfahren 700 kann weiterhin das Warten auf eine nachfolgende E/A-Aufforderung (Block 714) beinhalten und kann Block 702 bis 714 wiederholen, je nach Bedarf und/oder wie gewünscht.
-
Unter Bezugnahme nun auf 8 wird ein beispielhaftes Verfahren 800 zum Modifizieren von Daten eines Datenobjekts in Speichervorrichtung(en) 102 oder einem Unternehmensspeicherdienst 50 veranschaulicht. Wie gezeigt, kann das Verfahren 800 beginnen, indem es durch eine Speichersteuerung 104/204 eine E/A-Aufforderung (z. B. eine Lese-Schreibaufforderung) empfängt, um Daten in einem Datenobjekt (Block 802) zu modifizieren und einen oder mehrere Datenblöcke in den Speichervorrichtungen 102 und/oder Unternehmensdatendienst 50, welche die gewünschten Daten beinhalten (Block 804), zu bestimmen. In einigen Ausführungsformen können die Datenblöcke die Daten, die modifiziert werden sollen, in derselben oder in verschiedenen Speichervorrichtungen 102 gespeichert oder positioniert sein, wie an anderer Stelle hierin erörtert.
-
Verfahren 800 kann weiterhin die Bestimmung beinhalten, ob ein Zwischenspeicher 108/208 von einer Cache-Speichervorrichtung 106/206, in welche der (die) Datenblock (Datenblöcke) mit den gewünschten Daten gelesen werden soll(en), zur Speicherung (Zwischenspeicherung) des (der) Datenblocks (Datenblöcke) (Block 806) verfügbar ist. Zwischenspeicher 108/208 kann als verfügbar angesehen werden, falls/wenn der Zwischenspeicher nicht voll ist; andernfalls kann der Zwischenspeicher 108/208 als nicht verfügbar betrachtet werden.
-
Falls/wenn der Zwischenspeicher 108/208 nicht verfügbar ist (z. B. ein NO in Block 806), können ein oder mehrere Datenobjekte und/oder ein oder mehrere im Zwischenspeicher 108/208 gespeicherte Datenblöcke aus dem Zwischenspeicher 108/208 entfernt werden, um Platz im Zwischenspeicher 108/208 (Block 808) freizugeben, und die Verfügbarkeit von Zwischenspeicher 108/208 kann neuerlich bestimmt werden (Block 806). In verschiedenen Ausführungsformen kann im Zwischenspeicher 108/208 durch Löschen eines oder mehrerer Datenobjekte und/oder Datenblöcke aus dem Zwischenspeicher 108/208 unter Verwendung einer LRU-Technik, wie anderswo hierin erörtert, Platz frei gemacht werden. Das Löschen eines oder mehrerer Datenobjekte und/oder Datenblöcke aus dem Zwischenspeicher 108/208 kann weiterhin das Schreiben jedes Datenobjekts und/oder Datenblocks in die Speichervorrichtung(en) 102 und/oder den Unternehmensdatendienst 50 einschließen, das darin nicht gespeichert ist oder nicht zuvor in die Speichervorrichtungen 102 und/oder den Unternehmensdatendienst 50 vor dem Entfernen geschrieben worden ist.
-
Falls/wenn Zwischenspeicher 108/208 verfügbar ist (z. B. ein YES in Block 612), können ein oder mehrere Datenblöcke, die mindestens einen Teil der gewünschten Daten zum Modifizieren einschließen, in den Zwischenspeicher 108/208 (Block 810) gelesen werden. Der (die) in den Zwischenspeicher 108/208 gelesene(n) Datenblock (Datenblöcke) kann anschließend modifiziert werden (z. B. können Daten gelöscht werden und/oder neue Daten in den (die) Datenblock (Datenblöcke) geschrieben werden) (Block 812).
-
Verfahren 800 kann weiterhin die Bestimmung beinhalten, ob es einen oder mehrere verbleibende Datenblöcke gibt, die zumindest einen Teil der Daten enthalten, die modifiziert werden sollen (Block 814). Falls/wenn mindestens ein verbleibender Datenblock modifiziert werden muss (z. B. ein YES in Block 814), kann die Verfügbarkeit des Zwischenspeichers 108/208 erneut bestimmt werden (Block 806) und die Blöcke 806 bis 814 können wiederholt werden, bis keine weiteren Datenblöcke, die zu modifizierende Daten einschließen, mehr vorhanden sind (z. B. ein NO in Block 814).
-
Der modifizierte eine oder die mehreren modifizierten Datenblöcke können schließlich in die Speichervorrichtungen 102 und/oder den Unternehmensdatendienst 50 geschrieben (neu geschrieben) werden (Block 816). In einigen Ausführungsformen kann (können) der (die) modifizierte(n) Datenblock (Datenblöcke) in die Speichervorrichtung(en) 102 und/oder den Unternehmensdatendienst 50 unmittelbar nach oder innerhalb eines kurzen Zeitraums modifiziert werden, während in anderen Ausführungsformen der (die) modifizierte(n) Datenblock (Datenblöcke) in Speichervorrichtungen 102 und/oder Unternehmensdatendienst 50 zu oder nach einer vorbestimmten Zeit modifiziert wird. Ein oder einige modifizierte Datenblöcke können in die Speichervorrichtung(en) 102 und/oder den Unternehmensdatendienst 50 gemäß einer LRU-Technik geschrieben werden, wie an anderer Stelle hierin erörtert.
-
Nochmals betrachtet, können die oben beschriebenen verschiedenen Netzwerke, Systeme und Verfahren Hardware und/oder Software zur Erhöhung der Zuverlässigkeit und/oder Verringerung von Latenzproblemen im Zusammenhang mit dem Schreiben von Datenobjekten, insbesondere LOBs, einschließen, indem ein Datenobjekt in kleinere Datenblöcke geteilt wird und alle Datenblöcke nacheinander in den Zwischenspeicher 108/208 geschrieben werden. Das heißt, die verschiedenen hierin erörterten Ausführungsformen können dadurch gekennzeichnet sein, dass sie über einen Zeitraum eine Vielzahl von Schreibvorgängen an einem LOB durchführen.
-
Zusätzlich können die oben beschriebenen verschiedenen Netzwerke, Systeme und Verfahren Hardware und/oder Software beinhalten, um Latenzprobleme zu verringern, die mit dem Lesen von Daten in Datenobjekten und insbesondere LOBs verbunden sind, indem ein oder mehrere kleinere Datenblöcke von Speichervorrichtungen 102 und/oder Unternehmensdatendienst 50 gelesen werden, um sie nacheinander in Zwischenspeicher 108/208 zwischenzuspeichern. Das heißt, die verschiedenen hierin erörterten Ausführungsformen können dadurch gekennzeichnet werden, dass mehrere Lesevorgänge an einem LOB über eine Zeitperiode ausgeführt werden.
-
Außerdem können die oben beschriebenen verschiedenen Netzwerke, Systeme und Verfahren Hardware und/oder Software zur Verringerung von Latenzproblemen im Zusammenhang mit der Modifikation von Daten in Datenobjekten, insbesondere LOBs, durch Lesen eines oder mehrerer kleinerer Datenblöcke von Speichervorrichtungen 102 und/oder Unternehmensdatendienst 50 nacheinander in den Zwischenspeicher 108/208 geschrieben werden, wobei der (die) Datenblock (Datenblöcke) modifiziert wird (werden), und der (die) modifizierte(n) Datenblock (Datenblöcke) in Speichervorrichtung(en) 102 und/oder Unternehmensdatendienst 50 geschrieben werden. Das heißt, die hierin erörterten verschiedenen Ausführungsformen können dadurch gekennzeichnet werden, dass mehrere Lese-Schreib-Vorgänge in einem LOB über einen Zeitraum durchgeführt werden.
-
Während mindestens eine beispielhafte Ausführungsform in der vorstehenden ausführlichen Beschreibung der Technologie dargestellt worden ist, sollte gewürdigt werden, dass eine große Anzahl von Variationen existieren kann. Es sollte auch beachtet werden, dass eine beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen Beispiele sind, und in keiner Weise den Umfang, die Anwendbarkeit, oder Konfiguration der Technologie einschränken sollen. Die vorangehende genaue Beschreibung wird vielmehr eine brauchbare Anleitung für Fachleute zur Implementierung einer beispielhaften Ausführungsform der Technologie bereitstellen, wobei es sich versteht, dass verschiedene Modifikationen an einer Funktion und/oder Anordnung von Elementen vorgenommen werden können, die in einer beispielhaften Ausführungsform beschrieben sind, ohne vom Umfang der Technologie abzuweichen, wie in den beigefügten Ansprüchen und ihren rechtlichen Entsprechungen dargelegt.
-
Wie einem Durchschnittsfachmann bekannt, können verschiedene Ausführungsformen der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Folglich können Ausführungsformen der vorliegenden Offenlegung die Form einer vollständigen Hardware-Ausführung, einer vollständigen Software-Ausführung (einschließlich Firmware, speicherresidente Software, Mikrocodes, oder dergleichen) oder Ausführungsformen in der Form einer Kombination von Hardware und Software annehmen, die alle allgemein hierin als Schaltung, Modul, System und/oder Netzwerk bezeichnet werden können. Darüber hinaus können verschiedene Ausführungsformen der vorliegenden Technologie die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, einschließlich eines darauf ausgebildeten computerlesbaren Programmcodes.
-
Es kann jede Kombination eines oder mehrerer computerlesbarer Speichermedien verwendet werden. Ein computerlesbares Medium kann ein computerlesbares Signalmedium oder ein physisches oder computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, ein Gerät oder eine Vorrichtung, usw. oder irgendeine geeignete Kombination der Vorstehenden sein. Nicht einschränkende Beispiele eines physischen, computerlesbaren Speichermediums können eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein EPROM, ein EEPROM, einen Flash-Speicher, eine optische Faser, eine CD-ROM, einen optischen Prozessor, einen magnetischen Prozessor, usw. oder eine beliebige geeignete Kombination des Vorgenannten beinhalten, sind aber nicht darauf beschränkt. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium jedes greifbare Medium sein, das ein Programm oder Daten zur Verwendung durch ein System, ein Gerät und/oder eine Vorrichtung zur Befehlsausführung oder in Verbindung mit einer/einem solchen, enthalten oder speichern kann.
-
Ein Computercode, der auf einem computerlesbaren Medium enthalten ist, kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, aber nicht beschränkt auf, drahtloses, verdrahtetes, optisches Faserkabel, Radiofrequenz (RF), usw. oder jede geeignete Kombination des Vorhergehenden. Ein Computercode zur Ausführung von Prozessen bei Ausführungsformen der vorliegenden Erfindung kann in einer beliebigen statischen Sprache, wie die C-Programmiersprache oder andere ähnliche Programmiersprachen, geschrieben werden. Der Computercode kann vollständig auf einer Rechenvorrichtung des Benutzers, teilweise auf einer Rechenvorrichtung des Benutzers, als ein alleinstehendes Softwarepaket, teilweise auf einer Rechenvorrichtung des Benutzers und teilweise auf einer Remote-Rechenvorrichtung oder vollständig auf der Remote-Vorrichtung oder einem Server ausgeführt werden. In dem letzteren Gedankenspiel kann eine Remote-Rechenvorrichtung mit einer Rechenvorrichtung des Benutzers durch eine beliebige Art von Netzwerk oder Kommunikationssystem, einschließlich, aber nicht begrenzt auf, ein lokales Netzwerk (LAN) oder ein Wide Area Network (WAN), eine Netzkonvergenz, verbunden sein, oder die Verbindung kann zu einem externen Computer (z. B. durch das Internet unter Verwendung eines Internetanbieters) hergestellt werden.
-
Verschiedene Ausführungsformen der vorliegenden Erfindung können oben mit Bezug auf die Flussdiagramme und/oder Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten beschrieben sein. Es versteht sich, dass jeder Block des schematischen Flussdiagramms und/oder schematischen Blockdiagramms und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einer Verarbeitungseinheit (Prozessor) eines allgemeinen Computers, speziellen Computers oder einer anderen programmierbaren Datenverarbeitungsanlage zur Erzeugung einer Maschine bereitgestellt werden, so dass die Anweisungen, die über die Verarbeitungsvorrichtung oder andere programmierbare Datenverarbeitungsanlagen ausgeführt werden können, Mittel zum Implementieren der Abläufe/Handlungen in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms erzeugen.
-
Einige Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder (eine) andere Vorrichtung(en) zum Betrieb in einer bestimmten Weise steuern kann, so dass die in einem computerlesbaren Medium gespeicherten angefertigten Artikel Anweisungen beinhalten, die den in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang implementieren. Einige Computerprogrammanweisungen können auch auf eine Rechenvorrichtung, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Vorrichtung(n) geladen werden, um zu bewirken, dass eine Reihe von Betriebsschritten an der Rechenvorrichtung, einer anderen programmierbaren Vorrichtung oder (einer) anderen Vorrichtung(en) durchgeführt werden, so dass die Anweisungen, die durch den Computer oder eine andere programmierbare Vorrichtung ausgeführt werden, einen oder mehrere Prozesse zur Implementierung der in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang bereitstellen.
-
Ein Flussdiagramm und/oder Blockdiagramm in den obigen Figuren kann eine Bauweise, Funktionalität und/oder einen Vorgang möglicher Implementierungen von Vorrichtungen, Systemen, Verfahren und/oder Computerprogrammprodukten gemäß verschiedenen Aspekten der vorliegenden Technologie veranschaulichen. In dieser Hinsicht kann ein Block in einem Flussdiagramm oder Blockdiagramm ein Modul, Segment oder einen Teil eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren einer oder mehrerer spezifizierter logischer Funktionen umfassen kann. Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, entsprechend der involvierten Funktionalität. Es sei auch angemerkt, dass ein Block einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung oder eine Kombination von Blöcken in einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung durch speziell auf Hardware basierenden Systemen implementiert werden kann, die eine oder mehrere spezifizierte Vorgänge oder Handlungen ausführen, oder durch Kombinationen von Hardware zu speziellen Zwecken und Computeranweisungen.
-
Während ein oder mehrere Aspekte der vorliegenden Technologie im Detail dargestellt und besprochen wurden, wird ein Fachmann erkennen, dass Modifikationen und/oder Anpassungen an die verschiedenen Aspekte vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.