DE102013211071A1 - Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung - Google Patents
Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung Download PDFInfo
- Publication number
- DE102013211071A1 DE102013211071A1 DE102013211071.5A DE102013211071A DE102013211071A1 DE 102013211071 A1 DE102013211071 A1 DE 102013211071A1 DE 102013211071 A DE102013211071 A DE 102013211071A DE 102013211071 A1 DE102013211071 A1 DE 102013211071A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- file system
- journal
- hash key
- read
- 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.)
- Granted
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims abstract description 35
- 239000003999 initiator Substances 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 9
- 230000005055 memory storage Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 122
- 230000006870 function Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 206010000210 abortion Diseases 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- 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/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/0608—Saving storage space on storage 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/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
- G06F3/0641—De-duplication techniques
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- Hintergrund
- Die vorliegende Patentanmeldung bezieht sich im Allgemeinen auf eine verbesserte Datenverarbeitungsvorrichtung und ein verbessertes Datenverarbeitungsverfahren sowie im Besonderen auf Mechanismen für das Verbessern der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Daten-Deduplizierung.
- Dateisysteme sind üblicherweise anfällig für Fehler wie z.B. Knotenabstürze aufgrund von Stromausfällen, Software-Fehlern und Ähnlichem. Bei derartigen Fehlern können Aktualisierungen des Dateisystems verloren gehen, die nicht auf die Platte geschrieben wurden. Dies kann zu einem inkonsistenten Zustand des Dateisystems führen. Ein einfaches Beispiel hierfür ist eine Datei, die erstellt wurde, deren übergeordnetes Verzeichnis jedoch nicht aktualisiert wurde, um den Verzeichniseintrag für die Datei zu enthalten. Wenn das Dateisystem wieder online ist, ist die Datei möglicherweise in dem Verzeichnis nicht vorhanden, obwohl ihre Datenstruktur, im Allgemeinen als Dateiindex bezeichnet, im Dateisystem verbleibt. Ein weiteres Beispiel ist ein Datei-Schreibvorgang, der in den Dateisystempuffern vorhanden war, vor dem Stromausfall jedoch nicht auf die Platte gelangte.
- Um diese Arten von Fehlern zu bewältigen, verwenden Dateisysteme in der Regel einen Mechanismus, der als Dateisystem-Konsistenzprüfung (File System Consistency Check, fsck) bezeichnet wird. Die Dateisystem-Konsistenzprüfung durchläuft üblicherweise jede einzelne Datei in dem Dateisystem und ermittelt, ob sie konsistent ist, d.h. ob sich die Datei in der Verzeichnisbaumhierarchie befindet. Je nach Architektur kann das Dateisystem auch zusätzliche Operationen durchführen, wie z.B. das Überprüfen auf eine Beschädigung der Datei anhand einer Prüfsumme oder eines Hash-Algorithmus. Dies kann auch auf die Blockebene ausgedehnt werden, wobei jeder Block auf der Platte (einschließlich des Superblocks) auf Konsistenz gegengeprüft werden kann. Die fsck-Laufzeit ist linear abhängig von der Größe des Dateisystems (d.h. der Anzahl von Dateien und ihrer Größe). Die Dateisystem-Konsistenzprüfung führt normalerweise zu einer Betriebsunterbrechung; das Dateisystem kann während der Konsistenzprüfung nicht verwendet werden. Dies führt dazu, dass während dieser Zeit nicht auf das Dateisystem zugegriffen werden kann.
- Um die Auswirkung der fsck zu verringern, nutzen moderne Dateisysteme einen Mechanismus, der als Journaling oder Journalführung bezeichnet wird. Wie der Name sagt, handelt es sich bei einem Journal um ein Protokoll von Transaktionen, die während der Lebensdauer des Dateisystems durchgeführt werden. Ein Journal ist unerlässlich, um die Auswirkung von Fehlern wie beispielsweise Stromausfällen auf ausstehende, noch nicht festgeschriebene Daten in einem Dateisystem ohne den fsck-bedingten Mehraufwand zu verringern. Mit dem Journal kann zudem das Dateisystem nach einem Absturz innerhalb kurzer Zeit wieder online gebracht werden.
- Auf einer sehr grundlegenden Ebene schreiben Journaling-Dateisysteme für jede Transaktion, die das Dateisystem ändert (z.B. eine Dateierstellung), üblicherweise eine Startmarkierung in das Journal. Wenn die Transaktion abgeschlossen ist, wird eine Festschreibmarkierung in das Journal geschrieben. Je nach gewünschter Zuverlässigkeitssemantik sind verschiedene Journalführungsebenen möglich. Die Metadaten-Journalführung schreibt nur die Dateisystemtransaktionen mit den Start- und Festschreibmarkierungen in das Journal. Auch Daten können in das Journal geschrieben werden. Dies verbessert die Zuverlässigkeit der Journalführung, indem das Dateisystem in die Lage versetzt wird, sich von Datenbeschädigungen zu erholen.
- Die beste Zuverlässigkeitssemantik lässt sich erzielen, indem erzwungen wird, dass jede Transaktion vor der Rückgabe an den Initiator auf die Platte festgeschrieben wird. Allerdings hat dies den Nachteil einer vermehrten Platten-Eingabe/Ausgabe und einer verminderten Leistung. Erschwert wird dieses Leistungsproblem noch durch das Problem der Bewahrung der Anordnungssemantik, die erfordert, dass das Dateisystem erst dann an den Initiator zurückgegeben wird, nachdem sich die Festschreibmarkierung auf der Platte befindet. Dem Leistungsverlust kann entgegengewirkt werden, indem eine Gruppe von Transaktionen gebündelt und das Journal in regelmäßigen Abständen auf die Platte geschrieben wird. Dies verringert jedoch die Zuverlässigkeit des Journals, da sich manche Transaktionen womöglich nicht auf der Platte befinden, wenn ein Fehler auftritt. Die Journalführung ist ein Kompromiss zwischen Leistung und der gewünschten Zuverlässigkeitssemantik.
- Die Halbleiterspeicherung bietet eine permanente Speicherung auch bei Stromausfällen. Halbleiterlaufwerke (Solid State Drives, SSDs) beruhen in der Regel auf einem NAND-Flash-Speicher. In der Cache-Hierarchie sind SSDs zwischen dem dynamischen Arbeitsspeicher (Dynamic Random Access Memory, DRAM) und Platten einzuordnen. SSDs weisen üblicherweise asymmetrische Zugriffszeiten auf; Leseoperationen haben geringere Latenzzeiten als Schreiboperationen. Halbleitereinheiten verfügen zudem über eine begrenzte Anzahl von Schreibzyklen. Bei manchen SSD-Arten können die Schreibzeiten vergleichbar mit denjenigen von magnetischen Festplattenlaufwerken (Hard Disk Drives, HDDs) sein.
- Die Deduplizierung ist eine Methode, mit der sich doppelt vorhandene Daten verringern lassen. Die Daten-Deduplizierung gewinnt bei Online-Speichersystemen zunehmend an Bedeutung. Es gibt verschiedene Arten der Deduplizierung. In ihrer einfachsten Form arbeitet die Deduplizierung auf der Anwendungsebene. So erzeugt z.B. eine an eine Gruppe gesendete eMail mit einem Anhang mehrere unterschiedliche Kopien desselben Dokuments. Für die interne Datenübertragung innerhalb eines Unternehmens kann dies den Speicherbedarf deutlich erhöhen. Ein eMail-System mit Deduplizierung erkennt dagegen die mehreren unterschiedlichen Kopien und speichert nur eine einzige Kopie auf einem wie auch immer gearteten gemeinsamen Server.
- Die Deduplizierung lässt sich auch auf der Ebene des Dateisystems oder darunter auf der Plattenebene realisieren. Generell gibt es drei verschiedene Arten von Deduplizierung: auf Datei-, Block- und Byte-Ebene. Wie der Name schon sagt, berechnet die Deduplizierung auf Dateiebene eine Prüfsumme bzw. einen Hash-Wert der gesamten Datei. Bei Dateien mit derselben Hash-Signatur wird davon ausgegangen, dass sie identische Daten enthalten und vollständig durch eine Hash-Signatur ersetzt werden können. Die Deduplizierung auf Blockebene verwendet dieselbe Methode mit der Ausnahme, dass die Granularität in einem Plattenblock besteht. Die Granularität für die Deduplizierung auf Byte-Ebene als letzter Option ist ein Byte-Fenster. Die Byte-Deduplizierung bietet potenziell den höchsten Grad der Deduplizierung darstellen, ist aber hochgradig rechenintensiv.
- Zusammenfassung
- Bei einer veranschaulichenden Ausführungsform wird in einem Datenverarbeitungssystem ein Verfahren für die zuverlässige, asynchrone Deduplizierung auf der Grundlage einer Halbleitereinheit bereitgestellt. Das Verfahren weist – als Reaktion auf das Empfangen einer Schreibanforderung zum Schreiben von Daten in das Dateisystem – das Senden der Schreibanforderung an das Dateisystem auf. Das Verfahren weist ferner parallel zum Senden der Schreibanforderung an das Dateisystem das Berechnen eines Hash-Schlüssels der Schreibdaten auf. Das Verfahren weist ferner das Suchen des Hash-Schlüssels in einer Deduplizierungstabelle auf, wobei die Deduplizierungstabelle in einem Speicher oder einer Halbleiterspeichereinheit gespeichert ist. Das Verfahren weist ferner – als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle nicht vorhanden ist – das Schreiben der Schreibdaten in eine Speichereinheit, das Schreiben einer Journaltransaktion, die den Hash-Schlüssel aufweist, und das Aktualisieren der Deduplizierungstabelle auf, so dass sie auf die Schreibdaten in der Speichereinheit verweist.
- Bei anderen veranschaulichenden Ausführungsformen wird ein Computerprogrammprodukt bereitgestellt, das ein computernutzbares oder computerlesbares Medium mit einem computerlesbaren Programm aufweist. Wenn das computerlesbare Programm in einer Datenverarbeitungseinheit ausgeführt wird, veranlasst es die Datenverarbeitungseinheit, verschiedene einzelne sowie Kombinationen der Operationen durchzuführen, die oben mit Blick auf die das Verfahren veranschaulichende Ausführungsform erläutert wurden.
- Bei einer weiteren veranschaulichenden Ausführungsform wird ein System/eine Vorrichtung bereitgestellt. Das System/die Vorrichtung kann einen oder mehrere Prozessoren und einen Speicher aufweisen, der mit dem einen oder den mehreren Prozessoren verbunden ist. Der Speicher kann Befehle aufweisen, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, verschiedene einzelne sowie Kombinationen der Operationen durchzuführen, die oben mit Blick auf die das Verfahren veranschaulichende Ausführungsform erläutert wurden.
- Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden ausführlichen Beschreibung der beispielhaften Ausführungsformen der vorliegenden Erfindung beschrieben bzw. werden für den Fachmann in diesem Zusammenhang offensichtlich.
- Kurzbeschreibung der verschiedenen Ansichten der Zeichnungen
- Die Erfindung sowie eine bevorzugte Art der Verwendung und weitere Zielsetzungen und Vorteile derselben werden am deutlichsten unter Verweis auf die folgende ausführliche Beschreibung von veranschaulichenden Ausführungsformen in Verbindung mit den beigefügten Zeichnungen, bei denen:
-
1 eine bildhafte Darstellung eines beispielhaften verteilten Datenverarbeitungssystems zeigt, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können; -
2 ein Blockschaubild eines beispielhaften Datenverarbeitungssystems ist, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können; -
3 eine bildhafte Darstellung eines beispielhaften Speichersystems zeigt, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können; -
4 ein Blockschaubild ist, das eine Schreiboperation gemäß einer veranschaulichenden Ausführungsform zeigt; -
5 ein Blockschaubild ist, das eine Leseoperation gemäß einer veranschaulichenden Ausführungsform zeigt; -
6 ein Blockschaubild ist, das eine Datenwiederherstellung gemäß einer veranschaulichenden Ausführungsform zeigt; -
7 ein Blockschaubild ist, das eine Schreiboperation mit einer mangelhaften Halbleiterlaufwerksleistung gemäß einer veranschaulichenden Ausführungsform zeigt; -
8 ein Ablaufplan ist, der die Funktion eines Mechanismus für das Durchführen einer Schreiboperation in einer zuverlässigen, asynchronen Deduplizierungslösung auf der Grundlage einer Halbleitereinheit gemäß einer veranschaulichenden Ausführungsform zeigt; -
9 ein Ablaufplan ist, der die Funktion eines Mechanismus für das Durchführen einer Leseoperation in einer zuverlässigen, asynchronen Deduplizierungslösung auf der Grundlage einer Halbleitereinheit gemäß einer veranschaulichenden Ausführungsform zeigt; und -
10 ein Ablaufplan ist, der die Funktion eines Mechanismus für das Durchführen einer Wiederherstellungsoperation in einer zuverlässigen, asynchronen Deduplizierungslösung auf der Grundlage einer Halbleitereinheit gemäß einer veranschaulichenden Ausführungsform zeigt. - Ausführliche Beschreibung
- Die veranschaulichenden Ausführungsformen stellen einen Mechanismus für die zuverlässige, asynchrone Deduplizierung auf der Grundlage einer Halbleiterspeicherung bereit, um die Zuverlässigkeit der Journalführung mit geringem oder keinem Mehraufwand zu verbessern. Mit dem Mechanismus der veranschaulichenden Ausführungsformen kann sich das Dateisystem unter Umständen sowohl von der Beschädigung als auch vom Verlust von Metadaten und Daten erholen, soweit physische Beschränkungen dies zulassen. Dabei vereint der Mechanismus der veranschaulichenden Ausführungsformen zwei Methoden: die Halbleiterspeicherung und die Deduplizierung. Der Mechanismus der veranschaulichenden Ausführungsformen beseitigt das Problem, dass Plattenlaufwerke die Transaktionsordnung ändern und Journaloperationen dadurch unzuverlässig machen. Der Mechanismus der veranschaulichenden Ausführungsformen kann zusätzliche erstrebenswerte Merkmale wie Komprimierung und eine verbesserte E/A-Leistung bereitstellen.
- Die veranschaulichenden Ausführungsformen können in vielen verschiedenen Arten von Datenverarbeitungsumgebungen verwendet werden. Um einen Kontext für die Beschreibung der konkreten Elemente und Funktionen der veranschaulichenden Ausführungsformen bereitzustellen, werden die
1 und2 im Folgenden als Beispielumgebungen bereitgestellt, in denen Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Dabei sollte klar sein, dass die1 und2 lediglich Beispiele sind und keinerlei Einschränkung mit Blick auf die Umgebungen, in denen Aspekte oder Ausführungsformen der vorliegenden Erfindung realisiert sein können, zum Ausdruck bringen oder implizieren sollen. An den abgebildeten Umgebungen können viele Verbesserungen vorgenommen werden, ohne vom inhaltlichen Umfang und gedanklichen Wesensgehalt der vorliegenden Erfindung abzuweichen. -
1 zeigt eine bildhafte Darstellung eines beispielhaften verteilten Datenverarbeitungssystems, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Ein verteiltes Datenverarbeitungssystem100 kann ein Netzwerk von Computern beinhalten, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Das verteilte Datenverarbeitungssystem100 enthält mindestens ein Netzwerk102 , welches das Medium ist, mit dem Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern hergestellt werden, die innerhalb des verteilten Datenverarbeitungssystems100 miteinander verbunden sind. Das Netzwerk102 kann Verbindungen wie Leitungen, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiter enthalten. - In dem abgebildeten Beispiel sind ein Server
104 und ein Server106 zusammen mit einer Speichereinheit108 mit dem Netzwerk102 verbunden. Zusätzlich sind auch Clients110 ,112 und114 mit dem Netzwerk102 verbunden. Diese Clients110 ,112 und114 können z.B. Personal Computer, Netzwerkcomputer oder Ähnliches sein. In dem abgebildeten Beispiel stellt der Server104 den Clients110 ,112 und114 Daten wie z.B. Boot-Dateien, Betriebssystemabbilder und Anwendungen bereit. Die Clients110 ,112 und114 sind in dem abgebildeten Beispiel Clients des Servers104 . Das verteilte Datenverarbeitungssystem100 kann zusätzliche Server, Clients und andere Einheiten beinhalten, die hier nicht abgebildet sind. - In dem abgebildeten Beispiel ist das verteilte Datenverarbeitungssystem
100 das Internet, wobei das Netzwerk102 eine weltweite Zusammenstellung von Netzwerken und Gateways ist, welche die TCP/IP-Protokollfamilie (Transmission Control Protocol/Internet Protocol) nutzen, um miteinander Daten auszutauschen. Der Kern des Internet ist ein Hauptnetzwerk von Hochgeschwindigkeits-Datenübertragungsleitungen zwischen wichtigen Knoten oder Host-Computern, das aus Tausenden von Computersystemen gewerblicher Unternehmen, Behörden, Bildungseinrichtungen und anderer Stellen besteht, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das verteilte Datenverarbeitungssystem100 auch so realisiert sein, dass es eine Anzahl verschiedener Arten von Netzwerken enthält, wie z.B. Internet, ein Nahbereichsnetz (Local Area Network, LAN), ein Weitverkehrsnetz (Wide Area Network, WAN) oder Ähnliches. Wie oben erwähnt, ist1 als Beispiel und nicht als architektonische Beschränkung verschiedener Ausführungsformen der vorliegenden Erfindung gedacht, so dass die einzelnen Elemente aus1 mit Blick auf die Umgebungen, in denen die veranschaulichenden Ausführungsformen der vorliegenden Erfindung realisiert sein können, nicht als einschränkend zu verstehen sind. -
2 ist ein Blockschaubild eines beispielhaften Datenverarbeitungssystems, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Ein Datenverarbeitungssystem200 ist beispielsweise ein Computer, z.B. der Client110 oder ein Speichersystem108 aus1 , in dem sich computernutzbarer Code oder Befehle befinden können, welche die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung realisieren. - In dem abgebildeten Beispiel verwendet das Datenverarbeitungssystem
200 eine Hub-Architektur, die einen North Bridge & Memory Controller Hub (NB/MCH)202 sowie einen South Bridge & Input/Output (I/O) Controller Hub (SB/ICH)204 aufweist. Eine Verarbeitungseinheit206 , ein Hauptspeicher208 und ein Grafikprozessor210 sind mit dem NB/MCH202 verbunden. Der Grafikprozessor210 kann über einen Accelerated Graphics Port (AGP) mit dem NB/MCH202 verbunden sein. - In dem abgebildeten Beispiel ist ein LAN-Adapter
212 mit dem SB/ICH204 verbunden. Ein Audioadapter216 , ein Tastatur- und Mausadapter220 , ein Modem222 , ein Festwertspeicher (Read Only Memory, ROM)224 , ein Festplattenlaufwerk (Hard Disk Drive, HDD)226 , ein CD-ROM-Laufwerk230 , USB-Anschlüsse (Universal Serial Bus) und andere Datenübertragungsanschlüsse232 sowie PCI/PCIe-Einheiten234 sind über einen Bus238 und einen Bus240 mit dem SB/ICH204 verbunden. Die PCI/PCIe-Einheiten können z.B. Ethernet-Adapter, Erweiterungskarten und PC-Karten für Notebook-Computer enthalten. Während PCI eine CardBus-Steuereinheit verwendet, ist dies bei PCIe nicht der Fall. Der ROM224 kann z.B. ein Flash-BIOS (Basic Input/Output System) sein. - Das Festplattenlaufwerk
226 und das CD-ROM-Laufwerk230 sind über den Bus240 mit dem SB/ICH204 verbunden. Das Festplattenlaufwerk226 und das CD-ROM-Laufwerk230 können z.B. eine IDE-Schnittstelle (Integrated Drive Electronics) oder eine SATA-Schnittstelle (Serial Advanced Technology Attachment) verwenden. Eine SIO-Einheit (Super I/O)236 kann mit dem SB/ICH204 verbunden sein. - In der Verarbeitungseinheit
206 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert und steuert verschiedene Komponenten innerhalb des Datenverarbeitungssystems200 aus2 . Als Client kann das Betriebssystem ein handelsübliches Betriebssystem wie z.B. Microsoft Windows 7 sein (Microsoft und Windows sind Marken der Microsoft Corporation in den Vereinigten Staaten und/oder anderen Ländern). Ein objektorientiertes Programmiersystem wie z.B. das Java-Programmiersystem kann in Verbindung mit dem Betriebssystem ausgeführt werden und stellt aus Java-Programmen oder Anwendungen, die in dem Datenverarbeitungssystem200 ausgeführt werden, Aufrufe an das Betriebssystem bereit (Java ist eine Marke von Oracle und/oder seinen Tochterunternehmen). - Als Server kann das Datenverarbeitungssystem
200 z.B. ein IBM® eServerTM System p®-Computersystem sein, welches das Advanced Interactive Executive(AIX®)-Betriebssystem oder das LINUX-Betriebssystem ausführt (IBM, eServer, System p und AIX sind Marken der International Business Machines Corporation in den Vereinigten Staaten und/oder anderen Ländern, und LINUX ist eine eingetragene Marke von Linus Torvalds in den Vereinigten Staaten und/oder anderen Ländern). Das Datenverarbeitungssystem200 kann ein symmetrisches Mehrprozessor-System (Symmetric Multiprocessor, SMP) sein, das eine Vielzahl von Prozessoren in der Verarbeitungseinheit206 aufweist. Alternativ kann ein Einzelprozessorsystem verwendet werden. - Befehle für das Betriebssystem, das objektorientierte Programmiersystem und Anwendungen oder Programme befinden sich auf Speichereinheiten wie z.B. dem Festplattenlaufwerk
226 und können in den Hauptspeicher208 geladen werden, um durch die Verarbeitungseinheit206 ausgeführt zu werden. Die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung können durch die Verarbeitungseinheit206 unter Verwendung von computernutzbarem Programmcode durchgeführt werden, der sich in einem Speicher wie z.B. dem Hauptspeicher208 , dem ROM224 oder in einer oder mehreren Peripherie-Einheiten226 und230 befinden kann. - Ein Bussystem wie z.B. der Bus
238 oder240 , wie in2 abgebildet, kann einen oder mehrere Busse aufweisen. Selbstverständlich kann das Bussystem unter Verwendung einer beliebigen Art von Datenübertragungsstruktur oder -architektur realisiert werden, die eine Übertragung von Daten zwischen verschiedenen Komponenten oder Einheiten bereitstellt, die mit der Struktur oder Architektur verbunden sind. Eine Datenübertragungseinheit, wie z.B. der Modem222 oder der Netzwerkadapter212 aus2 kann eine oder mehrere Einheiten beinhalten, die zum Senden und Empfangen von Daten verwendet werden. Ein Speicher kann z.B. der Hautspeicher208 , der ROM224 oder ein Cachespeicher sein, wie er in dem NB/MCH202 aus2 vorhanden ist. - Der Fachmann weiß, dass die Hardware aus
1 und2 je nach Realisierung variieren kann. Zusätzlich oder anstelle der in1 und2 abgebildeten Hardware können auch andere interne Hardware- oder Peripherie-Einheiten wie z.B. ein Flash-Speicher, ein gleichwertiger nicht flüchtiger Speicher oder optische Plattenlaufwerke und Ähnliches verwendet werden. Darüber hinaus können die Prozesse der veranschaulichenden Ausführungsformen auf ein Mehrprozessor-Datenverarbeitungssystem, das nicht mit dem zuvor erwähnten SMP-System gleichzusetzen ist, angewendet werden, ohne vom gedanklichen Wesensgehalt und inhaltlichen Umfang der vorliegenden Erfindung abzuweichen. - Zudem kann das Datenverarbeitungssystem
200 in Gestalt einer Reihe verschiedener Datenverarbeitungssysteme vorliegen, z.B. Client-Datenverarbeitungseinheiten, Server-Datenverarbeitungseinheiten, in Gestalt eines Tablet-Computers, eines Laptop-Computers, eines Telefons oder einer anderweitigen Datenübertragungseinheit, als ein persönlicher digitaler Assistent (Personal Digital Assistant, PDA) oder Ähnliches. Bei manchen veranschaulichenden Beispielen kann das Datenverarbeitungssystem200 eine tragbare Datenverarbeitungseinheit sein, die mit einem Flash-Speicher konfiguriert ist, um einen nicht flüchtigen Speicher z.B. für das Speichern von Betriebssystemdateien und/oder benutzererzeugten Daten bereitzustellen. Im Wesentlichen kann das Datenverarbeitungssystem200 ein beliebiges bekanntes oder künftig entwickeltes Datenverarbeitungssystem ohne architektonische Beschränkung sein. -
3 zeigt eine bildhafte Darstellung eines beispielhaften Speichersystems, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Eine Speichersteuereinheit310 weist eine oder mehrere Verarbeitungseinheiten312 und einen Speicher311 auf. Befehle für den Betrieb der Speichersteuereinheit310 können zur Ausführung durch die Verarbeitungseinheit312 in den Hauptspeicher311 geladen werden. Die Prozesse für veranschaulichende Ausführungsformen können durch die Verarbeitungseinheit312 unter Verwendung von computernutzbarem Programmcode durchgeführt werden, der in einem Speicher wie beispielsweise dem Speicher311 vorhanden sein kann. - Die Speichersteuereinheit
310 stellt eine Verbindung mit einem Datenübertragungsbus oder einer Datenübertragungsstruktur320 her. Die Speichersteuereinheit310 kann über den Datenübertragungsbus/die Datenübertragungsstruktur320 oder über eine anderweitige Datenübertragungsstruktur oder ein Datenübertragungsnetzwerk (nicht abgebildet) Zugriffsanforderungen von einem (nicht abgebildeten) Initiator empfangen. Für Schreibanforderungen kann die Speichersteuereinheit320 Daten in einen mehrschichtigen Speicher schreiben, der einen HDD-Speicher350 und einen Bandspeicher360 aufweisen kann. Die Speichersteuereinheit320 sendet außerdem den Schreibvorgang an einen Journalführungsspeicher340 . - Um dazu beizutragen, die Auswirkung des Journal-bedingten Mehraufwands zu verringern und die Zuverlässigkeit zu verbessern, wird gemäß einer veranschaulichenden Ausführungsform ein Mechanismus bereitgestellt, um den Journalpfad des Dateisystems unter Verwendung einer zuverlässigen, asynchronen Deduplizierung auf der Grundlage einer Halbleiterspeicherung zu ändern. Die Speichersteuereinheit
320 empfängt Datenänderungen oder Schreib-E/A-Operationen von einem Initiator oder einer Anwendung und sendet sie parallel an das Journal und das Dateisystem. Während die Daten-E/A in das Dateisystem geschrieben wird, berechnet der Mechanismus in dem Journalpfad einen Hash-Wert oder eine Prüfsumme des Datenblocks. Eine Hash-Funktion ist ein Algorithmus oder eine Teilroutine, die große Datensätze variabler Länge, die als Schlüssel bezeichnet werden, kleineren Datensätzen einer festen Länge zuordnet. Die von einer Hash-Funktion zurückgegebenen Werte werden Hash-Werte, Hash-Codes, Hash-Summen, Prüfsummen oder einfach Hashs genannt. Beispiele von Hash-Funktionen beinhalten den SHA-1- und den MD5-Message-Digest-Algorithmus. - Die Speichersteuereinheit
320 verwaltet eine Hash-Tabelle im Speicher311 , im SSD330 oder sowohl im Speicher311 als auch im SSD330 . Der Mechanismus führt eine Suche nach dem Hash-Wert in der Tabelle durch. Wenn entweder in der Speichertabelle oder im SSD ein Treffer gefunden wird, speichert der Mechanismus anstelle des eigentlichen Datenblocks den Hash-Wert in der Journaltransaktion im SSD330 . - Wenn der Hash-Wert nicht in der Speichertabelle oder im SSD vorhanden ist, schreibt der Mechanismus einen Hash-Wert, der einem separaten Teil des SSD
330 zugeordnet wird. Der Mechanismus legt fest, dass der SSD330 diese Zuordnung enthält. Wenn dies abgeschlossen ist, fügt der Mechanismus den Hash-Wert den SSD-Tabellen hinzu. Der Mechanismus sendet außerdem den Hash-Wert an die Dateisystem-Journaltransaktion im SSD330 . Je nach Implementierung kann der Mechanismus darüber hinaus die Speichertabelle aktualisieren. - In einer beispielhaften Ausführungsform erwartet der Mechanismus bei SSDs, deren Schreiblatenzzeiten vergleichbar den Latenzzeiten eines Festplattenlaufwerks sind, bei einer ergebnislosen Suche unter Umständen keinen Leistungsgewinn durch das Schreiben des Datenblocks in das SSD
330 . In diesem Fall kann der Mechanismus den Datenblock und die Hash-Schlüssel-Zuordnung direkt an den Journalspeicher340 senden. Nachdem die Zuordnung erfolgt ist, kehrt der Mechanismus zu der Anwendung zurück, um die Schreiboperation abzuschließen. Im Hintergrund kann der Mechanismus den SSD330 mit der gesamten Tabellenzuordnung aktualisieren. Dies hat den Vorteil, dass mehrere unterschiedliche Schreibvorgänge zu einem großen Schreibvorgang zusammengefasst werden. Mit dieser Methode kann der Mechanismus eine bessere Bandbreite erzielen. - Der Mechanismus der veranschaulichenden Ausführungsform führt zu einem geringen Zusatzaufwand, der durch die Berechnung des Hash-Wertes entsteht, zuzüglich des Mehraufwands für die Suche in dem gemeinsamen Pfad. Schlimmstenfalls gibt es eine weitere E/A-Operation, mit der die Daten auf die separate Platte oder in einen eigens vorgesehenen Bereich der gemeinsamen Platte geschrieben werden. Diese zusätzliche E/A-Operation befindet sich im kritischen Pfad der Operation. Die Auswirkung des schlimmsten Falls einer zusätzlichen E/A-Operation für die separate Platte lässt sich abmildern, indem der SSD
330 als ein Write-behind-Cache verwendet wird. Die erwartete Zeitverringerung ist beträchtlich, falls der Hash-Wert des Blocks bereits in der Speichertabelle oder dem SSD330 vorhanden ist, und sein Hash-Wert wird direkt in das Journaltransaktionsprotokoll auf dem SSD geschrieben. Die Latenzzeit dürfte durch die Zeit begrenzt sein, die benötigt wird, um auf das SSD330 zuzugreifen und einen kleinen Transaktionsblock in das Journal auf dem SSD330 zu schreiben. Zusätzliche Vorteile weisen eine bessere potenzielle Leistung für Lesevorgänge und das Komprimieren von Daten in dem Dateisystem auf. - Das Speichern von doppelt vorhandenen Blöcken in dem Journal und dem Dateisystem ist überflüssig und wirkt sich auf die Leistung aus. Andererseits ist das Wiederherstellen der Daten aus dem Journal schnell, wirksam und verbessert die Zuverlässigkeit, falls Daten auf Platten beschädigt werden. Allerdings führt dies zu einer höheren Belastung des Dateisystems in dem normalen E/A-Pfad. Die Mechanismen der veranschaulichenden Ausführungsformen versuchen, diesen Mehraufwand zu verringern, indem sie anstelle des vollständigen Datenblocks einen Hash-Schlüssel in dem Journalpfad speichern.
- Um die Konzepte der veranschaulichenden Ausführungsformen zu verstehen, sollten die folgenden Terme betrachtet werden:
- Write(o, x) – schreibt x Bytes an Daten mit einem Versatz o in das Dateisystem.
- Read(o, x) – liest x Bytes an Daten mit einem Versatz o aus dem Dateisystem.
- Cksum(d) – führt eine Prüfsummen- oder Hash-Funktion für die Daten d durch, wobei d ein Datenblock ist. Als Größe des Datenblocks wird die Datenblockgröße des Dateisystems veranschlagt.
- Journal over block disk – eine separate Platte, um den Hash-Wert und die Datenzuordnung zu speichern, auch als Journalplatte bezeichnet.
-
4 ist ein Blockschaubild, das eine Schreiboperation gemäß einer veranschaulichenden Ausführungsform zeigt. Wie in4 gezeigt, fordert eine Anwendung eine Schreiboperation write(o, x) an. Der Mechanismus der veranschaulichenden Ausführungsform teilt die Schreiboperation auf zwei parallele Pfade auf, den Dateisystempfad und den Journalpfad. In dem Dateisystempfad sendet der Mechanismus den Schreibvorgang an Dateisystemebenen410 , um die Daten auf eine Platteneinheit420 zu schreiben. - In dem Journalpfad verwendet der Mechanismus eine Prüfsummenfunktion cksum(x)
401 , um eine Prüfsumme oder einen Hash-Wert der Daten zu erstellen und einen Schlüssel zu erzeugen. Der Mechanismus verwendet den Schlüssel in einer Suchfunktion402 , um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem Speicher430 vorhanden ist. Die Deduplizierungstabelle ordnet Schlüssel Datenblöcken zu, die in das Journal geschrieben wurden. Wenn in der Deduplizierungstabelle im Speicher430 ein Schlüssel vorhanden ist, dann ist der Datenblock in dem Journal vorhanden, und derselbe Datenblock muss nicht noch einmal in dem Journal gespeichert werden. Die speicherinterne (engl. „in-memory“) Deduplizierungstabelle ordnet heiße Datentreffer, die im Speicher430 gespeichert sind, für einen schnelleren Zugriff Lesevorgängen zu. - Wenn der Mechanismus anhand der Suchfunktion
402 eine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (JA: Block403 ), aktualisiert er die Deduplizierungstabelle im Speicher430 , um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion402 keine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (NEIN: Block403 ), verwendet er eine Suchfunktion404 , um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem SSD440 vorhanden ist. Die Deduplizierungstabelle im SSD440 ordnet Schlüssel Datenblöcken zu, die in das Journal geschrieben wurden. - Wenn der Mechanismus anhand der Suchfunktion
404 eine Übereinstimmung in der Deduplizierungstabelle findet (JA: Block405 ), aktualisiert er die Deduplizierungstabelle im SSD440 , um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion404 keine Übereinstimmung in der Deduplizierungstabelle findet (NEIN: block405 ), aktualisiert er das SSD440 mit der Hash-Schlüssel-Übereinstimmung und sendet den Hash-Schlüssel und den Datenblock an eine separate Platte (z.B. die Platteneinheit420 ) oder an einen eigens vorgesehenen Bereich der separaten Platte (Block406 ). Wenn der Schreibvorgang abgeschlossen ist, sendet der Mechanismus den Hash-Wert an die Journaltransaktion für den Schreibvorgang. Dies schließt die Schreibjournaltransaktion ab, und der Mechanismus kann zu der Anwendung zurückkehren, obwohl der ursprüngliche Schreibvorgang in den Dateisystempfad noch im Gange sein kann. - Wenn die Suche in der speicherinternen Deduplizierungstabelle und der SSD-Deduplizierungstabelle einen Fehlschlag ergibt, muss der Mechanismus die Journalplatte aktualisieren. Dieser befindet sich im kritischen Pfad und muss vor der Rückkehr zu der Anwendung abgeschlossen sein. Die Anwendungs-Schreiboperation erkennt eine Platten-Schreiblatenzzeit, die zu einer schlechteren Leistung führt. Bei einer beispielhaften Ausführungsform kann der Mechanismus verbessert werden, um diese Latenzzeit zu vermeiden. Wenn die Suche in der speicherinternen Deduplizierungstabelle und der SSD-Deduplizierungstabelle einen Fehlschlag ergibt, kann der Mechanismus den Hash-Schlüssel und den Datenblock direkt in das SSD
440 schreiben. Dies vermeidet die Plattenlatenzzeit bei einem Fehlschlag der Suche. Aufgrund dieser zusätzlichen Zuordnung kommt es irgendwann zu einem Überlauf des SSD440 . Die gesamte Zuordnung zwischen dem Hash-Schlüssel und dem Datenblock kann aus dem SSD440 auf die Journalplatte450 verlagert werden. Da dies zu einem einzigen zusammenhängenden Schreibvorgang des gesamten Satzes von Hash-Schlüssel-/Datenblockzuordnungen führt, verzeichnet der Mechanismus eine gute Leistung. - Der Mechanismus der veranschaulichenden Ausführungsform stellt ein hohes Maß an Zuverlässigkeit bereit, wenn eine zusätzliche Journalplatte
450 verwendet wird. Auf diese Weise wird das Szenario von Gruppenbeschädigungen auf der ursprünglichen Platte vermieden, die sich negativ auf die Daten in dem Journal auswirken. Diese Ausgestaltung trägt zur Behebung des Ordnungsproblems bei, d.h. Metadaten-Schreibvorgänge (und Journalblock-Schreibvorgänge) müssen zuerst in das Journal festgeschrieben werden, bevor die eigentlichen Dateisystem-Metadaten und – Schreiboperationen festgeschrieben werden. Allerdings kann dies mit einer einzigen Platte – in erster Linie wegen des platteninternen Cachespeichers, der mitunter eine willkürliche Ordnungssemantik aufweist – schwierig zu realisieren sein. In manchen Fällen berücksichtigt der platteninterne Cachespeicher womöglich weder eine Ordnungs – noch eine Löschsemantik. Die meisten Plattenlaufwerke verwenden den Aufzugalgorithmus, der sie dazu zwingt, Schreibvorgänge in der durch die Drehung des Plattenzugriffsarms vorgegebenen Reihenfolge durchzuführen, die im Widerspruch zur tatsächlich geforderten Reihenfolge der Schreibvorgänge stehen kann. - Möglicherweise wird für eine eingehende Schreiboperation weder in der speicherinternen Deduplizierungstabelle noch in der SSD-Deduplizierungstabelle ein Treffer gefunden. Daraus ergibt sich, dass zwischen dem Aktualisieren der Speichertabelle und der SSD-Tabelle oder nur der SSD-Tabelle gewählt werden muss. Diese Entscheidung muss der Entwickler des Dateisystems treffen. Die speicherinterne Deduplizierungstabelle bietet die geringste Latenz bezüglich der Trefferzeiten. Die am häufigsten verwendeten Hash-Werte können in der speicherinternen Deduplizierungstabelle gespeichert werden. Dies ist oft nicht nur von den Lokalitätsmerkmalen der Anwendung, sondern auch von der allgemeinen Verwendung des Dateisystems abhängig. Wenn das Dateisystem z.B. als Back-end für eine Datenbank verwendet wird, weisen bestimmte, in Blöcken gespeicherte Datensätze (z.B. Datensätze mit Datenbankdeskriptoren) womöglich eine hohe Trefferquote, jedoch nicht notwendigerweise eine gute räumliche Lokalität innerhalb einer Anwendungslebensdauer auf. Die Entscheidung über die Belegungs- und Ersetzungsalgorithmen für die Speichertabelle sollte auf der Grundlage der Anwendungsmerkmale erfolgen. Eine Möglichkeit besteht darin, für jeden Hash-Schlüsseleintrag im SSD einen Zählwert der Trefferquoten zu erhalten. Diejenigen Einträge mit den höchsten Trefferquoten könnten in die Speichertabelle verschoben werden. Eine weitere Alternative besteht darin, mehrere unterschiedliche Alternativen anzuwenden und eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API) vorzusehen, so dass der Administrator dynamisch und je nach Anwendungsfall entscheiden kann, welche Alternative verwendet werden soll.
-
5 ist ein Blockschaubild, das eine Leseoperation gemäß einer veranschaulichenden Ausführungsform zeigt. Der Mechanismus kann als ein optimierter Cachespeicher für eingehende Lesevorgänge verwendet werden. Dabei empfängt der Mechanismus eine Leseoperation read(o, x) von einer Anwendung. Der Mechanismus sendet die Leseoperation gleichzeitig an den Journalpfad und den Dateisystempfad. In dem Dateisystempfad sendet der Mechanismus die Leseoperation an Dateisystemebenen510 , um die Daten von einer Platteneinheit520 zu lesen. - In dem Journalpfad verwendet der Mechanismus eine Suchfunktion
502 , um den Hash-Schlüssel in einer Deduplizierungstabelle in einem Speicher530 zu suchen und um zu ermitteln, ob die Lesedaten (Datei, Versatz, Größe) im SSD540 vorhanden sind. Wenn die Daten im SSD vorhanden sind (JA: Block503 ), bricht der Mechanismus den Dateisystem-Lesevorgang ab (Block506 ) und gibt die Daten aus dem SSD540 zurück (Block507 ). - Wenn die Suche in der speicherinternen Deduplizierungstabelle keinen Treffer ergibt (NEIN: Block
503 ), verwendet der Mechanismus eine Suchfunktion504 , um den Hash-Schlüssel in der Deduplizierungstabelle im SSD540 zu suchen und um zu ermitteln, ob die Lesedaten (Datei, Versatz, Größe) im SSD540 vorhanden sind. Wenn die Daten im SSD vorhanden sind (JA: Block505 ), bricht der Mechanismus den Dateisystem-Lesevorgang ab (Block506 ) und gibt die Daten aus dem SSD540 zurück (Block507 ). - Auch wenn die Dateisystem-Leseoperation nicht abgebrochen werden kann, ist es unproblematisch, die Lesedaten zwei Mal zurückzugeben, da eine Leseoperation den Zustand des Dateisystems nicht ändert. Wenn die Lesedaten im SSD
540 nicht gefunden werden (NEIN: Block503 und Block505 ), gibt der Journalpfad die Lesedaten nicht zurück. Auf der Journalplatte muss nicht gesucht werden, da davon auszugehen ist, dass es genügt, den Lesevorgang in den Dateisystemebenen510 durchzuführen, was üblicherweise schneller ist als die Suche nach den Lesedaten auf der Journalplatte. -
6 ist ein Blockschaubild, das eine Datenwiederherstellung gemäß einer veranschaulichenden Ausführungsform zeigt. Das Dateisystem wird im Allgemeinen wiederhergestellt, nachdem z.B. ein unsauberes Aushängen, ein Absturz oder eine Beschädigung des Dateisystems festgestellt wurden. In diesen Fällen kann ein Prozess ausgeführt werden, der als Dateisystem-Konsistenzprüfung (fsck) bezeichnet wird. Generell gibt es zwei verschiedene Arten der fsck-Durchführung: die Offline-fsck (das Dateisystem ist für den Zeitraum der fsck-Durchführung nicht verfügbar) und die Onlinefsck (das Dateisystem behebt den Schaden, während es aktiv ist). Der Mechanismus, mit dem in der veranschaulichenden Ausführungsform versucht wird, den Fehler zu beheben, ist in beiden Fällen der gleiche. Der Kürze halber und um die Beschreibung zu vereinfachen, stellt6 den Prozess der Offline-fsck dar. - Der Mechanismus empfängt eine Anforderung für eine Dateisystem-Konsistenzprüfung fsck. Beginnend mit der ersten Transaktion in dem Journal, ermittelt der Mechanismus, ob jede einzelne Transaktion mit dem Inhalt einer Platteneinheit
620 konsistent ist. Der Mechanismus durchläuft das Journal und versucht, die Transaktionen bis zu dem Punkt zu wiederholen, an dem der Fehler aufgetreten ist. - Der Mechanismus liest Daten, die einer gegebenen Journaltransaktion entsprechen (Block
601 ), aus einer Platteneinheit620 und berechnet eine Prüfsumme der Daten (Block602 ). Der Mechanismus liest zudem eine Prüfsumme (Hash-Schlüssel) der Journaltransaktion aus einem SSD640 oder von einer Journalplatte650 (Block603 ). Danach vergleicht der Mechanismus die Prüfsummen (Block604 ) und ermittelt, ob die Prüfsummen übereinstimmen (Block605 ). Wenn die Prüfsummen in Block605 übereinstimmen, sind die Daten in Ordnung (Block606 ). - Wenn die Prüfsummen in Block
605 nicht übereinstimmen, ruft der Mechanismus die Daten, die der Transaktion entsprechen, aus dem SSD640 oder von der Journalplatte650 ab (Block607 ). Neben den Metadaten stehen die Daten dem Mechanismus entweder in dem Journal des SSD640 , wo sie unter Umständen vorübergehend gespeichert waren, oder auf der Journalplatte650 zur Verfügung. Der Mechanismus stellt die Daten dann aus dem SSD640 oder von der Journalplatte650 wieder her und verschiebt die Daten auf die Platteneinheit620 . Dies kann die Zuverlässigkeit des Dateisystems erheblich verbessern, da der Mechanismus neben den zu replizierenden Daten auch über die Metadaten verfügt. Aufgrund der kombinierten Methoden für das Speichern von Hash-Schlüsseln und das Verwenden von SSDs verringert der Mechanismus wesentlich die Auswirkung, die das Wiederherstellen von Daten während des Dateisystembetriebs hat. -
7 ist ein Blockschaubild, das eine Schreiboperation mit einer mangelhaften Halbleiterlaufwerksleistung gemäß einer veranschaulichenden Ausführungsform zeigt. Wie in7 gezeigt, fordert eine Anwendung eine Schreiboperation write(o, x) an. Der Mechanismus der veranschaulichenden Ausführungsform teilt die Schreiboperation in zwei parallele Pfade auf, den Dateisystempfad und den Journalpfad. In dem Dateisystempfad sendet der Mechanismus die Schreiboperation an Dateisystemebenen710 , um die Daten auf eine Platteneinheit720 zu schreiben. - In dem Journalpfad verwendet der Mechanismus eine Prüfsummenfunktion cksum(x)
701 , um eine Prüfsumme oder einen Hash-Wert der Daten zu erstellen und einen Schlüssel zu erzeugen. Der Mechanismus verwendet den Schlüssel in einer Suchfunktion702 , um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem Speicher730 vorhanden ist. Wenn der Mechanismus anhand der Suchfunktion702 eine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (JA: Block703 ), aktualisiert er die Deduplizierungstabelle im Speicher730 , um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion702 keine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (NEIN: Block703 ), verwendet er eine Suchfunktion704 , um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem SSD740 vorhanden ist. Die Deduplizierungstabelle im SSD740 ordnet Schlüssel Datenblöcken zu, die in das Journal geschrieben wurden. - Wenn der Mechanismus anhand der Suchfunktion
704 eine Übereinstimmung in der Deduplizierungstabelle findet (JA: Block705 ), aktualisiert er die Deduplizierungstabelle im SSD740 , um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion704 keine Übereinstimmung in der Deduplizierungstabelle findet (NEIN: Block705 ), aktualisiert er den SSD740 mit dem übereinstimmenden Hash-Schlüssel. Der Mechanismus sendet dann den Hash-Schlüssel und den Datenblock an eine separate Platte (z.B. die Platteneinheit720 ) oder an einen eigens vorgesehenen Bereich der separaten Platte. Wenn der Schreibvorgang abgeschlossen ist, sendet der Mechanismus den Hash-Wert an die Journaltransaktion für den Schreibvorgang. Dies schließt die Schreibjournaltransaktion ab, und der Mechanismus kann zu der Anwendung zurückkehren, obwohl der ursprüngliche Schreibvorgang in den Dateisystempfad noch im Gange sein kann. - Wenn die Suche in der speicherinternen Deduplizierungstabelle und der SSD-Deduplizierungstabelle einen Fehlschlag ergibt, muss der Mechanismus die Journalplatte aktualisieren. Manche SSDs weisen eine mangelhafte Schreibleistung auf. Die Schreiblatenzzeit für diese SSDs ist vergleichbar mit derjenigen einer Festplatten-Schreiboperation. Darüber hinaus ist die Anzahl der Schreibzyklen bei SSDs begrenzt. Gemäß einer veranschaulichenden Ausführungsform wird der Mechanismus so angepasst, dass er diese Unterschiede berücksichtigt und somit die SSD-Lebensdauer optimiert. Bei einem Schreibvorgang, für den weder in der speicherinternen Deduplizierungstabelle noch in der SSD-Deduplizierungstabelle ein Treffer gefunden wurde (NEIN: Block
703 und Block705 ), schreibt der Mechanismus den Datenblock und die Prüfsumme der Daten auf eine Journalplatte750 (Block706 ). Der Mechanismus schreibt zu diesem Zeitpunkt den Datenblock und die Prüfsumme der Daten nicht in das SSD740 . Vielmehr führt ein asynchroner Dämonprozess eine Massenaktualisierung des SSD740 mit den Hash-Werten durch. Dies verringert die Anzahl von Schreibvorgängen für das SSD740 und verlängert so dessen Lebensdauer. Aufgrund der Sammeloperation ist zudem eine höhere Bandbreite möglich. Der Nachteil besteht darin, dass Schreibvorgänge mit einer hohen zeitlichen Lokalität womöglich keine Treffer in dem SSD erbringen. Diese Beschränkung kann jedoch abgemildert werden, indem die speicherinterne Deduplizierungstabelle aktualisiert wird. - Der Mechanismus kann als Reaktion darauf, dass der Hash-Schlüssel im Speicher
730 gefunden wurde, als Reaktion darauf, dass der Hash-Schlüssel im SSD740 gefunden wurde, und als Reaktion darauf, dass der Schreibvorgang auf die Journalplatte750 abgeschlossen wurde, oder als Reaktion darauf, dass der Schreibvorgang in die Platteneinheit720 abgeschlossen wurde, zu der Anwendung zurückkehren. - Der Fachmann weiß, dass die vorliegende Erfindung als ein System, Verfahren oder Computerprogrammprodukt ausgeführt werden kann. Entsprechend können Aspekte der vorliegenden Erfindung in Gestalt einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (z.B. Firmware, residente Software, Mikrocode usw.) oder in Gestalt einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte vereint, welche zusammenfassend als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Zudem können Aspekte der vorliegenden Erfindung in Gestalt eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, auf denen computernutzbarer Programmcode enthalten ist.
- Dabei kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien genutzt werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem bzw. eine entsprechende Vorrichtung oder Einheit oder aber eine beliebige geeignete Kombination der vorgenannten Elemente sein, ohne jedoch auf diese beschränkt zu sein. Konkretere Beispiele des computerlesbaren Speichermediums würden Folgendes aufweisen (wobei dies eine nicht vollständige Liste darstellt): eine elektrische Verbindung mit einem oder mehreren Leitern, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen Lichtwellenleiter, eine tragbare CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination der vorgenannten Elemente. In Verbindung mit diesem Dokument kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm enthalten oder speichern kann, welches von oder im Zusammenhang mit einem der Befehlsausführung dienendem System, einer Vorrichtung oder Einheit verwendet wird.
- Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem computerlesbarem Programmcode aufweisen, z.B. in einem Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Vielfalt von unterschiedlichen Formen annehmen, einschließlich, ohne auf diese beschränkt zu sein, eine elektromagnetische Form, eine optische Form oder auch jede geeignete Kombination derselben. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm übermitteln, weiterleiten oder übertragen kann, welches für die Nutzung durch oder in Verbindung mit einem/einer der Befehlsausführung dienendem System, einer Vorrichtung oder Einheit vorgesehen ist.
- Auf einem computerlesbaren Medium enthaltener Computercode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, ohne auf diese beschränkt zu sein, drahtlose, drahtgebundene, Glasfaserkabel-, Funk- und andere Medien oder eine beliebige Kombination derselben.
- Computerprogrammcode für das Ausführen von Arbeitsschritten für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein, wie beispielsweise eine objektorientierte Programmiersprache wie JavaTM, SmalltalkTM, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, z.B. ein Nahbereichsnetz (LAN) oder ein Weitverkehrsnetz (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
- Im Folgenden werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den veranschaulichenden Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann/können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegeben sind.
- Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Medium gespeicherten Befehle einen Gegenstand hervorbringen, der Befehle aufweist, mit denen die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegebene Funktion/Handlung realisiert wird.
- Die Computerprogrammbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Betriebsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder den anderen Einheiten durchgeführt wird, so dass die Befehle, die auf dem Computer oder der anderweitigen Datenverarbeitungsvorrichtung ausgeführt werden, Prozesse bereitstellen, mit denen die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen realisiert werden.
-
8 ist ein Ablaufplan, der die Funktion eines Mechanismus für das Durchführen einer Schreiboperation in einer zuverlässigen, asynchronen Deduplizierungslösung auf der Grundlage einer Halbleitereinheit gemäß einer veranschaulichenden Ausführungsform zeigt. Die Operation beginnt als Reaktion auf das Empfangen einer Schreibanforderung von einem Initiator (Block800 ). Der Mechanismus sendet die Schreiboperation an den Dateisystempfad (Block801 ), und die Operation endet (Block802 ). - Parallel zum Senden des Schreibvorgangs an den Dateisystempfad in Block
801 berechnet der Mechanismus eine Prüfsumme der Schreibdaten (Block803 ) und sucht die Prüfsumme in einer speicherinternen Deduplizierungs-Hash-Tabelle (Block804 ). Der Mechanismus ermittelt, ob die Prüfsumme in der Speichertabelle gefunden wird (Block805 ). Wenn die Prüfsumme (der Hash-Schlüssel) in der speicherinternen-Tabelle gefunden wird, speichert der Mechanismus die Prüfsumme in dem Journal (Block806 ) und gibt den Schreibabschluss an den Initiator zurück (Block807 ). Danach endet die Operation in Block802 . Wenn die Prüfsumme in Block805 nicht in der Speichertabelle gefunden wird, sucht der Mechanismus die Prüfsumme in der SSD-Deduplizierungs-Hash-Tabelle (Block808 ). Der Mechanismus ermittelt, ob die Prüfsumme in der SSD-Tabelle gefunden wird (Block809 ). Wenn die Prüfsumme in der SSD-Tabelle gefunden wird, speichert der Mechanismus die Prüfsumme in dem Journal (Block806 ) und gibt den Schreibabschluss an den Initiator zurück (Block807 ). Danach endet die Operation in Block802 . - Wenn die Prüfsumme in Block
809 nicht in der Deduplizierungstabelle gefunden wird, schreibt der Mechanismus den Datenblock auf die Platte (Block810 ) und aktualisiert die Hash-Tabelle, um die Prüfsumme dem Datenblock auf der Platte zuzuordnen (Block811 ). Danach gibt der Mechanismus einen Schreibabschluss an den Initiator zurück (Block807 ). Danach endet die Operation in Block802 . -
9 ist ein Ablaufplan, der die Funktion eines Mechanismus für das Durchführen einer Leseoperation in einer zuverlässigen, asynchronen Deduplizierungslösung auf der Grundlage einer Halbleitereinheit gemäß einer veranschaulichenden Ausführungsform zeigt. Die Operation beginnt als Reaktion auf das Empfangen einer Leseanforderung von einem Initiator (Block900 ). Der Mechanismus sendet die Leseoperation an den Dateisystempfad (Block901 ). Parallel zum Senden der Leseoperation an den Dateisystempfad führt der Mechanismus eine Suche durch, um zu ermitteln, ob die Lesedaten in der speicherinternen Deduplizierungs-Hash-Tabelle zugeordnet sind (Block902 ). Der Mechanismus ermittelt, ob die Lesedaten in der Speichertabelle gefunden werden (Block903 ). Wenn die Lesedaten in Block903 gefunden werden, liest der Mechanismus die Daten aus dem SSD (Block904 ) und bricht den Dateisystem-Lesevorgang, falls möglich, ab (Block905 ). Danach gibt der Mechanismus die Lesedaten an den Initiator zurück (Block906 ), und die Operation endet (Block907 ). - Wenn die Daten in Block
903 nicht gefunden werden, führt der Mechanismus eine Suche durch, um zu ermitteln, ob die Lesedaten in der SSD-Deduplizierungs-Hash-Tabelle zugeordnet sind (Block908 ). Der Mechanismus ermittelt, ob die Lesedaten in der SSD-Deduplizierungstabelle gefunden werden (Block909 ). Wenn die Lesedaten in Block909 gefunden werden, liest der Mechanismus die Daten aus dem SSD (Block904 ) und bricht den Dateisystem-Lesevorgang, falls möglich, ab (Block905 ). Danach gibt der Mechanismus die Lesedaten an den Initiator zurück (Block906 ), und die Operation endet (Block907 ). - Wenn die Lesedaten in Block
909 nicht gefunden werden, gibt der Mechanismus die Lesedaten aus dem Dateisystempfad zurück (Block906 ). Danach endet die Operation (Block907 ). -
10 ist ein Ablaufplan, der die Funktion eines Mechanismus für das Durchführen einer Wiederherstellungsoperation in einer zuverlässigen, asynchronen Deduplizierungslösung auf der Grundlage einer Halbleitereinheit gemäß einer veranschaulichenden Ausführungsform zeigt. Die Operation beginnt als Reaktion auf das Empfangen einer Dateisystem-Konsistenzprüfung fsck von einem Initiator (Block1000 ). Der Mechanismus prüft die erste Journaltransaktion (Block1001 ). Der Mechanismus liest die Prüfsumme der Journaltransaktion aus dem Journal (Block1002 ). Der Mechanismus liest die entsprechenden Daten aus dem Dateisystem (Block1003 ) und berechnet eine Prüfsumme für die Daten (Block1004 ). - Danach vergleicht der Mechanismus die Prüfsumme der Dateisystemdaten mit der Prüfsumme der Journaltransaktion (Block
1005 ). Der Mechanismus ermittelt, ob der Vergleich eine Übereinstimmung ergibt (Block1006 ). Wenn die Prüfsummen übereinstimmen, ermittelt der Mechanismus, ob der Fehlerpunkt in den Journaltransaktionen erreicht wurde (Block1007 ). Wenn der Fehlerpunkt nicht erreicht wurde, prüft der Mechanismus die nächste Journaltransaktion (Block1008 ), und die Operation kehrt zu Block1002 zurück, um die Prüfsumme der Journaltransaktion aus dem Journal zu lesen. - Wenn die Mechanismen in Block
1006 keine Übereinstimmung feststellen, rufen sie den Datenblock aus dem Journal ab (Block1009 ). Der Datenblock kann in dem SSD oder auf der Journalplatte verfügbar sein. Der Mechanismus stellt den Datenblock in dem Dateisystem wieder her, indem er den Datenblock verwendet, der von dem SSD oder der Journalplatte abgerufen wurde (Block1010 ). Danach ermittelt der Mechanismus, ob der Fehlerpunkt in den Journaltransaktionen erreicht wurde (Block1007 ). Wenn der Fehlerpunkt nicht erreicht wurde, prüft der Mechanismus die nächste Journaltransaktion (Block1008 ), und die Operation kehrt zu Block1002 zurück, um die Prüfsumme der Journaltransaktion aus dem Journal zu lesen. - Wenn der Fehlerpunkt in den Journaltransaktionen in Block
1007 erreicht wurde, endet die Operation (Block1011 ). - Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Code-Teil darstellen, der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die angegebene(n) logische(n) Funktion(en) realisieren lässt/lassen. Zu beachten ist ferner, dass bei manchen alternativen Ausführungsformen die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten können. So können beispielsweise zwei als aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der beteiligten Funktionalität ist. Ebenfalls ist darauf hinzuweisen, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellung sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplan-Darstellung durch Spezialsysteme auf der Grundlage von Hardware, welche die angegebenen Funktionen oder Handlungen oder Kombinationen derselben ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert werden kann/können.
- Die veranschaulichenden Ausführungsformen stellen somit Mechanismen für die zuverlässige, asynchrone Deduplizierung auf der Grundlage einer Halbleiterspeicherung bereit, um die Zuverlässigkeit der Journalführung mit geringem oder keinem Mehraufwand zu verbessern. Mit den Mechanismen der veranschaulichenden Ausführungsformen kann sich das Dateisystem unter Umständen sowohl von der Beschädigung als auch vom Verlust von Metadaten und Daten erholen, soweit physische Beschränkungen dies zulassen. Dabei vereinen die Mechanismen der veranschaulichenden Ausführungsformen zwei Methoden: die Halbleiterspeicherung und die Deduplizierung. Die Mechanismen der veranschaulichenden Ausführungsformen können zusätzliche erstrebenswerte Merkmale wie Komprimierung und eine verbesserte E/A-Leistung bereitstellen.
- Dabei beziehen sich die Mechanismen der veranschaulichenden Ausführungsformen auf drei verschiedene Szenarien: Wenn in der Speicher-Deduplizierungstabelle ein Treffer gefunden wird, führen die Mechanismen zu einer Antwortzeit, die proportional zur Speicherlatenzzeit zuzüglich der Zeit für das Schreiben der Journaltransaktion und des Hash-Schlüssels in das SSD ist. Dabei ist zu beachten, dass die Zeitspanne für den Journalschreibvorgang in das SSD für alle drei Szenarien konstant ist. Wenn die Suche in der Speicher-Deduplizierungstabelle fehlschlägt und in der SSD-Deduplizierungstabelle ein Treffer gefunden wird, ist die Antwortzeit durch die Lesezeit des SSD begrenzt. Wenn der Mechanismus in der speicherinternen Deduplizierungstabelle und der SSD-Tabelle keinen Treffer findet, ist die Antwortzeit durch die Schreibzeit des SSD begrenzt.
- Wie oben erwähnt, ist zu beachten, dass die veranschaulichenden Ausführungsformen in Gestalt einer vollständig in Hardware realisierten Ausführung, einer vollständig in Software realisierten Ausführungsform oder in einer Ausführungsform vorliegen können, die sowohl Hardware- als auch Software-Elemente enthält. Bei einer beispielhaften Ausführungsform werden die Mechanismen der veranschaulichenden Ausführungsformen in Software oder Programmcode realisiert, einschließlich, ohne auf diese beschränkt zu sein, Firmware, speicherresidente Software, Mikrocode usw.
- Ein Datenverarbeitungssystem, das für das Speichern und/oder Ausführen von Programmcode geeignet ist, enthält mindestens einen Prozessor, der direkt oder indirekt über einen Systembus mit Speicherelementen verbunden ist. Die Speicherelemente können einen lokalen Speicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cachespeicher beinhalten, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Häufigkeit zu verringern, mit welcher der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
- Ein-/Ausgabe- bzw. E/A-Einheiten (einschließlich, ohne auf diese beschränkt zu sein, Tastaturen, Anzeigen, Zeigeeinheiten usw.) können entweder direkt oder über dazwischen geschaltete E/A-Steuereinheiten mit dem System verbunden sein. Netzwerkadapter können ebenfalls mit dem System verbunden sein, um die Verbindung des Datenverarbeitungssystems mit anderen Datenverarbeitungssystemen oder mit entfernt angeordneten Druckern oder Speichereinheiten über dazwischen geschaltete private oder öffentliche Netzwerke zu ermöglichen. Modems, Kabelmodems und Ethernet-Karten sind nur einige der momentan verfügbaren Typen von Netzwerkadaptern.
- Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Erläuterung vorgelegt und ist mit Blick auf die in dieser Form offenbarte Erfindung nicht als abschließend oder beschränkend zu verstehen. Der Fachmann weiß, dass viele Änderungen und Abwandlungen vorgenommen werden können. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundsätze der Erfindung und die praktische Anwendung bestmöglich zu erläutern und um anderen Fachleuten die Erfindung für verschiedene Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweils vorgesehene konkrete Nutzung geeignet sind, verständlich zu machen.
- Erwähnt werden sollte, dass Ausführungsformen der vorliegenden Erfindung die folgenden Konzepte beinhalten:
- Konzept 1: Vorrichtung, aufweisend: einen Prozessor und einen mit dem Prozessor verbundenen Speicher, wobei der Speicher Befehle aufweist, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor veranlassen: als Reaktion auf das Empfangen einer Schreibanforderung zum Schreiben von Daten in das Dateisystem die Schreibanforderung an das Dateisystem zu senden; parallel zum Senden der Schreibanforderung an das Dateisystem einen Hash-Schlüssel der Schreibdaten zu berechnen; den Hash-Schlüssel in einer Deduplizierungstabelle zu suchen, wobei die Deduplizierungstabelle in einem Speicher oder einer Halbleiterspeichereinheit gespeichert ist; und als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle nicht vorhanden ist, die Schreibdaten in eine Speichereinheit zu schreiben, eine Journaltransaktion, die den Hash-Schlüssel aufweist, zu schreiben und die Deduplizierungstabelle zu aktualisieren, so dass sie auf die Schreibdaten in der Speichereinheit verweist.
- Konzept 2: Vorrichtung nach Konzept 1, wobei die Befehle den Prozessor ferner veranlassen: als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle vorhanden ist, den Hash-Schlüssel in einer Journaltransaktion der Schreibanforderung zu speichern.
- Konzept 3: Vorrichtung nach Konzept 2, wobei das Speichern des Hash-Schlüssels in einer Journaltransaktion der Schreibanforderung das Speichern der Journaltransaktion in der Halbleiterspeichereinheit aufweist.
- Konzept 4: Vorrichtung nach Konzept 1, wobei die Befehle den Prozessor ferner veranlassen: als Reaktion auf das Empfangen einer Leseanforderung von einem Initiator Senden der Leseanforderung an das Dateisystem, wobei das Dateisystem einen Dateisystem-Lesevorgang durchführt; parallel zum Senden der Leseanforderung an das Dateisystem Ermitteln, ob der Lesevorgang einem Eintrag in der Deduplizierungstabelle entspricht; und als Reaktion darauf, dass der Lesevorgang einem Eintrag in der Deduplizierungstabelle entspricht, Lesen der Lesedaten aus der Halbleiterspeichereinheit und Zurückgeben der Lesedaten an den Initiator.
- Konzept 5: Vorrichtung nach Konzept 1, wobei die Befehle den Prozessor ferner veranlassen: als Reaktion auf das Empfangen einer Anforderung einer Dateisystem-Konsistenzprüfung für jede gegebene Journaltransaktion von einer ersten Journaltransaktion bis zu einem Fehlerpunkt: Lesen von Daten, die der gegebenen Journaltransaktion entsprechen, aus dem Dateisystem; Berechnen eines Dateisystem-Hash-Schlüssels der aus dem Dateisystem gelesenen Daten; Lesen eines Journal-Hash-Schlüssels aus dem gegebenen Journaleintrag; Vergleichen des Dateisystem-Hash-Schlüssels mit dem Journal-Hash-Schlüssel; und als Reaktion darauf, dass der Dateisystem-Hash-Schlüssel nicht mit dem Journal-Hash-Schlüssel übereinstimmt, Wiederherstellen der Daten aus dem Journal in dem Dateisystem.
- Konzept 6: Vorrichtung nach Konzept 1, wobei das Wiederherstellen der Daten aus dem Journal in dem Datensystem aufweist: Abrufen der Daten aus der Halbleiterspeichereinheit und Schreiben der Daten in das Dateisystem.
Claims (15)
- Computerprogrammprodukt, das ein computerlesbares Speichermedium aufweist, in dem ein computerlesbares Programm gespeichert ist, wobei das computerlesbare Programm bei Ausführung in einer Datenverarbeitungseinheit die Datenverarbeitungseinheit dazu veranlasst: als Reaktion auf ein Empfangen einer Schreibanforderung zum Schreiben von Daten in das Dateisystem die Schreibanforderung an das Dateisystem zu senden; parallel zum Senden der Schreibanforderung an das Dateisystem einen Hash-Schlüssel der Schreibdaten zu berechnen; den Hash-Schlüssel in einer Deduplizierungstabelle zu suchen, wobei die Deduplizierungstabelle in einem Speicher oder einer Halbleiterspeichereinheit gespeichert ist; und als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle nicht vorhanden ist, die Schreibdaten in eine Speichereinheit zu schreiben, eine Journaltransaktion, die den Hash-Schlüssel aufweist, zu schreiben und die Deduplizierungstabelle zu aktualisieren, so dass sie auf die Schreibdaten in der Speichereinheit verweist.
- Computerprogrammprodukt nach Anspruch 1, wobei das computerlesbare Programm weiter die Datenverarbeitungseinheit veranlasst: als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle vorhanden ist, den Hash-Schlüssel in einer Journaltransaktion der Schreibanforderung zu speichern.
- Computerprogrammprodukt nach Anspruch 2, wobei das Speichern des Hash-Schlüssels in einer Journaltransaktion der Schreibanforderung das Speichern der Journaltransaktion in der Halbleiterspeichereinheit aufweist.
- Computerprogrammprodukt nach Anspruch 1, wobei die Deduplizierungstabelle eine speicherinterne Deduplizierungstabelle ist, die für heiße Datentreffer Hash-Schlüssel Datenblöcken zuordnet, die in das Journal geschrieben werden, und/oder wobei die Deduplizierungstabelle in der Halbleiterspeichereinheit gespeichert ist und wobei die Deduplizierungstabelle Hash-Schlüssel Datenblöcken zuordnet, die in das Journal geschrieben werden.
- Computerprogrammprodukt nach Anspruch 1, wobei das computerlesbare Programm die Datenverarbeitungseinheit weiterhin veranlasst: als Reaktion auf das Empfangen einer Schreibanforderung von einem Initiator, die Leseanforderung an das Dateisystem zu senden, wobei das Dateisystem einen Dateisystem-Lesevorgang durchführt; parallel zum Senden der Leseanforderung an das Dateisystem zu ermitteln, ob der Lesevorgang einem Eintrag in der Deduplizierungstabelle entspricht; und als Reaktion darauf, dass der Lesevorgang einem Eintrag in der Deduplizierungstabelle entspricht, die Lesedaten aus der Halbleiterspeichereinheit zu lesen und die Lesedaten an den Initiator zurückzugeben, und/oder wobei das computerlesbare Programm die Datenverarbeitungseinheit weiterhin veranlasst: als Reaktion auf das Zurückgeben der Lesedaten aus der Halbleiterspeichereinheit an den Initiator, den Dateisystem-Lesevorgang abzubrechen.
- Computerprogrammprodukt nach Anspruch 1, wobei das computerlesbare Programm die Datenverarbeitungseinheit weiterhin veranlasst: als Reaktion auf ein Empfangen einer Anforderung einer Dateisystem-Konsistenzprüfung für jede gegebene Journaltransaktion von einer ersten Journaltransaktion bis zu einem Fehlerpunkt: Daten, die der gegebenen Journaltransaktion entsprechen, aus dem Dateisystem zu lesen; einen Dateisystem-Hash-Schlüssel für die aus dem Dateisystem gelesenen Daten zu berechnen; einen Journal-Hash-Schlüssel aus dem gegebenen Journaleintrag zu lesen; den Dateisystem-Hash-Schlüssel mit dem Journal-Hash-Schlüssel zu vergleichen; und als Reaktion darauf, dass der Dateisystem-Hash-Schlüssel nicht mit dem Journal-Hash-Schlüssel übereinstimmt, die Daten aus dem Journal in dem Dateisystem wiederherzustellen und/oder wobei das Wiederherstellen der Daten aus dem Journal in dem Datensystem aufweist: Abrufen der Daten aus der Halbleiterspeichereinheit und Schreiben der Daten in das Dateisystem.
- Computerprogrammprodukt nach Anspruch 1, wobei das Schreiben der Daten in die Speichereinheit das Schreiben der Daten auf eine Journalplatte aufweist, wobei das Schreiben der Journaltransaktion, die den Hash-Schlüssel aufweist, ein Schreiben der Journaltransaktion auf die Journalplatte aufweist, wobei das Verfahren weiter aufweist: Massenaktualisieren der Halbleiterspeichereinheit mit Hash-Schlüsseln von der Journalplatte durch einen asynchronen Dämonprozess.
- Computerprogrammprodukt nach Anspruch 1, wobei das computerlesbare Programm in einem computerlesbaren Speichermedium in einem Datenverarbeitungssystem gespeichert ist und wobei das computerlesbare Programm über ein Netzwerk von einem entfernt angeordneten Datenverarbeitungssystem heruntergeladen wurde und/oder wobei das computerlesbare Programm in einem computerlesbaren Speichermedium in einem Server-Datenverarbeitungssystem gespeichert ist und wobei das computerlesbare Programm über ein Netzwerk auf ein entfernt angeordnetes Datenverarbeitungssystem heruntergeladen wird, um in einem computerlesbaren Speichermedium mit dem entfernt angeordneten System verwendet zu werden.
- Verfahren in einem Datenverarbeitungssystem für die zuverlässige, asynchrone Deduplizierung auf der Grundlage einer Halbleitereinheit, wobei das Verfahren aufweist: als Reaktion auf ein Empfangen einer Schreibanforderung zum Schreiben von Daten in das Dateisystem Senden der Schreibanforderung an das Dateisystem; parallel zum Senden der Schreibanforderung an das Dateisystem Berechnen eines Hash-Schlüssels der Schreibdaten; Suchen des Hash-Schlüssels in einer Deduplizierungstabelle, wobei die Deduplizierungstabelle in einem Speicher oder einer Halbleiterspeichereinheit gespeichert ist; und als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle nicht vorhanden ist, Schreiben der Schreibdaten in eine Speichereinheit, Schreiben einer Journaltransaktion, die den Hash-Schlüssel aufweist, und Aktualisieren der Deduplizierungstabelle, so dass sie auf die Schreibdaten in der Speichereinheit verweist.
- Verfahren nach Anspruch 9, ferner aufweisend: als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle vorhanden ist, Speichern des Hash-Schlüssels in einer Journaltransaktion der Schreibanforderung.
- Verfahren nach Anspruch 10, wobei das Speichern des Hash-Schlüssels in einer Journaltransaktion der Schreibanforderung das Speichern der Journaltransaktion in der Halbleiterspeichereinheit aufweist.
- Verfahren nach Anspruch 9, ferner aufweisend: als Reaktion auf das Empfangen einer Leseanforderung von einem Initiator Senden der Leseanforderung an das Dateisystem, wobei das Dateisystem einen Dateisystem-Lesevorgang durchführt; parallel zum Senden der Leseanforderung an das Dateisystem Ermitteln, ob der Lesevorgang einem Eintrag in der Deduplizierungstabelle entspricht; und als Reaktion darauf, dass der Lesevorgang einem Eintrag in der Deduplizierungstabelle entspricht, Lesen der Lesedaten aus der Halbleiterspeichereinheit und Zurückgeben der Lesedaten an den Initiator.
- Verfahren nach Anspruch 9, ferner aufweisend: als Reaktion auf das Empfangen einer Anforderung einer Dateisystem-Konsistenzprüfung für jede gegebene Journaltransaktion von einer ersten Journaltransaktion bis zu einem Fehlerpunkt: Lesen von Daten, die der gegebenen Journaltransaktion entsprechen, aus dem Dateisystem; Berechnen eines Dateisystem-Hash-Schlüssels für die aus dem Dateisystem gelesenen Daten; Lesen eines Journal-Hash-Schlüssels aus dem gegebenen Journaleintrag; Vergleichen des Dateisystem-Hash-Schlüssels mit dem Journal-Hash-Schlüssel; und als Reaktion darauf, dass der Dateisystem-Hash-Schlüssel nicht mit dem Journal-Hash-Schlüssel übereinstimmt, Wiederherstellen der Daten aus dem Journal in dem Dateisystem.
- Verfahren nach Anspruch 13, wobei das Wiederherstellen der Daten aus dem Journal in dem Dateisystem aufweist: Abrufen der Daten aus der Halbleiterspeichereinheit und Schreiben der Daten in das Dateisystem.
- Vorrichtung, aufweisend: einen Prozessor; und einen mit dem Prozessor verbundenen Speicher, wobei der Speicher Befehle aufweist, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor veranlassen, das Verfahren nach einem beliebigen der Ansprüche 9 bis 14 durchzuführen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/535,811 US8880476B2 (en) | 2012-06-28 | 2012-06-28 | Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication |
US13/535,811 | 2012-06-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102013211071A1 true DE102013211071A1 (de) | 2014-01-02 |
DE102013211071B4 DE102013211071B4 (de) | 2023-12-07 |
Family
ID=49754308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102013211071.5A Active DE102013211071B4 (de) | 2012-06-28 | 2013-06-13 | Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung |
Country Status (2)
Country | Link |
---|---|
US (2) | US8880476B2 (de) |
DE (1) | DE102013211071B4 (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9548908B2 (en) * | 2012-08-21 | 2017-01-17 | Cisco Technology, Inc. | Flow de-duplication for network monitoring |
SG11201606070QA (en) * | 2014-01-24 | 2016-08-30 | Agency Science Tech & Res | Method of file system design and failure recovery with non-volatile memory |
KR102312672B1 (ko) | 2014-06-09 | 2021-10-15 | 삼성전자주식회사 | 데이터 처리 방법 및 전자 장치 |
US9613078B2 (en) | 2014-06-26 | 2017-04-04 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
CN105843551B (zh) * | 2015-01-29 | 2020-09-15 | 爱思开海力士有限公司 | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 |
US9857995B1 (en) * | 2015-03-09 | 2018-01-02 | Western Digital Technologies, Inc. | Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection |
US9904722B1 (en) * | 2015-03-13 | 2018-02-27 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US10031935B1 (en) | 2015-08-21 | 2018-07-24 | Amazon Technologies, Inc. | Customer-requested partitioning of journal-based storage systems |
US10628391B1 (en) * | 2015-09-30 | 2020-04-21 | EMC IP Holding Company LLC | Method and system for reducing metadata overhead in a two-tier storage architecture |
US11036394B2 (en) * | 2016-01-15 | 2021-06-15 | Falconstor, Inc. | Data deduplication cache comprising solid state drive storage and the like |
US10013201B2 (en) | 2016-03-29 | 2018-07-03 | International Business Machines Corporation | Region-integrated data deduplication |
US11188541B2 (en) * | 2016-10-20 | 2021-11-30 | Industry Academic Cooperation Foundation Of Yeungnam University | Join method, computer program and recording medium thereof |
US10620846B2 (en) * | 2016-10-26 | 2020-04-14 | ScaleFlux, Inc. | Enhancing flash translation layer to improve performance of databases and filesystems |
CN107392745B (zh) * | 2017-07-14 | 2021-11-30 | 上海瀚之友信息技术服务有限公司 | 一种对帐数据碎片化处理方法 |
US11068606B2 (en) * | 2017-09-20 | 2021-07-20 | Citrix Systems, Inc. | Secured encrypted shared cloud storage |
US10545696B2 (en) * | 2017-11-14 | 2020-01-28 | Samsung Electronics Co., Ltd. | Data deduplication using KVSSD |
CN107992269B (zh) * | 2017-12-08 | 2020-01-03 | 华中科技大学 | 一种基于去重ssd的事务写入方法 |
US10585612B2 (en) * | 2018-01-04 | 2020-03-10 | International Business Machines Corporation | Optimized sequential writes on mirrored disks |
CN109213774B (zh) * | 2018-08-01 | 2024-03-08 | 平安科技(深圳)有限公司 | 数据的存储方法及装置、存储介质、终端 |
US10963162B2 (en) * | 2018-10-10 | 2021-03-30 | Vmware, Inc. | Enabling parallel IO's with partial checksum on imbricated journal slots |
US10884642B2 (en) * | 2019-03-27 | 2021-01-05 | Silicon Motion, Inc. | Method and apparatus for performing data-accessing management in a storage server |
US11487637B2 (en) * | 2019-07-19 | 2022-11-01 | EMC IP Holding Company LLC | Global inline name space verification for distributed file systems |
US11200206B2 (en) * | 2019-08-05 | 2021-12-14 | International Business Machines Corporation | Maintaining metadata consistency of a mounted file system during runtime |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9724031D0 (en) * | 1997-11-13 | 1998-01-14 | Advanced Telecommunications Mo | Cache memory operation |
JP5331323B2 (ja) | 2007-09-26 | 2013-10-30 | 株式会社日立製作所 | ストレージサブシステム及びその制御方法 |
US7962706B2 (en) | 2008-02-14 | 2011-06-14 | Quantum Corporation | Methods and systems for improving read performance in data de-duplication storage |
US7873619B1 (en) | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
US7908436B1 (en) | 2008-04-25 | 2011-03-15 | Netapp, Inc. | Deduplication of data on disk devices using low-latency random read memory |
US8117464B1 (en) * | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US20110191522A1 (en) * | 2010-02-02 | 2011-08-04 | Condict Michael N | Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory |
US8392437B2 (en) | 2010-03-15 | 2013-03-05 | Symantec Corporation | Method and system for providing deduplication information to applications |
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8935487B2 (en) | 2010-05-05 | 2015-01-13 | Microsoft Corporation | Fast and low-RAM-footprint indexing for data deduplication |
US8612699B2 (en) | 2010-06-25 | 2013-12-17 | International Business Machines Corporation | Deduplication in a hybrid storage environment |
US20130238832A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Deduplicating hybrid storage aggregate |
-
2012
- 2012-06-28 US US13/535,811 patent/US8880476B2/en active Active
-
2013
- 2013-06-13 DE DE102013211071.5A patent/DE102013211071B4/de active Active
-
2014
- 2014-10-23 US US14/521,582 patent/US9454538B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20150039568A1 (en) | 2015-02-05 |
US8880476B2 (en) | 2014-11-04 |
DE102013211071B4 (de) | 2023-12-07 |
US9454538B2 (en) | 2016-09-27 |
US20140006362A1 (en) | 2014-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013211071B4 (de) | Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung | |
CN106462592B (zh) | 优化对索引的多版本支持的系统和方法 | |
DE112017002941B4 (de) | Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken | |
DE112013001905B4 (de) | Erhöhte Inline-Deduplizierungseffizienz | |
DE112019002584T5 (de) | Wechseln zwischen vermittlerdiensten für ein speichersystem | |
US20160179867A1 (en) | Detecting lost writes | |
US9311333B1 (en) | Managing files of file systems | |
CN104516943A (zh) | 数据库日志的存档管理 | |
DE102010013263A1 (de) | Techniken, um ein energieausfallsicheres Caching ohne atomare Metadaten durchzuführen | |
DE112013000650B4 (de) | Datenzwischenspeicherungsbereich | |
EP2590078B1 (de) | Schatten-Paging basiertes Log-segmentverzeichnis | |
DE112012005222T5 (de) | Halbleiter-Datenspeicherverwaltung | |
DE102013208930A1 (de) | Zusammenfassen von Einträgen in einem Deduplizierungs-lndex | |
DE102019111068A1 (de) | Datenspeichersystem mit LUN-Archivierung in die Cloud unter Verwendung einer Volume-to-Object(Volumen-zu-Objekt)-Umsetzung | |
US20170177652A1 (en) | Copying garbage collector for b+ trees under multi-version concurrency control | |
US8990159B2 (en) | Systems and methods for durable database operations in a memory-mapped environment | |
DE112014000251T5 (de) | Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen | |
DE112019000143T5 (de) | Versionierungsvalidierung für die datenübertragung zwischen heterogenen datenspeichern | |
DE102012219098A1 (de) | Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher | |
Gatla et al. | Towards robust file system checkers | |
KR102262409B1 (ko) | 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 | |
DE112016002305B4 (de) | Reduktion der Schreibverstärkung in einem Objektspeicher | |
DE112018000227B4 (de) | Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk | |
DE112019000849T5 (de) | Hostorientierter Aktualisierungsschreibvorgang | |
DE112019005311T5 (de) | Serverlose lösung zur optimierung von objektversionierung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R016 | Response to examination communication | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0017300000 Ipc: G06F0016000000 |
|
R018 | Grant decision by examination section/examining division | ||
R084 | Declaration of willingness to licence |