DE102016010277A1 - Verfahren und systeme zum verbessern von speicher-journaling - Google Patents

Verfahren und systeme zum verbessern von speicher-journaling Download PDF

Info

Publication number
DE102016010277A1
DE102016010277A1 DE102016010277.2A DE102016010277A DE102016010277A1 DE 102016010277 A1 DE102016010277 A1 DE 102016010277A1 DE 102016010277 A DE102016010277 A DE 102016010277A DE 102016010277 A1 DE102016010277 A1 DE 102016010277A1
Authority
DE
Germany
Prior art keywords
piece
memory
flash memory
recovery
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102016010277.2A
Other languages
English (en)
Inventor
Daniel Peter NOÉ
Pulkit Ambikanandan MISRA
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.)
HGST Netherlands BV
Original Assignee
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102016010277A1 publication Critical patent/DE102016010277A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/13File access structures, e.g. distributed indices
    • 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/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Abstract

Es werden Techniken zum Verbessern von Speicher-Journaling offenbart. In manchen Ausführungsformen können die Techniken als ein Verfahren zur Verbesserung von Speicher-Journaling realisiert werden, die ein Aufzeichnen einer Zahl von gültigen Blöcken in einem ersten Stück Speicher in einem Flashspeicher in ein Journal, ein Empfangen einer Anforderung, ein zweites Stück in den Flashspeicher zu schreiben, ein Bestimmen unter Verwendung eines Controllers, ob die Zahl von gültigen Blöcken im ersten Stück kleiner als ein angegebener Schwellenwert ist, und falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, ein Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher enthält.

Description

  • Stand der Technik
  • Journaling-Dateisysteme können Änderungen vor einer Festschreibung der Änderungen in das Dateisystem nachverfolgen. Ein solches Journaling kann ein Risiko von Datenkorruption oder -verlust im Fall eines Systemabsturzes oder Fehlers reduzieren. Journale sind üblicherweise von einer begrenzten Größe. Journale können von einem Beginn eines Bereichs (z. B. einer Datei) bis zu einem Ende des Bereichs schreiben und wieder zum Beginn des Bereichs umbrechen, sobald das Ende erreicht wird. Bestehende Datenlayouts mit Journalen leiden unter dem Problem, dass nützliche Daten überschrieben werden müssen, wenn das Journal wieder umbricht und an dem Punkt ankommt, an dem es bestehende Daten gibt. Die verbleibenden nützlichen Daten müssen verworfen werden oder an die neue Stelle geschrieben werden, was eine „Schreibverstärkung” verursacht und eine Leistung reduziert (da Schreibvorgänge üblicherweise langsamer als Lesevorgänge sind).
  • Darstellung der Erfindung
  • Es werden Techniken zum Verbessern von Speicher-Journaling offenbart. In manchen Ausführungsformen können die Techniken als ein Verfahren zum Verbessern von Speicher-Journaling realisiert werden, das ein Aufzeichnen einer Zahl von gültigen Blöcken in einem ersten Stück Speicher in einem Flashspeicher in ein Journal, ein Empfangen einer Anforderung, ein zweites Stück in den Flashspeicher zu schreiben, ein Bestimmen unter Verwendung eines Controllers, ob die Zahl von gültigen Blöcken im ersten Stück kleiner als ein angegebener Schwellenwert ist, und falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, ein Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher enthält.
  • Ausführungsformen enthalten ein Speichern von Daten in einem Journal, das die Fähigkeit bereitstellt, das Journal ,wiederzugeben' und immer den richtigen Datenzustand wiederherzustellen, ohne zu erfordern, dass das Journal sequenziell wiedergegeben wird. Ausführungsformen können die Fähigkeit enthalten, einige Teile des Journals während normaler (Schreib-)Operation zu überspringen. Wie unten ausführlicher besprochen, kann das Journal die Fähigkeit einer Wiederherstellung (Wiedergabe) des Journals bereitstellen, auch wenn es ältere Daten beinhaltet, die übersprungen wurden. Das Journal kann ferner die Fähigkeit bereitstellen, eine Wiederherstellung unter Verwendung vieler CPU-Kerne parallel durchzuführen.
  • Nach Aspekten dieser Offenbarung kann ein Verfahren zum Verbessern von Speicher-Journaling die folgenden Schritte umfassen: Aufzeichnen einer Zahl von gültigen Blöcken in einem ersten Stück Speicher in einem Flashspeicher in ein Journal, Empfangen einer Anforderung, ein zweites Stück in den Flashspeicher zu schreiben, und Bestimmen unter Verwendung eines Controllers, ob die Zahl von gültigen Blöcken im ersten Stück unter einem angegebenen Schwellenwert liegt. Das Verfahren kann auch die folgenden Schritte enthalten: Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher, falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, Empfangen einer Wiederherstellungsanforderung und Wiederherstellen eines oder mehrerer Teile des Flashspeichers unter Verwendung einer Wiederherstellungssequenzabbildung.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann die Zahl der gültigen Blöcke in Metadaten gepflegt werden, die mit einem oder mehreren Speicherstücken im Flashspeicher assoziiert sind, und die Metadaten können mit einer logischen Blockadressenabbildung assoziiert gespeichert werden.
  • Nach zusätzlichen Aspekten dieser Ausführungsform wird die Zahl aktualisiert, wenn ein Überschreiben eines oder mehrerer Blöcke im ersten Stück eintritt.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher ein Umpacken eines Teils von Daten des ersten Speicherstücks und ein Schreiben des Teils von Daten an eine zweite Speicherstelle in den Flashspeicher umfassen.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Verfahren unter Verwendung des Controllers bestimmen, ob eine Zahl von gültigen Blöcken in einem dritten Speicherstück im Flashspeicher kleiner als der angegebene Schwellenwert ist, falls die Anzahl der gültigen Blöcke im ersten Stück den angegebenen Schwellenwert überschreitet.
  • Nach zusätzlichen Aspekten dieser Ausführungsform können Speicherstücke von Flashspeicher in einer sequenziellen Reihenfolge bewertet werden, um zu bestimmen, ob ein bestimmtes Speicherstück von Flashspeicher eine Anzahl von gültigen Blöcken beinhaltet, die einen angegebenen Schwellenwert erreichen.
  • Nach zusätzlichen Aspekten dieser Ausführungsform können mit einem oder mehreren Speicherstücken assoziierte Metadaten eine Zahl von gültigen Blöcken in jedem des einen oder der mehreren Speicherstücke beinhalten und werden sortiert, um einen Speicherblock zu identifizieren, der eine geringste Zahl von gültigen Blöcken aufweist.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann der Schwellenwert angegeben werden, um Schreibverstärkungsprobleme zu reduzieren.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann der Schwellenwert abhängig von mindestens einem von Folgenden angepasst werden: einem Grad von CPU-Nutzung, einem Grad von Netzwerknutzung und einer benutzerdefinierten Präferenz.
  • Nach zusätzlichen Aspekten dieser Ausführungsform erfordert der Schwellenwert, dass weniger als fünfzig Prozent der Blöcke gültige Blöcke sind, damit die Stelle eines Stücks als eine Schreibstelle für das zweite Stück verwendet wird.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Verfahren auch den Schritt eines Assoziierens einer logischen Blockadresse mit einer Flashspeicherblock-Sequenznummer umfassen.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Assoziieren der logischen Blockadresse mit der Flashspeicherblock-Sequenznummer ein Assoziieren der Flashspeicherblock-Sequenznummer mit der logischen Blockadresse in einer logischen Blockadressenabbildung umfassen.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Wiederherstellen eines oder mehrerer Teile des Flashspeichers die folgenden Schritte umfassen: Lesen eines Stücks des Flashspeichers vor der Wiederherstellung, Bestimmen, ob sich ein physischer Block des vom Flashspeicher gelesenen Stücks in einer Wiederherstellungssequenzabbildung befindet, falls sich der physische Block nicht in der Wiederherstellungssequenzabbildung befindet, Hinzufügen einer Adresse des physischen Blocks zur logischen Blockadressenabbildung und Hinzufügen einer mit dem Stück assoziierten Sequenznummer zur Wiederherstellungssequenzabbildung.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Wiederherstellen eines oder mehrerer Teile des Flashspeichers die folgenden Schritte umfassen: Lesen eines Stücks des Flashspeichers vor der Wiederherstellung, Bestimmen, ob sich ein physischer Block des aus dem Flashspeicher gelesenen Stücks in einer Wiederherstellungssequenzabbildung befindet, falls sich der physische Block in der Wiederherstellungssequenzabbildung befindet, Vergleichen einer mit dem gelesenen Stück assoziierten Sequenznummer mit einer mit dem Stück in der Wiederherstellungssequenzabbildung assoziierten Sequenznummer, falls die mit dem gelesenen Stück assoziierte Sequenznummer höher als die mit dem Stück in der Wiederherstellungssequenzabbildung assoziierten Sequenznummer ist, Aktualisieren der logischen Blockadressenabbildung, damit diese eine physische Blockadresse des physischen Blocks enthält, und Aktualisieren der Wiederherstellungssequenzabbildung, damit diese die mit dem gelesenen Stück assoziierte Sequenznummer beinhaltet.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Verfahren ein Ignorieren des gelesenen Blocks umfassen, in dem die mit dem gelesenen Stück assoziierte Sequenznummer niedriger als die mit dem Stück in der Wiederherstellungssequenzabbildung assoziierte Sequenznummer ist.
  • Nach zusätzlichen Aspekten dieser Ausführungsform kann das Verfahren ferner die folgenden Schritte umfassen: Partitionieren der logischen Blockadressenabbildung nach logischer Blockadresse, Partitionieren einer Wiederherstellungssequenzabbildung nach logischer Blockadresse und Bereitstellen einer Sperre zum Sperren eines Bereichs von Blockadressen, wobei die Sperre eine gleichzeitige Wiederherstellung von Flashspeicher ermöglicht.
  • Nach Aspekten der Offenbarung, ein Computerprogrammprodukt, das aus einer Reihe von Anweisungen besteht, die auf einem Computer ausführbar sind, wobei das Computerprogrammprodukt einen Prozess zum Verbessern von Speicher-Journaling durchführt, wobei das Computerprogramm die folgenden Schritte implementiert: Aufzeichnen einer Zahl von gültigen Blöcken in einem ersten Speicherstück in einem Flashspeicher in ein Journal, Empfangen einer Anforderung, ein zweites Stück in den Flashspeicher zu schreiben, Bestimmen unter Verwendung eines Controllers, ob die Zahl von gültigen Blöcken im ersten Stück kleiner als ein angegebener Schwellenwert ist, falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks im Flashspeicher, Empfangen einer Wiederherstellungsanforderung und Wiederherstellen eines oder mehrerer Teile des Flashspeichers unter Verwendung einer Wiederherstellungssequenzabbildung.
  • Nach Aspekten der Offenbarung kann ein System zum Verbessern von Speicher-Journaling eine Speichermedieneinrichtung und einen PCIe-basierten Einrichtungscontroller umfassen, der mit der Speichermedieneinrichtung assoziiert ist, wobei der PCIe-basierte Einrichtungscontroller konfiguriert ist, eine Zahl von gültigen Blöcken in einem ersten Speicherstück in einem Flashspeicher in ein Journal aufzuzeichnen, eine Anforderung zu empfangen, ein zweites Stück in den Flashspeicher zu schreiben, zu bestimmen, ob die Zahl von gültigen Blöcken im ersten Stück kleiner als ein angegebener Schwellenwert ist, falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, das zweite Stück an eine Stelle des ersten Speicherstücks im Flashspeicher zu schreiben, eine Wiederherstellungsanforderung zu empfangen und einen oder mehrere Teile des Flashspeichers unter Verwendung einer Wiederherstellungssequenzabbildung wiederherzustellen.
  • Nach zusätzlichen Aspekten dieser Ausführungsform, kann der Einrichtungscontroller bestimmen, ob eine Zahl von gültigen Blöcken in einem dritten Speicherstück im Flashspeicher kleiner als der angegebene Schwellenwert ist, falls die Anzahl der gültigen Blöcke im ersten Stück den angegebenen Schwellenwert überschreitet.
  • Die vorliegende Offenbarung wird nun detaillierter mit Bezug auf Ausführungsbeispiele hiervon wie in den begleitenden Zeichnungen gezeigt beschrieben. Obwohl die vorliegende Offenbarung unten mit Bezug auf Ausführungsbeispiele beschrieben wird, sollte verstanden werden, dass die vorliegende Offenbarung nicht auf diese beschränkt ist. Die Durchschnittsfachleute, die Zugang zur Lehre hier haben, werden zusätzliche Implementierungen, Änderungen und Ausführungsformen sowie andere Einsatzgebiete erkennen, die im Umfang der vorliegenden Offenbarung wie hier beschrieben sind und in Bezug auf die die vorliegende Offenbarung von wesentlichem Nutzen sein kann.
  • Kurzbeschreibung der Zeichnungen
  • Um ein vollständigeres Verständnis der vorliegenden Offenbarung zu ermöglichen, wird nun auf die begleitenden Zeichnungen Bezug genommen, in denen gleiche Elemente mit gleichen Ziffern referenziert werden. Diese Zeichnungen sollten nicht als die vorliegende Offenbarung einschränkend ausgelegt werden, sondern sollen lediglich beispielhaft sein.
  • l ist ein Blockdiagramm, das eine Vielzahl von PCIe-Einrichtungen in Kommunikation mit einer Host-Einrichtung nach einer Ausführungsform der vorliegenden Offenbarung darstellt.
  • 2 ist ein Blockdiagramm, das Datenstrukturen für verbessertes Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung darstellt.
  • 3 ist ein Blockdiagramm, das eine Komponente zum Verbessern von Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung darstellt.
  • 4 ist ein Ablaufdiagramm, das ein Verfahren zum Verbessern von Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung illustriert.
  • 5 ist ein Ablaufdiagramm, das ein Verfahren zur Wiederherstellung unter Verwendung von verbessertem Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung illustriert.
  • Beschreibung
  • Die vorliegende Offenbarung betrifft Techniken zum Verbessern von Speicher-Journaling für Festkörperlaufwerke („SSDs”) (die z. B. Flashspeicher umfassen). Für wahlfreien Zugriff geeignete Festkörperspeicher, Datenstrukturen, Algorithmen und/oder Verschaltungen (z. B. (Mikro-)Prozessoren, logische Gatter, Switches, ein anwendungsspezifischer integrierter Schaltkreis (ASIC), eine speicherprogrammierbare Steuerung (z. B. FPGA) und ein eingebetteter Mikrocontroller), die verbessertes Speicher-Journaling ermöglichen, können bereitgestellt werden.
  • Nun zu den Zeichnungen gewandt ist 1 ein Blockdiagramm, das eine PCIe-Einrichtung in Kommunikation mit einer Host-Einrichtung nach einer Ausführungsform der vorliegenden Offenbarung darstellt. 1 enthält eine Anzahl von Rechentechnologien, wie ein Hostsystem 102, eine Host-CPU 104 und einen PCI Express Root Complex 106. Ein Switch 108 kann kommunikativ über den PCI Express Root Complex 106 eine Vielzahl von Zielen (z. B. PCIe-Einrichtungen, wie NVMe-basierte Ziele) wie Ziele 110, 116 und 122 an das Hostsystem 102 koppeln.
  • Das Ziel 110 kann einen Controller 112 (z. B. einen NVMe-Controller) und nichtflüchtigen Speicher 114 beinhalten. Das Ziel 116 kann einen Controller 118 (z. B. einen NVMe-Controller) und nichtflüchtigen Speicher 120 beinhalten. Das Ziel 122 kann einen Controller 124 (z. B. einen NVMe-Controller) und nichtflüchtigen Speicher 126 beinhalten.
  • Speicherbasierte Ressourcen können für das Hostsystem 102 über eine Speicherschnittstelle (z. B einen synchronen dynamischen RAM-Speicher des Typs Drei mit doppelter Datenrate (DDR3 SDRAM)) zugänglich sein. Der Speicher kann eine beliebige geeignete Form annehmen, wie zum Beispiel, aber nicht beschränkt auf einen Festkörperspeicher (z. B. Flashspeicher oder eine Festkörpereinrichtung (SSD)), optischen Speicher und magnetischen Speicher.
  • Nach manchen Ausführungsformen können andere Schnittstellenstandards als PCIe für eine oder mehrere Teile verwendet werden, einschließlich, aber nicht beschränkt auf Serial Advanced Technology Attachment (SATA), Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), PCI-extended (PCI-X), Fibre Channel, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC) und Universal Flash Storage (UFS).
  • Das Hostsystem 102 kann eine beliebige geeignete Form annehmen, wie zum Beispiel, aber nicht beschränkt auf einen Unternehmensserver, einen Datenbankhost, eine Arbeitsstation, einen Personalcomputer, ein Mobiltelefon, eine Spieleeinrichtung, ein Personal Digital Assistant (PDA), eine E-Mail-/Textnachrichteneinrichtung, eine Digitalkamera, einen digitalen Medienplayer (z. B. MP3-Player), eine GPS-Navigationseinrichtung und ein TV-System.
  • Das Hostsystem 102 und die Zieleinrichtung können zusätzliche Komponenten enthalten, die in 1 nicht gezeigt werden, um die Zeichnung zu vereinfachen. In manchen Ausführungsformen sind außerdem nicht alle der gezeigten Komponenten vorhanden. Ferner können die verschiedenen Controller, Blöcke und Schnittstellen auf eine beliebige geeignete Weise implementiert werden. Ein Controller kann zum Beispiel die Form von einem oder mehreren von Folgenden annehmen: einem Mikroprozessor oder Prozessor und einem computerlesbaren Medium, das computerlesbaren Programmcode speichert (z. B. Software oder Firmware), der zum Beispiel vom (Mikro-)Prozessor, logischen Gattern, Switches, einem anwendungsspezifischen integrierten Schaltkreis (ASIC), einer speicherprogrammierbaren Steuerung (z. B. FPGA) und einem eingebetteten Mikrocontroller ausführbar ist.
  • 2 ist ein Blockdiagramm, das Datenstrukturen für verbessertes Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung darstellt. 2 enthält eine Speichereinrichtung 209, die ein Stück 202, Stück 203 bis einschließlich Stück n, ein Stück mit gültiger Blockzahl 210, eine logische zu physischer Abbildung 212 und eine Wiederherstellungsabbildung 214 aufweist. In manchen Ausführungsformen können zwei oder mehr des Stücks mit gültiger Blockzahl 210, der logischen zu physischen Abbildung 212 und der Wiederherstellungsabbildung 214 kombiniert werden.
  • Daten können in „Stücken” (z. B. sequenziell) ausgeschrieben werden, die die Daten und Metadaten für eine Anzahl von einzelnen „Blöcken” beinhalten können. Wenn ein Block später überschrieben wird, kann er nicht an Ort und Stelle aktualisiert werden. Stattdessen kann der aktualisierte Datenblock in ein neues Stück geschrieben werden. Stücke können üblicherweise sequenziell ausgeschrieben werden, bis das Ende einer Speichereinrichtung erreicht ist. Übliche Datenlayouts mit Journalfunktion „brechen” bei Erreichen des Speicherendes in einer Speichereinrichtung Schreibvorgänge von Stücken zum Beginn der Einrichtung „um”. Zu diesem Zeitpunkt überschreiben neue Schreibvorgänge von Stücken bestehende Stücke und die gültigen Daten in diesen Stücken können zuerst in ein neues Stück umgepackt oder verworfen werden.
  • Ausführungsformen der Offenbarung können ein Datenlayout bereitstellen, das fähig ist, jederzeit ein unsauberes Ausschalten oder einen Absturz zu tolerieren. Um ein unsauberes Ausschalten oder einen Absturz zu handhaben, können Ausführungsfomen ein Layout mit Journalfunktion verwenden. Obwohl mit zwei Stücken illustriert, kann eine Speichereinrichtung eine beliebige Anzahl von Teilen von Speicher (z. B. bis zu Stück n) enthalten. Obwohl Stücke 202 und 203 als Stücke einer bestimmten Größe gezeigt werden, können andere Größen und Teile oder Typen von Speicher verwendet werden (z. B. Spuren, Sektoren, Stücke unterschiedlicher Größe usw.). Wie in 2 illustriert, können die Stücke 202 und 203 64 Blöcke von Speicher enthalten, von denen manche von gültigen Daten (dunkle Blöcke, die zum Beispiel Blöcke 206 und 216 enthalten) verwendet werden und von denen manche entweder nicht verwendet werden oder Daten halten, die überschrieben wurden (helle Blöcke, die zum Beispiel Block 208 enthalten). Die Stücke 202 und 203 können zwei Stücke in einem Speicher-Journalingsystem sein und sie können jeweils mit einer Sequenznummer assoziiert sein (d. h., 202 bzw. 203). In manchen Ausführungsformen kann das Stück 202 ein Stück sein, in das ein Journalsystem derzeit schreibt, und das Stück 203 kann ein nächstes sequenzielles Stück sein.
  • Nach manchen Ausführungsformen kann eine Anzahl von derzeit gültigen Blöcken in jedem Stück in einem Stück mit gültiger Blockzahl 210 gespeichert werden (z. B. 43 gültige Blöcke in Stücksequenznummer 202 und 22 gültige Blöcke in Stücksequenznummer 203). In anderen Ausführungsformen kann eine Datenstruktur eine Anzahl gültiger Teile von Daten in Spuren, Sektoren oder anderen Teilen von Speicher nachverfolgen. Das Stück mit gültiger Blockzahl 210 kann eine Sequenznummer eines Stücks mit einer Zahl von gültigen Blöcken assoziieren (z. B. Blöcken, die Daten enthalten, die nicht gelöscht oder überschrieben wurden). Wenn eine Schreibanforderung empfangen wird, kann ein Prozess oder eine Verschaltung, die die Schreibanforderung handhabt (z. B. ein Speichercontroller der Speichereinrichtung 209), auf Basis einer oder mehrerer Faktoren bestimmen, ob in ein aktuelles Stück geschrieben werden soll. Eine Bestimmung, ob ein aktuelles Stück verwendet werden soll, kann zum Beispiel auf der Basis erfolgen, ob eine Anzahl von gültigen Blöcken in einem aktuellen Stück kleiner als ein angegebener Schwellenwert ist. Falls zum Beispiel ein Schwellenwert 50% ist und das aktuelle Stück die Stücksequenznummer 202 ist, kann eine Anzahl von gültigen Blöcken unter Verwendung der Sequenznummer identifiziert werden, um auf eine Zahl im Stück mit gültiger Blockzahl 210 abzubilden. Im vorliegenden Beispiel können 43 Blöcke von 64 Blöcken der Stücksequenznummer 202 gültig sein (~67%). Eine Bewertung der Stücksequenznummer 203 kann bestimmen, dass nur 22 Blöcke von 64 Blöcken gültig sind (~34%), weshalb die Stücksequenz 202 „übersprungen” werden kann und die Daten der Schreibanforderung in die Stücksequenznummer 203 geschrieben werden können.
  • Das Schreiben von Daten in die Stücksequenznummer 203 und das Überspringen der Stücksequenznummer 202 kann von einem herkömmlichen sequenziellen Journalmodell losbrechen und kann zusätzliche Daten erfordern, um eine Wiederherstellbarkeit sicherzustellen. Die Wiederherstellungsabbildung 214 kann eine Sequenznummer nachverfolgen, die mit einem gültigen Datenteil assoziiert ist (z. B. einem physischen Stück, das einen aktuellsten Datenblock beinhaltet). Traditionell kann die Wiederherstellung Stücke sequenziell lesen und ein Stück mit einem Block von physischem Speicher verwenden, der mit einer logischen Blockadresse assoziiert ist, bis ein neues Stück mit einer höheren Sequenznummer identifiziert wird, das einen physischen Block aufweist, der mit der gleichen logischen Blockadresse assoziiert ist. Zu diesem Zeitpunkt kann die neue physische Blockadresse mit der logischen Blockadresse assoziiert werden. Die Wiederherstellungsabbildung 214 kann eine Sequenznummer oder einen anderen Indikator eines Speicherteils mit einer logischen Blockadresse assoziieren, sodass ein Wiederherstellungsprozess eine aktuelle Version eines Speicherteils identifizieren kann. Die Wiederherstellungsabbildung 214 kann zum Beispiel eine Sequenznummer eines Stücks mit einer logischen Blockadresse assoziieren. In manchen Ausführungsformen kann ein oder können mehrere Speicherteile sequenziell gelesen werden, wenn eine Wiederherstellungsanforderung empfangen wird. Die Wiederherstellungsabbildung 214 kann generiert werden, während Speicher gelesen wird, um eine Sequenznummer eines Stücks mit einem physischen Block mit einer aktuellen Datenkopie mit einer logischen Blockadresse zu assoziieren.
  • In manchen Ausführungsformen kann die Wiederherstellungsabbildung 214 ein Sperren bereitstellen, das auf Basis pro logischem Block, auf einem Bereich logischer Blöcke oder auf einer anderen Speichereinheit erfolgen kann. Die Generierung einer Wiederherstellungssequenzabbildung kann eine Sequenznummer eines Stücks anzeigen, das mit dem physischen Block mit den aktuellen Daten für einen logischen Block assoziiert ist, die Wiederherstellung erfordert möglicherweise nicht, dass alle Schreibvorgänge aus einem Journal gelesen werden und sequenziell angewandt werden. Stücke können parallel gelesen und wiederhergestellt werden. Die Wiederherstellungsabbildung 214 kann eine Wiederherstellungssequenzabbildung und/oder eine logische Blockadressenabbildung nach logischer Blockadresse partitionieren und kann Sperren auf einer logischen Blockadresse oder auf einem Bereich von logischen Blockadressen bereitstellen, was ermöglicht, dass verschiedene logische Blöcke oder verschiedene Bereiche logischer Blöcke gleichzeitig abgerufen werden.
  • Die logische auf physische Abbildung 212 kann logische Blöcke mit physischen Blöcken einer Speichereinrichtung assoziieren. In manchen Ausführungsformen kann eine Stücksequenznummer mit einem logischen Block assoziiert werden, um ein physisches Stück mit dem gültigen physischen Block anzuzeigen, der dem logischen Block entspricht.
  • 3 zeigt eine Komponente zum Verbessern von Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung. Komponenten können Hardware (z. B. eine dedizierte Verschaltung), Firmware, Software oder eine Kombination des Vorangehenden sein.
  • Die Beschreibung unten beschreibt Netzwerkelemente, Computer und/oder Komponenten eines Systems und Verfahren zur Sicherung und Wiederherstellung, die eine oder mehrere Komponenten enthalten können. Wie hierin verwendet, kann der Begriff „Komponente” verstanden werden, um Rechensoftware, Firmware, Hardware und/oder verschiedene Kombinationen davon zu bezeichnen (z. B. einen (Mikro-)Prozessor, logische Gatter, Switches, einen anwendungsspezifischen integrierten Schaltkreis (ASIC), eine speicherprogrammierbare Steuerung (z. B. FPGA) und einem eingebetteten Mikrocontroller, elektronischen Speicher, der ausführbare Anweisungen beinhaltet usw.). Komponenten sollen nicht als Software interpretiert werden, die nicht auf Hardware, Firmware implementiert ist oder auf einem prozessorlesbaren aufzeichenbaren Speichermedium aufgezeichnet ist (d. h., Komponenten sind keine Software an sich). Es wird angemerkt, dass die Komponenten beispielhaft sind. Die Komponenten können kombiniert, integriert, getrennt und/oder dupliziert werden, um verschiedene Anwendungen zu unterstützen. Außerdem kann eine Funktion, die hier als an einer bestimmten Komponente durchgeführt beschrieben wird, an einer oder mehreren anderen Komponenten und/oder durch ein oder mehrere andere Einrichtungen statt der oder zusätzlich zu der an der bestimmten Komponente durchgeführten Funktion durchgeführt werden. Ferner können die Komponente über mehrere Einrichtungen und/oder andere zueinander lokale oder entfernte Komponenten hinweg implementiert werden. Zusätzlich können die Komponenten von einer Einrichtung verschoben und zu einer anderen Einrichtung hinzugefügt werden und/oder in beiden Einrichtungen enthalten sein. In manchen Ausführungsformen können eine oder mehrere Komponenten als Teil eines SSD-Controllers, eines Hostsystems und/oder einer SSD-Optimierungssoftware implementiert werden. Wie in 3 illustriert, können Speicher-Journaling-Verbesserungskomponenten 310 eine Überwachungskomponente für gültige Blöcke 312, eine Zielstückidentifizierungskomponente 314, eine Wiederherstellungsabbildungsmanagementkomponente 316 und eine Fehlerprotokollier- und Berichterstattungskomponente 318 beinhalten.
  • Die Überwachungskomponente für gültige Blöcke 312 kann eine Anzahl, einen Prozentsatz oder einen anderen Indikator von gültigen Blöcken in einem Stück nachverfolgen (d. h. Blöcke, die nicht überschrieben wurden).
  • Blöcke in Stücken, die nicht überschrieben wurden, bevor das Journal umbricht (d. h., ein sequenzielles Ende des Flashspeichers erreicht und an einem Beginn des Flashspeichers fortfährt), können gültige Daten beinhalten, die möglicherweise neu geschrieben werden müssen oder verloren gehen. Die Überwachungskomponente für gültige Blöcke 312 kann gültige Blöcke nachverfolgen und die Informationen in mit einem Stück assoziierten Metadaten speichern. Metadaten können mit einer logischen Blockadressenabbildung (LBA-Abbildung) assoziiert sein und können ein Maß der Gültigkeit oder Ungültigkeit der Daten anzeigen (z. B. eine Anzahl von gültigen Blöcken, eine Anzahl von ungültigen oder überschriebenen Blöcken, einen Prozentsatz von gültigen Blöcken, einen Prozentsatz von ungültigen Blöcken usw.). Die Metadaten, die Gültigkeitszahlen beinhalten, können als Teil einer logischen Blockadressenabbildung gespeichert werden, die logische Blockadressen auf physische Blockadressen abbildet, oder sie können in einer separaten Datenstruktur gespeichert werden. Zahlen oder andere Indikatoren der Gültigkeit können nach Stück oder nach einer anderen Gruppierung gruppiert werden (z. B. einem Sektor auf einem Plattenlaufwerk, einer Spur auf einem Plattenlaufwerk usw.). Die Überwachungskomponente für gültige Blöcke 312 kann Schreibvorgänge auf Speicherteile überwachen und kann eine Zahl aktualisieren, wenn eine Überschreibung eintritt (z. B. eine Anzahl von gültigen Blöcken in einem Stück reduzieren, wenn Blöcke in diesem bestimmten Stück überschrieben werden).
  • Die Zielstückidentifizierungskomponente 314 kann Metadaten über die Datengültigkeit verwenden, um einen Speicherteil für einen Schreibvorgang zu identifizieren. Der identifizierte Speicherteil kann ausgewählt werden, um eine Anzahl von gültigen Teilen dieses Speichers zu reduzieren, die ein erneutes Schreiben erfordern. Dies kann Schreibverstärkungsprobleme, E/A-Verkehr, CPU- oder Controller-Nutzung und Abnutzung einer Speichereinrichtung reduzieren. Die Zielstückidentifizierungskomponente 314 kann zum Beispiel Stücke überspringen, die eine große Menge gültiger Daten beinhalten und stattdessen ein Stück überschreiben, das bereits Überschreibvorgänge oder Datenungültigmachung empfangen hat. In manchen Ausführungsformen kann die Zielstückidentifizierungskomponente 314 Metadaten verwenden, wie eine Zahl von gültigen Blöcken in einem Stück, und kann die Metadaten mit einem angegebenen Schwellenwert vergleichen. Wenn eine Anzahl von gültigen Blöcken in einem identifizierten Stück zum Beispiel unter einem angegebenen Schwellenwert ist, kann die Zielstückidentifizierungskomponente 314 den Speicher des identifizierten Stücks als eine Zielstelle für ein Stück einer Schreibanforderung auswählen. Einer oder mehrere gültige Blöcke des identifizierten Stücks können gelesen und in ein neues Stück umgepackt werden, bevor der Speicher von der Schreibanforderung überschrieben wird. Die umgepackten Daten können als Teil eines neuen Stücks an eine zweite Stelle im Speicher geschrieben werden. Falls jedoch die Zielstückidentifizierungskomponente 314 bestimmt, dass eine Anzahl von gültigen Blöcken in einem identifizierten Stück einen Schwellenwert erreicht oder überschreitet, kann die Zielstückidentifizierungskomponente 314 dieses Stück überspringen und ein anderes Stück für eine mögliche Zielschreibstelle bewerten. In manchen Ausführungsformen können die Stücke oder anderen Speichereinheiten sequenziell bewertet werden. In einer oder mehreren Ausführungsformen können die Metadaten sortiert werden, was ermöglicht, dass ein Speicherteil (z. B. ein Stück, eine Spur, ein Sektor) mit einer niedrigsten Menge an gültigem Speicher identifiziert wird. Die Zielstückidentifizierungskomponente 314 kann auch andere Faktoren beim Bestimmen bewerten, ob ein Speicherteil zu überschreiben ist (z. B. ein Alter von Daten, ein letzter Aktualisierungszeitpunkt, eine Gefragtheit oder Nutzungsfrequenz von Daten, eine sequenzielle Reihenfolge von Daten, mit einem Speicherteil assoziierte Fehler usw.).
  • In manchen Ausführungsformen können ein Schwellenwert oder andere Faktoren, die durch die Zielstückidentifizierungskomponente 314 bewertet werden, abhängig von einem oder mehreren Faktoren angepasst werden. Die Faktoren können zum Beispiel einen Grad von CPU-Nutzung, einen Grad von Netzwerknutzung und eine benutzerdefinierte Präferenz enthalten. In manchen Ausführungsformen kann ein Schwellenwert erfordern, dass weniger als fünfzig Prozent der Blöcke gültige Blöcke sind, damit die Stelle eines Stücks als eine Schreibstelle für das zweite Stück verwendet wird.
  • Das Überspringen von Datenteilen kann ein traditionelles Journal-Wiederherstellungsformat brechen, das eine sequenzielle Wiederherstellung erwarten kann. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann eine oder mehrere Datenstrukturen zum Wiederherstellen eines Journals trotz übersprungener Stücke generieren und/oder verwalten. Einige Datenformate können Sequenznummern beinhalten, die zur Wiederherstellung verwendet werden können. Wenn zum Beispiel ein Stück ausgeschrieben wird, kann es eine Sequenznummer beinhalten, die monoton ansteigen kann. Die Wiederherstellungsabbildungsmanagamentkomponente 316 kann eine Sequenznummer nachverfolgen, die mit einem gültigen Datenteil assoziiert ist (z. B. einem physischen Block, der eine aktuellste Datenkopie beinhaltet). Traditionell kann die Wiederherstellung Stücke sequenziell lesen und ein Stück mit einem Block von physischem Speicher verwenden, der mit einer logischen Blockadresse assoziiert ist, bis ein neues Stück mit einer höheren Sequenznummer identifiziert wird, das einen physischen Block aufweist, der mit der gleichen logischen Blockadresse assoziiert ist. Zu diesem Zeitpunkt kann die neue physische Blockadresse mit der logischen Blockadresse assoziiert werden. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann eine Sequenznummer oder einen anderen Indikator eines Speicherteils mit einer logischen Blockadresse assoziieren, sodass ein Wiederherstellungsprozess eine aktuelle Version eines Speicherteils identifizieren kann. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann zum Beispiel eine Sequenznummer eines Stücks mit einer logischen Blockadresse assoziieren. In manchen Ausführungsformen, wenn eine Wiederherstellungsanforderung empfangen wird, kann die Wiederherstellungsabbildungsmanagementkomponente 316 einen oder mehrere Speicherteile sequenziell lesen. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann zum Beispiel alle Stücke und ihre Speicherblöcke lesen. In manchen Ausführungsformen kann die Wiederherstellungsabbildungsmanagementkomponente 316 eine Datenstruktur (z. B. eine Wiederherstellungssequenzabbildung) generieren, um eine Sequenznummer eines Stücks mit einem physischen Block, der eine aktuelle Datenkopie beinhaltet, mit einer logischen Blockadresse zu assoziieren.
  • Beim Lesen eines Speicherblocks kann die Wiederherstellungsabbildungsmanagementkomponente 316 bestimmen, ob ein Block in einer Wiederherstellungssequenzabbildung existiert. Wenn ein Block nicht in einer Wiederherstellungssequenzabbildung existiert, kann die Wiederherstellungsabbildungsmanagementkomponente 316 einen Eintrag mit einer Sequenznummer des aktuellen Stücks hinzufügen, das den Block beinhaltet. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann auch die Sequenznummer zu einer logischen Blockadressenabbildung hinzufügen. Wenn ein Block in einer Wiederherstellungssequenzabbildung existiert, kann die Wiederherstellungsabbildungsmanagementkomponente 316 eine mit einem aktuell gelesenen Stück assoziierte Sequenz mit einer in der Wiederherstellungssequenzabbildung gespeicherten Sequenznummer vergleichen. Falls die in der Wiederherstellungssequenzabbildung gespeicherte Sequenznummer höher als die des aktuell gelesenen Stücks ist, kann der Block des aktuell gelesenen Stücks ignoriert werden. Falls die Sequenznummer des aktuell gelesenen Stücks höher als die in der Wiederherstellungssequenzabbildung gespeicherte Sequenznummer ist, können die Wiederherstellungssequenzabbildung und die logische Blockadressenabbildung aktualisiert werden, um die neue Sequenznummer und physische Blockadresse zu enthalten. In manchen Ausfürungsformen kann die Wiederherstellungsabbildungsmanagementkomponente 316 E/A überwachen und, falls ein Schreibvorgang eintritt, kann eine logische Blockadresse mit einer Sequenznummer eines aktuellen Stücks und der physischen Blockadresse des aktuell geschriebenen physischen Blocks assoziiert werden. Falls ein späteres Stück (z. B ein Stück mit höherer Sequenznummer) anzeigt, dass ein Block gelöscht wurde, kann der Block aus der logischen Blockadressenabbildung und der Wiederherstellungssequenzabbildung gelöscht werden.
  • Sobald ein oder mehrere Lesevorgänge abgeschlossen sind (z. B. alle verwendeten Blöcke von Flashspeicher, die wiederhergestellt werden), kann die Wiederherstellungsabbildungsmanagementkomponente 316 eine Wiederherstellung ermöglichen. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann ein Sperren bereitstellen, das auf Basis pro logischem Block, auf einem Bereich logischer Blöcke oder auf einer anderen Speichereinheit erfolgen kann. Die Generierung einer Wiederherstellungssequenzabbildung kann eine Sequenznummer eines Stücks anzeigen, das mit dem physischen Block mit den aktuellen Daten für einen logischen Block assoziiert ist, die Wiederherstellung erfordert möglicherweise nicht, dass alle Schreibvorgänge aus einem Journal gelesen werden und sequenziell angewandt werden. Stücke können parallel gelesen und ohne Beschränkung der Gleichzeitigkeit wiederhergestellt werden (d. h., wobei die gesamte Wiederherstellung sequenziell und in Reihe geschaltet ist und in einer Reihenfolge nach dem Journal fortschreitet). In den hier offenbarten Systemen und Verfahren können alle Stücke aus der Speichereinrichtung parallel gelesen werden und parallel verarbeitet werden, sobald ihre Lesevorgänge abgeschlossen wurden. Die Wiederherstellungsabbildungsmanagementkomponente 316 kann eine Wiederherstellungssequenzabbildung und/oder eine logische Blockadressenabbildung nach logischer Blockadresse partitionieren und kann Sperren auf einer logischen Blockadresse oder auf einem Bereich von logischen Blockadressen bereitstellen, was ermöglicht, dass verschiedene logische Blöcke oder verschiedene Bereiche logischer Blöcke gleichzeitig abgerufen werden. Ein Zugriff auf die Wiederherstellungssequenz- und logische Blockadressenabbildungen wird auf eine serialisierte Weise durchgeführt, da dies der Mechanismus ist, der eine Überschreibungserkennung steuert. Eine Partitionierung dieser Abbildungen nach logischer Blockadresse kann die Auswirkung dieser Serialisierung mindern. Da der Zugriff nur innerhalb einer bestimmten Blockadresse serialisiert werden muss, kann eine gemeinsame Nutzung einer Sperre durch einen Bereich von Blockadressen ermöglichen, dass die Wiederherstellung so parallel wie möglich ist, ohne eine Sperre pro Block zu erfordern.
  • Die Fehlerprotokollier- und Berichterstattungskomponente 318 kann Fehler abfangen und mit Blocküberwachung oder Stückidentifizierung assoziierte Fehler protokollieren. In manchen Ausführungsformen kann die Fehlerprotokollier- und Berichterstattungskomponente 318 Benachrichtigungen über Fehler bereitstellen.
  • 4 ist ein Ablaufdiagramm, das ein Verfahren zum Verbessern von Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung illustriert. Das Verfahren 400 ist jedoch nur beispielhaft. Das Verfahren 400 kann geändert werden, indem z. B. Phasen hinzugefügt, geändert, entfernt oder umgeordnet werden. In Phase 402 kann der Prozess beginnen.
  • In Phase 404 kann eine Anzahl von gültigen Blöcken in einem Stück identifiziert werden. Eine Anzahl, ein Prozentsatz oder ein anderer Indikator von gültigen Blöcken in einem Stück (d. h. Blöcke, die nicht überschrieben wurden) kann identifiziert werden. Blöcke in Stücken, die nicht überschrieben wurden, bevor ein Journal umbricht (d. h., ein sequenzielles Ende des Flashspeichers erreicht und an einem Beginn des Flashspeichers fortfährt), können gültige Daten beinhalten, die möglicherweise neu geschrieben werden müssen oder andernfalls verloren gehen können. Gültige Blöcke können nachverfolgt und die Anzahl dieser Blöcke in mit einem Stück assoziierten Metadaten (z. B. im Stück mit gültiger Blockzahl 210 von 2) gespeichert werden. Metadaten können mit einer logischen Blockadressenabbildung (LBA-Abbildung) assoziiert sein und können ein Maß der Gültigkeit oder Ungültigkeit der Daten anzeigen (z. B. eine Anzahl von gültigen Blöcken, eine Anzahl von ungültigen oder überschriebenen Blöcken, einen Prozentsatz von gültigen Blöcken, einen Prozentsatz von ungültigen Blöcken usw.). Die Metadaten, die Gültigkeitszahlen beinhalten, können als Teil einer logischen Blockadressenabbildung gespeichert werden, die logische Blockadressen auf physische Blockadressen abbildet (z. B. die logische auf physische Abbildung 212 von 2), oder sie können in einer separaten Datenstruktur (z. B. im Stück mit gültiger Blockzahl 210 von 2) gespeichert werden. Zahlen oder andere Indikatoren der Gültigkeit können nach Stück oder nach einer anderen Gruppierung gruppiert werden (z. B. einem Sektor auf einem Plattenlaufwerk, einer Spur auf einem Plattenlaufwerk usw.). In manchen Ausführungsformen können Schreibvorgänge in Speicherteile überwacht werden und eine Zahl kann aktualisiert werden, wenn eine Überschreibung eintritt oder wenn ein Block gelöscht wird (z. B. eine Anzahl von gültigen Blöcken in einem Stück wird reduziert, wenn Blöcke in diesem bestimmten Stück überschrieben werden).
  • In Phase 406 kann eine Schreibanforderung empfangen werden. In Phase 408 kann bestimmt werden, ob ein aktuelles Stück des Journals eine angemessene Stelle für die Schreibanforderung ist. Die Bestimmung kann auf einem oder mehreren Faktoren basieren.
  • Metadaten über Datengültigkeit können verwendet werden, um einen Speicherteil für einen Schreibvorgang zu identifizieren. Der identifizierte Speicherteil kann ausgewählt werden, um eine Anzahl von gültigen Teilen dieses Speichers zu reduzieren, die ein erneutes Schreiben erfordern. Dies kann Schreibverstärkungsprobleme, E/A-Verkehr, CPU- oder Controller-Nutzung und Abnutzung einer Speichereinrichtung reduzieren. Stücke, die eine große Menge von gültigen Daten beinhalten, können übersprungen werden, und ein Stück, das bereits Überschreibvorgänge oder Datenungültigmachung empfangen hat, kann stattdessen überschrieben werden. Während der Bewertung eines Stücks kann eine Zahl von gültigen Blöcken im Stück (z. B. von in Phase 304 generierten Metadaten) mit einem angegebenen Schwellenwert verglichen werden. Wenn eine Anzahl von gültigen Blöcken in einem identifizierten Stück unter einem angegebenen Schwellenwert liegt, kann das Stück als eine Zielstelle für ein Stück einer Schreibanforderung ausgewählt werden und das Verfahren kann mit Phase 412 fortfahren. Wenn jedoch bestimmt wird, dass eine Anzahl von gültigen Blöcken in einem identifizierten Stück einen Schwellenwert erreicht oder überschreitet, kann dieses Stück übersprungen werden und das Verfahren kann mit Phase 410 fortfahren.
  • In manchen Ausführungsformen können die Stücke oder anderen Speichereinheiten sequenziell bewertet werden. In einer oder mehreren Ausführungsformen können die Metadaten sortiert werden, was ermöglicht, dass ein Speicherteil (z. B. ein Stück, eine Spur, ein Sektor) mit einer niedrigsten Menge an gültigem Speicher identifiziert wird. Andere Faktoren beim Bestimmen, ob ein Speicherteil zu überschreiben ist (z. B. ein Alter von Daten, ein letzter Aktualisierungszeitpunkt, eine Gefragtheit oder Nutzungsfrequenz von Daten, eine sequenzielle Reihenfolge von Daten, mit einem Speicherteil assoziierte Fehler usw.).
  • In manchen Ausführungsformen können ein Schwellenwert oder andere bewertete Faktoren abhängig von einem oder mehreren Faktoren angepasst werden. Die Faktoren können zum Beispiel einen Grad von CPU-Nutzung, einen Grad von Netzwerknutzung und eine benutzerdefinierte Präferenz enthalten. In manchen Ausführungsformen kann ein Schwellenwert erfordern, dass weniger als fünfzig Prozent der Blöcke gültige Blöcke sind, damit die Stelle eines Stücks als eine Schreibstelle für das zweite Stück verwendet wird.
  • In Phase 410 kann ein anderes Stück auf eine mögliche Zielschreibstelle bewertet werden. In Phase 412 kann bzw. können einer oder mehrere gültige Blöcke des identifizierten Stücks gelesen und in ein neues Stück umgepackt werden, bevor der Speicher von der Schreibanforderung überschrieben wird. In Phase 414 können die umgepackten Daten als Teil eines neuen Stücks an eine zweite Stelle im Speicher geschrieben werden. In Phase 416 kann das Verfahren 400 enden.
  • 5 ist ein Ablaufdiagramm, das ein Verfahren zur Wiederherstellung unter Verwendung von verbessertem Speicher-Journaling nach einer Ausführungsform der vorliegenden Offenbarung illustriert.
  • Das Verfahren 500 ist jedoch nur beispielhaft. Das Verfahren 500 kann geändert werden, indem z. B. Phasen hinzugefügt, geändert, entfernt oder umgeordnet werden. In Phase 502 kann der Prozess beginnen.
  • In Phase 504 kann bzw. können eine oder mehrere Datenstrukturen zum Wiederherstellen eines Journals mit übersprungenen Stücken generiert werden (z. B. die Wiederherstellungsabbildung 214 von 2). Einige Datenformate können Sequenznummern beinhalten, die zur Wiederherstellung verwendet werden können. Wenn zum Beispiel ein Stück ausgeschrieben wird, kann es eine Sequenznummer beinhalten, die monoton ansteigt. Eine Sequenznummer kann nachverfolgt werden, die mit einem gültigen Datenteil assoziiert ist (z. B. einem physischen Block, der eine aktuellste Datenkopie beinhaltet). Eine Sequenznummer oder ein anderer Indikator eines Speicherteils kann mit einer logischen Blockadresse assoziiert sein, sodass ein Wiederherstellungsprozess eine aktuelle Version eines Speicherteils identifizieren kann. Eine Sequenznummer eines Stücks kann zum Beispiel mit einer logischen Blockadresse assoziiert werden. In manchen Ausführungsformen kann eine Datenstruktur (z. B. eine Wiederherstellungssequenzabbildung) generiert werden, um eine Sequenznummer eines Stücks mit einem physischen Block mit einer aktuellen Datenkopie mit einer logischen Blockadresse zu assoziieren.
  • In Phase 506 kann bzw. können in manchen Ausführungsformen ein oder mehrere Speicherteile (z. B. sequenziell) gelesen werden, wenn eine Wiederherstellungsanforderung empfangen wird. Alle Stücke und deren Speicherblöcke können zum Beispiel gelesen werden.
  • In Phase 508 kann bestimmt werden, ob ein Block in einer Wiederherstellungssequenzabbildung existiert. Wenn ein Block nicht in einer Wiederherstellungssequenzabbildung existiert, kann das Verfahren mit Phase 510 fortfahren. Wenn ein Block in einer Wiederherstellungssequenzabbildung existiert, kann das Verfahren mit Phase 512 fortfahren.
  • In Phase 510 kann das Verfahren einen Eintrag zu einer Wiederherstellungssequenzabbildung mit einer Sequenznummer des aktuellen Stücks hinzufügen, das den Block enthält. Die physische Blockadresse des aktuellen Blocks kann auch zu einer logischen Blockadressenabbildung (z. B. zur logischen auf physischen Abbildung 212 von 2) hinzugefügt werden.
  • In Phase 512 kann das Verfahren eine mit einem aktuell gelesenen Stück assoziierte Sequenz mit einer in der Wiederherstellungssequenzabbildung gespeicherten Sequenznummer vergleichen. Falls die in der Wiederherstellungssequenzabbildung gespeicherte Sequenznummer höher als die des aktuell gelesenen Stücks ist, kann der Block des aktuell gelesenen Stücks in Phase 514 ignoriert werden. Falls die Sequenznummer des aktuell gelesenen Stücks höher als die in der Wiederherstellungssequenzabbildung gespeicherte Sequenznummer ist, kann das Verfahren mit Phase 516 fortfahren.
  • In Phase 516 können die Wiederherstellungssequenzabbildung und die logische Blockadressenabbildung aktualisiert werden, damit sie die neue Sequenznummer und physische Blockadresse enthalten. Falls ein späteres Stück (z. B ein Stück mit höherer Sequenznummer) anzeigt, dass ein Block gelöscht wurde, kann der Block aus der logischen Blockadressenabbildung und der Wiederherstellungssequenzabbildung gelöscht werden.
  • In Phase 518, sobald ein oder mehrere Lesevorgänge abgeschlossen sind (z. B. alle verwendeten Blöcke von Flashspeicher, die wiederhergestellt werden), kann in manchen Ausführungsformen ein Sperren bereitgestellt werden. Das Sperren kann auf Basis pro logischem Block, auf einem Bereich logischer Blöcke oder auf einer anderen Speichereinheit erfolgen. Die Generierung einer Wiederherstellungssequenzabbildung kann eine Sequenznummer eines Stücks anzeigen, das mit dem physischen Block mit den aktuellen Daten für einen logischen Block assoziiert ist, die Wiederherstellung erfordert möglicherweise nicht, dass alle Schreibvorgänge aus einem Journal gelesen werden und sequenziell angewandt werden. Eine Wiederherstellungssequenzabbildung und/oder eine logische Blockadressenabbildung können nach logischer Blockadresse partitioniert sein und können Sperren auf einer logischen Blockadresse oder auf einem Bereich von logischen Blockadressen bereitstellen, was ermöglicht, dass verschiedene logische Blöcke oder verschiedene Bereiche logischer Blöcke gleichzeitig abgerufen werden.
  • In Phase 520 können Stücke gelesen (z. B. optional parallel, falls ein Sperren verwendet wird) und wiederhergestellt werden. In Phase 522 kann das Verfahren 500 enden.
  • Weitere Ausführungsformen sind im Umfang und Geist der Erfindung. Die oben beschriebene Funktionalität kann zum Beispiel unter Verwendung von Software, Hardware, Firmware, Festverdrahtung oder beliebigen Kombinationen dieser implementiert werden. Ein oder mehr in Übereinstimmung mit Anweisungen operierende Computerprozessoren können die mit einem Verbessern von Speicher-Journaling verbundenen Funktionen in Übereinstimmung mit der vorliegenden Offenbarung wie oben beschrieben implementieren. Falls dies der Fall ist, ist es im Umfang der vorliegenden Offenbarung, dass diese Anweisungen auf einem oder mehr nicht-transitorischen, prozessorlesbaren Speichermedien (z. B. einer Magnetplatte oder einem anderen Speichermedium) gespeichert werden können. Zusätzlich können sich Module, die Funktionen implementieren, physisch an verschiedenen Positionen befinden, auch verteilt sein, sodass Teile von Funktionen an verschiedenen physischen Stellen implementiert sind.
  • Die vorliegende Offenbarung ist im Umfang nicht durch die hier beschriebenen spezifischen Ausführungsformen zu beschränken. Tatsächlich werden Durchschnittsfachleuten aus der vorangehenden Beschreibung und den begleitenden Zeichnungen zusätzlich zu den hier beschriebenen verschiedene andere Ausführungsformen der und Änderungen an der vorliegenden Offenbarung klar werden. Deshalb sollen solche anderen Ausführungsformen und Änderungen in den Umfang der vorliegenden Offenbarung fallen. Obwohl die vorliegende Offenbarung hier im Kontext einer bestimmten Implementierung in einer bestimmten Umgebung für einen bestimmten Zweck beschrieben worden ist, werden Durchschnittsfachleute ferner erkennen, dass ihr Nutzen nicht auf diese beschränkt ist und dass die vorliegende Offenbarung vorteilhaft in beliebig vielen Umgebungen für beliebig viele Zwecke implementiert werden kann. Demgemäß sollten die unten aufgeführten Ansprüche angesichts der vollen Breite und des gesamten Geists der vorliegenden Offenbarung wie hier beschrieben ausgelegt werden.

Claims (20)

  1. Verfahren zum Verbessern von Speicher-Journaling, das Folgendes umfasst: Aufzeichnen, in ein Journal, einer Zahl von gültigen Blöcken in einem ersten Stück Speicher in einem Flashspeicher; Empfangen einer Anforderung, ein zweites Stück in den Flashspeicher zu schreiben; Bestimmen unter Verwendung eines Controllers, ob die Zahl von gültigen Blöcken im ersten Stück unter einem angegebenen Schwellenwert liegt; falls die Anzahl von gültigen Blöcken im ersten Stück unter dem angegebenen Schwellenwert liegt, Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher; Empfangen einer Wiederherstellungsanforderung; und Wiederherstellen eines oder mehrerer Teile des Flashspeichers unter Verwendung einer Wiederherstellungssequenzabbildung.
  2. Verfahren nach Anspruch 1, wobei die Zahl von gültigen Blöcken in Metadaten gepflegt wird, die mit einem oder mehreren Speicherstücken im Flashspeicher assoziiert sind.
  3. Verfahren nach Anspruch 2, wobei die Metadaten mit einer logischen Blockadressenabbildung assoziiert gespeichert werden.
  4. Verfahren nach Anspruch 1, wobei die Zahl aktualisiert wird, wenn ein Überschreiben eines oder mehrerer Blöcke im ersten Stück eintritt.
  5. Verfahren nach Anspruch 1, wobei das Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher ein Umpacken eines Teils von Daten des ersten Speicherstücks und ein Schreiben des Teils von Daten an eine zweite Speicherstelle in den Flashspeicher umfasst.
  6. Verfahren nach Anspruch 1, wobei ein Bestimmen unter Verwendung des Controllers, ob eine Zahl von gültigen Blöcken in einem dritten Speicherstück im Flashspeicher kleiner als der angegebene Schwellenwert ist, falls die Anzahl der gültigen Blöcke im ersten Stück den angegebenen Schwellenwert überschreitet.
  7. Verfahren nach Anspruch 1, wobei Speicherstücke von Flashspeicher in einer sequenziellen Reihenfolge bewertet werden, um zu bestimmen, ob ein bestimmtes Speicherstück von Flashspeicher eine Anzahl von gültigen Blöcken beinhaltet, die einen angegebenen Schwellenwert erreichen.
  8. Verfahren nach Anspruch 1, wobei mit einem oder mehreren Speicherstücken assoziierte Metadaten eine Zahl von gültigen Blöcken in jedem des einen oder der mehreren Speicherstücke beinhalten und sortiert werden, um einen Speicherblock zu identifizieren, der eine geringste Zahl von gültigen Blöcken aufweist.
  9. Verfahren nach Anspruch 1, wobei der Schwellenwert angegeben wird, um Schreibverstärkungsprobleme zu reduzieren.
  10. Verfahren nach Anspruch 1, wobei der Schwellenwert abhängig von mindestens einem von Folgenden angepasst wird: einem Grad von CPU-Nutzung, einem Grad von Netzwerknutzung und einer benutzerdefinierten Präferenz.
  11. Verfahren nach Anspruch 1, wobei der Schwellenwert erfordert, dass weniger als fünfzig Prozent der Blöcke gültige Blöcke sind, damit die Stelle eines Stücks als eine Schreibstelle für das zweite Stück verwendet wird.
  12. Verfahren nach Anspruch 1, das ferner ein Assoziieren einer logischen Blockadresse mit einer Flashspeicherblock-Sequenznummer umfasst.
  13. Verfahren nach Anspruch 12, wobei das Assoziieren der logischen Blockadresse mit der Flashspeicherblock-Sequenznummer ein Assoziieren der Flashspeicherblock-Sequenznummer mit der logischen Blockadresse in einer logischen Blockadressenabbildung umfasst.
  14. Verfahren nach Anspruch 13, wobei das Wiederherstellen eines oder mehrerer Teile des Flashspeichers Folgendes umfasst: Lesen eines Stücks des Flashspeichers vor der Wiederherstellung; Bestimmen, ob sich ein physischer Block des aus dem Flashspeicher gelesenen Stücks in einer Wiederherstellungssequenzabbildung befindet; falls sich der physische Block nicht in der Wiederherstellungssequenzabbildung befindet, Hinzufügen einer Adresse des physischen Blocks zur logischen Blockadressenabbildung, und Hinzufügen einer mit dem Stück assoziierten Sequenznummer zur Wiederherstellungssequenzabbildung.
  15. Verfahren nach Anspruch 13, wobei das Wiederherstellen eines oder mehrerer Teile des Flashspeichers Folgendes umfasst: Lesen eines Stücks des Flashspeichers vor der Wiederherstellung; Bestimmen, ob sich ein physischer Block des aus dem Flashspeicher gelesenen Stücks in einer Wiederherstellungssequenzabbildung befindet; falls sich der physische Block in der Wiederherstellungssequenzabbildung befindet, Vergleichen einer mit dem gelesenen Stück assoziierten Sequenznummer mit einer mit dem Stück in der Wiederherstellungssequenzabbildung assoziierten Sequenznummer; falls die mit dem gelesenen Stück assoziierte Sequenznummer höher als die mit dem Stück in der Wiederherstellungssequenzabbildung assoziierte Sequenznummer ist, Aktualisieren der logischen Blockadressenabbildung, damit sie eine physische Blockadresse des physischen Blocks enthält; und Aktualisieren der Wiederherstellungssequenzabbildung, damit sie die mit dem gelesenen Stück assoziierte Sequenznummer enthält.
  16. Verfahren nach Anspruch 15, das ferner Folgendes umfasst: Ignorieren des gelesenen Blocks, in dem die mit dem gelesenen Stück assoziierte Sequenznummer niedriger als die mit dem Stück in der Wiederherstellungssequenzabbildung assoziierte Sequenznummer ist.
  17. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Partitionieren der logischen Blockadressenabbildung nach logischer Blockadresse; Partitionieren einer Wiederherstellungssequenzabbildung nach logischer Blockadresse; und Bereitstellen einer Sperre zum Sperren eines Bereichs von Blockadressen, wobei die Sperre eine gleichzeitige Wiederherstellung von Flashspeicher ermöglicht.
  18. Computerprogrammprodukt, das aus einer Reihe von Anweisungen besteht, die auf einem Computer ausführbar sind, wobei das Computerprogrammprodukt einen Prozess zum Verbessern von Speicher-Journaling durchführt; wobei das Computerprogramm die folgenden Schritte implementiert: Aufzeichnen, in ein Journal, einer Zahl von gültigen Blöcken in einem ersten Stück Speicher in einem Flashspeicher; Empfangen einer Anforderung, ein zweites Stück in den Flashspeicher zu schreiben; Bestimmen unter Verwendung eines Controllers, ob die Zahl von gültigen Blöcken im ersten Stück kleiner als ein angegebener Schwellenwert ist; falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, ein Schreiben des zweiten Stücks an eine Stelle des ersten Speicherstücks in den Flashspeicher; Empfangen einer Wiederherstellungsanforderung; und Wiederherstellen eines oder mehrerer Teile des Flashspeichers unter Verwendung einer Wiederherstellungssequenzabbildung.
  19. System zum Verbessern von Speicher-Journaling, wobei das System Folgendes umfasst: eine Speichermedieneinrichtung; und einen PCIe-basierten, mit der Speichermedieneinrichtung assoziierten Einrichtungscontroller, wobei der PCIe-basierte Einrichtungscontroller konfiguriert ist: eine Zahl von gültigen Blöcken in einem ersten Stück Speicher in einem Flashspeicher in ein Journal aufzuzeichnen; eine Anforderung zu empfangen, ein zweites Stück in den Flashspeicher zu schreiben; zu bestimmen, ob die Zahl von gültigen Blöcken im ersten Stück unter einem angegebenen Schwellenwert liegt; falls die Anzahl von gültigen Blöcken im ersten Stück kleiner als der angegebene Schwellenwert ist, das zweite Stück an eine Stelle des ersten Speicherstücks in den Flashspeicher zu schreiben; eine Wiederherstellungsanforderung zu empfangen; und einen oder mehrere Teile des Flashspeichers unter Verwendung einer Wiederherstellungssequenzabbildung wiederherzustellen.
  20. System nach Anspruch 19, wobei der PCIe-basierte Einrichtungscontroller ferner konfiguriert ist zu, ob eine Zahl von gültigen Blöcken in einem dritten Speicherstück im Flashspeicher kleiner als der angegebene Schwellenwert ist, falls die Anzahl der gültigen Blöcke im ersten Stück den angegebenen Schwellenwert überschreitet.
DE102016010277.2A 2015-08-24 2016-08-24 Verfahren und systeme zum verbessern von speicher-journaling Withdrawn DE102016010277A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/833,844 2015-08-24
US14/833,844 US10108503B2 (en) 2015-08-24 2015-08-24 Methods and systems for updating a recovery sequence map

Publications (1)

Publication Number Publication Date
DE102016010277A1 true DE102016010277A1 (de) 2017-03-02

Family

ID=57045483

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016010277.2A Withdrawn DE102016010277A1 (de) 2015-08-24 2016-08-24 Verfahren und systeme zum verbessern von speicher-journaling

Country Status (6)

Country Link
US (1) US10108503B2 (de)
JP (1) JP2017079053A (de)
KR (1) KR101870521B1 (de)
CN (1) CN106484761B (de)
DE (1) DE102016010277A1 (de)
GB (1) GB2543392B (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10013306B2 (en) * 2015-03-18 2018-07-03 OSNEXUS Corporation Data recovery agent and search service for repairing bit rot
CN108108129B (zh) * 2017-12-19 2020-10-20 深圳忆联信息系统有限公司 一种动态量化固态硬盘数据可靠性的方法及固态硬盘
US10970216B2 (en) * 2017-12-27 2021-04-06 Intel Corporation Adaptive granularity write tracking
US10831596B2 (en) * 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US10776218B2 (en) * 2018-05-31 2020-09-15 EMC IP Holding Company LLC Availability-driven data recovery in cloud storage systems
KR102089291B1 (ko) 2018-06-19 2020-03-16 주식회사 티맥스데이터 데이터 익스텐트 이동 방법
US11093364B2 (en) * 2018-12-18 2021-08-17 Micron Technology, Inc. Management of event log information of a memory sub-system
KR20200088713A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
TWI774388B (zh) * 2019-02-23 2022-08-11 國立清華大學 資料同步方法
KR20210120240A (ko) * 2020-03-26 2021-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102435910B1 (ko) * 2022-03-15 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11940882B2 (en) * 2022-07-25 2024-03-26 Hewlett Packard Enterprise Development Lp Migration of journal groups in a storage system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JP4186602B2 (ja) 2002-12-04 2008-11-26 株式会社日立製作所 ジャーナルログを利用した更新データ書込方法
US7480760B2 (en) 2003-12-17 2009-01-20 Wegener Communications, Inc. Rotational use of memory to minimize write cycles
US7167880B2 (en) 2004-04-14 2007-01-23 Hitachi, Ltd. Method and apparatus for avoiding journal overflow on backup and recovery system using storage based journaling
JP2007199905A (ja) * 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
JP2007200182A (ja) * 2006-01-30 2007-08-09 Hitachi Ltd ストレージ装置、及びストレージシステム
JP2008033527A (ja) 2006-07-27 2008-02-14 Hitachi Ltd ストレージ装置、ディスク装置及びデータ復元方法
US7518932B2 (en) * 2006-12-22 2009-04-14 Intel Corporation Erase cycle counting in non-volatile memories
US20080281876A1 (en) * 2007-05-10 2008-11-13 Hitachi, Ltd. Methods and apparatus to recover data and configuration of storage system
US7979626B2 (en) 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
CN101770427A (zh) * 2009-01-07 2010-07-07 芯邦科技(深圳)有限公司 一种利用Flash存储空间的方法及装置
TWI460588B (zh) * 2009-07-17 2014-11-11 Toshiba Kk Memory management device and memory information processing device
JP5377175B2 (ja) * 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
WO2013070273A1 (en) 2011-04-01 2013-05-16 Nexsan Corporation Journaling raid system
CN103392207B (zh) * 2011-10-05 2017-08-04 希捷科技有限公司 非易失性存储的自身日志记录和层级一致性
US8631209B2 (en) 2012-01-26 2014-01-14 Upthere, Inc. Reusable content addressable stores as building blocks for creating large scale storage infrastructures
EP2783288A1 (de) * 2012-03-15 2014-10-01 Hitachi, Ltd. Speichersystem und datenverwaltungsverfahren
CN102981970B (zh) * 2012-11-23 2016-08-03 深圳市江波龙电子有限公司 闪存管理方法和系统
US9703794B2 (en) 2013-01-02 2017-07-11 International Business Machines Corporation Reducing fragmentation in compressed journal storage
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
US20140372710A1 (en) * 2013-06-18 2014-12-18 Samsung Electronics Co., Ltd. System and method for recovering from an unexpected shutdown in a write-back caching environment
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
US9336129B2 (en) * 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping
CN103914392B (zh) * 2014-04-03 2017-05-03 深圳市硅格半导体有限公司 闪存的空块回收方法及装置

Also Published As

Publication number Publication date
CN106484761B (zh) 2019-06-28
US20170060698A1 (en) 2017-03-02
GB201614434D0 (en) 2016-10-05
US10108503B2 (en) 2018-10-23
GB2543392A (en) 2017-04-19
KR20170023735A (ko) 2017-03-06
JP2017079053A (ja) 2017-04-27
CN106484761A (zh) 2017-03-08
KR101870521B1 (ko) 2018-07-19
GB2543392B (en) 2019-03-20

Similar Documents

Publication Publication Date Title
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE102016103359B4 (de) Singleton-cachespeicher-verwaltungsprotokoll für hierarchische virtualisierte speichersysteme
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE602004002216T2 (de) Verfahren, system und programm für eine inkrementelle virtuelle kopie
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102012201154B4 (de) Transaktionsspeicher
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE102016108733B4 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102013021679A1 (de) Rettung von Ereignisnachverfolgungsinformationen bei Stromausfall-Unterbrechungsszenarien
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102016010276A1 (de) Verfahren und systeme zur verbesserung von flash-speicher-leerung

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

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