DE112014003076T5 - Systeme und Verfahren für Ablagespeicherkonsistenz - Google Patents

Systeme und Verfahren für Ablagespeicherkonsistenz Download PDF

Info

Publication number
DE112014003076T5
DE112014003076T5 DE112014003076.7T DE112014003076T DE112014003076T5 DE 112014003076 T5 DE112014003076 T5 DE 112014003076T5 DE 112014003076 T DE112014003076 T DE 112014003076T DE 112014003076 T5 DE112014003076 T5 DE 112014003076T5
Authority
DE
Germany
Prior art keywords
storage
data
file
logical
lids
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.)
Withdrawn
Application number
DE112014003076.7T
Other languages
English (en)
Inventor
Nisha Talagala
David Nellans
Nick Piggin
David Flynn
Robert Wipfel
John Strasser
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.)
SanDisk Technologies LLC
Original Assignee
Longitude Enterprise Flash SARL
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 Longitude Enterprise Flash SARL filed Critical Longitude Enterprise Flash SARL
Publication of DE112014003076T5 publication Critical patent/DE112014003076T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file 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/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0638Organizing or formatting or addressing of data
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Eine Ablagespeicherschicht ist konfiguriert, effiziente Öffnen-Schließen-Konsistenzoperationen zu implementieren. Öffnen-Schließen-Konsistenz kann Konservieren des ursprünglichen Zustands einer Datei bis die Datei geschlossen wird umfassen. Die Ablagespeicherschicht kann konfiguriert sein, eine Datei in Reaktion auf eine Dateiöffnungsanforderung zu klonen. Klonen der Datei kann Referenzieren von Dateidaten durch zwei getrennte Mengen von Kennungen umfassen. Eine Menge kann konfiguriert sein, Dateimodifikationen widerzuspiegeln, und die andere Menge kann konfiguriert sein, den ursprünglichen Zustand der Datei zu konservieren. Nachfolgende Operationen, die konfiguriert sind, die Datei zu modifizieren, können mit Referenz auf eine der Mengen von Kennungen ausgeführt werden, während die Ablagespeicherschicht Zugriff auf die nicht modifizierte Datei durch die andere Menge von Kennungen ermöglicht. Schließen der Datei kann Zusammenfassen der Mengen von Kennungen gemäß einer Zusammenfassungsstrategie umfassen.

