DE112019005408T5 - Masterloses raid für byte-adressierbaren nichtflüchtigen speicher - Google Patents

Masterloses raid für byte-adressierbaren nichtflüchtigen speicher Download PDF

Info

Publication number
DE112019005408T5
DE112019005408T5 DE112019005408.2T DE112019005408T DE112019005408T5 DE 112019005408 T5 DE112019005408 T5 DE 112019005408T5 DE 112019005408 T DE112019005408 T DE 112019005408T DE 112019005408 T5 DE112019005408 T5 DE 112019005408T5
Authority
DE
Germany
Prior art keywords
data
media controller
memory address
media
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112019005408.2T
Other languages
English (en)
Other versions
DE112019005408B4 (de
Inventor
Gregg B. Lesartre
Russ W. Herrell
Chris Michael Brueggen
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE112019005408T5 publication Critical patent/DE112019005408T5/de
Application granted granted Critical
Publication of DE112019005408B4 publication Critical patent/DE112019005408B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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
    • G06F2212/1024Latency reduction
    • 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/7207Details relating to flash memory management management of metadata or control 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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein System enthält byteadressierbare nichtflüchtige Speichermodule (NVM). Das System enthält Mediencontroller, die über eine speichersemantische Fabric kommunikativ miteinander verbunden sind. Jeder Mediencontroller ist für ein entsprechendes NVM-Modul verantwortlich, an das der Mediencontroller angeschlossen ist. Die Mediencontroller bieten kooperativ RAID(redundantes Array unabhängiger Festplatten)-Funktionalität mit einer Granularität, bei der die NVM-Module ohne Verwendung eines Master-RAID-Controllers byteadressierbar sind.

Description

  • ERKLÄRUNG DER REGIERUNGSRECHTE
  • Diese Erfindung wurde erzeugt mit staatlicher Unterstützung unter der Vertragsnummer H98230-15-D-0022/0003, vergeben vom Maryland Procurement Office. Die Regierung hat bestimmte Rechte an dieser Erfindung.
  • STAND DER TECHNIK
  • Der Massenspeicher eines Computers hatte in der Vergangenheit andere Eigenschaften als sein Hauptspeicher. Massenspeicher schließt physische Geräte wie Festplattenlaufwerke ein, die relativ große Mengen an dauerhafter Kapazität bereitstellen, auf die mit relativ langsamem Durchsatz zugegriffen werden konnte. Im Vergleich dazu umfasst der Hauptspeicher physische Geräte wie den dynamischen Direktzugriffsspeicher (DRAM), der relativ geringe Mengen an nicht persistenter Kapazität bereitstellt, auf die mit relativ schnellem Durchsatz zugegriffen werden konnte. Das Design moderner Computersysteme wurde in hohem Maße von diesen unterschiedlichen Eigenschaften bestimmt.
  • Figurenliste
    • 1 ist ein Diagramm eines beispielhaften Massenspeicherklassenspeichersystems (storage-class memory - SCM) mit Mediencontrollern, die kooperativ masterlose RAID(Redundant Array of Independent Disks - redundantes Array unabhängiger Festplatten)-Funktionalität für an die Controller angeschlossene byteadressierbare nichtflüchtige Speichermodule (nonvolatile memory - NVM) bereitstellen.
    • 2 ist ein Diagramm eines beispielhaften Speicheradressraums, den die Mediencontroller aus 1 unter Verwendung der an die Controller angeschlossenen NVM-Module bereitstellen.
    • 3 ist ein Diagramm einer beispielhaften RAID-Gruppenzuordnungstabelle, die jeder Mediencontroller aus 1 verwaltet.
    • 4 ist ein Diagramm eines Beispiels davon, wie Speicheradressen den Mediencontroller aus 1 über RAID-Gruppen zugewiesen werden können.
    • 5A und 5B sind Flussdiagramme eines beispielhaften Verfahrens zum Durchführen einer Leseanforderung innerhalb des SCM-Systems von 1.
    • 6A, 6B und 6C sind Flussdiagramme eines beispielhaften Verfahrens zum Durchführen einer Schreibanforderung innerhalb des SCM-Systems von 1.
    • 7 ist ein Diagramm eines beispielhaften Mediencontrollers des SCM-Systems aus 1.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie am Rande erwähnt, unterschied sich historisch der Massenspeicher eines Computersystems stets vom Hauptspeicher eines Computersystems, was im modernen Computersystemdesign widergespiegelt wird. Beispielsweise wurden blockadressierbare Dateisysteme entwickelt, die es Computersystemen ermöglichen, Daten dauerhaft in Massenspeichern, wie etwa auf Festplattenlaufwerken zu speichern. Im Vergleich dazu wurden byteadressierbare Speichertopologien verwendet, um Computersystemen den schnellen Zugriff auf Daten im Hauptspeicher zu ermöglichen, wie etwa dynamischer Direktzugriffsspeicher (DRAM).
  • Die physischen Eigenschaften, die den Massenspeicher vom Hauptspeicher unterscheiden, sind jedoch verschwommen. Mit dem Aufkommen von Solid-State-Laufwerken (SSDs), die anstelle rotierender Magnetplatten nichtflüchtigen Halbleiterspeicher verwenden, wird die Massenspeicherung immer schneller. Jüngste Fortschritte im Busdesign, wie etwa der PCIe-Bus (Peripheral Component Interconnect Express), haben diese steigenden Geschwindigkeiten genutzt, wenngleich die Blockadressierbarkeit des zugrundeliegenden Speichers erhalten blieb.
  • Mit dem Aufkommen von PCM (phase-change memory) und ReRAM (resistiver RAM) ist der Hauptspeicher persistent geworden. Davon abgesehen ist der Hauptspeicher eines Computersystems jedoch unverändert geblieben. Ein On-Chip- oder Off-Chip-Speichercontroller akzeptiert Speicherzugriffsanforderungen von Verarbeitungskernen eines Prozessors eines Computersystems und greift als Reaktion darauf über einen dedizierten Speicherbus auf den Hauptspeicher oder den externen Speicher zu, unabhängig davon, ob es sich bei dem Speicher um DRAM, PCM, ReRAM oder um eine andere Art von Hauptspeicher handelt.
  • Ein neuerer Fortschritt, der dem Hauptspeicher von Computersystemen zugutekommt, ist Massenspeicherklassenspeicher (SCM). SCM nutzt die größeren Größen und die zunehmende Geschwindigkeit von NVM im Kontext des Hauptspeichers. Das heißt, im Gegensatz zu Speicher und ähnlichem Hauptspeicher kann SCM byteadressierbar sein. Während ein Speichercontroller traditionell Speicherzugriffsanforderungen monolithisch akzeptiert und diese Anforderungen in Bezug auf Speichermodule wie DRAM direkt verarbeitet, um Verarbeitungskerne anzufordern, wird die Controllerfunktionalität für SCM weiter disaggregiert, indem die zugrundeliegenden Medien, wie etwa NVM, abstrahiert werden.
  • Eine speichersemantische Fabric kann verwendet werden, um Prozessoren und Speicher miteinander zu verbinden, wodurch ein Prozessor auf SCM zugreifen kann, unabhängig davon, wo sich der Speicher in der Fabric befindet. Eine speichersemantische Fabric enthält ein zugrunde liegendes Hochgeschwindigkeits-Eingabe/Ausgabe-Netzwerk (E/A-Netzwerk), das Prozessoren mit dem physischen Medium verbinden kann, welches den Hauptspeicher implementiert, und zwar in möglicherweise erheblich größeren Entfernungen als sonst möglich. Anstelle eines Speichercontrollers, der auch Medienzugriffsfähigkeit besitzt, fordert der Speicherzugrif1 an, dass Speichercontrollerfelder von Verarbeitungskernen über die Fabric an Mediencontroller übertragen werden, die sich speziell auf ihre angeschlossenen physischen Medien beziehen. Das heißt, die medienspezifischen Aspekte der Controller werden vom Speichercontroller zum Mediencontroller verschoben. Ein beispielhafter Standard, der eine solche Verbindung auf einer speichersemantischen Fabric regelt, ist Gen-Z
  • Mit SCM kann ein Prozessor ebenso auf größere Speichermengen zugreifen, wie auf den lokal verbundenen Hauptspeicher. Das heißt, SCM bleibt weiterhin byteadressierbar und es wird nicht wie über ein Dateisystem oder auf eine andere Weise, die die Blockadressierbarkeit verwendet, zugegriffen. Physische Chip-, Board- und Bus-Einschränkungen, die sich weiter verschlechtern, können effektiv überwunden werden.
  • SCM kann jedoch Schwachstellen in Computersystemen verursachen, insbesondere wenn SCM anstelle des Speichers sowie zur Implementierung des Hauptspeichers verwendet wird. Auf Speicherzellenebene kann SCM Techniken, wie etwa ECC(Error Correction Code)-Methoden nutzen, die mit herkömmlicherem DRAM verwendet wurden, um eine Beschädigung der Daten zu verhindern. Auf breiteren Ebenen ist Redundanz für SCM jedoch nicht verfügbar: Redundanztechniken, wie etwa RAID (redundantes Array unabhängiger Festplatten), lassen sich nicht ohne weiteres auf byteadressierbaren Hauptspeicher wie SCM (oder DRAM) anwenden. Dies kann daran liegen, dass die Zeitdauer für die Verarbeitung einer RAID-Transaktion im Zusammenhang mit SCM-bezogenen Transaktionen zu lang sein kann.
  • Die hier beschriebenen Techniken bieten eine Möglichkeit, RAID auf SCM auszudehnen. Insbesondere gelten die Techniken für byteadressierbare NVM-Module, die als Hauptspeicher eines Computersystems dienen können. Die NVM-Module verfügen über entsprechende Mediencontroller, die jeweils an das entsprechende NVM-Modul angeschlossen und dafür verantwortlich sind. Die Mediencontroller der NVM-Module bieten kooperativ RAID-Funktionalität, jedoch mit einer Granularität, bei der die NVM-Module byteadressierbar sind. Darüber hinaus wird das RAID in einem Betriebssystem (OS) bereitgestellt, und zwar prozessorunabhängig; die übergeordneter Prozessoren und Betriebssysteme wissen möglicherweise sogar nicht, dass RAID auf der zugrunde liegenden Hauptspeicherebene implementiert wird. RAID kann auf eine Weise bereitgestellt werden, die Shared-Memory-Anwendungen unterstützt und Konsistenz gewährleistet, selbst wenn mehrere Prozessoren oder Computersysteme dieselben zugrunde liegenden NVM-Module adressieren.
  • 1 zeigt ein beispielhaftes Massenspeicherklassenspeichersystem (SCM) 100, in dem masterloses RAID implementiert ist. Das System 100 umfasst SCM-Mediencontroller 102A, 102B, 102C, ..., 102N, die zusammen als Mediencontroller 102 bezeichnet werden. Die Mediencontroller 102A, 102B, 102C, ..., 102N sind jeweils direkt physisch an byteadressierbare NVM-Module 104A, 104B, 104C, ..., 104N angeschlossen, die gemeinsam als NVM-Module 104 bezeichnet werden. In dem Beispiel von Fig. In 1 hat jeder Mediencontroller 102 ein NVM-Modul 104, das direkt physisch damit verbunden ist. Jeder Mediencontroller 102 ist für die NVM-Module 104 verantwortlich, an die der Mediencontroller 102 angeschlossen ist. Die Mediencontroller 102 können sich physisch auf ihren jeweiligen NVM-Modulen 104 befinden
  • Das System 100 umfasst Verarbeitungsknoten 106A, 106B, ..., 106M, die gemeinsam als Verarbeitungsknoten 106 bezeichnet werden. Es können weniger Verarbeitungsknoten 106 als Mediencontroller 102 vorliegen, wie im Beispiel von 1, oder es können weniger Mediencontroller 102 als Verarbeitungsknoten 106 vorliegen. Die Mediencontroller 102 und die Verarbeitungsknoten 106 sind über eine speichersemantische Fabric 108 kommunikativ miteinander verbunden. Jeder Mediencontroller 102 und jeder Verarbeitungsknoten 106 ist direkt mit der speichersemantischen Fabric 108 verbunden. Jeder Mediencontroller 102 ist für die NVM-Module 104 verantwortlich, die an den jeweiligen Mediencontroller 102 angeschlossen sind.
  • Als SCM-Mediencontroller 102 abstrahieren die Mediencontroller 102 die NVM-Module 104 von den Verarbeitungsknoten 106. Daher behandeln die Mediencontroller 102 und nicht die Verarbeitungsknoten 106 jeweils die Besonderheiter hinsichtlich der Kommunikation mit den NVM-Modulen 104, an die die Controller 104 angeschlossen sind. Die Verarbeitungsknoten 106 können dennoch die NVM-Module 104 als ihren (persistenten) Hauptspeicher im Gegensatz zu einem Massenspeicher verwenden und haben möglicherweise tatsächlich keinen anderen lokalen Hauptspeicher.
  • Die Verarbeitungsknoten 106 können jeweils eine Rechenvorrichtung sein und können einen oder mehrere Prozessoren enthalten, die jeweils mehrere Verarbeitungskerne aufweisen. Die Verarbeitungsknoten 106 können Speichercontroller enthalten, die in ihre Prozessoren integriert oder außerhalb der Prozessoren befindlich sein können. Die Verarbeitungskerne der Prozessoren der Verarbeitungsknoten 106 können jeweils mehrere Caches aufweisen, wie beispielsweise Caches der Ebene eins (L1) und der Ebene zwei (L2), und sich einen anderen Cache, wie beispielsweise einen Cache der Ebene drei (L3), mit den anderen Kernen des gleichen Prozessors teilen.
  • Die Fabric 108 ist eine speichersemantische Fabric, wie beispielsweise eine Gen-Z-Speicher-Fabric. Die speichersemantische Fabric 108 kann einen oder mehrere SCM-Switches und andere Komponenten enthalten, die die Mediencontroller 102 physisch mit den Verarbeitungsknoten 106 verbinden. Lade- und Speichervorgänge, die die Verarbeitungskerne der Prozessoren der Verarbeitungsknoten 106 ausgeben, führen dazu, dass die Speichercontroller der Knoten 106 entsprechend mit den Mediencontrollern 102 über die speichersemantische Fabric 108 kommunizieren, die die Vorgänge in Bezug auf ihren angeschlossenen NVM-Module 104 erfüllen.
  • Die Mediencontroller 102A, 102B, 102C, ..., 102N enthalten jeweils RAID-Gruppenzuordnungstabellen 110A, 110B, 110C, ..., 110N, die gemeinsam als RAID-Gruppenzuordnungstabellen 110 bezeichnet werden. Die Mediencontroller 102 verwenden die RAID-Gruppenzuordnungstabellen 110, um gemeinsam RAID-Funktionalität bereitzustellen. Die Mediencontroller 102 stellen diese RAID-Funktionalität mit der Granularität bereit, in der die NVM-Module 104 byteadressierbar sind, ohne einen Master-RAID-Controller zu verwenden. Beispielsweise kann diese Granularität eine Cache-Zeilen-Granularität sein, mit der die Verarbeitungsknoten 106 Daten zwischenspeichern, die dauerhaft in den NVM-Modulen 104 gespeichert sind, wie beispielsweise vierundsechzig Bytes. Die Granularität kann die Granularität einzelner Lade- und Speichervorgänge sein, die von den Verarbeitungsknoten 106 ausgegeben werden, wie beispielsweise acht Bytes.
  • 2 zeigt einen beispielhaften Speicheradressraum 200, den die Mediencontroller 102 unter Verwendung der NVM-Module 104 bereitstellen. Der Speicheradressraum 200 enthält einzelne Speicheradressen 202A, 202B, 202C, ..., 202N, die gemeinsam als Speicheradressen 202 bezeichnet werden. Jede Speicheradresse 202 ist einem Mediencontroller 102 zugewiesen, und jeder Mediencontroller 102 ist somit für die Speicheradressen 202 verantwortlich, die dem Controller 102 zugewiesen sind.
  • Zu den Speicheradressen 202 des Speicheradressraums 200 zählen Speicheradressen 204, auf die die Verarbeitungsknoten 106 zugreifen können, und Speicheradressen 206, auf die die Verarbeitungsknoten 106 nicht zugreifen können. Die Speicheradressen 204 sind zur Veranschaulichung in 2 als an die Speicheradressen 206 angrenzend dargestellt, aber dies kann auch verschachtelt oder auf andere Weise nicht an die Speicheradressen 206 angrenzend sein. Die Mediencontroller 102 verwenden die Speicheradressen 206, um Redundanz für die Speicheradressen 204, auf die die Verarbeitungsknoten 106 zugreifen können, bereitzustellen.
  • Die Speicheradressen 204 des Speicheradressraums 200, in dem die Verarbeitungsknoten 204 somit Daten speichern, auf die die Verarbeitungsknoten 106 über die speichersemantische Fabric 108 zugreifen können, einschließlich einzeln und/oder auf gepoolter Basis. (Das heißt, einige Speicheradressen 204 können ausschließlich einzelnen Verarbeitungsknoten 106 zugeordnet sein, während andere Speicheradressen 204 zur Verwendung durch mehr als einen Verarbeitungsknoten 106 gepoolt werden können.) In den Speicheradressen 206 des Speicheradressraums 200 wird Parität für diese Daten gespeichert. Die Mediencontroller 102 können RAID-Funktionalität auf eine Weise bereitstellen, die die Datenintegrität sicherstellt, unabhängig davon, ob eine solche Zuweisung auf individueller oder gepoolter Basis erfolgt.
  • Jede einem Mediencontroller 102 zugewiesene Speicheradresse 202 ist Teil einer RAID-Gruppe, die eine jedem anderen Mediencontroller 102 zugewiesene Speicheradresse 202 enthalten kann. In einer RAID-Implementierung können die Speicheradressen 202 einer RAID-Gruppe, die allen außer einem Mediencontroller 102 zugewiesen sind, Speicheradressen 204 sein, an denen Daten gespeichert sind, auf die die Verarbeitungsknoten 106 zugreifen können. In dieser Implementierung kann die Speicheradresse 202 der RAID-Gruppe, die dem verbleibenden Mediencontroller zugewiesen ist, eine Speicheradresse 206 sein, an der Parität für die anderen Speicheradressen 202 der Gruppe gespeichert ist. Allgemeiner sind an den Speicheradressen 202 einer RAID-Gruppe, die mehreren der Mediencontroller 102 zugewiesen ist, Daten gespeichert, auf die der Verarbeitungsknoten zugreifen kann, während an der Speicheradresse 202 der RAID-Gruppe, die einem anderen Mediencontroller 102 zugewiesen ist, Paritätsdaten für diese Daten gespeichert sind.
  • 3 zeigt ein Beispiel der RAID-Gruppenzuordnungstabelle 110, die jeder Mediencontroller 102 verwaltet. Ein Mediencontroller 102 speichert einen Tabelleneintrag 302 für jede Speicheradresse 202, die dem fraglichen Controller 102 zugewiesen ist. Der Tabelleneintrag 304 enthält ein Feld 304, das die Speicheradresse 202 identifiziert, die dem Eintrag 304 entspricht. Der Tabelleneintrag 304 enthält ein Feld 306, das angibt, ob an der Speicheradresse 202 Daten oder Parität gespeichert sind. Das heißt, für die Speicheradresse 202, der ein Tabelleneintrag 302 entspricht, identifiziert der Eintrag 304, ob die Speicheradresse 202 eine Speicheradresse 204 oder eine Speicheradresse 206 ist.
  • Jeder Tabelleneintrag 302 der RAID-Gruppenzuordnungstabelle 110, der von einem Mediencontroller 102 verwaltet wird, enthält ein Feld 308, das die anderen Mediencontroller 102 identifiziert, denen ebenfalls Speicheradressen 202 für dieselbe RAID-Gruppe zugewiesen wurden wie die Speicheradresse 202, der der Eintrag 302 entspricht. Für jeden solchen Mediencontroller 102 gibt das Feld 308 an, ob der Controller 102 Daten oder Parität speichert. Der Tabelleneintrag 302 enthält ein Feld 310, das den Status der RAID-Gruppe einschließlich der Speicheradresse 202 identifiziert, der der Eintrag 302 entspricht. Der Status der RAID-Gruppe kann normal oder verschlechtert sein.
  • 4 zeigt ein Beispiel, wie die Speicheradressen 202 den Mediencontrollern 102 über RAID-Gruppen 402A, 402B, 402C und 402D, die gemeinsam als RAID-Gruppen 402 bezeichnet werden, zugewiesen werden können. Für jede RAID-Gruppe speichert ein Mediencontroller 102 Parität, und die anderen Mediencontroller 102 speichern Daten. Zum Beispiel zeigt 4 zeigt explizit vier Speicheradressen 402A, 402B, 402C und 402D, die gemeinsam als Speicheradressen 402 innerhalb der RAID-Gruppe 402A bezeichnet werden und die den jeweiligen Mediencontrollern 102A, 102B, 102C und 102N zugewiesen sind. Die Controller 102A, 102B und 102C speichern Daten an den Speicheradressen 402A, 402B bzw. 402C, während der Controller 102N Parität für die Daten an den Adressen 402A, 402B und 402C speichert.
  • 5A und 5B zeigen ein Verfahren 500 der beispielhaften Ausführung einer Leseanforderung (d. h. eines Ladevorgangs) innerhalb des SCM-Systems 100. Das Beispiel der 5A und 5B ist in Bezug auf den Mediencontroller 102A beschrieben, der eine Leseanforderung für die an der Speicheradresse 404A gespeicherten Daten empfängt. Somit speichert der Mediencontroller 102B innerhalb der RAID-Gruppe 402C einschließlich der Speicheradresse 404A die Parität an der Speicheradresse 404B aus den Daten an der Speicheradresse 404A und an den Daten die die Mediencontroller 102C bzw. 102N an den Speicheradressen 404C bzw. 404D speichern.
  • Die Teile des Verfahrens 500 sind somit über drei Spalten organisiert. Der Mediencontroller 102A führt die Teile in der linken Spalte aus, und der Mediencontroller 102B führt die Teile in der mittleren Spalte aus. Jeder der Mediencontroller 102C und 102N führt die Teile in der rechten Spalte aus. Die Mediencontroller 102 können jeweils ihre entsprechenden Teile des Verfahrens 500 implementieren, indem sie Anweisungen ausführen, die auf einem nichtflüchtigen computerlesbaren Datenspeichermedium gespeichert sind.
  • Der Mediencontroller 102A empfängt einen Ladevorgang (d. h. eine Leseanforderung) für die Speicheradresse 404A von einem Verarbeitungsknoten 106 über die speichersemantische Fabric 108 (502). Der Mediencontroller 102A ruft die Daten an der Speicheradresse 404A von dem NVM-Modul 104A ab, das an den Controller 102A angeschlossen ist (504). Wenn der Mediencontroller 102A beim Abrufen der Daten keinen Medienfehler innerhalb des NVM-Moduls 104A feststellt (506), gibt der Controller 102A die erfolgreich abgerufenen Daten über die speichersemantische Fabric 108 an den anfordernden Verarbeitungsknoten 106 zurück (508). Wenn somit keine Lesefehler auftreten, kann der Mediencontroller 102A auf Leseanforderungen antworten, ohne einen anderen Mediencontroller 102 einzubeziehen.
  • Wenn jedoch der Mediencontroller 102A beim Abrufen der Daten von dem NVM-Modul 104A auf einen Medienfehler stößt, hat der Controller 102A die Daten nicht erfolgreich abgerufen (506). Daher fordert der Mediencontroller 102A über die speichersemantische Fabric 108 an, dass der Mediencontroller 102B die angeforderten Daten neu erstellt (d. h. rekonstruiert) und zurückgibt (510). Das heißt, der Mediencontroller 102A kann den fraglichen Ladevorgang an den Mediencontroller 102B senden und den Vorgang als einen Wiederherstellungsvorgang (d. h. einen Vorgang zum Wiederherstellen der fraglichen Daten aus der Parität) kennzeichnen. Der Mediencontroller 102A kann seine RAID-Gruppenzuordnungstabelle 110A untersuchen um den Mediencontroller 102B als den Controller 102 zu identifizieren, der Parität an der Speicheradresse 404B speichert, die aus den an der Speicheradresse 404A gespeicherten Daten berechnet wurde. Nach dem Anfordern der wiederhergestellten Daten von dem Controller 102B kann der Controller 102A weiterhin Anforderungen für andere Adressen verarbeiten, die in dem NVM-Modul 104A gespeichert sind, während auf die wiederhergestellten Daten für die Adresse 404A (512) gewartet wird.
  • Der Mediencontroller 102B sperrt nach Empfang der Anforderung von dem Controller 102A die Parität für die Adresse 404A (und somit auch für die Adressen 404C und 404D), die an der Adresse 404B innerhalb des NVM-Moduls 104B gespeichert ist (514). Der Mediencontroller 102B fordert auch an, dass die Mediencontroller 102C bzw. 102N die Daten an den Speicheradressen 404C und 404D aus denen auch die Parität berechnet wurde, über die speichersemantische Fabric 108 zurückgeben (516). Der Mediencontroller 102B kann seine RAID-Gruppenzuordnungstabelle 110B untersuchen, um die Mediencontroller 102C und 102N als die Controller 102 zu identifizieren, die auch Daten an den Speicheradressen 404C und 404D speichern, aus denen die Parität berechnet wurde. Nach dem Anfordern der Daten an den Speicheradressen 404C und 404D von den Controller 102C und 102N kann der Controller 102B weiterhin Paritätsanforderungen für andere Adressen verarbeiten (518).
  • Die Mediencontroller 102C und 102N sperren die Adressen 404C und 404D innerhalb der NVM-Module 104C und 104N (520), sodass keine neuen Daten in die Adressen 404C und 404D geschrieben werden können, bis die vorhandenen Daten an diesen Adressen abgerufen worden sind. Die Mediencontroller 102C und 102N warten ferner, bis alle ausstehenden Paritätsaktualisierungen für die Adressen 404C und 404D von dem Controller 102B abgeschlossen worden sind (522). Wie nachfolgend in der detaillierten Beschreibung beschrieben wird, benachrichtigt der Controller 102B den Controller 102A, der die Paritätsaktualisierung angefordert hat, wenn die Aktualisierung abgeschlossen ist, wenn der Mediencontroller 102B eine Paritätsaktualisierung für eine Adresse durchführt. Jeder der Mediencontroller 102C und 102N verzögert somit das Abrufen der Daten an der jeweiligen Speicheradresse 404C bzw. 404D, wenn Schreibanforderungen an die betreffende Adresse anstehen (d. h. was dazu führt, dass die Controller 102C und 102N Paritätsaktualisierungen an den Controller 102B senden), um die Datenkonsistenz aufrechtzuerhalten.
  • Sobald alle ausstehenden Paritätsaktualisierungen abgeschlossen sind, können die Mediencontroller 102C und 102N die Daten an den Speicheradressen 404C und 404D von den NVM-Modulen 104C und 104N abrufen (524). Die Mediencontroller 102C und 102N geben die abgerufenen Daten über die speichersemantische Fabric 108 an den Mediencontroller 102B zurück (550). Beim Empfangen der ausgelesenen Daten an den Speicheradressen durch die Mediencontroller 102C und 102N baut der Mediencontroller 102B die Daten an der Speicheradresse 404A neu auf und gibt die wiederhergestellten Daten über die speichersemantische Fabric 108 an die Mediencontroller 102A zurück (552). Der Mediencontroller 102B baut die Daten aus der Parität an der Speicheradresse 404B und aus den Daten an jeder der Speicheradressen 404B und 404C neu auf (d. h. rekonstruiert sie). Beispielsweise kann der Mediencontroller 102B eine Exklusiv-Oder(XOR)-Operation an der Parität und den von jedem der Mediencontroller 404B und 404C abgerufenen Daten ausführen, um die Daten an der Speicheradresse 404A neu aufzubauen.
  • Der Mediencontroller 102A gibt die empfangenen wiederhergestellten Daten über die speichersemantische Fabric 108 an den anfordernden Verarbeitungsknoten 106 zurück (558). Der Mediencontroller 102A schreibt ferner die wiederhergestellten Daten in die Speicheradresse 404A an dem NVM-Modul 104A, das an die Controller 102A angeschlossen ist, und versucht, die Adresse 404A erneut auszulesen (d. h. versucht erneut, die Daten von der Adresse 404A abzurufen) (560). Wenn der Mediencontroller 102A beim erneuten Lesen der Daten vom NVM-Modul 104A keinen Fehler feststellt (562), kann der Fehler, der ursprünglich in Teil 506 aufgetreten ist, als korrigierter Fehler betrachtet werden (564). Der Mediencontroller 102A kann melden, dass ein korrigierter Fehler an der Adresse 404A aufgetreten ist, beispielsweise an ein Verwaltungscomputergerät.
  • Wenn jedoch der Mediencontroller 102A beim erneuten Lesen der Daten vom NVM-Modul 104A auf einen Medienfehler stößt (562), kann davon ausgegangen werden, dass der Controller 102A die wiederhergestellten Daten nicht erfolgreich in die Speicheradresse 402A geschrieben hat. Der Fehler ist somit ein persistenter Fehler (566), der beim ersten Lesen sowie beim anschließenden erneuten Lesen aufgetreten ist. Der Mediencontroller kann in ähnlicher Weise melden, dass der persistente Fehler an der Adresse 404A aufgetreten ist, beispielsweise an ein Verwaltungscomputergerät.
  • 6A, 6B und 6C zeigen ein Verfahren 600 der beispielhaften Ausführung einer Schreibanforderung (d. h. eines Speichervorgangs) innerhalb des SCM-Systems 100. Das in Bezug auf den Mediencontroller 102A beschriebene Verfahren 600 empfängt eine Schreibanforderung zum Speichern neuer Daten an der Speicheradresse 404A. Somit speichert der Mediencontroller 102B innerhalb der RAID-Gruppe 402C einschließlich der Speicheradresse 404A die Parität an der Speicheradresse 404B aus den Daten an der Speicheradresse 404A und an den Daten die die Mediencontroller 102C bzw. 102N an den Speicheradressen 404C bzw. 404D speichern.
  • Die Teile des Verfahrens 600 sind somit über drei Spalten organisiert. Der Mediencontroller 102A führt die Teile in der linken Spalte aus, und der Mediencontroller 102B führt die Teile in der mittleren Spalte aus. Jeder der Mediencontroller 102C und 102N führt die Teile in der rechten Spalte aus. Die Mediencontroller 102 können jeweils ihre entsprechenden Teile des Verfahrens 600 implementieren, indem sie Anweisungen ausführen, die auf einem nichtflüchtigen computerlesbaren Datenspeichermedium gespeichert sind.
  • Der Mediencontroller 102A empfängt einen Speichervorgang (d. h. eine Schreibanforderung) zum Speichern neuer Daten an der Speicheradresse 404A von einem Verarbeitungsknoten 106 über die speichersemantische Fabric 108 (602). Der Controller 102A wartet, bis alle ausstehenden Paritätsaktualisierungen für die Adresse 404A von dem Controller 102B abgeschlossen wurden (604). Das heißt, wenn der Controller 102A vor relativ kurzer Zeit eine vorherige Schreibanforderung an der Adresse 404A ausgeführt hat, hat der Controller 102B möglicherweise noch nicht angegeben, dass er die Parität für die Adresse 404A aktualisiert hat. Daher wartet der Controller 102A auf die Verarbeitung der neuen Schreibanforderung, bis die Parität für die Adresse 404A gemäß der vorherigen Schreibanforderung aktualisiert worden ist.
  • Sobald alle ausstehenden Paritätsaktualisierungen abgeschlossen sind, sperrt der Mediencontroller 102A die Adresse 404A innerhalb des NVM-Moduls 104A und versucht, vorhandene Daten vom NVM-Modul 104A abzurufen (606). Das Sperren wird so durchgeführt, dass nachfolgende Schreibanforderungen für die Adresse 404A anstehen, bis die aktuell empfangene Schreibanforderung verarbeitet worden ist. Wenn der Mediencontroller 102A beim Abrufen der Daten (608) keinen Medienfehler innerhalb des NVM-Moduls 104A feststellt, der als Schreibfehler bezeichnet werden kann, sofern der Fehler während des Schreibvorgangs des Verfahrens 600 auftritt, dann schreibt der Controller 102A die in der Schreibanforderung empfangenen neuen Daten in die Speicheradresse 404A (610). Nach dem Schreiben der neuen Daten führt der Mediencontroller 102A eine XOR-Operation für die in Teil 606 abgerufenen vorhandenen Daten und die neuen Daten der Schreibanforderung, die in Teil 610 im NVM-Modul 104A gespeichert wurden, aus, und überträgt das XOR-Operationsergebnis, das als neues XOR bezeichnet werden kann, an den Mediencontroller 102B (612).
  • Der Mediencontroller 102B, der für die Wahrung der Parität für die RAID-Gruppe 402C verantwortlich ist, ruft die Parität an der Speicheradresse 404B als Reaktion darauf von dem NVM-Modul 102B ab, das an den Controller 102B angeschlossen ist (614). Wenn der Controller 102B beim Abrufen der vorhandenen Parität (616) keinen Fehler feststellt, erzeugt der Controller 102B eine neue Parität und speichert sie an der Speicheradresse 404B (618). Beispielsweise kann der Mediencontroller 102B eine XOR-Operation an dem von dem Mediencontroller 102A in Teil 614 übertragenen XOR-Operationsergebnis (d. h. dem neuen XOR) und an der in Teil 616 abgerufenen vorhandenen Parität (d. h. dem vorhandenen XOR) ausführen. Das Ergebnis dieser XOR-Operation, die von dem Mediencontroller 102B ausgeführt wird, ist die neue Parität.
  • Der Mediencontroller 102B sendet eine Bestätigung („ACK“), die angibt, dass der Paritätsaktualisierungsprozess erfolgreich war, an den Mediencontroller 102A (620). Nach dem Empfang dieser Bestätigung entsperrt der Controller 102A die Adresse 404A, sodass ausstehende und zukünftige Schreibanforderungen an die Adresse verarbeitet werden können (622). Der Controller 102A sendet eine Bestätigung an den Verarbeitungsknoten 106, von dem die Schreibanforderung empfangen wurde (624), die angibt, dass die Schreibanforderung erfolgreich abgeschlossen wurde. Das Verfahren 600 ist dann abgeschlossen. Es wird angemerkt, dass der Abschluss der Schreibanforderung, wenn kein Schreibfehler auftritt, nicht umfasst, dass der Mediencontroller 102A, die in der Schreibanforderung angegebenen neuen Daten an den Mediencontroller 102B sendet. Vielmehr kann der Controller 102A nur das XOR dieser neuen Daten und der vorhandenen Daten, die an der Speicheradresse 404A gespeichert sind, an den Controller 102B senden.
  • Wenn der Mediencontroller 102B aber die vorhandene Parität für die Adresse 404A in Teil 614 nicht vom NVM-Modul 104B abrufen konnte (616), sendet der Controller 102B stattdessen eine andere Bestätigung („NACK“), die angibt, dass der Paritätsaktualisierungsprozess nicht erfolgreich war an den Mediencontroller 102A (626). Der Controller 102A sendet nach Empfang dieser Bestätigung eine Bestätigung an den Verarbeitungsknoten 106, von dem die Schreibanforderung empfangen wurde (628), die angibt, dass die Schreibanforderung nicht erfolgreich abgeschlossen wurde. Der Controller 102B sperrt nach dem Senden der Bestätigung in Teil 626 die Parität für die Adresse 404A (und damit auch für die Adressen 404C und 404D), die an der Adresse 404B innerhalb des NVM-Moduls 104B gespeichert ist (630).
  • Der Mediencontroller 102B fordert auch die Mediencontroller 102A, 102C und 102N auf, die Daten an den Speicheradressen 404A, 404C und 404D zurückzugeben, aus denen die Parität berechnet wurde (632). Beim Empfang ihrer Anforderungen sperren die Mediencontroller 102C und 102N die Adressen 404C und 404D innerhalb der NVM-Module 104C und 104N (638), sodass keine neuen Daten in die Adressen 404C und 404D geschrieben werden können, bis die vorhandenen Daten abgerufen worden sind. Der Mediencontroller 102A muss zu diesem Zeitpunkt jedoch die Adresse 404A innerhalb des NVM-Moduls 104A nicht entsprechend sperren, da die Adresse 404A bereits in Teil 606 gesperrt war.
  • Die Mediencontroller 102C und 102N warten ferner, bis alle ausstehender Paritätsaktualisierungen für die Adressen 404C und 404D von dem Controller 102B abgeschlossen worden sind (642). Jeder der Mediencontroller 102C und 102N verzögert somit das Abrufen der Daten an der jeweiligen Speicheradresse 404C bzw. 404D, wenn Schreibanforderungen an die betreffende Adresse anstehen (d. h., was dazu führt, dass die Controller 102C und 102N Paritätsaktualisierungen an den Controller 102B senden), um die Datenkonsistenz aufrechtzuerhalten. Der Mediencontroller 102A muss nicht auf Paritätsaktualisierungen warten, bis die Adresse 404A abgeschlossen ist, da der Controller 102A diesbezüglich zuvor in Teil 604 gewartet hat.
  • Der Mediencontroller 102A ruft die vorhandenen Daten an der Speicheradresse 404A vom NVM-Modul 104A ab (644). Die Mediencontroller 102C und 102N rufen ebenfalls jeweils die Daten an den Speicheradressen 404C und 404D von den NVM-Modulen 104C und 104N ab, sobald alle ausstehenden Paritätsaktualisierungen abgeschlossen sind (648). Der Mediencontroller 102A sendet seine abgerufenen Daten an den Mediencontroller 102B (646), ebenso wie die Mediencontroller 102C und 102N (650). Der Controller 102B erzeugt und speichert eine neue Parität an der Speicheradresse 404B und versucht, die Adresse 404B erneut zu lesen (d. h., versucht erneut, die Parität von der Adresse 404B abzurufen) (652). Der Controller 102B kann eine XOR-Operation an den abgerufenen Daten ausführen, die von den Controllern 102A, 102C und 102N empfangen werden, deren Ergebnis die neue Parität ist.
  • Wenn der Mediencontroller 102B beim erneuten Lesen der Adresse 404B keinen Fehler feststellt (654), kann der zuvor aufgetretene vorherige Fehler in Teil 616 als korrigierter Fehler angesehen werden (656). Der Controller 102B kann melden, dass ein korrigierter Fehler an der Adresse 404B aufgetreten ist, beispielsweise an ein Verwaltungscomputergerät. Wenn jedoch der Controller 102B beim erneuten Lesen der Adresse 404B auf einen Medienfehler stößt (654), kann der resultierende Fehler als persistenter Fehler angesehen werden (658), da der Fehler sowohl beim vorherigen Lesen der Adresse 404B in Teil 614 als auch beim anschließenden Lesen dieser Adresse in Teil 652 auftrat. Der Mediencontroller kann in ähnlicher Weise melden, dass der persistente Fehler an der Adresse 404B aufgetreten ist, beispielsweise an ein Verwaltungscom putergerät.
  • Unabhängig davon, ob der Mediencontroller 102B in der Lage war, die Parität von der Speicheradresse 404B abzurufen, nachdem er diese Parität in Teil 652 neu erzeugt hat, weist der Controller 102B die Controller 102A, 102C und 102N an, ihre Sperren von den Speicheradressen 404A, 404C und 404N jeweils freizugeben (660). Der Controller 102A gibt somit seine Sperre von der Adresse 404A nach Empfang dieser Anweisung frei (662), und die Controller 102C und 102N lösen ebenfalls ihre Sperren von den Adressen 404C bzw. 404D (664). Der Controller 102B gibt in ähnlicher Weise die Sperre frei, die zuvor für die unter der Adresse 404B (666) gespeicherte Parität platziert wurde.
  • Es wird angemerkt, dass ein persistenter Fehler des Controllers 102B beim Lesen der Parität von der Adresse 404B nicht bedeutet, dass die unter den Adressen 404A, 404C und 404N gespeicherten Daten gegenwärtig nicht verfügbar sind Ein derart persistenter Fehler bedeutet vielmehr, dass die unter den Adressen 404A, 404C und 404N gespeicherten Daten keine Redundanz aufweisen. Sollte einer der Controller 102A, 102C und 102N anschließend nicht in der Lage sein, die Daten von diesen Adressen abzurufen, können die Daten nicht regeneriert werden, wie dies in Bezug auf das Verfahren 500 der 5A und 5B beschrieben wurde.
  • Wenn in Teil 606 der Mediencontroller 102A beim Versuch, die vorhandenen Daten vom NVM-Modul 104A abzurufen, auf einen Medienfehler gestoßen ist (608), sendet der Controller 102A die neuen Daten der Schreibanforderung an den Mediencontroller 102B und fordert an, dass der Controller 102B unter Verwendung der neuen Daten eine neue Parität für die Adresse 404A aufbaut (668). Der Mediencontroller 102B muss daher selbst das neue XOR erzeugen, das der Mediencontroller 102A erzeugt hat, als kein Fehler vorlag. Da das neue XOR aus vorhandenen Daten erzeugt wird, die in dem NVM-Modul 104A gespeichert sind, welche der Mediencontroller 102A nicht lesen konnte, muss der Mediencontroller 102B selbst die vorhandenen Daten neu erstellen.
  • Nachdem der Mediencontroller 102A die neuen Daten und die neue Paritätserstellungsanforderung an den Mediencontroller 102B gesendet hat, schreibt der Controller 102A die neuen Daten in das NVM-Modul 104A und versucht, die gerade geschriebenen Daten zu lesen (670). Da der Controller 102A beim vorherigen Versuch, die Adresse 404A zu lesen, auf einen Fehler gestoßen ist, kann der Controller 102A stattdessen die neuen Daten in eine Ersatzadresse für die Adresse 404A innerhalb desselben NVM-Moduls 104A schreiben. Wenn der Controller 102A während dieses Leseversuchs keinen Fehler feststellt (672), kann der in Teil 608 aufgetretene vorherige Fehler als korrigierter Fehler an der Adresse 404A betrachtet werden (674), der einem Verwaltungscomputergerät gemeldet werden kann. Wenn der Controller 102A während des Leseversuchs (672) auf einen Fehler stößt, kann der resultierende Fehler als persistenter Fehler angesehen werden (676), da der Fehler auch während des vorherigen Lesens in Teil 606 aufgetreten ist. Der persistente Fehler kann auch an ein Verwaltungscomputergerät gemeldet werden.
  • Beim Empfang der neuen Daten und der neuen Paritätserstellungsanforderung sperrt der Mediencontroller 102B die Parität für die Adresse 404A innerhalb des NVM-Moduls 104B (678) (d. h., sperrt die Adresse 404B, unter der die Parität für die Adresse 404A gespeichert ist). Der Controller 102B fordert den Mediencontroller 102C und 102N auf, die Daten an den Speicheradressen 404C und 404D zurückzugeben (680), und verarbeitet weiterhin Paritätsanforderungen, die für andere Adressen empfangen wurden (682). Die Mediencontroller 102C und 102N sperren wiederum jeweils die Adressen 404C und 404D (684), wenn sie die Anforderung für die unter diesen Adressen gespeicherten Daten empfangen.
  • Die Mediencontroller 102C und 102D warten jeweils, bis alle ausstehenden Paritätsaktualisierungen für die Adressen 404C und 404D abgeschlossen sind (686), bevor sie die Daten abrufen, die an ihren jeweiligen NVM-Modulen 104C und 104D an diesen Adressen gespeichert sind (688). Die Controller 102C und 102D senden ihre abgerufenen Daten an die Mediencontroller 102B (690). Der Controller 102B erzeugt und speichert eine neue Parität unter der Speicheradresse 404B des NVM-Moduls 104B (692). Um die neue Parität zu erzeugen, kann der Controller 102B eine XOR-Operation an den abgerufenen Daten, die von den Controllern 102C und 102N empfangen worden sind, und an den Daten der Schreibanforderung, die von dem Controller 102A empfangen wurden, ausführen.
  • Der Mediencontroller 102B sendet eine Bestätigung („ACK“) an den Mediencontroller 102A, die angibt, dass der neue Paritätsaufbau abgeschlossen ist (694). Beim Empfang der Bestätigung gibt der Controller 102A die Sperre der Adresse 404A frei (d. h., der Controller 102A entsperrt die Adresse 404A) und sendet eine Bestätigung an den Verarbeitungsknoten 106, von dem die Schreibanforderung empfangen wurde (698), die anzeigt, dass die Schreibanforderung abgeschlossen wurde. Der Controller 102B weist die Controller 102C und 102N an, ihre Sperren von den Speicheradressen 404C und 404N (603) freizugeben, was die Controller 102C und 102N beim Empfang dieser Anweisung tun (605). Der Controller 102B gibt ebenfalls seine Sperre für die Parität für die Adresse 404A (und für die Adressen 404C und 404N frei (607). Das heißt, der Controller 102B gibt die Sperre der Adresse 104B frei, die in Teil 678 platziert wurde.
  • Der Lesevorgang der 5A und 5B und der Schreibprozess von 6A, 6B und 6C, wie beschrieben, berücksichtigen das Szenario, in dem ein Mediencontroller 102 auf einen Fehler stößt, wenn ein Datenlesevorgang oder ein Datenschreibvorgang an einer Speicheradresse 404 durchgeführt wird, die dem NVM-Modul 104 zugeordnet ist, an das der Controller 102 direkt angeschlossen ist. Insbesondere beziehen sich die Prozesse auf den Mediencontroller 102A, der einen Datenlesevorgang oder einen Datenschreibvorgang an der Speicheradresse 404A durchführt, die dem NVM-Modul 104A zugeordnet ist, an das der Controller 102A direkt angeschlossen ist. Die Prozesse, durch die die anderen Mediencontroller 102 Datenlesevorgänge oder Datenschreibvorgänge an Speicheradressen 404 ausführen, die den NVM-Modulen 104 zugeordnet sind, an die die Controller 102 jeweils direkt angeschlossen sind, werden auf ähnliche Weise ausgeführt.
  • Das RAID, das in Bezug auf die 5A und 5B sowie 6A, 6B und 6C beschrieben wurde, kann den Ausfall eines NVM-Moduls 104 ohne Datenverlust aufnehmen. Wenn ein Mediencontroller 102 beim Lesen aus oder Schreiben in ein bestimmtes NVM-Modul 104 ständig auf Fehler stößt, muss das betreffende Modul 104 möglicherweise ersetzt werden. Wenn ein solches NVM-Modul 104 durch ein neues NVM-Modul 104 ersetzt wird, müssen alle Daten und Paritäten, die durch das ersetzte NVM-Modul 104 gespeichert werden, neu erstellt und auf dem neuen NVM-Modul 104 gespeichert werden.
  • Insbesondere wird für jede Speicheradresse 404, die dem neuen NVM-Modul 104 zugeordnet ist, in dem Daten gespeichert sind, der ab Teil 514 des Verfahrens 500 beschriebene Datenwiederherstellungsprozess ausgeführt. Der Mediencontroller 102, der die Parität für die RAID-Gruppe 402 verwaltet, von der die fragliche Speicheradresse 404 ein Teil ist, baut die Daten neu auf, und der Mediencontroller 102, an den das neue NVM-Modul 104 direkt angeschlossen ist, speichert die wiederhergestellten Daten in dem neuen NVM-Modul 104. Für jede Speicheradresse 404, die dem neuen NVM-Modul 104 zugeordnet ist, in dem Parität gespeichert ist, umfasst der Paritätswiederherstellungsprozess den Mediencontroller 102, der direkt an das neue NVM-Modul 104 angeschlossen ist, und fordert Daten an, aus denen die Parität von den anderen Controllern 102 erzeugt wird, die diese Daten in ihren eigenen direkt angeschlossenen NVM-Modulen 104 speichern. Sobald der direkt an das neue NVM-Modul 104 angeschlossene Mediencontroller 102 diese Daten empfängt, kann er die Parität auf dem neuen NVM-Modul 104 erzeugen und speichern.
  • 7 zeigt einen beispielhaften Mediencontroller 702, der jeden der beschriebenen Mediencontroller 102 implementieren kann. Als solches ist der Mediencontroller direkt an ein NVM-Modul 704 angeschlossen, das eines der beschriebenen NVM-Module 104 sein kann, und ist mit einer speichersemantischen Fabric 108 verbunden. Der Mediencontroller 702 kann vollständig in Hardware implementiert sein und ist von dem NVM-Modul 704, an das er direkt angeschlossen ist separat. Ein Beispiel für einen Mediencontroller in dieser Hinsicht ist ein SCM-Mediencontroller, der möglicherweise an mehrere solcher homogenen oder heterogenen NVM-Module 704 angeschlossen sein kann.
  • Der Mediencontroller 702 kann drei separate Hardwarekomponenten enthalten: einen NVM-Controller 706, eine Fabric-Brücke 708 und eine Verbindungsschichtvorrichtung 710. Der NVM-Controller 706 kann speziell für den Typ des NVM-Moduls 704 sein, an das der Controller 706 physisch angeschlossen ist. Der gleiche NVM-Controller 706 kann möglicherweise an mehrere NVM-Module 704 des gleichen Typs angeschlossen werden. In diesem Fall kann es für jeden Typ des NVM-Moduls 704 einen anderen NVM-Controller 706 geben. In einer anderen Implementierung kann ein NVM-Controller 706 möglicherweise nur physisch an ein NVM-Modul 704 angeschlossen werden. In diesem Fall bestimmt die Anzahl der vorhandenen NVM-Controller 706 die maximale Anzahl von NVM-Modulen 704, die physisch an den Mediencontroller 702 angeschlossen werden können.
  • Die Verbindungsschichtvorrichtung 710 ist die Hardwarekomponente, die eine Verbindung mit der speichersemantischen Fabric 108 herstellt, beispielsweise über einen dazwischenliegenden Gen-Z-Switch, damit der Mediencontroller 702 mit anderen Mediencontrollern kommunizieren kann. Die Fabric-Brücke 708 verbindet die NVM-Controller 706 und die Verbindungsschichtvorrichtung 710 und kann als Silizium-auf-Chip (SoC), als eine andere Hardwarekomponente oder als eine Kombination aus Hardware und Software implementiert werden. Die Fabric Brücke 708 führt die kooperative masterlose RAID-Funktionalität aus, die beschrieben wurde, da sie den Mediencontroller 702 betrifft. Beispielsweise kann die Fabric-Brücke 708 Teile der beschriebenen Verfahren 500 und 600 ausführen und eine entsprechende RAID-Gruppenzuordnungstabelle 110 entweder innerhalb des NVM-Moduls 704 oder innerhalb eines anderen Speichers verwalten, der sich innerhalb der Brücke 708 oder des Mediencontrollers 702 selbst befinden kann.
  • Die hier beschriebenen Techniken bieten somit eine Möglichkeit, RAID auf SCM auszudehnen. Das RAID ist masterlos, da kein Master-RAID-Controller beteiligt sein muss. Vielmehr können die Mediencontroller, die ansonsten möglicherweise bereits in einer SCM-Architektur vorhanden sind, erweitert werden, um das beschriebene kooperative distributive RAID zu erreichen. Das RAID sorgt für Konsistenz, selbst wenn mehrere Prozessoren oder Systeme dieselben zugrunde liegenden NVM-Module adressieren; Schreibvorgänge werden ordnungsgemäß sequenziert, wenn gerade Datenwiederherstellungsvorgänge ausgeführt werden. Das weiter beschriebene RAID ist betriebssystem- und prozessorunabhängig; Betriebssysteme und Prozessoren, die dem Speicher Adressen zuordnen, auf die der Mediencontroller den Zugriff regelt, müssen nicht wissen, dass RAID implementiert wird.

Claims (20)

  1. System, umfassend: mehrere byteadressierbare nichtflüchtige Speichermodule (NVM); und mehrere Mediencontroller, die über eine speichersemantische Fabric kommunikativ miteinander verbunden sind, wobei jeder Mediencontroller für ein entsprechendes NVM-Modul verantwortlich ist, an das der Mediencontroller angeschlossen ist, wobei die Mediencontroller kooperativ RAID(redundantes Array unabhängiger Festplatten)-Funktionalität mit einer Granularität bieten, bei der die NVM-Module ohne Verwendung eines Master-RAID-Controllers byteadressierbar sind.
  2. System nach Anspruch1, wobei die Granularität, mit der die Mediencontroller die RAID-Funktionalität bereitstellen, eine Cachezeilengranularität ist, mit der die Verarbeitungsknoten Daten zwischenspeichern, die persistent in den NVM-Modulen gespeichert sind.
  3. System nach Anspruch1, wobei die Granularität, mit der Mediencontroller die RAID-Funktionalität bereitstellen, eine Granularität individueller Lade- und Speichervorgänge ist, die von Verarbeitungsknoten ausgegeben werden, welche kommunikativ mit der speichersemantischen Fabric verbunden sind.
  4. System nach Anspruch1, wobei die Verarbeitungsknoten die NVM-Module als persistenten Hauptspeicher verwenden.
  5. System nach Anspruch1, wobei ein Speicheradressraum mehrere Speicheradressen umfasst, die jeweils einem entsprechenden Mediencontroller zugeordnet sind, wobei jede jedem Mediencontroller zugewiesene Speicheradresse Teil einer RAID-Gruppe ist, einschließlich einer Speicheradresse, die jedem anderen Mediencontrollermodul zugewiesen ist; und wobei in den Speicheradressen, die manchen der Mediencontroller der RAID-Gruppe zugeordnet sind, Daten gespeichert werden, auf die durch Verarbeitungsknoten zugegriffen werden kann, die Lade- und Speichervorgänge über die speichersemantische Fabric ausgeben, und in der Speicheradresse, die einem anderen Mediencontroller der RAID-Gruppe zugeordnet ist, auf der nicht die Daten gespeichert werden, auf die durch die Verarbeitungsknoten zugegriffen werden kann, die Parität für die Daten gespeichert wird.
  6. System nach Anspruch5, wobei jeder Mediencontroller eine RAID-Gruppenzuordnungstabelle verwaltet, in der für jede dem Mediencontroller zugewiesene Speicheradresse Folgendes gespeichert wird: ob in der Speicheradresse die Daten gespeichert sind, auf die der Verarbeitungsknoten, der Lade- und Speichervorgänge ausgibt, zugreifen kann, oder ob in der Speicheradresse die Parität für die Daten gespeichert ist; Identifizierung der Mediencontroller für andere der Speicheradressen innerhalb der RAID-Gruppe und ob in der anderen der Speicheradressen die Daten, auf die die Verarbeitungsknoten, die Lade- und Speichervorgänge ausgeben, zugreifen können, oder die Parität für die Daten gespeichert sind; und ein Status der RAID-Gruppe als normal oder verschlechtert.
  7. System nach Anspruch5, wobei der Mediencontroller, der für eine ausgewählte Speicheradresse der RAID-Gruppe verantwortlich ist, die Ladevorgänge für die an der ausgewählten Speicheradresse gespeicherten Daten direkt über die speichersemantische Fabric empfängt, und wobei der für die ausgewählte Speicheradresse verantwortliche Mediencontroller die Daten von dem NVM-Modul abruft, an das der Mediencontroller angeschlossen ist, und die Daten ohne Beteiligung anderer Mediencontroller als Reaktion darauf zurückgibt, dass der Mediencontroller keinen Lesefehler für die ausgewählte Speicheradresse feststellt.
  8. System nach Anspruch7, wobei, wenn der Mediencontroller auf den Lesefehler für die ausgewählte Speicheradresse stößt, der für die ausgewählte Speicheradresse verantwortliche Mediencontroller den für die Speicheradresse der RAID-Gruppe, an der die Parität für die Daten gespeichert ist, verantwortlichen Mediencontroller auffordert, die Daten zu rekonstruieren. wobei der Mediencontroller, der für die Speicheradresse verantwortlich ist, an der die Parität gespeichert ist, die Daten an der ausgewählten Speicheradresse aus der Parität und den Daten, die an einer anderen der Speicheradressen der RAID-Gruppe gespeichert sind, wie sie von den Mediencontrollern, die für die andere der Speicheradressen verantwortlich sind, abgerufen werden, rekonstruiert.
  9. System nach Anspruch5, wobei der Mediencontroller, der für eine ausgewählte Speicheradresse der RAID-Gruppe verantwortlich ist, die Speichervorgänge direkt empfängt, um neue Daten an der ausgewählten Speicheradresse über die speichersemantische Fabric zu schreiben, wobei der Mediencontroller, der für die ausgewählte Speicheradresse verantwortlich ist, wenn kein Fehler gefunden wird, vorhandene Daten, die an der ausgewählten Speicheradresse gespeichert sind, von dem NVM-Modul, mit dem der Mediencontroller verbunden ist, abruft, die neuen Daten in das NVM-Modul schreibt und ein Ergebnis einer Exklusiv-Oder(XOR)-Operation der vorhandenen Daten und der neuen Daten an den Mediencontroller sendet, der für die Speicheradresse der RAID-Gruppe verantwortlich ist, an der die Parität gespeichert ist, wobei der Mediencontroller, der für die Speicheradresse verantwortlich ist, an der die Parität gespeichert ist, als Reaktion darauf die Parität unter Verwendung des XOR-Operationsergebnisses aktualisiert, ohne andere Mediencontroller einzubeziehen.
  10. System nach Anspruch9, wobei der für die ausgewählte Speicheradresse verantwortliche Mediencontroller bei Auftreten des Fehlers die neuen Daten an den für die Speicheradresse der RAID-Gruppe, an der die Parität gespeichert ist, verantwortlichen Mediencontroller sendet, wobei der Mediencontroller, der für die Speicheradresse verantwortlich ist, an der die Parität gespeichert ist, als Reaktion darauf die Parität aus den neuen Daten und den an der anderen der Speicheradressen der RAID-Gruppe gespeicherten Daten, wie sie von den Mediencontrollern, die für die andere der Speicheradressen verantwortlich sind, abgerufen werden, aktualisiert.
  11. Mediencontroller, umfassend: einen nichtflüchtigen Speicher(NVM)-Controller zum Anschließen an einem ausgewählten byteadressierbaren NVM-Modul von mehreren byteadressierbaren NVMs; eine Verbindungsschichtvorrichtung zum kommunikativen Verbinden mit einer speichersemantischen Fabric, an die andere Mediencontroller physisch mit anderen byteadressierbaren NVMs der mehreren verbunden sind; und eine Fabric-Brücke zum Bereitstellen von RAID(redundantes Array unabhängiger Festplatten)-Funktionalität; wobei für eine ausgewählte Speicheradresse, die dem Mediencontroller zugewiesen ist und für die die RAID-Funktionalität von der Fabric-Brücke bereitgestellt wird, der Mediencontroller direkt Speichervorgänge empfängt, um neue Daten, die an der ausgewählten Speicheradresse gespeichert sind, über die speichersemantische Fabric zu schreiben; wobei, wenn die Fabric-Brücke keinen Fehler für die ausgewählte Speicheradresse feststellt, die Fabric-Brücke vorhandene Daten, die an der ausgewählten Speicheradresse gespeichert sind, von dem NVM-Modul abruft, die neuen Daten in das NVM-Modul schreibt und ein Ergebnis einer Exklusiv-Oder(XOR)-Operation der vorhandenen Daten und der neuen Daten an den anderen Mediencontroller für das andere NVM-Modul sendet, in dem die Parität für die vorhandenen Daten gespeichert ist, wobei, wenn die Fabric-Brücke den Fehler feststellt, die Fabric-Brücke die neuen Daten an den anderen Mediencontroller für das andere NVM-Modul sendet, in dem die Parität für die vorhandenen Daten gespeichert ist.
  12. Mediencontroller nach Anspruch 11, wobei für eine zweite ausgewählte Speicheradresse, die dem Speichercontroller zugewiesen ist und für die die RAID-Funktionalität von der Fabric-Brücke bereitgestellt wird, der Mediencontroller direkt Ladevorgänge für Daten empfängt, die an der zweiten ausgewählten Speicheradresse gespeichert sind, über die speichersemantische Fabric; wobei, wenn die Fabric-Brücke nicht auf einen Lesefehler für die zweite ausgewählte Speicheradresse stößt die Fabric-Brücke die Daten von dem NVM-Modul abruft und die Daten als Reaktion darauf über die speichersemantische Fabric zurückgibt, ohne die anderen Mediencontroller einzubeziehen, und wobei, wenn die Fabric-Brücke auf den Lesefehler stößt, die Fabric-Brücke anfordert, dass der andere Mediencontroller für das andere NVM-Modul, in dem die Parität für die Daten gespeichert ist, die Daten rekonstruiert.
  13. Mediencontroller nach Anspruch1 1, wobei für eine zweite ausgewählte Speicheradresse, die dem Mediencontroller zugeordnet ist und für die die RAID-Funktionalität von der Fabric-Brücke bereitgestellt wird, der Mediencontroller eine Anforderung zum Rekonstruieren von Daten für eine andere Speicheradresse von dem anderen Mediencontroller empfängt, der für das Speichern der Daten an der anderen Speicheradresse verantwortlich ist und der an der anderen Speicheradresse auf einen Lesefehler gestoßen ist, wobei die Fabric-Brücke an der zweiten ausgewählten Speicheradresse des zweiten ausgewählten byteadressierbaren NVM Modulparität für die Daten abruft, andere Daten abruft, die in den anderen NVM-Modulen gespeichert sind, in denen nicht die Parität für die Daten gespeichert ist, und die Daten aus der Parität und den anderen Daten rekonstruiert.
  14. Mediencontroller nach Anspruch1 1, wobei für eine zweite ausgewählte Speicheradresse, die dem Mediencontroller zugeordnet ist und für die die RAID-Funktionalität von der Fabric-Brücke gemeinsam bereitgestellt wird, der Mediencontroller neue Daten für eine andere Speicheradresse von dem anderen Mediencontroller empfängt, der für das Speichern der neuen Daten an der anderen Speicheradresse verantwortlich ist und der an der anderen Speicheradresse auf einen Fehler gestoßen ist, wobei die Fabric-Brücke als Reaktion darauf die Parität an der zweiten ausgewählten Speicheradresse des ausgewählten byteadressierbaren NVM-Moduls aus den neuen Daten und aus vorhandenen Daten aktualisiert, einschließlich der Rekonstruktion der vorhandenen Daten aus der Parität und anderer Daten, die in den anderen NVM-Modulen gespeichert sind, in welchen nicht die Parität gespeichert ist.
  15. Mediencontroller, umfassend: einen nichtflüchtigen Speicher(NVM)-Controller zum Anschließen an einem ausgewählten byteadressierbaren NVM-Modul von mehreren byteadressierbaren NVMs; eine Verbindungsschichtvorrichtung zum kommunikativen Verbinden mit einer speichersemantischen Fabric, an die andere Mediencontroller physisch mit anderen byteadressierbaren NVMs der mehreren verbunden sind; und eine Fabric-Brücke zum Bereitstellen von RAID(redundantes Array unabhängiger wobei für eine ausgewählte Speicheradresse, die dem Speichercontroller zugewiesen ist und für die die RAID-Funktionalität von der Fabric-Brücke bereitgestellt wird, der Mediencontroller direkt Ladevorgänge für Daten empfängt, die an der ausgewählten Speicheradresse gespeichert sind, über die speichersemantische Fabric; wobei, wenn die Fabric-Brücke nicht auf einen Lesefehler für die ausgewählte Speicheradresse stößt, die Fabric-Brücke die Daten von dem NVM-Modul abruft und die Daten als Reaktion darauf über die speichersemantische Fabric zurückgibt, ohne die anderen Mediencontroller einzubeziehen, und wobei, wenn die Fabric-Brücke auf den Lesefehler stößt, die Fabric-Brücke anfordert, dass der andere Mediencontroller für das andere NVM-Modul, in dem die Parität für die Daten gespeichert ist, die Daten rekonstruiert.
  16. Verfahren, umfassend: Empfangen, über eine speichersemantische Fabric, durch einen Mediencontroller für ein nichtflüchtiges Speichermodul (NVM) mehrerer byteadressierbarer NVMs, einschließlich anderer NVMs, eines Ladevorgangs für Daten, die an einer ausgewählten Speicheradresse gespeichert sind, wobei der Mediencontroller kooperativ mit anderen Mediencontrollern für die anderen NVMs RAID(redundantes Arrays unabhängiger Festplatten)-Funktionalität in einer Granularität bereitstellt, bei der die NVMs byteadressierbar sind; wenn der Mediencontroller keinen Lesefehler für die ausgewählte Speicheradresse feststellt: Abrufen der Daten vom NVM-Modul durch den Mediencontroller; und als Reaktion darauf, Zurückgeben der Daten durch den Mediencontroller über die speichersemantische Fabric, ohne die anderen Mediencontroller einzubeziehen; Empfangen, über die speichersemantische Fabric, eines Speichervorgangs zum Schreiben neuer Daten an die ausgewählte Speicheradresse; und wenn der Mediencontroller keinen Fehler für die ausgewählte Speicheradresse feststellt: Abrufen der Daten vom NVM-Modul durch den Mediencontroller; Schreiben der neuen Daten in das NVM-Modul durch den Mediencontroller; Durchführen einer Exklusiv-Oder(XOR)-Operation durch den Mediencontroller an den Daten und den neuen Daten; und Senden eines Ergebnisses der XOR-Operation durch den Mediencontroller an den anderen Mediencontroller für das andere NVM-Modul, in dem die Parität für die Daten gespeichert wird.
  17. Verfahren nach Anspruch 16, ferner umfassend: wenn der Mediencontroller auf den Lesefehler stößt: Anfordern, durch den Mediencontroller, dass der andere Mediencontroller für das andere NVM-Modul, in dem die Parität für die Daten gespeichert wird, die Daten rekonstruiert; Empfangen, durch den Mediencontroller, der Daten in der durch den anderen Mediencontroller für das andere NVM-Modul, in dem die Parität für die Daten gespeichert wird, rekonstruierten Form; als Reaktion darauf, Zurückgeben der empfangenen rekonstruierten Daten durch den Mediencontroller über die speichersemantische Fabric.
  18. Verfahren nach Anspruch 16, ferner umfassend: wenn der Mediencontroller auf den Fehler stößt: Senden, durch den Mediencontroller, der neuen Daten an den anderen Mediencontroller für das andere NVM-Modul, in dem die Parität für die Daten gespeichert wird.
  19. Verfahren nach Anspruch16, wobei die ausgewählte Speicheradresse eine erste ausgewählte Speicheradresse ist und das Verfahren ferner umfasst: Empfangen, durch den Mediencontroller, einer Anforderung zum Rekonstruieren von Daten für eine andere Speicheradresse von dem anderen Mediencontroller, der für das Speichern von Daten an der anderen Speicheradresse verantwortlich ist und der an der anderen Speicheradresse auf den Lesefehler gestoßen ist; Abrufen, durch den Mediencontroller von dem NVM-Modul, von Parität für die Daten an einer zweiten ausgewählten Speicheradresse; Abrufen anderer Daten durch den Mediencontroller von den anderen Mediencontrollern für die anderen NVM-Module, in denen nicht die Parität gespeichert ist; Rekonstruieren, durch den Mediencontroller, der Daten an der anderen Speicheradresse aus der Parität für die Daten und aus den anderen Daten; und Zurückgeben der rekonstruierten Daten durch den Mediencontroller, der für das Speichern der Daten an der anderen Speicheradresse verantwortlich ist, an den anderen Mediencontroller.
  20. Verfahren nach Anspruch16, wobei die ausgewählte Speicheradresse eine erste ausgewählte Speicheradresse ist und das Verfahren ferner umfasst: Empfangen, durch den Mediencontroller, neuer Daten für eine andere Speicheradresse von dem anderen Mediencontroller, der für das Speichern von Daten an der anderen Speicheradresse verantwortlich ist und der an der anderen Speicheradresse auf den Fehler gestoßen ist; Abrufen, durch den Mediencontroller von dem NVM-Modul, von Parität für die Daten an einer zweiten ausgewählten Speicheradresse; Abrufen anderer Daten durch den Mediencontroller von den anderen Mediencontrollern für die anderen NVM-Module, in denen nicht die Parität gespeichert ist; und Aktualisieren, durch den Mediencontroller, der Parität an der zweiten ausgewählten Speicheradresse aus den anderen Daten und den neuen Daten.
DE112019005408.2T 2018-10-31 2019-10-31 Masterloses raid für byte-adressierbaren nichtflüchtigen speicher Active DE112019005408B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/176,731 US10922178B2 (en) 2018-10-31 2018-10-31 Masterless raid for byte-addressable non-volatile memory
US16/176,731 2018-10-31
PCT/US2019/059175 WO2020092778A1 (en) 2018-10-31 2019-10-31 Masterless raid for byte-addressable non-volatile memory

Publications (2)

Publication Number Publication Date
DE112019005408T5 true DE112019005408T5 (de) 2021-08-05
DE112019005408B4 DE112019005408B4 (de) 2022-05-25

Family

ID=70326756

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019005408.2T Active DE112019005408B4 (de) 2018-10-31 2019-10-31 Masterloses raid für byte-adressierbaren nichtflüchtigen speicher

Country Status (4)

Country Link
US (1) US10922178B2 (de)
CN (1) CN112912851B (de)
DE (1) DE112019005408B4 (de)
WO (1) WO2020092778A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220137835A1 (en) * 2020-10-30 2022-05-05 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
US11782616B2 (en) 2021-04-06 2023-10-10 SK Hynix Inc. Storage system and method of operating the same
JP2023037877A (ja) 2021-09-06 2023-03-16 キオクシア株式会社 メモリシステム
US11822802B2 (en) 2021-12-21 2023-11-21 Hewlett Packard Enterprise Development Lp Simplified raid implementation for byte-addressable memory
US20240036976A1 (en) * 2022-08-01 2024-02-01 Microsoft Technology Licensing, Llc Distributed raid for parity-based flash storage devices

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US7917658B2 (en) * 2003-01-21 2011-03-29 Emulex Design And Manufacturing Corporation Switching apparatus and method for link initialization in a shared I/O environment
US7457928B2 (en) 2005-10-28 2008-11-25 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US7827439B2 (en) 2007-09-28 2010-11-02 Symantec Corporation System and method of redundantly storing and retrieving data with cooperating storage devices
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US9189385B2 (en) * 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US9116634B2 (en) * 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
JP2014522066A (ja) * 2011-08-09 2014-08-28 エルエスアイ コーポレーション 入出力デバイスとコンピューティングホストとの相互運用
WO2013052562A1 (en) * 2011-10-05 2013-04-11 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9329991B2 (en) * 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9372752B2 (en) 2013-12-27 2016-06-21 Intel Corporation Assisted coherent shared memory
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US10133511B2 (en) * 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US10402261B2 (en) 2015-03-31 2019-09-03 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in fault-tolerant memory fabrics
US10536172B2 (en) 2016-03-04 2020-01-14 Western Digital Technologies, Inc. ECC and raid-type decoding
US10452290B2 (en) * 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US10417092B2 (en) * 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US10564872B2 (en) * 2018-06-29 2020-02-18 Western Digital Technologies, Inc. System and method for dynamic allocation to a host of memory device controller memory resources
US10409511B1 (en) * 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing

Also Published As

Publication number Publication date
CN112912851B (zh) 2022-03-29
DE112019005408B4 (de) 2022-05-25
CN112912851A (zh) 2021-06-04
WO2020092778A1 (en) 2020-05-07
US10922178B2 (en) 2021-02-16
US20200133777A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
DE112019005408B4 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
DE69331369T2 (de) Betriebsverfahren einer Speicherplattenanordnung
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE69528443T2 (de) Betriebsverfahren einer Speicherplattenanordnung
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE69215538T2 (de) Verfahren zur verbesserung von partiellen streifenschreib-operationen einer speicherplattenanordnung
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE69033476T2 (de) Schutz von Datenredundanz und -rückgewinnung
DE69131562T2 (de) Verfahren und Anordnung zur Wiederherstellung von durch Parität geschützten Daten
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE602004007532T2 (de) Integrierte schaltung und verfahren zum cache-umabbilden
DE69727083T2 (de) Überprüfungssystem um die integrität der parität einer speicherplattenmatrix aufrechtzuerhalten
DE69230211T2 (de) Integrierter Speicher, Verwaltungsverfahren und resultierendes Informationssystem
DE102017120448A1 (de) Speichervorrichtung, die in der Lage ist, eine Peer-to-Peer-Kommunikation durchzuführen, und Datenspeichersystem mit derselben
DE4423559A1 (de) Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
DE19515661C2 (de) Halbleiter-Plattenvorrichtung
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE4423949A1 (de) E/A-Hilfssystem und Exklusiv-Steuerverfahren, Datenspeicherverfahren und Speicherinitialisierungsverfahren in einem E/A-Hilfssystem
DE04812807T1 (de) Virtual File System
DE68923694T2 (de) LRU-Fehlerdetektion unter Verwendung der Sammlung der geschriebenen und gelesenen LRU-Bits.
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10236179A1 (de) Speichersystem und Verfahren zur Verwendung desselben
DE69016978T2 (de) Sicheres Datenschnellschreibverfahren für Massenspeichereinrichtung und ein dieses Verfahren ausführendes Computersystem.

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TX, US

R020 Patent grant now final