DE112017005868T5 - Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem - Google Patents

Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem Download PDF

Info

Publication number
DE112017005868T5
DE112017005868T5 DE112017005868.6T DE112017005868T DE112017005868T5 DE 112017005868 T5 DE112017005868 T5 DE 112017005868T5 DE 112017005868 T DE112017005868 T DE 112017005868T DE 112017005868 T5 DE112017005868 T5 DE 112017005868T5
Authority
DE
Germany
Prior art keywords
data
data object
data blocks
memory
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112017005868.6T
Other languages
English (en)
Inventor
Akhil Bhansali
Kirankumar Mehta
Bruno Keymolen
Rajendra Bhairy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112017005868T5 publication Critical patent/DE112017005868T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment

Abstract

Es werden verschiedene Ausführungsformen zum Verwalten von Eingabe-/Ausgabe-(E/A-)-Abläufen für Datenobjekte (z. B. große Datenobjekte (LOBs)) in einem Speichersystem bereitgestellt. Zum Beispiel kann ein Verfahren das Empfangen einer E/A-Aufforderung zum Ausführen eines E/A-Ablaufs auf einem Datenobjekt, das Bestimmen der Größe des Datenobjekts und das Bestimmen des Datenobjekts als ein nicht konformes Datenobjekt in Bezug auf eine Speicherschwelle einer Cache-Speichervorrichtung beinhalten. Das Verfahren kann weiterhin das Teilen des nicht konformen Datenobjekts in mehrere Datenblöcke umfassen, wobei jeder der Datenblöcke eine Größe aufweist, die kleiner als die Speicherschwelle ist, das Bewegen eines oder mehrerer in einem oder mehreren Speicherplätzen der Cache-Speichereinrichtung gespeicherten Datenblöcke in eine Langzeitspeichereinrichtung, um den einen oder die mehreren Speicherplätze frei zu machen, und das Speichern eines oder mehrerer der Datenblöcke des nicht konformen Datenobjekts in dem (den) freigegebenen Speicherplatz (Speicherplätzen).

Description

  • 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.

