DE112014003076T5 - Systeme und Verfahren für Ablagespeicherkonsistenz - Google Patents
Systeme und Verfahren für Ablagespeicherkonsistenz Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-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
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 Computersystems100 , das eine Ablagespeicherschicht130 umfasst, die konfiguriert ist, Ablagespeicherdienste für einen oder mehrere Ablagespeicher-Clients106 bereitzustellen. Die Ablagespeicherschicht130 kann konfiguriert sein, Öffnen-bis-Schließen-Dateidienste bereitzustellen, wie hier in mehr Einzelheiten offenbart ist. Das Computersystem100 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 Computersystem100 mehrere Computervorrichtungen enthalten, wie z. B. einen Cluster aus Server-Computervorrichtungen. Das Computersystem100 kann Verarbeitungsbetriebsmittel101 , flüchtige Speicherbetriebsmittel102 (z. B. Direktzugriffsspeicher (RAM)), nichtflüchtige Ablagespeicherbetriebsmittel103 und eine Kommunikationsschnittstelle104 umfassen. Die Verarbeitungsbetriebsmittel101 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 Ablagespeicherbetriebsmittel103 können ein nichtflüchtiges maschinenlesbares Ablagespeichermedium wie z. B. eine Magnetfestplatte, ein Festkörperspeichermedium, ein optisches Speichermedium und/oder dergleichen umfassen. Die Kommunikationsschnittstelle104 kann konfiguriert sein, das Computersystem100 kommunikativ mit einem Netz105 zu koppeln. Das Netz105 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 Ablagespeicherschicht130 enthalten, die konfiguriert sein kann, Ablagespeicherdienste für einen oder mehrere Ablagespeicher-Clients106 bereitzustellen. Die Ablagespeicher-Clients106 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 Computersystem100 und/oder der Ablagespeicherschicht130 durch das Netz105 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 Ablagespeicherschicht130 als ausführbare Befehle verwirklicht, wie z. B. Computerprogrammcode, der auf einem persistenten, nichtflüchtigen Ablagespeichermedium wie z. B. den nichtflüchtigen Ablagespeicherbetriebsmitteln103 gespeichert sein kann. Die Befehle und/oder der Computerprogrammcode können zum Ausführen durch die Verarbeitungsbetriebsmittel101 konfiguriert sein. Alternativ oder zusätzlich können Abschnitte der Ablagespeicherschicht130 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 Ablagespeichermedium140 auszuführen. Das Ablagespeichermedium140 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 Ablagespeichermedium140 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 Ablagespeichermediums140 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 Ablagespeicherschicht130 im Kontext von nichtflüchtigen FestkörperAblagespeichervorrichtungen140 offenbart sind, die Ablagespeicherschicht130 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 Ablagespeichermedium140 kann dem Speicher der Verarbeitungsbetriebsmittel101 , wie z. B. einem CPU-Cache (z. B. L1-, L2-, L3-Cache, usw.), Graphikspeicher und/oder dergleichen, entsprechen. In einigen Ausführungsformen ist das Ablagespeichermedium140 mit der Ablagespeicherschicht130 durch Verwenden einer Zusammenschaltung127 kommunikativ gekoppelt. Die Zusammenschaltung127 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 Ablagespeichermedium140 eine entfernte AblageAblagespeichervorrichtung sein, die mit der Ablagespeicherschicht130 durch das Netz105 (und/oder eine andere Kommunikationsschnittstelle, wie z. B. ein Ablagespeicherbereichsnetz (SAN), ein virtuelles Ablagespeicherbereichsnetz (VSAN) und/oder dergleichen) kommunikativ gekoppelt ist. Die Zusammenschaltung127 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 Ablagespeichermedium140 unter anderem durch Verwenden der Ablagespeichersteuereinheit139 zu managen. Die Ablagespeichersteuereinheit139 kann Software und/oder Hardwarekomponenten umfassen, die einen oder mehrere Treiber und/oder andere Software-Module, die auf dem Computersystem100 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 Ablagespeichermedium140 kann auf einer Ablagespeichervorrichtung141 verwirklicht sein. Abschnitte der Ablagespeicherschicht130 (z. B. die Ablagespeichersteuereinheit139 ) können als Hardware und/oder Software-Komponenten (z. B. Firmware) der Ablagespeichervorrichtung141 implementiert sein. - Die Ablagespeichersteuereinheit
139 kann konfiguriert sein, Ablagespeicheroperationen an speziellen Ablagespeicherorten des Ablagespeichermediums140 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 Speicheradressraums144 des Ablagespeichermediums140 adressierbar sein. Ablagespeicheradressen können physikalischen Adressen, Medienadressen, Backend-Adressen, Adressversatz und/oder dergleichen entsprechen. Ablagespeicheradressen können jedem/jeder geeigneten Ablagespeicheradressraum144 , Ablagespeicheradressschema und/oder Anordnung von Ablagespeicherorten entsprechen. - Die Ablagespeicherschicht
130 kann eine Schnittstelle131 umfassen, durch die Ablagespeicher-Clients106 auf Ablagespeicherdienste, die durch die Ablagespeicherschicht130 bereitgestellt sind, zugreifen können. Die Ablagespeicherschnittstelle131 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-Clients106 die Ablagespeicherbetriebsmittel der Ablagespeicherschicht130 referenzieren können. Eine Ablagespeicherschnittstelle kann einem logischen Adressraum132 entsprechen. Der logische Adressraum132 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 Adressraum132 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 Adressraum132 ”schlank zugewiesen” sein. Wie hier verwendet bezieht sich ein schlank zugewiesener logischer Adressraum132 auf einen logischen Adressraum132 , der eine logische Kapazität aufweist, die die physikalische Ablagespeicherkapazität der zugrundeliegenden Ablagespeicherbetriebsmittel übersteigt (z. B. die Ablagespeicherkapazität des Ablagespeichermediums140 übersteigt). In einer Ausführungsform ist die Ablagespeicherschicht130 konfiguriert, einen logischen 64-Bit-Adressraum132 (z. B. einen logischen Adressraum, der 2^26 eindeutige LIDs umfasst) bereitzustellen, was die logische Ablagespeicherkapazität des Ablagespeichermediums140 übersteigen kann. Der große schlank zugewiesene logische Adressraum132 kann es ermöglichen, dass Ablagespeicher-Clients106 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 derVereinigten Staaten Nr. 13/865,153 - Das Umsetzungsmodul
134 der Ablagespeicherschicht130 kann konfiguriert sein, LIDs des logischen Adressraums132 auf Ablagespeicherbetriebsmittel (z. B. Daten, die innerhalb des Ablagespeicheradressraums144 des Ablagespeichermediums140 gespeichert sind) abzubilden. Der logische Adressraum132 kann von den Backend-Ablagespeicherbetriebsmitteln (z. B. dem Ablagespeichermedium140 ) unabhängig sein; dementsprechend können keine eingestellten oder vorbestimmten Abbildungen zwischen LIDs des logischen Adressraums132 und den Ablagespeicheradressen des Ablagespeicheradressraums144 vorhanden sein. In einigen Ausführungsformen ist der logische Adressraum132 dünn, schlank zugewiesen und/oder im Überfluss zugewiesen, so dass die Größe des logischen Adressraums132 von dem Ablagespeicheradressraum144 des Ablagespeichermediums140 verschieden ist. - Die Ablagespeicherschicht
130 kann konfiguriert sein, Ablagespeichermetadaten135 zu pflegen, die zu Ablagespeicheroperationen gehören, die auf dem Ablagespeichermedium140 ausgeführt werden. Die Ablagespeichermetadaten135 können eine Weiterleitungsabbildung, die Jede-auf-jede-Abbildungen zwischen LIDs des logischen Adressraums132 und Ablagespeicheradressen innerhalb des Ablagespeicheradressraums144 umfasst, eine Umkehrabbildung, die zu den Inhalten der Ablagespeicherorte des Ablagespeichermediums140 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 Ablagespeichermetadaten135 können innerhalb der flüchtigen Speicherbetriebsmittel102 des Computersystems100 gepflegt werden. Alternativ oder zusätzlich können Abschnitte der Ablagespeichermetadaten135 in nichtflüchtigen Ablagespeicherbetriebsmitteln103 und/oder dem Ablagespeichermedium140 gespeichert sein. -
1B bildet eine Ausführungsform von Jede-auf-jede-Abbildungen150 zwischen LIDs des logischen Adressraums132 und Backend-Kennungen (z. B. Ablagespeicheradressen) innerhalb des Ablagespeicheradressraums144 ab. Die Jede-auf-jede-Abbildungen150 können in einer oder mehreren Datenstrukturen der Ablagespeichermetadaten135 gepflegt werden. Wie in1B dargestellt, kann das Umsetzungsmodul134 konfiguriert sein, jede Ablagespeicherbetriebsmittelkennung (jede LID) auf jeden Backend-Ablagespeicherort abzubilden. Wie ferner dargestellt ist, kann der logische Adressraum132 anders dimensioniert sein als der zugrunde liegende Ablagespeicheradressraum144 . In der Ausführungsform von1B kann der logische Adressraum132 schlank zugewiesen sein und kann als solcher einen größeren Bereich von LIDs umfassen als der Bereich der Ablagespeicheradressen in dem Ablagespeicheradressraum144 . - Wie vorstehend offenbart können Ablagespeicher-Clients
106 Ablagespeicherbetriebsmittel durch die LIDs des logischen Adressraums132 referenzieren. Dementsprechend kann der logische Adressraum132 einer logischen Schnittstelle152 der Ablagespeicherbetriebsmittel entsprechen, und die Abbildungen auf spezielle Ablagespeicheradressen innerhalb des Ablagespeicheradressraums144 kann einer Backend-Schnittstelle154 der Ablagespeicherbetriebsmittel entsprechen. - Die Ablagespeicherschicht
130 kann konfiguriert sein, die Jede-auf-jede-Abbildungen150 zwischen der logischen Schnittstelle152 und der Backend-Schnittstelle154 in einer Vorwärtsabbildung160 zu pflegen. Die Vorwärtsabbildung160 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ärtsabbildung160 kann Einträge162 umfassen, die LIDs entsprechen, die zum Verwenden, um Daten, die auf dem Ablagespeichermedium140 gespeichert sind, zu referenzieren, zugewiesen worden sind. Die Einträge162 der Vorwärtsabbildung160 können LIDs164A –D jeweiligen Ablagespeicheradressen166A –D innerhalb der Ablagespeicheradressraums144 zuordnen. Die Vorwärtsabbildung160 kann dünn besetzt sein, und kann als solche Einträge weglassen, die LIDs entsprechen, die aktuell nicht durch einen Ablagespeicher-Client106 zugewiesen sind und/oder aktuell nicht verwendet werden, um gültige Daten, die auf dem Ablagespeichermedium140 gespeichert sind, zu referenzieren. In einigen Ausführungsformen umfasst die Vorwärtsabbildung160 eine bereichscodierte Datenstruktur, so dass einer oder mehrere aus den Einträgen162 mehreren LIDs entsprechen kann (z. B. einem Bereich, einer Spanne und/oder Menge von LIDs). In der Ausführungsform von1B enthält die Vorwärtsabbildung160 einen Eintrag162 , der einem Bereich von LIDs164A entspricht, die auf einen entsprechenden Bereich von Ablagespeicheradressen166A abgebildet sind. Die Einträge162 können durch LIDs indiziert sein. In der Ausführungsform von1B sind die Einträge162 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 Ablagespeichermedium140 ein Festkörperablagespeicher-Array115 umfassen, das mehrere Festkörperablagespeicherelemente116A –Y umfasst. Wie hier verwendet bezieht sich ein Festkörperablagespeicher-Array (oder Ablagespeicher-Array)115 auf eine Menge aus zwei oder mehr unabhängigen Spalten118 . Eine Spalte118 kann ein oder mehrere Festkörperablagespeicherelemente116A –Y umfassen, die mit der Ablagespeicherschicht130 unter Verwendung, unter anderem, der Zusammenschaltung127 parallel gekoppelt sind. Zeilen117 des Arrays115 können physikalische Ablagespeichereinheiten der jeweiligen Spalten118 enthalten (Festkörperablagespeicherelemente116A –Y). Wie hier verwendet enthält ein Festkörperablagespeicherelement116A –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örperablagespeicherelemente116A –Y, die das Array115 umfassen, können zur unabhängigen Operation fähig sein. Dementsprechend kann ein erstes aus den Festkörperablagespeicherelementen116A fähig sein, eine erste Ablagespeicheroperation auszuführen, während ein zweites Festkörperablagespeicherelement116E eine andere Ablagespeicheroperation ausführt. Beispielsweise kann das Festkörperablagespeicherelement116A konfiguriert sein, Daten an einer ersten physikalischen Adresse zu lesen, während ein weiteres Festkörperablagespeicherelement116B 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-Array115 logische Ablagespeichereinheiten (Zeilen117 ) umfassen. Wie hier verwendet bezieht sich eine ”logische Ablagespeichereinheit” oder Zeile117 auf eine Kombination aus zwei oder mehr physikalischen Ablagespeichereinheiten, wobei sich jede physikalische Ablagespeichereinheit auf einer jeweiligen Spalte118 des Array115 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 Ablagespeicherelemente115 und/oder Bänke umfassen. Alternativ kann ein logischer Löschblock Löschblöcke innerhalb mehrerer unterschiedlicher Arrays115 umfassen und/oder kann mehrere Bänke von Festkörperablagespeicherelementen umspannen. - Bezug nehmend zurück zu
1A kann die Ablagespeicherschicht130 ferner ein Log-Ablagespeichermodul136 umfassen, das konfiguriert ist, Daten auf dem Ablagespeichermedium140 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 Ablagespeicheradressraums144 des Ablagespeichermediums140 . Daten in dem Ablagespeicher-Log können persistente Metadaten umfassen und/oder ihnen zugeordnet sein. Dementsprechend kann die Ablagespeicherschicht130 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 Paketformat110 von1D umfasst ein Datensegment112 und persistente Metadaten114 . Das Datensegment112 kann von jeder beliebigen Länge und/oder Größe sein. Die persistenten Metadaten114 können als ein oder mehrere Kopffelder des Datenpakets110 verwirklicht sein. Wie vorstehend offenbart können die persistenten Metadaten114 die logische Schnittstelle des Datensegments112 umfassen und können als solche die LID(s) enthalten, die dem Datensegment112 zugeordnet ist/sind. Obwohl1D ein Paketformat110 abbildet, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte Daten (z. B. das Datensegment112 ) kontextabhängigen Metadaten auf andere Arten zuordnen, die einen Index auf dem Ablagespeichermedium140 , einen Ablagespeicherabteilungsindex und/oder dergleichen enthalten, jedoch nicht darauf beschränkt sind. Datenpakete110 können Folgeinformationen113 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 Ablagespeichermediums140 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 Datenpaketen110 zu speichern. Die relative Position der Datenpakete110 innerhalb einer Ablagespeicherabteilung kann die Reihenfolge der Pakete innerhalb des Ablagespeicher-Logs bestimmen. Die Reihenfolge der Ablagespeicherabteilungen kann unter anderem durch Ablagespeicherabteilungsfolgeinformationen113 bestimmt werden. Ablagespeicherabteilungen können jeweiligen Folgeinformationen113 zu der Zeit zugewiesen werden, zu der die Ablagespeicherabteilung für den Gebraucht initialisiert (z. B. gelöscht), programmiert, geschlossen wird oder dergleichen. Die Ablagespeicherabteilungsfolgeinformationen113 können eine geordnete Folge der Ablagespeicherabteilungen innerhalb des Ablagespeicheradressraums144 bestimmen. Dementsprechend kann die relative Reihenfolge eines Datenpakets110 innerhalb des Ablagespeicher-Logs bestimmt werden durch: a) die relative Position des Datenpakets110 innerhalb einer speziellen Ablagespeicherabteilung und b) die Reihenfolge der Ablagespeicherabteilung relativ zu anderen Ablagespeicherabteilungen in dem Ablagespeicheradressraum144 . - In einigen Ausführungsformen kann die Ablagespeicherschicht
130 konfiguriert sein, ein asymmetrisches, einmal beschreibbares Ablagespeichermedium140 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 Ablagespeichermedium140 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 Ablagespeicherschicht130 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-Ablagespeichermoduls136 auszuführen. Das Log-Ablagespeichermodul136 kann konfiguriert sein, Daten an einem aktuellen Anhängepunkt innerhalb des Ablagespeicheradressraums144 auf eine Weise anzuhängen, die die relative Reihenfolge der Ablagespeicheroperationen, die durch die Ablagespeicherschicht130 ausgeführt werden, aufrechterhält, indem sie ein ”Ablagespeicher-Log” auf dem Ablagespeichermedium140 bildet.1E bildet eine Ausführungsform von Ablagespeicheroperationen lediglich zum Anhängen ab, die innerhalb des Ablagespeicheradressraums144 des Ablagespeichermediums140 ausgeführt werden. Wie vorstehend offenbart, umfasst der Ablagespeicheradressraum144 mehrere Ablagespeicherabteilungen170A –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 Ablagespeicherabteilungen170A –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ängepunkt180 innerhalb der physikalischen Adressraums144 zu speichern. In der Ausführungsform von1E können Daten an dem Anhängepunkt180 innerhalb des Ablagespeicherorts182 der Ablagespeicherabteilung170A angehängt werden und, wenn der Ablagespeicherort182 gefüllt ist, kann der Anhängepunkt180 zu dem nächsten verfügbaren Speicherort weitergehen181 . 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 Ablagespeicherabteilung170A –N beziehen, die sich in einem initialisierten (oder gelöschten) Zustand befindet. - In der Ausführungsform von
1E kann der logische Löschblock170B 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-Ablagespeichermodul136 nach dem Füllen des Ablagespeicherorts182 den nicht verfügbaren Ablagespeicherbereich170B überspringen und den Anhängepunkt180 zu der nächsten verfügbaren Ablagespeicherabteilung170C vorrücken. Das Log-Ablagespeichermodul136 kann konfiguriert sein, mit dem Anhängen von Daten bis zu den Ablagespeicherorten183 –185 fortzufahren, wobei an diesem Punkt der Anhängepunkt180 an einer nächsten verfügbaren Ablagespeicherabteilung170A –N fortfährt, wie vorstehend offenbart. - Nach dem Speichern von Daten auf dem ”letzten” Ablagespeicherort innerhalb des Ablagespeicheradressraums
144 (z. B. dem Ablagespeicherort N189 der Ablagespeicherabteilung170N ) kann das Log-Ablagespeichermodul136 den Anhängepunkt180 durch Zurückspringen zu der ersten Ablagespeicherabteilung170A (oder zu der nächsten verfügbaren Ablagespeicherabteilung, falls die Ablagespeicherabteilung170A nicht verfügbar ist) vorrücken. Dementsprechend kann das Log-Ablagespeichermodul136 den Ablagespeicheradressraum144 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 Ablagespeichermedium140 erzeugen. In der Ausführungsform von1E kann das Ablagespeicher-Log die geordnete Folge von Ablagespeicheroperationen umfassen, die durch Speichern von Datenpaketen (und/oder anderen Datenstrukturen) ab dem Anhängepunkt180 innerhalb des Ablagespeicheradressraums144 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 Ablagespeicherabteilungen170A –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 Ablagespeicherort191 gespeichert sein. Das Datensegment X0 kann in dem selbstbeschreibenden Paketformat110 , das vorstehend offenbart ist, gespeichert sein. Das Datensegment112 des Pakets110 kann das Datensegment X0 umfassen, und die persistenten Metadaten114 können die LID(s), die dem Datensegment zugeordnet sind (z. B. die LID A), umfassen. Ein Ablagespeicher-Client106 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 Ablagespeicherschicht130 kann diese Operation außerhalb des Orts durch Anhängen eines neuen Pakets110 , das das Datensegment X1 umfasst, an einem anderen Ablagespeicherort193 auf dem Ablagespeichermedium144 ausführen, anstatt das existierende Datenpaket110 am Ort an dem Ablagespeicherort191 zu modifizieren. Die Ablagespeicheroperation kann ferner das Aktualisieren der Ablagespeichermetadaten135 umfassen, um die LID A der Ablagespeicheradresse des Ablagespeicherorts193 zuzuordnen und/oder die obsoleten Daten X0 an dem Ablagespeicherort191 ungültig zu machen. Wie in1E dargestellt, kann das Aktualisieren der Ablagespeichermetadaten135 das Aktualisieren eines Eintrags der Vorwärtsabbildung160 umfassen, um die LID A164E 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 in1E 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 Ablagespeicherort191 , zum Beibehalten der obsoleten Version des Datensegments X0 auf dem Ablagespeichermedium140 . Die obsolete Version des Datensegments X0 kann nicht sofort von dem Ablagespeichermedium140 entfernt werden (z. B. gelöscht werden), da, wie vorstehend offenbart, Löschen des Datensegments X0 Löschen einer vollständigen Ablagespeicherabteilung170A und/oder Verlagern von gültigen Daten auf der Ablagespeicherabteilung170A 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 Ablagespeichermedium140 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 Ablagespeicherort191 , durch Verwenden der Ablagespeichermetadaten135 (z. B. der Vorwärtsabbildung160 ) identifizieren. Die Ablagespeicherschicht130 kann bestimmen, dass Ablagespeicherorte, die nicht gültigen Kennungen (LIDs) in der Vorwärtsabbildung160 zugeordnet sind, Daten umfassen, die nicht auf dem Ablagespeichermedium140 gehalten werden müssen. Alternativ oder zusätzlich kann die Ablagespeicherschicht130 andere Ablagespeichermetadaten135 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 Ablagespeicherschicht130 kann ferner konfiguriert sein, andere Medienmanagementoperationen auszuführen, die Auffrischen von Daten, die auf dem Ablagespeichermedium140 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 Ablagespeicherabteilung170A –N auf das Löschen der Ablagespeicherabteilung170A –N, so dass neue Daten darauf gespeichert/programmiert werden können. Wiederverwenden einer Ablagespeicherabteilung170A –N kann das Verlagern gültiger Daten auf der Ablagespeicherabteilung170A –N zu einem neuen Ablagespeicherort umfassen. Die Ablagespeicherschicht130 kann Ablagespeicherabteilungen170A –N zur Wiederverwendung identifizieren basierend auf einem oder mehreren Faktoren, die die Menge ungültiger Daten in der Ablagespeicherabteilung170A –N, die Menge gültiger Daten in der Ablagespeicherabteilung170A –N, Verschleißniveaus (z. B. die Anzahl von Programmier/Löschzyklen), Zeit seit die Ablagespeicherabteilung170A –N programmiert oder aufgefrischt wurde, und so weiter, enthalten können, jedoch nicht darauf beschränkt sind. - Die Ablagespeicherschicht
130 kann konfiguriert sein, die Ablagespeichermetadaten135 , die die Vorwärtsabbildung160 enthalten, durch Verwenden von Inhalten des Ablagespeicher-Logs auf dem Ablagespeichermedium140 zu rekonstruieren. In der Ausführungsform von1E kann die aktuelle Version der Daten, die der LID A zugeordnet sind, basierend auf der relativen Log-Reihenfolge der Datenpakete110 an Ablagespeicherorten191 bzw.193 bestimmt werden. Da das Datenpaket an dem Ablagespeicherort193 nach dem Datenpaket an dem Ablagespeicherort191 in dem Ablagespeicher-Log geordnet ist, kann die Ablagespeicherschicht130 bestimmen, dass der Ablagespeicherort193 die neueste, aktuelle Version der Daten, die der LID A entsprechen, enthält. Die Ablagespeicherschicht130 kann die Vorwärtsabbildung160 rekonstruieren, um die LID A dem Datenpaket an dem Ablagespeicherort193 (anstatt den obsoleten Daten an dem Ablagespeicherort191 ) zuzuordnen. -
2 bildet eine weitere Ausführungsform eines Systems200 ab, die eine Ablagespeicherschicht130 umfasst. Das Ablagespeichermedium140 kann mehrere unabhängige Bänke119A –N umfassen, von denen jede ein oder mehrere Ablagespeicher-Arrays115A –N umfassen kann. Jede unabhängige Bank119A –N kann über die Zusammenschaltung127 mit der Ablagespeichersteuereinheit139 gekoppelt sein. - Die Ablagespeichersteuereinheit
139 kann ein Ablagespeicheranforderungsempfängermodul231 umfassen, das konfiguriert ist, Ablagespeicheranforderungen von der Ablagespeicherschicht130 über einen Bus127 zu empfangen. Der Ablagespeicheranforderungsempfänger231 kann ferner konfiguriert sein, Daten in den/aus dem Speicher130 und/oder den Ablagespeicher-Clients106 zu übertragen. Dementsprechend kann das Ablagespeicheranforderungsempfängermodul231 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 Schreibmodul240 umfassen, das konfiguriert ist, Daten auf dem Ablagespeichermedium140 in Reaktion auf Anforderungen, die über das Anforderungsmodul231 empfangen werden, zu speichern. Die Ablagespeicheranforderungen können die logische Schnittstelle der Daten, die zu den Anforderungen gehören, umfassen und/oder referenzieren. Das Schreibmodul240 kann konfiguriert sein, die Daten in einem selbstbeschreibenden Ablagespeicher-Log zu speichern, was, wie vorstehend offenbart, das Anhängen von Datenpaketen110 der Reihe nach innerhalb des Ablagespeicheradressraums144 des Ablagespeichermediums140 umfassen kann. Die Datenpakete110 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 Schreibmodul240 kann ein Schreibverarbeitungsmodul242 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 Datenpakete110 (und/oder andere Container), d) Ausführen von Fehlerkorrekturcode-Verarbeitung (ECC-Verarbeitung), und so weiter. Der Schreibpuffer244 kann konfiguriert sein, Daten zum Speichern auf dem Ablagespeichermedium140 zu puffern. In einigen Ausführungsformen kann der Schreibpuffer244 einen oder mehrere Synchronisationspuffer umfassen, die konfiguriert sind, eine Taktdomäne der Ablagespeichersteuereinheit139 mit einer Taktdomäne des Ablagespeichermediums140 (und/oder der Zusammenschaltung127 ) 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-Arrays115A –N der unabhängigen Bänke119A –N bereitstellen. Wie hier offenbart kann das Log-Ablagespeichermodul136 konfiguriert sein, Daten der Reihe nach in einem Log-Format innerhalb des Ablagespeicheradressraums144 des Ablagespeichermediums140 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 Ablagespeichermetadaten135 , um LID(s) der Daten den Ablagespeicheradressen des einen oder der mehreren Datenpakete zuzuordnen. In einigen Ausführungsformen können die Ablagespeichermetadaten135 auf Speicherbetriebsmitteln der Ablagespeichersteuereinheit139 gepflegt werden (z. B. auf dedizierten flüchtigen Speicherbetriebsmitteln der AblageAblagespeichervorrichtung141 , die das Ablagespeichermedium140 umfasst). Alternativ oder zusätzlich können Abschnitte der Ablagespeichermetadaten135 innerhalb der Ablagespeicherschicht130 gepflegt werden (z. B. auf einem flüchtigen Speicher112 der Computervorrichtung110 von1A ). In einigen Ausführungsformen können die Ablagespeichermetadaten135 in einem flüchtigen Speicher der Ablagespeicherschicht130 gepflegt werden und können periodisch auf dem Ablagespeichermedium140 gespeichert werden. - Die Ablagespeichersteuereinheit
139 kann ferner ein Datenlesemodul241 umfassen, das konfiguriert ist, Daten aus dem Ablagespeicher-Log auf dem Ablagespeichermedium140 in Reaktion auf Anforderungen, die über das Ablagespeicheranforderungsempfängermodul231 empfangen werden, zu lesen. Die Anforderungen können LID(s) der angeforderten Daten, eine Ablagespeicheradresse der angeforderten Daten und/oder dergleichen umfassen. Das Lesemodul241 kann konfiguriert sein: a) die Ablagespeicheradresse(n) des/der Datenpaket(e)110 , die die angeforderten Daten umfassen, durch Verwenden von, unter anderen, der Vorwärtsabbildung160 zu bestimmen, b) das/die Datenpaket(e)110 aus der/den bestimmten Ablagespeicheradresse(n) auf dem Ablagespeichermedium140 zu lesen und c) Daten zur Verwendung durch die anfordernde Entität zu verarbeiten. Daten, die aus dem Ablagespeichermedium140 gelesen werden, können über den Lesepuffer245 in das Lesemodul241 streamen. Der Lesepuffer245 kann einen oder mehrere Lesesynchronisationspuffer zur Taktdomänensynchronisation umfassen, wie vorstehend beschrieben. Das Leseverarbeitungsmodul243 kann konfiguriert sein, Daten, die aus dem Ablagespeichermedium144 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 Banksteuereinheit252 umfassen, die konfiguriert ist, Daten und/oder Befehle des Schreibmoduls240 und/oder Lesemoduls241 zu/von speziellen unabhängigen Bänken119A –N selektiv zu lenken. In einigen Ausführungsformen ist die Ablagespeichersteuereinheit139 konfiguriert, Ablagespeicheroperationen zwischen den unabhängigen Bänken119A –N zu verschachteln. Die Ablagespeichersteuereinheit139 kann beispielsweise aus dem Ablagespeicher-Array115A von Bank119A in das Lesemodul241 lesen, während Daten aus dem Schreibmodul240 für das Ablagespeicher-Array115B von Bank119B programmiert werden. Weitere Ausführungsformen von Mehrfachbankspeicheroperationen sind in derUS-Patentschrift Nr. 11/952,095 - Das Schreibverarbeitungsmodul
242 kann konfiguriert sein, Datenpakete110 in ECC-Codeworte zu codieren. Wie hier verwendet bezieht sich ein ECC-Codewort auf Daten und entsprechende Fehlerdetektions- und/oder Korrekturinformationen. Das Schreibverarbeitungsmodul242 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 Schreibverarbeitungsmodul242 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 Schreibverarbeitungsmodul242 konfiguriert sein, ECC-Codeworte von beliebiger Größe zu erzeugen. Weitere Ausführungsformen von Fehlerkorrekturcodeverarbeitung sind in derUS-Patentschrift Nr. 13/830,652 - In einigen Ausführungsformen unterstützt die Ablagespeicherschicht
130 den logischen Adressraum132 , um Ablagespeicheroperationen hoher Ebene effizient zu implementieren. Die Ablagespeicherschicht130 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 Ablagespeicherschicht130 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 Datenpakete110 , die in dem Ablagespeichermedium140 gespeichert sind, modifizieren. Eine ”logische Verschiebung” kann sich auf eine Operation beziehen, um die logische Schnittstelle von Daten, die durch die Ablagespeicherschicht130 gemanagt werden, zu modifizieren. Eine logische Verschiebungsoperation kann das Ändern der LIDs, die verwendet werden, um Daten zu referenzieren, die auf dem Ablagespeichermedium140 gespeichert sind, umfassen. Eine ”Zusammenfassungs”-Operation kann das Zusammenfassen unterschiedlicher Abschnitte des logischen Adressraums132 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 derVereinigten Staaten Nr. 61/454,235 Vereinigten Staaten Nr. 61/625,647 Vereinigten Staaten Nr. 61/637,165 - Bezug nehmend auf
3A kann die Ablagespeicherschicht130 ein Managementmodul334 für logische Schnittstellen umfassen, das konfiguriert ist, logische Schnittstellenoperationen, die zu Daten gehören, die durch die Ablagespeicherschicht130 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 Ablagespeichermedium140 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 Adressraum132 (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 Ablagespeichermetadaten135 . Erzeugen eines Klons kann deshalb Hinzufügen eines oder mehrerer Einträge zu einer Vorwärtsabbildung160 , 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 Ablagespeicherschicht130 implementiert ist. Die Bereichsklonoperation von3A kann in Reaktion auf eine Anforderung von einem Ablagespeicher-Client106 implementiert werden. In einigen Ausführungsformen kann die Schnittstelle131 der Ablagespeicherschicht130 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ärtsabbildung160 der Ablagespeicherschicht130 einen Eintrag362 , der konfiguriert ist, die LIDs 1024-2048 an die Medienablagespeicherorte 3453-4477 zu binden. Andere Einträge sind aus3A weggelassen, um das Verdecken der Einzelheiten der abgebildeten Ausführungsform zu vermeiden. Wie hier offenbart können der Eintrag362 und seine Bindungen eine logische Schnittstelle311A definieren, durch die Ablagespeicher-Clients106 die entsprechenden Daten (z. B. das Datensegment312 ) referenzieren können; Ablagespeicher-Clients106 können auf Datensegment312 (oder Abschnitte davon) durch die Ablagespeicherschicht130 durch Verwenden der LIDs 1024-2048 zugreifen und/oder es referenzieren. Dementsprechend definieren die LIDs 1024-2048 unter anderem die logische Schnittstelle311A des Datensegments312 . - Wie hier offenbart kann die Ablagespeicherschicht
130 konfiguriert sein, Daten in einem kontextabhängigen Format auf einem Ablagespeichermedium140 zu speichern (z. B. im Paketformat110 ). In der Ausführungsform von3A umfasst das Datenpaket310 an den Ablagespeicherorten 3453-4477 ein Datensegment312 . Das Datenpaket310 enthält ferner persistente Metadaten314 , die die logische Schnittstelle des Datensegments312 angeben (z. B. das Datensegment312 den LIDs 1024-2048 zuordnet). Wie vorstehend offenbart kann das Speichern von Daten im Zuordnung zu beschreibenden, persistenten Metadaten ermöglichen, dass die Ablagespeicherschicht130 die Vorwärtsabbildung160 (und/oder andere Metadaten135 ) aus den Inhalten des Ablagespeicher-Logs neu aufbaut. In der Ausführungsform von3A kann der Eintrag362 durch Zuordnen der Daten, die an den Ablagespeicheradressen 3453-4477 gespeichert sind, zu den LIDs 1024-2048, die durch die persistenten Metadaten314 des Pakets310 referenziert sind, rekonstruiert werden. Obwohl3A ein einziges Paket310 abbildet, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen können die Daten des Eintrags362 in mehreren, unterschiedlichen Paketen310 gespeichert sein, von denen jedes jeweilige persistente Metadaten314 umfasst (z. B. ein getrenntes Paket für jeden Ablagespeicherort, usw.). - Das Managementmodul
334 für logische Schnittstellen kann konfiguriert sein, den Eintrag362 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 in3B dargestellt ist kann das Erzeugen des Klons der LIDs 1024-2048 umfassen, dass das Managementmodul334 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 Ablagespeichermetadaten135 umfassen, um die logische Schnittstelle311B des Datensegments312 zu erweitern, um LIDs 6144-7168 aufzunehmen, ohne zu erfordern, dass das zugrundeliegende Datensegment312 auf dem Ablagespeichermedium140 kopiert und/oder repliziert werden muss. - Die modifizierte logische Schnittstelle
311B des Datensegments312 kann mit dem kontextabhängigen Format des entsprechenden Datenpakets310 , das in den Ablagespeicherorten 3453-4477 gespeichert ist, inkonsistent sein. Wie vorstehend offenbart referenzieren die persistenten Metadaten314 des Datenpaket310 die LIDs 1024-2048, enthalten und/oder referenzieren jedoch nicht die geklonten LIDs 6144-7168. Das kontextabhängige Format des Datensegments312 kann aktualisiert werden, um mit der modifizierten logischen Schnittstelle311B 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 AblageAblagespeichervorrichtung141 eine Direktzugriffs-, am Ort schreibende AblageAblagespeichervorrichtung ist, können die persistenten Metadaten314 am Ort aktualisiert werden. In anderen Ausführungsformen, die ein einmal beschreibbares, asymmetrisches Ablagespeichermedium140 umfassen, können solche Aktualisierungen am Ort ineffizient sein. Deshalb kann die Ablagespeicherschicht130 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 Medienmanagementmodul370 ), verlagert werden. Aktualisieren des kontextabhängigen Formats des Datensegments312 kann das Verlagern und/oder Neuschreiben des Datensegments312 auf dem Ablagespeichermedium140 umfassen, was ein zeitaufwändiger Prozess sein kann und insbesondere ineffizient sein kann, falls das Datensegment312 groß ist und/oder der Klon eine große Anzahl von LIDs umfasst. Deshalb kann in einigen Ausführungsformen die Ablagespeicherschicht130 das Aktualisieren des kontextabhängigen Formats des geklonten Datensegments312 verzögern und/oder kann das kontextabhängige Format in einer oder mehreren Hintergrundoperationen aktualisieren. Unterdessen kann die Ablagespeicherschicht130 konfiguriert sein, Zugriff auf das Datensegment312 zu ermöglichen, während es in dem inkonsistenten kontextabhängigen Format (Datenpaket310 ) gespeichert ist. - Die Ablagespeicherschicht
130 kann konfiguriert sein, die Fertigstellung der Klonoperationen zu quittieren, bevor das kontextabhängige Format des entsprechenden Datensegments312 aktualisiert wird. Die Daten können nachfolgend in dem aktualisierten kontextabhängigen Format auf dem Ablagespeichermedium140 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 Datensegment312 durch das Medienmanagementmodul370 als Teil eines oder mehrerer aus einem Ablagespeicherwiederherstellungsprozess, einer Datenauffrischungsoperation und/oder dergleichen verlagert. Dementsprechend können Ablagespeicher-Clients106 auf das Datensegment312 durch die modifizierte logische Schnittstelle311B zugreifen (z. B. mit Referenz auf LIDs 1024-2048 und/oder 6144-7168), ohne darauf zu warten, dass das kontextabhängige Format des Datensegments312 in Übereinstimmung mit der modifizierten logischen Schnittstelle311B aktualisiert wird. - Bis das kontextabhängige Format des Datensegments
312 auf dem Ablagespeichermedium140 aktualisiert ist, kann die modifizierte logische Schnittstelle311B des Datensegments312 nur in den Ablagespeichermetadaten135 (z. B. Abbildung160 ) existieren. Deshalb kann, falls die Vorwärtsabbildung160 aufgrund von, unter anderem, Stromausfall oder Datenverfälschung verlorengeht, die Klonoperation nicht in den rekonstruierten Ablagespeichermetadaten135 widergespiegelt sein (die Klonoperation kann nicht persistent und/oder absturzsicher sein). Wie vorstehend dargestellt geben die persistenten Metadaten314 des Datenpakets310 an, dass das Datensegment312 nur den LIDs 1024-2048 und nicht 6144-7168 zugeordnet ist. Deshalb wird nur der Eintrag362 rekonstruiert (wie in3A ), und Eintrag364 wird weggelassen; als ein Ergebnis können nachfolgende Versuche, auf das Datensegment312 durch die modifizierte logische Schnittstelle311B 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 Ablagespeichermedium140 gespeichert sind. Persistente Meldungen366 können einer Log-Reihenfolge entsprechen und/oder können in einem Paketformat gespeichert sein, wie hier offenbart. Die persistente Meldung366 kann eine Angabe der modifizierten logischen Schnittstelle311B des Datensegments312 umfassen. In der Ausführungsform von3B kann die persistente Meldung366 , 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ärtsabbildung160 aus den Inhalten des Ablagespeichermediums140 kann die persistente Meldung366 verwendet werden, um beide Einträge362 und364 zu rekonstruieren, um das Datensegment312 beiden LID-Bereichen der aktualisierten logischen Schnittstelle311B zuzuordnen. In einigen Ausführungsformen kann die Ablagespeicherschicht130 die Fertigstellung der Klonoperation in Reaktion auf Aktualisieren der Ablagespeichermetadaten135 (z. B. Erzeugen des Eintrags364 ) und Speichern der persistenten Meldung366 auf dem Ablagespeichermedium140 quittieren. Die persistente Meldung366 kann als Reaktion ungültig gemacht und/oder zum Entfernen von dem Ablagespeichermedium140 markiert werden, was das kontextabhängigen Format des Datensegments312 aktualisiert, um mit der aktualisierten logischen Schnittstelle311B konsistent zu sein (z. B. Verlagern und/oder Neuschreiben des Datensegments312 , wie vorstehend offenbart). - In einigen Ausführungsformen kann das aktualisierte kontextabhängige Format des Datensegments
312 das Zuordnen des Datensegments312 zu beiden LID-Bereichen 1024-2048 und 6144-7168 umfassen.3C bildet eine Ausführungsform eines aktualisierten kontextabhängigen Formats (Datenpaket320 ) für das Datensegment312 ab. Wie in3C dargestellt, ordnen die persistenten Metadaten324 des Datenpakets320 das Datensegment312 beiden LID-Bereichen 1024-2048 und 6144-7168 der aktualisierten logischen Schnittstelle311B zu. Das Datenpaket320 kann an anderen Ablagespeicheradressen (64432-65456) als das ursprüngliche Datenpaket310 außerhalb des Orts geschrieben werden, was in aktualisierten Einträgen362 und364 der Vorwärtsabbildung160 widergespiegelt sein kann. In Reaktion auf Anhängen des Datenpakets320 an das Ablagespeicher-Log kann die entsprechende persistente Meldung366 (falls vorhanden) ungültig gemacht (entfernt und/oder zum nachfolgenden Entfernen aus dem Speichermedium140 markiert) werden. In einigen Ausführungsformen kann das Entfernen der persistenten Meldung366 das Ausgeben einer oder mehrerer TRIM-Nachrichten umfassen, die angeben, dass die persistente Meldung366 nicht mehr in dem Ablagespeichermedium140 gehalten werden muss. Alternativ oder zusätzlich können Abschnitte der Vorwärtsabbildung160 in einem persistenten, absturzsicheren Ablagespeicherort (z. B. nichtflüchtigen Ablagespeicherbetriebsmittel103 und/oder dem Ablagespeichermedium140 ) gespeichert werden. In Reaktion auf das Fortbestehen der Vorwärtsabbildung160 (z. B. der Einträge362 und364 ) kann die persistente Meldung366 ungültig gemacht werden, wie vorstehend offenbart, selbst wenn das Datensegment312 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äge362 und364 können sich auf unterschiedliche Ablagespeicheradressen, Bereiche und/oder Spannen beziehen). In der Ausführungsform von3D hat die Ablagespeicherschicht130 das Datensegment312 in dem aktualisierten kontextabhängigen Format (Paket320 ) geschrieben, das konfiguriert ist, das Datensegment312 beiden LID-Bereichen 1024-2048 und 6144-7168 zuzuordnen (wie in3C abgebildet). Ein Ablagespeicher-Client106 kann eine oder mehrere Ablagespeicheranforderungen ausgeben, um Daten, die den LIDs 6657-7168 entsprechen, zu modifizieren und/oder zu überschreiben. In der Ausführungsform von3D umfasst die Ablagespeicheranforderung Modifizieren und/oder Überschreiben von Daten der LIDs 6657-7168. In Reaktion darauf kann die Ablagespeicherschicht130 die neuen und/oder modifizierten Daten auf dem Ablagespeichermedium130 speichern, was Anhängen eines neuen Datenpakets340 an das Ablagespeicher-Log umfassen kann, wie vorstehend offenbart. Das Datenpaket340 kann das Datensegment342 den LIDs 6657-7424 zuordnen (z. B. durch Verwenden persistenter Metadaten344 des Pakets340 ). Die Vorwärtsabbildung160 kann aktualisiert werden, um die LIDs 6657-7424 dem Datensegment342 zuzuordnen, was das Aufspalten des Eintrags364 in einen Eintrag365 , der konfiguriert ist, weiterhin den nicht modifizierten Abschnitt der Daten in dem Datensegment312 zu referenzieren, und einen Eintrag367 , der das neue Datensegment342 referenziert, das an den Ablagespeicheradressen 78512-79024 gespeichert ist, umfassen kann. In der in3D abgebildeten Kopieren-nach-Schreiben-Betriebsart kann der Eintrag362 , der den LIDs 1024-2048 entspricht, unverändert sein und weiterhin das Datensegment312 an den Ablagespeicheradressen 64432-65456 referenzieren. Obwohl in3D nicht abgebildet können Modifikationen innerhalb des Bereichs 1024-2048 zu ähnlichen divergierenden Änderungen führen, die den Eintrag362 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 von3D kann das Implementieren der beschriebenen Ablagespeicheroperation in einer ”synchronisierten Klon”-Betriebsart Aktualisieren des Eintrags362 umfassen, um das neue Datensegment342 zu referenzieren, wie hier offenbart, was, unter anderen, das Aufspalten des Eintrags362 in einen Eintrag, der konfiguriert ist, LIDs 1024-1536 Abschnitten des ursprünglichen Datensegments312 zuzuordnen, und Hinzufügen eines Eintrags, der konfiguriert ist, die LIDs 1537-2048 dem neuen Datensegment342 zuzuordnen, umfassen kann. - Bezug nehmend zurück auf die Kopieren-nach-Schreiben-Ausführungsform von
3D kann das Managementmodul334 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 von3D kann eine Bereichszusammenfassungsoperation das Zusammenfassen des Eintrags362 mit den entsprechenden geklonten Einträgen365 und367 umfassen. Das Managementmodul334 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 von3E 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 Datensegment342 umfassen, zuzuordnen. Die Aktualisierung kann Aufspalten des Eintrags362 in der Vorwärtsabbildung160 umfassen; der Eintrag372 kann konfiguriert sein, die LIDs 1024-1536 Abschnitten des ursprünglichen Datensegments312 zuzuordnen, und der Eintrag373 kann konfiguriert sein, die LIDs 1537-2048 dem neuen Datensegment342 zuzuordnen. Abschnitte des Datensegments312 , 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ärtsabbildung160 entfernt werden. - Die Bereichszusammenfassungsoperation, die in
3E dargestellt ist, kann zum Modifizieren der logischen Schnittstelle311C in Abschnitten der Daten führen. Das kontextabhängige Format des Datensegments342 (das Datenpaket340 ) kann das Datensegment342 den LIDs 6657-7168 anstatt den zusammengefassten LIDs 1537-2048 zuordnen. Wie vorstehend offenbart kann die Ablagespeicherschicht130 Zugriff auf das Datensegment342 , das in dem inkonsistenten kontextabhängigen Format gespeichert ist, ermöglichen. Die Ablagespeicherschicht130 kann konfiguriert sein, das Datensegment342 in einem aktualisierten kontextabhängigen Format zu speichern, in dem das Datensegment342 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 Meldung366 auf dem Ablagespeichermedium140 umfassen, um das Datensegment342 der aktualisierten logischen Schnittstelle311C zuzuordnen (z. B. das Datensegment342 an den Ablagespeicheradressen 78512-79024 den LIDs 1537-2048 zuzuordnen). Wie vorstehend offenbart kann die persistente Meldung366 verwendet werden, um sicherzustellen, dass die Bereichszusammenfassungsoperation persistent und absturzsicher ist. Die persistente Meldung366 kann in Reaktion auf das Verlagern des Datensegments342 in ein kontextabhängiges Format, das mit der logischen Schnittstelle311C konsistent ist (z. B. das Datensegment342 den LIDs 1537-2048 zuordnet), unter Beibehalten der Vorwärtsabbildung160 , 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 die3A –C kann eine Klonoperation, um den Eintrag362 der Vorwärtsabbildung160 zu replizieren, Modifizieren der logischen Schnittstelle, die dem Datensegment312 zugeordnet ist, umfassen, um das Datensegment312 sowohl der ursprünglichen Menge von LIDs 1024-2048 als auch der neuen Menge geklonter LIDs 6144-7168 (des Eintrags364 ) zuzuordnen. Die Klonoperation kann ferner das Speichern einer persistenten Meldung366 , die die aktualisierte logische Schnittstelle311B des Datensegment312 angibt, und/oder Neuschreiben des Datensegments312 in Übereinstimmung mit der aktualisierten logischen Schnittstelle311B 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 Ablagespeichermetadaten135 (z. B. der Vorwärtsabbildung160 ), um das eine oder die mehreren Datensegmente der aktualisierten logischen Schnittstelle zuzuordnen, Speichern einer persistenten Meldung366 , die die aktualisierte logische Schnittstelle der Datensegmente angibt, auf dem Ablagespeichermedium140 und Neuschreiben der Datensegmente in einem kontextabhängigen Format (Paketformat310 ), das mit der aktualisierten logischen Schnittstelle konsistent ist, wie hier offenbart, umfassen. Dementsprechend kann die Ablagespeicherschicht130 Bereichsverschiebungsoperationen implementieren, die dieselben Mechanismen und/oder Verarbeitungsschritte verwenden wie diejenigen, die vorstehend im Zusammenhang mit3A –E offenbart sind. - Die Klon- und/oder Bereichsverschiebungsoperationen, die in den
3A –E offenbart sind, können spezielle Einschränkungen für die Ablagespeicherschicht130 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 von3C umfassen die persistenten Metadaten324 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 Metadaten324 steigern). In einigen Ausführungsformen kann die Größe der persistenten Metadaten314 beschränkt sein, was die Anzahl von Referenzen und/oder Klonen, die ein spezielles Datensegment312 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 Datensegment312 verlagert wird, kann in Übereinstimmung mit der Anzahl von LIDs, die das Datensegment312 referenzieren, variieren. Bezug nehmend zurück auf3C kann das Verlagern des Datensegments312 in einer Pflege- und/oder Ablagespeicherwiederherstellungsoperation das Aktualisieren von zwei getrennten Einträgen362 und364 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ärtsabbildung160 umfassen. Ähnlich kann das Speichern des Datensegments das Schreiben von N Einträgen in die persistenten Metadaten314 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ärtsabbildung160 (und/oder andere Ablagespeichermetadaten135 ) zu referenzieren. Ein Referenzeintrag kann nur existieren, während er durch einen oder mehrere andere Einträge innerhalb des logischen Adressraums132 referenziert wird. In einigen Ausführungsformen können Referenzeinträge nicht für die Ablagespeicher-Clients106 zugreifbar sein und/oder können unveränderlich sein. Die Ablagespeicherschicht130 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 Ablagespeichermedium140 (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 Meldungen366 ) 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 Systems400 für effiziente Öffnen-bis-Schließen-Konsistenz. Das System400 enthält eine Ablagespeicherschicht130 , die konfiguriert ist, Bereichsklonoperationen durch Verwenden einer Zwischenabbildungsschicht zu implementieren. Die Ablagespeichermetadaten135 können eine Vorwärtsabbildung160 , die zu dem logischen Adressraum132 gehört, umfassen. Die Vorwärtsabbildung160 (und/oder andere Ablagespeichermetadaten135 ) können Informationen enthalten, die zu Zuweisungen des logischen Adressraums durch die Ablagespeicher-Clients106 , Bindungen zwischen LIDs und Ablagespeicheradressen innerhalb des Ablagespeicheradressraums144 und so weiter, gehören, wie vorstehend offenbart. - In der Ausführungsform von
4A kann das Managementmodul334 für logische Schnittstellen ein Referenzmodul434 umfassen, das konfiguriert ist, Klonoperationen durch Verwenden einer Referenzabbildung460 zu managen. Die Referenzabbildung460 kann Referenzeinträge umfassen, die Daten entsprechen, die durch eine oder mehrere logische Schnittstellen des logischen Adressraums132 (z. B. eine oder mehrere Mengen von LIDs) referenziert werden. Das Referenzmodul434 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ärtsabbildung160 referenziert werden. Wie in4A dargestellt, können Referenzeinträge getrennt von der Vorwärtsabbildung160 gepflegt werden (z. B. in einer getrennten Referenzabbildung460 ). Die Referenzeinträge können durch Verwenden von Referenzkennungen, die in einem von dem logischen Adressraum132 getrennten Namensraum gepflegt werden können, identifiziert werden. Dementsprechend können die Referenzeinträge Teil eines dazwischenliegenden, ”virtuellen” oder ”Referenz”-Adressraums432 sein, der von dem logischen Adressraum132 , der für die Ablagespeicher-Clients106 durch die Ablagespeicherschichtschnittstelle131 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 Adressraums132 , die nicht direkt für die Ablagespeicher-Clients106 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ärtsabbildung160 mit Referenzeinträgen in der Referenzabbildung460 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 Referenzabbildung460 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ärtsabbildung160 , die geklonten Daten entsprechen, als ”indirekte Einträge” bezeichnet werden. Wie hier verwendet bezieht sich ein ”indirekter Eintrag” auf einen Eintrag in der Vorwärtsabbildung160 , der einen Referenzeintrag in der Referenzabbildung460 referenziert und/oder mit ihm verknüpft ist. Indirekte Einträge können einer LID innerhalb des logischen Adressraums132 zugewiesen sein und können für die Ablagespeicher-Clients106 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 von4A 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 Ablagespeichermediums140 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 Referenzabbildung460 und/oder des Referenzmoduls434 . Das Umsetzungsmodul134 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 Medienmanagementmodul370 können konfiguriert sein, das kontextabhängige Format geklonter Daten zu managen. In der Ausführungsform von4A können geklonte Daten (Daten, die durch zwei oder mehr LID-Bereiche innerhalb der Vorwärtsabbildung160 referenziert werden) in einem kontextabhängigen Format gespeichert sein, das die Daten einem oder mehreren Referenzeinträgen der Referenzabbildung460 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 Medienmanagementmoduls370 umfassen, wie vorstehend offenbart. -
4B bildet eine Ausführungsform einer Klonoperation unter Verwendung einer Referenzabbildung460 ab. In Zustand413A kann ein Eintrag, der LID 10 Spanne 2 in dem logischen Adressraum132 entspricht (in4B als 10,2 bezeichnet), direkt Daten an der Ablagespeicheradresse 20000 auf dem Ablagespeichermedium140 referenzieren. Andere Einträge sind aus4B weggelassen, um das Verdecken der Einzelheiten der offenbarten Ausführungsform zu vermeiden. In Zustand413B implementiert die Ablagespeicherschicht130 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 in4B ) in dem logischen Adressraum und b) Zuweisen von Referenzeinträgen in der Referenzabbildung460 , durch die die Einträge 10,2 und 400,2 die geklonten Daten an der Ablagespeicheradresse 20000 (als 100000,2 in4B 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 Zustand413C 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. Zustand413C kann ferner das Speichern einer persistenten Meldung366 auf dem Ablagespeichermedium140 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 Referenzabbildung460 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 Umsetzungsmodul134 bestimmen, dass der entsprechende Eintrag in der Vorwärtsabbildung160 ein indirekter Eintrag ist, der einem Eintrag in der Referenzabbildung460 zugeordnet ist. In Reaktion darauf führt das Referenzmodul434 eine Kaskade aus, um die Ablagespeicheradresse durch Verwenden lokaler Einträge innerhalb der Vorwärtsabbildung160 (falls vorhanden) und der entsprechenden Referenzeinträge in der Referenzabbildung460 (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 Meldung366 auf dem Ablagespeichermedium140 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 Medienmanagementmodul370 ausgeführt werden, neu geschrieben werden. Die Daten können mit persistenten Metadaten314 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 Stand413D gezeigt) nur Aktualisieren eines einzelnen Eintrags in der Referenzabbildung460 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ärtsabbildung160 das Datensegment referenzieren, ohne die Größe der persistenten Metadaten314 , die den Daten auf dem Ablagespeichermedium140 zugeordnet sind, zu erhöhen und/oder die Operation des Medienmanagementmoduls370 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 Datensegments312 zu erzeugen, kann das Managementmodul334 für logische Schnittstellen konfiguriert sein, einen Referenzeintrag482 in der Referenzabbildung460 zuzuweisen, um das Datensegment312 zu repräsentieren. Jede Anzahl von LID(s) in der Vorwärtsabbildung160 kann die Daten durch den Referenzeintrag482 referenzieren, ohne den Overhead der persistenten Metadaten, die dem Datensegment312 zugeordnet sind, zu erhöhen und/oder die Operation des Medienmanagementmoduls370 zu verkomplizieren. Wie in4C abgebildet ist, kann der Referenzeintrag482 an die Ablagespeicheradressen des Datensegments312 (Ablagespeicheradressen 64432-65456) gebunden sein. Die Einträge462 und472 in der Vorwärtsabbildung160 können die Ablagespeicheradressen durch den Referenzeintrag482 indirekt referenzieren (können z. B. mit dem Referenzeintrag482 verknüpft sein, wie in4C dargestellt). - In der Ausführungsform von
4C ist der Referenzeintrag482 den Kennungen 0Z-1024Z zugewiesen. Die Kennung(en) des Referenzeintrags482 kann/können einem speziellen Abschnitt des logischen Adressraums132 entsprechen oder einem anderen, getrennten Namensraum entsprechen. Die Ablagespeicherschicht130 kann die Einträge462 und472 durch Verwenden von, unter anderem, Metadaten, die den Einträgen462 und/oder472 zugeordnet sind, mit dem Referenzeintrag482 verknüpfen. Alternativ oder zusätzlich können die indirekten Einträge462 und/oder472 Ablagespeicheradressmetadaten durch Referenzen und/oder Verknüpfungen zu dem Referenzeintrag482 ersetzen. Der Referenzeintrag482 kann durch Ablagespeicher-Clients106 nicht direkt über die Ablagespeicherschicht130 zugreifbar sein. - Die Klonoperation kann ferner Modifizieren der logischen Schnittstelle
311D des Datensegments312 umfassen; die modifizierte logische Schnittstelle311D kann ermöglichen, dass das Datensegment312 durch die LIDs 1024-2048 des indirekten Eintrags462 und/oder 6144-7168 des indirekten Eintrags472 referenziert wird. Obwohl der Referenzeintrag482 für die Ablagespeicher-Clients106 nicht zugreifbar sein kann, kann der Referenzeintrag482 verwendet werden, um durch das Umsetzungsmodul134 (durch die indirekten Einträge462 und472 ) auf die Daten zuzugreifen, und kann als solcher als ein Teil der modifizierte logischen Schnittstelle311B des Datensegment312 betrachtet werden. - Die Klonoperation kann ferner Speichern einer persistenten Meldung
366A auf dem Ablagespeichermedium140 umfassen. Wie vorstehend offenbart kann das Speichern der persistenten Meldung(en)366A und/oder366B sicherstellen, dass die Klonoperation persistent und absturzsicher ist. Die persistenten Meldung366A kann konfiguriert sein, den Referenzeintrag482 , der dem Datensegment312 zugeordnet ist, zu referenzieren. Dementsprechend kann die persistente Meldung366A die Ablagespeicheradressen 64432-65456 der/den Referenzeintragskennung(en) 0Z-1024Z zuordnen. Die Klonoperation kann ferner Speichern einer weiteren persistenten Meldung366B umfassen, die konfiguriert ist, die LIDs der Einträge462 und/oder472 dem Referenzeintrag482 zuzuordnen. Alternativ können Metadaten, die zu der Zuordnung zwischen den Einträgen462 ,472 und482 gehören, in einer einzelnen persistenten Meldung enthalten sein. Die persistenten Meldungen366A und/oder366B können auf dem Ablagespeichermedium140 gehalten werden, bis das Datensegment312 in einem aktualisierten kontextabhängigen Format verlagert wird und/oder die Vorwärtsabbildung160 (und/oder Referenzabbildung460 ) fortbesteht. - Die modifizierte logische Schnittstelle
311D des Datensegments312 kann mit dem kontextabhängigen Format des ursprünglichen Datenpakets410A inkonsistent sein; die persistenten Metadaten314A können anstelle des Referenzeintrags482 und/oder des geklonten Eintrags472 die LIDs 1024-2048 referenzieren. Die Ablagespeicherschicht130 kann konfiguriert sein, das Datensegment312 in einem aktualisierten kontextabhängigen Format zu speichern (Paket410B ), das mit der modifizierten logischen Schnittstelle311D konsistent ist; die persistenten Metadaten314B können das Datensegment312 dem Referenzeintrag482 zuordnen, im Gegensatz zum getrennten Identifizieren der LID(s) innerhalb jedes geklonten Bereichs (z. B. Einträge462 und472 ). Dementsprechend ermöglicht das Verwenden des indirekten Eintrags482 , dass die logische Schnittstelle311D des Datensegments312 jede Anzahl von LIDs umfasst, unabhängig von den Größenbeschränkungen der persistenten Metadaten314A –B. Außerdem können zusätzliche Klone des Referenzeintrags482 ohne Aktualisieren des kontextabhängigen Formats des Datensegments312 erzeugt werden; solche Aktualisierungen können durch Zuordnen der neuen LID-Bereiche zu dem Referenzeintrag482 in der Vorwärtsabbildung160 und/oder durch Verwenden von, unter anderem, persistenten Meldungen366 vorgenommen werden. - Wie vorstehend offenbart können die indirekten Einträge
462 und/oder472 anfänglich das Datensegment312 durch den Referenzeintrag482 referenzieren. Ablagespeicheroperationen, die nachfolgend den Klonoperation ausgeführt werden, können durch Verwenden lokaler Einträge innerhalb der Vorwärtsabbildung160 widergespiegelt sein. Nach der Fertigstellung der Klonoperation kann die Ablagespeicherschicht130 Daten modifizieren, die einer oder mehreren der geklonten LID(s) zugeordnet sind. In der Ausführungsform von4D modifiziert und/oder überschreibt ein Ablagespeicher-Client106 die Daten, die den LIDs 1024-1052 des indirekten Eintrags462 entsprechen, was Anhängen eines neuen Datensegments412 an das Ablagespeicher-Log (in dem Datenpaket420 an den Ablagespeicheradressen 7823-7851) umfassen kann. - Das Datensegment
412 kann in einem kontextabhängigen Format (Datenpaket420 ) gespeichert werden, das persistente Metadaten414A umfasst, die konfiguriert sind, das Datensegment412 den LIDs 1024-1052 zuzuordnen. Die Ablagespeicherschicht130 kann konfiguriert sein, das Datensegment412 den LIDs 1024-1052 in einem lokalen Eintrag465 zuzuordnen. Der lokale Eintrag465 kann die aktualisierten Daten direkt referenzieren, im Gegensatz zum Referenzieren der Daten durch den indirekten Eintrag462 und/oder den Referenzeintrag482 . - 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 von4D kann der lokale Eintrag465 verwendet werden, um Anforderungen zu erfüllen, die zum dem LID-Bereich 1024-1052 (Ablagespeicheradressen 7823-7851) anstatt 64432-64460 für den Referenzeintrag462 gehören. Anforderungen für LIDs, die nicht in einem lokalen Eintrag gefunden werden (z. B. LIDs 1053-2048), können weiterhin durch den Referenzeintrag482 bedient werden. Die logische Schnittstelle311E der Daten, die zu dem Bereich 1024-2048 gehören, umfasst deshalb einen oder mehrere lokale Einträge465 , einen oder mehrere indirekte Einträge462 und/oder einen oder mehrere Referenzeinträge482 . - In einer weiteren Ausführungsform, die in
4E dargestellt ist, kann eine Ablagespeicherschicht130 Daten des Klons durch ein weitere der LIDs der logischen Schnittstelle311E (z. B. LIDs 6144-6162) modifizieren; die logischen Schnittstellenbegrenzer sind in4E nicht gezeigt, um Verdecken der Einzelheiten der dargestellten Ausführungsform zu vermeiden. Die modifizierten Daten können unter Verwendung eines lokalen Eintrags475 referenziert werden, wie vorstehend offenbart. In der Ausführungsform von4E weist jeder der Bereiche462 und472 seine eigene jeweilige lokale Version der Daten auf, die vorher durch die Kennungen 0Z-52Z des Referenzeintrags482 referenziert wurden. Als solches enthält weder Eintrag462 noch Eintrag472 eine Referenz auf den Bereich 0Z-52Z. Das Referenzmodul434 kann bestimmen, dass die entsprechenden Daten (und Referenzkennungen) nicht mehr referenziert werden und als solche zum Entfernen aus dem Ablagespeichermedium140 markiert werden (z. B. ungültig gemacht werden) können. Wie in4E abgebildet, kann das Ungültigmachen der Daten Entfernen von Referenzen auf die Daten aus der Referenzabbildung460 durch, unter anderem, Modifizieren des Referenzeintrags482 , um den Bereich 0Z-52Z zu entfernen, umfassen. Ungültigmachen der Daten kann ferner Aktualisieren anderer Ablagespeichermetadaten135 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äge462 und472 können weiterhin divergieren, bis nichts irgendeinen Abschnitts des Referenzeintrags482 referenziert, wobei an diesem Punkt der Referenzeintrag482 entfernt werden kann und die Daten, die durch ihn referenziert werden, ungültig gemacht werden können, wie vorstehend offenbart. - Obwohl die
4D und4E lokale Einträge465 und475 , die überlappende LID-Bereiche mit den entsprechenden indirekten Einträgen462 und472 umfassen, abbilden, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen kann die Ablagespeicheroperation von4D durch Erzeugen des lokalen Eintrags465 und Modifizieren des indirekten Eintrags462 , um nur die LIDs 1053-2048 zu referenzieren, widergespiegelt sein. Ähnlich kann die Operation von4E das Erzeugen des lokalen Eintrags475 und Modifizieren des indirekten Eintrags472 , um einen abgeschnittenen LID-Bereich 6163-7168 zu referenzieren, umfassen. - Bezug nehmend zurück auf
4A kann das Referenzmodul434 konfiguriert sein, die Referenzabbildung460 zu managen oder zu ”pflegen”. In einigen Ausführungsformen umfasst jeder Eintrag in die Referenzabbildung460 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 Referenzabbildung460 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 Referenzabbildung460 entfernt werden. Entfernen eines Referenzeintrags (oder eines Abschnitts eines Referenzeintrags) kann Ungültigmachen der entsprechenden Daten auf dem Ablagespeichermedium140 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 Referenzmodul434 (oder ein anderer Prozess wie z. B. das Umsetzungsmodul134 ) kann Referenzen auf Einträge in der Referenzabbildung460 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ärtsabbildung160 ü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-Clients106 indirekte, virtuelle Kennungen (VIDs) eines virtuellen Adressraums (VAS) zuweisen, die mit Referenzablagespeicheradressen über eine Zwischenabbildungsschicht wie z. B. dem logischen Adressraum132 verknüpft sein können und/oder sie referenzieren können. Der VAS kann eine Zwischenabbildungsschicht zwischen Ablagespeicher-Clients106 und dem Ablagespeichermedium140 hinzufügen. Ablagespeicher-Clients106 können Daten referenzieren unter Verwendung von VIDs eines virtualisierten Adressraums, die auf logische Kennungen des logischen Adressraums132 abbilden und die wiederum Ablagespeicheradressen auf jeweiligen AblageAblagespeichervorrichtung(en)141 und/oder dem Ablagespeichermedium140 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 Indirektionsschicht530 ab, die konfiguriert ist, unter anderem, effiziente Bereichsklonoperationen unter Verwendung eines virtualisierten Adressraums532 zu implementieren. Die Indirektionsschicht530 kann konfiguriert sein, einen VAS532 für die Ablagespeicher-Clients106 durch eine Schnittstelle531 zu präsentieren. Wie die hier offenbarte Schnittstelle131 kann die Schnittstelle531 einen oder mehrere aus einer Blockvorrichtungsschichtstelle, einer virtuellen Ablagespeicherschnittstelle, einer Cache-Schnittstelle und/oder dergleichen umfassen. Ablagespeicher-Clients106 können Ablagespeicheroperationen, die zu Ablagespeicherbetriebsmitteln gehören, die durch die Indirektionsschicht530 gemanagt werden, durch Referenz auf VIDs des VAS532 durch die Schnittstelle531 ausführen. - Die Indirektionsschicht
530 kann ferner ein VAS-Umsetzungsmodul534 umfassen, das konfiguriert ist, VIDs auf Ablagespeicherbetriebsmittel durch eine oder mehrere Zwischenablagespeicherschichten (z. B. die Ablagespeicherschicht130 ) abzubilden. Dementsprechend können die VAS-Metadaten535 der Indirektionsschicht530 eine VAS-Vorwärtsabbildung560 enthalten, die Jede-auf-jede-Abbildungen zwischen VIDs des VAS532 und LIDs des VAS532 umfasst. Obwohl in5A nicht abgebildet können das VAS-Umsetzungsmodul534 und/oder die VAS-Vorwärtsabbildung560 konfiguriert sein, mehrere logische Adressräume132 von mehreren unterschiedlichen Ablagespeicherschichten130 zu aggregieren. Dementsprechend kann in einigen Ausführungsformen der VAS532 mehreren unterschiedlichen logischen Adressräumen entsprechen, von denen jeder eine getrennte Menge von LIDs umfasst und jeder einer/einem jeweiligen Ablagespeicherschicht130 , AblageAblagespeichervorrichtung141 und/oder Ablagespeichermedium140 entspricht. - Obwohl
5A die Indirektionsschicht530 getrennt von der Ablagespeicherschicht130 abbildet, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt. In einigen Ausführungsformen können VAS532 , VAS-Vorwärtsabbildung560 , VAS-Umsetzungsmodul534 und/oder andere Module der Indirektionsschicht530 als Teil der Ablagespeicherschicht130 implementiert sein. - Die Indirektionsschicht
530 kann konfiguriert sein, den dazwischenliegenden virtuellen Adressraum, der durch den VAS532 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 VAS532 ausführen. Dementsprechend können Ablagespeicheroperationen zwei (oder mehr) Umsetzungsschichten umfassen. Die VAS-Vorwärtsabbildung560 kann eine erste Umsetzungsschicht zwischen VIDs des VAS532 und Kennungen des logischen Adressraums132 der Ablagespeicherschicht130 umfassen. Die Vorwärtsabbildung160 der Ablagespeicherschicht130 kann eine zweite Umsetzungsschicht zwischen LIDs und Ablagespeicheradresse(n) auf dem Ablagespeichermedium140 implementieren. - Die Indirektionsschicht
530 kann konfiguriert sein, Zuweisungen innerhalb des VAS532 durch Verwenden, unter anderem, der VAS-Metadaten535 , VAS-Vorwärtsabbildung560 und/oder des VAS-Umsetzungsmoduls534 zu managen. In einigen Ausführungsformen kann das Zuweisen einer VID in dem VAS532 Zuweisen einer oder mehrerer entsprechender LIDs in dem logischen Adressraum132 (und/oder Kennungen einer oder mehrerer anderer Ablagespeicherschichten) umfassen. Dementsprechend kann jede VID, die in dem VAS532 zugewiesen ist, einer oder mehreren LIDs des logischen Adressraums132 entsprechen. Die Jede-auf-jede-Abbildungen zwischen den VIDs der Indirektionsschicht530 und dem logischen Adressraum132 können dünn und/oder jede-auf-jede sein, wie hier offenbart. Außerdem kann in einigen Ausführungsformen die Indirektionsschicht530 konfiguriert sein, Jede-auf-jede- und/oder bereichsgemanagte Abbildungen zwischen VIDs und mehreren unterschiedlichen logischen Adressräumen132 zu pflegen. Dementsprechend kann die Indirektionsschicht530 die logischen Adressräume mehrerer unterschiedlicher Ablagespeichervorrichtungen141 , die durch unterschiedliche jeweilige Ablagespeicherschichten130 gemanagt werden, in einen einzelnen aggregierten VAS532 aggregieren und/oder kombinieren. - In der Ausführungsform von
5A kann der logische Adressraum132 nicht direkt zugreifbar sein, und als solche können Ablagespeicher-Clients106 Ablagespeicherbetriebsmittel unter Verwendung von VIDs durch die Schnittstelle531 referenzieren. Deshalb kann Ausführen einer Ablagespeicheroperation durch die Indirektionsschicht530 mit Referenz auf eine oder mehrere VIDs Folgendes umfassen: a) Identifizieren der Ablagespeicherschicht130 , die den VIDs entspricht, b) Bestimmen der LID(s) der Ablagespeicherschicht130 , die auf die VIDs abgebildet sind, durch Verwenden des VAS-Umsetzungsmoduls534 und/oder der VAS-Vorwärtsabbildung560 ; und c) Implementieren der Ablagespeicheroperation durch Verwenden der Ablagespeicherschicht130 mit Referenz auf die bestimmte(n) LID(s). -
5B bildet eine Ausführungsform einer Klonoperation ab, die durch Verwenden der Indirektionsschicht530 implementiert ist. Wie vorstehend offenbart kann die VAS-Vorwärtsabbildung560 einem VAS532 entsprechen, der durch einen logischen Adressraum132 einer Ablagespeicherschicht130 indirekt auf Ablagespeicheradressen abgebildet ist.5B stellt die Adressierungsschichten dar, die verwendet werden, um Ablagespeicheroperationen durch die Indirektionsschicht530 zu implementieren. Die VIDs des VAS532 können die Adressierungsschicht der höchsten Ebene umfassen, die für Ablagespeicher-Clients106 durch, unter anderem, die Schnittstelle531 der Indirektionsschicht530 zugreifbar ist. Der logische Adressraum132 der Ablagespeicherschicht130 kann eine Zwischenadressierungsschicht umfassen. Die VAS-Vorwärtsabbildung560 kann Jede-auf-jede-Abbildungen zwischen VIDs und LIDs umfassen. Die LIDs können auf Ablagespeicheradressen innerhalb des Ablagespeicheradressraums144 durch Verwenden der Vorwärtsabbildung160 abgebildet werden. Dementsprechend können VIDs auf den Ablagespeicheradressraum144 durch den dazwischenliegenden logischen Adressraum der Ablagespeicherschicht130 abgebildet werden. - Wie in
5B dargestellt ist, kann in einem Zustand563A die VAS-Vorwärtsabbildung560 einen Eintrag 10,2, der zwei VIDs (10 und 11) in dem VAS532 repräsentiert, umfassen. Die VAS-Vorwärtsabbildung560 ordnet den VID-Eintrag 10,2 LIDs des logischen Adressraums132 zu. In der Ausführungsform von5B bindet die VAS-Vorwärtsabbildung560 den VID-Eintrag 10,2 an die LIDs 100000 und 100001 (Eintrag 100000,2). Der Eintrag 10,2 kann einem speziellen Ablagespeicher-Client106 , der Ablagespeicheroperationen in Bezug auf die VIDs ausführen kann, zugewiesen sein. In dem Zustand563A kann die Ablagespeicherschicht130 konfiguriert sein, den Eintrag 100000,2 auf eine oder mehrere Ablagespeicheradressen auf dem Ablagespeichermedium140 (Ablagespeicheradresse 20000) abzubilden. - In dem Zustand
536B kann die Indirektionsschicht530 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ärtsabbildung560 . Der entsprechende Eintrag 100000,2 in der Vorwärtsabbildung160 kann unverändert bleiben. Alternativ kann ein Referenzzählwert (oder ein anderes Kennzeichen) des Eintrags 100000,2 in der Vorwärtsabbildung160 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 Meldung366 auf dem Ablagespeichermedium140 umfassen, um die Zuordnung zwischen dem VID-Eintrag 400,2 und dem Eintrag 100000,2 in der Vorwärtsabbildung160 anzugeben. Alternativ oder zusätzlich kann die Klonoperation durch Beibehalten der VAS-Vorwärtsabbildung560 (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ärtsabbildung160 umfassen. Die VAS-Vorwärtsabbildung560 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 Adressraum132 , b) Speichern der modifizierten Daten in Zuordnung zu der neuen LID und c) Abbilden der neuen LID auf VID 10 in der VAS-Vorwärtsabbildung560 . - 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 Ablagespeicherschicht130 ein Deduplizierungsmodul374 , das konfiguriert ist, duplizierte Daten auf dem Ablagespeichermedium140 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 Ablagespeichermediums140 , 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 Ablagespeichermetadaten135 wie z. B. der Vorwärtsabbildung160 gespeichert werden (z. B. in Metadaten, die den Einträgen zugeordnet sind) und/oder können in einer oder mehreren getrennten Datenstrukturen der Ablagespeichermetadaten135 gepflegt und/oder indiziert werden. Das Deduplizierungsmodul374 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ärtsabbildung160 kann Einträge662 und672 umfassen, die Duplikatdaten referenzieren können, die an unterschiedlichen jeweiligen Ablagespeicheradressen 3453-4477 und 7024-8048 gespeichert sind. Die Einträge662 und672 können unterschiedlichen jeweiligen logischen Schnittstellen663 und673 entsprechen, die LIDs 1024-2048 bzw. 6144-6656 entsprechen. Das duplizierte Datensegment (Datensegment612 ) kann durch das Deduplizierungsmodul374 identifiziert und/oder verifiziert werden, wie vorstehend offenbart. Alternativ können die duplizierten Daten identifiziert werden, wenn Daten zum Speichern an der Ablagespeicherschicht130 empfangen werden. Dementsprechend können die Daten dedupliziert werden, bevor eine zusätzliche Kopie der Daten auf dem Ablagespeichermedium140 gespeichert wird. - In Reaktion auf Identifizieren und/oder Verifizieren, dass die Einträge
662 und672 Duplikatdaten referenzieren, kann die Ablagespeicherschicht130 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 und673 eines Datensegments umfassen. In der Ausführungsform von6 sind die Duplikatdaten als ein Datensegment612 innerhalb eines Pakets610 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äge663 und673 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 der4A –E und/oder die Zwischenabbildungsausführungsformen der5A –B enthalten. In der De-Deduplizierungsausführungsform von6 können beide LID-Bereiche 1024-2048 und 6144-7168 modifiziert werden, um eine einzige Version des Datensegments612 durch einen Referenzeintrag682 zu referenzieren (das andere Datensegment kann ungültig gemacht werden). Als solche kann die Deduplizierungsoperation Erzeugen eines Referenzeintrags682 umfassen, um das deduplizierte Datensegment612 zu repräsentieren (das Paket610 zu referenzieren). Die Deduplizierungsoperation kann ferner Modifizieren und/oder Umsetzen der Einträge662 und672 in jeweilige indirekte Einträge665 und675 umfassen, die durch den Referenzeintrag682 auf das Datensegment612 abgebildet werden können, wie vorstehend offenbart. Die Deduplizierungsoperationen können ferner Modifizieren der logischen Schnittstelle669 des Datensegments612 umfassen, um das Datensegment612 beiden Mengen von LIDs 1024-2048 und 6144-7168 (und außerdem dem Referenzeintrag682 ) zuzuordnen. Die Deduplizierungsoperationen können ferner Speichern einer persistenten Meldung366 auf dem Ablagespeichermedium140 umfassen, wie vorstehend offenbart. - Die Deduplizierungsoperation kann ferner Aktualisieren des kontextabhängigen Formats des Datensegments
612 umfassen, um mit der modifizierten logischen Schnittstelle669 konsistent zu sein, wie vorstehend offenbart. Aktualisieren des kontextabhängigen Formats kann Anhängen des Datensegments612 in einem aktualisierten kontextabhängigen Format (Datenpaket610 ) an das Ablagespeicher-Log (z. B. an den Ablagespeicherorten 84432-85456) in einer oder mehreren Hintergrundoperationen umfassen. Das aktualisierte Datenpaket610 kann persistente Metadaten614 umfassen, die das Datensegment612 der aktualisierten logischen Schnittstelle669 (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 Adressraums132 ) 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 Systems700 abbildet, das eine Ablagespeicherschicht130 umfasst, die konfiguriert ist, Speicherauszugsoperationen effizient zu implementieren. Die Ausführungsform von7 gehört zu einem Adressbereich innerhalb eines logischen Adressraums132 . 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 VAS532 angepasst werden, wie vorstehend offenbart. Die Ablagespeicherschicht130 kann ein Speicherauszugmodul736 und Zeitmodul738 umfassen, die konfiguriert sind, Speicherauszugsoperationen zu implementieren, wie hier offenbart ist. - Im Zustand
773A kann die Ablagespeicherschicht130 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 Ablagespeichermedium140 durch Verwenden, unter anderem, des Log-Ablagespeichermoduls136 zu speichern. Die Log-Reihenfolge der Ablagespeicheroperationen kann bestimmt werden unter Verwendung von Folgeinformationen, die Datenpaketen zugeordnet sind, wie z. B. Folgekennzeichen113 auf Ablagespeicherabteilungen170A –N und/oder aufeinanderfolgenden Ablagespeicherorten innerhalb des Ablagespeicheradressraums144 des Ablagespeichermediums144 (wie im Zusammenhang mit den1D und1E 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 Ablagespeichermedium140 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 Ablagespeichermedium130 ausgeführt werden, aufzubauen. In einigen Ausführungsformen können die Zeitinformationen jeweilige Zeitstempel umfassen (die durch das Zeitmodul738 gepflegt werden), die auf jedes Datenpaket, das auf dem Ablagespeichermedium140 gespeichert ist, angewandt werden können. Die Zeitstempel können innerhalb persistenter Metadaten314 der Datenpakete310 gespeichert sein. Alternativ oder zusätzlich kann das Zeitmodul738 konfiguriert sein, Zeitinformationen auf einer gröberen Granularitätsebene zu verfolgen. In einigen Ausführungsformen pflegt das Zeitmodul738 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 Ablagespeicherschicht130 ausgeführt werden, zu bestimmen. Das Log-Ablagespeichermodul136 kann konfiguriert sein, ein Epochenkennzeichen739 in Datenpakete710 aufzunehmen. Das Epochenkennzeichen739 kann der aktuellen Epoche (z. B. dem globalen Zeitkennzeichen), die durch das Zeitmodul738 gepflegt wird, entsprechen. Das Epochenkennzeichen739 kann der Epoche entsprechen, in der das entsprechende Datensegment712 in das Ablagespeicher-Log geschrieben wurde. Das Epochenkennzeichen739 kann innerhalb der persistenten Metadaten714 des Pakets710 gespeichert werden und als solches dem Datenpaket710 während Verlagerungsoperationen zugeordnet bleiben. Das Zeitmodul738 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 Epochenkennzeichen739 des Datensegments712 kann durch Verlagerung und/oder andere Medienpflegeoperationen unverändert bleiben. Dementsprechend kann ein Epochenkennzeichen739 der ursprünglichen Speicherungszeit des Datensegments712 entsprechen, unabhängig von der relativen Position des Datenpakets710 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 Ablagespeichermedium140 (z. B. Verhindern, dass die identifizierten Daten von dem Ablagespeichermedium140 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 Epochenkennzeichen739 identifiziert werden. - In Zustand
773A (Zeit t1, durch das Epochenkennzeichen e0 bezeichnet) kann die Ablagespeicherschicht130 eine Anforderung, eine Speicherauszugoperation zu implementieren, empfangen. In Reaktion auf die Anforderung kann das Speicherauszugmodul736 den aktuellen Wert der Epochenkennung, die durch das Zeitmodul738 gepflegt wird, bestimmen. Der aktuelle Wert der Epochenkennung kann als die aktuelle ”Speicherauszugepoche” bezeichnet werden. In der Ausführungsform von7 ist die Speicherauszugepoche 0. Der Speicherauszugmodul736 kann ferner konfiguriert sein zu bewirken, dass das Zeitmodul738 das aktuelle globale Epochenkennzeichen inkrementiert (z. B. das Epochenkennzeichen auf 1 inkrementiert). Erzeugen des Speicherauszugs kann ferner Speichern einer persistenten Meldung366 auf dem Ablagespeichermedium umfassen, die konfiguriert ist, das aktuelle, aktualisierte Epochenkennzeichen anzugeben. Die persistente Meldung366 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 Meldung366 kann während Metadatenrekonstruktionsoperationen verwendet werden, um: a) die aktuellen Epochenkennung zu bestimmen und/oder b) das Speicherauszugmodul736 und/oder Medienmanagementmodul370 zu konfigurieren, Daten, die einer speziellen Speicherauszugepoche (z. B. der Epoche e0) zugeordnet sind, zu konservieren. - Das Speicherauszugmodul
736 kann ferner konfiguriert sein, das Medienmanagementmodul370 anzuweisen, Daten, die der Speicherauszugepoche zugeordnet sind, zu konservieren. In Reaktion darauf kann das Medienmanagementmodul370 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 Ablagespeichermedium140 in, unter anderem, Ablagespeicherwiederherstellungsoperationen entfernt werden. Das Medienmanagementmodul370 kann Speicherauszugsdaten durch Verwenden der Epochenkennzeichen739 der Datenpakete710 identifizieren. Wie im Zusammenhang mit1E offenbart, können Daten auf dem Ablagespeichermedium140 außerhalb des Orts geschrieben werden. Die neueste Version von Daten, die einer speziellen LID zugeordnet ist, kann basierend auf der Reihenfolge der entsprechenden Datenpakete710 innerhalb des Logs bestimmt werden. Das Medienmanagementmodul370 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 von1E würde, falls die Daten X0 und X1 (die derselben LID A zugeordnet sind) beide mit der Speicherauszugepoche 0 markiert wären, das Medienmanagementmodul370 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 Medienmanagementmodul370 die Daten X0 auf dem Ablagespeichermedium140 konservieren, um die Daten des Speicherauszugs zu konservieren. - In Zustand
773B kann das Speicherauszugmodul738 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 Ablagespeichermedium140 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 Zustand773B gespeichert werden, können mit einem Epochenkennzeichen739 der aktuellen Epoche (e1) gespeichert werden. Das Speicherauszugmodul736 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 von1E kann das Medienmanagementmodul370 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 Speicherauszugmodul738 und/oder Medienmanagementmodul370 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 Zustand773C angegeben kann die Epoche 0 auf dem Ablagespeichermedium140 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 Speicherauszugmoduls738 und/oder Medienmanagementmoduls370 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 Adressraum132 und insbesondere die Vorwärtsabbildung160 modifizieren. Die Modifikationen können Aktualisieren von Ablagespeicheradressbindungen in Reaktion auf Anhängen von Daten an das Ablagespeichermedium140 , Hinzufügen und/oder Entfernen von LIDs zu FR1 und so weiter umfassen. In einigen Ausführungsformen ist das Speicherauszugmodul736 konfiguriert, den Speicherauszugsbereich FR1 (e0) innerhalb getrennter Ablagespeichermetadaten135 , wie z. B. einem getrennten Bereich des logischen Adressraums132 , in einem getrennten Namensraum, in einer getrennten Abbildung und/oder dergleichen zu konservieren. Alternativ kann das Speicherauszugmodul736 ermöglichen, dass die Änderungen in der Vorwärtsabbildung160 stattfinden, ohne die ursprüngliche Version von FR1 zu der Zeit e0 zu konservieren. Das Speicherauszugmodul736 kann konfiguriert sein, die Vorwärtsabbildung160 für e0 (Zeit t1) unter Verwendung der Speicherauszugsdaten, die auf dem Ablagespeichermedium140 konserviert sind, zu rekonstruieren. Die Vorwärtsabbildung160 zur Zeit t1 kann rekonstruiert werden, wie vorstehend offenbart, was Zugreifen der Reihe nach auf Daten, die auf dem Ablagespeichermedium140 gespeichert sind (in einer Log-Reihenfolge) und Erzeugen von Vorwärtsabbildungseinträgen basierend auf persistenten Metadaten714 , die den Datenpaketen710 zugeordnet sind, umfassen kann. In der Ausführungsform von7 kann die Vorwärtsabbildung160 , der der Epoche e0 entspricht, durch Referenzieren von Datenpaketen710 , die mit dem Epochenkennzeichen739 e0 (oder niedriger) markiert sind, rekonstruiert werden. Daten, denen Epochenkennzeichen739 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 Ablagespeicherschicht130 implementiert ist. Die Vorwärtsabbildung160 enthält Einträge862 , die konfiguriert sind, LIDs 1023-1025 an jeweilige Datensegmente auf dem Ablagespeichermedium140 zu binden. Die Einträge862 sind getrennt abgebildet, um Einzelheiten der Ausführungsform besser darzustellen; die Einträge862 könnten jedoch in einem einzigen Eintrag, der den vollständigen Bereich der LIDs 1023-1025 umfasst, enthalten sein. Die Einträge862 können eine logische Schnittstelle863 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äge862 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 Schnittstelle863B , 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 Schnittstelle131 empfangen wird, und/oder als Teil einer Ablagespeicheroperation höherer Ebene (z. B. eine Anforderung, eine Datei umzubenennen, Operationen, um die Vorwärtsabbildung160 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 Meldung366 auf dem Ablagespeichermedium140 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 Schnittstelle863B 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 von8B kann die Referenzeinträge nutzen, wie im Zusammenhang mit den4A –E offenbart ist. Dementsprechend kann die Verschiebungsoperation das Erzeugen von Referenzeinträgen882 in einer Referenzabbildung460 , um die Verschiebungsoperation zu repräsentieren, umfassen. Die Verschiebungsoperation kann ferner das Zuweisen neuer indirekter Einträge866 , um die Daten durch die Referenzeinträge882 zu referenzieren, umfassen. Die Referenzeinträge882 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 Schnittstelle863C der Daten kann deshalb die indirekten Einträge866 und die entsprechenden Referenzeinträge882 umfassen. Die Verschiebungsoperation kann ferner Speichern einer persistenten Meldung366 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 Meldung366 kann die aktualisierte logische Schnittstelle863C der Daten umfassen, so dass die Ablagespeichermetadaten135 (z. B. Vorwärtsabbildung160 und/oder Referenzabbildung460 ) 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 Schnittstelle863C (LIDs 9215, 9216 und 9217) ermöglichen. Die Daten können in einem kontextabhängigen Format, das mit der modifizierten logischen Schnittstelle863C 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 Medienmanagementmodul370 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ärtsabbildung160 und/oder Speichern der persistenten Meldung366 . - Wie in
8C dargestellt, können die Vorwärtsabbildung160 und/oder andere Ablagespeichermetadaten135 in Reaktion auf Neuschreiben von Daten der Verschiebungsoperation aktualisiert werden. In der Ausführungsform von8C kann das Datensegment812A , das an dem Medienablagespeicherort 32 gespeichert ist, in einer Ablagespeicherwiederherstellungsoperation, die Speichern der Daten in einem kontextabhängigen Format (Datenpaket810A ), das mit der modifizierten logischen Schnittstelle863C konsistent ist, umfassen kann, verlagert werden. Das Datenpaket810A kann persistente Metadaten814A umfassen, die das Datensegment812A der LID 9215 zuordnen. Die Vorwärtsabbildung160 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 Datenpaket810A 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 Referenzabbildung460 entfernt werden. - Bezug nehmend auf
8D kann ein Ablagespeicher-Client106 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 Schnittstelle863C konsistent ist (z. B. die Daten der LID 9217 zuordnet), geschrieben werden. In Reaktion darauf kann die Vorwärtsabbildung160 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 Referenzabbildung460 zu entfernen, wie vorstehend offenbart. - In einigen Ausführungsformen kann die Referenzabbildung
460 getrennt von der Vorwärtsabbildung160 gepflegt werden, so dass die Einträge darin (z. B. die Einträge882 ) nicht durch Ablagespeicher-Clients106 direkt referenziert werden können. Diese Abgrenzung kann ermöglichen, dass Ablagespeicher-Clients106 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 auf8E kann nachfolgend der Verschiebungsoperation, die vorstehend offenbart ist, ein Ablagespeicher-Client106 Daten in Verbindung mit der LID 1024 speichern. Der Referenzeintrag882 , der der LID 1024 entspricht, kann in der Referenzabbildung460 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 Referenzabbildung460 getrennt von der Vorwärtsabbildung160 gepflegt wird, keine Namenskollision auftreten, und die Ablagespeicheroperation kann vollständig sein. Die Vorwärtsabbildung160 kann einen getrennten Eintrag864 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 Schnittstelle863C (und Referenzabbildung460 ) 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 Meldung366 , die der Verschiebungsoperation zugeordnet ist, ungültig gemacht und/oder aus dem Ablagespeichermedium140 entfernt werden, wie vorstehend offenbart. - Bezug nehmend zurück auf
1A kann die Schnittstelle131 der Ablagespeicherschicht130 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 Schnittstelle131 kann APIs bereitstellen, um Bereichsklonoperationen, Bereichsverschiebungsoperationen, Bereichszusammenfassungsoperationen, Deduplizierung, Speicherauszug und andere hier offenbarte Operationen höherer Ebene auszuführen. Die Schnittstelle131 kann es Ablagespeicher-Clients106 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 den3A –E abgebildeten Bereichsklonausführungsformen, die Referenzeintragsausführungsformen der4A –E und/oder der Zwischenabbildungsschichtausführungsformen der5A –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 Ablagespeicherschicht130 ausgedrückt werden. Die offenbarten Operationen können durch verschiedene unterschiedliche Ablagespeicher-Clients106 , wie z. B. Betriebssysteme, Dateisysteme, Datenbankdienste und/oder dergleichen, unterstützt werden. -
9A bildet eine Ausführungsform eines Systems900A ab, das eine Ablagespeicherschicht130 umfasst, die konfiguriert ist, Dateimanagementoperationen zu implementieren. Das System900A kann ein Dateisystem906 umfassen, das konfiguriert sein kann, Funktionalität der Ablagespeicherschicht130 zu unterstützen, um die Komplexität, den Overhead und dergleichen zu reduzieren. Das Dateisystem906 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 Dateisystem906 kann konfiguriert sein, solche Operationen in Reaktion auf Client-Anforderungen (z. B. einen Kopierbefehl, eine Dateispeicherauszug-ioctrl oder dergleichen) zu implementieren. Das Dateisystem906 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 Ablagespeichermoduls130 , 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 Dateisystem906 ab. In einigen Ausführungsformen und wie in einem Zustand911A abgebildet, kann die Ablagespeicherschicht130 konfiguriert sein, einen logischen Adressraum132 zu pflegen, in dem LIDs der Quelldatei (der Datei, die geklont werden soll) auf Dateidaten in dem Ablagespeichermedium durch Verwenden der Vorwärtsabbildung160 abgebildet sind. Die entsprechende Bereichsklonoperation, die in Zustand911B 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 Ablagespeichermedium140 . Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung366 auf dem Ablagespeichermedium140 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 Referenzabbildung460 unterstützen, um Bereichsklonoperationen zu unterstützen (z. B. wie in den4A –E offenbart). Vor der Bereichsklonoperation können in Zustand911C die LIDs der Quelldatei direkt auf die entsprechenden Dateidaten in der Vorwärtsabbildung160 abgebildet sein. Erzeugen des Bereichsklons in dem Zustand911D kann Zuordnen eines oder mehrerer Referenzeinträge in der Referenzabbildung460 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 Meldung366 auf dem Ablagespeichermedium140 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 den5A –B offenbart). Wie im Zustand911E angegeben, kann die Quelldatei einer Menge von VIDs eines VAS532 entsprechen, die auf Dateidaten auf dem Ablagespeichermedium140 durch einen dazwischenliegenden Adressraum (z. B. den logischen Adressraum132 der Ablagespeicherschicht130 ) abgebildet sein können. Ausführen der Bereichsklonoperation kann Folgendes umfassen: a) Zuweisen von VIDs in dem VAS532 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 Meldung366 , die angibt, dass die Ziel-VIDs den Dateidaten-LIDs zugeordnet sind, auf dem Ablagespeichermedium140 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 Ablagespeicherschicht130 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 Dateisystems906 zugegriffen wird. Eine ”msync”-Operation bezieht sich auf eine Operation, die schmutzen Seiten der Datei (falls vorhanden) in das Ablagespeichermedium140 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 Dateisystem906 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 in9B abgebildet ist, kann in einem Zustand913A (vor der mmap-Operation) Datei 1 den LIDs 10-13 und den entsprechenden Ablagespeicheradressen P1–P4 auf dem Ablagespeichermedium140 zugeordnet sein. In Reaktion auf die mmap-Operation kann das Dateisystem906 eine Bereichsklonoperation durch die Schnittstelle131 der Ablagespeicherschicht130 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 Referenzabbildung460 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 Ablagespeicherschicht130 ). Wie in Zustand913C 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 Dateisystem906 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 Adressraums132 , 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 Adressraums132 . Wie hier verwendet beziehen sich Zusammenfassungs- und/oder Faltungsbereiche des logischen Adressraums132 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 Ablagespeicherschicht130 implementiert sind. In der Ausführungsform von9C kann die Ablagespeicherschicht130 konfiguriert sein, den Kennungsbereich914 zu klonen, der durch einen oder mehrere Einträge in der Vorwärtsabbildung160 repräsentiert sein kann. Die LIDs 072-083 innerhalb des Bereichs914 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 der3A –E, der Referenzeintragsausführungsformen der4A –E und/oder der Zwischenabbildungsschichtausführungsformen der5A –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 Bereich914 klonen, was, wie am Zustand941A dargestellt, Binden eines neuen Bereichs von LIDs924 an die Ablagespeicheradressen 95-106 umfassen kann. Die Bereiche914 und/oder924 können jeweilige Metadaten984 und/oder994 umfassen, die konfiguriert sind anzugeben, dass die Bereiche914 und924 zusammengehören (z. B. an dieselbe Menge von Ablagespeicheradressen gebunden sind). Die Metadaten984 und/oder994 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 Metadaten984 und/oder994 können eine Synchronisationsstrategie für geklonte LID-Bereiche angeben, die, wie vorstehend offenbart, angeben kann, ob Zuweisungsoperationen zwischen Klonen synchronisiert werden sollen. Die Metadaten984 und/oder994 können ferner eine Zusammenfassungsstrategie umfassen und/oder referenzieren, die spezifizieren kann, wie Zusammenfassungskonflikte gemanagt werden sollen. Die Zusammenfassungsstrategie kann durch die Schnittstelle131 der Ablagespeicherschicht130 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 Meldung366 an das Ablagespeichermedium140 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 Bereiche914 und/oder924 in Reaktion auf Ablagespeicheranforderungen von einem oder mehreren Ablagespeicher-Clients106 ausführen. Wie im Stand941B 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 Zustand941B kann die Ablagespeicherschicht130 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-Bereich924 vorgenommen wurden, in den LID-Bereich914 in Übereinstimmung mit einer Zusammenfassungsstrategie umfassen. Die Zusammenfassungsstrategie kann spezifizieren, dass Modifikationen, die in dem geklonten Bereich924 vorgenommen werden, Daten innerhalb des Quellbereichs914 überschreiben. Dementsprechend kann das Ergebnis der Zusammenfassungsoperation, das in Zustand941C dargestellt ist, Binden der LIDs 072-073 des Quellbereichs914 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 Meldung366 , 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/oder924 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 Ablagespeicherschicht130 einen oder mehrere LID-Bereiche sperren, während in einem oder mehreren entsprechenden Bereichen atomare Ablagespeicheroperationen fertiggestellt werden. In anderen Implementierungen kann jedoch die Ablagespeicherschicht130 ermöglichen, dass Ablagespeicheroperationen gleichzeitig innerhalb geklonten Bereichen ausgeführt werden. Im Zustand941D kann die Ablagespeicherschicht130 Ablagespeicheroperation(en) implementieren, die konfiguriert sind, Daten, die LIDs 972-973 und 982-983 zugeordnet sind, in dem Bereich924 zu überschreiben und/oder zu modifizieren. Die Ablagespeicherschicht130 kann andere Ablagespeicheroperation(en) implementieren, die konfiguriert sind, Daten, die LIDs 072-073 des Bereichs914 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 Bereichen914 und924 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-Clients106 (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 Bereiche914 und/oder924 , 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 Zustand941E 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 Zustand941F 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 Bereich914 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-Bereich924 kann die Modifikationen von Zustand941D beibehalten, ohne die Ergebnisse der in Konflikt stehenden Ablagespeicheroperation(en), die mit Referenz auf die Kennungen 072-073 vorgenommen werden, zu integrieren. Obwohl der Zustand941G die Kopien unter Verwendung der ursprünglichen geklonten LID-Bereiche 072-083914 und 974-981924 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 Adressraums132 zu erzeugen. Die Bereichszusammenfassungsoperationen, die mit Referenz auf Zustände941E –G offenbart sind, können ferner das Anhängen einer oder mehrerer persistenter Meldungen366 an das Ablagespeichermedium140 , 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/oder924 Modifizieren der LID-Bereiche914 und/oder924 durch, unter anderem, Erweitern der Bereiche914 und/oder924 , Verengen der Bereiche914 und/oder924 oder dergleichen umfassen. Erweitern eines der Bereiche914 und/oder924 kann eine entsprechende Erweiterung in den anderen Bereich umfassen, und als solche können Zuweisungsoperationen von der Zuweisung zusätzlicher LID(s) in beiden Bereichen914 und924 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 der4A –E und/oder der Zwischenabbildungsausführungsformen der5A –B implementiert sein.9D bildet eine Ausführungsform einer Bereichszusammenfassungsoperation unter Verwendung einer Referenzabbildung460 ab. Wie in Zustand943A abgebildet ist, kann Klonen des Bereichs914 Zuweisen eines LID-Bereichs924 in dem logischen Adressraum132 , Verknüpfen der Bereiche914 und924 (unter Verwendung von, unter anderem, Metadaten984 und/oder994 ) und Zuordnen der Bereiche914 und924 zu den Referenzkennungen934 in der Referenzabbildung460 umfassen. Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung366 , die konfiguriert ist, den Bereich934 in der Referenzabbildung460 den indirekten Bereichen914 und/oder924 zuzuordnen, auf dem Ablagespeichermedium140 umfassen, wie vorstehend offenbart. Der Bereich934 innerhalb der Referenzabbildung460 kann an die Ablagespeicheradressen 95-106 gebunden sein. Dementsprechend können beide Bereiche914 und924 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 Bereichs924 und Binden des neuen lokalen Eintrags 982-983 an die entsprechenden Ablagespeicheradressen 767-768 umfassen, wie im Zustand943B abgebildet ist. Zusammenfassen der Bereiche914 und924 kann Integrieren der modifizierten Daten an den Ablagespeicheradressen 767-768 in den Bereich914 in Übereinstimmung mit einer Zusammenfassungsstrategie umfassen, wie vorstehend offenbart. In der Ausführungsform von9D kann die Bereichszusammenfassungsoperation von Zustand943C Entfernen des Referenzeintrags934 und Aktualisieren der LIDs 081-083 des Bereichs914 umfassen, um die aktualisierten Daten an den Ablagespeicheradressen 767-768 zu referenzieren. Die Zusammenfassungsoperation kann ferner Speichern einer persistenten Meldung366 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 Ablagespeicherschicht130 implementiert sind.9E stellt Bereichsklon- und Bereichszusammenfassungsoperationen in Ausführungsformen dar, die einen dazwischenliegenden Adressraum umfassen, wie im Zusammenhang mit den5A –B offenbart ist. Im Zustand947A wird der VID-Bereich914 , der die VIDs 072-083 umfasst, indirekt an die Ablagespeicheradressen 95-106 gebunden durch dazwischenliegende Kennungen 272Z-283Z in der VAS-Vorwärtsabbildung560 . Die dazwischenliegenden Kennungen können Teil eines getrennten dazwischenliegenden Adressraums 2136 sein (z. B. des logischen Adressraums132 der Ablagespeicherschicht130 ). - Wie im Zustand
947B dargestellt ist, kann das Klonen des VID-Bereichs914 das Zuweisen eines neuen VID-Bereichs924 , der die VIDs 972-983 umfasst, und Zuordnen des Bereichs924 zu den dazwischenliegenden Kennungen 272Z-283Z in der VAS-Vorwärtsabbildung560 umfassen. Die Klonoperation kann ferner das Speichern einer persistenten Meldung366 , die konfiguriert ist, den VID-Bereich924 den dazwischenliegenden Adressen 272Z-283Z zuzuordnen, auf dem Ablagespeichermedium140 umfassen. Ablagespeicheroperationen können mit Referenz auf die VID-Bereiche914 und/oder924 ausgeführt werden, wie hier offenbart. Modifikationen an den VID-Bereichen914 und/oder924 können in aktualisierten Abbildungen zwischen den jeweiligen VID-Bereichen914 und/oder924 und dem Zwischenadressraum 2136 widergespiegelt sein. In Zustand947C 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-Bereiche914 und924 kann Aktualisieren der VID-Abbildungen von Bereich914 umfassen, um die aktualisierten Daten (durch die dazwischenliegenden Adressen 984Z-985Z) zu referenzieren, wie im Zustand947D 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 Meldungen366 an das Ablagespeichermedium140 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-Clients106 , wie z. B. Dateisysteme, Datenbanken und/oder dergleichen, bereitzustellen. Bezug nehmend auf9F kann ein Dateisystem906 die Ablagespeicherschicht130 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 Ablagespeicherschicht130 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 Systems900F ab, das eine Ablagespeicherschicht130 umfasst, die konfiguriert ist, ein Schließen-bis-Öffnen-Dateikonsistenzmodell zu implementieren. Das Dateisystem906 (und/oder andere Ablagespeicher-Client(en)106 ) kann die Ablagespeicherschicht130 unterstützen, Schließen-bis-Öffnen-Dateikonsistenz effizient zu implementieren. Die Ablagespeicherschicht130 kann konfiguriert sein: a) Dateien in Reaktion auf Dateiöffnungsanforderungen der Dateisystem-Clients926A –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 Ablagespeicherschicht130 kann, konfiguriert sein, die Dateidaten in einen oder mehreren Bereichsklonoperationen zu klonen, wie hier offenbart ist (z. B. unter Verwendung der Bereichsklonausführungsformen der3A –E,4A –E,5A –B und/oder dergleichen). Die Ablagespeicherschicht130 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-Client926A –N geöffnet wurde. Der Ablagespeicher-Client926A –N kann exklusiven Zugriff auf die Arbeitsversion der Datei aufweisen, und als solche kann die Arbeitsversion der Datei von Dateimodifikationen, die durch andere Clients926A –N vorgenommen werden, isoliert sein. Die Ablagespeicherschicht130 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-Clients926A –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 Client926A –N, Anwendung, Prozess und/oder dergleichen; und so weiter aufgelöst werden. - In der Ausführungsform von
9F in einem Zustand953A umfasst das Umsetzungsmodul134 Abbildungen951A zwischen den LIDs einer Datei (Datei-LIDs950A ) und Daten der Datei952A auf dem Ablagespeichermedium140 an den Ablagespeicheradressen P0–P3. Die Abbildungen951A können unter Verwendung der Vorwärtsabbildung160 , die hier offenbart ist, und/oder der einen oder mehreren Zwischenabbildungsschichten, wie im Zusammenhang mit den5A –B offenbart ist, implementiert werden. - In Zustand
953B kann die Ablagespeicherschicht130 konfiguriert sein, die Datei in Reaktion auf eine Dateiöffnungsanforderung eines Ablagespeicher-Clients (Ablagespeicher-Client926B ) zu klonen. Die Anforderung kann durch die Schnittstelle131 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-LIDs950B , die der Arbeitsversionsdatei entsprechen, und Zuordnen der Menge geklonter Kennungen950B zu denselben Dateidaten952A wie die LIDs950A der primären Version der Datei (der ursprünglichen oder konsistenten Menge logischer Kennungen950A ) umfassen kann. Die Bereichsklonoperation kann ferner Speichern einer persistenten Meldung366 auf dem Ablagespeichermedium140 umfassen, um die Dateidaten952A sowohl den primären Datei-LIDs950A als auch der Arbeitsversion der Datei-LIDs950B zuzuordnen, wie vorstehend offenbart. - In einigen Ausführungsformen können die Ablagespeicherschicht
130 und/oder das Dateisystem906 konfiguriert sein, Dateioperationen, die durch den Ablagespeicher-Client926B ausgeführt werden, zu der Arbeitsversion der Datei (der Arbeitsmenge von LIDs950B ) zu lenken. Dementsprechend können Modifikationen, die durch den Ablagespeicher-Client926B vorgenommen werden, mit Referenz auf die geklonten Datei-LIDs950B vorgenommen werden. Solche Modifikationen können den Zustand der ursprünglichen, primären Version der Datei-LIDs950A nicht beeinflussen. Deshalb kann der Ablagespeicher-Client926B die Arbeitsversion der Datei mit Referenz auf die LIDs950B modifizieren, ohne die LIDs950A der ursprünglichen, primären Version der Datei zu ändern. - Im Zustand
953C hat der Ablagespeicher-Client926B eine Ablagespeicheroperation (durch die Ablagespeicherschicht130 ) 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 Ablagespeicheradresse264 angehängt werden. In Reaktion darauf kann das Umsetzungsmodul134 die Abbildungen951B aktualisieren, um die LIDs der geklonten Arbeitsversion der Datei950B an die modifizierten Dateidaten952B an der Ablagespeicheradresse P64 zu binden. Andere LID(s), die nicht durch den Ablagespeicher-Client926B modifiziert werden, können weiterhin an die ursprünglichen, nicht modifizierten Dateidaten952A gebunden sein. Die Ablagespeicherschicht130 ist konfiguriert, die ursprünglichen Abbildungen951A zwischen den Kennungen950A der primären Version der Datei und den nicht modifizierten Dateidaten952A an den Ablagespeicheradressen P0–3 zu konservieren. - Ein weiterer Ablagespeicher-Client
926N kann eine Anforderung ausgeben, die Datei zu öffnen, bevor der Ablagespeicher-Client926B die Datei geschlossen hat. In Reaktion darauf und wie in Zustand953D abgebildet, kann die Ablagespeicherschicht130 einen weiteren Klon der primären Datei erzeugen (die primären Dateikennungen950A klonen). Die geklonten LIDs (FIDs950C ) können dem ursprünglichen Zustand der Datei ohne die Modifikationen, die durch den Ablagespeicher-Client926B mit Referenz auf den geklonten Kennungsbereich950B vorgenommen werden, entsprechen. Dementsprechend können die geklonten LIDs950C auf die ursprünglichen, nicht modifizierten Dateidaten952A an den Ablagespeicheradressen P0–3 abgebildet951C werden. Der Ablagespeicher-Client926N kann Ablagespeicheroperationen mit Referenz auf den neuen geklonten Dateikennungsbereich950C parallel mit dem Ablagespeicher-Client926B ausführen. Änderungen, die durch die Clients926B und926N vorgenommen werden, können innerhalb ihrer jeweiligen LID-Bereiche950B und950C isoliert sein und können als solche nicht auf die primäre Version der Datei (LIDs950A und/oder einander) angewandt werden. - Zustand
953E stellt das Ergebnis dar, wenn der Ablagespeicher-Client926B die Datei schließt. In Reaktion auf eine Anforderung von Ablagespeicher-Client926B , die Datei zu schließen, kann die Ablagespeicherschicht130 konfiguriert sein, die Inhalte des entsprechenden Bereichs (FIDs950B ) in die primäre Version der Datei (LIDs950A ) in einer oder mehreren Bereichszusammenfassungsoperationen zusammenzufassen. Die Änderungen können jedoch nicht in die Version der Datei, die durch den Ablagespeicher-Client926N verwendet wird (FIDs950C ), zusammengefasst werden; der Ablagespeicher-Client926N kann keinen Zugriff auf die Modifikationen haben, bis der Client926N 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-Bereich950B vorgenommen werden, in den LID-Bereich950A der primären Version der Datei zusammenzufassen. In der Ausführungsform von9F umfasst die Bereichszusammenfassungsoperation Aktualisieren der Abbildungen951A der primären Datei-LIDs950A , um die modifizierten Dateidaten952B an der Ablagespeicheradresse P64 zu referenzieren. Die Daten, die nicht durch den. Client924B modifiziert wurden, können an die ursprünglichen, nicht modifizierten Dateidaten952A 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 Dateidaten952B an der Ablagespeicheradresse P64 der einen oder den mehreren aus den LIDs950B zuzuordnen (im Gegensatz zu den LIDs950A , die der primären Version der Datei zugeordnet sind). Die Bereichszusammenfassungsoperation kann deshalb ferner Anhängen einer persistenten Meldung366 , die konfiguriert ist, eine oder mehrere aus dem Bereich von LIDs950A den modifizierten Dateidaten952B an der Ablagespeicheradresse P64 zuzuordnen, an das Ablagespeichermedium140 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 Umsetzungsmodul134 konfiguriert sein, die Zuweisung der LIDs des Bereichs950B aufzuheben. - Der Client
926N kann die Datei mit Referenz auf die Kennungen950C der geschlossenen Datei modifizieren. Wie in Zustand953F von9G abgebildet, kann der Ablagespeicher-Client926N eine oder mehrere Operationen ausführen, die in Konflikt mit den durch den Client926B implementierten Modifikationen stehen. Die Modifikationen können auftreten, bevor der Client950B die Datei geschlossen hat (bevor die Modifikationen von Client926B auf die LIDs950A der primären Version der Datei wie in Zustand953E angewandt worden sind). Als solche sind die LIDs950A auf die ursprünglichen, nicht modifizierten Dateidaten952A abgebildet951A , eine oder mehrere der Kennungen des Bereichs950B , die dem Ablagespeicher-Client926E zugewiesen sind, sind auf die modifizierten Dateidaten952B abgebildet, und eine oder mehrere aus den Kennungen von Bereich950C , die dem Ablagespeicher-Client926N zugewiesen sind, sind auf die in Konflikt stehenden Dateidaten952C abgebildet. Die LIDs950B und950C , die nicht modifizierten Daten entsprechen, können weiterhin die ursprünglichen, nicht modifizierten Dateidaten952A referenzieren. - Die Clients
926E und926C können schließlich ihre jeweiligen Dateien schließen, was das Zusammenfassen der Modifikationen, die mit Referenz auf die jeweiligen LID-Bereiche950B und950C vorgenommen wurden, in den Bereich950A der primären Version der Datei umfassen kann. Die Ablagespeicherschicht130 kann konfiguriert sein, Konflikte zwischen den Bereichen950B und950C gemäß einer Zusammenfassungsstrategie944 aufzulösen. In einigen Ausführungsformen kann die Zusammenfassungsstrategie944 auf der Reihenfolge, in der die Ablagespeicher-Clients926B und926C 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 Zustand953G dargestellt ist, kann der Ablagespeicher-Client950B die Anforderung zum Schließen der Datei vor dem Ablagespeicher-Client950C ausgeben. Nachdem der Client950B die Datei schließt, kann die Ablagespeicherschicht130 Modifikationen, die mit Referenz auf den Bereich950B vorgenommen werden, in den Bereich950A der primären Version der Datei zusammenfassen (wie in Zustand953E von9F dargestellt ist). Das Schließen der Datei durch den Client926C kann zum Überschreiben einer der Modifikationen, die durch den Ablagespeicher-Client950B vorgenommen werden (modifizierte Daten952B ), mit den Daten952C führen, wie in dem Zustand953G von9G dargestellt ist. Die Daten an P3 und P64 können zum Entfernen aus dem Ablagespeichermedium140 markiert sein, da sie nicht mehr durch die primäre Datei oder eine aktuelle Arbeitsversion der Datei referenziert werden. Wie vorstehend offenbart kann die Ablagespeicherschicht130 konfiguriert sein, andere Zusammenfassungsstrategien, wie z. B. eine prioritätsbasierte Zusammenfassungsstrategie944 , zu implementieren. Eine prioritätsbasierte Zusammenfassungsstrategie kann Konflikte basierend auf relativen Prioritäten der Ablagespeicher-Clients926E und/oder926C auflösen. In Zustand953H kann der Ablagespeicher-Client926C die Datei nach dem Ablagespeicher-Client926B schließen; die Modifikationen von Ablagespeicher-Client926B können jedoch aufgrund der Zusammenfassungsstrategie944 , die angibt, dass die Modifikationen von Ablagespeicher-Client926B eine höhere Priorität aufweisen als in Konflikt stehende Modifikationen von Ablagespeicher-Client926C , beibehalten werden. Dementsprechend können die LIDs950A der primären Version der Datei weiterhin die modifizierten Dateidaten952B des Ablagespeicher-Client926B referenzieren, und in Konflikt stehende Dateidaten des Ablagespeicher-Clients926C (Daten952C an P96) können gemeinsam mit den obsoleten Dateidaten952A an P3 zur Speicherbereinigung markiert werden. In anderen Ausführungsformen kann die Zusammenfassungsstrategie944 eine Kopie-bei-Konflikt-Strategie umfassen, die zum Erzeugen von zwei primären Versionen der Datei führt. In solchen Ausführungsformen, wie in Zustand953I dargestellt, kann die Ablagespeicherschicht130 konfiguriert sein, die Modifikationen des Ablagespeicher-Client926B in die primäre Datei zu integrieren (unter Verwendung primärer Datei-LIDs950A ), und kann die in Konflikt stehenden Modifikationen des Ablagespeicher-Client926C in eine neue Version der Datei integrieren (Dateikennungen950D ). - Obwohl hier spezielle Ausführungsformen einer Zusammenfassungsstrategie
944 beschrieben sind, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt und könnte jede geeignete Zusammenfassungsstrategie944 implementieren und/oder integrieren. Die Zusammenfassungsstrategie944 kann innerhalb der Ablagespeicherschicht130 und/oder des Dateisystems906 implementiert sein. In einigen Ausführungsformen kann die Zusammenfassungsstrategie944 der Ablagespeicherschicht130 und/oder des Dateisystems906 durch die Schnittstelle131 der Ablagespeicherschicht130 konfiguriert werden. Die Zusammenfassungsstrategie944 kann für alle Dateioperationen gelten, die durch die Ablagespeicherschicht130 ausgeführt werden. Alternativ oder zusätzlich kann die Zusammenfassungsstrategie944 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 Systems1000 , das eine Ablagespeicherschicht130 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 Ablagespeicherschicht130 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 Ablagespeichermodul1036 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 Schnittstelle131 APIs und/oder Schnittstellen zum Ausführen vektorisierter atomarer Ablagespeicheroperationen bereit. Ein Vektor kann als eine Datenstruktur definiert sein, wie z. B.: - 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).
-
- 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:
- 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:
- 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 - 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 Adressraums132 sein, der nicht für die Ablagespeicher-Clients106 zugreifbar ist. Alternativ kann der In-Prozess-Bereich1032 in einem getrennten Namensraum (z. B. der Referenzabbildung460 und/oder einem anderen dazwischenliegenden Adressraum) implementiert sein. Nachdem die atomare Ablagespeicher-Operation innerhalb des In-Prozess-Bereichs1032 fertiggestellt worden ist (z. B. alle einzelnen I/O-Vektoren verarbeitet worden sind), kann das atomare Ablagespeichermodul1036 eine atomare Bereichsverschiebungsoperation ausführen, um Daten der atomaren Ablagespeicheranforderung von dem In-Prozess-Bereich1032 zu dem/den Zielbereich(en) in dem logischen Adressraum132 zu verschieben. Wie vorstehend offenbart kann die Bereichsverschiebungsoperation Schreiben einer einzigen persistenten Meldung366 in das Ablagespeichermedium140 umfassen. - Ein Ablagespeicher-Client
106 kann eine atomare Schreibanforderung ausgeben, die zu den Vektoren1040A und1040B gehört. Wie in10 dargestellt, können, bevor die atomare Ablagespeicheroperation ausgeführt wird (in Zustand1015A ) die LIDs 10-13 von Vektor1040A an die Ablagespeicheradressen P1–P4 gebunden sein, und die Kennungen 36-38 von Vektor1040B können an die Ablagespeicheradressen P6–8 gebunden sein. Wie in Zustand1015B abgebildet, kann das atomare Ablagespeichermodul1036 konfiguriert sein, die atomaren Ablagespeicheroperationen zu einem In-Prozess-Bereich1032 zu lenken. Wie vorstehend offenbart kann der In-Prozess-Bereich1032 einen festgelegten Bereich des logischen Adressraums132 umfassen und/oder kann in einem getrennten Namensraum implementiert sein. Der Vektor1042A in dem In-Prozesse-Bereich1032 kann den LIDs 10-13 von Vektor1040A entsprechen, und der In-Prozess-Vektor1042B kann den LIDs 36-38 von Vektor1040B entsprechen. Die Vektoren1042A und1042B können Metadaten umfassen, die konfiguriert sind, die entsprechenden Vektoren1040A und1040B in dem logischen Adressraum132 (und/oder entsprechende Einträge in der Vorwärtsabbildung160 ) zu referenzieren. Implementieren der atomaren Ablagespeicheroperationen in Zustand1015B kann Anhängen von Daten an das Ablagespeichermedium140 in Zuordnung zu den Kennungen Z0–Z3 und/oder Z6–Z6 der In-Prozess-Vektoren1042A und1042B umfassen. Andere Ablagespeicheroperationen können gleichzeitig mit den und/oder verschachtelt innerhalb der atomaren Vektoroperationen innerhalb des In-Prozess-Bereichs1032 ausgeführt werden. - Falls die atomare Ablagespeicheroperation vor der Fertigstellung fehlschlägt, können die ursprünglichen Daten der Vektoren
1040A und1040B 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-Bereichs1032 ), und die Daten können entfernt werden. - Wie in
10 dargestellt ist, können im Zustand1015B die atomare(n) Ablagespeicheroperation(en) fertiggestellt sein, was Anhängen von Daten an das Ablagespeichermedium140 in Zuordnung zu Kennungen des In-Prozess-Bereichs1032 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-Vektoren1042A und1042B geschrieben sind, zu modifizieren, so dass sie der logischen Zielschnittstelle in dem logischen Adressraum132 entsprechen. Die Bereichsverschiebungsoperation kann Ausführen einer atomaren Ablagespeicheroperation umfassen, um eine persistenten Meldung366 auf dem Ablagespeichermedium140 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 der4A –E und/oder die Zwischenabbildungsausführungsformen der5A –B enthalten, jedoch nicht darauf beschränkt sind. -
11 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens1100 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 Schritt1120 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-Client106 , der Ablagespeicherschicht130 (z. B. dem Deduplizierungsmodul374 ) 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 Ablagespeichermedium140 umfassen. Die persistente Meldung kann verwendet werden, um die logische Operation persistent und absturzsicher zu machen, so dass die modifizierte logische Schnittstelle (z. B. Ablagespeichermetadaten135 ) der Daten aus den Inhalten des Ablagespeichermediums140 rekonstruiert werden kann (falls notwendig). Schritt1120 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 Schritt1130 ) tritt auf, bevor das kontextabhängige Format der Daten auf dem Ablagespeichermedium140 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 Verfahrens1100 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 Schritt1120 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 Schritt1120 und/oder andere Ablagespeicheroperationen, die zu der modifizierten logischen Schnittstelle gehören, mit sich bringen kann. Deshalb kann die Ablagespeicherschicht130 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 Schritt1130 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 Ablagespeichermedium140 umfassen, so dass es mit der modifizierten logischen Schnittstelle von Schritt1120 konsistent ist. Schritt1140 kann Neuschreiben und/oder Verschieben der Daten zu einem weiteren Medienablagespeicherort auf dem Ablagespeichermedium140 umfassen. Wie vorstehend beschrieben kann Schritt1140 implementiert sein unter Verwendung eines Prozesses, der außerhalb des kritischen Pfads von Schritt1120 und/oder anderer Ablagespeicheranforderungen, die durch die Ablagespeicherschicht130 ausgeführt werden, ist; Schritt1140 kann durch ein weiteres, autonomes Modul implementiert sein, wie z. B. ein Medienmanagementmodul370 , Deduplizierungsmodul374 oder dergleichen. Dementsprechend kann das kontextabhängige Format der Daten unabhängig vom Bedienen anderer Ablagespeicheroperationen und/oder Anforderungen aktualisiert werden. Als solcher kann Schritt1140 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 Ablagespeichermetadaten135 , 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 Ablagespeicherschicht130 die Ablagespeichermetadaten135 (z. B. die Vorwärtsabbildung160 ) dementsprechend aktualisieren. Die Aktualisierungen können Entfernen einer oder mehrerer Verknüpfungen mit Referenzeinträgen in einer Referenzabbildung460 und/oder Ersetzen indirekter Einträge durch lokale Einträge umfassen, wie vorstehend beschrieben. Schritt1140 kann ferner Ungültigmachen und/oder Entfernen einer persistenten Meldung von dem Ablagespeichermedium140 in Reaktion auf Aktualisieren des kontextabhängigen Formats der Daten und/oder Beibehalten der Ablagespeichermetadaten135 umfassen, wie vorstehend offenbart. -
12 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens1200 zum Managen einer logischen Schnittstelle der Daten, die in einem kontextabhängigen Format auf einem nichtflüchtigen Ablagespeichermedium gespeichert sind. Das Verfahren1200 kann durch eines oder mehrere Module und/oder Komponenten der Ablagespeicherschicht130 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 Schritt1220 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 Schritt1220 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). Schritt1230 kann Zugreifen auf Ablagespeichermetadaten135 , wie z. B. die Vorwärtsabbildung160 , die Referenzabbildung460 und/oder die dazwischenliegenden Adressraum, wie vorstehend beschrieben, umfassen, um zu bestimmen, ob die persistenten Metadaten (z. B. logischen Schnittstellenmetadaten) der Daten mit den Ablagespeichermetadaten135 der Daten konsistent sind. Falls die persistenten Metadaten nicht mit den Ablagespeichermetadaten135 konsistent sind (z. B. die Daten unterschiedlichen LIDs zuordnen, wie vorstehend beschrieben), fährt der Ablauf mit Schritt1240 fort; andernfalls fährt der Ablauf mit Schritt1250 fort. - Schritt
1240 kann Aktualisieren des kontextabhängigen Formats der Daten umfassen, so dass es mit der logischen Schnittstelle der Daten konsistent ist. Schritt1240 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 Ablagespeichermetadaten135 rekonstruiert werden (falls notwendig). Schritt1250 kann ferner Aktualisieren der Ablagespeichermetadaten135 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 Verfahrens1300 zum Managen logischer Schnittstellen von Daten, die in einem kontextabhängigen Format gespeichert sind. Schritt1315 kann Identifizieren von Duplikatdaten auf einer oder mehrerer Ablagespeichervorrichtungen120 umfassen. Schritt1315 kann durch ein Deduplizierungsmodul374 , das innerhalb der Ablagespeicherschicht130 arbeitet, ausgeführt werden. Alternativ kann Schritt1320 durch die Ablagespeicherschicht130 ausgeführt werden, wenn Ablagespeicheroperationen ausgeführt werden. - Schritt
1315 kann Bestimmen und/oder Verifizieren umfassen, dass das Ablagespeichermedium140 Duplikatdaten umfasst (oder bereits Daten einer Schreib- und/oder Modifizieranforderung umfasst). Dementsprechend kann Schritt1320 innerhalb des Pfads einer Ablagespeicheroperation auftreten (z. B. wenn oder bevor Daten auf das Ablagespeichermedium140 geschrieben werden) und/oder kann außerhalb des Pfads von bedienenden Ablagespeicheroperationen auftreten (z. B. Duplikatdaten identifizieren, die bereits auf dem Ablagespeichermedium140 gespeichert sind). Schritt1320 kann Erzeugen und/oder Pflegen von Datensignaturen in den Ablagespeichermetadaten135 und Verwenden der Signaturen, um Duplikatdaten zu identifizieren, umfassen. - In Reaktion auf Identifizieren der Duplikatdaten an Schritt
1315 kann die Ablagespeicherschicht130 (oder ein anderes Modul, wie z. B. das Deduplizierungsmodul374 ) 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 Schritt1320 kann Aktualisieren von Ablagespeichermetadaten135 und/oder Speichern einer persistenten Meldung auf den nichtflüchtigen Ablagespeichermedien135 umfassen, wie vorstehend beschrieben. Schritt1320 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 Schritte1330 und1340 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 Ablagespeichermedium140 umfassen, wie vorstehend beschrieben. -
14 ist ein Ablaufdiagramm einer Ausführungsform einer Bereichszusammenfassungsoperation, die durch die hier offenbarte Ablagespeicherschicht130 implementiert ist. Schritt1410 kann Klonen einer Menge von LIDs innerhalb eines logischen Adressraums132 umfassen. Klonen der LIDs kann Referenzieren derselben Menge von Daten auf dem Ablagespeichermedium140 (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 Ablagespeichermedium140 gebunden sein können. Schritt1410 kann Zuweisen einer oder mehrerer anderer Mengen von LIDs innerhalb des logischen Adressraums132 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). Schritt1410 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 Schritt1410 Modifizieren der logischen Schnittstelle zu den Daten umfassen, um die Daten zwei oder mehr unterschiedlichen Mengen von LIDs zuzuordnen. In einigen Ausführungsformen umfasst Schritt1410 Zuweisen einer oder mehrerer Mengen von LIDs innerhalb des logischen Adressraums132 und Binden der LIDs an dieselbe Menge von Ablagespeicheradressen. Alternativ oder zusätzlich kann Schritt1410 Erzeugen eines oder mehrerer Referenzeinträge innerhalb einer Referenzabbildung460 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 den4A –E offenbart ist. Alternativ kann der Schritt1410 durch Verwenden einer oder mehrerer Zwischenabbildungsschichten implementiert werden (z. B. wie im Zusammenhang mit den5A –B offenbar ist). Schritt1410 kann ferner Verknüpfen der zwei oder mehr Mengen von LIDs durch, unter anderem, Metadaten984 und/oder994 , die den LIDs zugeordnet sind, umfassen. Die Metadaten984 und/oder994 können konfiguriert sein anzugeben, dass die LID-Mengen Klone derselben Ablagespeicherentität (z. B. Versionen derselben Datei) repräsentieren. Die Metadaten984 und/oder994 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 Meldung366 , die konfiguriert ist, die Klonoperation von Schritt1410 persistent und absturzsicher zu machen, auf dem Ablagespeichermedium140 umfassen. Die persistente Meldung366 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 Schritt1410 umfassen. Die Ablagespeicheroperationen können in Reaktion auf Anforderungen, die durch die Schnittstelle131 von einem oder mehreren Ablagespeicher-Clients106 empfangen werden, ausgeführt werden. Die Ablagespeicheroperationen können Anhängen von Daten an das Ablagespeichermedium140 umfassen. Die Ablagespeicheroperationen können deshalb Modifizieren der Zuordnungen und/oder Bindungen zwischen LIDs in einer oder mehreren LID-Mengen und Ablagespeicherorten auf dem Ablagespeichermedium140 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. Schritt1430 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ärtsabbildung160 , Entfernen gemeinsam verwendeter Referenzen auf Ablagespeicherorte aus einer Referenzzählwert-Datenstruktur, Entfernen von Referenzeinträgen aus einer Referenzabbildung460 , Entfernen von Referenzen in einer Zwischenabbildungsschicht und/oder dergleichen umfassen kann. Schritt1430 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 Ablagespeichermedium140 inkonsistent sein. Deshalb kann Schritt1430 Anhängen einer oder mehrerer persistenter Meldungen366 auf dem Ablagespeichermedium140 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). Schritt1430 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 Verfahrens1500 für Bereichszusammenfassungsoperationen. Schritt1520 kann Empfangen einer Anforderung, eine logische Kopie eines LID-Bereichs zu erzeugen, umfassen. Die Anforderung kann von einem Ablagespeicher-Client106 durch eine Schnittstelle131 empfangen werden und/oder kann Teil einer API höherer Ebene sein, die durch die Ablagespeicherschicht130 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 Adressraum132 umfassen, um die Anforderung zu bedienen. Die Zuweisung von Schritt1530 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 Ablagespeicherschicht130 zusätzliche physikalische Ablagespeicherkapazität für logische Kopieroperationen reservieren, die eine Kopie-bei-Konflikt-Zusammenfassungsstrategie aufweisen. Schritt1530 kann ferner Zuweisen des Klons innerhalb eines festgelegten Abschnitts oder Segments der logischen Adressraums132 umfassen (z. B. eines Bereichs, der zum Gebrauch mit logischen Kopier- und/oder Klonoperationen dediziert ist). Dementsprechend kann Schritt1530 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 Schritt1530 zugewiesen sind, zu referenzieren. Schritt1540 kann Speichern einer persistenten Meldung366 auf dem Ablagespeichermedium140 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 Schritt1560 fort; andernfalls bleibt der Ablauf bei Schritt1550 . - 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 Schritt1560 kann Zugreifen auf Metadaten984 und/oder994 umfassen, die die Synchronisationsstrategie des Klons umfassen und/oder referenzieren können. - Schritt
1570 kann Ausführen der Operationen (falls vorhanden), die in Schritt1560 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 Adressraum132 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 Verfahrens1600 zum Implementieren von Bereichsklon- und/oder Bereichszusammenfassungsoperationen. Schritt1610 kann Klonen eines LID-Bereichs umfassen, wie vorstehend offenbart. Schritt1610 kann Klonen einer Menge von LIDs, die Daten zugeordnet sind, die in dem Ablagespeichermedium140 an jeweiligen Ablagespeicheradressen gespeichert sind, umfassen. Schritt1610 kann deshalb Zuordnen von zwei oder mehr unterschiedlichen Mengen von LIDs zu derselben Menge von Ablagespeicherorten (z. B. denselben Daten) umfassen. Schritt1610 kann ferner Speichern einer oder mehrerer persistenter Meldungen366 auf dem Ablagespeichermedium140 und/oder Neuschreiben der Daten in einem aktualisierten kontextabhängigen Format umfassen, wie vorstehend offenbart. Schritt1610 kann ferner Verknüpfen der zwei oder mehreren Mengen von LIDs durch, unter anderem, Metadaten984 und/oder994 enthalten. Die Metadaten984 und/oder994 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. Schritt1620 kann Synchronisieren von Zuweisungsoperationen zwischen geklonten Bereichen umfassen. Die Ablagespeicheroperationen von Schritt1620 können Anhängen von Daten an das Ablagespeichermedium140 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 Schritt1610 zusammenzufassen. Die Zusammenfassungsanforderung kann durch die Schnittstelle131 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 auf9C kann Schritt1640 Identifizieren eines Zusammenfassungskonflikts in Zustand941D in Reaktion auf Bestimmen, dass die LIDs 072-073 im Bereich914 modifiziert wurden, wie auch die entsprechenden LIDs 972-973 in Bereich924 , umfassen. Als solcher kann Schritt1640 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 Schritt1640 identifiziert werden, umfassen. Schritt1650 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. Schritt1650 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 Verfahrens1700 zum Implementieren von Öffnen-bis-Schließen-Dateikonsistenz unter Verwendung der Ablagespeicherschicht130 , die hier offenbart ist. - Schritt
1710 kann Klonen eines LID-Bereichs, der Daten einer Datei entspricht, umfassen. Wie vorstehend offenbart kann ein Dateisystem906 (und/oder ein anderer Ablagespeicher-Client106 ) konfiguriert sein, die Ablagespeicherschicht130 zu unterstützen, ein Schließen-bis-Öffnen-Konsistenzmodell zu implementieren. Dementsprechend kann Schritt1710 in Reaktion auf eine Anforderung von dem Dateisystem906 und/oder in Reaktion auf eine Anforderung von einem Client, die Datei zu öffnen, ausgeführt werden. Schritt1710 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 Schritt1710 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 Schritt1710 kann ausgeführt werden unter Verwendung irgendeiner der hier offenbarten Bereichsklonausführungsformen, die die mehreren Referenzausführungsformen der3A –E, die Referenzindexausführungsformen der4A –E und/oder die Zwischenabbildungsschichtausführungsformen der5A –B enthalten. Schritt1710 kann ferner Bereitstellen einer oder mehrerer der LID-Mengen für einen Ablagespeicher-Client106 umfassen, wie z. B. den Ablagespeicher-Client106 , der die Dateiöffnungsoperation angefordert hat. Der Ablagespeicher-Client kann mit der Arbeitsmenge von LIDs versorgt werden. Alternativ oder zusätzlich kann die Ablagespeicherschicht130 den Ablagespeicher-Client106 mit der ursprünglichen Konsistenzmenge von LIDs (oder einer anderen Menge) versorgen, und die Ablagespeicherschicht130 kann Ablagespeicheranforderungen des Ablagespeicher-Clients106 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 Ablagespeichermedium140 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. Schritt1722 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 Schritt1710 . - 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. Schritt1730 kann in Reaktion darauf, dass der Client die Datei schließt, ausgeführt werden. Schritt1730 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 Schritt1710 erzeugt wird, Vorrang haben vor Modifikationen, die mit Referenz auf eine andere Arbeitsmenge von LIDs eines anderen Ablagespeicher-Client106 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 Meldung366 auf dem Ablagespeichermedium140 , Ermöglichen von Zugriff auf Daten, die auf dem Ablagespeichermedium140 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 1, das ferner Binden der Arbeitsmenge logischer Kennungen an Ablagespeicheradressen des einen oder der mehreren Ablagespeicherorte umfasst.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
2014
- 2014-06-12 US US14/303,419 patent/US20150032982A1/en not_active Abandoned
- 2014-07-23 JP JP2016529870A patent/JP6290405B2/ja active Active
- 2014-07-23 DE DE112014003076.7T patent/DE112014003076T5/de not_active Withdrawn
- 2014-07-23 WO PCT/US2014/047895 patent/WO2015013452A1/en active Application Filing
- 2014-07-23 KR KR1020167003843A patent/KR101718670B1/ko active IP Right Grant
- 2014-07-25 TW TW103125493A patent/TWI659318B/zh active
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 |