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 PDF

Info

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
Application number
DE102013211071.5A
Other languages
English (en)
Other versions
DE102013211071B4 (de
Inventor
Ranjit M. Noronha
Ajay K. Singh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013211071A1 publication Critical patent/DE102013211071A1/de
Application granted granted Critical
Publication of DE102013211071B4 publication Critical patent/DE102013211071B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • 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

Bereitgestellt wird ein Verfahren in einem Datenverarbeitungssystem für die zuverlässige, asynchrone Deduplizierung auf der Grundlage einer Halbleitereinheit. Als Reaktion auf das Empfangen einer Schreibanforderung zum Schreiben von Daten in das Dateisystem sendet ein Mechanismus die Schreibanforderung an das Dateisystem und berechnet parallel dazu einen Hash-Schlüssel der Schreibdaten. Der Mechanismus sucht den Hash-Schlüssel in einer Deduplizierungstabelle. Die Deduplizierungstabelle wird in einem Speicher oder einer Halbleiterspeichereinheit gespeichert. Als Reaktion darauf, dass der Hash-Schlüssel in der Deduplizierungstabelle nicht vorhanden ist, schreibt der Mechanismus die Schreibdaten in eine Speichereinheit, schreibt eine Journaltransaktion, die den Hash-Schlüssel aufweist, und aktualisiert die Deduplizierungstabelle, so dass sie auf die Schreibdaten in der Speichereinheit verweist.

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 und 2 im Folgenden als Beispielumgebungen bereitgestellt, in denen Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Dabei sollte klar sein, dass die 1 und 2 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 Datenverarbeitungssystem 100 kann ein Netzwerk von Computern beinhalten, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert sein können. Das verteilte Datenverarbeitungssystem 100 enthält mindestens ein Netzwerk 102, welches das Medium ist, mit dem Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern hergestellt werden, die innerhalb des verteilten Datenverarbeitungssystems 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie Leitungen, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiter enthalten.
  • In dem abgebildeten Beispiel sind ein Server 104 und ein Server 106 zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Zusätzlich sind auch Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Diese Clients 110, 112 und 114 können z.B. Personal Computer, Netzwerkcomputer oder Ähnliches sein. In dem abgebildeten Beispiel stellt der Server 104 den Clients 110, 112 und 114 Daten wie z.B. Boot-Dateien, Betriebssystemabbilder und Anwendungen bereit. Die Clients 110, 112 und 114 sind in dem abgebildeten Beispiel Clients des Servers 104. Das verteilte Datenverarbeitungssystem 100 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 Netzwerk 102 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 Datenverarbeitungssystem 100 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, ist 1 als Beispiel und nicht als architektonische Beschränkung verschiedener Ausführungsformen der vorliegenden Erfindung gedacht, so dass die einzelnen Elemente aus 1 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 Datenverarbeitungssystem 200 ist beispielsweise ein Computer, z.B. der Client 110 oder ein Speichersystem 108 aus 1, 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 Verarbeitungseinheit 206, ein Hauptspeicher 208 und ein Grafikprozessor 210 sind mit dem NB/MCH 202 verbunden. Der Grafikprozessor 210 kann über einen Accelerated Graphics Port (AGP) mit dem NB/MCH 202 verbunden sein.
  • In dem abgebildeten Beispiel ist ein LAN-Adapter 212 mit dem SB/ICH 204 verbunden. Ein Audioadapter 216, ein Tastatur- und Mausadapter 220, ein Modem 222, ein Festwertspeicher (Read Only Memory, ROM) 224, ein Festplattenlaufwerk (Hard Disk Drive, HDD) 226, ein CD-ROM-Laufwerk 230, USB-Anschlüsse (Universal Serial Bus) und andere Datenübertragungsanschlüsse 232 sowie PCI/PCIe-Einheiten 234 sind über einen Bus 238 und einen Bus 240 mit dem SB/ICH 204 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 ROM 224 kann z.B. ein Flash-BIOS (Basic Input/Output System) sein.
  • Das Festplattenlaufwerk 226 und das CD-ROM-Laufwerk 230 sind über den Bus 240 mit dem SB/ICH 204 verbunden. Das Festplattenlaufwerk 226 und das CD-ROM-Laufwerk 230 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/ICH 204 verbunden sein.
  • In der Verarbeitungseinheit 206 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert und steuert verschiedene Komponenten innerhalb des Datenverarbeitungssystems 200 aus 2. 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 Datenverarbeitungssystem 200 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 Datenverarbeitungssystem 200 kann ein symmetrisches Mehrprozessor-System (Symmetric Multiprocessor, SMP) sein, das eine Vielzahl von Prozessoren in der Verarbeitungseinheit 206 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 Hauptspeicher 208 geladen werden, um durch die Verarbeitungseinheit 206 ausgeführt zu werden. Die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung können durch die Verarbeitungseinheit 206 unter Verwendung von computernutzbarem Programmcode durchgeführt werden, der sich in einem Speicher wie z.B. dem Hauptspeicher 208, dem ROM 224 oder in einer oder mehreren Peripherie-Einheiten 226 und 230 befinden kann.
  • Ein Bussystem wie z.B. der Bus 238 oder 240, wie in 2 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 Modem 222 oder der Netzwerkadapter 212 aus 2 kann eine oder mehrere Einheiten beinhalten, die zum Senden und Empfangen von Daten verwendet werden. Ein Speicher kann z.B. der Hautspeicher 208, der ROM 224 oder ein Cachespeicher sein, wie er in dem NB/MCH 202 aus 2 vorhanden ist.
  • Der Fachmann weiß, dass die Hardware aus 1 und 2 je nach Realisierung variieren kann. Zusätzlich oder anstelle der in 1 und 2 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 Datenverarbeitungssystem 200 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 Datenverarbeitungssystem 200 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 Speichersteuereinheit 310 weist eine oder mehrere Verarbeitungseinheiten 312 und einen Speicher 311 auf. Befehle für den Betrieb der Speichersteuereinheit 310 können zur Ausführung durch die Verarbeitungseinheit 312 in den Hauptspeicher 311 geladen werden. Die Prozesse für veranschaulichende Ausführungsformen können durch die Verarbeitungseinheit 312 unter Verwendung von computernutzbarem Programmcode durchgeführt werden, der in einem Speicher wie beispielsweise dem Speicher 311 vorhanden sein kann.
  • Die Speichersteuereinheit 310 stellt eine Verbindung mit einem Datenübertragungsbus oder einer Datenübertragungsstruktur 320 her. Die Speichersteuereinheit 310 kann über den Datenübertragungsbus/die Datenübertragungsstruktur 320 oder über eine anderweitige Datenübertragungsstruktur oder ein Datenübertragungsnetzwerk (nicht abgebildet) Zugriffsanforderungen von einem (nicht abgebildeten) Initiator empfangen. Für Schreibanforderungen kann die Speichersteuereinheit 320 Daten in einen mehrschichtigen Speicher schreiben, der einen HDD-Speicher 350 und einen Bandspeicher 360 aufweisen kann. Die Speichersteuereinheit 320 sendet außerdem den Schreibvorgang an einen Journalführungsspeicher 340.
  • 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 Speicher 311, im SSD 330 oder sowohl im Speicher 311 als auch im SSD 330. 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 SSD 330.
  • 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 SSD 330 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 SSD 330. 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 Journalspeicher 340 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 SSD 330 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 SSD 330 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 SSD 330 zuzugreifen und einen kleinen Transaktionsblock in das Journal auf dem SSD 330 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 in 4 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 Dateisystemebenen 410, um die Daten auf eine Platteneinheit 420 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 Suchfunktion 402, um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem Speicher 430 vorhanden ist. Die Deduplizierungstabelle ordnet Schlüssel Datenblöcken zu, die in das Journal geschrieben wurden. Wenn in der Deduplizierungstabelle im Speicher 430 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 Speicher 430 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: Block 403), aktualisiert er die Deduplizierungstabelle im Speicher 430, um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion 402 keine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (NEIN: Block 403), verwendet er eine Suchfunktion 404, um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem SSD 440 vorhanden ist. Die Deduplizierungstabelle im SSD 440 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: Block 405), aktualisiert er die Deduplizierungstabelle im SSD 440, um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion 404 keine Übereinstimmung in der Deduplizierungstabelle findet (NEIN: block 405), aktualisiert er das SSD 440 mit der Hash-Schlüssel-Übereinstimmung und sendet den Hash-Schlüssel und den Datenblock an eine separate Platte (z.B. die Platteneinheit 420) oder an einen eigens vorgesehenen Bereich der separaten Platte (Block 406). 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 SSD 440. Die gesamte Zuordnung zwischen dem Hash-Schlüssel und dem Datenblock kann aus dem SSD 440 auf die Journalplatte 450 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 Dateisystemebenen 510, um die Daten von einer Platteneinheit 520 zu lesen.
  • In dem Journalpfad verwendet der Mechanismus eine Suchfunktion 502, um den Hash-Schlüssel in einer Deduplizierungstabelle in einem Speicher 530 zu suchen und um zu ermitteln, ob die Lesedaten (Datei, Versatz, Größe) im SSD 540 vorhanden sind. Wenn die Daten im SSD vorhanden sind (JA: Block 503), bricht der Mechanismus den Dateisystem-Lesevorgang ab (Block 506) und gibt die Daten aus dem SSD 540 zurück (Block 507).
  • Wenn die Suche in der speicherinternen Deduplizierungstabelle keinen Treffer ergibt (NEIN: Block 503), verwendet der Mechanismus eine Suchfunktion 504, um den Hash-Schlüssel in der Deduplizierungstabelle im SSD 540 zu suchen und um zu ermitteln, ob die Lesedaten (Datei, Versatz, Größe) im SSD 540 vorhanden sind. Wenn die Daten im SSD vorhanden sind (JA: Block 505), bricht der Mechanismus den Dateisystem-Lesevorgang ab (Block 506) und gibt die Daten aus dem SSD 540 zurück (Block 507).
  • 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: Block 503 und Block 505), 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 Dateisystemebenen 510 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, stellt 6 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 Platteneinheit 620 und berechnet eine Prüfsumme der Daten (Block 602). Der Mechanismus liest zudem eine Prüfsumme (Hash-Schlüssel) der Journaltransaktion aus einem SSD 640 oder von einer Journalplatte 650 (Block 603). Danach vergleicht der Mechanismus die Prüfsummen (Block 604) und ermittelt, ob die Prüfsummen übereinstimmen (Block 605). Wenn die Prüfsummen in Block 605 übereinstimmen, sind die Daten in Ordnung (Block 606).
  • Wenn die Prüfsummen in Block 605 nicht übereinstimmen, ruft der Mechanismus die Daten, die der Transaktion entsprechen, aus dem SSD 640 oder von der Journalplatte 650 ab (Block 607). Neben den Metadaten stehen die Daten dem Mechanismus entweder in dem Journal des SSD 640, wo sie unter Umständen vorübergehend gespeichert waren, oder auf der Journalplatte 650 zur Verfügung. Der Mechanismus stellt die Daten dann aus dem SSD 640 oder von der Journalplatte 650 wieder her und verschiebt die Daten auf die Platteneinheit 620. 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 in 7 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 Dateisystemebenen 710, um die Daten auf eine Platteneinheit 720 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 Suchfunktion 702, um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem Speicher 730 vorhanden ist. Wenn der Mechanismus anhand der Suchfunktion 702 eine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (JA: Block 703), aktualisiert er die Deduplizierungstabelle im Speicher 730, um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion 702 keine Übereinstimmung in der speicherinternen Deduplizierungstabelle findet (NEIN: Block 703), verwendet er eine Suchfunktion 704, um zu ermitteln, ob der Schlüssel in einer Deduplizierungstabelle in einem SSD 740 vorhanden ist. Die Deduplizierungstabelle im SSD 740 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: Block 705), aktualisiert er die Deduplizierungstabelle im SSD 740, um den Datenblock dem zuvor geschriebenen Datenblock zuzuordnen. Wenn der Mechanismus anhand der Suchfunktion 704 keine Übereinstimmung in der Deduplizierungstabelle findet (NEIN: Block 705), aktualisiert er den SSD 740 mit dem übereinstimmenden Hash-Schlüssel. Der Mechanismus sendet dann den Hash-Schlüssel und den Datenblock an eine separate Platte (z.B. die Platteneinheit 720) 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 Block 705), schreibt der Mechanismus den Datenblock und die Prüfsumme der Daten auf eine Journalplatte 750 (Block 706). Der Mechanismus schreibt zu diesem Zeitpunkt den Datenblock und die Prüfsumme der Daten nicht in das SSD 740. Vielmehr führt ein asynchroner Dämonprozess eine Massenaktualisierung des SSD 740 mit den Hash-Werten durch. Dies verringert die Anzahl von Schreibvorgängen für das SSD 740 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 SSD 740 gefunden wurde, und als Reaktion darauf, dass der Schreibvorgang auf die Journalplatte 750 abgeschlossen wurde, oder als Reaktion darauf, dass der Schreibvorgang in die Platteneinheit 720 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 (Block 800). Der Mechanismus sendet die Schreiboperation an den Dateisystempfad (Block 801), und die Operation endet (Block 802).
  • Parallel zum Senden des Schreibvorgangs an den Dateisystempfad in Block 801 berechnet der Mechanismus eine Prüfsumme der Schreibdaten (Block 803) und sucht die Prüfsumme in einer speicherinternen Deduplizierungs-Hash-Tabelle (Block 804). Der Mechanismus ermittelt, ob die Prüfsumme in der Speichertabelle gefunden wird (Block 805). Wenn die Prüfsumme (der Hash-Schlüssel) in der speicherinternen-Tabelle gefunden wird, speichert der Mechanismus die Prüfsumme in dem Journal (Block 806) und gibt den Schreibabschluss an den Initiator zurück (Block 807). Danach endet die Operation in Block 802. Wenn die Prüfsumme in Block 805 nicht in der Speichertabelle gefunden wird, sucht der Mechanismus die Prüfsumme in der SSD-Deduplizierungs-Hash-Tabelle (Block 808). Der Mechanismus ermittelt, ob die Prüfsumme in der SSD-Tabelle gefunden wird (Block 809). Wenn die Prüfsumme in der SSD-Tabelle gefunden wird, speichert der Mechanismus die Prüfsumme in dem Journal (Block 806) und gibt den Schreibabschluss an den Initiator zurück (Block 807). Danach endet die Operation in Block 802.
  • Wenn die Prüfsumme in Block 809 nicht in der Deduplizierungstabelle gefunden wird, schreibt der Mechanismus den Datenblock auf die Platte (Block 810) und aktualisiert die Hash-Tabelle, um die Prüfsumme dem Datenblock auf der Platte zuzuordnen (Block 811). Danach gibt der Mechanismus einen Schreibabschluss an den Initiator zurück (Block 807). Danach endet die Operation in Block 802.
  • 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 (Block 900). Der Mechanismus sendet die Leseoperation an den Dateisystempfad (Block 901). 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 (Block 902). Der Mechanismus ermittelt, ob die Lesedaten in der Speichertabelle gefunden werden (Block 903). Wenn die Lesedaten in Block 903 gefunden werden, liest der Mechanismus die Daten aus dem SSD (Block 904) und bricht den Dateisystem-Lesevorgang, falls möglich, ab (Block 905). Danach gibt der Mechanismus die Lesedaten an den Initiator zurück (Block 906), und die Operation endet (Block 907).
  • 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 (Block 908). Der Mechanismus ermittelt, ob die Lesedaten in der SSD-Deduplizierungstabelle gefunden werden (Block 909). Wenn die Lesedaten in Block 909 gefunden werden, liest der Mechanismus die Daten aus dem SSD (Block 904) und bricht den Dateisystem-Lesevorgang, falls möglich, ab (Block 905). Danach gibt der Mechanismus die Lesedaten an den Initiator zurück (Block 906), und die Operation endet (Block 907).
  • Wenn die Lesedaten in Block 909 nicht gefunden werden, gibt der Mechanismus die Lesedaten aus dem Dateisystempfad zurück (Block 906). Danach endet die Operation (Block 907).
  • 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 (Block 1000). Der Mechanismus prüft die erste Journaltransaktion (Block 1001). Der Mechanismus liest die Prüfsumme der Journaltransaktion aus dem Journal (Block 1002). Der Mechanismus liest die entsprechenden Daten aus dem Dateisystem (Block 1003) und berechnet eine Prüfsumme für die Daten (Block 1004).
  • 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 (Block 1006). Wenn die Prüfsummen übereinstimmen, ermittelt der Mechanismus, ob der Fehlerpunkt in den Journaltransaktionen erreicht wurde (Block 1007). Wenn der Fehlerpunkt nicht erreicht wurde, prüft der Mechanismus die nächste Journaltransaktion (Block 1008), und die Operation kehrt zu Block 1002 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 (Block 1009). 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 (Block 1010). Danach ermittelt der Mechanismus, ob der Fehlerpunkt in den Journaltransaktionen erreicht wurde (Block 1007). Wenn der Fehlerpunkt nicht erreicht wurde, prüft der Mechanismus die nächste Journaltransaktion (Block 1008), und die Operation kehrt zu Block 1002 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 (Block 1011).
  • 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)

  1. 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.
  2. 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.
  3. Computerprogrammprodukt nach Anspruch 2, wobei das Speichern des Hash-Schlüssels in einer Journaltransaktion der Schreibanforderung das Speichern der Journaltransaktion in der Halbleiterspeichereinheit aufweist.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. Verfahren nach Anspruch 10, wobei das Speichern des Hash-Schlüssels in einer Journaltransaktion der Schreibanforderung das Speichern der Journaltransaktion in der Halbleiterspeichereinheit aufweist.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
DE102013211071.5A 2012-06-28 2013-06-13 Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung Active DE102013211071B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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