Claims (20)

  1. Nichtflüchtiges Speichersystem, das einschließt: eine erste nichtflüchtige Cache-Speichervorrichtung, die eine Speicherschwelle einschließt; und eine Speichersteuerung, die mit der ersten nichtflüchtigen Cache-Speichervorrichtung verbunden ist, wobei die Speichersteuerung eine oder mehrere Verarbeitungsvorrichtungen zum Ausführen von Anweisungen in einer oder mehreren Anwendungen einschließt, die eingerichtet sind, um die Speichersteuerung zu veranlassen, Prozesse auszuführen, die aufweisen: Empfangen einer Eingabe-/Ausgabe-(E/A)-Aufforderung für ein Datenobjekt, Bestimmung einer Größe des Datenobjekts, Bestimmung, dass das Datenobjekt in Bezug auf die Speicherschwelle der ersten nichtflüchtigen Cache-Speichervorrichtung ein nicht konformes Datenobjekt ist, Teilen des nicht konformen Datenobjekts in eine Vielzahl von Datenblöcken, wobei jeder der Datenblöcke eine Größe aufweist, die kleiner als die Speicherschwelle ist, Bewegen eines oder mehrerer Datenblöcke, die in einem oder mehreren Speicherplätzen der ersten nichtflüchtigen Cache-Speichervorrichtung gespeichert sind, in eine Langzeitspeichervorrichtung, um den einen oder die mehreren Speicherplätze frei zu machen, und Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts in dem freigegebenen einen oder mehreren Speicherplätzen der ersten nichtflüchtigen Cache-Speichervorrichtung.
  2. System gemäß Anspruch 1, wobei: die E/A-Aufforderung eine Schreibaufforderung ist; und wenn die Abläufe zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts ausgeführt werden, die Speichersteuerung weiterhin Vorgänge durchführt, die das Schreiben jedes der einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den freigegebenen einen oder mehreren Speicherplätze der ersten nichtflüchtigen Cache-Speichervorrichtung aufweisen.
  3. System gemäß Anspruch 1, wobei: die E/A-Aufforderung eine Leseaufforderung ist; und wenn die Abläufe zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts ausgeführt werden, die Speichersteuerung weiterhin Vorgänge durchführt, die das Lesen eines oder mehrerer in der Langzeitspeichervorrichtung gespeicherten Datenblöcke in die erste nichtflüchtige Cache-Speichervorrichtung aufweisen.
  4. System gemäß Anspruch 1, wobei: die E/A-Aufforderung eine Lese-Schreib-Aufforderung ist; und wenn die Abläufe zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts ausgeführt werden, die Speichersteuerung weiterhin Vorgänge durchführt, die aufweisen: Lesen eines oder mehrerer in der Langzeitspeichervorrichtung gespeicherten Datenblöcke in die erste nichtflüchtige Cache-Speichervorrichtung, Modifizieren der Daten in dem einen oder den mehreren gelesenen Datenblöcken, um einen oder mehrere modifizierte Datenblöcke zu erzeugen, und Schreiben des einen oder der mehreren modifizierten Datenblöcke in die Langzeitspeichervorrichtung.
  5. System gemäß Anspruch 1, das weiterhin die Langzeitspeichervorrichtung aufweist, die mit der ersten nichtflüchtigen Cache-Speichervorrichtung verbunden ist, wobei: bestimmt wird, dass das Datenobjekt ein nicht konformes Datenobjekt ist, das auf Grundlage der Größe des Datenobjekts eine verfügbare Speicherkapazität der ersten nichtflüchtigen Cache-Speichervorrichtung überschreitet; und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in dem freigegebenen einen oder mehreren Speicherplätzen für jeden Datenblock des nicht konformen Datenobjekts einschließt: Bestimmung, ob ausreichend Platz zum Speichern jedes Datenblocks in der ersten nichtflüchtigen Cache-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 ersten nichtflüchtigen Cache-Speichervorrichtung gespeichert sind, in die Langzeitspeichervorrichtung, Freigabe des einen oder der mehreren Speicherplätze des einen oder der mehreren vorhandenen Datenblöcke zur Erzeugung des freigegebenen einen oder der mehreren Speicherplätze, und das Schreiben jedes Datenblocks in den freigegebenen einen oder die mehreren Speicherplätze in der ersten nichtflüchtigen Cache-Speichervorrichtung.
  6. System gemäß Anspruch 1, wobei: die erste nichtflüchtige Cache-Speichervorrichtung eine Puffergröße aufweist; und die Speicherschwelle die Puffergröße wiedergibt.
  7. System gemäß Anspruch 1, weiterhin aufweisend: eine zweite nichtflüchtige Cache-Speichervorrichtung, die mit der ersten nichtflüchtigen Cache-Speichervorrichtung verbunden ist, wobei: die Speichersteuerung weiterhin Abläufe durchführt, die das Replizieren jedes in der ersten nichtflüchtigen Cache-Speichervorrichtung gespeicherten Datenblocks in die zweite nichtflüchtige Cache-Speichervorrichtung aufweist.
  8. System gemäß Anspruch 1, wobei die Langzeitspeichervorrichtung eine von Folgendem ist: ein Teil eines lokalen Speichernetzwerks; und ein Teil eines Unternehmensspeicherdienstes.
  9. System gemäß Anspruch 1, wobei die erste nichtflüchtige Cache-Speichervorrichtung eine Flash-Speichervorrichtung aufweist.
  10. System gemäß Anspruch 1, wobei: die Speichersteuerung eingerichtet ist, um mit einem Netzwerk verbunden zu werden, das mit einer oder mehreren Client-Vorrichtungen kommuniziert; und die Speichersteuerung zwischen der einen oder den mehreren Client-Vorrichtungen und der ersten nichtflüchtigen Cache-Speichervorrichtung angeordnet ist, wenn sie mit dem Netzwerk verbunden ist.
  11. System, das aufweist: eine nichtflüchtige Cache-Speichervorrichtung, die eine Puffergröße einschließt; Mittel zum Empfangen einer Eingabe-/Ausgabe-(E/A)-Aufforderung für ein Datenobjekt; Mittel zum Bestimmen einer Größe des Datenobjekts; Mittel zum Bestimmen, dass das Datenobjekt entsprechend der Puffergröße der nichtflüchtigen Cache-Speichervorrichtung ein nicht konformes Datenobjekt ist; Mittel zum Teilen des nicht konformen Datenobjekts in eine Vielzahl von Datenblöcken, wobei jeder der Datenblöcke eine Größe aufweist, die kleiner als die Puffergröße ist; Mittel zum Bewegen eines oder mehrerer Datenblöcke, die in einem oder mehreren Speicherplätzen der nichtflüchtigen Cache-Speichervorrichtung gespeichert sind, in eine Langzeitspeichervorrichtung, um den einen oder die mehreren Speicherplätze frei zu machen; und Mittel zum Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts in dem freigegebenen einen oder mehreren Speicherplätzen der nichtflüchtigen Cache-Speichervorrichtung.
  12. System gemäß Anspruch 11, wobei: die E/A-Aufforderung eine Schreibaufforderung ist; und die Mittel zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts 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 aufweist.
  13. System gemäß Anspruch 11, wobei: die E/A-Aufforderung eine Leseaufforderung ist; und die Mittel zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weiterhin Mittel zum Lesen eines oder mehrerer in der Langzeitspeichervorrichtung gespeicherter Datenblöcke in die nichtflüchtige Cache-Speichervorrichtung aufweisen.
  14. System gemäß Anspruch 11, wobei: die E/A-Aufforderung eine Lese-Schreib-Aufforderung ist; und die Mittel zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weiterhin aufweisen: Mittel zum Lesen eines oder mehrerer in der Langzeitspeichervorrichtung gespeicherter Datenblöcke in die nichtflüchtige Cache-Speichervorrichtung, Mittel zum Modifizieren von Daten in dem einen oder den mehreren gelesenen Datenblöcken, um einen oder mehrere modifizierte Datenblöcke zu erzeugen, und Mittel zum Schreiben des einen oder der mehreren modifizierten Datenblöcke in die Langzeitspeichervorrichtung.
  15. System gemäß Anspruch 11, das weiterhin die Langzeitspeichervorrichtung aufweist, die mit der nichtflüchtigen Cache-Speichervorrichtung verbunden ist, wobei: die Mittel zum Bestimmen, dass das Datenobjekt ein nicht konformes Datenobjekt ist, Mittel zum Bestimmen auf Grundlage der Größe des Datenobjekts, das die Puffergröße übersteigt, aufweisen, und die Mittel zum Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in dem freigegebenen einen oder mehreren Speicherplätzen für jeden Datenblock des nicht konformen Datenobjekts einschließen: Mittel zum Bestimmen, ob ausreichend Platz zum Speichern jedes Datenblocks in der nichtflüchtigen Cache-Speichervorrichtung vorhanden ist, und wenn nicht ausreichend Platz vorhanden ist: Mittel zum Schreiben eines oder mehrerer vorhandener Datenblöcke, die mit einem oder mehreren anderen Objekten als dem nicht konformen Datenobjekt verbunden sind, und aktuell in der nichtflüchtigen Speichervorrichtung gespeichert sind, in die Langzeitspeichervorrichtung, Mittel zur Freigabe des einen oder der mehreren Speicherplätze des einen oder der mehreren vorhandenen Datenblöcke, um den freigegebenen einen oder die mehreren Speicherplätze zu erzeugen, und Mittel zum Schreiben jedes Datenblocks in den freigegebenen einen oder die mehreren Speicherplätze in der nichtflüchtigen Cache-Speichervorrichtung.
  16. Verfahren zum Betrieb eines nichtflüchtigen Speichersystems, das einen Satz von nichtflüchtigen Speichervorrichtungen einschließt, wobei das Verfahren aufweist: Empfang einer Eingabe-/Ausgabe-(E/A)-Aufforderung an einer Speichersteuerung, die mit einer nichtflüchtigen Speichervorrichtung mit einer Speicherschwelle verbunden ist, um einen E/A-Ablauf an einem Datenobjekt auszuführen; Bestimmung einer Größe des Datenobjekts; Bestimmung, dass das Datenobjekt in Bezug auf die Speicherschwelle der nichtflüchtigen Cache-Speichervorrichtung ein nicht konformes Datenobjekt ist; Teilen des nicht konformen Datenobjekts in eine Vielzahl von Datenblöcken, wobei jeder der Datenblöcke eine Größe aufweist, die kleiner als die Speicherschwelle ist; Bewegen eines oder mehrerer Datenblöcke, die in einem oder mehreren Speicherplätzen der nichtflüchtigen Cache-Speichervorrichtung gespeichert sind, in eine Langzeitspeichervorrichtung, um den einen oder die mehreren Speicherplätze frei zu machen; und Speichern eines oder mehrerer Datenblöcke des nicht konformen Datenobjekts in dem freigegebenen einen oder mehreren Speicherplätzen der nichtflüchtigen Cache-Speichervorrichtung.
  17. Verfahren gemäß Anspruch 16, wobei: die E/A-Aufforderung eine Schreibaufforderung ist; und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weiterhin das Schreiben jedes der einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den freigegebenen einen oder die mehreren Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung aufweist.
  18. Verfahren gemäß Anspruch 16, wobei: die E/A-Aufforderung eine Leseaufforderung ist; und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weiterhin das Lesen jedes der einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den freigegebenen einen oder die mehreren Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung aufweist.
  19. Verfahren gemäß Anspruch 16, wobei: die E/A-Aufforderung eine Lese-Schreib-Aufforderung ist; und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts weiterhin aufweist: Lesen jedes der einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in den freigegebenen einen oder die mehreren Speicherplätze der nichtflüchtigen Cache-Speichervorrichtung, Modifizieren von Daten in jedem der einen oder der mehreren gelesenen Datenblöcke, um einen oder mehrere modifizierte Datenblöcke zu erzeugen, und Schreiben jedes der einen oder der mehreren modifizierten Datenblöcke in die Langzeitspeichervorrichtung.
  20. Verfahren gemäß Anspruch 16, wobei: die Bestimmung, dass das Datenobjekt ein nicht konformes Datenobjekt ist, weiterhin auf der Größe des Datenobjekts basiert, das eine verfügbare Speicherkapazität der nichtflüchtigen Cache-Speichervorrichtung überschreitet, und das Speichern des einen oder der mehreren Datenblöcke des nicht konformen Datenobjekts in dem freigegebenen einen oder mehreren Speicherplätzen für jeden Datenblock des nicht konformen Datenobjekts einschließt: Bestimmung, ob ausreichend Platz zum Speichern jedes Datenblocks in der nichtflüchtigen Cache-Speichervorrichtung vorhanden ist, und wenn nicht ausreichend Platz vorhanden ist: das Schreiben eines oder mehrerer vorhandener Datenblöcke, die mit einem oder mehreren Datenobjekten als dem nicht konformen Datenobjekt verbunden sind, und aktuell in der nichtflüchtigen Speichervorrichtung gespeichert sind, in die Langzeitspeichervorrichtung, Freigabe des einen oder der mehreren Speicherplätze des einen oder der mehreren vorhandenen Datenblöcke zur Erzeugung des freigegebenen einen oder der mehreren Speicherplätze, und Schreiben jedes Datenblocks in den freigegebenen einen oder die mehreren Speicherplätze in der nichtflüchtigen Cache-Speichervorrichtung.
DE112017005868.6T 2017-03-27 2017-12-02 Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem Pending DE112017005868T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/470,787 2017-03-27
US15/470,787 US10289315B2 (en) 2017-03-27 2017-03-27 Managing I/O operations of large data objects in a cache memory device by dividing into chunks
PCT/US2017/064368 WO2018182802A1 (en) 2017-03-27 2017-12-02 Managing i/o operations for data objects in a storage system

Publications (1)

Publication Number Publication Date
DE112017005868T5 true DE112017005868T5 (de) 2019-08-08

Family

ID=60991511

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017005868.6T Pending DE112017005868T5 (de) 2017-03-27 2017-12-02 Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem

Country Status (4)

Country Link
US (1) US10289315B2 (de)
CN (1) CN110140114A (de)
DE (1) DE112017005868T5 (de)
WO (1) WO2018182802A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816465B2 (en) 2013-03-15 2023-11-14 Ei Electronics Llc Devices, systems and methods for tracking and upgrading firmware in intelligent electronic devices
US11734396B2 (en) 2014-06-17 2023-08-22 El Electronics Llc Security through layers in an intelligent electronic device
US10958435B2 (en) 2015-12-21 2021-03-23 Electro Industries/ Gauge Tech Providing security in an intelligent electronic device
US10705911B2 (en) * 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
US10268417B1 (en) * 2017-10-24 2019-04-23 EMC IP Holding Company LLC Batch mode object creation in an elastic cloud data storage environment
KR20200104601A (ko) 2019-02-27 2020-09-04 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102456173B1 (ko) * 2017-10-27 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11734704B2 (en) 2018-02-17 2023-08-22 Ei Electronics Llc Devices, systems and methods for the collection of meter data in a common, globally accessible, group of servers, to provide simpler configuration, collection, viewing, and analysis of the meter data
US11686594B2 (en) * 2018-02-17 2023-06-27 Ei Electronics Llc Devices, systems and methods for a cloud-based meter management system
US11754997B2 (en) 2018-02-17 2023-09-12 Ei Electronics Llc Devices, systems and methods for predicting future consumption values of load(s) in power distribution systems
US10901906B2 (en) * 2018-08-07 2021-01-26 International Business Machines Corporation Write data allocation in storage system
CN111858144A (zh) * 2019-04-25 2020-10-30 伊姆西Ip控股有限责任公司 存储管理的方法、设备和计算机程序产品
US11863589B2 (en) 2019-06-07 2024-01-02 Ei Electronics Llc Enterprise security in meters
US11368285B2 (en) 2019-12-05 2022-06-21 International Business Machines Corporation Efficient threshold storage of data object
US11556540B1 (en) * 2020-03-25 2023-01-17 Amazon Technologies, Inc. Transmission format cache for database reads
US11599463B2 (en) * 2020-03-25 2023-03-07 Ocient Holdings LLC Servicing queries during data ingress
US20220405253A1 (en) * 2021-06-22 2022-12-22 Samsung Electronics Co., Ltd. Mechanism for managing a migration of data with mapped page and dirty page bitmap sections

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128623A (en) 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US7398312B1 (en) * 2000-03-29 2008-07-08 Lucent Technologies Inc. Method and system for caching streaming multimedia on the internet
US7360053B2 (en) 2004-09-23 2008-04-15 International Business Machines Corporation Facilitating non-contiguous allocation of a large object within a java heap
JP2009181314A (ja) * 2008-01-30 2009-08-13 Toshiba Corp 情報記録装置およびその制御方法
US8458236B2 (en) 2008-07-16 2013-06-04 Oracle International Corporation File system interface for CIM
GB2481187B (en) * 2010-06-04 2014-10-29 Plastic Logic Ltd Processing substrates
US8788742B2 (en) * 2011-05-23 2014-07-22 International Business Machines Corporation Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US9086883B2 (en) * 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
US8849759B2 (en) 2012-01-13 2014-09-30 Nexenta Systems, Inc. Unified local storage supporting file and cloud object access
US8661479B2 (en) * 2011-09-19 2014-02-25 International Business Machines Corporation Caching large objects with multiple, unknown, and varying anchor points at an intermediary proxy device
US10102117B2 (en) * 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US8782441B1 (en) 2012-03-16 2014-07-15 Google Inc. Methods and systems for storage of large data objects
US8856445B2 (en) 2012-05-24 2014-10-07 International Business Machines Corporation Byte caching with chunk sizes based on data type
US8879183B1 (en) * 2012-10-11 2014-11-04 Seagate Technology Llc Segmenting of read-modify-write operations
US9274956B1 (en) 2012-10-31 2016-03-01 Amazon Technologies, Inc. Intelligent cache eviction at storage gateways
US9268652B1 (en) * 2012-10-31 2016-02-23 Amazon Technologies, Inc. Cached volumes at storage gateways
US8924425B1 (en) 2012-12-06 2014-12-30 Netapp, Inc. Migrating data from legacy storage systems to object storage systems
CN103797770B (zh) * 2012-12-31 2015-12-02 华为技术有限公司 一种共享存储资源的方法和系统
US20160023920A1 (en) * 2013-03-12 2016-01-28 3M Innovative Properties Company Removal of chlorine and/or chloramine from aqueous solutions
US9569260B2 (en) * 2013-05-31 2017-02-14 Microsoft Technology Licensing, Llc Efficient priority-aware thread scheduling
US10296597B2 (en) 2013-07-15 2019-05-21 International Business Machines Corporation Read ahead of digests in similarity based data deduplicaton
US9811531B2 (en) 2013-08-26 2017-11-07 Vmware, Inc. Scalable distributed storage architecture
US10187358B2 (en) 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations
US9223800B1 (en) 2013-12-23 2015-12-29 Emc Corporation Cluster file system providing object store and functionality for transformation of metadata files into objects
US9141486B2 (en) 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
US9405483B1 (en) 2014-03-11 2016-08-02 Amazon Technologies, Inc. Optimized write performance at block-based storage during volume snapshot operations
KR102336528B1 (ko) * 2014-07-07 2021-12-07 삼성전자 주식회사 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법
KR102255152B1 (ko) * 2014-11-18 2021-05-24 삼성전자주식회사 가변적인 크기의 세그먼트를 전송하는 컨텐츠 처리 장치와 그 방법 및 그 방법을 실행하기 위한 컴퓨터 프로그램
US10534714B2 (en) * 2014-12-18 2020-01-14 Hewlett Packard Enterprise Development Lp Allocating cache memory on a per data object basis
JP6476969B2 (ja) * 2015-02-17 2019-03-06 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法
US9842052B2 (en) * 2015-04-20 2017-12-12 Sap Se Selective allocation of CPU cache slices to database objects
US9760458B2 (en) * 2015-06-02 2017-09-12 Netapp, Inc. Dynamic mirroring
TWI530785B (zh) * 2015-07-30 2016-04-21 宏碁股份有限公司 電腦系統及非揮發性記憶體的控制方法
US9864686B2 (en) * 2015-10-14 2018-01-09 International Business Machines Corporation Restriction of validation to active tracks in non-volatile storage during a warmstart recovery
US10972574B2 (en) * 2016-04-27 2021-04-06 Seven Bridges Genomics Inc. Methods and systems for stream-processing of biomedical data
CN106156289A (zh) * 2016-06-28 2016-11-23 北京百迈客云科技有限公司 一种读写对象存储系统中的数据的方法以及装置
US10467195B2 (en) * 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system

Also Published As

Publication number Publication date
WO2018182802A1 (en) 2018-10-04
US10289315B2 (en) 2019-05-14
US20180275898A1 (en) 2018-09-27
CN110140114A (zh) 2019-08-16

Similar Documents

Publication Publication Date Title
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE602005001041T2 (de) Speicherauszugssystem
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE112007003678B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE112007003693B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112007003645B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
WO2015090668A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE202014010898U1 (de) Hierarchische Stückelung von Objekten in einem dezentralen Speichersystem
DE112009004503T5 (de) Optimierung der zugriffszeit von auf speichern gespeicherten dateien
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102009031923A1 (de) Verfahren zum Verwalten von Datenobjekten
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE