-
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.