Description

  • Technisches Gebiet
  • Diese Offenbarung bezieht sich auf Ablagespeichersysteme und insbesondere auf Systeme und Verfahren zum Aufrechterhalten von Dateikonsistenz.
  • Zusammenfassung
  • Es sind hier Ausführungsformen von Verfahren zum Implementieren, unter anderen, eines Schließen-bis-Öffnen-Konsistenzmodells offenbart. Schritte der hier offenbarten Verfahren können unter Verwendung von Maschinenkomponenten wie z. B. Prozessoren, Logikschaltungen und/oder dergleichen implementiert sein. Dementsprechend kann/können einer oder mehrere Schritte und/oder Operationen der offenbarten Verfahren an eine spezielle Maschine gebunden sein. Alternativ oder zusätzlich können Schritte und/oder Operationen der offenbarten Verfahren als computerlesbarer Code verwirklicht sein, der auf einem Ablagespeichermedium gespeichert ist. Das Ablagespeichermedium kann ein persistentes oder nichtflüchtiges Ablagespeichermedium sein.
  • Ausführungsformen des Verfahrens zur Ablagespeicherkonsistenz, die hier offenbart sind, können Zuordnen von Daten, die auf einem oder mehreren Ablagespeicherorten einer AblageAblagespeichervorrichtung gespeichert sind, zu logischen Kennungen eines Adressraums, Bereitstellen einer Arbeitsmenge von logischen Kennungen in Reaktion auf eine Anforderung eines Ablagespeicher-Clients, auf die Daten zuzugreifen, so dass die Arbeitsmenge logischer Kennungen und eine Konsistenzmenge logischer Kennungen demselben/denselben einen oder mehreren Ablagespeicherorten zugeordnet sind, und/oder Implementieren einer Ablagespeicheroperation, die konfiguriert ist, wenigstens einen Abschnitt der Daten zu modifizieren, umfassen, wobei Implementieren der Ablagespeicheroperation Aktualisieren von Ablagespeicherortzuordnungen einer oder mehrerer der logischen Kennungen in der Arbeitsmenge und Konservieren der Zuordnungen zwischen der Konsistenzmenge logischer Kennungen und dem einen oder den mehreren Speicherorten umfasst.
  • Die Ablagespeicheroperation kann Anhängen von Daten an ein Log auf der AblageAblagespeichervorrichtung umfassen, und das Verfahren kann ferner das Zuordnen der angehängten Daten zu einer logischen Kennung der Arbeitsmenge logischer Kennungen umfassen. Alternativ oder zusätzlich kann die Ablagespeicheroperation Schreiben eines Datensegments auf der AblageAblagespeichervorrichtung umfassen, das konfiguriert ist, ein ursprüngliches Datensegment der Daten, die auf der AblageAblagespeichervorrichtung gespeichert sind, zu modifizieren, und das Verfahren kann ferner das Ermöglichen von Zugriff auf das ursprüngliche Datensegment durch Referenz auf eine logische Kennung in der Konsistenzmenge der logischen Kennungen und/oder Zuordnen des Datensegments, das konfiguriert ist, das ursprüngliche Datensegment zu modifizieren, durch Verwenden einer logischen Kennung in der Arbeitsmenge logischer Kennungen umfassen. In einigen Ausführungsformen umfasst die Ablagespeicheroperation Anhängen von Daten zu einer Datei, und das Verfahren umfasst ferner Zuweisen einer oder mehrerer zusätzlicher logischer Kennungen zu der Arbeitsmenge logischer Kennungen und/oder Ermöglichen von Zugriff auf die angehängten Daten durch Referenz auf die eine oder mehreren logischen Kennungen. Die Ablagespeicheroperation kann konfiguriert sein, eines aus mehreren ursprünglichen Datensegmenten einer Datei zu modifizieren, und das Verfahren kann ferner das Referenzieren der mehreren ursprünglichen Datensegmente durch Verwenden logischer Kennungen der Konsistenzmenge logischer Kennungen, Referenzieren der ursprünglichen Datensegmente, die nicht durch die Ablagespeicheroperation modifiziert sind, durch Verwenden logischer Kennungen der Arbeitsmenge logischer Kennungen und/oder Referenzieren eines Datensegments, das der Ablagespeicheroperation entspricht, durch eine logische Kennung der Arbeitsmenge logischer Kennungen enthalten.
  • Einige Ausführungsformen des offenbarten Verfahrens können ferner Zuweisen der Arbeitsmenge logischer Kennungen durch Reservieren von Ablagespeicherkapazität auf der AblageAblagespeichervorrichtung für Ablagespeicheroperationen, die durch den Ablagespeicher-Client ausgeführt werden, enthalten. Das Verfahren kann ferner das Ermöglichen von Zugriff auf die durch die Ablagespeicheroperation nicht modifizierten Daten in Reaktion auf eine Anforderung eines anderen Ablagespeicher-Clients enthalten.
  • In einigen Ausführungsformen umfasst das offenbarte Verfahren ferner Zuweisen einer zusätzlichen Arbeitsmenge des logischen Kennungsraums in Reaktion auf eine Anforderung eines weiteren Ablagespeicher-Clients, eine Datei zu öffnen, die den Daten entspricht, so dass die Konsistenzmenge logischer Kennungen und die zusätzliche Arbeitsmenge logischer Kennungen denselben Ablagespeicherorten zugeordnet sind und wobei die Zuordnungen nicht durch die Ablagespeicheroperation modifiziert sind. Die Daten können auf der AblageAblagespeichervorrichtung gespeichert sein in Zuordnung zu persistenten Metadaten, die konfiguriert sind, die Daten jeweiligen logischen Kennungen zuzuordnen, und das Verfahren kann ferner das Anhängen persistenter Metadaten, die konfiguriert sind, die Daten logischen Kennungen der Konsistenzmenge und der Arbeitsmenge zuzuordnen, an die AblageAblagespeichervorrichtung umfassen.
  • Ausführungsformen des offenbarten Verfahrens können ferner Zusammenfassen der Konsistenzmenge logischer Kennungen mit der Arbeitsmenge logischer Kennungen in Reaktion auf eine Anforderung des Ablagespeicher-Client, um eine Datei, die den Daten entspricht, zu schließen, enthalten, wobei Zusammenfassen Integrieren von Modifikationen an der Datei, die mit Referenz auf die Arbeitsmenge logischer Kennungen durch den Ablagespeicher-Client vorgenommen werden, in die Konsistenzmenge logischer Kennungen umfasst. In einigen Ausführungsformen umfasst das Verfahren ferner das Binden der Arbeitsmenge logischer Kennungen an Ablagespeicheradressen des einen oder der mehreren Ablagespeicherorte.
  • Es sind hier Ausführungsformen einer Einrichtung zur Ablagespeicherkonsistenz offenbart. Ausführungsformen der offenbarten Einrichtung können ein Umsetzungsmodul, das konfiguriert ist, eine Datei, die Daten entspricht, die auf einer AblageAblagespeichervorrichtung gespeichert sind, durch Binden der Daten der Datei an sowohl eine ursprüngliche Menge logischer Kennungen als auch eine Klonmenge logischer Kennungen zu klonen, eine Ablagespeicherschicht, die konfiguriert ist, die Dateidaten, die auf der AblageAblagespeichervorrichtung gespeichert sind, zu konservieren und Bindungen zwischen den konservierten Dateidaten und der ursprünglichen Menge logischer Kennungen zu konservieren, während Ablagespeicheroperationen ausgeführt werden, die konfiguriert sind, die Datei in Referenz auf die logischen Klonkennungen zu ändern, und eine Schnittstelle, die konfiguriert ist, Zugriff auf die konservierten Dateidaten durch die ursprünglichen logischen Kennungen nach dem Ausführen der Ablagespeicheroperation zu ermöglichen, umfassen.
  • Das Umsetzungsmodul kann konfiguriert sein, die Datei in Reaktion auf eine Anforderung, die Datei zu öffnen, zu klonen, und wobei die Schnittstelle konfiguriert ist, Zugriff auf die konservierten Dateidaten durch die ursprüngliche Menge logischer Kennungen in Reaktion auf eine andere Anforderung, die zu der Datei gehört, zu ermöglichen. Das Umsetzungsmodul kann ferner konfiguriert sein, Ablagespeicheroperationen, die zu der geöffneten Datei gehören, zu der geklonten Menge logischer Kennungen umzuleiten.
  • Die Ablagespeicheroperationen können konfiguriert sein, ein Datensegment aus einer Datei zu entfernen, und die Ablagespeicherschicht kann konfiguriert sein, eine Zuordnung zwischen dem Datensegment und einer logischen Kennung in der geklonten Menge logischer Kennungen zu entfernen und eine Zuordnung zwischen dem Datensegment und einer logischen Kennung in der ursprünglichen Menge logischer Kennungen zu konservieren. Alternativ oder zusätzlich können die Ablagespeicheroperationen konfiguriert sein, existierende Daten der Datei zu ändern, und die Ablagespeicherschicht kann konfiguriert sein, die geänderten Daten der Datei unter Verwendung einer oder mehrerer logischer Kennungen aus den geklonten logischen Kennungen zu referenzieren und entsprechende konservierte Dateidaten unter Verwendung logischer Kennungen aus der ursprünglichen Menge logischer Kennungen zu referenzieren.
  • In einigen Ausführungsformen ist das Umsetzungsmodul ferner konfiguriert, die geklonten logischen Kennungen in die ursprünglichen logischen Kennungen durch Integrieren von Dateimodifikationen der Ablagespeicheroperationen, die mit Referenz auf die logischen Kennungen der geklonten Menge logischer Kennungen ausgeführt sind, in die ursprüngliche Menge logischer Kennungen zu falten. Die Dateimodifikationen können Speichern eines Datensegments der Datei auf der AblageAblagespeichervorrichtung umfassen, und wobei Integrieren der Dateimodifikationen Speichern persistenter Metadaten auf der AblageAblagespeichervorrichtung umfasst, um das Datensegment einer der logischen Kennungen aus der ursprünglichen Menge logischer Kennungen zuzuordnen. In einigen Ausführungsformen umfassen die Dateimodifikationen Erweitern der Datei, und wobei Integrieren der Dateimodifikationen Hinzufügen logischer Kennungen zu der Menge ursprünglicher logischer Kennungen, um Daten der erweiterten Datei zu referenzieren, umfasst.
  • Es sind hier Ausführungsformen eines Systems zur Ablagespeicherkonsistenz offenbart. Das offenbarte System kann Mittel zum Erzeugen einer logischen Kopie einer Datei in Reaktion auf eine Anforderung, die Datei zu öffnen, wobei Erzeugen der logischen Kopie Referenzieren von Daten der Datei durch zwei unterschiedliche Mengen logischer Adressen umfasst, Mittel zum Modifizieren der Datei mit Referenz auf die erste aus den zwei unterschiedlichen Mengen logischer Adressen und Mittel zum Ermöglichen von Zugriff auf eine ursprüngliche Version der Datei durch eine zweite aus den zwei unterschiedlichen Mengen logischer Adressen nach dem Modifizieren der Datei mit Referenz auf die erste Menge logischer Adressen umfassen. In einigen Ausführungsformen umfasst das offenbarte System ferner Mittel zum Zusammenfassen der zwei unterschiedlichen Mengen logischer Adressen durch Aktualisieren der zweiten Menge logischer Adressen, um Dateimodifikationen zu referenzieren, die innerhalb der ersten Menge logischer Adressen implementiert sind, in Übereinstimmung mit einer Zusammenfassungsstrategie. Die Mittel zum Modifizieren der Datei können Mittel zum Anhängen modifizierter Daten der Datei an ein Log, das auf einer AblageAblagespeichervorrichtung gespeichert ist, umfassen. Die Mittel zum Zusammenfassen der zwei unterschiedlichen Mengen logischer Adressen können Mittel zum Anhängen einer persistenten Meldung, die konfiguriert ist, eine logische Adresse aus der zweiten Menge logischer Adressen den modifizierten Daten zuzuordnen, an das Log umfassen.
  • Kurzbeschreibung der Zeichnungen
  • 1A ist ein Blockdiagramm einer Ausführungsform eines Systems für Öffnen-bis-Schließen-Konsistenz;
  • 1B bildet Ausführungsformen von Ablagespeichermetadaten ab;
  • 1C ist ein Blockdiagramm, das eine Ausführungsform eines Ablagespeicher-Array abbildet;
  • 1D bildet eine Ausführungsform eines Datenpaketformats ab;
  • 1E bildet eine Ausführungsform eines Ablagespeicher-Logs ab;
  • 2 ist ein Blockdiagramm einer weiteren Ausführungsform eines Systems für Öffnen-bis-Schließen-Konsistenz;
  • 3A ist ein Blockdiagramm einer Ausführungsform eines Systems, das eine Ablagespeicherschicht umfasst, die konfiguriert ist, Bereichsklonen, Verschieben, Zusammenfassen und andere Ablagespeicheroperationen höherer Ebene effizient zu implementieren;
  • 3B bildet Ausführungsformen von Bereichsklonoperationen ab;
  • 3C bildet weitere Ausführungsformen von Bereichsklonoperationen ab;
  • 3D bildet weitere Ausführungsformen von Bereichsklonoperationen ab;
  • 3E bildet weitere Ausführungsformen von Bereichsklonoperationen ab;
  • 4A ist ein Blockdiagramm einer weiteren Ausführungsform eines Systems für Öffnen-bis-Schließen-Konsistenz;
  • 4B bildet Ausführungsformen von Bereichsklonoperationen ab, die durch Verwenden einer Referenzabbildung implementiert sind;
  • 4C bildet weitere Ausführungsformen von Bereichsklonoperationen ab, die durch Verwenden einer Referenzabbildung implementiert sind;
  • 4D bildet weitere Ausführungsformen von Bereichsklonoperationen ab, die durch Verwenden einer Referenzabbildung implementiert sind;
  • 4E bildet weitere Ausführungsformen von Bereichsklonoperationen ab, die durch Verwenden einer Referenzabbildung implementiert sind;
  • 5A ist ein Blockdiagramm einer Ausführungsform eines Systems, das eine Indirektionsschicht umfasst;
  • 5B bildet Ausführungsformen von Bereichsklonoperationen ab, die durch Verwenden einer Indirektionsschicht implementiert sind;
  • 6 bildet Ausführungsformen von Deduplizierungsoperationen ab;
  • 7 ist ein Blockdiagramm, das eine Ausführungsform eines Systems abbildet, das eine Ablagespeicherschicht umfasst, die konfiguriert ist, Speicherauszugsoperationen effizient zu implementieren;
  • 8A–E bilden Ausführungsformen von Bereichsverschiebungsoperationen ab;
  • 9A ist ein Blockdiagramm eines Systems, das eine Ablagespeicherschicht umfasst, die konfiguriert ist, effiziente Dateimanagementoperationen zu implementieren;
  • 9B bildet eine Ausführungsform einer Ablagespeicherschicht ab, die konfiguriert ist, mmap-Fixpunkte abzubilden;
  • 9C bildet Ausführungsformen von Bereichsklon- und Bereichszusammenfassungsoperationen ab, die durch eine Ablagespeicherschicht implementiert sind;
  • 9D bildet weitere Ausführungsformen von Bereichsklon- und Bereichszusammenfassungsoperationen ab;
  • 9E bildet weitere Ausführungsformen von Bereichsklon- und Bereichszusammenfassungsoperationen ab;
  • 9F ist ein Blockdiagramm einer Ausführungsform eines Systems, das eine Ablagespeicherschicht umfasst, die konfiguriert ist, effiziente Schließen-bis-Öffnen-Dateikonsistenz zu implementieren;
  • 9G bildet weitere Ausführungsformen von Öffnen-bis-Schließen-Dateikonsistenz ab;
  • 10 bildet eine Ausführungsform eines Systems ab, das eine Ablagespeicherschicht umfasst, die konfiguriert ist, atomare Ablagespeicheroperationen zu implementieren;
  • 11 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zum Managen einer logischen Schnittstelle des Datenablagespeichers in einem kontextabhängigen Format auf einem nichtflüchtigen Ablagespeichermedium;
  • 12 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zum Managen einer logischen Schnittstelle kontextabhängiger Daten;
  • 13 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zum Managen einer logischen Schnittstelle kontextabhängiger Daten;
  • 14 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zum Managen von Bereichszusammenfassungsoperationen;
  • 15 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zum Managen von Bereichsklonoperationen;
  • 16 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zum Managen von Bereichszusammenfassungsoperationen; und
  • 17 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zum Implementieren von Öffnen-bis-Schließen-Dateikonsistenz.
  • Ausführliche Beschreibung
  • 1A ist ein Blockdiagramm einer Ausführungsform eines Computersystems 100, das eine Ablagespeicherschicht 130 umfasst, die konfiguriert ist, Ablagespeicherdienste für einen oder mehrere Ablagespeicher-Clients 106 bereitzustellen. Die Ablagespeicherschicht 130 kann konfiguriert sein, Öffnen-bis-Schließen-Dateidienste bereitzustellen, wie hier in mehr Einzelheiten offenbart ist. Das Computersystem 100 kann jede geeignete Computervorrichtung umfassen, die einen Server, einen Desktop, einen Laptop, ein eingebettetes System, eine mobile Vorrichtung und/oder dergleichen enthält, jedoch nicht darauf beschränkt ist. In einigen Ausführungsformen kann das Computersystem 100 mehrere Computervorrichtungen enthalten, wie z. B. einen Cluster aus Server-Computervorrichtungen. Das Computersystem 100 kann Verarbeitungsbetriebsmittel 101, flüchtige Speicherbetriebsmittel 102 (z. B. Direktzugriffsspeicher (RAM)), nichtflüchtige Ablagespeicherbetriebsmittel 103 und eine Kommunikationsschnittstelle 104 umfassen. Die Verarbeitungsbetriebsmittel 101 können zentrale Allzweck-Verarbeitungseinheiten (Allzweck-CPUs), anwendungsspezifische integrierte Schaltungen (ASICs) und programmierbare Logikelemente wie z. B. programmierbare Gate-Arrays (FPGAs), programmierbare Logik-Arrays (PLGs) und dergleichen enthalten, sind jedoch nicht darauf beschränkt. Die nichtflüchtigen Ablagespeicherbetriebsmittel 103 können ein nichtflüchtiges maschinenlesbares Ablagespeichermedium wie z. B. eine Magnetfestplatte, ein Festkörperspeichermedium, ein optisches Speichermedium und/oder dergleichen umfassen. Die Kommunikationsschnittstelle 104 kann konfiguriert sein, das Computersystem 100 kommunikativ mit einem Netz 105 zu koppeln. Das Netz 105 kann jedes geeignete Kommunikationsnetz umfassen, das ein Übertragungssteuerungsprotokoll/Internetprotokoll-Netz (TCP/IP-Netz), ein lokales Netz (LAN), ein Weitbereichsnetz (WAN), ein virtuelles privates Netz (VPN), ein Ablagespeicherbereichsnetz (SAN), ein öffentliches Telefonnetz (PSTN), das Internet und/oder dergleichen enthält, jedoch nicht darauf beschränkt ist.
  • Das Computersystem 100 kann eine Ablagespeicherschicht 130 enthalten, die konfiguriert sein kann, Ablagespeicherdienste für einen oder mehrere Ablagespeicher-Clients 106 bereitzustellen. Die Ablagespeicher-Clients 106 können Betriebssysteme (die ”nackte” Betriebssysteme, Gast-Betriebssysteme, virtuelle Maschinen, Virtualisierungsumgebungen und dergleichen enthalten), Dateisysteme, Datenbanksysteme, entfernte Ablagespeicher-Clients (z. B. Ablagespeicher-Clients, die mit dem Computersystem 100 und/oder der Ablagespeicherschicht 130 durch das Netz 105 kommunikativ gekoppelt sind) und/oder dergleichen enthalten, sind jedoch nicht darauf beschränkt.
  • Die Ablagespeicherschicht 130 (und/oder deren Module) kann in Software, Hardware oder eine Kombination daraus implementiert sein. In einigen Ausführungsformen sind Abschnitte der Ablagespeicherschicht 130 als ausführbare Befehle verwirklicht, wie z. B. Computerprogrammcode, der auf einem persistenten, nichtflüchtigen Ablagespeichermedium wie z. B. den nichtflüchtigen Ablagespeicherbetriebsmitteln 103 gespeichert sein kann. Die Befehle und/oder der Computerprogrammcode können zum Ausführen durch die Verarbeitungsbetriebsmittel 101 konfiguriert sein. Alternativ oder zusätzlich können Abschnitte der Ablagespeicherschicht 130 als Maschinenkomponenten verwirklicht sein, wie z. B. allgemeine und/oder anwendungsspezifische Komponenten, programmierbare Hardware, FPGAs, ASICs, Hardware-Steuereinheiten, Ablagespeichersteuereinheiten und/oder dergleichen.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, Ablagespeicheroperationen auf einem Ablagespeichermedium 140 auszuführen. Das Ablagespeichermedium 140 kann jedes Ablagespeichermedium umfassen, das Daten persistent speichern kann. Wie hier verwendet bezieht sich ”persistente” Datenspeicherung auf das Speichern von Informationen auf einem persistenten, nichtflüchtigen Ablagespeichermedium. Das Ablagespeichermedium 140 kann nichtflüchtige Ablagespeichermedien wie z. B. Festkörperablagespeichermedien in einer oder mehreren FestkörperAblagespeichervorrichtungen oder Laufwerken (SSD), Festplattenlaufwerke (z. B. Laufwerke mit integrierter Ansteuerungselektronik (IDE-Laufwerke), Laufwerke mit einer Schnittstelle für kleine Computersysteme (SCSI-Laufwerke), seriell angeschlossene SCSI-Laufwerke (SAS-Laufwerke), serielle AT-Anschluss-Laufwerke (SATA-Laufwerke), usw.), Magnetbandlaufwerke, beschreibbare optische Laufwerke (z. B. CD-Laufwerke, DVD-Laufwerke, Blu-Ray-Laufwerke, usw.) und/oder dergleichen enthalten.
  • In einigen Ausführungsformen umfasst das Ablagespeichermedium 140 nichtflüchtigen Festkörperspeicher, der NAND-Flash-Speicher, NOR-Flash-Speicher, Nano-RAM (NRAM), magnetoresistiven RAM (MRAM), Phasenänderungs-RAM (PRAM), Racetrack-Speicher, Memristor-Speicher, nanokristallinen drahtbasierten Speicher, siliziumoxidbasierten Sub-10-Nanometer-Prozessspeicher, Graphen-Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), Resistiven Direktzugriffsspeicher (RRAM), programmierbare Metallisierungszelle (PMC), RAM mit leitender Überbrückung (CBRAM) und/oder dergleichen enthalten kann, jedoch nicht darauf beschränkt ist. Obwohl spezielle Ausführungsformen des Ablagespeichermediums 140 hier offenbart sind, könnten die Erkenntnisse dieser Offenbarung auf jede geeignete Form von Speicher angewandt werden, die sowohl nichtflüchtige als auch flüchtige Formen enthält. Dementsprechend kann, obwohl spezielle Ausführungsformen der Ablagespeicherschicht 130 im Kontext von nichtflüchtigen FestkörperAblagespeichervorrichtungen 140 offenbart sind, die Ablagespeicherschicht 130 mit anderen Ablagespeichervorrichtungen und/oder Ablagespeichermedien verwendet werden.
  • In einigen Ausführungsformen enthält das Ablagespeichermedium 140 flüchtigen Speicher, der RAM, dynamischen RAM (DRAM), statischen RAM (SRAM), synchronen statischen RAM (SDRAM) usw. enthalten kann, jedoch nicht darauf beschränkt ist. Das Ablagespeichermedium 140 kann dem Speicher der Verarbeitungsbetriebsmittel 101, wie z. B. einem CPU-Cache (z. B. L1-, L2-, L3-Cache, usw.), Graphikspeicher und/oder dergleichen, entsprechen. In einigen Ausführungsformen ist das Ablagespeichermedium 140 mit der Ablagespeicherschicht 130 durch Verwenden einer Zusammenschaltung 127 kommunikativ gekoppelt. Die Zusammenschaltung 127 kann eine Zusammenschaltung peripherer Komponenten (PCI), PCI-Express (PCI-e), serieller Anschluss mit verbesserter Technologie (serieller ATA oder SATA), paralleler ATA (PATA), Schnittstelle für kleine Computersysteme (SCSI), IEEE 1394 (FireWire), Lichtleiterkanal, universeller serieller Bus (USB) und/oder dergleichen enthalten, ist jedoch nicht darauf beschränkt. Alternativ kann das Ablagespeichermedium 140 eine entfernte AblageAblagespeichervorrichtung sein, die mit der Ablagespeicherschicht 130 durch das Netz 105 (und/oder eine andere Kommunikationsschnittstelle, wie z. B. ein Ablagespeicherbereichsnetz (SAN), ein virtuelles Ablagespeicherbereichsnetz (VSAN) und/oder dergleichen) kommunikativ gekoppelt ist. Die Zusammenschaltung 127 kann deshalb einen entfernten Bus, wie z. B. einen PCE-e-Bus, eine Netzverbindung (z. B. Infiniband), ein Ablagespeichernetz, Lichtleiterkanalprotokoll-Netz (FCP-Netz), HyperSCSI und/oder dergleichen umfassen.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, Ablagespeicheroperationen auf dem Ablagespeichermedium 140 unter anderem durch Verwenden der Ablagespeichersteuereinheit 139 zu managen. Die Ablagespeichersteuereinheit 139 kann Software und/oder Hardwarekomponenten umfassen, die einen oder mehrere Treiber und/oder andere Software-Module, die auf dem Computersystem 100 arbeiten, wie z. B. Speichertreiber, I/O-Treiber, Filtertreiber und/oder dergleichen; Hardware-Komponenten wie z. B. Hardware-Steuereinheiten, Kommunikationsschnittstellen und/oder dergleichen; und so weiter, enthalten, jedoch nicht darauf beschränkt sind. Das Ablagespeichermedium 140 kann auf einer Ablagespeichervorrichtung 141 verwirklicht sein. Abschnitte der Ablagespeicherschicht 130 (z. B. die Ablagespeichersteuereinheit 139) können als Hardware und/oder Software-Komponenten (z. B. Firmware) der Ablagespeichervorrichtung 141 implementiert sein.
  • Die Ablagespeichersteuereinheit 139 kann konfiguriert sein, Ablagespeicheroperationen an speziellen Ablagespeicherorten des Ablagespeichermediums 140 zu implementieren. Wie hier verwendet bezieht sich ein Ablagespeicherort auf eine Ablagespeichereinheit eines Ablagespeicherbetriebsmittels (z. B. eines Ablagespeichermediums und/oder einer AblageAblagespeichervorrichtung), das Daten persistent speichern kann; Ablagespeicherorte können Seiten, Gruppen von Seiten (z. B. logische Seiten und/oder Versatz innerhalb einer logischen Seite), Ablagespeicherabteilungen (z. B. physikalische Löschblöcke, logische Löschblöcke, usw.), Sektoren, Orte auf einer Magnetplatte, batteriegestützte Speicherorte, und/oder dergleichen enthalten, sind jedoch nicht darauf beschränkt. Die Ablagespeicherorte können innerhalb eines Speicheradressraums 144 des Ablagespeichermediums 140 adressierbar sein. Ablagespeicheradressen können physikalischen Adressen, Medienadressen, Backend-Adressen, Adressversatz und/oder dergleichen entsprechen. Ablagespeicheradressen können jedem/jeder geeigneten Ablagespeicheradressraum 144, Ablagespeicheradressschema und/oder Anordnung von Ablagespeicherorten entsprechen.
  • Die Ablagespeicherschicht 130 kann eine Schnittstelle 131 umfassen, durch die Ablagespeicher-Clients 106 auf Ablagespeicherdienste, die durch die Ablagespeicherschicht 130 bereitgestellt sind, zugreifen können. Die Ablagespeicherschnittstelle 131 kann eines oder mehrere aus einer Blockvorrichtungsschnittstelle, einer virtualisierten Ablagespeicherschnittstelle, einer oder mehreren virtuellen Ablagespeichereinheiten (VSUs), einer Objektablagespeicherschnittstelle, einer Datenbankablagespeicherschnittstelle und/oder einer anderen geeigneten Schnittstelle und/oder Anwendungsprogrammierschnittstelle (API) enthalten.
  • Die Ablagespeicherschicht 130 kann Referenzieren von Ablagespeicherbetriebsmitteln durch eine Frontend-Ablagespeicherschnittstelle bereitstellen. Wie hier verwendet bezieht sich eine ”Frontend-Ablagespeicherschnittstelle” auf eine Schnittstelle und/oder einen Namensraum, durch die/den Ablagespeicher-Clients 106 die Ablagespeicherbetriebsmittel der Ablagespeicherschicht 130 referenzieren können. Eine Ablagespeicherschnittstelle kann einem logischen Adressraum 132 entsprechen. Der logische Adressraum 132 kann eine Gruppe, eine Menge, eine Kollektion, einen Bereich und/oder eine Spanne von Kennungen umfassen. Wie hier verwendet bezieht sich eine ”Kennung” oder ”logische Kennung” (LID) auf eine Kennung zum Referenzieren eines Quellbetriebsmittels; LIDs können Namen (z. B. Dateinamen, unterscheidbare Namen und/oder dergleichen), Datenkennungen, Referenzen, Verknüpfungen, LIDs, Frontend-Kennungen, logische Adressen, logische Blockadressen (LBAs), logische Einheitennummer-Adressen (LUN-Adressen), virtuelle Einheitsnummer-Adressen (VUN-Adressen), virtuelle Ablagespeicheradressen, Ablagespeicheradressen, physikalische Adressen, Medienadressen, Backend-Adressen und/oder dergleichen enthalten, sind jedoch nicht darauf beschränkt.
  • Die logische Kapazität des logischen Adressraums 132 kann der Anzahl von LIDs in dem logischen Adressraum 132 und/oder der Größe und/oder Granularität der Ablagespeicherbetriebsmittel, die durch die LIDs referenziert werden, entsprechen. In einigen Ausführungsformen kann der logische Adressraum 132 ”schlank zugewiesen” sein. Wie hier verwendet bezieht sich ein schlank zugewiesener logischer Adressraum 132 auf einen logischen Adressraum 132, der eine logische Kapazität aufweist, die die physikalische Ablagespeicherkapazität der zugrundeliegenden Ablagespeicherbetriebsmittel übersteigt (z. B. die Ablagespeicherkapazität des Ablagespeichermediums 140 übersteigt). In einer Ausführungsform ist die Ablagespeicherschicht 130 konfiguriert, einen logischen 64-Bit-Adressraum 132 (z. B. einen logischen Adressraum, der 2^26 eindeutige LIDs umfasst) bereitzustellen, was die logische Ablagespeicherkapazität des Ablagespeichermediums 140 übersteigen kann. Der große schlank zugewiesene logische Adressraum 132 kann es ermöglichen, dass Ablagespeicher-Clients 106 zusammenhängende Bereiche von LIDs effizient zuweisen und/oder referenzieren, während die Wahrscheinlichkeit für Benennungskonflikte reduziert ist. Weitere Ausführungsformen von Systemen und Verfahren zur Ablagespeicherzuweisung sind in der Patentschrift der Vereinigten Staaten Nr. 13/865,153 mit dem Titel ”Systems and Methods for Storage Allocation”, eingereicht am 17. April 2013 für David Flynn u. a., offenbart, die hiermit durch Bezugnahme vollständig mit aufgenommen ist.
  • Das Umsetzungsmodul 134 der Ablagespeicherschicht 130 kann konfiguriert sein, LIDs des logischen Adressraums 132 auf Ablagespeicherbetriebsmittel (z. B. Daten, die innerhalb des Ablagespeicheradressraums 144 des Ablagespeichermediums 140 gespeichert sind) abzubilden. Der logische Adressraum 132 kann von den Backend-Ablagespeicherbetriebsmitteln (z. B. dem Ablagespeichermedium 140) unabhängig sein; dementsprechend können keine eingestellten oder vorbestimmten Abbildungen zwischen LIDs des logischen Adressraums 132 und den Ablagespeicheradressen des Ablagespeicheradressraums 144 vorhanden sein. In einigen Ausführungsformen ist der logische Adressraum 132 dünn, schlank zugewiesen und/oder im Überfluss zugewiesen, so dass die Größe des logischen Adressraums 132 von dem Ablagespeicheradressraum 144 des Ablagespeichermediums 140 verschieden ist.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, Ablagespeichermetadaten 135 zu pflegen, die zu Ablagespeicheroperationen gehören, die auf dem Ablagespeichermedium 140 ausgeführt werden. Die Ablagespeichermetadaten 135 können eine Weiterleitungsabbildung, die Jede-auf-jede-Abbildungen zwischen LIDs des logischen Adressraums 132 und Ablagespeicheradressen innerhalb des Ablagespeicheradressraums 144 umfasst, eine Umkehrabbildung, die zu den Inhalten der Ablagespeicherorte des Ablagespeichermediums 140 gehören, Gültigkeits-Bitmaps, Zuverlässigkeitstest- und/oder Status-Metadaten, Statusinformationen (z. B. Fehlerrate, Rückzugsstatus, und so weiter), Cache-Metadaten und/oder dergleichen, enthalten, jedoch nicht darauf beschränkt sind. Abschnitte der Ablagespeichermetadaten 135 können innerhalb der flüchtigen Speicherbetriebsmittel 102 des Computersystems 100 gepflegt werden. Alternativ oder zusätzlich können Abschnitte der Ablagespeichermetadaten 135 in nichtflüchtigen Ablagespeicherbetriebsmitteln 103 und/oder dem Ablagespeichermedium 140 gespeichert sein.
  • 1B bildet eine Ausführungsform von Jede-auf-jede-Abbildungen 150 zwischen LIDs des logischen Adressraums 132 und Backend-Kennungen (z. B. Ablagespeicheradressen) innerhalb des Ablagespeicheradressraums 144 ab. Die Jede-auf-jede-Abbildungen 150 können in einer oder mehreren Datenstrukturen der Ablagespeichermetadaten 135 gepflegt werden. Wie in 1B dargestellt, kann das Umsetzungsmodul 134 konfiguriert sein, jede Ablagespeicherbetriebsmittelkennung (jede LID) auf jeden Backend-Ablagespeicherort abzubilden. Wie ferner dargestellt ist, kann der logische Adressraum 132 anders dimensioniert sein als der zugrunde liegende Ablagespeicheradressraum 144. In der Ausführungsform von 1B kann der logische Adressraum 132 schlank zugewiesen sein und kann als solcher einen größeren Bereich von LIDs umfassen als der Bereich der Ablagespeicheradressen in dem Ablagespeicheradressraum 144.
  • Wie vorstehend offenbart können Ablagespeicher-Clients 106 Ablagespeicherbetriebsmittel durch die LIDs des logischen Adressraums 132 referenzieren. Dementsprechend kann der logische Adressraum 132 einer logischen Schnittstelle 152 der Ablagespeicherbetriebsmittel entsprechen, und die Abbildungen auf spezielle Ablagespeicheradressen innerhalb des Ablagespeicheradressraums 144 kann einer Backend-Schnittstelle 154 der Ablagespeicherbetriebsmittel entsprechen.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, die Jede-auf-jede-Abbildungen 150 zwischen der logischen Schnittstelle 152 und der Backend-Schnittstelle 154 in einer Vorwärtsabbildung 160 zu pflegen. Die Vorwärtsabbildung 160 kann jede geeignete Datenstruktur umfassen, die einen Index, eine Abbildung, eine Hash-Abbildung, eine Hash-Tabelle, einen Baum, einen bereichscodierten Baum, einen b-Baum und/oder dergleichen enthält, jedoch nicht darauf beschränkt ist. Die Vorwärtsabbildung 160 kann Einträge 162 umfassen, die LIDs entsprechen, die zum Verwenden, um Daten, die auf dem Ablagespeichermedium 140 gespeichert sind, zu referenzieren, zugewiesen worden sind. Die Einträge 162 der Vorwärtsabbildung 160 können LIDs 164A–D jeweiligen Ablagespeicheradressen 166A–D innerhalb der Ablagespeicheradressraums 144 zuordnen. Die Vorwärtsabbildung 160 kann dünn besetzt sein, und kann als solche Einträge weglassen, die LIDs entsprechen, die aktuell nicht durch einen Ablagespeicher-Client 106 zugewiesen sind und/oder aktuell nicht verwendet werden, um gültige Daten, die auf dem Ablagespeichermedium 140 gespeichert sind, zu referenzieren. In einigen Ausführungsformen umfasst die Vorwärtsabbildung 160 eine bereichscodierte Datenstruktur, so dass einer oder mehrere aus den Einträgen 162 mehreren LIDs entsprechen kann (z. B. einem Bereich, einer Spanne und/oder Menge von LIDs). In der Ausführungsform von 1B enthält die Vorwärtsabbildung 160 einen Eintrag 162, der einem Bereich von LIDs 164A entspricht, die auf einen entsprechenden Bereich von Ablagespeicheradressen 166A abgebildet sind. Die Einträge 162 können durch LIDs indiziert sein. In der Ausführungsform von 1B sind die Einträge 162 durch jeweilige Verknüpfungen in eine Baumdatenstruktur angeordnet. Die Offenbarung ist jedoch in dieser Hinsicht nicht beschränkt und könnte angepasst werden, um jede/n geeignete/n Datenstruktur und/oder Indizierungsmechanismus zu verwenden.
  • Bezug nehmend auf 1C kann in einigen Ausführungsformen das Ablagespeichermedium 140 ein Festkörperablagespeicher-Array 115 umfassen, das mehrere Festkörperablagespeicherelemente 116A–Y umfasst. Wie hier verwendet bezieht sich ein Festkörperablagespeicher-Array (oder Ablagespeicher-Array) 115 auf eine Menge aus zwei oder mehr unabhängigen Spalten 118. Eine Spalte 118 kann ein oder mehrere Festkörperablagespeicherelemente 116A–Y umfassen, die mit der Ablagespeicherschicht 130 unter Verwendung, unter anderem, der Zusammenschaltung 127 parallel gekoppelt sind. Zeilen 117 des Arrays 115 können physikalische Ablagespeichereinheiten der jeweiligen Spalten 118 enthalten (Festkörperablagespeicherelemente 116A–Y). Wie hier verwendet enthält ein Festkörperablagespeicherelement 116A–Y Festkörperablagespeicherbetriebsmittel, die als ein Paket, ein Baustein, ein Chip, eine Ebene, eine Leiterplatte und/oder dergleichen ausgeführt sind, ist jedoch nicht darauf beschränkt. Die Festkörperablagespeicherelemente 116A–Y, die das Array 115 umfassen, können zur unabhängigen Operation fähig sein. Dementsprechend kann ein erstes aus den Festkörperablagespeicherelementen 116A fähig sein, eine erste Ablagespeicheroperation auszuführen, während ein zweites Festkörperablagespeicherelement 116E eine andere Ablagespeicheroperation ausführt. Beispielsweise kann das Festkörperablagespeicherelement 116A konfiguriert sein, Daten an einer ersten physikalischen Adresse zu lesen, während ein weiteres Festkörperablagespeicherelement 116B Daten an einer anderen physikalischen Adresse liest.
  • Ein Festkörperablagespeicher-Array 115 kann auch als ein logisches Ablagespeicherelement (LSE) bezeichnet sein. Wie hier in weiteren Einzelheiten offenbart, kann das Festkörperablagespeicher-Array 115 logische Ablagespeichereinheiten (Zeilen 117) umfassen. Wie hier verwendet bezieht sich eine ”logische Ablagespeichereinheit” oder Zeile 117 auf eine Kombination aus zwei oder mehr physikalischen Ablagespeichereinheiten, wobei sich jede physikalische Ablagespeichereinheit auf einer jeweiligen Spalte 118 des Array 115 befindet. Ein logischer Löschblock bezieht sich auf eine Gruppe aus zwei oder mehr physikalischen Löschblöcken, eine logische Seite bezieht sich auf eine Gruppe aus zwei oder mehr Seiten, und so weiter. In einigen Ausführungsformen kann ein logischer Löschblock Löschblöcke innerhalb jeweiliger logischer Ablagespeicherelemente 115 und/oder Bänke umfassen. Alternativ kann ein logischer Löschblock Löschblöcke innerhalb mehrerer unterschiedlicher Arrays 115 umfassen und/oder kann mehrere Bänke von Festkörperablagespeicherelementen umspannen.
  • Bezug nehmend zurück zu 1A kann die Ablagespeicherschicht 130 ferner ein Log-Ablagespeichermodul 136 umfassen, das konfiguriert ist, Daten auf dem Ablagespeichermedium 140 in einer Log-strukturierten Ablagespeicherkonfiguration (z. B. in einem Ablagespeicher-Log) zu speichern. Wie hier verwendet bezieht sich ”Ablagespeicher-Log” oder ”Log-Struktur” auf eine geordnete Anordnung von Daten innerhalb des Ablagespeicheradressraums 144 des Ablagespeichermediums 140. Daten in dem Ablagespeicher-Log können persistente Metadaten umfassen und/oder ihnen zugeordnet sein. Dementsprechend kann die Ablagespeicherschicht 130 konfiguriert sein, Daten in einem kontextabhängigen, selbstbeschreibenden Format zu speichern. Wie hier verwendet bezieht sich ein kontextabhängiges oder selbstbeschreibendes Format auf ein Datenformat, in dem Daten in Zuordnung zu persistenten Metadaten gespeichert sind. In einigen Ausführungsformen können die persistenten Metadaten konfiguriert sein, die Daten zu identifizieren, und können als solche die logische Schnittstelle der Daten umfassen und/oder referenzieren (können z. B. die LID(s), die den Daten zugeordnet sind, umfassen). Die persistenten Metadaten können andere Informationen enthalten, die Informationen, die zu dem Eigentümer der Daten gehören, Zugriffssteuerungen, Datentypen, relative Position oder Versatz der Daten, Informationen, die zu den Speicheroperation(en) gehören, die den Daten zugeordnet sind (z. B. atomare Ablagespeicheroperationen, Transaktionen und/oder dergleichen), Log-Reihenfolgeinformationen, Datenspeicherparameter (z. B. Komprimierungsalgorithmus, Verschlüsselung, usw.) und/oder dergleichen enthalten, sind jedoch nicht darauf beschränkt.
  • 1D stellt eine Ausführungsform eines kontextabhängigen Datenformats dar. Das Paketformat 110 von 1D umfasst ein Datensegment 112 und persistente Metadaten 114. Das Datensegment 112 kann von jeder beliebigen Länge und/oder Größe sein. Die persistenten Metadaten 114 können als ein oder mehrere Kopffelder des Datenpakets 110 verwirklicht sein. Wie vorstehend offenbart können die persistenten Metadaten 114 die logische Schnittstelle des Datensegments 112 umfassen und können als solche die LID(s) enthalten, die dem Datensegment 112 zugeordnet ist/sind. Obwohl 1D ein Paketformat 110 abbildet, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte Daten (z. B. das Datensegment 112) kontextabhängigen Metadaten auf andere Arten zuordnen, die einen Index auf dem Ablagespeichermedium 140, einen Ablagespeicherabteilungsindex und/oder dergleichen enthalten, jedoch nicht darauf beschränkt sind. Datenpakete 110 können Folgeinformationen 113 zugeordnet sein. Die Folgeinformationen können verwendet werden, um die relative Reihenfolge der Datenpakete innerhalb des Ablagespeicher-Logs zu bestimmen. In einigen Ausführungsformen werden Datenpakete der Reihe nach innerhalb Ablagespeicherabteilungen des Ablagespeichermediums 140 angehängt. Die Ablagespeicherabteilungen können Löschblöcken, logischen Löschblöcken oder dergleichen entsprechen. Jede Ablagespeicherabteilung kann imstande sein, eine große Anzahl von Datenpaketen 110 zu speichern. Die relative Position der Datenpakete 110 innerhalb einer Ablagespeicherabteilung kann die Reihenfolge der Pakete innerhalb des Ablagespeicher-Logs bestimmen. Die Reihenfolge der Ablagespeicherabteilungen kann unter anderem durch Ablagespeicherabteilungsfolgeinformationen 113 bestimmt werden. Ablagespeicherabteilungen können jeweiligen Folgeinformationen 113 zu der Zeit zugewiesen werden, zu der die Ablagespeicherabteilung für den Gebraucht initialisiert (z. B. gelöscht), programmiert, geschlossen wird oder dergleichen. Die Ablagespeicherabteilungsfolgeinformationen 113 können eine geordnete Folge der Ablagespeicherabteilungen innerhalb des Ablagespeicheradressraums 144 bestimmen. Dementsprechend kann die relative Reihenfolge eines Datenpakets 110 innerhalb des Ablagespeicher-Logs bestimmt werden durch: a) die relative Position des Datenpakets 110 innerhalb einer speziellen Ablagespeicherabteilung und b) die Reihenfolge der Ablagespeicherabteilung relativ zu anderen Ablagespeicherabteilungen in dem Ablagespeicheradressraum 144.
  • In einigen Ausführungsformen kann die Ablagespeicherschicht 130 konfiguriert sein, ein asymmetrisches, einmal beschreibbares Ablagespeichermedium 140 wie z. B. ein Festkörperablagespeichermedium, Flash-Ablagespeichermedium oder dergleichen zu managen. Wie hier verwendet bezieht sich ein ”einmal beschreibbares” auf ein Ablagespeichermedium, das jedes Mal, wenn neue Daten darauf geschrieben oder programmiert werden, neu initialisiert (z. B. gelöscht) wird. Wie hier verwendet bezieht sich ein ”asymmetrisches” Ablagespeichermedium auf ein Ablagespeichermedium, das für unterschiedliche Typen von Ablagespeicheroperationen unterschiedliche Latenz aufweist. In einigen Ausführungsformen können beispielsweise Leseoperationen schneller sein als Schreib/Programmieroperationen, und Schreib/Programmieroperationen können viel schneller sein als Löschoperationen (z. B. Lesen der Medien kann mehrere hundert Mal schneller als Löschen und mehrere zehn Mal schneller sein als Programmieren des Ablagespeichermediums sein). Das Ablagespeichermedium 140 kann in Ablagespeicherabteilungen, die als eine Gruppe gelöscht werden können (z. B. Löschblöcke) partitioniert sein. Als solches kann das Modifizieren eines einzelnen Datensegments ”am Ort” das Löschen des gesamten Löschblocks, der die Daten umfasst, und Neuschreiben der modifizierten Daten auf den Löschblock zusammen mit den ursprünglichen, unveränderten Daten erfordern. Das kann zu ineffizienter ”Schreibverstärkung” führen, die die Medien übermäßig verschleißen kann. In einigen Ausführungsformen kann deshalb die Ablagespeicherschicht 130 konfiguriert sein, Daten ”außerhalb des Orts” zu schreiben. Wie hier verwendet bezieht sich das Schreiben von Daten ”außerhalb des Orts” auf Aktualisieren und/oder Überschreiben von Daten an (einem) anderen Ablagespeicherort(en) anstelle des Überschreibens der Daten ”am Ort” (z. B. Überschreiben des ursprünglichen physikalischen Ablagespeicherorts der Daten). Aktualisieren und/oder Überschreiben von Daten außerhalb des Orts kann die Schreibverstärkung vermeiden, da existierende gültige Daten auf dem Löschblock mit den Daten, die modifiziert werden sollen, nicht gelöscht und neu kopiert werden müssen. Außerdem kann das Schreiben von Daten außerhalb des Orts das Löschen aus dem Latenzpfad mehrerer Ablagespeicheroperationen entfernen, so dass Löschlatenz nicht Teil des ”kritischen Pfads” von Schreiboperationen ist.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, Ablagespeicheroperationen außerhalb des Orts durch Verwenden von, unter anderen, des Log-Ablagespeichermoduls 136 auszuführen. Das Log-Ablagespeichermodul 136 kann konfiguriert sein, Daten an einem aktuellen Anhängepunkt innerhalb des Ablagespeicheradressraums 144 auf eine Weise anzuhängen, die die relative Reihenfolge der Ablagespeicheroperationen, die durch die Ablagespeicherschicht 130 ausgeführt werden, aufrechterhält, indem sie ein ”Ablagespeicher-Log” auf dem Ablagespeichermedium 140 bildet. 1E bildet eine Ausführungsform von Ablagespeicheroperationen lediglich zum Anhängen ab, die innerhalb des Ablagespeicheradressraums 144 des Ablagespeichermediums 140 ausgeführt werden. Wie vorstehend offenbart, umfasst der Ablagespeicheradressraum 144 mehrere Ablagespeicherabteilungen 170A–N (z. B. Löschblöcke, logische Löschblöcke oder dergleichen), von denen jeder zum Gebrauch zum Speichern von Daten initialisiert (z. B. gelöscht) werden kann. Die Ablagespeicherabteilungen 170A–N können jeweilige Ablagespeicherorte umfassen, die Seiten, logischen Seiten und/oder dergleichen entsprechen können, wie hier offenbart ist. Die Ablagespeicherorte können jeweiligen Ablagespeicheradressen (z. B. der Ablagespeicheradresse 0 bis Ablagespeicheradresse N) zugewiesen sein.
  • Das Log-Ablagespeichermodul 136 kann konfiguriert sein, Daten der Reihe nach ab einem Anhängepunkt 180 innerhalb der physikalischen Adressraums 144 zu speichern. In der Ausführungsform von 1E können Daten an dem Anhängepunkt 180 innerhalb des Ablagespeicherorts 182 der Ablagespeicherabteilung 170A angehängt werden und, wenn der Ablagespeicherort 182 gefüllt ist, kann der Anhängepunkt 180 zu dem nächsten verfügbaren Speicherort weitergehen 181. Wie hier verwendet bezieht sich ein ”verfügbarer” Ablagespeicherort auf einen Ablagespeicherort, der initialisiert worden ist und noch nicht programmiert worden ist (z. B. gelöscht worden ist). Wie vorstehend offenbart, können einige Typen von Ablagespeichermedien nach dem Löschen nur einmal zuverlässig programmiert werden. Dementsprechend kann sich ein verfügbarer Ablagespeicherort auf einen Ablagespeicherort innerhalb einer Ablagespeicherabteilung 170A–N beziehen, die sich in einem initialisierten (oder gelöschten) Zustand befindet.
  • In der Ausführungsform von 1E kann der logische Löschblock 170B zum Speichern nicht verfügbar sein aufgrund dessen, unter anderem, dass er, nicht in einem gelöschten Zustand ist (z. B. gültige Daten umfasst), aufgrund hoher Fehlerraten außer Betrieb ist, oder dergleichen. Deshalb kann das Log-Ablagespeichermodul 136 nach dem Füllen des Ablagespeicherorts 182 den nicht verfügbaren Ablagespeicherbereich 170B überspringen und den Anhängepunkt 180 zu der nächsten verfügbaren Ablagespeicherabteilung 170C vorrücken. Das Log-Ablagespeichermodul 136 kann konfiguriert sein, mit dem Anhängen von Daten bis zu den Ablagespeicherorten 183185 fortzufahren, wobei an diesem Punkt der Anhängepunkt 180 an einer nächsten verfügbaren Ablagespeicherabteilung 170A–N fortfährt, wie vorstehend offenbart.
  • Nach dem Speichern von Daten auf dem ”letzten” Ablagespeicherort innerhalb des Ablagespeicheradressraums 144 (z. B. dem Ablagespeicherort N 189 der Ablagespeicherabteilung 170N) kann das Log-Ablagespeichermodul 136 den Anhängepunkt 180 durch Zurückspringen zu der ersten Ablagespeicherabteilung 170A (oder zu der nächsten verfügbaren Ablagespeicherabteilung, falls die Ablagespeicherabteilung 170A nicht verfügbar ist) vorrücken. Dementsprechend kann das Log-Ablagespeichermodul 136 den Ablagespeicheradressraum 144 als eine Schleife oder einen Zyklus behandeln.
  • Wie vorstehend offenbart kann das Anhängen von Daten der Reihe nach innerhalb des Ablagespeicheradressraums 144 ein Ablagespeicher-Log auf dem Ablagespeichermedium 140 erzeugen. In der Ausführungsform von 1E kann das Ablagespeicher-Log die geordnete Folge von Ablagespeicheroperationen umfassen, die durch Speichern von Datenpaketen (und/oder anderen Datenstrukturen) ab dem Anhängepunkt 180 innerhalb des Ablagespeicheradressraums 144 der Reihe nach ausgeführt werden. Das Ablagespeicherformat nur zum Anhängen kann verwendet werden, um Daten außerhalb des Orts zu modifizieren und/oder zu überschreiben, wie vorstehend offenbart. Ausführen von Ablagespeicheroperationen außerhalb des Orts kann Schreibverstärkung vermeiden, da existierende gültige Daten auf den Ablagespeicherabteilungen 170A–N, die die Daten umfassen, die modifiziert und/oder überschrieben werden, nicht gelöscht und/oder erneut kopiert werden müssen. Außerdem kann das Schreiben von Daten außerhalb des Orts das Löschen aus dem Latenzpfad vieler Ablagespeicheroperationen entfernen (Löschlatenz nicht mehr Teil des ”kritischen Pfads” einer Schreiboperation).
  • In der Ausführungsform von 1E kann ein Datensegment X0, das einer LID A entspricht, an dem Ablagespeicherort 191 gespeichert sein. Das Datensegment X0 kann in dem selbstbeschreibenden Paketformat 110, das vorstehend offenbart ist, gespeichert sein. Das Datensegment 112 des Pakets 110 kann das Datensegment X0 umfassen, und die persistenten Metadaten 114 können die LID(s), die dem Datensegment zugeordnet sind (z. B. die LID A), umfassen. Ein Ablagespeicher-Client 106 kann eine Operation anfordern, die Daten, die der LID A zugeordnet sind, zu modifizieren und/oder zu überschreiben, was das Ersetzen des Datensegments X0 durch das Datensegment X1 umfassen kann. Die Ablagespeicherschicht 130 kann diese Operation außerhalb des Orts durch Anhängen eines neuen Pakets 110, das das Datensegment X1 umfasst, an einem anderen Ablagespeicherort 193 auf dem Ablagespeichermedium 144 ausführen, anstatt das existierende Datenpaket 110 am Ort an dem Ablagespeicherort 191 zu modifizieren. Die Ablagespeicheroperation kann ferner das Aktualisieren der Ablagespeichermetadaten 135 umfassen, um die LID A der Ablagespeicheradresse des Ablagespeicherorts 193 zuzuordnen und/oder die obsoleten Daten X0 an dem Ablagespeicherort 191 ungültig zu machen. Wie in 1E dargestellt, kann das Aktualisieren der Ablagespeichermetadaten 135 das Aktualisieren eines Eintrags der Vorwärtsabbildung 160 umfassen, um die LID A 164E der Ablagespeicheradresse des modifizierten Datensegments X1 zuzuordnen.
  • Ausführen der Ablagespeicheroperationen außerhalb des Orts (z. B. Anhängen von Daten an das Ablagespeicher-Log) kann zu obsoleten oder ungültigen Daten führen, die in dem Ablagespeichermedium 140 verbleiben (z. B. Daten, die außerhalb des Orts gelöscht, modifiziert und/oder überschrieben worden sind). Wie in 1E dargestellt ist, führt Modifizieren von Daten der LID A durch Anhängen des Datensegments X1 an das Ablagespeicher-Log, im Gegensatz zum Überschreiben und/oder Ersetzen des Datensegments X0 am Ort an dem Ablagespeicherort 191, zum Beibehalten der obsoleten Version des Datensegments X0 auf dem Ablagespeichermedium 140. Die obsolete Version des Datensegments X0 kann nicht sofort von dem Ablagespeichermedium 140 entfernt werden (z. B. gelöscht werden), da, wie vorstehend offenbart, Löschen des Datensegments X0 Löschen einer vollständigen Ablagespeicherabteilung 170A und/oder Verlagern von gültigen Daten auf der Ablagespeicherabteilung 170A beinhalten kann, was eine zeitaufwändige Operation ist und zur Schreibverstärkung führen kann. Ähnlich können Daten, die nicht mehr verwendet werden (z. B. gelöscht sind oder einer TRIM-Operation unterzogen werden), nicht sofort entfernt werden. Als solches kann das Ablagespeichermedium 140 mit der Zeit eine signifikante Menge ”ungültiger” Daten anhäufen.
  • Die Ablagespeicherschicht 130 kann ungültige Daten, wie z. B. das Datensegment X0 an dem Ablagespeicherort 191, durch Verwenden der Ablagespeichermetadaten 135 (z. B. der Vorwärtsabbildung 160) identifizieren. Die Ablagespeicherschicht 130 kann bestimmen, dass Ablagespeicherorte, die nicht gültigen Kennungen (LIDs) in der Vorwärtsabbildung 160 zugeordnet sind, Daten umfassen, die nicht auf dem Ablagespeichermedium 140 gehalten werden müssen. Alternativ oder zusätzlich kann die Ablagespeicherschicht 130 andere Ablagespeichermetadaten 135 z. B. als Gültigkeits-Bitmaps, Umkehrabbildungen und/oder dergleichen pflegen, um Daten, die gelöscht worden sind, einer TRIM-Operation unterzogen worden sind und/oder aus anderen Gründen ungültig sind, effizient zu identifizieren.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, Ablagespeicherbetriebsmittel, die durch ungültige Daten besetzt sind, wiederzuverwenden. Die Ablagespeicherschicht 130 kann ferner konfiguriert sein, andere Medienmanagementoperationen auszuführen, die Auffrischen von Daten, die auf dem Ablagespeichermedium 140 gespeichert sind (um Fehlerzustände aufgrund von Datenverschlechterung, Schreibstörung, Lesestörung und/oder dergleichen zu vermeiden), Überwachen von Medienzuverlässigkeitsbedingungen und/oder dergleichen enthalten, jedoch nicht darauf beschränkt sind. Wie hier verwendet bezieht sich das Wiederverwenden eines Ablagespeicherbetriebsmittels wie z. B. einer Ablagespeicherabteilung 170A–N auf das Löschen der Ablagespeicherabteilung 170A–N, so dass neue Daten darauf gespeichert/programmiert werden können. Wiederverwenden einer Ablagespeicherabteilung 170A–N kann das Verlagern gültiger Daten auf der Ablagespeicherabteilung 170A–N zu einem neuen Ablagespeicherort umfassen. Die Ablagespeicherschicht 130 kann Ablagespeicherabteilungen 170A–N zur Wiederverwendung identifizieren basierend auf einem oder mehreren Faktoren, die die Menge ungültiger Daten in der Ablagespeicherabteilung 170A–N, die Menge gültiger Daten in der Ablagespeicherabteilung 170A–N, Verschleißniveaus (z. B. die Anzahl von Programmier/Löschzyklen), Zeit seit die Ablagespeicherabteilung 170A–N programmiert oder aufgefrischt wurde, und so weiter, enthalten können, jedoch nicht darauf beschränkt sind.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, die Ablagespeichermetadaten 135, die die Vorwärtsabbildung 160 enthalten, durch Verwenden von Inhalten des Ablagespeicher-Logs auf dem Ablagespeichermedium 140 zu rekonstruieren. In der Ausführungsform von 1E kann die aktuelle Version der Daten, die der LID A zugeordnet sind, basierend auf der relativen Log-Reihenfolge der Datenpakete 110 an Ablagespeicherorten 191 bzw. 193 bestimmt werden. Da das Datenpaket an dem Ablagespeicherort 193 nach dem Datenpaket an dem Ablagespeicherort 191 in dem Ablagespeicher-Log geordnet ist, kann die Ablagespeicherschicht 130 bestimmen, dass der Ablagespeicherort 193 die neueste, aktuelle Version der Daten, die der LID A entsprechen, enthält. Die Ablagespeicherschicht 130 kann die Vorwärtsabbildung 160 rekonstruieren, um die LID A dem Datenpaket an dem Ablagespeicherort 193 (anstatt den obsoleten Daten an dem Ablagespeicherort 191) zuzuordnen.
  • 2 bildet eine weitere Ausführungsform eines Systems 200 ab, die eine Ablagespeicherschicht 130 umfasst. Das Ablagespeichermedium 140 kann mehrere unabhängige Bänke 119A–N umfassen, von denen jede ein oder mehrere Ablagespeicher-Arrays 115A–N umfassen kann. Jede unabhängige Bank 119A–N kann über die Zusammenschaltung 127 mit der Ablagespeichersteuereinheit 139 gekoppelt sein.
  • Die Ablagespeichersteuereinheit 139 kann ein Ablagespeicheranforderungsempfängermodul 231 umfassen, das konfiguriert ist, Ablagespeicheranforderungen von der Ablagespeicherschicht 130 über einen Bus 127 zu empfangen. Der Ablagespeicheranforderungsempfänger 231 kann ferner konfiguriert sein, Daten in den/aus dem Speicher 130 und/oder den Ablagespeicher-Clients 106 zu übertragen. Dementsprechend kann das Ablagespeicheranforderungsempfängermodul 231 ein oder mehrere direkte Speicherzugriffs-Module (DMA-Module), entfernte DMA-Module, Bus-Steuereinheiten, Brücken, Puffer und so weiter umfassen.
  • Die Ablagespeichersteuereinheit 139 kann ein Schreibmodul 240 umfassen, das konfiguriert ist, Daten auf dem Ablagespeichermedium 140 in Reaktion auf Anforderungen, die über das Anforderungsmodul 231 empfangen werden, zu speichern. Die Ablagespeicheranforderungen können die logische Schnittstelle der Daten, die zu den Anforderungen gehören, umfassen und/oder referenzieren. Das Schreibmodul 240 kann konfiguriert sein, die Daten in einem selbstbeschreibenden Ablagespeicher-Log zu speichern, was, wie vorstehend offenbart, das Anhängen von Datenpaketen 110 der Reihe nach innerhalb des Ablagespeicheradressraums 144 des Ablagespeichermediums 140 umfassen kann. Die Datenpakete 110 können die logische Schnittstelle der Daten umfassen und/oder referenzieren (können z. B. die LID(s), die den Daten zugeordnet sind, umfassen). Das Schreibmodul 240 kann ein Schreibverarbeitungsmodul 242 umfassen, das konfiguriert ist, Daten zum Speichern zu verarbeiten. Verarbeiten von Daten zum Speichern kann eines oder mehrere aus den Folgenden enthalten: a) Komprimierungsverarbeitung, b) Verschlüsselungsverarbeitung, c) Einkapseln von Daten in jeweilige Datenpakete 110 (und/oder andere Container), d) Ausführen von Fehlerkorrekturcode-Verarbeitung (ECC-Verarbeitung), und so weiter. Der Schreibpuffer 244 kann konfiguriert sein, Daten zum Speichern auf dem Ablagespeichermedium 140 zu puffern. In einigen Ausführungsformen kann der Schreibpuffer 244 einen oder mehrere Synchronisationspuffer umfassen, die konfiguriert sind, eine Taktdomäne der Ablagespeichersteuereinheit 139 mit einer Taktdomäne des Ablagespeichermediums 140 (und/oder der Zusammenschaltung 127) zu synchronisieren.
  • Das Log-Ablagespeichermodul 136 kann konfiguriert sein, Ablagespeicherort(e) für Datenablagespeicheroperationen auszuwählen und kann Adressierungs- und/oder Steuerinformationen für die Ablagespeicher-Arrays 115A–N der unabhängigen Bänke 119A–N bereitstellen. Wie hier offenbart kann das Log-Ablagespeichermodul 136 konfiguriert sein, Daten der Reihe nach in einem Log-Format innerhalb des Ablagespeicheradressraums 144 des Ablagespeichermediums 140 anzuhängen.
  • Ablagespeicheroperationen, um Daten zu schreiben, können Folgendes umfassen: a) Anhängen eines oder mehrerer Datenpakete an das Ablagespeicher-Log auf dem Ablagespeichermedium 140 und b) Aktualisieren von Ablagespeichermetadaten 135, um LID(s) der Daten den Ablagespeicheradressen des einen oder der mehreren Datenpakete zuzuordnen. In einigen Ausführungsformen können die Ablagespeichermetadaten 135 auf Speicherbetriebsmitteln der Ablagespeichersteuereinheit 139 gepflegt werden (z. B. auf dedizierten flüchtigen Speicherbetriebsmitteln der AblageAblagespeichervorrichtung 141, die das Ablagespeichermedium 140 umfasst). Alternativ oder zusätzlich können Abschnitte der Ablagespeichermetadaten 135 innerhalb der Ablagespeicherschicht 130 gepflegt werden (z. B. auf einem flüchtigen Speicher 112 der Computervorrichtung 110 von 1A). In einigen Ausführungsformen können die Ablagespeichermetadaten 135 in einem flüchtigen Speicher der Ablagespeicherschicht 130 gepflegt werden und können periodisch auf dem Ablagespeichermedium 140 gespeichert werden.
  • Die Ablagespeichersteuereinheit 139 kann ferner ein Datenlesemodul 241 umfassen, das konfiguriert ist, Daten aus dem Ablagespeicher-Log auf dem Ablagespeichermedium 140 in Reaktion auf Anforderungen, die über das Ablagespeicheranforderungsempfängermodul 231 empfangen werden, zu lesen. Die Anforderungen können LID(s) der angeforderten Daten, eine Ablagespeicheradresse der angeforderten Daten und/oder dergleichen umfassen. Das Lesemodul 241 kann konfiguriert sein: a) die Ablagespeicheradresse(n) des/der Datenpaket(e) 110, die die angeforderten Daten umfassen, durch Verwenden von, unter anderen, der Vorwärtsabbildung 160 zu bestimmen, b) das/die Datenpaket(e) 110 aus der/den bestimmten Ablagespeicheradresse(n) auf dem Ablagespeichermedium 140 zu lesen und c) Daten zur Verwendung durch die anfordernde Entität zu verarbeiten. Daten, die aus dem Ablagespeichermedium 140 gelesen werden, können über den Lesepuffer 245 in das Lesemodul 241 streamen. Der Lesepuffer 245 kann einen oder mehrere Lesesynchronisationspuffer zur Taktdomänensynchronisation umfassen, wie vorstehend beschrieben. Das Leseverarbeitungsmodul 243 kann konfiguriert sein, Daten, die aus dem Ablagespeichermedium 144 gelesen werden, zu verarbeiten, was eines oder mehrere des Folgenden enthalten kann, jedoch nicht darauf beschränkt ist: a) Dekomprimierungsverarbeitung, b) Entschlüsselungsverarbeitung, c) Extrahieren von Daten aus einem oder mehreren Datenpaket(en) 110 (und/oder anderen Containern), d) Ausführen von ECC-Verarbeitung, und so weiter.
  • Die Ablagespeichersteuereinheit 139 kann ferner eine Banksteuereinheit 252 umfassen, die konfiguriert ist, Daten und/oder Befehle des Schreibmoduls 240 und/oder Lesemoduls 241 zu/von speziellen unabhängigen Bänken 119A–N selektiv zu lenken. In einigen Ausführungsformen ist die Ablagespeichersteuereinheit 139 konfiguriert, Ablagespeicheroperationen zwischen den unabhängigen Bänken 119A–N zu verschachteln. Die Ablagespeichersteuereinheit 139 kann beispielsweise aus dem Ablagespeicher-Array 115A von Bank 119A in das Lesemodul 241 lesen, während Daten aus dem Schreibmodul 240 für das Ablagespeicher-Array 115B von Bank 119B programmiert werden. Weitere Ausführungsformen von Mehrfachbankspeicheroperationen sind in der US-Patentschrift Nr. 11/952,095 mit dem Titel ”Apparatus, System, and Method for Managing Commands for Solid-State Storage Using Bank Interleave”, eingereicht am 12. Dezember 2006 für David Flynn u. a., offenbart, die hiermit durch Bezugnahme mit aufgenommen ist.
  • Das Schreibverarbeitungsmodul 242 kann konfiguriert sein, Datenpakete 110 in ECC-Codeworte zu codieren. Wie hier verwendet bezieht sich ein ECC-Codewort auf Daten und entsprechende Fehlerdetektions- und/oder Korrekturinformationen. Das Schreibverarbeitungsmodul 242 kann konfiguriert sein, jeden geeigneten ECC-Algorithmus zu implementieren und/oder ECC-Codeworte jedes geeigneten Typs zu erzeugen, was Datensegmente und entsprechende ECC-Syndrome, ECC-Symbole, ECC-Chunks und/oder andere strukturierte und/oder unstrukturierte ECC-Informationen enthalten können, jedoch nicht darauf beschränkt ist. ECC-Codeworte können jede geeignete Fehlerkorrekturcodierung umfassen, die Block-ECC-Codierung, Faltungs-ECC-Codierung, Paritätsprüfungscodierung mit geringer Dichte (LDPC-Codierung), Gallager-Codierung, Reed-Solomon-Codierung, Hamming-Codes, mehrdimensionale Paritätscodierung, zyklische Fehlerkorrekturcodes, BCH-Codes, und/oder dergleichen enthält, jedoch nicht darauf beschränkt ist. Das Schreibverarbeitungsmodul 242 kann konfiguriert sein, ECC-Codeworte einer vorbestimmten Größe zu erzeugen. Dementsprechend kann ein einzelnes Paket in mehrere unterschiedliche ECC-Codeworte codiert sein, und/oder ein einzelnes ECC-Codewort kann Abschnitte von zwei oder mehr Paketen umfassen. Alternativ kann das Schreibverarbeitungsmodul 242 konfiguriert sein, ECC-Codeworte von beliebiger Größe zu erzeugen. Weitere Ausführungsformen von Fehlerkorrekturcodeverarbeitung sind in der US-Patentschrift Nr. 13/830,652 mit dem Titel ”Systems and Methods for Adaptive Error-Correction Coding”, eingereicht am 14. März 2013 für Jeremy Fillingim u. a., offenbart, die hiermit durch Bezugnahme mit aufgenommen ist.
  • In einigen Ausführungsformen unterstützt die Ablagespeicherschicht 130 den logischen Adressraum 132, um Ablagespeicheroperationen hoher Ebene effizient zu implementieren. Die Ablagespeicherschicht 130 kann konfiguriert sein, ”Klon-” oder ”logische Kopier-”Operationen zu implementieren. Wie hier verwendet bezieht sich ein ”Klon” oder ”logisches Kopieren” auf Operationen, um Daten, die durch die Ablagespeicherschicht 130 gemanagt werden, effizient zu kopieren oder zu replizieren. Eine Klon-Operation kann das Erzeugen einer Menge ”geklonter” LIDs umfassen, die denselben Daten wie die Menge ”ursprünglicher” LIDs entsprechen. Eine Klon-Operation kann deshalb Referenzieren derselben Menge von Ablagespeicherorten unter Verwendung von zwei (oder mehr) unterschiedlichen logischen Schnittstellen (z. B. unterschiedlicher Mengen von LIDs) umfassen. Eine Klon-Operation kann deshalb die logische Schnittstelle eines oder mehrerer Datenpakete 110, die in dem Ablagespeichermedium 140 gespeichert sind, modifizieren. Eine ”logische Verschiebung” kann sich auf eine Operation beziehen, um die logische Schnittstelle von Daten, die durch die Ablagespeicherschicht 130 gemanagt werden, zu modifizieren. Eine logische Verschiebungsoperation kann das Ändern der LIDs, die verwendet werden, um Daten zu referenzieren, die auf dem Ablagespeichermedium 140 gespeichert sind, umfassen. Eine ”Zusammenfassungs”-Operation kann das Zusammenfassen unterschiedlicher Abschnitte des logischen Adressraums 132 umfassen. Wie hier in mehr Einzelheiten offenbart, können Klon- und/oder Verschiebungsoperationen verwendet werden, um Ablagespeicheroperationen höherer Ebene effizient zu implementieren, wie z. B. Deduplizierung, Speicherauszüge, logische Kopien, atomare Operationen, Transaktionen und/oder dergleichen. Ausführungsformen von Systemen und Verfahren zum Klonen und andere logische Manipulationsoperationen sind in ”Logical Interfaces for Contextual Storage”, eingereicht am 19 März 2012 für David Flynn u. a., vorläufige Patentschrift der Vereinigten Staaten Nr. 61/454,235 mit dem Titel ”Virtual Storage Layer Supporting Operations Ordering, a Virtual Address Space, Atomic Operations, and Metadata Discovery”, eingereicht am 18. März 2011, vorläufige Patentschrift der Vereinigten Staaten Nr. 61/625,647 , mit dem Titel ”Systems, Methods, and Interfaces for Managing a Logical Address Space”, eingereicht am 17. April 2012, für David Flynn u. a., und vorläufige Patentschrift der Vereinigten Staaten Nr. 61/637,165 , mit dem Titel ”Systems, Methods, and Interfaces for Managing a Logical Address Space”, eingereicht am 23. April 2012, für David Flynn u. a., offenbart, die alle durch Bezugnahme mit aufgenommen sind.
  • Bezug nehmend auf 3A kann die Ablagespeicherschicht 130 ein Managementmodul 334 für logische Schnittstellen umfassen, das konfiguriert ist, logische Schnittstellenoperationen, die zu Daten gehören, die durch die Ablagespeicherschicht 130 gemanagt werden, wie z. B. Klonoperationen, Verschiebungsoperationen, Zusammenfassungsoperationen und so weiter, zu managen. Klonen von LIDs kann Modifizieren der logischen Schnittstelle von Daten, die in dem Ablagespeichermedium 140 gespeichert sind, umfassen, um unter anderem zu ermöglichen, dass die Daten durch Verwendung von zwei oder mehr unterschiedlichen Mengen von LIDs referenziert werden. Dementsprechend kann das Erzeugen eines Klons Folgendes umfassen: a) Zuweisen einer Menge von LIDs in dem logischen Adressraum 132 (oder einem dedizierten Abschnitt davon) und b) Zuordnen der zugewiesenen LIDs zu derselben/denselben Ablagespeicherort(en) wie die ”ursprüngliche” Menge von LIDs durch Verwenden von, unter anderen, der Ablagespeichermetadaten 135. Erzeugen eines Klons kann deshalb Hinzufügen eines oder mehrerer Einträge zu einer Vorwärtsabbildung 160, die konfiguriert sind, die neue Menge geklonter LIDs einer speziellen Menge von Ablagespeicherorten zuzuordnen, umfassen.
  • Das Managementmodul 334 für logische Schnittstellen kann konfiguriert sein, Klonoperationen gemäß einer Klonsynchronisierungsstrategie zu implementieren. Eine Klonsynchronisierungsstrategie kann verwendet werden, um zu bestimmen, wie Operationen, die mit Bezug auf eine/n erste/n aus mehreren Klonen oder Kopien ausgeführt werden, zu den anderen Klonen oder Kopien verbreitet wird. Beispielsweise können Klone in Bezug auf Zuweisungsoperationen synchronisiert werden, so dass eine Anforderung, einen der Klone zu erweitern, das Erweitern der anderen Klone und/oder Kopien umfasst. Wie hier verwendet bezieht sich das Erweitern einer Datei (oder eines anderen Datensegments) auf das Erhöhen einer Größe, eines Bereichs und/oder einer Spanne der Datei, was Hinzufügen einer oder mehrerer logischer Kennungen zu dem Klon, Modifizieren einer oder mehrerer logischer Kennungen, die dem Klon zugewiesen sind, und/oder dergleichen enthalten kann. Die Klonsynchronisierungsstrategie kann eine Zusammenfassungsstrategie umfassen, die, unter anderen, bestimmen kann, wie Unterschiede zwischen Klonen gemanagt werden, wenn Klone in einer Zusammenfassungs- und/oder Faltungsoperation (mit zusätzlichen Einzelheiten nachstehend offenbart) kombiniert werden.
  • 3A bildet eine Ausführungsform einer Bereichsklonoperation ab, die durch die Ablagespeicherschicht 130 implementiert ist. Die Bereichsklonoperation von 3A kann in Reaktion auf eine Anforderung von einem Ablagespeicher-Client 106 implementiert werden. In einigen Ausführungsformen kann die Schnittstelle 131 der Ablagespeicherschicht 130 konfiguriert sein, Schnittstellen und/oder APIs zum Ausführen von Klonoperationen bereitzustellen. Alternativ oder zusätzlich kann die Bereichsklonoperation als Teil einer Operation höherer Ebene, wie z. B. einer atomaren Operation, Transaktion, Speicherauszug, logischen Kopie, Dateimanagementoperation und/oder dergleichen, ausgeführt werden.
  • Wie in 3A dargestellt umfasst die Vorwärtsabbildung 160 der Ablagespeicherschicht 130 einen Eintrag 362, der konfiguriert ist, die LIDs 1024-2048 an die Medienablagespeicherorte 3453-4477 zu binden. Andere Einträge sind aus 3A weggelassen, um das Verdecken der Einzelheiten der abgebildeten Ausführungsform zu vermeiden. Wie hier offenbart können der Eintrag 362 und seine Bindungen eine logische Schnittstelle 311A definieren, durch die Ablagespeicher-Clients 106 die entsprechenden Daten (z. B. das Datensegment 312) referenzieren können; Ablagespeicher-Clients 106 können auf Datensegment 312 (oder Abschnitte davon) durch die Ablagespeicherschicht 130 durch Verwenden der LIDs 1024-2048 zugreifen und/oder es referenzieren. Dementsprechend definieren die LIDs 1024-2048 unter anderem die logische Schnittstelle 311A des Datensegments 312.
  • Wie hier offenbart kann die Ablagespeicherschicht 130 konfiguriert sein, Daten in einem kontextabhängigen Format auf einem Ablagespeichermedium 140 zu speichern (z. B. im Paketformat 110). In der Ausführungsform von 3A umfasst das Datenpaket 310 an den Ablagespeicherorten 3453-4477 ein Datensegment 312. Das Datenpaket 310 enthält ferner persistente Metadaten 314, die die logische Schnittstelle des Datensegments 312 angeben (z. B. das Datensegment 312 den LIDs 1024-2048 zuordnet). Wie vorstehend offenbart kann das Speichern von Daten im Zuordnung zu beschreibenden, persistenten Metadaten ermöglichen, dass die Ablagespeicherschicht 130 die Vorwärtsabbildung 160 (und/oder andere Metadaten 135) aus den Inhalten des Ablagespeicher-Logs neu aufbaut. In der Ausführungsform von 3A kann der Eintrag 362 durch Zuordnen der Daten, die an den Ablagespeicheradressen 3453-4477 gespeichert sind, zu den LIDs 1024-2048, die durch die persistenten Metadaten 314 des Pakets 310 referenziert sind, rekonstruiert werden. Obwohl 3A ein einziges Paket 310 abbildet, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen können die Daten des Eintrags 362 in mehreren, unterschiedlichen Paketen 310 gespeichert sein, von denen jedes jeweilige persistente Metadaten 314 umfasst (z. B. ein getrenntes Paket für jeden Ablagespeicherort, usw.).
  • Das Managementmodul 334 für logische Schnittstellen kann konfiguriert sein, den Eintrag 362 zu klonen durch, unter anderem, Zuweisen einer neuen Menge von LIDs, die den ursprünglichen LIDs entsprechen, die geklont werden, sollen, und Binden der neuen LIDs an die Ablagespeicherorte der ursprünglichen Quell-LIDs. Wie in 3B dargestellt ist kann das Erzeugen des Klons der LIDs 1024-2048 umfassen, dass das Managementmodul 334 für logische Schnittstellen eine äquivalente Menge von LIDs 6144-7168 zuweist und die geklonte Menge logischer Kennungen an die Ablagespeicheradressen 3453-4477 bindet. Erzeugen des Klons kann deshalb Modifizieren der Ablagespeichermetadaten 135 umfassen, um die logische Schnittstelle 311B des Datensegments 312 zu erweitern, um LIDs 6144-7168 aufzunehmen, ohne zu erfordern, dass das zugrundeliegende Datensegment 312 auf dem Ablagespeichermedium 140 kopiert und/oder repliziert werden muss.
  • Die modifizierte logische Schnittstelle 311B des Datensegments 312 kann mit dem kontextabhängigen Format des entsprechenden Datenpakets 310, das in den Ablagespeicherorten 3453-4477 gespeichert ist, inkonsistent sein. Wie vorstehend offenbart referenzieren die persistenten Metadaten 314 des Datenpaket 310 die LIDs 1024-2048, enthalten und/oder referenzieren jedoch nicht die geklonten LIDs 6144-7168. Das kontextabhängige Format des Datensegments 312 kann aktualisiert werden, um mit der modifizierten logischen Schnittstelle 311B konsistent zu sein (z. B. aktualisiert werden, um die Daten den LIDs 1024-2048 und 6144-7168, im Gegensatz zu nur den LIDs 1024-2048, zuzuordnen), was das Neuschreiben des Datensegments in einem Paketformat, das das Datensegment beiden Mengen von LIDs zuordnet, umfassen kann. Falls die AblageAblagespeichervorrichtung 141 eine Direktzugriffs-, am Ort schreibende AblageAblagespeichervorrichtung ist, können die persistenten Metadaten 314 am Ort aktualisiert werden. In anderen Ausführungsformen, die ein einmal beschreibbares, asymmetrisches Ablagespeichermedium 140 umfassen, können solche Aktualisierungen am Ort ineffizient sein. Deshalb kann die Ablagespeicherschicht 130 konfiguriert sein, die Daten in dem inkonsistenten kontextabhängigen Format zu pflegen, bis die Daten in einer Medienmanagementoperation, wie z. B. einer Speicherwiederherstellung, Verlagerung und/oder dergleichen (durch das Medienmanagementmodul 370), verlagert werden. Aktualisieren des kontextabhängigen Formats des Datensegments 312 kann das Verlagern und/oder Neuschreiben des Datensegments 312 auf dem Ablagespeichermedium 140 umfassen, was ein zeitaufwändiger Prozess sein kann und insbesondere ineffizient sein kann, falls das Datensegment 312 groß ist und/oder der Klon eine große Anzahl von LIDs umfasst. Deshalb kann in einigen Ausführungsformen die Ablagespeicherschicht 130 das Aktualisieren des kontextabhängigen Formats des geklonten Datensegments 312 verzögern und/oder kann das kontextabhängige Format in einer oder mehreren Hintergrundoperationen aktualisieren. Unterdessen kann die Ablagespeicherschicht 130 konfiguriert sein, Zugriff auf das Datensegment 312 zu ermöglichen, während es in dem inkonsistenten kontextabhängigen Format (Datenpaket 310) gespeichert ist.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, die Fertigstellung der Klonoperationen zu quittieren, bevor das kontextabhängige Format des entsprechenden Datensegments 312 aktualisiert wird. Die Daten können nachfolgend in dem aktualisierten kontextabhängigen Format auf dem Ablagespeichermedium 140 neu geschrieben (z. B. verlagert) werden. Die Aktualisierung kann außerhalb des ”kritischen Pfads” der Klonoperation und/oder anderer Vordergrund-Ablagespeicheroperationen auftreten. In einigen Ausführungsformen wird das Datensegment 312 durch das Medienmanagementmodul 370 als Teil eines oder mehrerer aus einem Ablagespeicherwiederherstellungsprozess, einer Datenauffrischungsoperation und/oder dergleichen verlagert. Dementsprechend können Ablagespeicher-Clients 106 auf das Datensegment 312 durch die modifizierte logische Schnittstelle 311B zugreifen (z. B. mit Referenz auf LIDs 1024-2048 und/oder 6144-7168), ohne darauf zu warten, dass das kontextabhängige Format des Datensegments 312 in Übereinstimmung mit der modifizierten logischen Schnittstelle 311B aktualisiert wird.
  • Bis das kontextabhängige Format des Datensegments 312 auf dem Ablagespeichermedium 140 aktualisiert ist, kann die modifizierte logische Schnittstelle 311B des Datensegments 312 nur in den Ablagespeichermetadaten 135 (z. B. Abbildung 160) existieren. Deshalb kann, falls die Vorwärtsabbildung 160 aufgrund von, unter anderem, Stromausfall oder Datenverfälschung verlorengeht, die Klonoperation nicht in den rekonstruierten Ablagespeichermetadaten 135 widergespiegelt sein (die Klonoperation kann nicht persistent und/oder absturzsicher sein). Wie vorstehend dargestellt geben die persistenten Metadaten 314 des Datenpakets 310 an, dass das Datensegment 312 nur den LIDs 1024-2048 und nicht 6144-7168 zugeordnet ist. Deshalb wird nur der Eintrag 362 rekonstruiert (wie in 3A), und Eintrag 364 wird weggelassen; als ein Ergebnis können nachfolgende Versuche, auf das Datensegment 312 durch die modifizierte logische Schnittstelle 311B zuzugreifen (z. B. durch 6144-7168) fehlschlagen.
  • In einigen Ausführungsformen kann die Klonoperation ferner Speichern einer persistenten Meldung auf dem Ablagespeichermedium 140 umfassen, um eine Klonoperation persistent und/oder absturzsicher zu machen. Wie hier verwendet bezieht sich eine ”persistente Meldung” auf Metadaten, die auf dem Ablagespeichermedium 140 gespeichert sind. Persistente Meldungen 366 können einer Log-Reihenfolge entsprechen und/oder können in einem Paketformat gespeichert sein, wie hier offenbart. Die persistente Meldung 366 kann eine Angabe der modifizierten logischen Schnittstelle 311B des Datensegments 312 umfassen. In der Ausführungsform von 3B kann die persistente Meldung 366, die der abgebildeten Klonoperation entspricht, konfiguriert sein, die Daten, die an den Ablagespeicheradressen 3453-4477 gespeichert sind, beiden Bereichen von LIDs 1024-2048 und 6144-7168 zuzuordnen. Während der Rekonstruktion der Vorwärtsabbildung 160 aus den Inhalten des Ablagespeichermediums 140 kann die persistente Meldung 366 verwendet werden, um beide Einträge 362 und 364 zu rekonstruieren, um das Datensegment 312 beiden LID-Bereichen der aktualisierten logischen Schnittstelle 311B zuzuordnen. In einigen Ausführungsformen kann die Ablagespeicherschicht 130 die Fertigstellung der Klonoperation in Reaktion auf Aktualisieren der Ablagespeichermetadaten 135 (z. B. Erzeugen des Eintrags 364) und Speichern der persistenten Meldung 366 auf dem Ablagespeichermedium 140 quittieren. Die persistente Meldung 366 kann als Reaktion ungültig gemacht und/oder zum Entfernen von dem Ablagespeichermedium 140 markiert werden, was das kontextabhängigen Format des Datensegments 312 aktualisiert, um mit der aktualisierten logischen Schnittstelle 311B konsistent zu sein (z. B. Verlagern und/oder Neuschreiben des Datensegments 312, wie vorstehend offenbart).
  • In einigen Ausführungsformen kann das aktualisierte kontextabhängige Format des Datensegments 312 das Zuordnen des Datensegments 312 zu beiden LID-Bereichen 1024-2048 und 6144-7168 umfassen. 3C bildet eine Ausführungsform eines aktualisierten kontextabhängigen Formats (Datenpaket 320) für das Datensegment 312 ab. Wie in 3C dargestellt, ordnen die persistenten Metadaten 324 des Datenpakets 320 das Datensegment 312 beiden LID-Bereichen 1024-2048 und 6144-7168 der aktualisierten logischen Schnittstelle 311B zu. Das Datenpaket 320 kann an anderen Ablagespeicheradressen (64432-65456) als das ursprüngliche Datenpaket 310 außerhalb des Orts geschrieben werden, was in aktualisierten Einträgen 362 und 364 der Vorwärtsabbildung 160 widergespiegelt sein kann. In Reaktion auf Anhängen des Datenpakets 320 an das Ablagespeicher-Log kann die entsprechende persistente Meldung 366 (falls vorhanden) ungültig gemacht (entfernt und/oder zum nachfolgenden Entfernen aus dem Speichermedium 140 markiert) werden. In einigen Ausführungsformen kann das Entfernen der persistenten Meldung 366 das Ausgeben einer oder mehrerer TRIM-Nachrichten umfassen, die angeben, dass die persistente Meldung 366 nicht mehr in dem Ablagespeichermedium 140 gehalten werden muss. Alternativ oder zusätzlich können Abschnitte der Vorwärtsabbildung 160 in einem persistenten, absturzsicheren Ablagespeicherort (z. B. nichtflüchtigen Ablagespeicherbetriebsmittel 103 und/oder dem Ablagespeichermedium 140) gespeichert werden. In Reaktion auf das Fortbestehen der Vorwärtsabbildung 160 (z. B. der Einträge 362 und 364) kann die persistente Meldung 366 ungültig gemacht werden, wie vorstehend offenbart, selbst wenn das Datensegment 312 noch nicht in einem aktualisierten kontextabhängigen Format neu geschrieben worden ist.
  • Das Managementmodul 334 für logische Schnittstellen kann konfiguriert sein, Klonoperationen gemäß einer oder mehrerer unterschiedlicher Betriebsarten, die eine ”Kopieren-nach-Schreiben-Betriebsart” enthalten, zu implementieren. 3D bildet eine Ausführungsform einer Ablagespeicheroperation ab, die innerhalb eines geklonten Bereichs in einer Kopieren-nach-Schreiben-Betriebsart ausgeführt wird. In einer Kopieren-nach-Schreiben-Betriebsart können Ablagespeicheroperationen, die nach dem Erzeugen eines Klons auftreten, verursachen, dass die Klone voneinander divergieren (z. B. die Einträge 362 und 364 können sich auf unterschiedliche Ablagespeicheradressen, Bereiche und/oder Spannen beziehen). In der Ausführungsform von 3D hat die Ablagespeicherschicht 130 das Datensegment 312 in dem aktualisierten kontextabhängigen Format (Paket 320) geschrieben, das konfiguriert ist, das Datensegment 312 beiden LID-Bereichen 1024-2048 und 6144-7168 zuzuordnen (wie in 3C abgebildet). Ein Ablagespeicher-Client 106 kann eine oder mehrere Ablagespeicheranforderungen ausgeben, um Daten, die den LIDs 6657-7168 entsprechen, zu modifizieren und/oder zu überschreiben. In der Ausführungsform von 3D umfasst die Ablagespeicheranforderung Modifizieren und/oder Überschreiben von Daten der LIDs 6657-7168. In Reaktion darauf kann die Ablagespeicherschicht 130 die neuen und/oder modifizierten Daten auf dem Ablagespeichermedium 130 speichern, was Anhängen eines neuen Datenpakets 340 an das Ablagespeicher-Log umfassen kann, wie vorstehend offenbart. Das Datenpaket 340 kann das Datensegment 342 den LIDs 6657-7424 zuordnen (z. B. durch Verwenden persistenter Metadaten 344 des Pakets 340). Die Vorwärtsabbildung 160 kann aktualisiert werden, um die LIDs 6657-7424 dem Datensegment 342 zuzuordnen, was das Aufspalten des Eintrags 364 in einen Eintrag 365, der konfiguriert ist, weiterhin den nicht modifizierten Abschnitt der Daten in dem Datensegment 312 zu referenzieren, und einen Eintrag 367, der das neue Datensegment 342 referenziert, das an den Ablagespeicheradressen 78512-79024 gespeichert ist, umfassen kann. In der in 3D abgebildeten Kopieren-nach-Schreiben-Betriebsart kann der Eintrag 362, der den LIDs 1024-2048 entspricht, unverändert sein und weiterhin das Datensegment 312 an den Ablagespeicheradressen 64432-65456 referenzieren. Obwohl in 3D nicht abgebildet können Modifikationen innerhalb des Bereichs 1024-2048 zu ähnlichen divergierenden Änderungen führen, die den Eintrag 362 beeinflussen. Außerdem sind die Ablagespeicheranforderung(en) nicht auf das Modifizieren und/oder Überschreiben von Daten beschränkt. Andere Operationen können Erweitern der Menge von LIDs (Anhängen von Daten), Entfernen von LIDs (Löschen, Abschneiden und/oder Kürzen von Daten) und/oder dergleichen umfassen.
  • In einigen Ausführungsformen kann die Ablagespeicherschicht 130 andere Klonbetriebsarten wie z. B. eine ”synchronisierte Klon”-Betriebsart unterstützen. In einer synchronisierten Klonbetriebsart können Änderungen, die innerhalb eines geklonten Bereichs von LIDs vorgenommen werden, in einem oder mehreren anderen, entsprechenden Bereichen widergespiegelt werden. In der Ausführungsform von 3D kann das Implementieren der beschriebenen Ablagespeicheroperation in einer ”synchronisierten Klon”-Betriebsart Aktualisieren des Eintrags 362 umfassen, um das neue Datensegment 342 zu referenzieren, wie hier offenbart, was, unter anderen, das Aufspalten des Eintrags 362 in einen Eintrag, der konfiguriert ist, LIDs 1024-1536 Abschnitten des ursprünglichen Datensegments 312 zuzuordnen, und Hinzufügen eines Eintrags, der konfiguriert ist, die LIDs 1537-2048 dem neuen Datensegment 342 zuzuordnen, umfassen kann.
  • Bezug nehmend zurück auf die Kopieren-nach-Schreiben-Ausführungsform von 3D kann das Managementmodul 334 für logische Schnittstellen ferner konfiguriert sein, Klonzusammenfassungsoperationen zu managen. Wie hier verwendet bezieht sich ein ”Zusammenfassen” oder ”Klonzusammenfassen” auf eine Operation, um zwei oder mehr unterschiedliche Mengen und/oder Bereiche von LIDs zu kombinieren. In der Ausführungsform von 3D kann eine Bereichszusammenfassungsoperation das Zusammenfassen des Eintrags 362 mit den entsprechenden geklonten Einträgen 365 und 367 umfassen. Das Managementmodul 334 für logische Schnittstellen kann konfiguriert sein, Bereichszusammenfassungsoperationen gemäß einer Zusammenfassungsstrategie zu implementieren, wie z. B.: eine Schreibreihenfolgestrategie, in der neuere Änderungen Vorrang vor früheren Änderungen haben; eine prioritätsbasierte Strategie basierend auf der relativen Priorität von Ablagespeicheroperationen (z. B. basierend auf Eigenschaften der Ablagespeicher-Client(s) 106, Anwendungen und/oder Anwendern, die den Ablagespeicheroperationen zugeordnet sind); ein Fertigstellungskennzeichen (z. B. Fertigstellung einer atomaren Ablagespeicheroperation, Fehlschlagen einer atomaren Ablagespeicheroperation oder dergleichen); fadvise-Parameter; ioctrl-Parameter; und/oder dergleichen.
  • 3E bildet eine Ausführungsform einer Bereichszusammenfassungsoperation ab. Die Bereichszusammenfassungsoperation von 3E kann Zusammenfassen des Bereichs 6144-6656 in den Bereich 1024-2048 umfassen. Dementsprechend kann die Bereichszusammenfassungsoperation selektives Anwenden von Änderungen, die innerhalb des LID-Bereichs 6144-6656 vorgenommen werden, auf den LID-Bereich 1024-2048 in Übereinstimmung mit der Zusammenfassungsstrategie umfassen. Die Bereichszusammenfassungsoperation kann deshalb Aktualisieren des LID-Bereichs 1024-2048 umfassen, um die LIDs 1537-2048 den Ablagespeicheradressen 78512-79024, die das neue/modifizierte Datensegment 342 umfassen, zuzuordnen. Die Aktualisierung kann Aufspalten des Eintrags 362 in der Vorwärtsabbildung 160 umfassen; der Eintrag 372 kann konfiguriert sein, die LIDs 1024-1536 Abschnitten des ursprünglichen Datensegments 312 zuzuordnen, und der Eintrag 373 kann konfiguriert sein, die LIDs 1537-2048 dem neuen Datensegment 342 zuzuordnen. Abschnitte des Datensegments 312, die nicht mehr durch die LIDs 1537-2048 referenziert werden, können ungültig gemacht werden, wie hier offenbart. Die Zuordnung des LID-Bereichs 6144-7168, der in den ursprünglichen Quell-Bereich zusammengefasst wurde, kann aufgehoben werden, und/oder aus der Vorwärtsabbildung 160 entfernt werden.
  • Die Bereichszusammenfassungsoperation, die in 3E dargestellt ist, kann zum Modifizieren der logischen Schnittstelle 311C in Abschnitten der Daten führen. Das kontextabhängige Format des Datensegments 342 (das Datenpaket 340) kann das Datensegment 342 den LIDs 6657-7168 anstatt den zusammengefassten LIDs 1537-2048 zuordnen. Wie vorstehend offenbart kann die Ablagespeicherschicht 130 Zugriff auf das Datensegment 342, das in dem inkonsistenten kontextabhängigen Format gespeichert ist, ermöglichen. Die Ablagespeicherschicht 130 kann konfiguriert sein, das Datensegment 342 in einem aktualisierten kontextabhängigen Format zu speichern, in dem das Datensegment 342 den LIDs 1537-2048 in einer oder mehreren Hintergrundoperationen (z. B. Ablagespeicherwiederherstellungsoperationen) zugeordnet wird. In einigen Ausführungsformen kann die Bereichszusammenfassungsoperation ferner das Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um das Datensegment 342 der aktualisierten logischen Schnittstelle 311C zuzuordnen (z. B. das Datensegment 342 an den Ablagespeicheradressen 78512-79024 den LIDs 1537-2048 zuzuordnen). Wie vorstehend offenbart kann die persistente Meldung 366 verwendet werden, um sicherzustellen, dass die Bereichszusammenfassungsoperation persistent und absturzsicher ist. Die persistente Meldung 366 kann in Reaktion auf das Verlagern des Datensegments 342 in ein kontextabhängiges Format, das mit der logischen Schnittstelle 311C konsistent ist (z. B. das Datensegment 342 den LIDs 1537-2048 zuordnet), unter Beibehalten der Vorwärtsabbildung 160, und/oder dergleichen entfernt werden.
  • Die Klonoperationen, die im Zusammenhang mit den 3A–E offenbart sind, können verwendet werden, um andere logische Operationen wie z. B. Bereichsverschiebungsoperationen zu implementieren. Bezug nehmend zurück auf die 3A–C kann eine Klonoperation, um den Eintrag 362 der Vorwärtsabbildung 160 zu replizieren, Modifizieren der logischen Schnittstelle, die dem Datensegment 312 zugeordnet ist, umfassen, um das Datensegment 312 sowohl der ursprünglichen Menge von LIDs 1024-2048 als auch der neuen Menge geklonter LIDs 6144-7168 (des Eintrags 364) zuzuordnen. Die Klonoperation kann ferner das Speichern einer persistenten Meldung 366, die die aktualisierte logische Schnittstelle 311B des Datensegment 312 angibt, und/oder Neuschreiben des Datensegments 312 in Übereinstimmung mit der aktualisierten logischen Schnittstelle 311B in einer oder mehreren Hintergrundablagespeicheroperationen enthalten.
  • Das Managementmodul 334 für logische Schnittstellen kann ferner konfiguriert sein, ”Bereichsverschiebungs”-Operationen zu implementieren. Wie hier verwendet bezieht sich eine ”Bereichsverschiebungs”-Operation auf Modifizieren der logischen Schnittstelle eines oder mehrerer Datensegmente, um die Datensegmente unterschiedlichen Mengen von LIDs zuzuordnen. Eine Bereichsverschiebungsoperation kann deshalb Aktualisieren von Ablagespeichermetadaten 135 (z. B. der Vorwärtsabbildung 160), um das eine oder die mehreren Datensegmente der aktualisierten logischen Schnittstelle zuzuordnen, Speichern einer persistenten Meldung 366, die die aktualisierte logische Schnittstelle der Datensegmente angibt, auf dem Ablagespeichermedium 140 und Neuschreiben der Datensegmente in einem kontextabhängigen Format (Paketformat 310), das mit der aktualisierten logischen Schnittstelle konsistent ist, wie hier offenbart, umfassen. Dementsprechend kann die Ablagespeicherschicht 130 Bereichsverschiebungsoperationen implementieren, die dieselben Mechanismen und/oder Verarbeitungsschritte verwenden wie diejenigen, die vorstehend im Zusammenhang mit 3A–E offenbart sind.
  • Die Klon- und/oder Bereichsverschiebungsoperationen, die in den 3A–E offenbart sind, können spezielle Einschränkungen für die Ablagespeicherschicht 130 einführen. Wie vorstehend offenbart kann das Speichern von Daten in einem kontextabhängigen Format das Zuordnen der Daten zu jeder LID, die die Daten referenziert, umfassen. In der Ausführungsform von 3C umfassen die persistenten Metadaten 324 Referenzen zu beiden LID-Bereichen 1024-2048 und 6144-7168. Das Erhöhen der Anzahl von Referenzen auf ein Datensegment kann deshalb eine entsprechende Erhöhung des Overheads des kontextabhängigen Datenformats einführen (z. B. die Größe der persistenten Metadaten 324 steigern). In einigen Ausführungsformen kann die Größe der persistenten Metadaten 314 beschränkt sein, was die Anzahl von Referenzen und/oder Klonen, die ein spezielles Datensegment 312 referenzieren können, beschränken kann. Außerdem kann das Einschließen von mehreren Referenzen auf unterschiedliche LID(s) Ablagespeicherwiederherstellungsoperationen verkomplizieren. Die Anzahl von Vorwärtsabbildungseinträgen, die aktualisiert werden müssen, wenn ein Datensegment 312 verlagert wird, kann in Übereinstimmung mit der Anzahl von LIDs, die das Datensegment 312 referenzieren, variieren. Bezug nehmend zurück auf 3C kann das Verlagern des Datensegments 312 in einer Pflege- und/oder Ablagespeicherwiederherstellungsoperation das Aktualisieren von zwei getrennten Einträgen 362 und 364 umfassen. Verlagern eines Datensegments, das durch N unterschiedliche LIDs (z. B. N unterschiedliche Klone) referenziert wird, kann das Aktualisieren von N unterschiedlichen Einträgen in der Vorwärtsabbildung 160 umfassen. Ähnlich kann das Speichern des Datensegments das Schreiben von N Einträgen in die persistenten Metadaten 314 umfassen. Dieser variable Overhead kann die Leistungsfähigkeit der Hintergrund-Ablagespeicherwiederherstellungsoperationen reduzieren und kann die Anzahl von gleichzeitigen Klonen und/oder Referenzen, die unterstützt werden können, beschränken.
  • In einigen Ausführungsformen kann das Managementmodul 334 für logische Schnittstellen eine Zwischenabbildungsschicht umfassen und/oder unterstützen, um den Overhead, der durch die Klonoperationen eingeführt wird, zu reduzieren. Die Zwischenabbildungsschicht kann ”Referenzeinträge” umfassen, die konfiguriert sind, effiziente Klonungsoperationen (und außerdem andere Operationen, wie hier mit mehr Einzelheiten offenbart ist) zu ermöglichen. Wie hier verwendet bezieht sich ein ”Referenzeintrag” auf einen Eintrag einer Abbildungsdatenstruktur, der verwendet wird, um andere Einträge innerhalb der Vorwärtsabbildung 160 (und/oder andere Ablagespeichermetadaten 135) zu referenzieren. Ein Referenzeintrag kann nur existieren, während er durch einen oder mehrere andere Einträge innerhalb des logischen Adressraums 132 referenziert wird. In einigen Ausführungsformen können Referenzeinträge nicht für die Ablagespeicher-Clients 106 zugreifbar sein und/oder können unveränderlich sein. Die Ablagespeicherschicht 130 kann Referenzeinträge unterstützen, um zu ermöglichen, dass Ablagespeicher-Clients dieselbe Menge von Daten durch mehrere, unterschiedliche logische Schnittstellen über eine einzige Referenzeintragsschnittstelle referenzieren. Das kontextabhängige Format der Daten auf dem Ablagespeichermedium 140 (Daten, die durch mehrere LIDs referenziert werden) kann vereinfacht werden, um die Daten den Referenzeinträgen zuzuordnen, die wiederum N anderen logischen Schnittstelle(n) durch andere persistente Metadaten (z. B. persistente Meldungen 366) zugeordnet sind. Verlagern geklonter Daten kann deshalb Aktualisieren einer einzigen Abbildung zwischen dem Referenzeintrag und der neuen Ablagespeicheradresse des Datensegments umfassen.
  • 4A ist ein Blockdiagramm einer weiteren Ausführungsform eines Systems 400 für effiziente Öffnen-bis-Schließen-Konsistenz. Das System 400 enthält eine Ablagespeicherschicht 130, die konfiguriert ist, Bereichsklonoperationen durch Verwenden einer Zwischenabbildungsschicht zu implementieren. Die Ablagespeichermetadaten 135 können eine Vorwärtsabbildung 160, die zu dem logischen Adressraum 132 gehört, umfassen. Die Vorwärtsabbildung 160 (und/oder andere Ablagespeichermetadaten 135) können Informationen enthalten, die zu Zuweisungen des logischen Adressraums durch die Ablagespeicher-Clients 106, Bindungen zwischen LIDs und Ablagespeicheradressen innerhalb des Ablagespeicheradressraums 144 und so weiter, gehören, wie vorstehend offenbart.
  • In der Ausführungsform von 4A kann das Managementmodul 334 für logische Schnittstellen ein Referenzmodul 434 umfassen, das konfiguriert ist, Klonoperationen durch Verwenden einer Referenzabbildung 460 zu managen. Die Referenzabbildung 460 kann Referenzeinträge umfassen, die Daten entsprechen, die durch eine oder mehrere logische Schnittstellen des logischen Adressraums 132 (z. B. eine oder mehrere Mengen von LIDs) referenziert werden. Das Referenzmodul 434 kann konfiguriert sein, Referenzeinträge zu entfernen, die nicht mehr verwendet werden, um gültige Daten zu referenzieren und/oder nicht mehr durch Einträge innerhalb der Vorwärtsabbildung 160 referenziert werden. Wie in 4A dargestellt, können Referenzeinträge getrennt von der Vorwärtsabbildung 160 gepflegt werden (z. B. in einer getrennten Referenzabbildung 460). Die Referenzeinträge können durch Verwenden von Referenzkennungen, die in einem von dem logischen Adressraum 132 getrennten Namensraum gepflegt werden können, identifiziert werden. Dementsprechend können die Referenzeinträge Teil eines dazwischenliegenden, ”virtuellen” oder ”Referenz”-Adressraums 432 sein, der von dem logischen Adressraum 132, der für die Ablagespeicher-Clients 106 durch die Ablagespeicherschichtschnittstelle 131 direkt zugreifbar ist, getrennt und verschieden ist. Alternativ können in einigen Ausführungsformen Referenzeinträge LIDs zugewiesen sein, die aus vorbestimmten Bereichen und/oder Abschnitten des logischen Adressraums 132, die nicht direkt für die Ablagespeicher-Clients 106 zugreifbar sind, ausgewählt sind.
  • Das Managementmodul 334 für logische Schnittstellen kann konfiguriert sein, Klonoperationen durch Verknüpfen eines oder mehrerer LID-Einträge in der Vorwärtsabbildung 160 mit Referenzeinträgen in der Referenzabbildung 460 zu implementieren. Die Referenzeinträge können an die Ablagespeicheradresse(n) der geklonten Daten gebunden sein. Dementsprechend können LIDs, die geklonten Daten zugeordnet sind, die zugrundeliegenden Daten durch die Referenzabbildung 460 indirekt referenzieren (z. B. die LID(s) können auf Referenzeinträge abbilden, die wiederum auf Ablagespeicheradressen abbilden). Dementsprechend können Einträge in der Vorwärtsabbildung 160, die geklonten Daten entsprechen, als ”indirekte Einträge” bezeichnet werden. Wie hier verwendet bezieht sich ein ”indirekter Eintrag” auf einen Eintrag in der Vorwärtsabbildung 160, der einen Referenzeintrag in der Referenzabbildung 460 referenziert und/oder mit ihm verknüpft ist. Indirekte Einträge können einer LID innerhalb des logischen Adressraums 132 zugewiesen sein und können für die Ablagespeicher-Clients 106 zugreifbar sein.
  • Wie vorstehend offenbart können, nach dem Klonen einer speziellen Menge von LIDs, die Ablagespeicher-Clients 106 Ablagespeicheroperationen innerhalb eines oder mehrerer der geklonten Bereiche ausführen, was verursachen kann, dass die Klone voneinander divergieren (in Übereinstimmung mit der Klonbetriebsart). In einer ”Kopieren-nach-Schreiben”-Betriebsart können Änderungen, die an einem speziellen Klon vorgenommen werden, nicht in anderen geklonten Bereichen widergespiegelt sein. In der Ausführungsform von 4A können Änderungen, die an einem Klon vorgenommen werden, in ”lokalen” Einträgen, die einem indirekten Eintrag zugeordnet sind, widergespiegelt sein. Wie hier verwendet bezieht sich ein ”lokaler Eintrag” auf einen Abschnitt eines indirekten Eintrags, der auf eine oder mehrere Ablagespeicheradressen des Ablagespeichermediums 140 indirekt abgebildet ist. Dementsprechend können lokale Einträge konfiguriert sein, Daten zu referenzieren, die in einem speziellen Klon geändert worden sind und/oder von den Inhalten anderer Klone verschieden sind. Lokale Einträge können deshalb Daten entsprechen, die für einen speziellen Klon eindeutig sind.
  • Das Umsetzungsmodul 134 kann konfiguriert sein, auf Daten zuzugreifen, die geklonten Daten zugeordnet sind, durch Verwenden, unter anderem, der Referenzabbildung 460 und/oder des Referenzmoduls 434. Das Umsetzungsmodul 134 kann ein kaskadierendes Nachschlagen implementieren, das zuerst das Durchsuchen lokaler Einträge umfassen kann, und dann, wenn die Ziel-Front-Kennung(en) nicht innerhalb lokaler Einträge gefunden werden, das Durchsuchen innerhalb der Referenzeinträge, mit denen der indirekte Eintrag verknüpft ist, fortsetzen kann.
  • Das Log-Ablagespeichermodul 136 und Medienmanagementmodul 370 können konfiguriert sein, das kontextabhängige Format geklonter Daten zu managen. In der Ausführungsform von 4A können geklonte Daten (Daten, die durch zwei oder mehr LID-Bereiche innerhalb der Vorwärtsabbildung 160 referenziert werden) in einem kontextabhängigen Format gespeichert sein, das die Daten einem oder mehreren Referenzeinträgen der Referenzabbildung 460 zuordnet. Die persistenten Metadaten, die mit solchen geklonten Datensegmenten gespeichert sind, können einem einzigen Referenzeintrag entsprechen, im Gegensatz zum Identifizieren jeder LID, die dem Datensegment zugeordnet ist. Erzeugen eines Klons kann deshalb Aktualisieren des kontextabhängigen Formats der geklonten Daten in einer oder mehreren Hintergrundoperationen durch Verwenden von, unter anderen, des Medienmanagementmoduls 370 umfassen, wie vorstehend offenbart.
  • 4B bildet eine Ausführungsform einer Klonoperation unter Verwendung einer Referenzabbildung 460 ab. In Zustand 413A kann ein Eintrag, der LID 10 Spanne 2 in dem logischen Adressraum 132 entspricht (in 4B als 10,2 bezeichnet), direkt Daten an der Ablagespeicheradresse 20000 auf dem Ablagespeichermedium 140 referenzieren. Andere Einträge sind aus 4B weggelassen, um das Verdecken der Einzelheiten der offenbarten Ausführungsform zu vermeiden. In Zustand 413B implementiert die Ablagespeicherschicht 130 eine Operation, um den Bereich 10,2 zu klonen. Das Klonen des Bereich 10,2 kann Folgendes umfassen: a) Zuweisen eines neuen Bereichs von LIDs (bezeichnet als 400,2 in 4B) in dem logischen Adressraum und b) Zuweisen von Referenzeinträgen in der Referenzabbildung 460, durch die die Einträge 10,2 und 400,2 die geklonten Daten an der Ablagespeicheradresse 20000 (als 100000,2 in 4B bezeichnet) referenzieren können. Die Klonoperation kann ferner das Zuordnen der Einträge 10,2 und 400,2 zu dem Referenzeintrag 100000,2 umfassen, wie in dem Zustand 413C dargestellt ist. Wie vorstehend offenbart kann das Zuordnen der Einträge 10,2 und 400,2 zu dem Referenzeintrag 100000,2 Angeben umfassen, dass die Einträge 10,2 und 400,2 indirekte Einträge sind. Zustand 413C kann ferner das Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um die Daten an der Ablagespeicheradresse 20000 dem Referenzeintrag 100000,2 zuzuordnen und/oder die Einträge 10,2 und 400,2 dem Referenzeintrag 100000,2 in der Referenzabbildung 460 zuzuordnen.
  • Die Ablagespeicherschicht 130 kann Zugriff auf das Datensegment an der Ablagespeicheradresse 20000 entweder durch LID 10 oder 400 (durch den Referenzeintrag 100000,2) ermöglichen. In Reaktion auf eine Anforderung, die zu LID 10 oder 400 gehört, kann das Umsetzungsmodul 134 bestimmen, dass der entsprechende Eintrag in der Vorwärtsabbildung 160 ein indirekter Eintrag ist, der einem Eintrag in der Referenzabbildung 460 zugeordnet ist. In Reaktion darauf führt das Referenzmodul 434 eine Kaskade aus, um die Ablagespeicheradresse durch Verwenden lokaler Einträge innerhalb der Vorwärtsabbildung 160 (falls vorhanden) und der entsprechenden Referenzeinträge in der Referenzabbildung 460 (z. B. Referenzeintrag 100000,2) zu bestimmen.
  • Erzeugen des Klons an Schritt 413C kann Modifizieren der logischen Schnittstelle des Datensegments, das an Schritt 20000 gespeichert ist, umfassen, um die Daten beiden LID-Bereichen 10,2 und 400,2 zuzuordnen. Das kontextabhängige Format der Daten kann jedoch nur die Daten den LIDs 10,2 zuordnen. Wie vorstehend offenbart kann das Erzeugen des Klons ferner das Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um das Datensegment den LIDs 10,2 und 400,2 durch den Referenzeintrag 100000,2 zuzuordnen. Das Datensegment kann in einem aktualisierten kontextabhängigen Format in einer oder mehreren Hintergrundoperationen, die durch das Medienmanagementmodul 370 ausgeführt werden, neu geschrieben werden. Die Daten können mit persistenten Metadaten 314 gespeichert werden, die das Datensegment dem Referenzeintrag 100000,2 zuordnen, im Gegensatz zu den getrennten LID-Bereichen 10,2 und 400,2. Deshalb kann das Verlagern des Datensegments (wie im Stand 413D gezeigt) nur Aktualisieren eines einzelnen Eintrags in der Referenzabbildung 460 erfordern, im Gegensatz zu mehreren Einträgen, die jedem LID-Bereich entsprechen, der die Daten referenziert (z. B. mehrere Einträge 10,2 und 400,2). Außerdem kann jede Anzahl von LID-Bereichen in der Vorwärtsabbildung 160 das Datensegment referenzieren, ohne die Größe der persistenten Metadaten 314, die den Daten auf dem Ablagespeichermedium 140 zugeordnet sind, zu erhöhen und/oder die Operation des Medienmanagementmoduls 370 zu verkomplizieren.
  • 4C bildet eine weitere Ausführungsform einer Klonoperation ab, die unter Verwendung von Referenzeinträgen implementiert ist. In Reaktion auf eine Anforderung, einen Klon der LIDs 1024-2048 und/oder des Datensegments 312 zu erzeugen, kann das Managementmodul 334 für logische Schnittstellen konfiguriert sein, einen Referenzeintrag 482 in der Referenzabbildung 460 zuzuweisen, um das Datensegment 312 zu repräsentieren. Jede Anzahl von LID(s) in der Vorwärtsabbildung 160 kann die Daten durch den Referenzeintrag 482 referenzieren, ohne den Overhead der persistenten Metadaten, die dem Datensegment 312 zugeordnet sind, zu erhöhen und/oder die Operation des Medienmanagementmoduls 370 zu verkomplizieren. Wie in 4C abgebildet ist, kann der Referenzeintrag 482 an die Ablagespeicheradressen des Datensegments 312 (Ablagespeicheradressen 64432-65456) gebunden sein. Die Einträge 462 und 472 in der Vorwärtsabbildung 160 können die Ablagespeicheradressen durch den Referenzeintrag 482 indirekt referenzieren (können z. B. mit dem Referenzeintrag 482 verknüpft sein, wie in 4C dargestellt).
  • In der Ausführungsform von 4C ist der Referenzeintrag 482 den Kennungen 0Z-1024Z zugewiesen. Die Kennung(en) des Referenzeintrags 482 kann/können einem speziellen Abschnitt des logischen Adressraums 132 entsprechen oder einem anderen, getrennten Namensraum entsprechen. Die Ablagespeicherschicht 130 kann die Einträge 462 und 472 durch Verwenden von, unter anderem, Metadaten, die den Einträgen 462 und/oder 472 zugeordnet sind, mit dem Referenzeintrag 482 verknüpfen. Alternativ oder zusätzlich können die indirekten Einträge 462 und/oder 472 Ablagespeicheradressmetadaten durch Referenzen und/oder Verknüpfungen zu dem Referenzeintrag 482 ersetzen. Der Referenzeintrag 482 kann durch Ablagespeicher-Clients 106 nicht direkt über die Ablagespeicherschicht 130 zugreifbar sein.
  • Die Klonoperation kann ferner Modifizieren der logischen Schnittstelle 311D des Datensegments 312 umfassen; die modifizierte logische Schnittstelle 311D kann ermöglichen, dass das Datensegment 312 durch die LIDs 1024-2048 des indirekten Eintrags 462 und/oder 6144-7168 des indirekten Eintrags 472 referenziert wird. Obwohl der Referenzeintrag 482 für die Ablagespeicher-Clients 106 nicht zugreifbar sein kann, kann der Referenzeintrag 482 verwendet werden, um durch das Umsetzungsmodul 134 (durch die indirekten Einträge 462 und 472) auf die Daten zuzugreifen, und kann als solcher als ein Teil der modifizierte logischen Schnittstelle 311B des Datensegment 312 betrachtet werden.
  • Die Klonoperation kann ferner Speichern einer persistenten Meldung 366A auf dem Ablagespeichermedium 140 umfassen. Wie vorstehend offenbart kann das Speichern der persistenten Meldung(en) 366A und/oder 366B sicherstellen, dass die Klonoperation persistent und absturzsicher ist. Die persistenten Meldung 366A kann konfiguriert sein, den Referenzeintrag 482, der dem Datensegment 312 zugeordnet ist, zu referenzieren. Dementsprechend kann die persistente Meldung 366A die Ablagespeicheradressen 64432-65456 der/den Referenzeintragskennung(en) 0Z-1024Z zuordnen. Die Klonoperation kann ferner Speichern einer weiteren persistenten Meldung 366B umfassen, die konfiguriert ist, die LIDs der Einträge 462 und/oder 472 dem Referenzeintrag 482 zuzuordnen. Alternativ können Metadaten, die zu der Zuordnung zwischen den Einträgen 462, 472 und 482 gehören, in einer einzelnen persistenten Meldung enthalten sein. Die persistenten Meldungen 366A und/oder 366B können auf dem Ablagespeichermedium 140 gehalten werden, bis das Datensegment 312 in einem aktualisierten kontextabhängigen Format verlagert wird und/oder die Vorwärtsabbildung 160 (und/oder Referenzabbildung 460) fortbesteht.
  • Die modifizierte logische Schnittstelle 311D des Datensegments 312 kann mit dem kontextabhängigen Format des ursprünglichen Datenpakets 410A inkonsistent sein; die persistenten Metadaten 314A können anstelle des Referenzeintrags 482 und/oder des geklonten Eintrags 472 die LIDs 1024-2048 referenzieren. Die Ablagespeicherschicht 130 kann konfiguriert sein, das Datensegment 312 in einem aktualisierten kontextabhängigen Format zu speichern (Paket 410B), das mit der modifizierten logischen Schnittstelle 311D konsistent ist; die persistenten Metadaten 314B können das Datensegment 312 dem Referenzeintrag 482 zuordnen, im Gegensatz zum getrennten Identifizieren der LID(s) innerhalb jedes geklonten Bereichs (z. B. Einträge 462 und 472). Dementsprechend ermöglicht das Verwenden des indirekten Eintrags 482, dass die logische Schnittstelle 311D des Datensegments 312 jede Anzahl von LIDs umfasst, unabhängig von den Größenbeschränkungen der persistenten Metadaten 314A–B. Außerdem können zusätzliche Klone des Referenzeintrags 482 ohne Aktualisieren des kontextabhängigen Formats des Datensegments 312 erzeugt werden; solche Aktualisierungen können durch Zuordnen der neuen LID-Bereiche zu dem Referenzeintrag 482 in der Vorwärtsabbildung 160 und/oder durch Verwenden von, unter anderem, persistenten Meldungen 366 vorgenommen werden.
  • Wie vorstehend offenbart können die indirekten Einträge 462 und/oder 472 anfänglich das Datensegment 312 durch den Referenzeintrag 482 referenzieren. Ablagespeicheroperationen, die nachfolgend den Klonoperation ausgeführt werden, können durch Verwenden lokaler Einträge innerhalb der Vorwärtsabbildung 160 widergespiegelt sein. Nach der Fertigstellung der Klonoperation kann die Ablagespeicherschicht 130 Daten modifizieren, die einer oder mehreren der geklonten LID(s) zugeordnet sind. In der Ausführungsform von 4D modifiziert und/oder überschreibt ein Ablagespeicher-Client 106 die Daten, die den LIDs 1024-1052 des indirekten Eintrags 462 entsprechen, was Anhängen eines neuen Datensegments 412 an das Ablagespeicher-Log (in dem Datenpaket 420 an den Ablagespeicheradressen 7823-7851) umfassen kann.
  • Das Datensegment 412 kann in einem kontextabhängigen Format (Datenpaket 420) gespeichert werden, das persistente Metadaten 414A umfasst, die konfiguriert sind, das Datensegment 412 den LIDs 1024-1052 zuzuordnen. Die Ablagespeicherschicht 130 kann konfiguriert sein, das Datensegment 412 den LIDs 1024-1052 in einem lokalen Eintrag 465 zuzuordnen. Der lokale Eintrag 465 kann die aktualisierten Daten direkt referenzieren, im Gegensatz zum Referenzieren der Daten durch den indirekten Eintrag 462 und/oder den Referenzeintrag 482.
  • In Reaktion auf eine Anforderung, die zu den Daten 1024-1052 (oder einer Teilmenge davon) gehört, kann das Managementmodul 334 für logische Schnittstellen nach Referenzen auf die angeforderten LIDs in einer Kaskadennachschlagoperation suchen, was Suchen nach Referenzen auf lokale Einträge (falls verfügbar) gefolgt durch Referenzeinträge umfassen kann. In der Ausführungsform von 4D kann der lokale Eintrag 465 verwendet werden, um Anforderungen zu erfüllen, die zum dem LID-Bereich 1024-1052 (Ablagespeicheradressen 7823-7851) anstatt 64432-64460 für den Referenzeintrag 462 gehören. Anforderungen für LIDs, die nicht in einem lokalen Eintrag gefunden werden (z. B. LIDs 1053-2048), können weiterhin durch den Referenzeintrag 482 bedient werden. Die logische Schnittstelle 311E der Daten, die zu dem Bereich 1024-2048 gehören, umfasst deshalb einen oder mehrere lokale Einträge 465, einen oder mehrere indirekte Einträge 462 und/oder einen oder mehrere Referenzeinträge 482.
  • In einer weiteren Ausführungsform, die in 4E dargestellt ist, kann eine Ablagespeicherschicht 130 Daten des Klons durch ein weitere der LIDs der logischen Schnittstelle 311E (z. B. LIDs 6144-6162) modifizieren; die logischen Schnittstellenbegrenzer sind in 4E nicht gezeigt, um Verdecken der Einzelheiten der dargestellten Ausführungsform zu vermeiden. Die modifizierten Daten können unter Verwendung eines lokalen Eintrags 475 referenziert werden, wie vorstehend offenbart. In der Ausführungsform von 4E weist jeder der Bereiche 462 und 472 seine eigene jeweilige lokale Version der Daten auf, die vorher durch die Kennungen 0Z-52Z des Referenzeintrags 482 referenziert wurden. Als solches enthält weder Eintrag 462 noch Eintrag 472 eine Referenz auf den Bereich 0Z-52Z. Das Referenzmodul 434 kann bestimmen, dass die entsprechenden Daten (und Referenzkennungen) nicht mehr referenziert werden und als solche zum Entfernen aus dem Ablagespeichermedium 140 markiert werden (z. B. ungültig gemacht werden) können. Wie in 4E abgebildet, kann das Ungültigmachen der Daten Entfernen von Referenzen auf die Daten aus der Referenzabbildung 460 durch, unter anderem, Modifizieren des Referenzeintrags 482, um den Bereich 0Z-52Z zu entfernen, umfassen. Ungültigmachen der Daten kann ferner Aktualisieren anderer Ablagespeichermetadaten 135 umfassen, wie z. B. einer Umkehrabbildung, Gültigkeits-Bitmaps und/oder dergleichen (z. B. um anzugeben, dass die Daten, die an den Ablagespeicheradressen 64432-64484 gespeichert sind, nicht beibehalten werden müssen). Die Bereiche der Einträge 462 und 472 können weiterhin divergieren, bis nichts irgendeinen Abschnitts des Referenzeintrags 482 referenziert, wobei an diesem Punkt der Referenzeintrag 482 entfernt werden kann und die Daten, die durch ihn referenziert werden, ungültig gemacht werden können, wie vorstehend offenbart.
  • Obwohl die 4D und 4E lokale Einträge 465 und 475, die überlappende LID-Bereiche mit den entsprechenden indirekten Einträgen 462 und 472 umfassen, abbilden, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen kann die Ablagespeicheroperation von 4D durch Erzeugen des lokalen Eintrags 465 und Modifizieren des indirekten Eintrags 462, um nur die LIDs 1053-2048 zu referenzieren, widergespiegelt sein. Ähnlich kann die Operation von 4E das Erzeugen des lokalen Eintrags 475 und Modifizieren des indirekten Eintrags 472, um einen abgeschnittenen LID-Bereich 6163-7168 zu referenzieren, umfassen.
  • Bezug nehmend zurück auf 4A kann das Referenzmodul 434 konfiguriert sein, die Referenzabbildung 460 zu managen oder zu ”pflegen”. In einigen Ausführungsformen umfasst jeder Eintrag in die Referenzabbildung 460 Metadaten, die einen Referenzzählwert enthalten. Der Referenzzählwert kann inkrementiert werden, wenn neue Referenzen oder Verknüpfungen auf den Referenzeintrag hinzugefügt werden, und kann in Reaktion auf Entfernen von Referenzen auf den Eintrag dekrementiert werden. In einigen Ausführungsformen können Referenzzählwerte für jeden Referenzkennung in der Referenzabbildung 460 gepflegt werden. Alternativ können Referenzzählwerte für Referenzeinträge als Ganzes gepflegt werden. Wenn der Referenzzählwert eines Referenzeintrags 0 erreicht, kann der Referenzeintrag (und/oder ein Abschnitt davon) aus der Referenzabbildung 460 entfernt werden. Entfernen eines Referenzeintrags (oder eines Abschnitts eines Referenzeintrags) kann Ungültigmachen der entsprechenden Daten auf dem Ablagespeichermedium 140 umfassen (was angibt, dass die Daten nicht mehr gehalten werden müssen), wie hier offenbart ist.
  • In einer weiteren Ausführungsform kann das Referenzmodul 434 Referenzeinträge unter Verwendung einer ”Markieren-und-Streichen”-Herangehensweise entfernt werden. Das Referenzmodul 434 (oder ein anderer Prozess wie z. B. das Umsetzungsmodul 134) kann Referenzen auf Einträge in der Referenzabbildung 460 periodisch durch, unter anderem, Folgen von Verknüpfungen auf die Referenzeinträge von indirekten Einträgen (oder anderen Typen von Einträgen) in der Vorwärtsabbildung 160 überprüfen. Referenzeinträge, auf die während dem Markieren-und-Streichen nicht zugegriffen wird, können entfernt werden, wie vorstehend offenbart. Das Markieren-und-Streichen kann als ein Hintergrundprozess arbeiten und kann periodisch Markieren-und-Streichen-Operation ausführen, um Referenzeinträge, die nicht mehr verwendet werden, zu identifizieren und zu entfernen.
  • In einigen Ausführungsformen kann die hier offenbarte Referenzabbildung 460 bei Bedarf erzeugt werden (z. B. in Reaktion auf Erzeugen eines Klons oder einer anderen indirekten Datenreferenz). In anderen Ausführungsformen können alle Datenablagespeicheroperationen durch Zwischenabbildungen ausgeführt werden. In solchen Ausführungsformen können Ablagespeicher-Clients 106 indirekte, virtuelle Kennungen (VIDs) eines virtuellen Adressraums (VAS) zuweisen, die mit Referenzablagespeicheradressen über eine Zwischenabbildungsschicht wie z. B. dem logischen Adressraum 132 verknüpft sein können und/oder sie referenzieren können. Der VAS kann eine Zwischenabbildungsschicht zwischen Ablagespeicher-Clients 106 und dem Ablagespeichermedium 140 hinzufügen. Ablagespeicher-Clients 106 können Daten referenzieren unter Verwendung von VIDs eines virtualisierten Adressraums, die auf logische Kennungen des logischen Adressraums 132 abbilden und die wiederum Ablagespeicheradressen auf jeweiligen AblageAblagespeichervorrichtung(en) 141 und/oder dem Ablagespeichermedium 140 zugeordnet sind. Wie hier verwendet kann ein VAS einen Adressraum für logische Einheitennummern (LUN-Adressraum), einen virtuellen LUN-Adressraum (vLUN-Adressraum) und/oder dergleichen enthalten, ist jedoch nicht darauf beschränkt.
  • 5A bildet eine Ausführungsform einer Indirektionsschicht 530 ab, die konfiguriert ist, unter anderem, effiziente Bereichsklonoperationen unter Verwendung eines virtualisierten Adressraums 532 zu implementieren. Die Indirektionsschicht 530 kann konfiguriert sein, einen VAS 532 für die Ablagespeicher-Clients 106 durch eine Schnittstelle 531 zu präsentieren. Wie die hier offenbarte Schnittstelle 131 kann die Schnittstelle 531 einen oder mehrere aus einer Blockvorrichtungsschichtstelle, einer virtuellen Ablagespeicherschnittstelle, einer Cache-Schnittstelle und/oder dergleichen umfassen. Ablagespeicher-Clients 106 können Ablagespeicheroperationen, die zu Ablagespeicherbetriebsmitteln gehören, die durch die Indirektionsschicht 530 gemanagt werden, durch Referenz auf VIDs des VAS 532 durch die Schnittstelle 531 ausführen.
  • Die Indirektionsschicht 530 kann ferner ein VAS-Umsetzungsmodul 534 umfassen, das konfiguriert ist, VIDs auf Ablagespeicherbetriebsmittel durch eine oder mehrere Zwischenablagespeicherschichten (z. B. die Ablagespeicherschicht 130) abzubilden. Dementsprechend können die VAS-Metadaten 535 der Indirektionsschicht 530 eine VAS-Vorwärtsabbildung 560 enthalten, die Jede-auf-jede-Abbildungen zwischen VIDs des VAS 532 und LIDs des VAS 532 umfasst. Obwohl in 5A nicht abgebildet können das VAS-Umsetzungsmodul 534 und/oder die VAS-Vorwärtsabbildung 560 konfiguriert sein, mehrere logische Adressräume 132 von mehreren unterschiedlichen Ablagespeicherschichten 130 zu aggregieren. Dementsprechend kann in einigen Ausführungsformen der VAS 532 mehreren unterschiedlichen logischen Adressräumen entsprechen, von denen jeder eine getrennte Menge von LIDs umfasst und jeder einer/einem jeweiligen Ablagespeicherschicht 130, AblageAblagespeichervorrichtung 141 und/oder Ablagespeichermedium 140 entspricht.
  • Obwohl 5A die Indirektionsschicht 530 getrennt von der Ablagespeicherschicht 130 abbildet, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen können VAS 532, VAS-Vorwärtsabbildung 560, VAS-Umsetzungsmodul 534 und/oder andere Module der Indirektionsschicht 530 als Teil der Ablagespeicherschicht 130 implementiert sein.
  • Die Indirektionsschicht 530 kann konfiguriert sein, den dazwischenliegenden virtuellen Adressraum, der durch den VAS 532 bereitgestellt ist, zu pflegen, um, unter anderem, effiziente Bereichsklon-, Verschiebungs-, Zusammenfassungs- und/oder andere Operationen höherer Ebene zu implementieren. Alternativ oder zusätzlich kann/können die Zwischenabbildungsschicht(en) unterstützt werden, um effiziente Klonoperationen für Direktzugriffs-Ablagespeichervorrichtungen zum Schreiben am Ort, wie z. B. Festplatten und/oder dergleichen, zu ermöglichen.
  • Ablagespeicher-Clients 106 können Ablagespeicheroperationen mit Bezug auf VIDs des VAS 532 ausführen. Dementsprechend können Ablagespeicheroperationen zwei (oder mehr) Umsetzungsschichten umfassen. Die VAS-Vorwärtsabbildung 560 kann eine erste Umsetzungsschicht zwischen VIDs des VAS 532 und Kennungen des logischen Adressraums 132 der Ablagespeicherschicht 130 umfassen. Die Vorwärtsabbildung 160 der Ablagespeicherschicht 130 kann eine zweite Umsetzungsschicht zwischen LIDs und Ablagespeicheradresse(n) auf dem Ablagespeichermedium 140 implementieren.
  • Die Indirektionsschicht 530 kann konfiguriert sein, Zuweisungen innerhalb des VAS 532 durch Verwenden, unter anderem, der VAS-Metadaten 535, VAS-Vorwärtsabbildung 560 und/oder des VAS-Umsetzungsmoduls 534 zu managen. In einigen Ausführungsformen kann das Zuweisen einer VID in dem VAS 532 Zuweisen einer oder mehrerer entsprechender LIDs in dem logischen Adressraum 132 (und/oder Kennungen einer oder mehrerer anderer Ablagespeicherschichten) umfassen. Dementsprechend kann jede VID, die in dem VAS 532 zugewiesen ist, einer oder mehreren LIDs des logischen Adressraums 132 entsprechen. Die Jede-auf-jede-Abbildungen zwischen den VIDs der Indirektionsschicht 530 und dem logischen Adressraum 132 können dünn und/oder jede-auf-jede sein, wie hier offenbart. Außerdem kann in einigen Ausführungsformen die Indirektionsschicht 530 konfiguriert sein, Jede-auf-jede- und/oder bereichsgemanagte Abbildungen zwischen VIDs und mehreren unterschiedlichen logischen Adressräumen 132 zu pflegen. Dementsprechend kann die Indirektionsschicht 530 die logischen Adressräume mehrerer unterschiedlicher Ablagespeichervorrichtungen 141, die durch unterschiedliche jeweilige Ablagespeicherschichten 130 gemanagt werden, in einen einzelnen aggregierten VAS 532 aggregieren und/oder kombinieren.
  • In der Ausführungsform von 5A kann der logische Adressraum 132 nicht direkt zugreifbar sein, und als solche können Ablagespeicher-Clients 106 Ablagespeicherbetriebsmittel unter Verwendung von VIDs durch die Schnittstelle 531 referenzieren. Deshalb kann Ausführen einer Ablagespeicheroperation durch die Indirektionsschicht 530 mit Referenz auf eine oder mehrere VIDs Folgendes umfassen: a) Identifizieren der Ablagespeicherschicht 130, die den VIDs entspricht, b) Bestimmen der LID(s) der Ablagespeicherschicht 130, die auf die VIDs abgebildet sind, durch Verwenden des VAS-Umsetzungsmoduls 534 und/oder der VAS-Vorwärtsabbildung 560; und c) Implementieren der Ablagespeicheroperation durch Verwenden der Ablagespeicherschicht 130 mit Referenz auf die bestimmte(n) LID(s).
  • 5B bildet eine Ausführungsform einer Klonoperation ab, die durch Verwenden der Indirektionsschicht 530 implementiert ist. Wie vorstehend offenbart kann die VAS-Vorwärtsabbildung 560 einem VAS 532 entsprechen, der durch einen logischen Adressraum 132 einer Ablagespeicherschicht 130 indirekt auf Ablagespeicheradressen abgebildet ist. 5B stellt die Adressierungsschichten dar, die verwendet werden, um Ablagespeicheroperationen durch die Indirektionsschicht 530 zu implementieren. Die VIDs des VAS 532 können die Adressierungsschicht der höchsten Ebene umfassen, die für Ablagespeicher-Clients 106 durch, unter anderem, die Schnittstelle 531 der Indirektionsschicht 530 zugreifbar ist. Der logische Adressraum 132 der Ablagespeicherschicht 130 kann eine Zwischenadressierungsschicht umfassen. Die VAS-Vorwärtsabbildung 560 kann Jede-auf-jede-Abbildungen zwischen VIDs und LIDs umfassen. Die LIDs können auf Ablagespeicheradressen innerhalb des Ablagespeicheradressraums 144 durch Verwenden der Vorwärtsabbildung 160 abgebildet werden. Dementsprechend können VIDs auf den Ablagespeicheradressraum 144 durch den dazwischenliegenden logischen Adressraum der Ablagespeicherschicht 130 abgebildet werden.
  • Wie in 5B dargestellt ist, kann in einem Zustand 563A die VAS-Vorwärtsabbildung 560 einen Eintrag 10,2, der zwei VIDs (10 und 11) in dem VAS 532 repräsentiert, umfassen. Die VAS-Vorwärtsabbildung 560 ordnet den VID-Eintrag 10,2 LIDs des logischen Adressraums 132 zu. In der Ausführungsform von 5B bindet die VAS-Vorwärtsabbildung 560 den VID-Eintrag 10,2 an die LIDs 100000 und 100001 (Eintrag 100000,2). Der Eintrag 10,2 kann einem speziellen Ablagespeicher-Client 106, der Ablagespeicheroperationen in Bezug auf die VIDs ausführen kann, zugewiesen sein. In dem Zustand 563A kann die Ablagespeicherschicht 130 konfiguriert sein, den Eintrag 100000,2 auf eine oder mehrere Ablagespeicheradressen auf dem Ablagespeichermedium 140 (Ablagespeicheradresse 20000) abzubilden.
  • In dem Zustand 536B kann die Indirektionsschicht 530 eine Klonoperation implementieren, um den VID-Eintrag 10,2 zu klonen. Die Klonoperation kann Folgendes umfassen: a) Zuweisen eines neuen VID-Eintrags 400,2, und b) Zuordnen des neuen VID-Eintrags 400,2 zu dem entsprechenden Eintrag 100000,2 in der VAS-Vorwärtsabbildung 560. Der entsprechende Eintrag 100000,2 in der Vorwärtsabbildung 160 kann unverändert bleiben. Alternativ kann ein Referenzzählwert (oder ein anderes Kennzeichen) des Eintrags 100000,2 in der Vorwärtsabbildung 160 aktualisiert werden, um anzugeben, dass der Eintrag durch mehrere VID-Bereiche referenziert wird. Das kontextabhängige Format der Daten, die an der Ablagespeicheradresse 20000 gespeichert sind, kann unverändert bleiben (z. B. weiterhin die Daten der logischen Schnittstelle 100000,2 zuordnen). Die Klonoperation kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um die Zuordnung zwischen dem VID-Eintrag 400,2 und dem Eintrag 100000,2 in der Vorwärtsabbildung 160 anzugeben. Alternativ oder zusätzlich kann die Klonoperation durch Beibehalten der VAS-Vorwärtsabbildung 560 (und/oder Abschnitten davon) persistent und/oder absturzsicher gemacht werden.
  • Im Zustand 536C können die Daten an der Ablagespeicheradresse 20000 zu der Ablagespeicheradresse 40000 verlagert werden. Die Verlagerung kann in einer Standardablagespeichermedienpflegeoperation auftreten und nicht, um das kontextabhängige Format der geklonten Daten zu aktualisieren. Verlagern der Daten kann Aktualisieren eines einzigen Eintrags in der Vorwärtsabbildung 160 umfassen. Die VAS-Vorwärtsabbildung 560 kann unverändert bleiben. Modifikationen an den unterschiedlichen Versionen der VID-Bereiche 10,2 und 400,2 können durch den dazwischenliegenden logischen Adressraum gemanagt werden. Eine Modifikation an der VID 10 kann Folgendes umfassen: a) Zuweisen einer neuen LID in dem logischen Adressraum 132, b) Speichern der modifizierten Daten in Zuordnung zu der neuen LID und c) Abbilden der neuen LID auf VID 10 in der VAS-Vorwärtsabbildung 560.
  • Die Ausführungsformen zum Implementieren von Bereichsklon-, Verschiebungs- und/oder Zusammenfassungsoperationen, die hier offenbart sind, können verwendet werden, um andere Ablagespeicheroperationen höherer Ebenen effizient zu implementieren, wie z. B. Speicherauszüge, Deduplizierungen, atomare Operationen, Transaktionen, Dateisystemmanagementfunktionalität und/oder dergleichen. Bezug nehmend zurück zu 4A kann die Ablagespeicherschicht 130 ein Deduplizierungsmodul 374, das konfiguriert ist, duplizierte Daten auf dem Ablagespeichermedium 140 zu identifizieren, umfassen. Duplikatdaten können unter Verwendung irgendeines geeigneten Mechanismus identifiziert werden. In einigen Ausführungsformen werden Duplikatdaten identifiziert durch: a) Durchsuchen der Inhalte des Ablagespeichermediums 140, b) Erzeugen von Signaturwerten für verschiedene Datensegmente und c) Vergleichen von Datensignaturwerten, um Duplikatdaten zu identifizieren. Die Signaturwerte können kryptographische Signaturen, Hash-Codes, zyklische Codes und/oder dergleichen enthalten, sind jedoch nicht darauf beschränkt. Signaturinformationen können innerhalb der Ablagespeichermetadaten 135 wie z. B. der Vorwärtsabbildung 160 gespeichert werden (z. B. in Metadaten, die den Einträgen zugeordnet sind) und/oder können in einer oder mehreren getrennten Datenstrukturen der Ablagespeichermetadaten 135 gepflegt und/oder indiziert werden. Das Deduplizierungsmodul 374 kann Datensignaturen vergleichen und kann nach dem Detektieren einer Signaturübereinstimmung eine oder mehrere Deduplizierungsoperationen ausführen. Die Deduplizierungsoperationen können Verifizieren der Signaturübereinstimmung (z. B. Ausführen eines Byte-für-Byte-Datenvergleichs) und Ausführen einer oder mehrerer Bereichsklonoperationen umfassen, um die Duplikatdaten durch zwei oder mehr LID-Bereiche zu referenzieren.
  • 6 bildet eine Ausführungsform einer Deduplizierungsoperation ab. Die Vorwärtsabbildung 160 kann Einträge 662 und 672 umfassen, die Duplikatdaten referenzieren können, die an unterschiedlichen jeweiligen Ablagespeicheradressen 3453-4477 und 7024-8048 gespeichert sind. Die Einträge 662 und 672 können unterschiedlichen jeweiligen logischen Schnittstellen 663 und 673 entsprechen, die LIDs 1024-2048 bzw. 6144-6656 entsprechen. Das duplizierte Datensegment (Datensegment 612) kann durch das Deduplizierungsmodul 374 identifiziert und/oder verifiziert werden, wie vorstehend offenbart. Alternativ können die duplizierten Daten identifiziert werden, wenn Daten zum Speichern an der Ablagespeicherschicht 130 empfangen werden. Dementsprechend können die Daten dedupliziert werden, bevor eine zusätzliche Kopie der Daten auf dem Ablagespeichermedium 140 gespeichert wird.
  • In Reaktion auf Identifizieren und/oder Verifizieren, dass die Einträge 662 und 672 Duplikatdaten referenzieren, kann die Ablagespeicherschicht 130 konfiguriert sein, die Daten zu deduplizieren, was Erzeugen eines oder mehrere Bereichsklone umfassen kann, um eine einzige Kopie der Duplikatdaten durch zwei unterschiedliche Mengen von LIDs zu referenzieren. Wie vorstehend offenbart kann das Erzeugen eines Bereichsklons Modifizieren der logischen Schnittstelle(n) 663 und 673 eines Datensegments umfassen. In der Ausführungsform von 6 sind die Duplikatdaten als ein Datensegment 612 innerhalb eines Pakets 610 an den Ablagespeicherorten 3453-4477 bzw. 7024-8048 gespeichert. Die Klonoperation kann Modifizieren der logischen Schnittstelle eines der Datensegmente (oder einer neuen Version und/oder Kopie des Datensegments) umfassen, so dass das Datensegment durch beide Einträge 663 und 673 referenziert werden kann.
  • Die Bereichsklonoperation kann implementiert werden unter Verwendung irgendeiner der Klonausführungsformen, die hier offenbart sind, die die Bereichsklonausführungsformen der 3A–E, die Referenzeintragsausführungsformen der 4A–E und/oder die Zwischenabbildungsausführungsformen der 5A–B enthalten. In der De-Deduplizierungsausführungsform von 6 können beide LID-Bereiche 1024-2048 und 6144-7168 modifiziert werden, um eine einzige Version des Datensegments 612 durch einen Referenzeintrag 682 zu referenzieren (das andere Datensegment kann ungültig gemacht werden). Als solche kann die Deduplizierungsoperation Erzeugen eines Referenzeintrags 682 umfassen, um das deduplizierte Datensegment 612 zu repräsentieren (das Paket 610 zu referenzieren). Die Deduplizierungsoperation kann ferner Modifizieren und/oder Umsetzen der Einträge 662 und 672 in jeweilige indirekte Einträge 665 und 675 umfassen, die durch den Referenzeintrag 682 auf das Datensegment 612 abgebildet werden können, wie vorstehend offenbart. Die Deduplizierungsoperationen können ferner Modifizieren der logischen Schnittstelle 669 des Datensegments 612 umfassen, um das Datensegment 612 beiden Mengen von LIDs 1024-2048 und 6144-7168 (und außerdem dem Referenzeintrag 682) zuzuordnen. Die Deduplizierungsoperationen können ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, wie vorstehend offenbart.
  • Die Deduplizierungsoperation kann ferner Aktualisieren des kontextabhängigen Formats des Datensegments 612 umfassen, um mit der modifizierten logischen Schnittstelle 669 konsistent zu sein, wie vorstehend offenbart. Aktualisieren des kontextabhängigen Formats kann Anhängen des Datensegments 612 in einem aktualisierten kontextabhängigen Format (Datenpaket 610) an das Ablagespeicher-Log (z. B. an den Ablagespeicherorten 84432-85456) in einer oder mehreren Hintergrundoperationen umfassen. Das aktualisierte Datenpaket 610 kann persistente Metadaten 614 umfassen, die das Datensegment 612 der aktualisierten logischen Schnittstelle 669 (z. B. LIDs 1024-2048 und 6144-6656 durch die Referenzkennungen 0Z-1023Z) zuordnen.
  • Obwohl 6 Klonen und/oder Deduplizieren eines einzigen Eintrags oder Bereichs von LIDs darstellt, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen können mehrere Front-Kennungsbereiche in einer einzigen Klonoperation geklont werden. Dieser Typ von Klonoperation kann verwendet werden, um einen ”Speicherauszug” eines Adressbereichs (oder des gesamten logischen Adressraums 132) zu erzeugen. Wie hier verwendet bezieht sich ein Speicherauszug auf den Zustand einer AblageAblagespeichervorrichtung (oder Menge von LIDs) zu einem speziellen Zeitpunkt. Der Speicherauszug kann einen ”ursprünglichen” Zustand eines LID-Bereichs beibehalten, ohne Berücksichtigung von Änderungen, die innerhalb des Bereichs nach dem Fertigstellen der Speicherauszugoperation auftreten.
  • 7 ist ein Blockdiagramm, das eine Ausführungsform eines Systems 700 abbildet, das eine Ablagespeicherschicht 130 umfasst, die konfiguriert ist, Speicherauszugsoperationen effizient zu implementieren. Die Ausführungsform von 7 gehört zu einem Adressbereich innerhalb eines logischen Adressraums 132. Die Offenbarung ist jedoch in dieser Hinsicht nicht beschränkt, und könnte zum Gebrauch mit anderen Typen von Adressbereichen wie z. B. Bereiche und/oder Spannen innerhalb eines VAS 532 angepasst werden, wie vorstehend offenbart. Die Ablagespeicherschicht 130 kann ein Speicherauszugmodul 736 und Zeitmodul 738 umfassen, die konfiguriert sind, Speicherauszugsoperationen zu implementieren, wie hier offenbart ist.
  • Im Zustand 773A kann die Ablagespeicherschicht 130 konfiguriert sein, einen Speicherauszug eines LID-Bereichs FR1 zu erzeugen. Erzeugen des Speicherauszugs kann Konservieren des Zustands des LID-Bereichs FR1 zu einer speziellen Zeit umfassen. Die Ablagespeicheroperation kann ferner Konservieren des LID-Bereichs FR1 umfassen, während sie ermöglicht, dass nachfolgende Ablagespeicheroperationen innerhalb des LID-Bereichs ausgeführt werden.
  • Wie vorstehend offenbart kann die Ablagespeicherschicht 130 konfiguriert sein, Daten in einem Ablagespeicher-Log auf dem Ablagespeichermedium 140 durch Verwenden, unter anderem, des Log-Ablagespeichermoduls 136 zu speichern. Die Log-Reihenfolge der Ablagespeicheroperationen kann bestimmt werden unter Verwendung von Folgeinformationen, die Datenpaketen zugeordnet sind, wie z. B. Folgekennzeichen 113 auf Ablagespeicherabteilungen 170A–N und/oder aufeinanderfolgenden Ablagespeicherorten innerhalb des Ablagespeicheradressraums 144 des Ablagespeichermediums 144 (wie im Zusammenhang mit den 1D und 1E offenbart ist).
  • Die Ablagespeicherschicht 130 kann ferner konfiguriert sein, andere Typen von Reihenfolge und/oder Zeitinformationen zu pflegen, wie z. B. die relative Zeitreihenfolge von Daten in dem Log. In einigen Ausführungsformen kann jedoch die Log-Reihenfolge von Daten Zeitinformationen nicht genau widerspiegeln, aufgrund, unter anderem, dessen, dass Daten innerhalb der AblageAblagespeichervorrichtung in Medienmanagementoperationen verlagert werden. Verlagern von Daten kann Lesen der Daten aus ihrem ursprünglichen Ablagespeicherort auf dem Ablagespeichermedium 140 und Anhängen der Daten an einem aktuellen Anhängepunkt innerhalb des Ablagespeicher-Logs umfassen. Als solche können ältere, verlagerte Daten mit neueren, aktuellen Daten in dem Ablagespeicher-Log gespeichert werden. Deshalb, obwohl das Ablagespeicher-Log die relative Log-Reihenfolge von Datenoperationen, die zu speziellen LIDs gehören, konservieren kann, kann das Ablagespeicher-Log absolute Zeitinformationen nicht genau widerspiegeln.
  • In einigen Ausführungsformen ist das Log-Ablagespeichermodul 136 konfiguriert, Daten Zeitinformationen zuzuordnen, die verwendet werden können, um relative Zeitinformationen der Ablagespeicheroperationen, die auf dem Ablagespeichermedium 130 ausgeführt werden, aufzubauen. In einigen Ausführungsformen können die Zeitinformationen jeweilige Zeitstempel umfassen (die durch das Zeitmodul 738 gepflegt werden), die auf jedes Datenpaket, das auf dem Ablagespeichermedium 140 gespeichert ist, angewandt werden können. Die Zeitstempel können innerhalb persistenter Metadaten 314 der Datenpakete 310 gespeichert sein. Alternativ oder zusätzlich kann das Zeitmodul 738 konfiguriert sein, Zeitinformationen auf einer gröberen Granularitätsebene zu verfolgen. In einigen Ausführungsformen pflegt das Zeitmodul 738 ein oder mehrere globale Zeitkennzeichen (eine Epochenkennung). Wie hier verwendet bezieht sich eine ”Epochenkennung” auf eine Kennung, die verwendet wird, um die relative Zeit von Ablagespeicheroperationen, die durch die Ablagespeicherschicht 130 ausgeführt werden, zu bestimmen. Das Log-Ablagespeichermodul 136 kann konfiguriert sein, ein Epochenkennzeichen 739 in Datenpakete 710 aufzunehmen. Das Epochenkennzeichen 739 kann der aktuellen Epoche (z. B. dem globalen Zeitkennzeichen), die durch das Zeitmodul 738 gepflegt wird, entsprechen. Das Epochenkennzeichen 739 kann der Epoche entsprechen, in der das entsprechende Datensegment 712 in das Ablagespeicher-Log geschrieben wurde. Das Epochenkennzeichen 739 kann innerhalb der persistenten Metadaten 714 des Pakets 710 gespeichert werden und als solches dem Datenpaket 710 während Verlagerungsoperationen zugeordnet bleiben. Das Zeitmodul 738 kann konfiguriert sein, die globale Epochenkennung in Reaktion auf spezielle Ereignisse, wie z. B. das Erzeugen eines Speicherauszugs, eine Anwenderanforderung und/oder dergleichen, zu inkrementieren. Das Epochenkennzeichen 739 des Datensegments 712 kann durch Verlagerung und/oder andere Medienpflegeoperationen unverändert bleiben. Dementsprechend kann ein Epochenkennzeichen 739 der ursprünglichen Speicherungszeit des Datensegments 712 entsprechen, unabhängig von der relativen Position des Datenpakets 710 in dem Ablagespeicher-Log.
  • Eine Speicherauszugoperation kann Konservieren des Zustands eines speziellen LID-Bereichs (FR1) zu einer speziellen Zeit umfassen. Eine Speicherauszugoperation kann deshalb Konservieren von Daten, die zu FR1 gehören, auf dem Ablagespeichermedium 140 umfassen. Konservieren der Daten kann Folgendes umfassen: a) Identifizieren von Daten, die zu einem speziellen Zeitrahmen (Epoche) gehören, und b) Konservieren der identifizierten Daten auf dem Ablagespeichermedium 140 (z. B. Verhindern, dass die identifizierten Daten von dem Ablagespeichermedium 140 in, unter anderem, Ablagespeicherwiederherstellungsoperationen entfernt werden). Daten, die zu einem Speicherauszug gehören, können behalten werden, obwohl sie durch nachfolgende Ablagespeicheroperationen (z. B. Operationen, die die Daten überschreiben, modifizieren, TRIMen und/oder auf andere Weise ausschließen) ungültig gemacht werden. Daten, die für einen speziellen Speicherauszug konserviert werden müssen, können durch Verwenden der vorstehend offenbarten Epochenkennzeichen 739 identifiziert werden.
  • In Zustand 773A (Zeit t1, durch das Epochenkennzeichen e0 bezeichnet) kann die Ablagespeicherschicht 130 eine Anforderung, eine Speicherauszugoperation zu implementieren, empfangen. In Reaktion auf die Anforderung kann das Speicherauszugmodul 736 den aktuellen Wert der Epochenkennung, die durch das Zeitmodul 738 gepflegt wird, bestimmen. Der aktuelle Wert der Epochenkennung kann als die aktuelle ”Speicherauszugepoche” bezeichnet werden. In der Ausführungsform von 7 ist die Speicherauszugepoche 0. Der Speicherauszugmodul 736 kann ferner konfiguriert sein zu bewirken, dass das Zeitmodul 738 das aktuelle globale Epochenkennzeichen inkrementiert (z. B. das Epochenkennzeichen auf 1 inkrementiert). Erzeugen des Speicherauszugs kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium umfassen, die konfiguriert ist, das aktuelle, aktualisierte Epochenkennzeichen anzugeben. Die persistente Meldung 366 kann ferner konfiguriert sein anzugeben, dass Daten, die zu der Speicherauszugepoche gehören, konserviert werden sollen (z. B. den speziellen Bereich von LIDs FR1 identifizieren, der in der Speicherauszugoperation konserviert werden soll). Die persistente Meldung 366 kann während Metadatenrekonstruktionsoperationen verwendet werden, um: a) die aktuellen Epochenkennung zu bestimmen und/oder b) das Speicherauszugmodul 736 und/oder Medienmanagementmodul 370 zu konfigurieren, Daten, die einer speziellen Speicherauszugepoche (z. B. der Epoche e0) zugeordnet sind, zu konservieren.
  • Das Speicherauszugmodul 736 kann ferner konfiguriert sein, das Medienmanagementmodul 370 anzuweisen, Daten, die der Speicherauszugepoche zugeordnet sind, zu konservieren. In Reaktion darauf kann das Medienmanagementmodul 370 konfiguriert sein: a) Daten, die für den Speicherauszug konserviert werden sollen (Speicherauszugsdaten), zu identifizieren und b) zu verhindern, dass die identifizierten Daten aus dem Ablagespeichermedium 140 in, unter anderem, Ablagespeicherwiederherstellungsoperationen entfernt werden. Das Medienmanagementmodul 370 kann Speicherauszugsdaten durch Verwenden der Epochenkennzeichen 739 der Datenpakete 710 identifizieren. Wie im Zusammenhang mit 1E offenbart, können Daten auf dem Ablagespeichermedium 140 außerhalb des Orts geschrieben werden. Die neueste Version von Daten, die einer speziellen LID zugeordnet ist, kann basierend auf der Reihenfolge der entsprechenden Datenpakete 710 innerhalb des Logs bestimmt werden. Das Medienmanagementmodul 370 kann konfiguriert sein, die neueste Version von Daten innerhalb der Speicherauszugepoche als Daten, die konserviert werden müssen, zu identifizieren. Daten, die durch andere Daten in dem Speicherauszug obsolet gemacht wurden, können entfernt werden. Bezug nehmend auf die Ausführungsform von 1E würde, falls die Daten X0 und X1 (die derselben LID A zugeordnet sind) beide mit der Speicherauszugepoche 0 markiert wären, das Medienmanagementmodul 370 die neueste Version der Daten in Epoche 0 als X1 identifizieren und würde die Daten X0 zum Entfernen markieren. Falls jedoch die Daten X0 mit der Speicherauszugepoche 0 markiert wären und X1 mit einer späteren Epoche (z. B. Epoche 1 nach der Speicherauszugoperation) markiert wären, kann das Medienmanagementmodul 370 die Daten X0 auf dem Ablagespeichermedium 140 konservieren, um die Daten des Speicherauszugs zu konservieren.
  • In Zustand 773B kann das Speicherauszugmodul 738 konfiguriert sein, Daten, die zu dem Ablagespeicheradressraums FR1 gehören (Daten, die der Epoche e0 zugeordnet sind), zu konservieren, während es ermöglicht, dass weiterhin Ablagespeicheroperationen während nachfolgenden Epochen (z. B. Epoche e1) ausgeführt werden. Konservieren von FR1 kann Klonen von FR1 umfassen, um den ursprünglichen Zustand des LID-Bereichs an der Epoche e0 (FR1 (e0)) zu konservieren, während erlaubt ist, dass Ablagespeicheroperationen mit Referenz auf FR1 fortfahren dürfen. Die Klonoperation kann wie vorstehend offenbart unter Verwendung eines oder mehrerer aus duplizierten Einträgen, Referenzeinträgen und/oder einer Zwischenabbildungsschicht implementiert sein. Die Ablagespeicheroperationen können Anhängen von Daten an das Ablagespeicher-Log auf dem Ablagespeichermedium 140 mit Referenz auf die LIDs FR1 umfassen. Die geklonten LIDs, die dem Speicherauszug FR1 (e0) entsprechen, können unveränderlich sein. Dementsprechend kann der Speicherauszug FR1 (e0) trotz Änderungen an dem LID-Bereich konserviert werden. Daten, die in dem Zustand 773B gespeichert werden, können mit einem Epochenkennzeichen 739 der aktuellen Epoche (e1) gespeichert werden. Das Speicherauszugmodul 736 kann konfiguriert sein, Daten zu konservieren, die durch Ablagespeicheroperationen, die während Epoche e1 (und nachfolgenden Epochen) ausgeführt werden, obsolet gemacht und/oder ungültig gemacht werden. Bezug nehmend zurück auf die Ausführungsform von 1E kann das Medienmanagementmodul 370 die Daten X0 als Daten identifizieren, die für den Speicherauszug FR1 konserviert werden sollen (die Daten X1 können gespeichert worden sein, nachdem die Speicherauszugoperation ausgeführt worden ist). Das Speicherauszugmodul 738 und/oder Medienmanagementmodul 370 können konfiguriert sein, die Daten X0 zu konservieren, selbst wenn die Daten danach durch die Daten X1 in Epoche e1 obsolet gemacht wurden. Die Daten X0 können beibehalten werden, selbst wenn die LID A gelöscht, geTRIMt wird oder dergleichen.
  • Der Speicherauszug FR1 (e0), der den LID-Bereich FR1 (e0) enthält und die Daten, die mit dem Epochenkennzeichen e0 markiert sind, können konserviert werden, bis der entsprechende Speicherauszug gelöscht wird. Der Speicherauszug kann in Reaktion auf eine Anforderung, die durch die Schnittstelle 131 empfangen wird, gelöscht werden. Wie in Zustand 773C angegeben kann die Epoche 0 auf dem Ablagespeichermedium 140 beibehalten werden, selbst nachdem andere dazwischenliegende Epochen (Epochen e1–eN) erzeugt und/oder gelöscht worden sind. Löschen der Epoche e0 kann Konfigurieren des Speicherauszugmoduls 738 und/oder Medienmanagementmoduls 370 umfassen, ungültige/obsolete Daten, die der Epoche e0 zugeordnet sind, zu entfernen.
  • Ablagespeicheroperationen, die nach dem Erzeugen des Speicherauszugs am Zustand 773A ausgeführt werden, können den logischen Adressraum 132 und insbesondere die Vorwärtsabbildung 160 modifizieren. Die Modifikationen können Aktualisieren von Ablagespeicheradressbindungen in Reaktion auf Anhängen von Daten an das Ablagespeichermedium 140, Hinzufügen und/oder Entfernen von LIDs zu FR1 und so weiter umfassen. In einigen Ausführungsformen ist das Speicherauszugmodul 736 konfiguriert, den Speicherauszugsbereich FR1 (e0) innerhalb getrennter Ablagespeichermetadaten 135, wie z. B. einem getrennten Bereich des logischen Adressraums 132, in einem getrennten Namensraum, in einer getrennten Abbildung und/oder dergleichen zu konservieren. Alternativ kann das Speicherauszugmodul 736 ermöglichen, dass die Änderungen in der Vorwärtsabbildung 160 stattfinden, ohne die ursprüngliche Version von FR1 zu der Zeit e0 zu konservieren. Das Speicherauszugmodul 736 kann konfiguriert sein, die Vorwärtsabbildung 160 für e0 (Zeit t1) unter Verwendung der Speicherauszugsdaten, die auf dem Ablagespeichermedium 140 konserviert sind, zu rekonstruieren. Die Vorwärtsabbildung 160 zur Zeit t1 kann rekonstruiert werden, wie vorstehend offenbart, was Zugreifen der Reihe nach auf Daten, die auf dem Ablagespeichermedium 140 gespeichert sind (in einer Log-Reihenfolge) und Erzeugen von Vorwärtsabbildungseinträgen basierend auf persistenten Metadaten 714, die den Datenpaketen 710 zugeordnet sind, umfassen kann. In der Ausführungsform von 7 kann die Vorwärtsabbildung 160, der der Epoche e0 entspricht, durch Referenzieren von Datenpaketen 710, die mit dem Epochenkennzeichen 739 e0 (oder niedriger) markiert sind, rekonstruiert werden. Daten, denen Epochenkennzeichen 739 größer als e0 zugeordnet sind, können ignoriert werden (da solche Daten Operationen nach der Erzeugung des Speicherauszugs FR1 (e0) entsprechen).
  • Die Ablagespeicherschicht 130, die hier offenbart ist, kann ferner konfiguriert sein, effiziente Bereichsverschiebungsoperationen zu implementieren. 8A bildet eine Ausführungsform einer Verschiebungsoperation ab, die durch die hier offenbarte Ablagespeicherschicht 130 implementiert ist. Die Vorwärtsabbildung 160 enthält Einträge 862, die konfiguriert sind, LIDs 1023-1025 an jeweilige Datensegmente auf dem Ablagespeichermedium 140 zu binden. Die Einträge 862 sind getrennt abgebildet, um Einzelheiten der Ausführungsform besser darzustellen; die Einträge 862 könnten jedoch in einem einzigen Eintrag, der den vollständigen Bereich der LIDs 1023-1025 umfasst, enthalten sein. Die Einträge 862 können eine logische Schnittstelle 863 der Daten, die an Ablagespeicheradressen 32, 3096 und 872 gespeichert sind, definieren. Wie vorstehend offenbart können Daten, die an Ablagespeicheradressen 32, 3096 und 872 gespeichert sind, in einem kontextabhängigen Format, das die Daten den entsprechenden LID(s) 1023, 1024 und 1025 zuordnet, gespeichert sein.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, die Einträge 862 zu den LIDs 9215-9217 durch, unter anderem, Ersetzen der Zuordnung zwischen den LIDs 1023, 1024 und 1025 und den Daten an den entsprechenden Medienablagespeicherorten 32, 3096 und 872 durch eine neue logische Schnittstelle 863B, die der neuen Menge von LIDs (z. B. 9215, 9216 und 9217) entspricht, zu verschieben. Die Verschiebungsoperation kann in Reaktion auf eine Anforderung, die über die Schnittstelle 131 empfangen wird, und/oder als Teil einer Ablagespeicheroperation höherer Ebene (z. B. eine Anforderung, eine Datei umzubenennen, Operationen, um die Vorwärtsabbildung 160 abzugleichen und/oder zu defragmentieren, oder dergleichen), ausgeführt werden.
  • Die Verschiebungsoperation kann in Übereinstimmung mit einer oder mehreren der vorstehend offenbarten Klonungsausführungsformen implementiert sein. In einigen Ausführungsformen kann die Verschiebungsoperation Zuordnen der Ablagespeicheradressen, die auf die LIDs 1023, 1024 und 1025 abgebildet sind, zu den Ziel-LIDs 9215, 9216 und 9217 umfassen, was zum Modifizieren der logischen Schnittstelle 863A der Daten in Übereinstimmung mit der Verschiebungsoperation führen kann. Die Verschiebungsoperation kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um sicherzustellen, dass die Verschiebungsoperation persistent und absturzsicher ist. Die Daten, die an den Ablagespeicheradressen 32, 872 und 3096 gespeichert sind, können in Übereinstimmung mit der aktualisierten logischen Schnittstelle 863B in einer oder mehreren Hintergrundoperationen neu geschrieben werden, wie vorstehend offenbart.
  • 8B bildet eine weitere Ausführungsform einer Verschiebungsoperation ab. Wie vorstehend kann die Verschiebungsoperation das Verschieben der Daten, die den LIDs 1023-1025 zugeordnet sind, zu den LIDs 9215-9217 umfassen. Die Verschiebungsoperation von 8B kann die Referenzeinträge nutzen, wie im Zusammenhang mit den 4A–E offenbart ist. Dementsprechend kann die Verschiebungsoperation das Erzeugen von Referenzeinträgen 882 in einer Referenzabbildung 460, um die Verschiebungsoperation zu repräsentieren, umfassen. Die Verschiebungsoperation kann ferner das Zuweisen neuer indirekter Einträge 866, um die Daten durch die Referenzeinträge 882 zu referenzieren, umfassen. Die Referenzeinträge 882 können die LIDs 1023, 1024 und 1025 vor der Verschiebung umfassen, die den Adressen 32, 3096 und 872 zugeordnet sein können. Die neue logische Schnittstelle 863C der Daten kann deshalb die indirekten Einträge 866 und die entsprechenden Referenzeinträge 882 umfassen. Die Verschiebungsoperation kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium umfassen, um sicherzustellen, dass die Verschiebungsoperation persistent und absturzsicher ist, wie vorstehend offenbart.
  • Das kontextabhängige Format der Daten, die an den Ablagespeicheradressen 32, 3096 und 872 gespeichert sind, kann mit der aktualisierten logischen Schnittstelle 863C inkonsistent sein; das kontextabhängige Format der Daten kann die jeweiligen Datensegmente LIDs 1023, 1024 und 1025 anstatt 9215, 9216 und 9217 (und/oder den Referenzeinträgen) zuordnen. Die persistente Meldung 366 kann die aktualisierte logische Schnittstelle 863C der Daten umfassen, so dass die Ablagespeichermetadaten 135 (z. B. Vorwärtsabbildung 160 und/oder Referenzabbildung 460) falls notwendig korrekt rekonstruiert werden können.
  • Die Ablagespeicherschicht 130 kann Zugriff auf die Daten in dem inkonsistenten kontextabhängigen Format über die modifizierte logische Schnittstelle 863C (LIDs 9215, 9216 und 9217) ermöglichen. Die Daten können in einem kontextabhängigen Format, das mit der modifizierten logischen Schnittstelle 863C konsistent ist, nachfolgend der Verschiebungsoperation neu geschrieben und/oder umgesetzt werden (außerhalb des Pfads der Verschiebungsoperation und/oder anderer Ablagespeicheroperationen). In einigen Ausführungsformen können die Daten an den Ablagespeicheradressen 32, 3096 und/oder 872 durch ein Medienmanagementmodul 370 in einer oder mehreren Hintergrundoperationen neu geschrieben werden, wie vorstehend beschrieben. Deshalb kann die Verschiebungsoperation vollständig sein (und/oder eine Quittung zurückgeben) in Reaktion auf das Aktualisieren der Vorwärtsabbildung 160 und/oder Speichern der persistenten Meldung 366.
  • Wie in 8C dargestellt, können die Vorwärtsabbildung 160 und/oder andere Ablagespeichermetadaten 135 in Reaktion auf Neuschreiben von Daten der Verschiebungsoperation aktualisiert werden. In der Ausführungsform von 8C kann das Datensegment 812A, das an dem Medienablagespeicherort 32 gespeichert ist, in einer Ablagespeicherwiederherstellungsoperation, die Speichern der Daten in einem kontextabhängigen Format (Datenpaket 810A), das mit der modifizierten logischen Schnittstelle 863C konsistent ist, umfassen kann, verlagert werden. Das Datenpaket 810A kann persistente Metadaten 814A umfassen, die das Datensegment 812A der LID 9215 zuordnen. Die Vorwärtsabbildung 160 kann aktualisiert werden, um die Daten in dem aktualisierten kontextabhängigen Format zu referenzieren, was Modifizieren des indirekten Eintrags der LID 9215 umfassen kann, um das Datenpaket 810A statt dem Referenzeintrag direkt zu referenzieren. Der Eintrag, der LID 9215 entspricht, kann von einem indirekten Eintrag zu einem lokalen Standardeintrag zurückkehren, und der Referenzeintrag für LID 1023 kann aus der Referenzabbildung 460 entfernt werden.
  • Bezug nehmend auf 8D kann ein Ablagespeicher-Client 106 Daten, die LID 9217 zugeordnet sind, modifizieren, was Speichern eines Datensegments außerhalb des Orts (z. B. an der Ablagespeicheradresse 772) umfassen kann. Das Datensegment kann in einem kontextabhängigen Format, das mit der modifizierten logischen Schnittstelle 863C konsistent ist (z. B. die Daten der LID 9217 zuordnet), geschrieben werden. In Reaktion darauf kann die Vorwärtsabbildung 160 aktualisiert werden, um den Eintrag für LID 9217 der Ablagespeicheradresse des Datensegments (z. B. der Ablagespeicheradresse 772) zuzuordnen und den Referenzeintrag für LID 1025 aus der Referenzabbildung 460 zu entfernen, wie vorstehend offenbart.
  • In einigen Ausführungsformen kann die Referenzabbildung 460 getrennt von der Vorwärtsabbildung 160 gepflegt werden, so dass die Einträge darin (z. B. die Einträge 882) nicht durch Ablagespeicher-Clients 106 direkt referenziert werden können. Diese Abgrenzung kann ermöglichen, dass Ablagespeicher-Clients 106 effizienter arbeiten. Beispielsweise können, anstatt Operationen zu verzögern, bis Daten in dem aktualisierten kontextabhängigen Format neu geschrieben sind und/oder verlagert sind, Datenoperationen fortschreiten, während Daten in einem oder mehreren Hintergrundprozessen neu geschrieben werden. Bezug nehmend auf 8E kann nachfolgend der Verschiebungsoperation, die vorstehend offenbart ist, ein Ablagespeicher-Client 106 Daten in Verbindung mit der LID 1024 speichern. Der Referenzeintrag 882, der der LID 1024 entspricht, kann in der Referenzabbildung 460 enthalten sein, unter anderem aufgrund dessen, dass die Daten an der Ablagespeicheradresse 3096 noch nicht in dem aktualisierten kontextabhängigen Format neu geschrieben sind. Es kann jedoch, da die Referenzabbildung 460 getrennt von der Vorwärtsabbildung 160 gepflegt wird, keine Namenskollision auftreten, und die Ablagespeicheroperation kann vollständig sein. Die Vorwärtsabbildung 160 kann einen getrennten Eintrag 864 enthalten, der die logische Schnittstelle für Daten umfasst, die an dem Medienablagespeicherort 4322 gespeichert sind, während sie weiterhin Zugriff auf die Daten, die vorher an die LID 1024 gebunden waren, durch die logische Schnittstelle 863C (und Referenzabbildung 460) ermöglicht.
  • In der offenbarten Verschiebungsoperation, wenn die indirekten Einträger nicht mehr mit Referenzeinträgen der Referenzabbildung 460 verknüpft sind, können, unter anderem, aufgrund von Neuschreiben, Verlagern, Modifizieren, Löschen und/oder Überschreiben der entsprechenden Daten, die Referenzeinträge entfernt werden, und die indirekten Einträge können zu direkten lokalen Einträgen zurückkehren. Zusätzlich kann die persistente Meldung 366, die der Verschiebungsoperation zugeordnet ist, ungültig gemacht und/oder aus dem Ablagespeichermedium 140 entfernt werden, wie vorstehend offenbart.
  • Bezug nehmend zurück auf 1A kann die Schnittstelle 131 der Ablagespeicherschicht 130 konfiguriert sein, APIs und/oder Schnittstellen zum Ausführen der hier offenbarten Ablagespeicheroperationen bereitzustellen. Die APIs und/oder Schnittstellen können durch eine oder mehrere der Blockschnittstellen, eine erweiterte Ablagespeicherschnittstelle und/oder dergleichen ausgedrückt sein. Die Blockschnittstelle kann erweitert sein, um zusätzliche APIs und/oder Funktionalität aufzunehmen, durch Verwenden von Schnittstellenerweiterungen, wie z. B. fadvise-Parameter, I/O-Steuerparameter und dergleichen. Die Schnittstelle 131 kann APIs bereitstellen, um Bereichsklonoperationen, Bereichsverschiebungsoperationen, Bereichszusammenfassungsoperationen, Deduplizierung, Speicherauszug und andere hier offenbarte Operationen höherer Ebene auszuführen. Die Schnittstelle 131 kann es Ablagespeicher-Clients 106 ermöglichen, Attribute und/oder Metadaten auf LID-Bereiche anzuwenden (z. B. einen Bereich einzufrieren), Bereichsspeicherabzüge zu managen, und so weiter. Wie hier offenbart umfasst eine Bereichsklonoperation das Erzeugen einer logischen Kopie einer Menge aus einer oder mehreren Quell-LIDs. Bereichsklon-, Verschiebungs- und/oder Zusammenfassungsoperationen können unter Verwendung jeder der hier offenbarten Ausführungsformen, die die in den 3A–E abgebildeten Bereichsklonausführungsformen, die Referenzeintragsausführungsformen der 4A–E und/oder der Zwischenabbildungsschichtausführungsformen der 5A–B enthalten, jedoch nicht darauf beschränkt sind, implementiert sein.
  • Die hier offenbarten Bereichsklon-, Verschiebungs- und/oder Zusammenfassungsoperationen können verwendet werden, um Operationen höherer Ebene, wie z. B. Deduplizierung, Speicherauszüge, effiziente Dateikopieroperationen (logische Dateikopien), Dateikonsistenzmanagement, Adressraummanagement, mmap-Prüfpunkte, atomares Schreiben und dergleichen, zu implementieren. Diese Operationen höherer Ebene können auch durch die Schnittstelle 131 der Ablagespeicherschicht 130 ausgedrückt werden. Die offenbarten Operationen können durch verschiedene unterschiedliche Ablagespeicher-Clients 106, wie z. B. Betriebssysteme, Dateisysteme, Datenbankdienste und/oder dergleichen, unterstützt werden.
  • 9A bildet eine Ausführungsform eines Systems 900A ab, das eine Ablagespeicherschicht 130 umfasst, die konfiguriert ist, Dateimanagementoperationen zu implementieren. Das System 900A kann ein Dateisystem 906 umfassen, das konfiguriert sein kann, Funktionalität der Ablagespeicherschicht 130 zu unterstützen, um die Komplexität, den Overhead und dergleichen zu reduzieren. Das Dateisystem 906 kann konfiguriert sein, Bereichsklonen, Verschieben, Verschieben, Speicherauszug, Deduplizierung und/oder andere Funktionalität, die hier offenbart ist, zu unterstützen, um effiziente Speicherauszugs- und/oder Kopieroperationen auf Dateiebene zu unterstützen. Das Dateisystem 906 kann konfiguriert sein, solche Operationen in Reaktion auf Client-Anforderungen (z. B. einen Kopierbefehl, eine Dateispeicherauszug-ioctrl oder dergleichen) zu implementieren. Das Dateisystem 906 kann konfiguriert sein, effiziente Dateikopier- und/oder Speicherauszugsoperationen auf Dateiebene auf einer Quelldatei zu implementieren durch, unter anderem, a) Leeren schmutziger Seiten der Quelldatei (falls vorhanden), b) Erzeugen einer neuen Zieldatei, um die kopierte Datei und/oder den Speicherauszug auf Dateiebene zu repräsentieren, und c) Anweisen des Ablagespeichermoduls 130, eine Bereichsklonoperation, die konfiguriert ist, die Quelldatei in die Zieldatei zu klonen, auszuführen.
  • 9A bildet verschiedene Ausführungsformen zum Implementieren von Bereichsklonoperationen für ein Dateisystem 906 ab. In einigen Ausführungsformen und wie in einem Zustand 911A abgebildet, kann die Ablagespeicherschicht 130 konfiguriert sein, einen logischen Adressraum 132 zu pflegen, in dem LIDs der Quelldatei (der Datei, die geklont werden soll) auf Dateidaten in dem Ablagespeichermedium durch Verwenden der Vorwärtsabbildung 160 abgebildet sind. Die entsprechende Bereichsklonoperation, die in Zustand 911B abgebildet ist, kann Folgendes umfassen: a) Zuweisen einer Menge von LIDs für die Zieldatei und b) Abbilden der LIDs der Quelldatei und der Zieldatei auf die Dateidaten auf dem Ablagespeichermedium 140. Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um anzugeben, dass die Dateidaten sowohl den Quelldatei- als auch den Zieldatei-LIDs zugeordnet sind. Die Bereichsklonoperation kann ferner Neuschreiben der Dateidaten in Übereinstimmung mit dem aktualisierten kontextabhängigen Format umfassen, wie hier offenbart.
  • In anderen Ausführungsformen kann die Ablagespeicherschicht 130 eine Referenzabbildung 460 unterstützen, um Bereichsklonoperationen zu unterstützen (z. B. wie in den 4A–E offenbart). Vor der Bereichsklonoperation können in Zustand 911C die LIDs der Quelldatei direkt auf die entsprechenden Dateidaten in der Vorwärtsabbildung 160 abgebildet sein. Erzeugen des Bereichsklons in dem Zustand 911D kann Zuordnen eines oder mehrerer Referenzeinträge in der Referenzabbildung 460 zu den Dateidaten und Verknüpfen indirekter Einträge, die den Quelldatei-LIDs und den Zieldatei-LIDs entsprechen, mit dem Referenzeintrag umfassen. Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 und/oder Aktualisieren des kontextabhängigen Formats der Dateidaten umfassen, wie hier offenbart.
  • In einigen Ausführungsformen kann die Ablagespeicherschicht 130 konfiguriert sein, Bereichsklonoperationen unter Verwendung einer Zwischenschichtabbildungsschicht zu implementieren (z. B. wie in den 5A–B offenbart). Wie im Zustand 911E angegeben, kann die Quelldatei einer Menge von VIDs eines VAS 532 entsprechen, die auf Dateidaten auf dem Ablagespeichermedium 140 durch einen dazwischenliegenden Adressraum (z. B. den logischen Adressraum 132 der Ablagespeicherschicht 130) abgebildet sein können. Ausführen der Bereichsklonoperation kann Folgendes umfassen: a) Zuweisen von VIDs in dem VAS 532 für die Zieldatei und b) Zuordnen der VIS der Zieldatei zu den LIDs der Zwischenabbildungsschicht (z. B. dieselbe Gruppe von LIDs abgebildet auf die Quelldatei-VIDs). Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung 366, die angibt, dass die Ziel-VIDs den Dateidaten-LIDs zugeordnet sind, auf dem Ablagespeichermedium 140 umfassen. Da die Dateidaten bereits an die Zwischenkennungen gebunden sind, ist es möglich, dass das kontextabhängige Format der Dateidaten nicht aktualisiert werden muss.
  • Das Dateisystem 906 kann ferner konfiguriert sein, die Ablagespeicherschicht 130 für Fixpunkt-mmap-Operationen zu unterstützen. Wie hier verwendet bezieht sich eine ”mmap”-Operation auf eine Operation, in der auf die Inhalte von Dateien als Speicherseiten durch Standard-Lade- und Speicheroperationen anstatt durch die Standard-Lese/Schreib-Schnittstellen des Dateisystems 906 zugegriffen wird. Eine ”msync”-Operation bezieht sich auf eine Operation, die schmutzen Seiten der Datei (falls vorhanden) in das Ablagespeichermedium 140 zu entleeren. Die Verwendung von mmap-Operationen kann das Erstellen von Datei-Prüfpunkten schwierig machen. Dateioperationen werden im Speicher ausgeführt, und es wird ein msync ausgegeben, wenn der Zustand gesichert werden muss. Der Zustand der Datei nach msync repräsentiert jedoch den aktuellen Zustand im Speicher, und der letzte gesicherte Zustand kann verlorengehen. Deshalb könnte, falls das Dateisystem 906 während eines msync abstürzen sollte, die Datei in einem inkonsistenten Zustand zurückbleiben.
  • In einigen Ausführungsformen ist das Dateisystem 906 konfiguriert, den Zustand einer einer mmap-Operation unterworfenen Datei während Aufrufen mit msync mit einem Prüfpunkt zu versehen. Das Versehen der Datei mit einem Prüfpunkt kann das Erzeugen eines Speicherauszugs auf Dateiebene (und/oder Bereichsklons) umfassen, wie vorstehend offenbart. Der Speicherauszug auf Dateiebene kann konfiguriert sein, den Zustand der Datei zu sichern, bevor Änderungen angewandt werden. Wenn das msync ausgegeben wird, kann ein weiterer Klon erzeugt werden, um die Änderungen, die in der msync-Operation angewandt werden, widerzuspiegeln. Wie in 9B abgebildet ist, kann in einem Zustand 913A (vor der mmap-Operation) Datei 1 den LIDs 10-13 und den entsprechenden Ablagespeicheradressen P1–P4 auf dem Ablagespeichermedium 140 zugeordnet sein. In Reaktion auf die mmap-Operation kann das Dateisystem 906 eine Bereichsklonoperation durch die Schnittstelle 131 der Ablagespeicherschicht 130 ausführen, die Erzeugen eines Klons von Datei 1 (als Datei 1.1 bezeichnet) umfassen kann. Die Datei 1.1 kann unterschiedlichen Mengen von LIDs 40-43 zugeordnet sein, die dieselben Dateidaten (z. B. dieselben Ablagespeicheradressen P1–P4) referenzieren. In anderen Ausführungsformen kann Datei 1 unter Verwendung einer Referenzabbildung 460 und/oder einer dazwischenliegenden Umsetzungsschicht geklont werden, wie vorstehend offenbart.
  • In Reaktion auf einen msync-Aufruf kann das Dateisystem 906 eine weitere Bereichsklonoperation ausführen (durch Verwenden der Ablagespeicherschicht 130). Wie in Zustand 913C dargestellt, kann die Bereichsklonoperation, die der msync-Operation zugeordnet ist, Aktualisieren der Datei 1 mit den Inhalten einer oder mehrerer schmutziger Seiten (Ablagespeicheradressen 25 und 26) und Klonen der aktualisierten Datei 1 als Datei 1.2 umfassen. Die Datei 1.1 kann den Zustand der Datei vor der msync-Operation widerspiegeln. Dementsprechend kann im Fall eines Fehlers das Dateisystem 906 imstande sein, den vorhergehenden Zustand der Datei 1 zu rekonstruieren.
  • Wie vorstehend offenbart kann die Ablagespeicherschicht 130 konfiguriert sein, Bereichsklon- und Bereichszusammenfassungsoperationen zu implementieren, die unterstützt werden können, um Operationen höherer Ebene wie z. B. Dateikonsistenz (z. B. Schließen-bis-Öffnen-Dateikonsistenz, wie hier in mehr Einzelheiten offenbart), atomare Operationen und dergleichen zu implementieren. Diese Operationen können Folgendes umfassen: a) Klonen eines speziellen Bereichs des logischen Adressraums 132, b) Ausführen von Ablagespeicheroperationen innerhalb des geklonten Bereichs und c) selektives Zusammenfassen und/oder Falten des geklonten Bereichs in einen weiteren Abschnitt des logischen Adressraums 132. Wie hier verwendet beziehen sich Zusammenfassungs- und/oder Faltungsbereiche des logischen Adressraums 132 auf das Kombinieren von zwei oder mehr LID-Bereichen durch, unter anderem, Integrieren von Änderungen, die in einem der Bereiche implementiert sind, in einen oder mehrere andere Bereiche. Eine Zusammenfassungsoperation kann gemäß einer Zusammenfassungsstrategie, die konfiguriert sein kann, Konflikte zwischen unterschiedlichen LID-Bereichen aufzulösen, implementiert sein. Die Zusammenfassungsstrategie kann eine ”Überschreiben”-Betriebsart, in der die Inhalte eines LID-Bereichs die Inhalte eines weiteren LID-Bereichs ”überschreiben”; eine ”ODER”-Betriebsart, in der die Inhalte der LID-Bereiche zusammen kombiniert werden (z. B. in einer logischen ODER-Operation); eine Kopie-bei-Konflikt-Betriebsart, in der Konflikte durch Erzeugen getrennter unabhängiger Kopien eines oder mehrerer LID-Bereiche aufgelöst werden; und/oder dergleichen umfassen, ist jedoch nicht darauf beschränkt. In der Überschreiben-Betriebsart kann der LID-Bereich, der die Inhalte des einen oder der mehreren anderen LID-Bereiche überschreibt, basierend auf irgendwelchen geeigneten Kriterien, die die Festschreibungszeit (z. B. jüngere Operationen überschreiben frühere Operationen), Priorität und/oder dergleichen enthalten, jedoch nicht darauf beschränkt sind, bestimmt werden.
  • 9C bildet Ausführungsformen von Bereichszusammenfassungsoperationen ab, die durch Verwenden der Ablagespeicherschicht 130 implementiert sind. In der Ausführungsform von 9C kann die Ablagespeicherschicht 130 konfiguriert sein, den Kennungsbereich 914 zu klonen, der durch einen oder mehrere Einträge in der Vorwärtsabbildung 160 repräsentiert sein kann. Die LIDs 072-083 innerhalb des Bereichs 914 können an die Ablagespeicheradressen 95-106 gebunden sein. Die Bereichsklon- und/oder Zusammenfassungsoperationen, die hier offenbart sind, können unter Verwendung irgendeiner aus den Bereichsklon- und/oder Verschiebungsausführungsformen der 3A–E, der Referenzeintragsausführungsformen der 4A–E und/oder der Zwischenabbildungsschichtausführungsformen der 5A–B implementiert sein. Dementsprechend können in einigen Ausführungsformen die LIDs 072-083 durch eine/n oder mehrere Referenzeinträge und/oder Zwischenabbildungsschichten an die Ablagespeicheradressen 95-106 gebunden sein.
  • Die Ablagespeicherschicht 130 kann konfiguriert sein, den Bereich 914 klonen, was, wie am Zustand 941A dargestellt, Binden eines neuen Bereichs von LIDs 924 an die Ablagespeicheradressen 95-106 umfassen kann. Die Bereiche 914 und/oder 924 können jeweilige Metadaten 984 und/oder 994 umfassen, die konfiguriert sind anzugeben, dass die Bereiche 914 und 924 zusammengehören (z. B. an dieselbe Menge von Ablagespeicheradressen gebunden sind). Die Metadaten 984 und/oder 994 können konfiguriert sein, die LIDs 072-083 mit 972-983 zu verknüpfen, so dass Modifikationen, die zu einem der LID-Bereiche gehören, mit LIDs in dem anderen Bereich korreliert werden können (z. B. Daten, die in Zuordnung zu LID 972 geschrieben werden, können der entsprechenden LID 072 zugeordnet werden, und so weiter). Die Metadaten 984 und/oder 994 können eine Synchronisationsstrategie für geklonte LID-Bereiche angeben, die, wie vorstehend offenbart, angeben kann, ob Zuweisungsoperationen zwischen Klonen synchronisiert werden sollen. Die Metadaten 984 und/oder 994 können ferner eine Zusammenfassungsstrategie umfassen und/oder referenzieren, die spezifizieren kann, wie Zusammenfassungskonflikte gemanagt werden sollen. Die Zusammenfassungsstrategie kann durch die Schnittstelle 131 der Ablagespeicherschicht 130 spezifiziert sein, kann basierend auf einer globalen und/oder Standard-Zusammenfassungsstrategie bestimmt sein, kann durch Anforderungsparameter (z. B. fadvise, ioctrl, usw.) und/oder dergleichen spezifiziert sein. Die Klonoperation kann ferner Anhängen einer persistenten Meldung 366 an das Ablagespeichermedium 140 umfassen, die konfiguriert ist, die Daten an den Ablagespeicheradressen 95-106 dem LID-Bereich 972-983 zuzuordnen (und/oder Neuschreiben der Daten in einem aktualisierten kontextabhängigen Format), wie vorstehend offenbart.
  • Die Ablagespeicherschicht 130 kann Ablagespeicheroperationen innerhalb eines oder mehrerer der Bereiche 914 und/oder 924 in Reaktion auf Ablagespeicheranforderungen von einem oder mehreren Ablagespeicher-Clients 106 ausführen. Wie im Stand 941B dargestellt kann eine Ablagespeicheroperation Daten modifizieren, die den LIDs 972-973 zugeordnet sind, was das Zuordnen der Kennungen 972-973 zu der neuen Menge von Ablagespeicheradressen 721-722 umfassen kann. Folgend der/den Ablagespeicheroperation(en) von Zustand 941B kann die Ablagespeicherschicht 130 eine Bereichszusammenfassungsoperation ausführen, um den LID-Bereich 972-983 mit dem Bereich 072-083 zusammenzufassen. Die Bereichszusammenfassungsoperation kann das Integrieren der Modifikationen, die in Bezug auf den LID-Bereich 924 vorgenommen wurden, in den LID-Bereich 914 in Übereinstimmung mit einer Zusammenfassungsstrategie umfassen. Die Zusammenfassungsstrategie kann spezifizieren, dass Modifikationen, die in dem geklonten Bereich 924 vorgenommen werden, Daten innerhalb des Quellbereichs 914 überschreiben. Dementsprechend kann das Ergebnis der Zusammenfassungsoperation, das in Zustand 941C dargestellt ist, Binden der LIDs 072-073 des Quellbereichs 914 an die modifizierten Daten an den Ablagespeicheradressen 721-722 umfassen. Die Bereichszusammenfassungsoperation können ferner Auflösen der Zuweisung des geklonten LID-Bereichs 972-983, Speichern einer persistenten Meldung 366, die konfiguriert ist, die Daten an den Ablagespeicheradressen 756-757 den LIDs 072-073 zuzuordnen, und/oder Neuschreiben der Daten an den Ablagespeicheradressen 721-722 in einem aktualisierten kontextabhängigen Format umfassen, wie hier offenbart. Daten, die an den Ablagespeicheradressen 95-96 gespeichert sind, die durch die neuen Daten an 721-722 ausgeschlossen worden sind, können ungültig gemacht werden, wie vorstehend offenbart.
  • Ablagespeicheroperationen, die innerhalb der Bereiche 914 und/oder 924 ausgeführt werden, können zu Konflikten führen. In einigen Ausführungsformen kann die Zusammenfassungsstrategie, die den LID-Bereichen zugeordnet ist, Konflikten zuvorkommen. Wie hier genauer offenbart ist kann in einer atomaren Ablagespeicheroperation die Ablagespeicherschicht 130 einen oder mehrere LID-Bereiche sperren, während in einem oder mehreren entsprechenden Bereichen atomare Ablagespeicheroperationen fertiggestellt werden. In anderen Implementierungen kann jedoch die Ablagespeicherschicht 130 ermöglichen, dass Ablagespeicheroperationen gleichzeitig innerhalb geklonten Bereichen ausgeführt werden. Im Zustand 941D kann die Ablagespeicherschicht 130 Ablagespeicheroperation(en) implementieren, die konfiguriert sind, Daten, die LIDs 972-973 und 982-983 zugeordnet sind, in dem Bereich 924 zu überschreiben und/oder zu modifizieren. Die Ablagespeicherschicht 130 kann andere Ablagespeicheroperation(en) implementieren, die konfiguriert sind, Daten, die LIDs 072-073 des Bereichs 914 zugeordnet sind, zu überschreiben und/oder zu modifizieren. Die Ablagespeicheroperation(en), die zu den LIDs 072-073 und 972-973 gehören, können einen Zusammenfassungskonflikt zwischen den Bereichen 914 und 924 erzeugen. Der Zusammenfassungskonflikt kann gemäß einer Zusammenfassungsstrategie aufgelöst werden, wie vorstehend offenbart. In einigen Ausführungsformen kann die Zusammenfassungsstrategie Anwenden der jüngsten Modifikationen basierend, unter anderem, auf der relativen Reihenfolge der Ablagespeicheroperationen in dem Ablagespeicher-Log umfassen. In anderen Implementierungen kann die Zusammenfassungsstrategie Konflikte basierend auf relativer Priorität der Ablagespeicher-Clients 106 (Prozesse, Anwendungen und/oder dergleichen), die die jeweiligen Ablagespeicheroperationen angefordert haben, auflösen. In einer weiteren Implementierung kann die Zusammenfassungsstrategie Konflikte durch Erzeugen von zwei (oder mehr) Versionen der Bereiche 914 und/oder 924, um die unterschiedlichen in Konflikt stehenden Versionen repräsentieren, auflösen.
  • Zustand 941E stellt eine Ausführungsform eines Ergebnisses einer Zusammenfassungsoperation dar, die konfiguriert ist, die Operation(en), die den LIDs 072-073 zugeordnet sind, anstelle der in Konflikt stehenden Modifikationen, die den LIDs 972-973 zugeordnet sind, zu integrieren. Deshalb sind in Zustand 941E die LIDs 072-073 an die Ablagespeicheradressen 756-757 gebunden, die den Ablagespeicheroperation(en) entsprechen, die mit Referenz auf die LIDs 072-073 ausgeführt werden, anstatt an die Ablagespeicheradressen 721-722, die den Ablagespeicheroperation(en) entsprechen, die mit Referenz auf die LIDs 972-973 ausgeführt werden.
  • Zustand 941F bildet eine Ausführungsform eines Ergebnisses einer Zusammenfassungsoperation ab, die konfiguriert ist, die Modifikationen des Bereichs 972-973 anstelle der in Konflikt stehenden Modifikationen, die mit Referenz auf die LIDs 072-073 vorgenommen werden, zu integrieren. Dementsprechend sind im Zustand 941F die Kennungen 072-073 an die Ablagespeicheradressen 721-722 gebunden, die den Ablagespeicheroperation(en) entsprechen, die in Bezug auf die LIDs 972-973 ausgeführt werden, anstatt an die Ablagespeicheradressen 756-757, die den LIDs 072-073 zugeordnet sind.
  • Zustand 941G bildet eine Ausführungsform eines Ergebnisses einer Zusammenfassungsoperation ab, die konfiguriert ist, Zusammenfassungskonflikte durch Erzeugen von getrennten Bereichskopien oder Versionen zu managen. Der Bereich 914 kann die nicht in Konflikt stehenden Modifikationen, die in Bezug auf die Kennungen 982-983 vorgenommen werden, integrieren und kann das Ergebnis der in Konflikt stehenden Ablagespeicheroperationen, die zu den Kennungen 072-073 gehören, beibehalten (anstatt die Ablagespeicheradressen 721-722 zu integrieren). Der andere LID-Bereich 924 kann die Modifikationen von Zustand 941D beibehalten, ohne die Ergebnisse der in Konflikt stehenden Ablagespeicheroperation(en), die mit Referenz auf die Kennungen 072-073 vorgenommen werden, zu integrieren. Obwohl der Zustand 941G die Kopien unter Verwendung der ursprünglichen geklonten LID-Bereiche 072-083 914 und 974-981 924 abbildet, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte konfiguriert sein, die Bereichskopien und/oder Versionen innerhalb jedes Bereichs des logischen Adressraums 132 zu erzeugen. Die Bereichszusammenfassungsoperationen, die mit Referenz auf Zustände 941E–G offenbart sind, können ferner das Anhängen einer oder mehrerer persistenter Meldungen 366 an das Ablagespeichermedium 140, um die Daten, die an den Ablagespeicheradressen 721-722, 756-757 und/oder 767-768 gespeichert sind, den entsprechenden LIDs zuzuordnen, und/oder Neuschreiben der Daten in einer oder mehreren Hintergrundablagespeicheroperationen umfassen, wie hier offenbart.
  • In einigen Ausführungsformen können Operationen innerhalb eines oder mehrerer der geklonten LID-Bereiche 914 und/oder 924 Modifizieren der LID-Bereiche 914 und/oder 924 durch, unter anderem, Erweitern der Bereiche 914 und/oder 924, Verengen der Bereiche 914 und/oder 924 oder dergleichen umfassen. Erweitern eines der Bereiche 914 und/oder 924 kann eine entsprechende Erweiterung in den anderen Bereich umfassen, und als solche können Zuweisungsoperationen von der Zuweisung zusätzlicher LID(s) in beiden Bereichen 914 und 924 abhängig gemacht werden.
  • Die Bereichszusammenfassungsoperationen, die hier offenbart sind, können unter Verwendung irgendeiner aus den Bereichsklon- und/oder Verschiebungsausführungsformen der 3A–E, der Referenzeintragsausführungsformen der 4A–E und/oder der Zwischenabbildungsausführungsformen der 5A–B implementiert sein. 9D bildet eine Ausführungsform einer Bereichszusammenfassungsoperation unter Verwendung einer Referenzabbildung 460 ab. Wie in Zustand 943A abgebildet ist, kann Klonen des Bereichs 914 Zuweisen eines LID-Bereichs 924 in dem logischen Adressraum 132, Verknüpfen der Bereiche 914 und 924 (unter Verwendung von, unter anderem, Metadaten 984 und/oder 994) und Zuordnen der Bereiche 914 und 924 zu den Referenzkennungen 934 in der Referenzabbildung 460 umfassen. Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung 366, die konfiguriert ist, den Bereich 934 in der Referenzabbildung 460 den indirekten Bereichen 914 und/oder 924 zuzuordnen, auf dem Ablagespeichermedium 140 umfassen, wie vorstehend offenbart. Der Bereich 934 innerhalb der Referenzabbildung 460 kann an die Ablagespeicheradressen 95-106 gebunden sein. Dementsprechend können beide Bereiche 914 und 924 dieselben Daten an denselben Ablagespeicheradressen indirekt referenzieren.
  • Eine Ablagespeicheroperation innerhalb des Bereichs 924, die konfiguriert ist, Daten, die den LIDs 982-983 entsprechen, zu modifizieren, kann Zuweisen der neuen LIDs innerhalb des Bereichs 924 und Binden des neuen lokalen Eintrags 982-983 an die entsprechenden Ablagespeicheradressen 767-768 umfassen, wie im Zustand 943B abgebildet ist. Zusammenfassen der Bereiche 914 und 924 kann Integrieren der modifizierten Daten an den Ablagespeicheradressen 767-768 in den Bereich 914 in Übereinstimmung mit einer Zusammenfassungsstrategie umfassen, wie vorstehend offenbart. In der Ausführungsform von 9D kann die Bereichszusammenfassungsoperation von Zustand 943C Entfernen des Referenzeintrags 934 und Aktualisieren der LIDs 081-083 des Bereichs 914 umfassen, um die aktualisierten Daten an den Ablagespeicheradressen 767-768 zu referenzieren. Die Zusammenfassungsoperation kann ferner Speichern einer persistenten Meldung 366 und/oder Neuschreiben der Daten an den Ablagespeicheradressen 767-768 in einem aktualisierten kontextabhängigen Format umfassen, wie vorstehend offenbart.
  • 9E bildet weitere Ausführungsformen von Bereichsklon- und Bereichszusammenfassungsoperationen ab, die durch die Ablagespeicherschicht 130 implementiert sind. 9E stellt Bereichsklon- und Bereichszusammenfassungsoperationen in Ausführungsformen dar, die einen dazwischenliegenden Adressraum umfassen, wie im Zusammenhang mit den 5A–B offenbart ist. Im Zustand 947A wird der VID-Bereich 914, der die VIDs 072-083 umfasst, indirekt an die Ablagespeicheradressen 95-106 gebunden durch dazwischenliegende Kennungen 272Z-283Z in der VAS-Vorwärtsabbildung 560. Die dazwischenliegenden Kennungen können Teil eines getrennten dazwischenliegenden Adressraums 2136 sein (z. B. des logischen Adressraums 132 der Ablagespeicherschicht 130).
  • Wie im Zustand 947B dargestellt ist, kann das Klonen des VID-Bereichs 914 das Zuweisen eines neuen VID-Bereichs 924, der die VIDs 972-983 umfasst, und Zuordnen des Bereichs 924 zu den dazwischenliegenden Kennungen 272Z-283Z in der VAS-Vorwärtsabbildung 560 umfassen. Die Klonoperation kann ferner das Speichern einer persistenten Meldung 366, die konfiguriert ist, den VID-Bereich 924 den dazwischenliegenden Adressen 272Z-283Z zuzuordnen, auf dem Ablagespeichermedium 140 umfassen. Ablagespeicheroperationen können mit Referenz auf die VID-Bereiche 914 und/oder 924 ausgeführt werden, wie hier offenbart. Modifikationen an den VID-Bereichen 914 und/oder 924 können in aktualisierten Abbildungen zwischen den jeweiligen VID-Bereichen 914 und/oder 924 und dem Zwischenadressraum 2136 widergespiegelt sein. In Zustand 947C ist die Ablagespeicheroperation, die Daten der VIDs 982-983 modifiziert, in aktualisierten Abbildungen zwischen VIDs 982-983 und Zwischenkennungen 984Z-985Z und den Ablagespeicheradressen 456-457 widergespiegelt. Zusammenfassen der VID-Bereiche 914 und 924 kann Aktualisieren der VID-Abbildungen von Bereich 914 umfassen, um die aktualisierten Daten (durch die dazwischenliegenden Adressen 984Z-985Z) zu referenzieren, wie im Zustand 947D dargestellt ist. Die Zusammenfassungsoperation kann ferner das Auflösen von Zusammenfassungskonflikten (falls vorhanden) umfassen, wie vorstehend offenbart. Die Zusammenfassungsoperation kann ferner Anhängen einer oder mehrerer persistenter Meldungen 366 an das Ablagespeichermedium 140 umfassen, um die VIDs 082-083 den Zwischenadressen 984Z-985Z zuzuordnen.
  • In einigen Ausführungsformen kann die Ablagespeicherschicht 130 die hier offenbarten Bereichsklon-, Verschiebungs- und/oder Zusammenfassungsoperationen unterstützen, um Dateikonsistenzfunktionalität für Ablagespeicher-Clients 106, wie z. B. Dateisysteme, Datenbanken und/oder dergleichen, bereitzustellen. Bezug nehmend auf 9F kann ein Dateisystem 906 die Ablagespeicherschicht 130 unterstützen, um ein Schließen-bis-Öffnen-Dateikonsistenzmodell für das Protokoll des Netzdateisystems (NFS-Protokoll) Version 3 und/oder andere Dateisystemimplementierungen und/oder Protokolle zu implementieren. Das Schließen-bis-Öffnen-Dateikonsistenzmodell kann konfiguriert sein zu ermöglichen, dass mehrere Prozesse und/oder Anwendungen (Dateisystem-Clients) gleichzeitig auf derselben Datei arbeiten. Dateimodifikationen werden zu der Zeit, wenn die Datei geschlossen wird, eingespeichert; andere Clients, die auf der Datei parallel arbeiten, sehen die Änderungen nicht, bevor die Datei das nächste Mal geöffnet wird. Dementsprechend wird der Zustand der Datei zu der Zeit eingestellt, wenn die Datei geöffnet wird, und Änderungen, die parallel durch andere Clients implementiert werden, werden nicht angewandt, bis die Datei erneut geöffnet wird.
  • In einigen Ausführungsformen kann das Dateisystem 906 die Ablagespeicherschicht 130 unterstützen, die ”ursprünglichen” Daten der Datei (z. B. eine konsistente Version der Datei) zu konservieren, während Modifikationen innerhalb des geklonten Arbeitsbereichs vorgenommen werden. Wie hier verwendet bezieht sich das Konservieren der ”ursprünglichen” Daten der Datei und/oder einer konsistenten Version der Datei auf das Beibehalten der Dateidaten in einem Zustand, der der Zeit entspricht, zu der die Zeit geöffnet wurde, und/oder Führen eines Logs von Dateimodifikationen, aus dem der Zustand der Dateidaten in ihrem ursprünglichen, nicht modifizierten Zustand rekonstruiert werden kann.
  • 9F bildet eine Ausführungsform eines Systems 900F ab, das eine Ablagespeicherschicht 130 umfasst, die konfiguriert ist, ein Schließen-bis-Öffnen-Dateikonsistenzmodell zu implementieren. Das Dateisystem 906 (und/oder andere Ablagespeicher-Client(en) 106) kann die Ablagespeicherschicht 130 unterstützen, Schließen-bis-Öffnen-Dateikonsistenz effizient zu implementieren. Die Ablagespeicherschicht 130 kann konfiguriert sein: a) Dateien in Reaktion auf Dateiöffnungsanforderungen der Dateisystem-Clients 926A–N zu klonen, was zu einer ”primären” oder ”konsistenten” Version der Datei und einer ”Arbeits”-Version der Datei führt; b) Ablagespeicheroperationen mit Referenz auf die Arbeitsversion der Datei auszuführen; und c) die Arbeitsversion der Datei in die primäre Version der Datei in Reaktion auf Schließen der Datei zusammenzufassen. Die Ablagespeicherschicht 130 kann, konfiguriert sein, die Dateidaten in einen oder mehreren Bereichsklonoperationen zu klonen, wie hier offenbart ist (z. B. unter Verwendung der Bereichsklonausführungsformen der 3A–E, 4A–E, 5A–B und/oder dergleichen). Die Ablagespeicherschicht 130 kann ferner konfiguriert sein, die Arbeitsversion der Datei und die primäre oder konsistente Version der Datei unter Verwendung einer oder mehrerer Bereichszusammenfassungs- und/oder Faltungsoperationen zusammenzufassen, wie hier offenbart. Die Arbeitsversion der Datei kann den Zustand der Datei zu der Zeit repräsentieren, zu der die Datei durch einen speziellen Ablagespeicher-Client 926A–N geöffnet wurde. Der Ablagespeicher-Client 926A–N kann exklusiven Zugriff auf die Arbeitsversion der Datei aufweisen, und als solche kann die Arbeitsversion der Datei von Dateimodifikationen, die durch andere Clients 926A–N vorgenommen werden, isoliert sein. Die Ablagespeicherschicht 130 kann konfiguriert sein, die ursprünglichen, nicht modifizierten Dateidaten in Bezug auf die ”primäre” oder ”konsistente” logische Schnittstelle der Datei beizubehalten, was das Beibehalten der Zuordnungen zwischen den Dateidaten und der konsistenten logischen Schnittstelle umfassen kann, während Ablagespeicheroperationen mit Referenz auf die logische Arbeitsschnittstelle der Datei ausgeführt werden. Konflikte zwischen Dateimodifikationen, die durch unterschiedliche Ablagespeicher-Clients 926A–N vorgenommen werden, können gemäß der Konfliktauflösungsstrategie oder Zusammenfassungsstrategie, wie z. B. letztes Schreiben (am Ort zeitlich letztes Schreiben überschreibt früheres Schreiben); Kopieren bei Konflikt (z. B. Erzeugen getrennter Versionen der Datei); Priorität basierend auf Client 926A–N, Anwendung, Prozess und/oder dergleichen; und so weiter aufgelöst werden.
  • In der Ausführungsform von 9F in einem Zustand 953A umfasst das Umsetzungsmodul 134 Abbildungen 951A zwischen den LIDs einer Datei (Datei-LIDs 950A) und Daten der Datei 952A auf dem Ablagespeichermedium 140 an den Ablagespeicheradressen P0–P3. Die Abbildungen 951A können unter Verwendung der Vorwärtsabbildung 160, die hier offenbart ist, und/oder der einen oder mehreren Zwischenabbildungsschichten, wie im Zusammenhang mit den 5A–B offenbart ist, implementiert werden.
  • In Zustand 953B kann die Ablagespeicherschicht 130 konfiguriert sein, die Datei in Reaktion auf eine Dateiöffnungsanforderung eines Ablagespeicher-Clients (Ablagespeicher-Client 926B) zu klonen. Die Anforderung kann durch die Schnittstelle 131 als eine explizite Anforderung, ein Anforderungsparameter (z. B. fadvise, ioctrl usw.) und/oder dergleichen empfangen werden. Die Klonoperation kann eine oder mehrere Bereichsklonoperationen umfassen, was, wie hier offenbart, Zuweisen einer neuen Menge ”geklonter” Datei-LIDs 950B, die der Arbeitsversionsdatei entsprechen, und Zuordnen der Menge geklonter Kennungen 950B zu denselben Dateidaten 952A wie die LIDs 950A der primären Version der Datei (der ursprünglichen oder konsistenten Menge logischer Kennungen 950A) umfassen kann. Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, um die Dateidaten 952A sowohl den primären Datei-LIDs 950A als auch der Arbeitsversion der Datei-LIDs 950B zuzuordnen, wie vorstehend offenbart.
  • In einigen Ausführungsformen können die Ablagespeicherschicht 130 und/oder das Dateisystem 906 konfiguriert sein, Dateioperationen, die durch den Ablagespeicher-Client 926B ausgeführt werden, zu der Arbeitsversion der Datei (der Arbeitsmenge von LIDs 950B) zu lenken. Dementsprechend können Modifikationen, die durch den Ablagespeicher-Client 926B vorgenommen werden, mit Referenz auf die geklonten Datei-LIDs 950B vorgenommen werden. Solche Modifikationen können den Zustand der ursprünglichen, primären Version der Datei-LIDs 950A nicht beeinflussen. Deshalb kann der Ablagespeicher-Client 926B die Arbeitsversion der Datei mit Referenz auf die LIDs 950B modifizieren, ohne die LIDs 950A der ursprünglichen, primären Version der Datei zu ändern.
  • Im Zustand 953C hat der Ablagespeicher-Client 926B eine Ablagespeicheroperation (durch die Ablagespeicherschicht 130) ausgeführt, um Daten der Datei, die an der Ablagespeicheradresse P3 gespeichert sind, zu modifizieren; die modifizierten Daten können an das Ablagespeicher-Log an der Ablagespeicheradresse 264 angehängt werden. In Reaktion darauf kann das Umsetzungsmodul 134 die Abbildungen 951B aktualisieren, um die LIDs der geklonten Arbeitsversion der Datei 950B an die modifizierten Dateidaten 952B an der Ablagespeicheradresse P64 zu binden. Andere LID(s), die nicht durch den Ablagespeicher-Client 926B modifiziert werden, können weiterhin an die ursprünglichen, nicht modifizierten Dateidaten 952A gebunden sein. Die Ablagespeicherschicht 130 ist konfiguriert, die ursprünglichen Abbildungen 951A zwischen den Kennungen 950A der primären Version der Datei und den nicht modifizierten Dateidaten 952A an den Ablagespeicheradressen P0–3 zu konservieren.
  • Ein weiterer Ablagespeicher-Client 926N kann eine Anforderung ausgeben, die Datei zu öffnen, bevor der Ablagespeicher-Client 926B die Datei geschlossen hat. In Reaktion darauf und wie in Zustand 953D abgebildet, kann die Ablagespeicherschicht 130 einen weiteren Klon der primären Datei erzeugen (die primären Dateikennungen 950A klonen). Die geklonten LIDs (FIDs 950C) können dem ursprünglichen Zustand der Datei ohne die Modifikationen, die durch den Ablagespeicher-Client 926B mit Referenz auf den geklonten Kennungsbereich 950B vorgenommen werden, entsprechen. Dementsprechend können die geklonten LIDs 950C auf die ursprünglichen, nicht modifizierten Dateidaten 952A an den Ablagespeicheradressen P0–3 abgebildet 951C werden. Der Ablagespeicher-Client 926N kann Ablagespeicheroperationen mit Referenz auf den neuen geklonten Dateikennungsbereich 950C parallel mit dem Ablagespeicher-Client 926B ausführen. Änderungen, die durch die Clients 926B und 926N vorgenommen werden, können innerhalb ihrer jeweiligen LID-Bereiche 950B und 950C isoliert sein und können als solche nicht auf die primäre Version der Datei (LIDs 950A und/oder einander) angewandt werden.
  • Zustand 953E stellt das Ergebnis dar, wenn der Ablagespeicher-Client 926B die Datei schließt. In Reaktion auf eine Anforderung von Ablagespeicher-Client 926B, die Datei zu schließen, kann die Ablagespeicherschicht 130 konfiguriert sein, die Inhalte des entsprechenden Bereichs (FIDs 950B) in die primäre Version der Datei (LIDs 950A) in einer oder mehreren Bereichszusammenfassungsoperationen zusammenzufassen. Die Änderungen können jedoch nicht in die Version der Datei, die durch den Ablagespeicher-Client 926N verwendet wird (FIDs 950C), zusammengefasst werden; der Ablagespeicher-Client 926N kann keinen Zugriff auf die Modifikationen haben, bis der Client 926N die Datei erneut öffnet. Integrieren der Modifikationen kann eine oder mehrere Bereichszusammenfassungsoperationen umfassen, wie hier offenbart ist. Die Bereichszusammenfassungsoperationen können konfiguriert sein, die Modifikationen, die mit Referenz auf den geklonten LID-Bereich 950B vorgenommen werden, in den LID-Bereich 950A der primären Version der Datei zusammenzufassen. In der Ausführungsform von 9F umfasst die Bereichszusammenfassungsoperation Aktualisieren der Abbildungen 951A der primären Datei-LIDs 950A, um die modifizierten Dateidaten 952B an der Ablagespeicheradresse P64 zu referenzieren. Die Daten, die nicht durch den. Client 924B modifiziert wurden, können an die ursprünglichen, nicht modifizierten Dateidaten 952A an P0–3 gebunden bleiben.
  • Wie hier offenbart können in einigen Ausführungsformen die modifizierten Dateidaten 952B persistente Metadaten enthalten, die konfiguriert sind, die modifizierten Dateidaten 952B an der Ablagespeicheradresse P64 der einen oder den mehreren aus den LIDs 950B zuzuordnen (im Gegensatz zu den LIDs 950A, die der primären Version der Datei zugeordnet sind). Die Bereichszusammenfassungsoperation kann deshalb ferner Anhängen einer persistenten Meldung 366, die konfiguriert ist, eine oder mehrere aus dem Bereich von LIDs 950A den modifizierten Dateidaten 952B an der Ablagespeicheradresse P64 zuzuordnen, an das Ablagespeichermedium 140 umfassen. Die Daten an der Ablagespeicheradresse P64 können mit aktualisierten persistenten Metadaten in einer oder mehreren Hintergrundoperationen neu geschrieben werden. Folgend der Operation zum Schließen der Datei (und entsprechenden Bereichszusammenfassungsoperationen) kann das Umsetzungsmodul 134 konfiguriert sein, die Zuweisung der LIDs des Bereichs 950B aufzuheben.
  • Der Client 926N kann die Datei mit Referenz auf die Kennungen 950C der geschlossenen Datei modifizieren. Wie in Zustand 953F von 9G abgebildet, kann der Ablagespeicher-Client 926N eine oder mehrere Operationen ausführen, die in Konflikt mit den durch den Client 926B implementierten Modifikationen stehen. Die Modifikationen können auftreten, bevor der Client 950B die Datei geschlossen hat (bevor die Modifikationen von Client 926B auf die LIDs 950A der primären Version der Datei wie in Zustand 953E angewandt worden sind). Als solche sind die LIDs 950A auf die ursprünglichen, nicht modifizierten Dateidaten 952A abgebildet 951A, eine oder mehrere der Kennungen des Bereichs 950B, die dem Ablagespeicher-Client 926E zugewiesen sind, sind auf die modifizierten Dateidaten 952B abgebildet, und eine oder mehrere aus den Kennungen von Bereich 950C, die dem Ablagespeicher-Client 926N zugewiesen sind, sind auf die in Konflikt stehenden Dateidaten 952C abgebildet. Die LIDs 950B und 950C, die nicht modifizierten Daten entsprechen, können weiterhin die ursprünglichen, nicht modifizierten Dateidaten 952A referenzieren.
  • Die Clients 926E und 926C können schließlich ihre jeweiligen Dateien schließen, was das Zusammenfassen der Modifikationen, die mit Referenz auf die jeweiligen LID-Bereiche 950B und 950C vorgenommen wurden, in den Bereich 950A der primären Version der Datei umfassen kann. Die Ablagespeicherschicht 130 kann konfiguriert sein, Konflikte zwischen den Bereichen 950B und 950C gemäß einer Zusammenfassungsstrategie 944 aufzulösen. In einigen Ausführungsformen kann die Zusammenfassungsstrategie 944 auf der Reihenfolge, in der die Ablagespeicher-Clients 926B und 926C die Daten geschlossen haben, basieren; die Modifikationen der letzten geschlossenen Datei können vorher angewandte Modifikationen überschreiben (z. B. Modifikationen können serialisiert werden). Wie in Zustand 953G dargestellt ist, kann der Ablagespeicher-Client 950B die Anforderung zum Schließen der Datei vor dem Ablagespeicher-Client 950C ausgeben. Nachdem der Client 950B die Datei schließt, kann die Ablagespeicherschicht 130 Modifikationen, die mit Referenz auf den Bereich 950B vorgenommen werden, in den Bereich 950A der primären Version der Datei zusammenfassen (wie in Zustand 953E von 9F dargestellt ist). Das Schließen der Datei durch den Client 926C kann zum Überschreiben einer der Modifikationen, die durch den Ablagespeicher-Client 950B vorgenommen werden (modifizierte Daten 952B), mit den Daten 952C führen, wie in dem Zustand 953G von 9G dargestellt ist. Die Daten an P3 und P64 können zum Entfernen aus dem Ablagespeichermedium 140 markiert sein, da sie nicht mehr durch die primäre Datei oder eine aktuelle Arbeitsversion der Datei referenziert werden. Wie vorstehend offenbart kann die Ablagespeicherschicht 130 konfiguriert sein, andere Zusammenfassungsstrategien, wie z. B. eine prioritätsbasierte Zusammenfassungsstrategie 944, zu implementieren. Eine prioritätsbasierte Zusammenfassungsstrategie kann Konflikte basierend auf relativen Prioritäten der Ablagespeicher-Clients 926E und/oder 926C auflösen. In Zustand 953H kann der Ablagespeicher-Client 926C die Datei nach dem Ablagespeicher-Client 926B schließen; die Modifikationen von Ablagespeicher-Client 926B können jedoch aufgrund der Zusammenfassungsstrategie 944, die angibt, dass die Modifikationen von Ablagespeicher-Client 926B eine höhere Priorität aufweisen als in Konflikt stehende Modifikationen von Ablagespeicher-Client 926C, beibehalten werden. Dementsprechend können die LIDs 950A der primären Version der Datei weiterhin die modifizierten Dateidaten 952B des Ablagespeicher-Client 926B referenzieren, und in Konflikt stehende Dateidaten des Ablagespeicher-Clients 926C (Daten 952C an P96) können gemeinsam mit den obsoleten Dateidaten 952A an P3 zur Speicherbereinigung markiert werden. In anderen Ausführungsformen kann die Zusammenfassungsstrategie 944 eine Kopie-bei-Konflikt-Strategie umfassen, die zum Erzeugen von zwei primären Versionen der Datei führt. In solchen Ausführungsformen, wie in Zustand 953I dargestellt, kann die Ablagespeicherschicht 130 konfiguriert sein, die Modifikationen des Ablagespeicher-Client 926B in die primäre Datei zu integrieren (unter Verwendung primärer Datei-LIDs 950A), und kann die in Konflikt stehenden Modifikationen des Ablagespeicher-Client 926C in eine neue Version der Datei integrieren (Dateikennungen 950D).
  • Obwohl hier spezielle Ausführungsformen einer Zusammenfassungsstrategie 944 beschrieben sind, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt und könnte jede geeignete Zusammenfassungsstrategie 944 implementieren und/oder integrieren. Die Zusammenfassungsstrategie 944 kann innerhalb der Ablagespeicherschicht 130 und/oder des Dateisystems 906 implementiert sein. In einigen Ausführungsformen kann die Zusammenfassungsstrategie 944 der Ablagespeicherschicht 130 und/oder des Dateisystems 906 durch die Schnittstelle 131 der Ablagespeicherschicht 130 konfiguriert werden. Die Zusammenfassungsstrategie 944 kann für alle Dateioperationen gelten, die durch die Ablagespeicherschicht 130 ausgeführt werden. Alternativ oder zusätzlich kann die Zusammenfassungsstrategie 944 auf einer Basis pro Datei und/oder pro Konflikt durch, unter anderem, Dateisystem-API-Aufrufe, fadvise, ioctrl und/oder dergleichen eingestellt werden, wie vorstehend offenbart.
  • Die Ablagespeicherschicht 130 kann ferner konfiguriert sein, effiziente atomare Ablagespeicheroperationen zu implementieren. 10 ist ein Blockdiagramm einer Ausführungsform eines Systems 1000, das eine Ablagespeicherschicht 130 umfasst, die konfiguriert ist, atomare Ablagespeicheroperationen zu implementieren. Wie hier verwendet bezieht sich eine atomare Ablagespeicheroperation auf eine Ablagespeicheroperation, die entweder als Ganzes vollständig fertiggestellt oder wiederholt wird. Dementsprechend können atomare Ablagespeicheroperationen nicht teilweise fertiggestellt sein; die Ablagespeicherschicht 130 kann konfiguriert sein, Daten unvollständiger atomarer Ablagespeicheroperationen ungültig zu machen und/oder zu entfernen. Implementieren atomarer Ablagespeicheroperationen und insbesondere atomarer Ablagespeicheroperationen, die mehrere Schritte umfassen und/oder zu mehreren unterschiedlichen LID-Bereichen oder Vektoren gehören, kann hohe Overhead-Aufwände mit sich bringen. Beispielsweise implementieren einige Datenbanksysteme atomare Ablagespeicheroperationen unter Verwendung mehrerer Mengen redundanter Schreiboperationen.
  • Die Ablagespeicherschicht 130 kann ein atomares Ablagespeichermodul 1036 umfassen, das die Bereichsklon-, Bereichsverschiebungs- und/oder andere Operationen, die hier offenbart sind, unterstützten kann, um die Effizienz atomarer Ablagespeicheroperationen zu erhöhen. Ein einigen Ausführungsformen stellt die Schnittstelle 131 APIs und/oder Schnittstellen zum Ausführen vektorisierter atomarer Ablagespeicheroperationen bereit. Ein Vektor kann als eine Datenstruktur definiert sein, wie z. B.:
    Figure DE112014003076T5_0002
  • Der iov_base-Parameter kann einen Speicher oder Pufferort referenzieren, der Daten des Vektors umfasst, iov_len kann sich auf eine Länge oder Größe des Datenpuffers beziehen, und dest_lid kann sich auf die logische(n) Zielkennung(en) für den Vektor beziehen (z. B. logische Basiskennung mit der Länge des Bereichs, der impliziert und/oder von dem Eingabepuffer iov_len abgeleitet ist).
  • Eine Vektorablagespeicheranforderung, um Daten in einen oder mehrere Vektoren zu schreiben kann deshalb wie folgt definiert sein:
    Figure DE112014003076T5_0003
  • Die vorstehende Vektorschreiboperation kann konfiguriert sein, Daten aus jeder der Vektordatenstrukturen zusammenzustellen, die durch den *iov-Zeiger referenziert sind und/oder durch den Vektorzählparameter (iov_cnt) spezifiziert sind, und die Daten in die logische(n) Zielkennung(en), die in den jeweiligen iovect-Strukturen (z. B. dest_lid) spezifiziert sind, zu schreiben. Der flag-Parameter kann spezifizieren, ob die Vektorschreiboperation als eine atomare Vektoroperation implementiert werden sollte.
  • Wie vorstehend dargestellt kann eine Vektorablagespeicheranforderung Ausführen derselben Operation auf jedem aus mehreren Vektoren umfassen (z. B. implizit eine Schreiboperation ausführen, die zu einem oder mehreren unterschiedlichen Vektoren gehört). In einigen Ausführungsformen kann eine Vektorablagespeicheranforderung unterschiedliche I/O-Operationen für jeden einzelnen Vektor spezifizieren. Dementsprechend kann jede iovect-Datenstruktur ein jeweiliges Operationskennzeichen umfassen. In einigen Ausführungsformen kann die iovect-Struktur wie folgt erweitert sein:
    Figure DE112014003076T5_0004
  • Der iov_flag-Parameter kann die Ablagespeicheroperation spezifizieren, die auf dem Vektor ausgeführt werden soll. Das iov_flag kann jede geeignete Ablagespeicheroperation spezifizieren, die ein Schreiben, ein Lesen, ein atomares Schreiben, eine Abschneide- oder Verwurfsanforderung, eine Löschanforderung, eine Formatanforderung, eine Schreibanforderung für ein Muster (z. B. eine Anforderung, eine spezifiziertes Muster zu schreiben), eine Null-Schreibanforderung oder eine atomare Schreibanforderung mit Verifikationsanforderung, Zuweisungsanforderung und dergleichen enthält, jedoch nicht darauf beschränkt ist. Die die vorstehend beschriebene Vektorablagespeicheranforderungsschnittstelle kann erweitert werden, um Vektorstrukturen zu akzeptieren:
    Figure DE112014003076T5_0005
  • Der flag-Parameter kann spezifizieren, ob die Vektoroperationen der Vektoranforderung [vector_request] atomar ausgeführt werden sollen. Weitere Ausführungsformen von atomaren Ablagespeicheroperationen sind in der US-Patentschrift Nr. 13/725,728 , mit dem Titel ”Systems, Methods, and Interfaces for Vector Input/Output Operations”, eingereicht am 21. Dezember 2012 für Ashish Batwara u. a., offenbart, die hiermit durch Bezugnahme aufgenommen ist.
  • Das atomare Ablagespeichermodul 1036 kann konfiguriert sein, Ablagespeicheroperationen, die zu einer atomaren Ablagespeicheroperation gehören, zu einem vorbestimmten Bereich (einem ”In-Prozess”-Bereich 1032) zu lenken. Der ”In-Prozess”-Bereich 1032 kann ein festgelegter Abschnitt des logischen Adressraums 132 sein, der nicht für die Ablagespeicher-Clients 106 zugreifbar ist. Alternativ kann der In-Prozess-Bereich 1032 in einem getrennten Namensraum (z. B. der Referenzabbildung 460 und/oder einem anderen dazwischenliegenden Adressraum) implementiert sein. Nachdem die atomare Ablagespeicher-Operation innerhalb des In-Prozess-Bereichs 1032 fertiggestellt worden ist (z. B. alle einzelnen I/O-Vektoren verarbeitet worden sind), kann das atomare Ablagespeichermodul 1036 eine atomare Bereichsverschiebungsoperation ausführen, um Daten der atomaren Ablagespeicheranforderung von dem In-Prozess-Bereich 1032 zu dem/den Zielbereich(en) in dem logischen Adressraum 132 zu verschieben. Wie vorstehend offenbart kann die Bereichsverschiebungsoperation Schreiben einer einzigen persistenten Meldung 366 in das Ablagespeichermedium 140 umfassen.
  • Ein Ablagespeicher-Client 106 kann eine atomare Schreibanforderung ausgeben, die zu den Vektoren 1040A und 1040B gehört. Wie in 10 dargestellt, können, bevor die atomare Ablagespeicheroperation ausgeführt wird (in Zustand 1015A) die LIDs 10-13 von Vektor 1040A an die Ablagespeicheradressen P1–P4 gebunden sein, und die Kennungen 36-38 von Vektor 1040B können an die Ablagespeicheradressen P6–8 gebunden sein. Wie in Zustand 1015B abgebildet, kann das atomare Ablagespeichermodul 1036 konfiguriert sein, die atomaren Ablagespeicheroperationen zu einem In-Prozess-Bereich 1032 zu lenken. Wie vorstehend offenbart kann der In-Prozess-Bereich 1032 einen festgelegten Bereich des logischen Adressraums 132 umfassen und/oder kann in einem getrennten Namensraum implementiert sein. Der Vektor 1042A in dem In-Prozesse-Bereich 1032 kann den LIDs 10-13 von Vektor 1040A entsprechen, und der In-Prozess-Vektor 1042B kann den LIDs 36-38 von Vektor 1040B entsprechen. Die Vektoren 1042A und 1042B können Metadaten umfassen, die konfiguriert sind, die entsprechenden Vektoren 1040A und 1040B in dem logischen Adressraum 132 (und/oder entsprechende Einträge in der Vorwärtsabbildung 160) zu referenzieren. Implementieren der atomaren Ablagespeicheroperationen in Zustand 1015B kann Anhängen von Daten an das Ablagespeichermedium 140 in Zuordnung zu den Kennungen Z0–Z3 und/oder Z6–Z6 der In-Prozess-Vektoren 1042A und 1042B umfassen. Andere Ablagespeicheroperationen können gleichzeitig mit den und/oder verschachtelt innerhalb der atomaren Vektoroperationen innerhalb des In-Prozess-Bereichs 1032 ausgeführt werden.
  • Falls die atomare Ablagespeicheroperation vor der Fertigstellung fehlschlägt, können die ursprünglichen Daten der Vektoren 1040A und 1040B nicht beeinflusst sein. Während Rekonstruktion können die Daten, die den In-Prozess-Einträgen (den Daten an P9–P13 und/oder P100–P102) zugeordnet sind, als Teil einer unvollständigen atomaren Ablagespeicheroperation identifiziert werden (aufgrund der Zuordnung zu Kennungen des In-Prozess-Bereichs 1032), und die Daten können entfernt werden.
  • Wie in 10 dargestellt ist, können im Zustand 1015B die atomare(n) Ablagespeicheroperation(en) fertiggestellt sein, was Anhängen von Daten an das Ablagespeichermedium 140 in Zuordnung zu Kennungen des In-Prozess-Bereichs 1032 umfassen kann, wie vorstehend offenbart. Fertigstellung der atomaren Ablagespeicheranforderung kann Ausführen einer Bereichsverschiebungsoperation umfassen, um die logische Schnittstelle der Daten, die in die In-Prozess-Vektoren 1042A und 1042B geschrieben sind, zu modifizieren, so dass sie der logischen Zielschnittstelle in dem logischen Adressraum 132 entsprechen. Die Bereichsverschiebungsoperation kann Ausführen einer atomaren Ablagespeicheroperation umfassen, um eine persistenten Meldung 366 auf dem Ablagespeichermedium 140 zu speichern, um die Ablagespeicheradresse P9–P13 an die LIDs 10-13 und P100–102 an die LIDs 36-38 zu binden. Die Bereichsverschiebungsoperation kann auf andere Arten implementiert sein, die die Referenzeintragsausführungsformen der 4A–E und/oder die Zwischenabbildungsausführungsformen der 5A–B enthalten, jedoch nicht darauf beschränkt sind.
  • 11 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens 1100 zum Managen einer logischen Schnittstelle der Daten, die in einem kontextabhängigen Format auf einem nichtflüchtigen Ablagespeichermedium gespeichert sind.
  • Schritt 1120 kann Modifizieren einer logischen Schnittstelle von Daten, die in einem kontextabhängigen Format auf einem nichtflüchtigen Ablagespeichermedium gespeichert sind, umfassen. Die logische Schnittstelle kann an Schritt 1120 modifiziert werden in Reaktion auf Ausführen einer Operation auf den Daten, die eine Klonoperation, eine Deduplizierungsoperation, eine Verschiebungsoperation und dergleichen enthalten kann, jedoch nicht darauf beschränkt ist. Die Anforderung kann von einem Ablagespeicher-Client 106, der Ablagespeicherschicht 130 (z. B. dem Deduplizierungsmodul 374) oder dergleichen herrühren.
  • Modifizieren der logischen Schnittstelle kann Modifizieren der LID(s), die den Daten zugeordnet sind, umfassen, was Referenzieren der Daten unter Verwendung einer oder mehrerer zusätzlicher LIDs (z. B. Klon, Deduplizierung, usw.), Ändern der LID(s), die den Daten zugeordnet sind (z. B. Verschieben) oder dergleichen enthalten kann, jedoch nicht darauf beschränkt ist. Die modifizierte logische Schnittstelle kann mit dem kontextabhängigen Format der Daten auf dem Ablagespeichermedium 140 inkonsistent sein, wie vorstehend beschrieben.
  • Schritt 1120 kann ferner Speichern einer persistenten Meldung, die die Modifikation der logischen Schnittstelle identifiziert, auf dem Ablagespeichermedium 140 umfassen. Die persistente Meldung kann verwendet werden, um die logische Operation persistent und absturzsicher zu machen, so dass die modifizierte logische Schnittstelle (z. B. Ablagespeichermetadaten 135) der Daten aus den Inhalten des Ablagespeichermediums 140 rekonstruiert werden kann (falls notwendig). Schritt 1120 kann ferner Quittieren, dass die logische Schnittstelle modifiziert worden ist, umfassen (z. B. Zurückgeben aus einem API-Aufruf, Zurückgeben einer expliziten Quittung oder dergleichen). Die Quittung (und Zugriff durch die modifizierte logische Schnittstelle an Schritt 1130) tritt auf, bevor das kontextabhängige Format der Daten auf dem Ablagespeichermedium 140 aktualisiert ist. Dementsprechend kann die logische Operation nicht warten, bis die Daten neu geschrieben und/oder verschoben sind; wie hier offenbart kann das Aktualisieren des kontextabhängigen Formats der Daten verzögert werden und/oder in einem Prozess implementiert werden, der außerhalb des ”kritischen Pfads” des Verfahrens 1100 und/oder des Pfads zum Bedienen anderer Ablagespeicheroperationen und/oder Anforderungen ist.
  • Schritt 1130 kann Ermöglichen von Zugriff auf Daten in dem inkonsistenten kontextabhängigen Format durch die modifizierte logische Schnittstelle von Schritt 1120 umfassen. Wie vorstehend beschrieben kann das Aktualisieren des kontextabhängigen Formats der Daten, so dass es mit der modifizierten kontextabhängigen Schnittstelle konsistent ist, Neuschreiben und/oder Verschieben der Daten auf dem nichtflüchtigen Ablagespeichermedium umfassen, was zusätzliche Latenz für die Operation in Schritt 1120 und/oder andere Ablagespeicheroperationen, die zu der modifizierten logischen Schnittstelle gehören, mit sich bringen kann. Deshalb kann die Ablagespeicherschicht 130 konfiguriert sein, Zugriff auf die Daten in dem inkonsistenten kontextabhängigen Format zu ermöglichen, während (oder bevor) das kontextabhängige Format der Daten aktualisiert wird. Ermöglichen von Zugriff auf die Daten an Schritt 1130 kann Referenzieren und/oder Verknüpfen mit dem einen oder den mehreren Referenzeinträgen, die den Daten entsprechen (über einen oder mehrere indirekte Einträge) umfassen, wie vorstehend beschrieben.
  • Schritt 1140 kann Aktualisieren des kontextabhängigen Formats der Daten auf dem Ablagespeichermedium 140 umfassen, so dass es mit der modifizierten logischen Schnittstelle von Schritt 1120 konsistent ist. Schritt 1140 kann Neuschreiben und/oder Verschieben der Daten zu einem weiteren Medienablagespeicherort auf dem Ablagespeichermedium 140 umfassen. Wie vorstehend beschrieben kann Schritt 1140 implementiert sein unter Verwendung eines Prozesses, der außerhalb des kritischen Pfads von Schritt 1120 und/oder anderer Ablagespeicheranforderungen, die durch die Ablagespeicherschicht 130 ausgeführt werden, ist; Schritt 1140 kann durch ein weiteres, autonomes Modul implementiert sein, wie z. B. ein Medienmanagementmodul 370, Deduplizierungsmodul 374 oder dergleichen. Dementsprechend kann das kontextabhängige Format der Daten unabhängig vom Bedienen anderer Ablagespeicheroperationen und/oder Anforderungen aktualisiert werden. Als solcher kann Schritt 1140 Verzögern einer sofortigen Aktualisierung des kontextabhängigen Formats der Daten und Aktualisieren des kontextabhängigen Formats der Daten in einem oder mehreren ”Hintergrund”-Prozessen wie z. B. einem Medienmanagementprozess umfassen. Alternativ oder zusätzlich kann Aktualisieren des kontextabhängigen Formats der Daten in Reaktion auf (z. B. zusammen mit) anderen Ablagespeicheroperationen auftreten. Beispielsweise kann eine nachfolgende Anforderung, die Daten zu modifizieren, verursachen, dass die Daten in dem aktualisierten kontextabhängigen Format außerhalb des Orts neu geschrieben werden.
  • Schritt 1140 kann ferner Aktualisieren der Ablagespeichermetadaten 135, wenn das kontextabhängige Format der Daten aktualisiert wird, umfassen. Wenn Daten in dem aktualisierten kontextabhängigen Format neu geschrieben und/oder verschoben werden, kann die Ablagespeicherschicht 130 die Ablagespeichermetadaten 135 (z. B. die Vorwärtsabbildung 160) dementsprechend aktualisieren. Die Aktualisierungen können Entfernen einer oder mehrerer Verknüpfungen mit Referenzeinträgen in einer Referenzabbildung 460 und/oder Ersetzen indirekter Einträge durch lokale Einträge umfassen, wie vorstehend beschrieben. Schritt 1140 kann ferner Ungültigmachen und/oder Entfernen einer persistenten Meldung von dem Ablagespeichermedium 140 in Reaktion auf Aktualisieren des kontextabhängigen Formats der Daten und/oder Beibehalten der Ablagespeichermetadaten 135 umfassen, wie vorstehend offenbart.
  • 12 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 1200 zum Managen einer logischen Schnittstelle der Daten, die in einem kontextabhängigen Format auf einem nichtflüchtigen Ablagespeichermedium gespeichert sind. Das Verfahren 1200 kann durch eines oder mehrere Module und/oder Komponenten der Ablagespeicherschicht 130 implementiert sein, wie hier offenbart.
  • Schritt 1220 umfasst Auswählen einer Ablagespeicherabteilung wie z. B. eines Löschblocks oder eines logischen Löschblocks zur Wiederherstellung. Wie vorstehend beschrieben kann die Auswahl von Schritt 1220 auf einer Anzahl unterschiedlicher Faktoren basieren, wie z. B. einem Mangel verfügbarer Ablagespeicherkapazität, Detektieren eines prozentualen Anteils von Daten, die als ungültig markiert sind, innerhalb eines speziellen logischen Löschblocks, der einen Schwellenwert erreicht, einer Konsolidierung gültiger Daten, einer Fehlerkorrekturrate, die einen Schwellenwert erreicht, Verbessern der Datenverteilung, Datenauffrischung oder dergleichen. Alternativ oder zusätzlich können die Auswahlkriterien von Schritt 1220 enthalten, ob der Ablagespeicherbereich Daten in einem kontextabhängigen Format enthält, das inkonsistent mit einer entsprechenden logischen Schnittstelle davon ist, wie vorstehend beschrieben.
  • Wie vorstehend offenbart kann Wiederherstellen (oder Wiederverwenden) einer Ablagespeicherabteilung Löschen der Ablagespeicherabteilung und Verschieben von gültigen Daten darauf (falls vorhanden) zu anderen Ablagespeicherorten auf dem nichtflüchtigen Ablagespeichermedium umfassen. Schritt 1230 kann Bestimmen umfassen, ob das kontextabhängige Format von Daten, die in einer Pflegeoperation verlagert werden sollen, aktualisiert werden sollte (z. B. inkonsistent ist mit der logischen Schnittstelle der Daten). Schritt 1230 kann Zugreifen auf Ablagespeichermetadaten 135, wie z. B. die Vorwärtsabbildung 160, die Referenzabbildung 460 und/oder die dazwischenliegenden Adressraum, wie vorstehend beschrieben, umfassen, um zu bestimmen, ob die persistenten Metadaten (z. B. logischen Schnittstellenmetadaten) der Daten mit den Ablagespeichermetadaten 135 der Daten konsistent sind. Falls die persistenten Metadaten nicht mit den Ablagespeichermetadaten 135 konsistent sind (z. B. die Daten unterschiedlichen LIDs zuordnen, wie vorstehend beschrieben), fährt der Ablauf mit Schritt 1240 fort; andernfalls fährt der Ablauf mit Schritt 1250 fort.
  • Schritt 1240 kann Aktualisieren des kontextabhängigen Formats der Daten umfassen, so dass es mit der logischen Schnittstelle der Daten konsistent ist. Schritt 1240 kann Modifizieren der logischen Schnittstellenmetadaten umfassen, um eine unterschiedliche Menge von LIDs (und/oder Referenzeinträgen) zu referenzieren, wie vorstehend beschrieben.
  • Schritt 1250 umfasst Verlagern der Daten zu einem anderen Ablagespeicherort in einem Log-Format, das, wie vorstehend beschrieben, eine geordnete Reihenfolge von Ablagespeicheroperationen, die auf den nichtflüchtigen Ablagespeichermedien ausgeführt werden, konserviert. Dementsprechend können die verlagerten Daten (in dem aktualisierten kontextabhängigen Format) als die gültige und aktuelle Version der Daten identifiziert werden, wenn die Ablagespeichermetadaten 135 rekonstruiert werden (falls notwendig). Schritt 1250 kann ferner Aktualisieren der Ablagespeichermetadaten 135 umfassen, um die logische Schnittstelle der Daten an die neuen Medienablagespeicherorte der Daten zu binden, indirekte und/oder Referenzeinträge auf die Daten in dem inkonsistenten kontextabhängigen Format zu entfernen und so weiter, wie hier offenbart.
  • 13 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 1300 zum Managen logischer Schnittstellen von Daten, die in einem kontextabhängigen Format gespeichert sind. Schritt 1315 kann Identifizieren von Duplikatdaten auf einer oder mehrerer Ablagespeichervorrichtungen 120 umfassen. Schritt 1315 kann durch ein Deduplizierungsmodul 374, das innerhalb der Ablagespeicherschicht 130 arbeitet, ausgeführt werden. Alternativ kann Schritt 1320 durch die Ablagespeicherschicht 130 ausgeführt werden, wenn Ablagespeicheroperationen ausgeführt werden.
  • Schritt 1315 kann Bestimmen und/oder Verifizieren umfassen, dass das Ablagespeichermedium 140 Duplikatdaten umfasst (oder bereits Daten einer Schreib- und/oder Modifizieranforderung umfasst). Dementsprechend kann Schritt 1320 innerhalb des Pfads einer Ablagespeicheroperation auftreten (z. B. wenn oder bevor Daten auf das Ablagespeichermedium 140 geschrieben werden) und/oder kann außerhalb des Pfads von bedienenden Ablagespeicheroperationen auftreten (z. B. Duplikatdaten identifizieren, die bereits auf dem Ablagespeichermedium 140 gespeichert sind). Schritt 1320 kann Erzeugen und/oder Pflegen von Datensignaturen in den Ablagespeichermetadaten 135 und Verwenden der Signaturen, um Duplikatdaten zu identifizieren, umfassen.
  • In Reaktion auf Identifizieren der Duplikatdaten an Schritt 1315 kann die Ablagespeicherschicht 130 (oder ein anderes Modul, wie z. B. das Deduplizierungsmodul 374) eine logische Schnittstelle einer Kopie der Daten modifizieren, so dass eine einzige Kopie durch zwei (oder mehrere) Mengen von LIDs referenziert werden kann. Die Modifikation der logischen Schnittstelle an Schritt 1320 kann Aktualisieren von Ablagespeichermetadaten 135 und/oder Speichern einer persistenten Meldung auf den nichtflüchtigen Ablagespeichermedien 135 umfassen, wie vorstehend beschrieben. Schritt 1320 kann ferner Ungültigmachen und/oder Entfernen anderer Kopien der Daten auf den nichtflüchtigen Ablagespeichermedien umfassen, wie vorstehend beschrieben.
  • Das kontextabhängige Format der Daten auf dem Ablagespeichermedium 140 kann mit der modifizierten logischen Schnittstelle inkonsistent sein. Deshalb können die Schritte 1330 und 1340 Ermöglichen von Zugriff auf die Daten in dem inkonsistenten kontextabhängigen Format durch die modifizierte logische Schnittstelle und Aktualisieren des kontextabhängigen Formats der Daten auf dem Ablagespeichermedium 140 umfassen, wie vorstehend beschrieben.
  • 14 ist ein Ablaufdiagramm einer Ausführungsform einer Bereichszusammenfassungsoperation, die durch die hier offenbarte Ablagespeicherschicht 130 implementiert ist. Schritt 1410 kann Klonen einer Menge von LIDs innerhalb eines logischen Adressraums 132 umfassen. Klonen der LIDs kann Referenzieren derselben Menge von Daten auf dem Ablagespeichermedium 140 (z. B. denselben Ablagespeicherorten und/oder Ablagespeicheradressen) durch zwei oder mehrere unterschiedliche Mengen von LIDs umfassen. Die zwei oder mehreren Mengen können eine Arbeitsmenge von LIDs und eine ursprüngliche Konsistenzmenge von LIDs enthalten. Die Arbeitsmenge von LIDs kann verwendet werden, um Dateimodifikationsoperationen auszuführen, und die ursprüngliche Konsistenzmenge von LIDs kann konfiguriert sein, einen ursprünglichen, nicht modifizierten Zustand der Daten zu pflegen.
  • Wie vorstehend offenbart können die an Schritt 1410 geklonten Daten durch eine Menge von LIDs referenziert werden, die an Ablagespeicherorte der Daten auf dem Ablagespeichermedium 140 gebunden sein können. Schritt 1410 kann Zuweisen einer oder mehrerer anderer Mengen von LIDs innerhalb des logischen Adressraums 132 und/oder innerhalb eines getrennten Adressraums umfassen. Die eine oder die mehreren Mengen von LIDs können eine logische Kapazität umfassen, die der logischen Kapazität der ursprünglichen Menge von LIDs äquivalent ist (z. B. dieselbe Anzahl von LIDs enthalten und/oder demselben Umfang von Ablagespeicherkapazität entsprechen). Schritt 1410 kann ferner Zuordnen und/oder Binden der logischen Kennungen der einen oder mehreren Gruppen von LIDs zu denselben/an dieselben Daten, die durch die ursprüngliche Menge von LIDs referenziert werden, umfassen. Dementsprechend kann Schritt 1410 Modifizieren der logischen Schnittstelle zu den Daten umfassen, um die Daten zwei oder mehr unterschiedlichen Mengen von LIDs zuzuordnen. In einigen Ausführungsformen umfasst Schritt 1410 Zuweisen einer oder mehrerer Mengen von LIDs innerhalb des logischen Adressraums 132 und Binden der LIDs an dieselbe Menge von Ablagespeicheradressen. Alternativ oder zusätzlich kann Schritt 1410 Erzeugen eines oder mehrerer Referenzeinträge innerhalb einer Referenzabbildung 460 umfassen, um die LIDs der einen oder mehreren unterschiedlichen Mengen von LIDs mit den Ablagespeicheradressen durch einen oder mehrere Referenzeinträge zu verknüpfen, wie im Zusammenhang mit den 4A–E offenbart ist. Alternativ kann der Schritt 1410 durch Verwenden einer oder mehrerer Zwischenabbildungsschichten implementiert werden (z. B. wie im Zusammenhang mit den 5A–B offenbar ist). Schritt 1410 kann ferner Verknüpfen der zwei oder mehr Mengen von LIDs durch, unter anderem, Metadaten 984 und/oder 994, die den LIDs zugeordnet sind, umfassen. Die Metadaten 984 und/oder 994 können konfiguriert sein anzugeben, dass die LID-Mengen Klone derselben Ablagespeicherentität (z. B. Versionen derselben Datei) repräsentieren. Die Metadaten 984 und/oder 994 können ferner konfiguriert sein, eine Zusammenfassungsstrategie für zwei oder mehr Mengen von LIDs zu spezifizieren und/oder zu referenzieren, wie vorstehend offenbart.
  • Schritt 1410 kann ferner Speichern einer persistenten Meldung 366, die konfiguriert ist, die Klonoperation von Schritt 1410 persistent und absturzsicher zu machen, auf dem Ablagespeichermedium 140 umfassen. Die persistente Meldung 366 kann konfiguriert sein, die modifizierte logische Schnittstelle der Daten anzugeben (z. B. die Daten den zwei oder mehr Mengen von LIDs zuzuordnen), eine Zusammenfassungsstrategie der Klonoperation anzugeben, und dergleichen.
  • Schritt 1420 kann Ausführen von Ablagespeicheroperationen innerhalb des einen oder der mehreren unterschiedlichen LID-Bereiche von Schritt 1410 umfassen. Die Ablagespeicheroperationen können in Reaktion auf Anforderungen, die durch die Schnittstelle 131 von einem oder mehreren Ablagespeicher-Clients 106 empfangen werden, ausgeführt werden. Die Ablagespeicheroperationen können Anhängen von Daten an das Ablagespeichermedium 140 umfassen. Die Ablagespeicheroperationen können deshalb Modifizieren der Zuordnungen und/oder Bindungen zwischen LIDs in einer oder mehreren LID-Mengen und Ablagespeicherorten auf dem Ablagespeichermedium 140 umfassen. Modifizieren der Zuordnungen und/oder Bindungen kann ferner Abbilden von LIDs in einer oder mehreren der LID-Mengen auf die angehängten Daten direkt und/oder durch eine oder mehrere indirekte Referenzen und/oder Abbildungsschichten umfassen.
  • Schritt 1430 kann Zusammenfassen der LID-Mengen umfassen, wie vorstehend offenbart. Zusammenfassen von LID-Mengen kann Integrieren von Modifikationen, die in einem der LID-Bereiche vorgenommen werden, in eine oder mehrere der LID-Mengen umfassen, wie vorstehend offenbart. Schritt 1430 kann ferner Auflösen eines oder mehrerer Zusammenfassungskonflikte in Übereinstimmung mit einer Zusammenfassungsstrategie umfassen. In einigen Ausführungsformen umfasst Zusammenfassen Löschen (z. B. Ungültigmachen) einer oder mehrerer der LID-Mengen, was Entfernen von Einträgen aus der Vorwärtsabbildung 160, Entfernen gemeinsam verwendeter Referenzen auf Ablagespeicherorte aus einer Referenzzählwert-Datenstruktur, Entfernen von Referenzeinträgen aus einer Referenzabbildung 460, Entfernen von Referenzen in einer Zwischenabbildungsschicht und/oder dergleichen umfassen kann. Schritt 1430 kann ferner Modifizieren einer logischen Schnittstelle der zusammengefassten Daten umfassen, wie vorstehend offenbart. Die modifizierte logische Schnittstelle kann die LIDs, die verwendet werden, um Daten zu referenzieren, die ursprünglich mit Referenz auf eine oder mehrere der LID-Mengen gespeichert war, aktualisieren. Die modifizierte logische Schnittstelle kann mit dem kontextabhängigen Format der Daten auf dem Ablagespeichermedium 140 inkonsistent sein. Deshalb kann Schritt 1430 Anhängen einer oder mehrerer persistenter Meldungen 366 auf dem Ablagespeichermedium 140 umfassen, um zusammengefasste Daten einer aktualisierten logischen Schnittstelle der Daten zuzuordnen (z. B. die Daten, die ursprünglich in Zuordnung zu LIDs in der zweiten Menge gespeichert waren, LIDs in der ersten Menge zuzuordnen). Schritt 1430 kann ferner Ermöglichen von Zugriff auf die Daten in dem inkonsistenten kontextabhängigen Format und/oder Aktualisieren des kontextabhängigen Formats der Daten in einer oder mehreren Hintergrundoperationen umfassen, wie vorstehend offenbart.
  • 15 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 1500 für Bereichszusammenfassungsoperationen. Schritt 1520 kann Empfangen einer Anforderung, eine logische Kopie eines LID-Bereichs zu erzeugen, umfassen. Die Anforderung kann von einem Ablagespeicher-Client 106 durch eine Schnittstelle 131 empfangen werden und/oder kann Teil einer API höherer Ebene sein, die durch die Ablagespeicherschicht 130 bereitgestellt ist. Die Anforderung kann eine ”Betriebsart” des Klons enthalten, die enthalten kann, wie Klone synchronisiert werden sollen, falls überhaupt; wie Zusammenfassen auftreten soll (Zusammenfassungsstrategie); ob die logische Kopie als vorübergehend bezeichnet werden soll; und so weiter, jedoch nicht darauf beschränkt ist.
  • Schritt 1530 kann Zuweisen von LIDs in dem logischen Adressraum 132 umfassen, um die Anforderung zu bedienen. Die Zuweisung von Schritt 1530 kann ferner Reservieren von physikalischem Ablagespeicherraum umfassen, um Änderungen des geklonten LID-Bereichs aufzunehmen. Die Reservierung von physikalischem Ablagespeicherraum kann von der Betriebsart des Klons abhängig gemacht werden. Beispielsweise kann, falls alle Änderungen zwischen dem Klon und dem ursprünglichen Adressbereich synchronisiert werden sollen, ein kleiner Abschnitt (falls überhaupt) des physikalischem Ablagespeicherraums' reserviert werden. Alternativ kann die Ablagespeicherschicht 130 zusätzliche physikalische Ablagespeicherkapazität für logische Kopieroperationen reservieren, die eine Kopie-bei-Konflikt-Zusammenfassungsstrategie aufweisen. Schritt 1530 kann ferner Zuweisen des Klons innerhalb eines festgelegten Abschnitts oder Segments der logischen Adressraums 132 umfassen (z. B. eines Bereichs, der zum Gebrauch mit logischen Kopier- und/oder Klonoperationen dediziert ist). Dementsprechend kann Schritt 1530 Zuweisen einer zweiten unterschiedlichen Menge von LIDs umfassen, um die ersten Mengen von LIDs zu klonen.
  • Schritt 1540 kann Aktualisieren der logischen Schnittstelle von Daten, die dem Klon entsprechen, umfassen, um sowohl die ursprünglichen LIDs, die an die Daten gebunden sind, als auch die geklonten LIDs, die in Schritt 1530 zugewiesen sind, zu referenzieren. Schritt 1540 kann Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140 umfassen, wie vorstehend offenbart.
  • Schritt 1550 umfasst Empfangen einer Ablagespeicheranforderung und Bestimmen, ob die Ablagespeicheranforderung zu einer LID in der ersten und/oder der zweiten Menge (geklonter LID-Bereich) gehört. Falls ja, fährt der Ablauf mit Schritt 1560 fort; andernfalls bleibt der Ablauf bei Schritt 1550.
  • Schritt 1560 kann Bestimmen umfassen, welche Operationen (falls überhaupt) auf den anderen zugeordneten LID-Bereichen vorgenommen werden müssen (z. B. Synchronisieren von Zuweisungsoperationen usw.). Die Bestimmung von Schritt 1560 kann Zugreifen auf Metadaten 984 und/oder 994 umfassen, die die Synchronisationsstrategie des Klons umfassen und/oder referenzieren können.
  • Schritt 1570 kann Ausführen der Operationen (falls vorhanden), die in Schritt 1560 bestimmt wurden, zusammen mit der angeforderten Ablagespeicheroperation umfassen. Falls eine oder mehrere der Synchronisationsoperationen nicht ausgeführt werden können (z. B. zusätzlicher logischer Adressraum 132 für eine oder mehrere der Klone nicht zugewiesen werden kann), kann die zugrundeliegende Ablagespeicheroperation fehlschlagen.
  • 16 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 1600 zum Implementieren von Bereichsklon- und/oder Bereichszusammenfassungsoperationen. Schritt 1610 kann Klonen eines LID-Bereichs umfassen, wie vorstehend offenbart. Schritt 1610 kann Klonen einer Menge von LIDs, die Daten zugeordnet sind, die in dem Ablagespeichermedium 140 an jeweiligen Ablagespeicheradressen gespeichert sind, umfassen. Schritt 1610 kann deshalb Zuordnen von zwei oder mehr unterschiedlichen Mengen von LIDs zu derselben Menge von Ablagespeicherorten (z. B. denselben Daten) umfassen. Schritt 1610 kann ferner Speichern einer oder mehrerer persistenter Meldungen 366 auf dem Ablagespeichermedium 140 und/oder Neuschreiben der Daten in einem aktualisierten kontextabhängigen Format umfassen, wie vorstehend offenbart. Schritt 1610 kann ferner Verknüpfen der zwei oder mehreren Mengen von LIDs durch, unter anderem, Metadaten 984 und/oder 994 enthalten. Die Metadaten 984 und/oder 994 können eine Klonsynchronisierungsstrategie, Zusammenfassungsstrategie und/oder dergleichen umfassen und/oder referenzieren, wie vorstehend offenbart.
  • Schritt 1620 kann Ausführen von Ablagespeicheroperationen mit Referenz auf einen oder mehrere aus den zwei oder mehreren geklonten LID-Bereiche umfassen. Schritt 1620 kann Synchronisieren von Zuweisungsoperationen zwischen geklonten Bereichen umfassen. Die Ablagespeicheroperationen von Schritt 1620 können Anhängen von Daten an das Ablagespeichermedium 140 und/oder Zuordnen der angehängten Daten zu LIDs aus einem oder mehreren der unterschiedlichen LID-Bereiche umfassen.
  • Schritt 1630 umfasst Empfangen einer Anforderung, die zwei oder mehr LID-Bereiche aus Schritt 1610 zusammenzufassen. Die Zusammenfassungsanforderung kann durch die Schnittstelle 131 empfangen werden und/oder kann Teil einer weiteren Operation höherer Ebene sein, wie z. B. einer atomaren Ablagespeicheroperation oder dergleichen.
  • Schritt 1640 kann Identifizieren von Zusammenfassungskonflikten zwischen den zwei oder mehr Mengen von LIDs (falls vorhanden) umfassen. Identifizieren von Zusammenfassungskonflikten kann Identifizieren von LIDs umfassen, die innerhalb mehr als eines aus den zwei oder mehreren geklonten LID-Bereichen modifiziert wurden. Bezug nehmend zurück auf 9C kann Schritt 1640 Identifizieren eines Zusammenfassungskonflikts in Zustand 941D in Reaktion auf Bestimmen, dass die LIDs 072-073 im Bereich 914 modifiziert wurden, wie auch die entsprechenden LIDs 972-973 in Bereich 924, umfassen. Als solcher kann Schritt 1640 Vergleichen von Modifikationen innerhalb der LID-Klone umfassen, um Fälle zu identifizieren, in denen in Konflikt stehende Modifikationen auf dieselbe LID in der Zusammenfassungsoperation abbilden würden.
  • Schritt 1650 kann Auflösen von Zusammenfassungskonflikten, die in Schritt 1640 identifiziert werden, umfassen. Schritt 1650 kann Bestimmen einer anwendbaren Zusammenfassungsstrategie umfassen, die, wie vorstehend offenbart, bestimmen kann, wie Zusammenfassungskonflikte aufzulösen sind. Die Zusammenfassungsstrategie kann spezifizieren, welche Version einer LID in dem zusammengefassten LID-Bereich enthalten ist und/oder ob Konflikte durch Pflegen getrennter Kopien der LID-Bereiche aufgelöst werden. Schritt 1650 kann ferner Zusammenfassen von LID-Bereichen in Übereinstimmung mit den aufgelösten Zusammenfassungskonflikten umfassen, wie vorstehend offenbart.
  • 17 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens 1700 zum Implementieren von Öffnen-bis-Schließen-Dateikonsistenz unter Verwendung der Ablagespeicherschicht 130, die hier offenbart ist.
  • Schritt 1710 kann Klonen eines LID-Bereichs, der Daten einer Datei entspricht, umfassen. Wie vorstehend offenbart kann ein Dateisystem 906 (und/oder ein anderer Ablagespeicher-Client 106) konfiguriert sein, die Ablagespeicherschicht 130 zu unterstützen, ein Schließen-bis-Öffnen-Konsistenzmodell zu implementieren. Dementsprechend kann Schritt 1710 in Reaktion auf eine Anforderung von dem Dateisystem 906 und/oder in Reaktion auf eine Anforderung von einem Client, die Datei zu öffnen, ausgeführt werden. Schritt 1710 kann Modifizieren der logischen Schnittstelle der Dateidaten, um die Ablagespeicherorte der Dateidaten durch zwei oder mehrere unterschiedlichen Mengen von LIDs zu referenzieren, umfassen. Die zwei oder mehreren unterschiedlichen Mengen von LIDs können eine Arbeitsmenge und eine ursprüngliche Konsistenzmenge von LIDs umfassen. Dementsprechend kann die ursprüngliche, Konsistenzmenge von LIDs einer primären Version der Datei entsprechen, und die Arbeitsmenge von LIDs kann einer Arbeitskopie der Datei zur Verwendung durch den Client entsprechen. Die Arbeitskopie kann von gleichzeitigen Dateimodifikationen, die durch andere Ablagespeicher-Clients vorgenommen werden (Modifikationen, die vorgenommen werden, nachdem der Client die Datei an Schritt 1710 geöffnet hat), isoliert sein. Ähnlich können Modifikationen, die mit Referenz auf die logischen Kennungen der Arbeitsmenge logischer Kennungen vorgenommen werden, nicht in die ursprüngliche Konsistenzmenge von LIDs (die primäre Version der Datei) verteilt werden, bis die Dateiarbeitsmenge von LIDs mit den anderen LID-Mengen zusammengefasst ist (z. B. in Reaktion auf Schließen der Datei). Die Bereichsklonoperation von Schritt 1710 kann ausgeführt werden unter Verwendung irgendeiner der hier offenbarten Bereichsklonausführungsformen, die die mehreren Referenzausführungsformen der 3A–E, die Referenzindexausführungsformen der 4A–E und/oder die Zwischenabbildungsschichtausführungsformen der 5A–B enthalten. Schritt 1710 kann ferner Bereitstellen einer oder mehrerer der LID-Mengen für einen Ablagespeicher-Client 106 umfassen, wie z. B. den Ablagespeicher-Client 106, der die Dateiöffnungsoperation angefordert hat. Der Ablagespeicher-Client kann mit der Arbeitsmenge von LIDs versorgt werden. Alternativ oder zusätzlich kann die Ablagespeicherschicht 130 den Ablagespeicher-Client 106 mit der ursprünglichen Konsistenzmenge von LIDs (oder einer anderen Menge) versorgen, und die Ablagespeicherschicht 130 kann Ablagespeicheranforderungen des Ablagespeicher-Clients 106 zu der Arbeitsmenge von LIDs umlenken.
  • Schritt 1720 kann Ausführen von Ablagespeicheroperationen innerhalb der Arbeitsmenge von LIDs umfassen. Die Ablagespeicheroperationen können Speichern eines oder mehrerer Datensegmente auf dem Ablagespeichermedium 140 umfassen, die konfiguriert sind, die Datei zu modifizieren (z. B. Datensegmente, die konfiguriert sind, ein oder mehrere ursprüngliche, nicht modifizierte Datensegmente der Datei zu modifizieren und/oder zu überschreiben). Die Ablagespeicheroperationen können ferner Binden einer oder mehrerer der LIDs in der Arbeitsmenge von LIDs an aktualisierte Ablagespeicherorte und/oder Adressen umfassen, wie hier offenbart. LIDs innerhalb der Arbeitsmenge, die zu nicht modifizierten Daten der Datei gehören, können an die ursprünglichen Ablagespeicheradressen gebunden bleiben (an dieselben Ablagespeicheradressen gebunden bleiben wie die ursprüngliche Konsistenzmenge von LIDs).
  • Schritt 1722 kann Ermöglichen von Zugriff auf die ursprüngliche, nicht modifizierte Version der Datei und entsprechenden Dateidaten durch Referenzieren der ursprünglichen Konsistenzmenge von LIDs umfassen, wie vorstehend offenbart. Schritt 1722 kann ferner Ermöglichen für andere Clients umfassen, die Datei zu öffnen durch, unter anderem, Erzeugen eines weiteren Klons der Datei-LIDs wie in Schritt 1710.
  • Schritt 1730 kann Zusammenfassen der Arbeitsmenge von LIDs in einen weiteren LID-Bereich wie z. B. die ursprüngliche Konsistenzmenge von LIDs umfassen, wie vorstehend offenbart. Schritt 1730 kann in Reaktion darauf, dass der Client die Datei schließt, ausgeführt werden. Schritt 1730 kann ferner Identifizieren und Auflösen von Zusammenfassungskonflikten umfassen, wie vorstehend offenbart. Auflösen von Zusammenfassungskonflikten kann Vorrang vor Modifikationen, die in einem oder mehreren der geklonten LID-Bereiche vorgenommen wurden, umfassen. In einigen Ausführungsformen können beispielsweise Modifikationen, die der Arbeitsmenge von LIDs entsprechen, die an dem Schritt 1710 erzeugt wird, Vorrang haben vor Modifikationen, die mit Referenz auf eine andere Arbeitsmenge von LIDs eines anderen Ablagespeicher-Client 106 vorgenommen wurden, oder von diesen außer Kraft gesetzt werden. Auflösen von Zusammenfassungskonflikten kann Spalten des LID-Bereichs, um einen ersten LID-Bereich, der Modifikationen entspricht, die mit Referenz auf die Arbeitsmenge von LIDs vorgenommen wurden, und einen weiteren LID-Bereich, der in Konflikt stehenden Modifikationen entspricht, die durch einen weiteren Ablagespeicher-Client in einer anderen Arbeitsmenge von LIDs vorgenommen wurden, zu erzeugen, umfassen. Zusammenfassen der LID-Bereiche kann ferner Speichern einer persistenten Meldung 366 auf dem Ablagespeichermedium 140, Ermöglichen von Zugriff auf Daten, die auf dem Ablagespeichermedium 140 gespeichert sind, durch eine logische Schnittstelle, die mit einem kontextabhängigen Format der Daten inkonsistent ist, und/oder Neuschreiben der Daten in einem aktualisierten kontextabhängigen Format umfassen, wie vorstehend offenbart.
  • Diese Offenbarung wurde mit Bezug auf verschiedene beispielhafte Ausführungsformen gemacht. Fachleute werden jedoch erkennen, dass Änderungen und Modifikationen an den beispielhaften Ausführungsformen vorgenommen werden können, ohne vom Schutzbereich der vorliegenden Offenbarung abzuweichen. Beispielsweise können sowohl verschiedene Operationsschritte als auch Komponenten zum Ausführen der Operationsschritte auf alternative Arten, die von der speziellen Anwendung abhängig sind oder unter Berücksichtigung irgendeiner Zahl von Kostenfunktionen, die dem Betrieb des Systems zugeordnet sind, (z. B. kann einer oder mehrere der Schritte gelöscht, modifiziert oder mit anderen Schritten kombiniert werden) implementiert sein. Deshalb ist diese Offenbarung in einem erläuternden anstatt in einem einschränkenden Sinn zu betrachten, und alle solchen Modifikationen sollen in ihren Schutzbereich aufgenommen sein. Ähnlich sind Nutzen, andere Vorteile und Lösungen für Probleme vorstehend mit Bezug auf verschiedene Ausführungsformen beschrieben worden. Nutzen, Vorteile und Lösungen für Probleme und irgendwelche Element(e), die bewirken können, dass Nutzen, Vorteil oder Lösungen auftreten oder deutlicher werden, sollen jedoch nicht als ein kritisches, erforderliches oder wesentliches Merkmal oder Element gedeutet werden. Wie hier verwendet sollen die Begriffe ”umfasst”, ”umfassen” und irgendwelche anderen Variationen davon eine nicht ausschließende Inklusion abdecken, so dass ein Prozess, ein Verfahren, ein Gegenstand oder eine Vorrichtung, der/die/das eine Liste von Elementen umfasst, nicht nur diejenigen Elemente enthält, sondern andere Elemente enthalten kann, die nicht ausdrücklich aufgelistet sind oder für ein/e/n solchen Prozess, Verfahren, System, Gegenstand oder Vorrichtung inhärent sind. Wie hier verwendet sollen die Begriffe ”gekoppelt”, ”koppeln” und irgendwelche anderen Variationen davon eine physikalische Verbindung, eine elektrische Verbindung, eine magnetische Verbindung, eine optische Verbindung, eine kommunikative Verbindung, eine funktionale Verbindung und/oder irgendeine andere Verbindung abdecken.
  • Zusätzlich, wie durch einen normalen Fachmann erkannt wird, können Prinzipien der vorliegenden Offenbarung in einem Computerprogrammprodukt auf einem maschinenlesbaren Ablagespeichermedium, das maschinenlesbare Programmcodemittel, die in das Ablagespeichermedium integriert sind, widergespiegelt sein. Jedes greifbare, nichtflüchtige maschinenlesbare Ablagespeichermedium kann benutzt werden, das magnetische Ablagespeichervorrichtungen (Festplatten, Disketten und dergleichen), optische Ablagespeichervorrichtungen (CD-ROMs, DVDs, Blue-Ray-Discs und dergleichen), Flash-Speicher und/oder dergleichen einschließt. Diese Computerprogrammbefehle können auf einen Allzweckcomputer, Spezialcomputer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um eine Maschine zu produzieren, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung ablaufen, Mittel zum Implementieren der spezifizierten Funktionen erzeugen. Diese Computerprogrammbefehle können auch in einem maschinenlesbaren Speicher gespeichert sein, der einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine spezielle Weise zu funktionieren, so dass die Befehle, die in dem maschinenlesbaren Speicher gespeichert sind, ein Produkt produzieren, das Implementieren von Mitteln, die die spezifizierte Funktion implementieren, enthält. Die Computerprogrammbefehle können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um zu bewirken, dass eine Reihe von Operationsschritten auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, um einen computerimplementierten Prozess zu produzieren, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ablaufen, Schritte zum Implementieren der spezifizierten Funktionen bereitstellen.
  • Obwohl die Prinzipien dieser Offenbarung in verschiedenen Ausführungsformen gezeigt worden sind, können viele Modifikationen der Struktur, Anordnungen, Proportionen, Elementen, Materialien und Komponenten, die speziell für eine spezifische Umgebung und Arbeitsanforderungen angepasst sind, verwendet werden, ohne von den Prinzipien und dem Schutzbereich der vorliegenden Offenbarung abzuweichen. Diese und andere Änderungen oder Modifikationen sollen in dem Schutzbereich der vorliegenden Offenbarung enthalten sein.

Claims (22)

  1. Verfahren, das Folgendes umfasst: Zuordnen von Daten, die auf einem oder mehreren Ablagespeicherorten einer AblageAblagespeichervorrichtung gespeichert sind, zu logischen Kennungen eines Adressraums; Bereitstellen einer Arbeitsmenge logischer Kennungen in Reaktion auf eine Anforderung eines Ablagespeicher-Clients, auf Daten zuzugreifen, so dass die Arbeitsmenge logischer Kennungen und eine Konsistenzmenge logischer Kennungen demselben/denselben einen oder mehreren Ablagespeicherorten zugeordnet sind; und Implementieren einer Ablagespeicheroperation, die konfiguriert ist, wenigstens einen Abschnitt der Daten zu modifizieren, wobei Implementieren der Ablagespeicheroperation Aktualisieren von Ablagespeicherortzuordnungen einer oder mehrerer der logischen Kennungen in der Arbeitsmenge und Konservieren der Zuordnungen zwischen der Konsistenzmenge logischer Kennungen und dem einen oder den mehreren Ablagespeicherorten umfasst.
  2. Verfahren nach Anspruch 1, wobei die Ablagespeicheroperation Anhängen von Daten an ein Log auf der AblageAblagespeichervorrichtung umfasst, wobei das Verfahren ferner Zuordnen der angehängten Daten zu einer logischen Kennung der Arbeitsmenge logischer Kennungen umfasst.
  3. Verfahren nach Anspruch 1, wobei die Ablagespeicheroperation Schreiben eines Datensegments auf die Ablagespeichervorrichtung umfasst, das konfiguriert ist, ein ursprüngliches Datensegment der Daten, die auf der Ablagespeichervorrichtung gespeichert sind, zu modifizieren, wobei das Verfahren ferner Folgendes umfasst: Ermöglichen von Zugriff auf das ursprüngliche Datensegment durch Referenz auf eine logische Kennung in der Konsistenzmenge der logischen Kennungen; und Zuordnen des Datensegments, das konfiguriert ist, das ursprüngliche Datensegment zu modifizieren, durch Verwenden einer logischen Kennung in der Arbeitsmenge logischer Kennungen.
  4. Verfahren nach Anspruch 1, wobei die Ablagespeicheroperation Anhängen von Daten an eine Datei umfasst, wobei das Verfahren ferner Folgendes umfasst: Zuweisen einer oder mehrerer logischer Kennungen zu der Arbeitsmenge logischer Kennungen; und Ermöglichen von Zugriff auf die angehängten Daten durch Referenz auf die eine oder mehreren zusätzlichen logischen Kennungen.
  5. Verfahren nach Anspruch 1, wobei die Ablagespeicheroperation konfiguriert ist, eines aus mehreren ursprünglichen Datensegmenten einer Datei zu modifizieren, wobei das Verfahren ferner Folgendes umfasst: Referenzieren der mehreren ursprünglichen Datensegmente durch Verwenden logischer Kennungen aus der Konsistenzmenge logischer Kennungen; Referenzieren der ursprünglichen Datensegmente, die nicht durch die Ablagespeicheroperation modifiziert sind, durch Verwenden logischer Kennungen aus der Arbeitsmenge logischer Kennungen; und Referenzieren eines Datensegments, das der Ablagespeicheroperation entspricht, durch eine logische Kennung aus der Arbeitsmenge logischer Kennungen.
  6. Verfahren nach Anspruch 1, das ferner Zuweisen der Arbeitsmenge logischer Kennungen durch Reservieren von Ablagespeicherkapazität auf der AblageAblagespeichervorrichtung für Ablagespeicheroperationen, die durch den Ablagespeicher-Client ausgeführt werden, umfasst.
  7. Verfahren nach Anspruch 1, das ferner das Ermöglichen von Zugriff auf die durch die Ablagespeicheroperation nicht modifizierten Daten in Reaktion auf eine Anforderung eines anderen Ablagespeicher-Clients umfasst.
  8. Verfahren nach Anspruch 1, das ferner Zuweisen einer zusätzlichen Arbeitsmenge des logischen Kennungsraums in Reaktion auf eine Anforderung eines weiteren Ablagespeicher-Clients, eine Datei zu öffnen, die den Daten entspricht, umfasst, so dass die Konsistenzmenge logischer Kennungen und die zusätzliche Arbeitsmenge logischer Kennungen denselben Ablagespeicherorten zugeordnet sind, und wobei die Zuordnungen nicht durch die Ablagespeicheroperation modifiziert sind.
  9. Verfahren nach Anspruch 1, wobei die Daten auf der AblageAblagespeichervorrichtung in Zuordnung zu persistenten Metadaten, die konfiguriert sind, die Daten jeweiligen logischen Kennungen zuzuordnen, gespeichert sind und wobei das Verfahren ferner das Anhängen persistenter Metadaten, die konfiguriert sind, die Daten logischen Kennungen der Konsistenzmenge und der Arbeitsmenge zuzuordnen, an die AblageAblagespeichervorrichtung umfasst.
  10. Verfahren nach Anspruch 1, das ferner Zusammenfassen der Konsistenzmenge logischer Kennungen mit der Arbeitsmenge logischer Kennungen in Reaktion auf eine Anforderung des Ablagespeicher-Clients, eine Datei, die den Daten entspricht, zu schließen, umfasst, wobei das Zusammenfassen das Integrieren von Modifikationen an der Datei, die mit Referenz auf die Arbeitsmenge logischer Kennungen durch den Ablagespeicher-Client vorgenommen werden, in die Konsistenzmenge logischer Kennungen, umfasst.
  11. Verfahren nach Anspruch 1, das ferner Binden der Arbeitsmenge logischer Kennungen an Ablagespeicheradressen des einen oder der mehreren Ablagespeicherorte umfasst.
  12. Einrichtung, die Folgendes umfasst: ein Umsetzungsmodul, das konfiguriert ist, eine Datei, die Daten entspricht, die auf einer AblageAblagespeichervorrichtung gespeichert sind, durch Binden der Daten der Datei sowohl an eine ursprüngliche Menge logischer Kennungen als auch an eine Klonmenge logischer Kennungen zu klonen; eine Ablagespeicherschicht, die konfiguriert ist, die Dateidaten, die in der Ablagespeichervorrichtung gespeichert sind, und Bindungen zwischen den konservierten Dateidaten und der ursprünglichen Menge logischer Kennungen zu konservieren, während sie Ablagespeicheroperationen ausführt, die konfiguriert sind, die Datei mit Referenz auf die logischen Klonkennungen zu ändern; und eine Schnittstelle, die konfiguriert ist, Zugriff auf die konservierten Dateidaten durch die ursprünglichen logischen Kennungen nach dem Ausführen der Ablagespeicheroperationen zu ermöglichen.
  13. Einrichtung nach Anspruch 12, wobei das Umsetzungsmodul konfiguriert ist, die Datei in Reaktion auf eine Anforderung, die Datei zu öffnen, zu klonen und wobei die Schnittstelle konfiguriert ist, Zugriff auf die konservierten Dateidaten durch die ursprüngliche Menge logischer Kennungen in Reaktion auf eine andere Anforderung, die zu der Datei gehört, zu ermöglichen.
  14. Einrichtung nach Anspruch 13, wobei das Umsetzungsmodul konfiguriert ist, Ablagespeicheroperationen, die zu der geöffneten Datei gehören, zu der geklonten Menge logischer Kennungen umzulenken.
  15. Einrichtung nach Anspruch 12, wobei die Ablagespeicheroperationen konfiguriert sind, ein Datensegment aus der Datei zu entfernen, und wobei die Ablagespeicherschicht konfiguriert ist, eine Zuordnung zwischen dem Datensegment und einer logischen Kennung in der geklonten Menge logischer Kennungen zu entfernen und eine Zuordnung zwischen dem Datensegment und einer logischen Kennung in der ursprünglichen Menge logischer Kennungen zu konservieren.
  16. Einrichtung nach Anspruch 12, wobei die Ablagespeicheroperationen konfiguriert sind, existierende Daten der Datei zu ändern, und wobei die Ablagespeicherschicht konfiguriert ist, die geänderten Daten der Datei unter Verwendung einer oder mehrerer logischer Kennungen aus der geklonten Menge logischer Kennungen zu referenzieren und entsprechende konservierte Dateidaten unter Verwendung logischer Kennungen aus der ursprünglichen Menge logischer Kennungen zu referenzieren.
  17. Einrichtung nach Anspruch 12, wobei das Umsetzungsmodul ferner konfiguriert ist, die geklonten logischen Kennungen in die ursprünglichen logischen Kennungen durch Integrieren von Dateimodifikationen der Ablagespeicheroperationen, die mit Referenz auf die logischen Kennungen aus der geklonten Menge logischer Kennungen ausgeführt sind, in die ursprüngliche Menge logischer Kennungen zu falten.
  18. Einrichtung nach Anspruch 17, wobei die Dateimodifikationen Speichern eines Datensegments der Datei auf der Ablagespeichervorrichtung umfassen und wobei Integrieren der Dateimodifikationen Speichern persistenter Metadaten auf der AblageAblagespeichervorrichtung, um das Datensegment einer aus den logischen Kennungen der ursprünglichen Menge logischer Kennungen zuzuordnen, umfasst.
  19. Einrichtung nach Anspruch 17, wobei die Dateimodifikationen Erweitern der Datei umfassen und wobei Integrieren der Dateimodifikationen Hinzufügen logischer Kennungen zu der Menge ursprünglicher logischer Kennungen, um Daten der erweiterten Datei zu referenzieren, umfasst.
  20. System, das Folgendes umfasst: Mittel zum Erzeugen einer logischen Kopie einer Datei in Reaktion auf eine Anforderung, die Datei zu öffnen, wobei Erzeugen der logischen Kopie Referenzieren von Daten der Datei durch zwei unterschiedliche Mengen logischer Adressen umfasst; Mittel zum Modifizieren der Datei mit Referenz auf die erste aus den zwei unterschiedlichen Mengen logischer Adressen; und Mittel zum Ermöglichen von Zugriff auf eine ursprüngliche Version der Datei durch eine zweite aus den zwei unterschiedlichen Mengen logischer Adressen nach dem Modifizieren der Datei mit Referenz auf die erste Menge logischer Adressen.
  21. System nach Anspruch 20, das ferner Mittel zum Zusammenfassen der zwei unterschiedlichen Mengen logischer Adressen durch Aktualisieren der zweiten Menge logischer Adressen, um Dateimodifikationen zu referenzieren, die innerhalb der ersten Menge logischer Adressen implementiert sind, in Übereinstimmung mit einer Zusammenfassungsstrategie umfasst.
  22. System nach Anspruch 21, wobei die Mittel zum Modifizieren der Datei Mittel zum Anhängen modifizierter Daten der Datei an ein Log, das auf einer AblageAblagespeichervorrichtung gespeichert ist, umfassen und wobei die Mittel zum Zusammenfassen der zwei unterschiedlichen Mengen logischer Adressen Mittel zum Anhängen einer persistenten Meldung, die konfiguriert ist, eine logische Adresse aus der zweiten Mengen logischer Adressen den modifizierten Daten zuzuordnen, an das Log umfassen.
DE112014003076.7T 2013-07-26 2014-07-23 Systeme und Verfahren für Ablagespeicherkonsistenz Withdrawn DE112014003076T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361858812P 2013-07-26 2013-07-26
US61/858,812 2013-07-26
US14/303,419 US20150032982A1 (en) 2013-07-26 2014-06-12 Systems and methods for storage consistency
US14/303,419 2014-06-12
PCT/US2014/047895 WO2015013452A1 (en) 2013-07-26 2014-07-23 Systems and methods for storage consistency

Publications (1)

Publication Number Publication Date
DE112014003076T5 true DE112014003076T5 (de) 2016-03-17

Family

ID=52391499

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014003076.7T Withdrawn DE112014003076T5 (de) 2013-07-26 2014-07-23 Systeme und Verfahren für Ablagespeicherkonsistenz

Country Status (6)

Country Link
US (1) US20150032982A1 (de)
JP (1) JP6290405B2 (de)
KR (1) KR101718670B1 (de)
DE (1) DE112014003076T5 (de)
TW (1) TWI659318B (de)
WO (1) WO2015013452A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3161685B1 (de) * 2014-06-24 2022-06-08 Google LLC Verarbeitung zur mutationen für eine entfernte datenbank
WO2017092016A1 (en) * 2015-12-03 2017-06-08 Huawei Technologies Co., Ltd. A method a source storage device to send a source file and a clone file of the source file to a backup storage device, a source storage device and a backup storage device
KR102615151B1 (ko) 2016-06-23 2023-12-18 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 시스템
CN107704466B (zh) * 2016-08-09 2020-12-11 上海川源信息科技有限公司 数据储存系统
TWI610219B (zh) * 2016-08-09 2018-01-01 捷鼎國際股份有限公司 資料儲存系統
KR20180091296A (ko) * 2017-02-06 2018-08-16 삼성전자주식회사 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US11132353B2 (en) * 2018-04-10 2021-09-28 Intel Corporation Network component, network switch, central office, base station, data storage, method and apparatus for managing data, computer program, machine readable storage, and machine readable medium
CN110413444B (zh) * 2018-04-27 2023-05-09 伊姆西Ip控股有限责任公司 实现存储卷的一致性组的快照集
US10832768B2 (en) 2018-07-03 2020-11-10 Micron Technology, Inc. Data storage based on data polarity
TWI687822B (zh) * 2018-11-29 2020-03-11 宏碁股份有限公司 日誌文件儲存及讀取的方法及裝置
CN110351386B (zh) * 2019-07-23 2022-09-16 华云工业互联网有限公司 一种不同副本间的增量同步方法及装置
US11468017B2 (en) * 2020-07-24 2022-10-11 Capital Thought Holdings L.L.C. Data storage system and method
US11636069B2 (en) * 2020-07-24 2023-04-25 Capital Thought Holdings L.L.C. Data storage system and method
CN113239001A (zh) * 2021-05-21 2021-08-10 珠海金山网络游戏科技有限公司 一种数据存储方法及装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05197605A (ja) * 1991-10-03 1993-08-06 Mitsubishi Electric Corp ファイルシステム
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6092155A (en) * 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
US6256637B1 (en) * 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US7039773B2 (en) * 2003-04-29 2006-05-02 Oracle International Corporation Method and mechanism for efficient implementation of ordered records
US7664791B1 (en) * 2005-10-26 2010-02-16 Netapp, Inc. Concurrent creation of persistent point-in-time images of multiple independent file systems
US7651593B2 (en) * 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US7870172B1 (en) * 2005-12-22 2011-01-11 Network Appliance, Inc. File system having a hybrid file system format
US7568078B2 (en) * 2006-07-26 2009-07-28 Cisco Technology, Inc. Epoch-based MUD logging
US8706968B2 (en) * 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8046550B2 (en) * 2008-07-14 2011-10-25 Quest Software, Inc. Systems and methods for performing backup operations of virtual machine files
JP5999645B2 (ja) * 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US8433865B2 (en) * 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8725934B2 (en) * 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
JP5948340B2 (ja) * 2010-11-22 2016-07-06 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データストレージシステムにおける、ファイルのクローニング及びデクローニング
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US8812450B1 (en) * 2011-04-29 2014-08-19 Netapp, Inc. Systems and methods for instantaneous cloning
US9274937B2 (en) * 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
WO2013102227A1 (en) * 2011-12-29 2013-07-04 Vmware, Inc. N-way synchronization of desktop images
US9116819B2 (en) * 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
GB2509057A (en) * 2012-12-18 2014-06-25 Ibm Predictive point-in-time copy for storage systems

Also Published As

Publication number Publication date
JP2016528618A (ja) 2016-09-15
US20150032982A1 (en) 2015-01-29
TW201516720A (zh) 2015-05-01
WO2015013452A1 (en) 2015-01-29
KR20160031012A (ko) 2016-03-21
JP6290405B2 (ja) 2018-03-07
KR101718670B1 (ko) 2017-03-21
TWI659318B (zh) 2019-05-11

Similar Documents

Publication Publication Date Title
DE112014003076T5 (de) Systeme und Verfahren für Ablagespeicherkonsistenz
DE112014003152T5 (de) Systeme und Verfahren für atomare Speicheroperationen
US10102075B2 (en) Systems and methods for storage collision management
US10019320B2 (en) Systems and methods for distributed atomic storage operations
US10380026B2 (en) Generalized storage virtualization interface
US9342256B2 (en) Epoch based storage management for a storage device
US10102144B2 (en) Systems, methods and interfaces for data virtualization
US10558561B2 (en) Systems and methods for storage metadata management
US9875180B2 (en) Systems and methods for managing storage compression operations
JP6046260B2 (ja) MapReduceシステムのためのテーブル・フォーマット
KR101754926B1 (ko) 로그 레코드 관리
US10223208B2 (en) Annotated atomic write
US8620865B2 (en) System and method for providing a unified storage system that supports file/object duality
KR20170129959A (ko) 인 플레이스 스냅샷들
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
CN105912277A (zh) 在虚拟机镜像中实现文件系统单写日志的方法
Wei et al. Silver: a scalable, distributed, multi-versioning, always growing (ag) file system
WO2015112634A1 (en) Systems, methods and interfaces for data virtualization

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0009460000

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0009460000

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US

Free format text: FORMER OWNER: LONGITUDE ENTERPRISE FLASH S.A.R.L., LUXEMBOURG, LU

R082 Change of representative

Representative=s name: VOSSIUS & PARTNER PATENTANWAELTE RECHTSANWAELT, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNS GERMANY, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0012080000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee