DE102016001591A1 - System und Verfahren für Copy-On-Write auf einer SSD - Google Patents

System und Verfahren für Copy-On-Write auf einer SSD Download PDF

Info

Publication number
DE102016001591A1
DE102016001591A1 DE102016001591.8A DE102016001591A DE102016001591A1 DE 102016001591 A1 DE102016001591 A1 DE 102016001591A1 DE 102016001591 A DE102016001591 A DE 102016001591A DE 102016001591 A1 DE102016001591 A1 DE 102016001591A1
Authority
DE
Germany
Prior art keywords
entry
master
index
cloned
clone
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.)
Pending
Application number
DE102016001591.8A
Other languages
English (en)
Inventor
Dylan Mark Dewitt
Adam Michael Espeseth
Colin Christopher MCCAMBRIDGE
David George DREYER
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.)
Western Digital Technologies Inc
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 DE102016001591A1 publication Critical patent/DE102016001591A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • 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/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1016Performance improvement
    • 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/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • 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

Abstract

Techniken für verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD werden offenbart. In einigen Ausführungsformen können die Techniken als Verfahren zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD realisiert werden, einschließlich Bereitstellen einer Indirektionsdatenstruktur im Speicher einer Vorrichtung. Die Datenstruktur kann einen Master-Eintrag für geklonte Daten umfassen, wobei der Master-Eintrag eine Referenz zu einem oder mehreren Indizes aufweist, und einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag wenigstens eines der Folgenden aufweist: eine Referenz zu einem Master-Index, eine Referenz zu einem Next-Index und einen Wert, welcher ein Ende einer Datenstruktur anzeigt. Die Techniken können das Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen umfassen.

Description

  • Hintergrund
  • Die Non-Volatile Memory Express(NVMe)-Spezifikation ist eine Spezifikation für den Zugriff auf Solid-State-Vorrichtungen (SSDs, Solid-State Devices) und andere Zielvorrichtungen über einen Peripheral Component Interconnect Express(PCIe)-Bus. Die NVMe-SSD-PCIe-Host-Schnittstelle definiert ein Konzept von Namespaces, welche analog zu von SAS-RAID(Redundant Array of Independent Disks)-Adaptern unterstützten logischen Volumen sind. Copy-on-Write-Funktionalität in einer SSD kann unter Verwendung von Namespaces implementiert werden. Namespaces werden typischerweise als eine Abstraktion über dem globalen Logical Block Address(LBA)-Raum implementiert, verfolgt im Indirektionssystem einer SSD.
  • LBA-Metadaten zeigen nur eine Host-LBA an und umfassen keine Referenzzählung. Das Einschließen oder Anhängen einer Referenzzählung in den Metadaten würde zusätzliche Schreibungen verursachen, um die Daten mit neuen Metadaten umzuschreiben, was eine schlechte Lösung ist. Ohne solche Referenzzählungen in den LBA-Metadaten gibt es keinen Mechanismus zum Bestimmen, ob zusätzliche Klon-Kopien existieren (z. B. dass zusätzliche LBAs auf die gleichen Daten zeigen). Ein Verwalten mehrerer Klon-Kopien von Daten auf einer SSD steht somit besonderen Herausforderungen in Bezug auf die Speicherbereinigung gegenüber. Wenn ein Host beispielsweise die „Quellen”-LBA nach einer Kopieroperation modifiziert, können Speicherbereinigungsherausforderungen erzeugt werden. Die Quellenkopie kann effektiv die „Master”-Kopie sein, welche geschrieben wurde, bevor die Kopieroperation durchgeführt wurde, um die Daten zu einer oder mehreren zusätzlichen Host-LBAs zu duplizieren. Wenn diese Master-LBA modifiziert wird, kann ein Non-Copy-Aware-Speicherbereinigungsalgorithmus die physischen Daten bei der nächsten Gelegenheit freigeben, da kein Verfahren existiert, um Metadaten solcher Daten effizient zu modifizieren, um anzuzeigen, dass mehrere Host-LBAs auf diese Daten zeigen.
  • Kurzfassung der Offenbarung
  • Techniken für verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD werden offenbart. In einigen Ausführungsformen können die Techniken als Verfahren zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD realisiert werden, einschließlich Bereitstellen einer Indirektionsdatenstruktur im Speicher einer PCIe-Vorrichtung. Die Datenstruktur kann einen Master-Eintrag für eine Original- oder Quellenkopie der geklonten Daten umfassen, wobei der Master-Eintrag eine Referenz zu einem Master-Index und eine Referenz zu einem Next-Index aufweist, und einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag eine Referenz zum Master-Index und eine Referenz zu einem Next-Index aufweist. Die Techniken können das Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen umfassen.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die Host-Vorrichtung wenigstens eines der Folgenden umfassen: einen Unternehmensserver, einen Datenbankserver, eine Workstation und einen Computer.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur eine Mehrzahl von physischen Adressen umfassen.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste sein, wobei der Master-Eintrag für geklonte Daten eine Referenz zu einem Master-Index und eine Referenz zu einem Next-Index umfasst.
  • Gemäß anderen Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste sein, wobei der Klon-Eintrag für die geklonten Daten eine Referenz zum Master-Index und eine Referenz zu einem Next-Index umfasst.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur Teil einer single-ended-verknüpften Liste sein, wobei ein Eintrag in einem Index eine Anzeige bereitstellt, dass der Index ein Master-Index ist.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform können die Referenzen Einträge in einer flachen Indirektionstabelle zur Adressierung logischer Blöcke umfassen.
  • Gemäß anderen Aspekten dieser beispielhaften Ausführungsform können die Referenzen Einträge in einer Baumdatenstruktur zur Adressierung logischer Blöcke umfassen.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die verbesserte Copy-on-Write-Funktionalität eine verbesserte Namespace-Kopierfunktionalität umfassen.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform können die Techniken das Festlegen eines Indikators für einen oder mehrere gepackte logische Blöcke umfassen, um anzuzeigen, dass der eine oder die mehreren gepackten logischen Blöcke geklont sind.
  • Gemäß anderen Aspekten dieser beispielhaften Ausführungsform kann ein Master-Index des Master-Eintrags auf den Master-Eintrag zeigen.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann der Master-Index des geklonten Eintrags auf den Master-Eintrag zeigen.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform kann der Next-Index eines letzten geklonten Eintrags in einer Datenstruktur auf den Master-Eintrag zeigen.
  • Gemäß anderen Aspekten dieser beispielhaften Ausführungsform können die Techniken das Bestimmen umfassen, dass der Klon-Eintrag für die geklonten Daten ein einziger Klon-Eintrag ist, wobei die Bestimmung das Bestimmen, dass der Next-Index des geklonten Eintrags mit dem Master-Index des geklonten Eintrags übereinstimmt, Bestimmen, dass der Next-Index des Master-Eintrags auf den Klon-Eintrag zeigt, Entklonen des Klon-Eintrags der geklonten Daten durch Festlegen des Next-Index des Klon-Eintrags auf einen Indirektionseintrag, welcher einen gepackten logischen Block anzeigt, und Festlegen des Master-Indexeintrags auf einen Indirektionseintrag, welcher einen gepackten logischen Block anzeigt, und Entklonen des Master-Eintrags der geklonten Daten durch Festlegen des Next-Index des Master-Eintrags auf einen ersten Indirektionseintrag, welcher einen ersten gepackten logischen Block eines Original-Master-Eintrags anzeigt, und Festlegen des Master-Index des Master-Eintrags auf einen zweiten Indirektionseintrag, welcher einen zweiten gepackten logischen Block des Original-Master-Eintrags anzeigt, umfasst.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform können die Techniken das Bestimmen umfassen, dass der Klon-Eintrag für die geklonten Daten einer von einer Mehrzahl von Klon-Einträgen ist, wobei die Bestimmung das Bestimmen von wenigstens eines der Folgenden umfasst: dass der Next-Index des geklonten Eintrags nicht mit dem Master-Index des geklonten Eintrags übereinstimmt, und dass der Next-Index des Master-Eintrags nicht auf den Klon-Eintrag zeigt, und Entklonen des Klon-Eintrags der geklonten Daten durch Festlegen des Next-Index eines vorherigen Eintrags, um auf einen Eintrag zu zeigen, welcher vom Next-Index des Klon-Eintrags angezeigt wird.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform können die Techniken das Überprüfen eines Eintrags während eines Speicherbereinigungsprozesses, Bestimmen, dass der Eintrag einen geklonten Indikator enthält, und Bestimmen, dass der Eintrag im Speicherbereinigungsprozess ein gültiger Eintrag ist, welcher basierend auf der Bestimmung, dass der Eintrag den geklonten Indikator enthält, nicht gelöscht werden soll, umfassen.
  • In anderen Ausführungsformen können die Techniken als ein Computerprogrammprodukt bestehend aus einer Reihe von Anweisungen, welche auf einem Computer ausführbar sind, realisiert werden. Das Computerprogrammprodukt kann einen Prozess zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD durchführen. Das Computerprogramm kann die Schritte zum Bereitstellen einer Indirektionsdatenstruktur im Speicher einer Vorrichtung implementieren, umfassend einen Master-Eintrag für geklonte Daten, wobei der Master-Eintrag eine Referenz zu einem oder mehreren Indizes aufweist, einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag wenigstens eines der Folgenden aufweist: eine Referenz zu einem Master-Index, eine Referenz zu einem Next-Index und einen Wert, welcher ein Ende einer Datenstruktur anzeigt, und Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen.
  • In noch weiteren Ausführungsformen können die Techniken als System zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD realisiert werden. Das System kann eine erste Vorrichtung umfassen, wobei die erste Vorrichtung im Speicher gespeicherte Anweisungen umfasst. Die Anweisungen können eine Anweisung zum Bereitstellen im Speicher der ersten Vorrichtung einer Indirektionsdatenstruktur umfassen, umfassend einen Master-Eintrag für geklonte Daten, wobei der Master-Eintrag eine Referenz zu einem oder mehreren Indizes aufweist, einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag wenigstens eines der Folgenden aufweist: eine Referenz zu einem Master-Index, eine Referenz zu einem Next-Index und einen Wert, welcher ein Ende einer Datenstruktur anzeigt, und Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur eine Mehrzahl von physischen Adressen umfassen.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste sein, wobei der Master-Eintrag für geklonte Daten eine Referenz zu einem Master-Index und eine Referenz zu einem Next-Index umfasst.
  • Gemäß anderen Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste sein, wobei der Klon-Eintrag für die geklonten Daten eine Referenz zum Master-Index und eine Referenz zu einem Next-Index umfasst.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die Indirektionsdatenstruktur Teil einer single-ended-verknüpften Liste sein, wobei ein Eintrag in einem Index eine Anzeige bereitstellt, dass der Index ein Master-Index ist.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform können die Referenzen Einträge in einer flachen Indirektionstabelle zur Adressierung logischer Blöcke umfassen.
  • Gemäß anderen Aspekten dieser beispielhaften Ausführungsform kann die erste Vorrichtung eine Peripheral Component Interconnect Express(PCIe)-Vorrichtung umfassen.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform können die Techniken ferner eine Anweisung zum Festlegen eines Indikators für einen oder mehrere gepackte logische Blöcke umfassen, um anzuzeigen, dass der eine oder die mehreren gepackten logischen Blöcke geklont sind.
  • Gemäß weiteren Aspekten dieser beispielhaften Ausführungsform können der Master-Index des Master-Eintrags und der Master-Index des geklonten Eintrags auf den Master-Eintrag zeigen und der Next-Index eines letzten geklonten Eintrags in einer Datenstruktur zeigt auf den Master-Eintrag.
  • Gemäß zusätzlichen Aspekten dieser beispielhaften Ausführungsform kann die Zielvorrichtung (z. B. eine PCIe-Vorrichtung) wenigstens eines der Folgenden umfassen: eine Grafikverarbeitungseinheit, eine Audio-/Video-Capture-Karte, eine Festplatte, einen Host-Busadapter und eine Non-Volatile Memory Express(NVMe)-Steuerung. Gemäß einigen Ausführungsformen kann die Zielvorrichtung eine NVMe-kompatible Vorrichtung sein.
  • Die vorliegende Offenbarung wird nun detaillierter unter Bezugnahme auf beispielhafte Ausführungsformen davon beschrieben, wie in den beigefügten Zeichnungen gezeigt. Obgleich die vorliegende Offenbarung nachfolgend unter Bezugnahme auf beispielhafte Ausführungsformen beschrieben wird, sollte verstanden werden, dass die vorliegende Offenbarung nicht darauf beschränkt ist. Durchschnittsfachleute auf diesem Gebiet mit Zugang zu den Lehren hierin werden zusätzliche Implementierungen, Modifikationen und Ausführungsformen sowie andere Einsatzgebiete erkennen, welche innerhalb des Schutzbereichs der vorliegenden Offenbarung liegen, wie hierin beschrieben, und in Bezug auf welche die vorliegende Offenbarung von signifikanter Nützlichkeit sein kann.
  • Kurze Beschreibung der Zeichnungen
  • Um ein besseres Verständnis der vorliegenden Offenbarung zu erleichtern, wird nun auf die beigefügten Zeichnungen Bezug genommen, in denen gleiche Elemente mit gleichen Bezugszeichen gekennzeichnet sind. Diese Zeichnungen sollten nicht ausgelegt werden, dass sie die vorliegende Offenbarung beschränken, sondern sollen lediglich beispielhaft sein.
  • 1 zeigt ein beispielhaftes Blockschaltbild, welches eine Mehrzahl von PCIe-Vorrichtungen in Kommunikation mit einer Host-Vorrichtung darstellt, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 2 stellt eine Datenstruktur dar, welche ungeklonte gepackte logische Blöcke repräsentiert, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 3 stellt Tabellen dar, welche Master- und Klon-Indirektionsdatenstruktureinträge repräsentieren, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 4 stellt ein beispielhaftes Modul für verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD dar, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 5 stellt ein Flussdiagramm dar, welches eine verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD veranschaulicht, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 6A stellt eine Datenstruktur von Master-C-Chunk-Datenstruktureintragsformaten dar, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 6B stellt eine Datenstruktur von Klon-C-Chunk-Datenstruktureintragsformaten dar, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • Beschreibung
  • Die vorliegende Offenbarung betrifft verbesserte Copy-on-Write-Funktionalität. In einigen Ausführungsformen kann diese Copy-on-Write-Funktionalität Namespace-Kopien umfassen. Die NVMe-SSD-PCIe-Host-Schnittstelle definiert ein Konzept von Namespaces, welche analog zu von SAS-RAID(Redundant Array of Independent Disks)-Adaptern unterstützten logischen Volumen sind. Ein Namespace kann einer virtuellen Maschine (VM) dediziert sein. Innerhalb einer SSD können Namespaces logisch voneinander isoliert sein und können ohne Auswirkungen auf andere Namespaces sicher gelöscht und umfunktioniert werden.
  • Eine Namespace-Kennung kann in einem Medienzugriffsbefehl, welcher vom Host ausgegeben wird, zusammen mit der LBA innerhalb dieses Namespace eingeschlossen sein. Die SSD kann eine Datenstruktur (z. B. eine Lookup-Tabelle, einen Baum, eine Hash-Tabelle, eine Bitmap usw.) verwenden, um diese Kombination von Namespace und LBA in eine globale LBA zu übersetzen, welche intern in der SSD verwendet wird. Gemäß einigen Ausführungsformen können Referenzen zu einer LBA auf diese globale LBA verweisen.
  • Ausführungsformen der vorliegenden Offenbarung beschreiben ein System und Verfahren zum Implementieren einer effizienten „Namespace-Kopierfunktion”, welche Duplizieren der Daten auf der SSD vermeidet. Dies reduziert die Schreibverstärkung innerhalb des SSD, wodurch die Lebensdauer der SSD verlängert und gleichzeitig eine höhere Leistung bereitgestellt wird.
  • Namespace-Kopien sind eine Form von „Copy-on-Write”-Funktionalität. Auf der Kopierfunktion wird ein Zeiger erzeugt, welcher auf die einzelne Kopie auf dem Medium zeigt. Eine neue Kopie auf dem Medium wird bei einer Schreibung erzeugt und aktualisiert. Eine Namespace-Kopierfunktion erfordert eine effiziente Implementierung von „Copy-on-Write” auf einer SSD. Ausführungsformen der vorliegenden Offenbarung können auf Namespace-Kopien angewendet werden. Ausführungsformen der vorliegenden Offenbarung können auch auf andere „Copy-on-Write”-Implementierungen für eine SSD angewendet werden. Beispielsweise kann eine „Snapshot”-Kopie verwendet werden, um Point-in-Time-Bilder von einem Namespace zu erstellen und Implementierungen der vorliegenden Ausführungsform können verwendet werden, um Snapshot-Kopien zu verfolgen.
  • Ausführungsformen der vorliegenden Offenbarung stellen ein SSD-Indirektionssystem (z. B. flache LBA-Tabelle) oder ein Verfahren bereit, um mehrere Einträge einzuschließen, welche auf den gleichen physischen Speicherort zeigen. Eine solche Implementierung kann eine effiziente Speicherbereinigung ermöglichen, wenn mehrere Referenzen vorhanden sind. Eine Verfolgung mehrerer Referenzen oder Handhabung mehrerer Zeiger (z. B. auf NAND-Flash-Daten) kann eine Speicherbereinigung verbessern. Eine Speicherbereinigung kann unter Verwendung von Metadaten auf dem nicht-flüchtigen Speicher (z. B. NAND-Flash-Speicher, NOR-Flash-Speicher usw.) durchgeführt werden, welcher die Host-LBA für die Daten umfasst. Der Speicherbereinigungsalgorithmus kann bestimmen, welche Host-Sektoren nach wie vor gültig sind, indem diese LBAs in der Indirektionsdatenstruktur (z. B. einer Tabelle, einem Baum, einer Hash-Tabelle, einer Bitmap usw.) nachgeschlagen werden, um zu sehen, ob die Datenstruktur immer noch auf den physischen Speicherort zeigt. Falls nicht, gibt der Algorithmus den Block frei.
  • Eine oder mehrere der hierin beschriebenen Ausführungsformen stellen eine effiziente Darstellung eines duplizierten Indirektionseintrags unter Verwendung eines einzelnen Flags und eines alternativen Indirektionseintragsformats bereit, welches eine oder mehrere duplizierte Host-LBAs verfolgt. Eine oder mehrere Ausführungsformen können eine flache Indirektions-Lookup-Datenstruktur zum Verfolgen von mehreren logischen Blockadressen verwenden, welche auf eine gleiche physische Adresse zeigen. Andere Ausführungsformen können unter Verwendung einer Hash-Tabelle, eines Baums oder eines zusammensetzungsbasierten Systems zum Verfolgen von duplizierten LBAs implementiert werden.
  • Eine verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD und Techniken werden nachstehend detaillierter erörtert.
  • Wendet man sich nun den Zeichnungen zu, ist 1 ein beispielhaftes Blockschaltbild, welches eine PCIe-Vorrichtung in Kommunikation mit einer Host-Vorrichtung darstellt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Copy-on-Write-Funktionalitätsverbesserungen können in einer oder mehreren Rechentechnologien, wie beispielsweise einem Host-System 102, einer Host-CPU 104 und einem PCI-Express-Root-Complex 106, implementiert werden. Der PCI-Express-Schalter 108 kann eine Mehrzahl von Zielen (z. B. PCIe-Vorrichtungen wie beispielsweise NVMe-basierte Ziele), wie beispielsweise die Ziele 110, 116 und 122, mit dem Host-System 102 über den PCI-Express-Root-Complex 106 kommunikativ koppeln.
  • Das Ziel 110 kann die NVMe-Steuerung 112 und den nicht-flüchtigen Speicher 114 enthalten. Das Ziel 116 kann die NVMe-Steuerung 118 und den nicht-flüchtigen Speicher 120 enthalten. Das Ziel 122 kann die NVMe-Steuerung 124 und den nicht-flüchtigen Speicher 126 enthalten.
  • Ein Systemspeicher 128 kann speicherbasierte Ressourcen enthalten, welche dem Host-System 102 über eine Speicherschnittstelle (z. B. Double Data Rate Type Three Synchronous Dynamic Random Access Memory (DDR3 SDRAM)) zugänglich sind. Der Systemspeicher 128 kann eine beliebige geeignete Form annehmen, wie beispielsweise, aber nicht darauf beschränkt, ein Solid-State-Speicher (z. B. Flash-Speicher oder Solid-State-Vorrichtung (SSD, Solid-State Device)), optischer Speicher und magnetischer Speicher. Der Systemspeicher 128 kann ein flüchtiger oder nicht-flüchtiger Speicher sein. Der Systemspeicher 128 kann eine oder mehrere Datenstrukturen enthalten.
  • Gemäß einigen Ausführungsformen können andere Schnittstellenstandards als PCIe für einen oder mehrere Teile verwendet werden, einschließlich, aber nicht darauf beschränkt, 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 Host-System 102 kann eine beliebige geeignete Form annehmen, wie beispielsweise, aber nicht darauf beschränkt, ein Unternehmensserver, ein Datenbank-Host, eine Workstation, ein Personal Computer, ein Mobiltelefon, eine Spielvorrichtung, ein Personal Digital Assistant (PDA), eine E-Mail-/SMS-Vorrichtung, eine Digitalkamera, ein Digitalmedien(z. B. MP3)-Player, ein GPS-Navigationsgerät und ein TV-System.
  • Das Host-System 102 und die Zielvorrichtung können zusätzliche Komponenten umfassen, welche nicht in 1 gezeigt sind, um die Zeichnung zu vereinfachen. Auch sind in einigen Ausführungsformen nicht alle der gezeigten Komponenten vorhanden. Ferner können die verschiedenen Steuerungen, Blöcke und Schnittstellen in einer beliebigen geeigneten Art und Weise implementiert sein. Beispielsweise kann eine Steuerung die Form von einem oder mehreren von einem Mikroprozessor oder Prozessor und einem computerlesbaren Medium annehmen, welches computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der beispielsweise durch den (Mikro-)Prozessor, logische Gates, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit), eine programmierbare Logiksteuerung und einen eingebetteten Mikrocontroller ausführbar ist.
  • Bezug nehmend auf 2 ist eine Datenstruktur veranschaulicht, welche ungeklonte gepackte logische Blöcke repräsentiert, gemäß einer Ausführungsform der vorliegenden Offenbarung. Acht 4 Kilobyte gepackte logische Blockeinträge sind in dieser Ausführungsform veranschaulicht. Diese ungeklonten gepackten logischen Blöcke (PLBs, Packed Logical Blocks) können logische Blockadressen (LBAs, Logical Block Addresses) auf eine physische Adresse abbilden. Wie dargestellt können LBAs 0–7 auf den Physical Address Block 0, LBAs 7–15 auf den Physical Address Block 1, LBAs 16–23 auf den Physical Address Block 2, LBAs 24–31 auf den Physical Address Block 3, LBAs 32–39 auf den Physical Address Block 4, LBAs 40–47 auf den Physical Address Block 5, LBAs 48–55 auf den Physical Address Block 6 and LBAs 56–63 auf den Physical Address Block 7 abgebildet werden.
  • 3 stellt Tabellen dar, welche Master- und Klon-Indirektionsdatenstruktureinträge repräsentieren, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie unter Bezugnahme auf 3 beschrieben, können in einigen Ausführungsformen Copy-on-Write-Verbesserungen in einem flachen Indirektionssystem implementiert sein. Ein PLB kann ein „gepackter logischer Block” in einer Lookup-Datenstruktur (z. B. flache Indirektions-Lookup-Tabelle) sein. Ein Satz von 8 aufeinander folgenden 8-PLB-ausgerichteten PLBs, welche an einer Klon-Operation beteiligt sind, kann als „C-Chunk” bezeichnet werden. Ein C-Chunk, dessen Daten auf dem Medium mit den für diesen C-Chunk geeigneten PLBs getaggt sind (d. h. die Originalkopie), kann als „Master-C-Chunk” bezeichnet werden. Die Indirektionsdatenstruktureinträge für alle PLBs in einem C-Chunk können in Gruppen zusammengefasst sein, um einen einzelnen „C-Entry” auszubilden. Ein C-Entry, welcher einem C-Chunk entspricht, dessen Daten sich auf dem Medium befinden, kann als „Master-C-Entry” bezeichnet werden. C-Entries, welche LBA-Bereiche beschreiben, die Kopien des Master-LBA-Bereichs sind, können als „Klon-C-Entries” bezeichnet werden. Eine oder mehrere SSDs können einen PLB definieren, um 4 KB von Kundendaten plus Metadaten (z. B. 8 × 512B Sektoren) zu verfolgen. In nachstehend erörterten Ausführungsformen kann ein PLB lediglich ein Eintrag in einer Tabelle sein. Ein Indirektionsdatenstruktureintrag kann erweitert werden (z. B. um ein Bit), um ein Copy-on-Write zu ermöglichen. Ein zusätzliches Bit kann ein „Klonverfolgungs”-Bit sein, welches auf 1 gesetzt werden kann, um anzuzeigen, dass entweder andere PLBs vorhanden sind, für die dieser PLB als Master-Kopie fungiert, oder dass dies ein Klon ist, welcher einen anderen PLB als seine Master-Kopie hat. Die restlichen Bits des Indirektionsdatenstruktureintrags mit dem Klonverfolgungs-Bitsatz können eine NAND-Speicheradresse enthalten oder nicht (z. B. wie es ein Eintrag ohne den Bitsatz kann). Die alternative Datenstruktur für „Klonverfolgung = 1” wird mit einer gröberen Granularität als der typische PLB-Eintrag verfolgt und umfasst Felder, um eine verknüpfte Liste von geklonten Einträgen und einen Zeiger auf den Master-Eintrag zu erstellen. Platz für diese zusätzlichen Felder kann gewonnen werden, indem ein einzelner C-Entry verwendet wird, um einen größeren (z. B. 2×) Chunk von LBAs als einen entklonten Indirektionseintrag zu beschreiben. Dieser Kompromiss ist angemessen, da geklonte Daten dazu neigen, große Partitionen oder Dateisätze und nicht einzelne Host-LBAs zu involvieren.
  • Die physischen Adressen der einzelnen Host-LBAs sind verteilt, so dass ein zusätzliches Lookup für einige LBAs erforderlich ist. Dies kann Platz für das Einschließen der Master- und Klon-Zeiger in jedem Master- und Klon-Eintrag schaffen. Die Anzahl der DRAM-Zugriffe, um die physischen Adressen abzurufen, wird jedoch nicht signifikant erhöht. Wie in 3 veranschaulicht, kann der Master-C-Entry LBAs enthalten, welche auf alle physischen Adressen 8–15 abgebildet werden, enthält aber nur tatsächliche Mappings auf die physischen Adressen 8–11, 14 und 15 (das Mapping auf die physischen Adressen 12 und 13 kann vom Klon-C-Entry erhalten werden). Wie im Klon-C-Entry aus 3 veranschaulicht, können Mappings für LBAs, welche den physischen Adressen 8–13 entsprechen, bereitgestellt werden. Die beiden physischen Blöcke, welche nicht im Master-C-Entry abgebildet werden (physische Adressen 12 und 13), stellen Platz für einen Master-Index und einen Next-Index bereit. Die beiden physischen Blöcke, welche nicht im Klon-C-Entry abgebildet werden (physische Adressen 14 und 15), stellen Platz für einen Master-Index und einen Next-Index bereit. Ein Master-Index in einem Master-C-Entry zeigt immer auf sich selbst. Ein Master-Index in einem Klon-C-Entry zeigt immer auf den Master-C-Entry. Ein Next-Index des Master-C-Entry zeigt auf einen ersten Klon-C-Entry in einer Kette. Ein Next-Index eines Klon-C-Entry zeigt auf einen nächsten Klon-C-Entry, falls mehr als ein Klon-C-Entry vorhanden ist. Falls es nur einen Klon-C-Entry gibt oder dies der letzte Klon-C-Entry ist, kann der Next-Index zurück zum Master-C-Index zeigen (oder er kann auf einen speziellen Wert zeigen, welcher ein Ende der Liste anzeigt, wie beispielsweise ein Null-Zeiger). Dies kann ein Traversieren von einem Master-C-Entry und einem oder mehreren Klon-C-Entries ermöglichen.
  • In Ausführungsformen mit einer flachen Indirektionsdatenstruktur bezieht sich ein PLB (Physical Location Block) auf einen einzelnen Eintrag, welcher eine physische NAND-Speicheradresse in einer einzelnen Lookup-Tabelle enthält. Eine typische PLB-Granularität dediziert 4 KB (z. B. 8·512B Sektoren) zu einem einzelnen Datenstruktureintrag. Als Beispiel betrachte man eine Klon-Chunk-Größe von 8 PLBs – die durchschnittliche Anzahl von DRAM-Zugriffen, welche für rein zufällige einzelne Sektorzugriffe auf einen geklonten Bereich erforderlich sind, beträgt 1,25. Diese Anzahl kann bei einer größeren Klon-Chunk-Größe niedriger sein, mit einem Kompromiss von weniger granulären Klon-Grenzen und mehr NAND-Zugriffen, welche zum „Entklonen” eines Chunk von PLBs erforderlich sind.
  • Falls ein Host-Lese-PLB-Lookup auf einen geklonten Eintrag zeigt, benötigt die SSD 1) die physische Adresse und 2) die LBA, welche verwendet wurde, als die Daten geschrieben wurden. Die physische Adresse wird zwischen den Master- und Klon-Einträgen verteilt, wobei alle verfügbaren PLB-Einträge optional mit doppelten Daten ausgefüllt werden, um die Wahrscheinlichkeit zu reduzieren, dass die anvisierte LBA eine zweite DRAM-Lesung erfordert. Für Nr. 2 kann die Master-LBA basierend auf dem Master-Zeiger in jedem Klon-Eintrag berechnet werden – dies erfordert gemäß Design keinen zusätzlichen DRAM-Zugriff und dieser Master-Zeiger (zusammen mit dem nächsten Klon-Zeiger) kann vom Original-PLB-Lookup zwischengespeichert sein.
  • In einigen Ausführungsformen kann, um zusätzliche Informationen in eine bestehende Indirektionsdatenstruktur zu passen, das Klonen nur bei einer Granularität verfolgt werden, welche ein Vielfaches der PLB-Größe ist. In einigen Ausführungsformen kann die Granularität als Zweierpotenz-Vielfaches der PLB-Größe ausgewählt werden, um eine effiziente Berechnung des Index des C-Chunk, welcher einer gegebenen LBA entspricht, zu ermöglichen. Als Beispiel kann der Multiplikator 8 betragen, aber größere Klon-Granularitäten können verwendet werden. Das Klonen kann ein Klonen jeweils großer Bereiche von LBAs (wie beispielsweise einen gesamten Namespace) involvieren, so dass die Strafe für die Verwendung einer größeren Granularität minimal sein kann.
  • In einigen Ausführungsformen kann die Indirektionsdatenstruktur in sich eine zirkulär verknüpfte Liste von einem oder mehreren C-Chunks, welche auf die gleichen Daten verweisen, eingebettet haben. In anderen Ausführungsformen können andere Formen von verknüpften Listen (z. B. eine Single-Ended-Verknüpfungsliste) verwendet werden. Die physischen Adressen, welche die Daten des C-Chunk beschreiben, können unter Indirektionseinträgen für diese C-Chunk-Liste verteilt werden.
  • Ein C-Chunk, dessen Daten sich physisch auf dem Medium befinden, getaggt mit den für diesen C-Chunk geeigneten PLBs (d. h. die Originalkopie), kann als „Master-C-Chunk” bezeichnet werden. Andere C-Chunks, welche aktuell auf die gleichen Daten ohne Speichern einer Kopie auf dem Medium verweisen, können mit „Klon-C-Chunks” bezeichnet werden.
  • Die Indirektionsdatenstruktureinträge für alle PLBs in einem C-Chunk sind in Gruppen zusammengefasst, um einen einzelnen „C-Entry” auszubilden. Für einen Master-C-Chunk kann der C-Entry im Format sein, welches in 6A veranschaulicht ist. Wie veranschaulicht, kann ein Master-C-Chunk die physischen Adressen 0–3 (die ersten vier physischen Adressen in einem Bereich) enthalten, gefolgt von den physischen Adressen 6 und 7. Die fehlenden zwei physischen Adressen können in einem Klon-C-Entry abgebildet werden und die zwei zusätzlichen Slots können verwendet werden, um einen Master-Index und einen Next-Index bereitzustellen. Wie veranschaulicht, kann ein „Klonverfolgungs”-Indikator auf 1 gesetzt werden. Dies kann einem Speicherbereinigungsprozess anzeigen, dass der C-Entry ignoriert werden soll.
  • Für einen Klon-C-Chunk kann der C-Entry im Format sein, welches in 6B veranschaulicht ist. Wie veranschaulicht, können die physischen Adressen 0–5 abgebildet werden und die physischen Adressen 6 und 7 können fehlen. Die fehlenden zwei physischen Adressen können im Master-C-Entry abgebildet werden und die zwei zusätzlichen Slots können verwendet werden, um einen Master-Index und einen Next-Index bereitzustellen. Wie veranschaulicht, kann ein „Klonverfolgungs”-Indikator auf 1 gesetzt werden. Dies kann einem Speicherbereinigungsprozess anzeigen, dass der C-Entry ignoriert werden soll.
  • In einer oder mehreren Ausführungsformen kann NAND Addressi die NAND-Adresse für einen i-ten PLB des Master-C-Chunk sein (wobei i = 0 den ersten PLB repräsentiert). Ein Master-Index kann ein Indirektionsdatenstrukturindex des Master-C-Entry sein (geteilt durch 8, da er den Platz von 8 PLB-Einträgen verbraucht). Ein Next-Index kann ein Indirektionsdatenstrukturindex für den nächsten Klon-C-Entry sein, welcher auf die gleichen Daten zeigt (geteilt durch 8, da er den Platz von 8 PLB-Einträgen verbraucht). Falls es keine weiteren Klon-C-Entries mehr zum Repräsentieren gibt, kann dieser Next-Index zurück zum Master-C-Entry zeigen. In einigen Ausführungsformen kann dieser Next-Index auf einen Wert zeigen, welcher die Beendigung der Liste anzeigt (z. B. ein Null-Zeiger).
  • In einigen Ausführungsformen können ein oder mehrere Tests verwendet werden, um zu bestimmen, ob ein C-Chunk ein Master-Eintrag ist. Beispielsweise kann ein C-Chunk genau dann der Master sein, wenn der Master-Index seines C-Entry auf den C-Entry selbst zeigt.
  • Die Beziehung zwischen einem Master-C-Entry und einem Klon-C-Entry über Master-Indizes und Next-Indizes kann die effiziente Durchführung von einer oder mehreren der nachfolgenden Operationen ermöglichen.
  • Um einen Satz von 8 aufeinander folgenden 8-PLB-ausgerichteten PLBs zu klonen, können ein oder mehrere Verfahren verwendet werden. Beispielsweise kann das Klonen eines Satzes von PLBs in einer oder mehreren Ausführungsformen umfassen:
    • 1. Lesen der 8 NAND-Adressen für die PLBs der Originalkopie, auf die beim Erstellen der Master- und Klon-C-Entries verwiesen wird;
    • 2. Erstellen eines Master-C-Entry anstelle der Indirektionseinträge der 8 Original-PLBs; Der Next-Index kann auf den neuen Klon-C-Entry zeigen; und
    • 3. Erstellen eines Klon-C-Entry anstelle der Indirektionseinträge der 8 PLBs, welche jetzt als Klon wirken. Der Next-Index kann auf den neuen Master-C-Entry zeigen.
  • Um einen C-Chunk in einen neuen C-Chunk zu klonen, können ein oder mehrere Verfahren verwendet werden. Beispielsweise kann das Klonen eines C-Chunk in einen neuen C-Chunk in einer oder mehreren Ausführungsformen umfassen:
    • 1. Falls der Quellen-C-Chunk ein Master ist, Folgen des Next-Index eines Quellen-C-Entry, um einen Klon-C-Entry zu finden und ihn zum Speicherort des neuen C-Entry zu kopieren. Falls der Quellen-C-Chunk kein Master ist, Kopieren des Quellen-C-Entry zum Speicherort des neuen C-Entry;
    • 2. Aktualisieren des Next-Index des neuen C-Entry mit dem aktuellen Next-Index des Master-C-Entry;
    • 3. Aktualisieren des Next-Index des Master-C-Entry, um auf den neuen C-Entry zu zeigen.
  • Um ein Lese-Lookup bei einem PLB durchzuführen, dessen Indirektionseintrag ein Klonverfolgungs-Bit gesetzt hat, können ein oder mehrere Verfahren verwendet werden. Beispielsweise kann das Durchführen eines Lese-Lookups bei einem PLB mit einem Indirektions-Bitsatz in einer oder mehreren Ausführungsformen umfassen:
    • 1. Betrachten des C-Entry, welcher den Indirektionseintrag dieses PLB enthält. Bestimmen, ob dieser C-Entry ein Master-C-Entry ist oder nicht. Basierend auf der Bestimmung ferner Bestimmen, ob die NAND-Adresse für den gewünschten Master-PLB in diesem C-Entry gespeichert ist;
    • 2. Falls die NAND-Adresse in der ersten C-Entry-Lesung gespeichert ist, können diese NAND-Adresse und der Master-Index zurückgegeben werden. Der Master-Index kann verwendet werden, um zu bestimmen, mit welcher PLB-Nummer die Daten getaggt werden, ohne irgendwelche zusätzlichen Indirektions-Lookups durchzuführen;
    • 3. Falls die NAND-Adresse nicht in der ersten C-Entry-Lesung gespeichert ist und die erste C-Entry-Lesung ein Master-C-Entry ist, kann dem Next-Index gefolgt werden, um einen Klon-C-Entry zu finden, welcher die erforderliche NAND-Adresse enthält. Diese NAND-Adresse und der Master-Index können zurückgegeben werden;
    • 4. Falls die NAND-Adresse nicht in der C-Entry-Lesung gespeichert ist und es ein Klon-C-Entry ist, kann dem Master-Index gefolgt werden, um einen Master-C-Entry zu finden, welcher die erforderliche NAND-Adresse enthält. Diese NAND-Adresse und der Master-Index können zurückgegeben werden.
  • Zum „Entklonen” eines Klon-C-Chunk können eine oder mehrere Techniken verwendet werden. Beispielsweise können die Techniken in einigen Ausführungsformen umfassen:
    • 1. Bestimmen, ob nur ein Klon vorhanden ist. Falls beispielsweise der Next-Index des C-Entry des Ziels mit seinem Master-Index übereinstimmt und der Next-Index des Master-C-Entry auf den Ziel-C-Entry zeigt, dann gibt es nur einen Klon. Die C-Entries sowohl für den Master- als auch den Klon lesen und den Master-C-Entry mit „normalen” Indirektionseinträgen für diese PLBs überschreiben;
    • 2. Falls beispielsweise der Next-Index des C-Entry des Ziels nicht mit seinem Master-Index übereinstimmt oder der Next-Index des Master-C-Entry nicht auf den Ziel-C-Entry zeigt, dann gibt es andere Klons. Diesen C-Entry aus seiner zirkulären Liste entfernen;
    • 3. In jedem Fall Lesen der Daten für den Master-C-Chunk und Kopieren zum Klon-C-Chunk, Überschreiben der Klon-C-Entries mit normalen Indirektionseinträgen, welche die NAND-Adressen der neuen Kopie anzeigen.
  • Zum „Entklonen” eines Master-C-Chunk können eine oder mehrere Techniken verwendet werden. Beispielsweise können die Techniken in einigen Ausführungsformen umfassen:
    • 1. Lesen des Master-C-Entry und des ersten Klon-C-Entry; und
    • 2. Lesen der Daten von einem Speichermedium für den Master-C-Chunk und Kopieren zu den PLBs des ersten Klon-C-Chunk, indem sie zu einem neuen Speichermediumspeicherplatz geschrieben werden und die Host-LBA-Metadaten mit dem entsprechenden Klon-C-Chunk assoziiert werden;
    • 3. Falls dieser erste Klon der einzige Klon ist (d. h. sein Next-Index zeigt auf den Master zurück), dann Überschreiben des ersten Klon-C-Entry mit normalen Indirektionseinträgen, welche auf die NAND-Adressen für die gerade erstellte Kopie zeigen. Den Master-C-Entry mit normalen Indirektionseinträgen überschreiben, welche auf PLBs des Original-Master-C-Chunk zeigen;
    • 4. Falls der erste Klon nicht der einzige Klon war, den Master von der zirkulär verknüpften Liste entfernen. Den ersten Klon-C-Entry mit einem neuen Master-C-Entry für die gerade erstellte Kopie überschreiben. Andere Klon-C-Entries mit einem neuen Klon-C-Entry für die gerade erstellte Kopie überschreiben. Dies kann fördern, dass der erste Klon-C-Entry des alten Master-C-Entry der neue Master-C-Entry für sich selbst und die restlichen Klon-C-Entries wird.
  • Wenn eine Indirektionsaktualisierung für einen Ziel-PLB, welcher das Klonverfolgungs-Bit gesetzt hat, erforderlich ist, können die Techniken automatisch umfassen:
    • 1. Entklonen des C-Chunk der PLBs; und
    • 2. Normales Durchführen der Indirektionsaktualisierung.
  • Die Speicherbereinigung kann implementiert sein, so dass der Speicherbereinigungsalgorithmus die Daten für alle physischen Daten, deren PLB mit dem Klonverfolgungs-Bit im Indirektionssystem markiert ist, nie verwirft. Das heißt, der Speicherbereinigungsalgorithmus kann alle mit einem Klonverfolgungs-Bit markierten PLBs als „gültige” Daten betrachten, welche Verlagern statt Löschen erfordern.
  • In einer oder mehreren Ausführungsformen könnte ein kleiner zählender Bloom-Filter im SRAM gespeichert werden, um im System vorhandene C-Chunks zu verfolgen. Falls der Bloom-Filter bei einer Schreibung anzeigen kann, dass es keine Möglichkeit gibt, dass der PLB Teil eines C-Chunk ist, dann kann eine direkte Aktualisierung des Indirektionssystem sicher durchgeführt werden, ohne den aktuellen Datenstruktureintrag zuerst zu lesen. Da Klone in der Regel große sequentielle Bereiche sind, kann die für einen Bloom-Filter verwendete Hash-Funktion etwa wie folgt sein: f(C-Entry-Index) = C-Entry-Index/Filtergröße statt einer Zufallsfunktion.
  • 4 stellt ein beispielhaftes Modul für verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD dar, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 4 veranschaulicht, kann das Copy-on-Write-Modul 410 ein Indirektionserstellungsmodul 412, ein Indirektionsmanagementmodul 414 und ein Fehlerhandhabungsmodul 416 enthalten.
  • Das Indirektionserstellungsmodul 412 kann eine oder mehrere Datenstrukturen zum Verfolgen von Copy-on-Write-Kopien erstellen. Ein PLB kann einfach ein Eintrag in einer Tabelle sein. Ein Indirektionsdatenstruktureintrag kann erweitert werden (z. B. um ein Bit), um ein Copy-on-Write zu ermöglichen. Ein zusätzliches Bit kann ein „Klonverfolgungs”-Bit sein, welches auf 1 gesetzt werden kann, um anzuzeigen, dass entweder andere PLBs vorhanden sind, für die dieser PLB als Master-Kopie fungiert, oder dass dies ein Klon ist, welcher einen anderen PLB als seine Master-Kopie hat. Die restlichen Bits des Indirektionsdatenstruktureintrags mit dem Klonverfolgungs-Bitsatz können eine NAND-Adresse enthalten oder nicht (z. B. wie es ein Eintrag ohne den Bitsatz kann). Die alternative Datenstruktur für „Klonverfolgung = 1” umfasst Felder, um eine verknüpfte Liste von geklonten Einträgen und einen Zeiger auf den Master-Eintrag zu erstellen. Platz für diese zusätzlichen Felder wird gewonnen, indem ein einzelner Eintrag verwendet wird, um einen größeren (z. B. 2×) Chunk von LBAs als einen entklonten Indirektionseintrag zu beschreiben.
  • Das Indirektionsmanagementmodul 414 kann eine oder mehrere Operationen unter Verwendung einer Indirektionsdatenstruktur durchführen. Das Indirektionsmanagementmodul 414 kann das Klonen von Daten, Lesen von geklonten Daten und Entklonen von Daten ermöglichen und eine sichere und effiziente Speicherbereinigung unter Verwendung eines oder mehrerer der Verfahren, wie sie oben unter Bezugnahme auf 3 erörtert sind, ermöglichen.
  • Das Fehlerhandhabungsmodul 416 kann einen oder mehrere Fehler, welche mit dem Management von geklonten Daten assoziiert sind, einfangen, protokollieren, berichten und/oder handhaben.
  • 5 stellt ein Flussdiagramm dar, welches eine verbesserte Copy-on-Write-Funktionalität innerhalb einer SSD veranschaulicht, gemäß einer Ausführungsform der vorliegenden Offenbarung. Der Prozess 500 ist jedoch lediglich beispielhaft. Der Prozess 500 kann verändert werden, z. B. indem Stufen hinzugefügt, geändert, entfernt oder umgeordnet werden. Bei Stufe 502 kann der Prozess beginnen.
  • Bei Stufe 504 kann ein Master-C-Entry erstellt werden. Ein C-Chunk, dessen Daten sich physisch auf dem Medium befinden, getaggt mit den für diesen C-Chunk geeigneten PLBs (d. h. die Originalkopie), kann als „Master-C-Chunk” bezeichnet werden. Andere C-Chunks, welche aktuell auf die gleichen Daten ohne Speichern einer Kopie auf dem Medium verweisen, können mit „Klon-C-Chunks” bezeichnet werden.
  • Die Indirektionsdatenstruktureinträge für alle PLBs in einem C-Chunk sind in Gruppen zusammengefasst, um einen einzelnen „C-Entry” auszubilden. Für einen Master-C-Chunk kann der C-Entry im Format sein, welches in 6A veranschaulicht ist.
  • Bei Stufe 506 kann ein Klon-C-Entry erstellt werden. Für einen Klon-C-Chunk kann der C-Entry im Format sein, welches in 6B veranschaulicht ist.
  • In einer oder mehreren Ausführungsformen kann NAND Addressi die NAND-Adresse für einen i-ten PLB des Master-C-Chunk sein (wobei i = 0 den ersten PLB repräsentiert).
  • Bei Stufe 508 kann ein Block zugeordnet werden, um einen Master-Index anzuzeigen. Ein Master-Index kann ein Indirektionsdatenstrukturindex des Master-C-Entry sein (geteilt durch 8, da er den Platz von 8 PLB-Einträgen verbraucht). Master-Indizes sowohl eines Master-C-Entry als auch eines Klon-C-Entry können auf einen Master-C-Entry zeigen.
  • Bei Stufe 510 kann ein Block zugeordnet werden, um einen Next-Index anzuzeigen. Ein Next-Index kann ein Indirektionsdatenstrukturindex für den nächsten Klon-C-Entry sein, welcher auf die gleichen Daten zeigt (geteilt durch 8, da er den Platz von 8 PLB-Einträgen verbraucht). Falls es keine weiteren Klon-C-Entries mehr zum Repräsentieren gibt, kann dieser Next-Index zurück zum Master-C-Entry zeigen.
  • In einigen Ausführungsformen können ein oder mehrere Tests verwendet werden, um zu bestimmen, ob ein C-Chunk ein Master-Eintrag ist. Beispielsweise kann ein C-Chunk genau dann der Master sein, wenn der Master-Index seines C-Entry auf den C-Entry selbst zeigt.
  • Bei Stufe 512 kann das Verfahren 500 enden.
  • Andere Ausführungsformen liegen innerhalb des Schutzbereichs und Wesens der Erfindung. Beispielsweise kann die oben beschriebene Funktionalität unter Verwendung von Software, Hardware, Firmware, Festverdrahtung oder Kombinationen von beliebigen von diesen implementiert werden. Ein oder mehrere Computerprozessoren, welche gemäß Anweisungen operieren, können die Funktionen implementieren, die mit verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD gemäß der oben beschriebenen vorliegenden Offenbarung assoziiert sind. Falls dem so ist, liegt es innerhalb des Schutzbereichs der vorliegenden Offenbarung, dass solche Anweisungen auf einem oder mehreren nicht-transitorischen prozessorlesbaren Medien (z. B. eine Magnetplatte oder anderes Speichermedium) gespeichert sein können. Zusätzlich können Module, welche Funktionen implementieren, auch an verschiedenen Positionen physisch angeordnet sein, einschließlich so verteilt sein, dass Teile von Funktionen an verschiedenen physischen Orten implementiert werden.
  • Die vorliegende Offenbarung soll in ihrem Schutzbereich nicht durch die hierin beschriebenen speziellen Ausführungsformen beschränkt werden. Tatsächlich sind verschiedene andere Ausführungsformen und Modifikationen der vorliegenden Offenbarung zusätzlich zu denjenigen, die hierin beschrieben sind, für Durchschnittsfachleute auf dem Gebiet aus der vorhergehenden Beschreibung und den beigefügten Zeichnungen ersichtlich. Somit sollen derartige andere Ausführungsformen und Modifikationen in den Schutzbereich der vorliegenden Offenbarung fallen. Auch wenn die vorliegende Offenbarung hierin im Kontext einer bestimmten Implementierung in einer bestimmten Umgebung für einen bestimmten Zweck beschrieben worden ist, werden Durchschnittsfachleute auf dem Gebiet ferner erkennen, dass ihre Nützlichkeit nicht darauf beschränkt ist und dass die vorliegende Offenbarung in vorteilhafter Weise in jeder Anzahl von Umgebungen für jede Anzahl von Zwecken implementiert werden kann. Dementsprechend sollten die nachfolgend dargelegten Ansprüche in Anbetracht der vollen Breite und dem Wesen der vorliegenden Offenbarung interpretiert werden, wie hierin beschrieben.

Claims (25)

  1. Verfahren zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD, umfassend: Bereitstellen einer Indirektionsdatenstruktur im Speicher einer Vorrichtung, umfassend: einen Master-Eintrag für geklonte Daten, wobei der Master-Eintrag eine Referenz zu einem oder mehreren Indizes aufweist; einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag wenigstens eines der Folgenden aufweist: eine Referenz zu einem Master-Index, eine Referenz zu einem Next-Index und einen Wert, welcher ein Ende einer Datenstruktur anzeigt; und Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen.
  2. Verfahren nach Anspruch 1, wobei die Indirektionsdatenstruktur eine Mehrzahl von physischen Adressen umfasst.
  3. Verfahren nach Anspruch 1, wobei die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste ist, wobei der Master-Eintrag für geklonte Daten eine Referenz zu einem Master-Index und eine Referenz zu einem Next-Index umfasst.
  4. Verfahren nach Anspruch 1, wobei die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste ist, wobei der Klon-Eintrag für die geklonten Daten eine Referenz zum Master-Index und eine Referenz zu einem Next-Index umfasst.
  5. Verfahren nach Anspruch 1, wobei die Indirektionsdatenstruktur Teil einer single-ended-verknüpften Liste ist, wobei ein Eintrag in einem Index eine Anzeige bereitstellt, dass der Index ein Master-Index ist.
  6. Verfahren nach Anspruch 1, wobei die Referenzen Einträge in einer flachen Indirektionstabelle zur Adressierung logischer Blöcke umfassen.
  7. Verfahren nach Anspruch 1, wobei die Referenzen Einträge in einer Baumdatenstruktur zur Adressierung logischer Blöcke umfassen.
  8. Verfahren nach Anspruch 1, wobei die verbesserte Copy-on-Write-Funktionalität eine verbesserte Namespace-Kopierfunktionalität umfasst.
  9. Verfahren nach Anspruch 1, ferner umfassend Festlegen eines Indikators für einen oder mehrere gepackte logische Blöcke, um anzuzeigen, dass der eine oder die mehreren gepackten logischen Blöcke geklont sind.
  10. Verfahren nach Anspruch 1, wobei ein Master-Index des Master-Eintrags auf den Master-Eintrag zeigt.
  11. Verfahren nach Anspruch 3, wobei der Master-Index des geklonten Eintrags auf den Master-Eintrag zeigt.
  12. Verfahren nach Anspruch 4, wobei der Next-Index eines letzten geklonten Eintrags in einer Datenstruktur auf den Master-Eintrag zeigt.
  13. Verfahren nach Anspruch 4, ferner umfassend: Bestimmen, dass der Klon-Eintrag für die geklonten Daten ein einziger Klon-Eintrag ist, wobei die Bestimmung umfasst: Bestimmen, dass der Next-Index des geklonten Eintrags mit dem Master-Index des geklonten Eintrags übereinstimmt; Bestimmen, dass der Next-Index des Master-Eintrags auf den Klon-Eintrag zeigt; Entklonen des Klon-Eintrags der geklonten Daten durch Festlegen des Next-Index des Klon-Eintrags auf einen Indirektionseintrag, welcher einen gepackten logischen Block anzeigt, und Festlegen des Master-Indexeintrags auf einen Indirektionseintrag, welcher einen gepackten logischen Block anzeigt; und Entklonen des Master-Eintrags der geklonten Daten durch Festlegen des Next-Index des Master-Eintrags auf einen ersten Indirektionseintrag, welcher einen ersten gepackten logischen Block eines Original-Master-Eintrags anzeigt, und Festlegen des Master-Index des Master-Eintrags auf einen zweiten Indirektionseintrag, welcher einen zweiten gepackten logischen Block des Original-Master-Eintrags anzeigt.
  14. Verfahren nach Anspruch 4, ferner umfassend: Bestimmen, dass der Klon-Eintrag für die geklonten Daten einer von einer Mehrzahl von Klon-Einträgen ist, wobei die Bestimmung das Bestimmen von wenigstens eines der Folgenden umfasst: dass der Next-Index des geklonten Eintrags nicht mit dem Master-Index des geklonten Eintrags übereinstimmt; und dass der Next-Index des Master-Eintrags nicht auf den Klon-Eintrag zeigt; und Entklonen des Klon-Eintrags der geklonten Daten durch Festlegen des Next-Index eines vorherigen Eintrags, um auf einen Eintrag zu zeigen, welcher vom Next-Index des Klon-Eintrags angezeigt wird.
  15. Verfahren nach Anspruch 1, ferner umfassend: Überprüfen eines Eintrags während eines Speicherbereinigungsprozesses; Bestimmen, dass der Eintrag einen geklonten Indikator enthält; und Bestimmen, dass der Eintrag im Speicherbereinigungsprozess ein gültiger Eintrag ist, welcher basierend auf der Bestimmung, dass der Eintrag den geklonten Indikator enthält, nicht gelöscht werden soll.
  16. Computerprogrammprodukt bestehend aus einer Reihe von Anweisungen, welche auf einem Computer ausführbar sind, wobei das Computerprogrammprodukt einen Prozess zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD durchführt; wobei das Computerprogramm die folgenden Schritte implementiert: Bereitstellen einer Indirektionsdatenstruktur im Speicher einer Vorrichtung, umfassend: einen Master-Eintrag für geklonte Daten, wobei der Master-Eintrag eine Referenz zu einem oder mehreren Indizes aufweist; einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag wenigstens eines der Folgenden aufweist: eine Referenz zu einem Master-Index, eine Referenz zu einem Next-Index und einen Wert, welcher ein Ende einer Datenstruktur anzeigt; und Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen.
  17. System zum Bereitstellen von verbesserter Copy-on-Write-Funktionalität innerhalb einer SSD, das System umfassend: eine erste Vorrichtung; wobei die erste Vorrichtung im Speicher gespeicherte Anweisungen umfasst, die Anweisungen umfassend: eine Anweisung zum Bereitstellen einer Indirektionsdatenstruktur im Speicher der ersten Vorrichtung, umfassend: einen Master-Eintrag für geklonte Daten, wobei der Master-Eintrag eine Referenz zu einem oder mehreren Indizes aufweist; einen Klon-Eintrag für die geklonten Daten, wobei der geklonte Eintrag wenigstens eines der Folgenden aufweist: eine Referenz zu einem Master-Index, eine Referenz zu einem Next-Index und einen Wert, welcher ein Ende einer Datenstruktur anzeigt; und Traversieren unter Verwendung eines Computerprozessors von einer oder mehreren Kopien der geklonten Daten unter Verwendung einer oder mehrerer der Referenzen.
  18. System nach Anspruch 17, wobei die Indirektionsdatenstruktur eine Mehrzahl von physischen Adressen umfasst.
  19. System nach Anspruch 17, wobei die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste ist, wobei der Master-Eintrag für geklonte Daten eine Referenz zu einem Master-Index und eine Referenz zu einem Next-Index umfasst.
  20. System nach Anspruch 17, wobei die Indirektionsdatenstruktur Teil einer zirkulär verknüpften Liste ist, wobei der Klon-Eintrag für die geklonten Daten eine Referenz zum Master-Index und eine Referenz zu einem Next-Index umfasst.
  21. System nach Anspruch 17, wobei die Indirektionsdatenstruktur Teil einer single-ended-verknüpften Liste ist, wobei ein Eintrag in einem Index eine Anzeige bereitstellt, dass der Index ein Master-Index ist.
  22. System nach Anspruch 17, wobei die Referenzen Einträge in einer flachen Indirektionstabelle zur Adressierung logischer Blöcke umfassen.
  23. System nach Anspruch 17, wobei die erste Vorrichtung eine Peripheral Component Interconnect Express(PCIe)-Vorrichtung umfasst.
  24. System nach Anspruch 17, ferner umfassend eine Anweisung zum Festlegen eines Indikators für einen oder mehrere gepackte logische Blöcke, um anzuzeigen, dass der eine oder die mehreren gepackten logischen Blöcke geklont sind.
  25. System nach Anspruch 20, wobei der Master-Index des Master-Eintrags und der Master-Index des geklonten Eintrags auf den Master-Eintrag zeigen und der Next-Index eines letzten geklonten Eintrags in einer Datenstruktur auf den Master-Eintrag zeigt.
DE102016001591.8A 2015-02-25 2016-02-11 System und Verfahren für Copy-On-Write auf einer SSD Pending DE102016001591A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/630,863 US9880755B2 (en) 2015-02-25 2015-02-25 System and method for copy on write on an SSD
US14/630,863 2015-02-25

Publications (1)

Publication Number Publication Date
DE102016001591A1 true DE102016001591A1 (de) 2016-08-25

Family

ID=55590636

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016001591.8A Pending DE102016001591A1 (de) 2015-02-25 2016-02-11 System und Verfahren für Copy-On-Write auf einer SSD

Country Status (7)

Country Link
US (3) US9880755B2 (de)
JP (1) JP6218869B2 (de)
KR (1) KR101813786B1 (de)
CN (1) CN105912475A (de)
DE (1) DE102016001591A1 (de)
FR (1) FR3033061B1 (de)
GB (1) GB2537012B (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
US10606803B2 (en) * 2016-06-28 2020-03-31 Netapp, Inc. Data cloning in memory-based file systems
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
KR102631351B1 (ko) 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
JP6783645B2 (ja) 2016-12-21 2020-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US10268620B2 (en) * 2016-12-23 2019-04-23 Ati Technologies Ulc Apparatus for connecting non-volatile memory locally to a GPU through a local switch
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US11061585B1 (en) 2017-10-19 2021-07-13 EMC IP Holding Company, LLC Integration of NVMe device with DRAM cache system and method
US10521137B1 (en) * 2017-10-31 2019-12-31 EMC IP Holding Company LLC Storage device array integration of dual-port NVMe device with DRAM cache and hostside portion of software stack system and method
CN109902033B (zh) * 2019-02-13 2023-03-14 山东华芯半导体有限公司 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法
JP7395388B2 (ja) 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法
US11640371B2 (en) 2020-03-12 2023-05-02 Western Digital Technologies, Inc. Snapshot management in partitioned storage
CN112817533A (zh) * 2021-01-29 2021-05-18 深圳忆联信息系统有限公司 Ssd管理方法、装置计算机设备及存储介质
US20210223979A1 (en) * 2021-03-16 2021-07-22 Intel Corporation On-ssd-copy techniques using copy-on-write

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742450A (en) 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
US5574905A (en) * 1994-05-26 1996-11-12 International Business Machines Corporation Method and apparatus for multimedia editing and data recovery
US5815649A (en) * 1995-10-20 1998-09-29 Stratus Computer, Inc. Distributed fault tolerant digital data storage subsystem for fault tolerant computer system
US6219770B1 (en) 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
FI991336A (fi) * 1999-06-10 2000-12-11 Nokia Networks Oy Menetelmä levyvarmennetun tietokannan elvyttämiseksi
US6751583B1 (en) * 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6779095B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data using pointers to new and original data in a data location
US6976021B2 (en) * 2001-07-19 2005-12-13 Riverstone Networks, Inc. Method, system, and computer program product for managing a re-usable resource with linked list groups
US6748504B2 (en) * 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US7249352B2 (en) * 2002-08-22 2007-07-24 International Business Machines Corporation Apparatus and method for removing elements from a linked list
US7529897B1 (en) * 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US20070093124A1 (en) 2005-10-20 2007-04-26 Lsi Logic Corporation Methods and structure for SAS expander optimization of SAS wide ports
US7774316B2 (en) * 2005-11-30 2010-08-10 Oracle International Corp. Filesystem snapshot enhancement to improve system performance
US7499961B2 (en) * 2006-01-12 2009-03-03 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
US7673185B2 (en) 2006-06-08 2010-03-02 Dot Hill Systems Corporation Adaptive SAS PHY configuration
WO2008121873A1 (en) * 2007-03-29 2008-10-09 Vmware, Inc. Synchronization and customization of a clone computer
US8706976B2 (en) * 2007-08-30 2014-04-22 Commvault Systems, Inc. Parallel access virtual tape library and drives
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7912995B1 (en) 2007-12-20 2011-03-22 Emc Corporation Managing SAS topology
US8190835B1 (en) 2007-12-31 2012-05-29 Emc Corporation Global de-duplication in shared architectures
US7941692B2 (en) 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US7953778B2 (en) * 2008-05-20 2011-05-31 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
US20120311243A1 (en) * 2008-05-30 2012-12-06 Ite Tech. Inc. Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
JP5156518B2 (ja) * 2008-07-23 2013-03-06 株式会社日立製作所 記憶制御装置及び方法
JP5108667B2 (ja) * 2008-07-23 2012-12-26 株式会社日立製作所 リモートコピーシステム、及びリモートサイトの省電力化方法
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
BRPI1013794A8 (pt) 2009-06-26 2017-10-10 Simplivity Corp Método de adaptar um processo de indexação de acesso uniforme com uma memória de acesso não uniforme e sistema de computador
US20110161298A1 (en) 2009-12-29 2011-06-30 Grobman Steven L System and method for opportunistic re-imaging using cannibalistic storage techniques on sparse storage devices
US8447943B2 (en) 2010-02-24 2013-05-21 Hitachi, Ltd. Reduction of I/O latency for writable copy-on-write snapshot function
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8621143B2 (en) 2011-04-15 2013-12-31 Oracle International Corporation Elastic data techniques for managing cache storage using RAM and flash-based memory
US8868869B2 (en) * 2011-08-08 2014-10-21 International Business Machines Corporation Enhanced copy-on-write operation for solid state drives
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2013038442A1 (en) 2011-09-13 2013-03-21 Hitachi, Ltd. Storage system comprising flash memory, and storage control method
JP5776474B2 (ja) * 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
US8935499B2 (en) * 2011-10-17 2015-01-13 International Business Machines Corporation Interface for management of data movement in a thin provisioned storage system
US8566543B2 (en) * 2011-12-19 2013-10-22 Hitachi, Ltd. Computer system and reclamation control method
US9229853B2 (en) 2011-12-20 2016-01-05 Intel Corporation Method and system for data de-duplication
US9152570B2 (en) 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US8843666B2 (en) 2012-03-02 2014-09-23 Lsi Corporation Method for optimizing wide port power management in a SAS topology
US8850145B1 (en) * 2012-03-30 2014-09-30 Emc Corporation Managing consistency groups in storage systems
CN103544077B (zh) * 2012-07-17 2016-12-07 华为技术有限公司 数据处理方法及装置、共享存储设备
US8924751B2 (en) 2012-07-31 2014-12-30 Hewlett-Packard Development Company, L.P. SAS power management
US8959374B2 (en) 2012-07-31 2015-02-17 Hewlett-Packard Development Company, L.P. Power management for devices in a data storage fabric
US8862810B2 (en) 2012-09-27 2014-10-14 Arkologic Limited Solid state device write operation management system
US9063967B2 (en) * 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
JP6109967B2 (ja) 2013-02-21 2017-04-05 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データストレージシステムにおけるクローンオブジェクトのオブジェクトレベルでの複製
US20150006814A1 (en) 2013-06-28 2015-01-01 Western Digital Technologies, Inc. Dynamic raid controller power management
US9588882B2 (en) * 2013-12-02 2017-03-07 Intel Corporation Non-volatile memory sector rotation
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD

Also Published As

Publication number Publication date
US10540106B2 (en) 2020-01-21
GB2537012A (en) 2016-10-05
US20200150883A1 (en) 2020-05-14
FR3033061B1 (fr) 2021-03-05
US20160246521A1 (en) 2016-08-25
KR20160103945A (ko) 2016-09-02
JP2016157441A (ja) 2016-09-01
US9880755B2 (en) 2018-01-30
CN105912475A (zh) 2016-08-31
KR101813786B1 (ko) 2018-01-02
JP6218869B2 (ja) 2017-10-25
US20180150249A1 (en) 2018-05-31
FR3033061A1 (de) 2016-08-26
GB201601965D0 (en) 2016-03-16
GB2537012B (en) 2019-07-03
US11226747B2 (en) 2022-01-18

Similar Documents

Publication Publication Date Title
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
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
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102012216034A1 (de) Direkte speicheradressierung for solid-state-laufwerke
DE112013004400B4 (de) Herstellen einer Zeitpunktkopie-Beziehung zwischen logischen Quellenadressen und logischen Zieladressen
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102010053282A1 (de) Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102018105651A1 (de) Änderung von Speicherparametern

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE