DE112019000149T5 - Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen - Google Patents

Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen Download PDF

Info

Publication number
DE112019000149T5
DE112019000149T5 DE112019000149.3T DE112019000149T DE112019000149T5 DE 112019000149 T5 DE112019000149 T5 DE 112019000149T5 DE 112019000149 T DE112019000149 T DE 112019000149T DE 112019000149 T5 DE112019000149 T5 DE 112019000149T5
Authority
DE
Germany
Prior art keywords
host
storage
storage device
data
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019000149.3T
Other languages
English (en)
Inventor
Subbarao Sanjay
Vladislav Bolkhovitin
Anand Kulkarni
Brian W. O'Krafka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112019000149T5 publication Critical patent/DE112019000149T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1009Data masking during input/output

Abstract

Beispielhafte Multivorrichtungsspeichersysteme, Speichervorrichtungen und Verfahren stellen gehostete Dienste auf Peer-Speichervorrichtungen bereit. Die Speichervorrichtungen schließen lokale Speicherressourcen, wie Betriebsspeicher, fernadressierbaren Speicher oder logischen Abbildungsspeicher, und Rechenressourcen, wie einen Prozessor oder eine Codierungs-Engine, ein. Jede Speichervorrichtung ist so konfiguriert, dass sie mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric kommuniziert. Die Speichervorrichtungen identifizieren angeforderte gehostete Dienste von Dienst-Host-Anforderungen, die über den Interconnect Fabric empfangen werden. Die Speichervorrichtungen speichern eine Vielzahl von gehosteten Diensten, um den Zugriff auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen zu ermöglichen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Datenspeichersysteme und, in einem besonderen Beispiel, auf disaggregierte Multivorrichtungs-Datenspeichersysteme.
  • HINTERGRUND
  • Multivorrichtungsspeichersysteme verwenden mehrere diskrete Speichervorrichtungen, in der Regel Plattenlaufwerke (Solid-State-Laufwerke, Festplattenlaufwerke, Hybridlaufwerke, Bandlaufwerke usw.) zum Speichern großer Datenmengen. Diese Multivorrichtungsspeichersysteme sind im Allgemeinen in einer Anordnung von Laufwerken angeordnet, die durch eine gemeinsame Kommunikationsstruktur miteinander verbunden sind und in vielen Fällen durch eine Speichersteuerung, eine Steuerung für eine redundante Anordnung von unabhängigen Festplatten (RAID) oder eine allgemeine Steuerung gesteuert werden, um Speicher- und Systemaktivitäten über die Anordnung von Laufwerken zu koordinieren. Die in der Anordnung gespeicherten Daten können gemäß einem definierten RAID-Level, einer Kombination von RAID-Schemata oder anderen Konfigurationen gespeichert werden, um die gewünschte Datenredundanz, Leistung und Kapazitätsauslastung zu erreichen. Im Allgemeinen können diese Datenspeicherkonfigurationen eine Kombination aus redundanten Kopien (Spiegelung), Daten-Striping und/oder Parität (Berechnung und Speicherung) sowie andere Datenverwaltungs-, Fehlerkorrektur- und Datenwiederherstellungsprozesse beinhalten, die manchmal spezifisch für den Typ der verwendeten Laufwerke sind (z. B. Solid-State-Laufwerke im Vergleich zu Festplattenlaufwerken).
  • Es zeichnet sich in der Speicherindustrie ein Trend zum Einsatz disaggregierter Speicher ab. Der disaggregierte Speicher bietet erhebliche Kosteneinsparungen durch das Entkoppeln der Lebenszyklen von Rechen- und Speicherknoten und die Möglichkeit, dass verschiedene Knoten oder Subsysteme ein unterschiedliches Verhältnis von Rechen- zu Speicherleistung aufweisen. Darüber hinaus ermöglicht der disaggregierte Speicher eine erhebliche Flexibilität bei der Migration von Rechenaufträgen von einem physischen Server auf einen anderen, um die Verfügbarkeit und den Lastausgleich zu gewährleisten.
  • Der disaggregierte Speicher wurde unter Verwendung einer Reihe von Systemarchitekturen implementiert, einschließlich der passiven Just-a-Bunch-of-Disks-Architektur (JBOD-Architektur), der traditionellen All-Flash-Architektur (AFA) und des disaggregierten Speichers Ethernet Attached Bunch of Flash (EBOF), bei dem in der Regel spezialisierte Chips von Mellanox oder Kazan verwendet werden, um Befehle vom externen NVMe-OF™-Protokoll (Non-Volatile Memory Express™ over Fabrics-Protokoll) in das interne NVMe-Protokoll (NVM Express™-Protokoll) zu übersetzen. Diese Architekturen nutzen die E/A-Bandbreite, die Verarbeitung und den Pufferspeicher der einzelnen Speichervorrichtungen, wie Solid-State-Laufwerke (SSDs) in solchen Systemen, möglicherweise nicht optimal aus. Darüber hinaus platzieren einige dieser Architekturen erhebliche Rechenressourcen in einer zentralen Speichersteuerung, was zu Herausforderungen bei der Skalierung von Lösungen führen kann, wenn die Anzahl und Größe von SSDs zunimmt.
  • Daher besteht nach wie vor ein Bedarf an disaggregierten Speicherarchitekturen, die die Speicher- und Rechenressourcen auf Speichervorrichtungen wie SSDs verteilen und zuverlässige Datenverwaltungsdienste angesichts Laufwerksausfälle und/oder Unterbrechungen der Systemstromversorgung ermöglichen.
  • KU RZDARSTELLU NG
  • Es werden verschiedene Gesichtspunkte für gehostete Dienste auf Peer-Speichervorrichtungen, insbesondere verteilte Datenverwaltungsdienste in Multivorrichtungsspeichersystemen, beschrieben. In einem innovativen Gesichtspunkt weist eine Speichervorrichtung einen Prozessor, einen Betriebsspeicher, einen fernadressierbaren Speicher und eine Fabric-Schnittstelle auf, die so konfiguriert ist, dass sie mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric zwischen der Fabric-Schnittstelle und der Vielzahl von Peer-Speichervorrichtungen kommuniziert. Ein Dienstanforderungs-Handler ist im Betriebsspeicher gespeichert und vom Prozessor ausführbar, um einen angeforderten gehosteten Dienst von einer Dienst-Host-Anforderung zu identifizieren, die über die Fabric-Schnittstelle empfangen wurde. Eine Vielzahl von gehosteten Diensten sind im Betriebsspeicher gespeichert und durch den Prozessor ausführbar, um auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen, einschließlich des angeforderten gehosteten Dienstes, zuzugreifen.
  • In verschiedenen Ausführungsformen ist der fernadressierbare Speicher so konfiguriert, dass er einen Übertragungspufferplatz in dem fernadressierbaren Speicher zuweist, und der angeforderte gehostete Dienst schließt eine Datenübertragung zwischen dem Übertragungspufferplatz und mindestens einer der Vielzahl von Peer-Speichervorrichtungen ein. Die Speichervorrichtung kann weiterhin eine Löschcodierungs-Engine aufweisen, und der angeforderte gehostete Dienst kann weiterhin eine Löschcodierungsoperation aufweisen, bei der die Löschcodierungs-Engine verwendet wird, um Daten für die Datenübertragung zu löschen. Der fernadressierbare Speicher kann so konfiguriert werden, dass er einen Paritätspufferplatz im fernadressierbaren Speicher zuweist. Der angeforderte gehostete Dienst kann weiterhin das Lesen von Paritätspufferdaten aus dem Paritätspufferplatz, die Löschcodierung der aus dem Paritätspufferplatz gelesenen Paritätspufferdaten und das Zurückschreiben der löschcodierten Paritätspufferdaten in den Paritätspufferplatz aufweisen.
  • In einigen Ausführungsformen weist die Speichervorrichtung weiterhin einen logischen Abbildungsspeicher auf, der logische Abbildungsinformationen für Speichervorrichtungsmedien für die Speichervorrichtung und logische Host-Abbildungsinformationen für mindestens eine der Vielzahl von Peer-Speichervorrichtungen einschließt. Die Vielzahl von gehosteten Diensten kann das Verwenden von mindestens einer logischen Host-Blockadresse zur Identifizierung von logischen Host-Abbildungsinformationen aus dem logischen Abbildungsspeicher und das Senden der identifizierten logischen Host-Abbildungsinformationen an einen Anforderer einschließen. Der angeforderte Host-Dienst kann weiterhin das Aktualisieren der logischen Host-Abbildungsinformationen auf der Grundlage einer Änderung in mindestens einer der Vielzahl von Peer-Speichervorrichtungen aufweisen. Der Anforderer für den angeforderten Host-Dienst kann mindestens eine aus der Vielzahl von Peer-Speichervorrichtungen sein. Der fernadressierbare Speicher kann so konfiguriert werden, dass er einen Protokollpufferplatz im fernadressierbaren Speicher zuweist. Die Vielzahl von gehosteten Diensten kann das Protokollieren angeforderter Aktualisierungen der logischen Host-Abbildungsinformationen im Protokollpufferplatz einschließen. Der angeforderte gehostete Dienst das Verarbeiten angeforderter Aktualisierungen aus dem Protokollpufferplatz nach einem Initialisierungsereignis einschließen. Die logischen Host-Abbildungsinformationen können logische Host-Abbildungsparitätsdaten einschließen, die in mindestens einer der Vielzahl von Peer-Speichervorrichtungen gespeichert sind. Der angeforderte gehostete Dienst kann die Neuerstellung von logischen Host-Abbildungsinformationen aus den logischen Host-Abbildungsparitätsdaten einschließen. Der angeforderte gehostete Dienst kann das Empfangen einer Verifizierungsliste von logischen Host-Blockadressen, das Identifizieren von logischen Host-Abbildungsinformationen, die der Verifizierungsliste von logischen Host-Blockadressen entsprechen, und das Erzeugen einer gefilterten Liste von logischen Host-Blockadressen zur Speicherbereinigung auf der Grundlage der identifizierten logischen Host-Abbildungsinformationen einschließen. Der Empfang der Verifizierungsliste der logischen Host-Blockadressen kann ein Speicherbereinigungsmodul einschließen, das die Verifizierungsliste in den fernadressierbaren Speicher schreibt. Das Erzeugen der gefilterten Liste von logischen Host-Blockadressen kann das Schreiben der gefilterten Liste in den fernadressierbaren Speicher für den Zugriff durch das Speicherbereinigungsmodul einschließen.
  • In einigen Ausführungsformen werden die lokalen Speicherressourcen aus dem Betriebsspeicher, dem fernadressierbaren Speicher oder dem logischen Abbildungsspeicher ausgewählt. Die lokalen Rechenressourcen können aus dem Prozessor oder dem Löschcodierungsmodul ausgewählt werden.
  • In einem weiteren innovativen Gesichtspunkt stellt ein computerimplementiertes Verfahren zur Ausführung durch eine Speichervorrichtung verteilte gehostete Dienste für Peer-Speichervorrichtungen bereit. Ein fernadressierbarer Speicher wird verwaltet, und eine Vielzahl von Peer-Speichervorrichtungen werden über einen Zwischenverbindungs-Fabric miteinander kommuniziert. Eine Vielzahl von gehosteten Diensten werden für den Zugriff auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen gespeichert. Eine Dienst-Host-Anfrage wird von einem Dienstanforderer empfangen. Ein angeforderter gehosteter Dienst wird aus der Dienst-Host-Anfrage identifiziert. Der angeforderte gehostete Dienst wird unter Verwendung des fernadressierbaren Speichers ausgeführt. Als Antwort auf die Ausführung des angeforderten Host-Dienstes wird eine Statusmeldung an den Dienstanforderer zurückgegeben.
  • In verschiedenen Ausführungsformen wird im fernadressierbaren Speicher ein Übertragungspufferplatz zugewiesen, und Daten werden zwischen dem Übertragungspufferplatz und mindestens einer der Vielzahl von Peer-Speichervorrichtungen übertragen. Im fernadressierbaren Speicher kann ein Paritätspufferplatz zugewiesen werden, und Paritätspufferdaten können aus dem Paritätspufferplatz gelesen werden. Die aus dem Paritätspufferplatz gelesenen Paritätspufferdaten können löschcodiert werden, und die löschcodierten Paritätspufferdaten können in den Paritätspufferplatz zurückgeschrieben werden.
  • In einigen Ausführungsformen weist das Verfahren weiterhin das Verwalten eines logischen Abbildungsspeichers auf, der logische Abbildungsinformationen für Speichervorrichtungsmedien für mindestens ein Speichermedium in der Speichervorrichtung und logische Host-Abbildungsinformationen für mindestens eine der Vielzahl von Peer-Speichervorrichtungen einschließt. Die logischen Host-Abbildungsinformationen können aus dem logischen Abbildungsspeicher unter Verwendung mindestens einer logischen Host-Blockadresse identifiziert werden, und die identifizierten logischen Host-Abbildungsinformationen können zur Ausführung des angeforderten Dienst-Hosts verwendet werden. Die logischen Host-Abbildungsinformationen können auf der Grundlage einer Änderung in mindestens einer der Vielzahl von Peer-Speichervorrichtungen während der Ausführung des angeforderten gehosteten Dienst-Hosts aktualisiert werden. Im fernadressierbaren Speicher kann ein Protokollpufferplatz zugewiesen werden, und angeforderte Aktualisierungen der logischen Host-Abbildungsinformationen können im Protokollpufferplatz protokolliert werden. Angeforderte Aktualisierungen können vom Protokollpufferplatz nach einem Initialisierungsereignis als Antwort auf die Dienst-Host-Anforderung verarbeitet werden. Logische Host-Abbildungsparitätsdaten können im logischen Abbildungsspeicher für logische Host-Abbildungsinformationen gespeichert werden, die in mindestens einer der Vielzahl von Peer-Speichervorrichtungen gespeichert sind. Logische Host-Abbildungsinformationen können als Antwort auf die Dienst-Host-Anforderung aus den logischen Host-Abbildungsparitätsdaten neu erstellt werden.
  • In noch einem weiteren innovativen Gesichtspunkt stellt eine Speichervorrichtung gehostete Dienste für Peer-Speichervorrichtungen bereit. Die Speichervorrichtung weist mindestens ein Speichermedium und einen fernadressierbaren Pufferspeicher auf. Es sind Mittel zum Kommunizieren mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric bereitgestellt. Es sind Mittel zum Speichern einer Vielzahl von gehosteten Diensten für den Zugriff auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen vorgesehen. Es sind Mittel für das Empfangen einer Dienst-Host-Anforderung von einem Dienstanforderer bereitgestellt. Es sind Mittel zum Identifizieren eines angeforderten gehosteten Dienstes von der Dienst-Host-Anforderung bereitgestellt. Es sind Mittel zum Ausführen des angeforderten gehosteten Dienstes unter Verwendung des fernadressierbaren Pufferspeichers bereitgestellt.
  • In noch einem einem innovativen Gesichtspunkt weist eine Speichervorrichtung mindestens eine Speichermedium und eine Fabric-Schnittstelle auf, die so konfiguriert ist, dass sie mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric zwischen der Fabric-Schnittstelle und der Vielzahl von Peer-Speichervorrichtungen kommuniziert. Ein logischer Abbildungsspeicher schließt logische Speichervorrichtungsmedien-Abbildungsinformationen und logische Host-Abbildungsinformationen ein. Die logischen Speichervorrichtungsmedien-Abbildungsinformation sind für das mindestens eine Speichermedium und sind in kontinuierlichen logischen Blöcken mit einer Medienblockgröße gleich einer Seitenprogrammiergröße des mindestens einen Speichermediums konfiguriert. Die logischen Host-Abbildungsinformationen sind für mindestens eine der Vielzahl von Peer-Speichervorrichtungen und sind in logischen Host-Blöcken mit einer Host-Blockgröße konfiguriert, die kleiner als die Medienblockgröße ist. Ein Dienstanforderungs-Handler ist konfiguriert, um einen angeforderten gehosteten Dienst von einer Dienst-Host-Anforderung zu identifizieren, die über die Fabric-Schnittstelle empfangen wurde. Eine Vielzahl von gehosteten Diensten sind so konfiguriert, dass sie auf den logischen Abbildungsspeicher für Datenoperationen für die Vielzahl von Peer-Speichervorrichtungen zugreifen, und die Dienst-Host-Anforderung initiiert mindestens einen der Vielzahl von gehosteten Diensten.
  • In einigen Ausführungsformen ist ein Medienmanager so konfiguriert, dass er eine Flash-Übersetzungsschicht für das mindestens eine Speichermedium verwaltet. Der Medienmanager definiert kontinuierliche logische Blöcke mit der Medienblockgröße in dem mindestens einen Speichermedium.
  • Die verschiedenen Ausführungsformen wenden die Lehren der disaggregierten Multivorrichtungsspeichersysteme vorteilhaft an, um die Funktionalität solcher Computersysteme zu verbessern. Die verschiedenen Ausführungsformen schließen Operationen zum Beseitigen oder mindestens zum Reduzieren der Probleme in den bisherigen Speichersystemen ein, die vorstehend erläutert wurden, und sind dementsprechend für einige Anwendungen skalierbarer und zuverlässiger als andere Computerdatenspeicherarchitekturen. Das heißt, die verschiedenen hierin offenbarten Ausführungsformen schließen Hardware und/oder Software mit Funktionen zur Verbesserung der Skalierbarkeit und Zuverlässigkeit von verteilten Datenverwaltungsoperationen ein, die auf Hosting-Diensten über eine Vielzahl von Peer-Speichervorrichtungen basieren. Dementsprechend stellen die hierin offenbarten Ausführungsformen verschiedene Verbesserungen an Speichersystemen bereit.
  • Es sei klargestellt, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeits- und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.
  • Figurenliste
    • 1 veranschaulicht schematisch ein Beispiel für ein Multivorrichtungsspeichersystem.
    • 2 veranschaulicht schematisch ein Beispiel für eine Speichervirtualisierungssteuerung des Multivorrichtungsspeichersystems aus 1.
    • 3 veranschaulicht schematisch ein Beispiel für eine Speichervorrichtung des Multivorrichtungsspeichersystems aus 1.
    • 4 veranschaulicht schematisch ein Beispiel für eine disaggregierte Speicherarchitektur, einschließlich Beispielkonfigurationen des Multivorrichtungsspeichersystems aus 1.
    • 5 veranschaulicht ein Beispiel für ein Verfahren zum Bearbeiten einer Dienst-Host-Anforderung unter Verwendung einer Speichervorrichtung.
    • 6 veranschaulicht ein Beispiel für ein Verfahren zum Bereitstellen von Übertragungspufferdiensten in einer Speichervorrichtung.
    • 7 veranschaulicht ein Beispiel für ein Verfahren zum Bereitstellen von Paritätspufferdiensten in einer Speichervorrichtung.
    • 8 veranschaulicht ein Beispiel für ein Verfahren zum Bereitstellen von Abrufdiensten für logische Abbildungen in einer Speichervorrichtung.
    • 9 veranschaulicht ein Beispiel für ein Verfahren zum Aktualisieren logischer Abbildungsinformationen in einer Speichervorrichtung.
    • 10 veranschaulicht ein Beispiel für ein Verfahren zum Neuerstellen von logischen Host-Abbildungsinformationen in einer Speichervorrichtung.
    • 11 veranschaulicht ein Beispiel für ein Verfahren zum Verifizieren logischer Abbildungsinformationen in einer Speichervorrichtung.
  • DETAILLIERTE BESCHREIBUNG
  • 1 zeigt eine Ausführungsform eines beispielhaften Multivorrichtungs-Datenspeichersystems 100. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht. Zu diesem Zweck schließt das Datenspeichersystem 100 als ein nicht einschränkendes Beispiel eine oder mehrere Datenspeichervorrichtungen 120 (auch manchmal als Informationsspeichervorrichtungen oder Speichervorrichtungen bezeichnet) ein.
  • In einigen Ausführungsformen sind die Datenspeichervorrichtungen 120 eine Solid-State-Laufwerke (SSDs) oder schließen diese ein. Jede Datenspeichervorrichtung 120.1-120.n kann eine nichtflüchtige Speicher- (NVM) Steuerung 130 auf der Grundlage von Rechenressourcen (Prozessor und Speicher) und eine Vielzahl von NVM-Vorrichtungen 140 zur Datenspeicherung (z. B. eine oder mehrere NVM-Vorrichtung(en), wie eine oder mehrere Flash-Speichervorrichtungen) einschließen. In einigen Ausführungsformen schließt eine jeweilige Datenspeichervorrichtung 120 der einen oder der mehreren Datenspeichervorrichtungen eine oder mehrere NVM-Steuerungen, wie Flash-Steuerungen oder Kanal-Steuerungen (z. B. für Speichervorrichtungen mit NVM-Vorrichtungen in mehreren Speicherkanälen).
  • In einigen Ausführungsformen kann eine entsprechendes Datenspeichervorrichtung 120 eine einzelne NVM-Vorrichtung 140 einschließen, während in anderen Ausführungsformen die entsprechende Datenspeichervorrichtung 120 eine Vielzahl von NVM-Vorrichtungen einschließt. In einigen Ausführungsformen schließen die NVM-Vorrichtungen einen NAND-Flash-Speicher oder einen NOR-Flash-Speicher ein. In einigen Ausführungsformen schließt die Datenspeichervorrichtung 120 eine oder mehrere Festplattenlaufwerke (HDD) ein. In einigen Ausführungsformen können die Datenspeichervorrichtungen 120 eine Flash-Speichervorrichtung einschließen, die wiederum einen oder mehrere Flash-Speicherchips, ein oder mehrere Flash-Speicherpakete, einen oder mehrere Flash-Speicherkanäle oder dergleichen einschließt. In einigen Ausführungsformen können jedoch eine oder mehrere der Datenspeichervorrichtungen 120 über andere Arten von nichtflüchtigen Datenspeichermedien oder -medien verfügen (z. B. Phasenänderungs-Direktzugriffsspeicher (PCRAM), resistive Direktzugriffsspeicher (ReRAM), magnetische Spin-Transfer-Drehmoment-Direktzugriffsspeicher (STT-RAM), magnetoresistive Direktzugriffsspeicher (MRAM) usw.).
  • Die Speichervirtualisierungssteuerung (SVC) 110 ist über das Zwischenverbindungs-Fabric 114 mit den Datenspeichervorrichtungen 120.1-120.n gekoppelt. In einigen Ausführungsformen kann die SVC 110 jedoch als Komponente und/oder als ein Subsystem einer anderen Komponente des Datenspeichersystems 100 gehostet werden. Zum Beispiel kann in einigen Ausführungsformen ein Teil oder die gesamte Funktionalität der SVC 110 durch Software implementiert werden, die auf einer oder mehreren Rechenressourcen in mindestens einer der Datenspeichervorrichtungen 120.1-120. n, des Zwischenverbindungs-Fabric 114 oder der Schnittstelle 112 ausgeführt wird. SVC 110 wird manchmal als Steuerungssystem, Hauptsteuerungssystem, NVMe- (Non-Volatile Memory Express) Steuerung, Speicherbereinigungs-(GC) Leiter, Speichersteuerung oder Speichervirtualisierungssteuerung bezeichnet. In einigen Ausführungsformen fungiert eine NVM-Steuerung 130.1 in Verbindung mit einer bestimmten Speichervorrichtung (z. B. 120.1) als SVC 110 für andere Speichervorrichtungen (z. B. 120-2, 120-3 und 120.n) im Datenspeichersystem 100. In einigen Ausführungsformen ist SVC 110 eine Komponente und/oder ein Subsystem von Host 102 (nachfolgend beschrieben).
  • In einigen Ausführungsformen ist Host 102 mit dem Datenspeichersystem 100 über Schnittstelle 112 über ein Netzwerk-Fabric 104 gekoppelt. In einigen Ausführungsformen sind mehrere Hosts 102 (von denen nur einer in 1 dargestellt ist) mit dem Datenspeichersystem 100 über die Schnittstelle 112 gekoppelt, bei der es sich um eine Speichernetzwerkschnittstelle oder eine andere Schnittstelle handeln kann, die die Kommunikation mit mehreren Hosts 102 unterstützt. Das Netzwerk-Fabric 104 kann ein verdrahtetes und/oder drahtloses Netzwerk einschließen (z. B. öffentliche und/oder private Computernetzwerke in beliebiger Anzahl und/oder Konfiguration), die in geeigneter Weise zum Übertragen von Daten gekoppelt werden können. Zum Beispiel kann das Netzwerk-Fabric 104 jedes Mittel eines herkömmlichen Datenkommunikationsnetzes wie ein lokales Netz (LAN), ein Wide Area Network (WAN), ein Telefonnetz wie das öffentliche Telefonnetz (PSTN), ein Intranet, das Internet oder jedes andere geeignete Kommunikationsnetz oder eine Kombination von Kommunikationsnetzen einschließen.
  • Der Host 102 oder ein entsprechend Host in einem System mit mehreren Hosts kann jede beliebige geeignete Computervorrichtung sein, wie ein Computer, ein Laptop, ein Tablet, ein Netbook, ein Internetkiosk, ein persönlicher digitaler Assistent, ein Mobiltelefon, ein Smartphone, eine Spielekonsole, ein Computerserver oder eine beliebige andere Rechenvorrichtung. Der Host 102 wird manchmal als ein Hostsystem, Client oder Clientsystem bezeichnet. In einigen Ausführungsformen ist der Host 102 ein Serversystem, wie ein Serversystem in einem Datenzentrum. In einigen Ausführungsformen sind der eine oder die mehreren Hosts 102 eine oder mehrere Host-Vorrichtungen, die sich von der SVC 110 unterscheiden und sich von der Vielzahl von Speichervorrichtungen 120 unterscheiden; aber in einigen anderen Ausführungsformen schließen der eine oder die mehreren Hosts 102 eine der Speichervorrichtungen 120 ein, die konfiguriert wurde, um Datenverarbeitungsoperationen durchzuführen und Datenspeicherbefehle zu senden, um auf Daten zuzugreifen, die in der einen oder den mehreren Speichervorrichtungen 120 gespeichert sind. In einigen anderen Ausführungsformen sind der eine oder die mehreren Hosts 102 so konfiguriert, dass sie Daten in der Vielzahl von Speichervorrichtungen 120 speichern und auf diese zugreifen.
  • In einigen Ausführungsformen schließt das Datenspeichersystem 100 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, ein Display und/oder andere Benutzerschnittstellenkomponenten wie eine Tastatur, einen Touchscreen, eine Maus, ein Trackpad, eine digitale Kamera und/oder eine beliebige Anzahl von zusätzlichen Vorrichtungen ein, um Funktionalität hinzuzufügen. In einigen Ausführungsformen hat das Datenspeichersystem 100 kein Display und keine anderen Benutzerschnittstellenkomponenten.
  • Die eine oder mehreren NVM-Steuerungen 130 sind, wenn sie in einer entsprechenden Speichervorrichtung 120 eingeschlossen sind, über das Zwischenverbindungs-Fabric 114 mit SVC 110 gekoppelt. Das Zwischenverbindungs-Fabric 114 wird manchmal als eine Datenverbindung bezeichnet, überträgt in der Regel jedoch zusätzlich zu Daten Befehle, und überträgt zusätzlich zu Datenwerten, die in den NVM-Vorrichtungen 140 gespeichert werden und zusätzlich zu Datenwerten, die von den NVM-Vorrichtungen 140 gelesen werden, gegebenenfalls Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen.
  • In einigen Ausführungsformen sind die SVC 110, die eine oder mehreren NVM-Steuerungen 130 und die NVM-Vorrichtungen 140 jedoch in derselben Vorrichtung (d. h. einer integrierten Vorrichtung) als Komponenten davon eingeschlossen. Ferner sind in einigen Ausführungsformen eine oder mehrere Speichervorrichtungen 120 (z. B. einschließlich SVC 110, der einen oder mehreren NVM-Steuerungen 130 und die NVM-Vorrichtungen 140) in eine Hostvorrichtung (z. B. Host 102) eingebettet, wie eine mobile Vorrichtung, ein Tablet, ein anderer Computer oder eine computergesteuerte Vorrichtung, und die hierin beschriebenen Verfahren werden zumindest teilweise durch die eingebettete Speichersteuerung durchgeführt. In einigen Ausführungsformen sind NVM-Steuerungen 130 so konfiguriert, dass sie sowohl ein oder mehrere NVM-Vorrichtungen 140 steuern als auch in Verbindung mit SVC 110 verteilte Speichersteuerungsfunktionen bereitstellen.
  • In einigen Ausführungsformen schließen die Speichervorrichtungen 120 eine Vielzahl von NVM-Vorrichtungen 140, wie Flash-Speichervorrichtungen, und optional weniger NVM-Steuerungen 130 ein. Anders betrachtet schließt eine Speichervorrichtung 120 in einigen Ausführungsformen mehrere Speicherkanäle ein, von denen jeder über eine NVM-Steuerung 130 und einen Satz von NVM-Vorrichtungen 140 verfügt, die mit der NVM-Steuerung 130 gekoppelt sind. In einigen Ausführungsformen teilen sich jedoch zwei oder mehr Speicherkanäle eine NVM-Steuerung 130. In beiden Beispielen hat jeder Speicherkanal einen eigenen Satz von NVM-Vorrichtungen 140,. In einem nicht einschränkenden Beispiel beträgt die Anzahl der Speicherkanäle in einer typischen Speichervorrichtung 8, 16 oder 32. In einem anderen nicht einschränkenden Beispiel beträgt die Anzahl von 140 NVM-Vorrichtungen pro Speicherkanal typischerweise 8, 16, 32 oder 64. Darüber hinaus unterscheidet sich in einigen Ausführungsformen die Anzahl der NVM-Vorrichtungen 140 in einem Speicherkanal von der Anzahl der NVM-Vorrichtungen in einem anderen der Speicherkanäle.
  • In einigen Ausführungsformen schließt jede NVM-Steuerung der NVM-Steuerungen 130 eine oder mehrere Verarbeitungseinheiten ein (auch manchmal CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller genannt), die so konfiguriert sind, dass sie Befehle in einem oder mehreren Programmen (z. B. in NVM-Steuerungen 130) ausführen. In einigen Ausführungsformen teilen sich eine oder mehrere Prozessoren eine oder mehrere CPUs Prozessoren im Rahmen der Funktion der NVM-Steuerungen 130 und in einigen Fällen auch darüber hinausgehend. Wie vorstehend erwähnt, sind die NVM-Vorrichtungen 140 mit den NVM-Steuerungen 130 über Verbindungen gekoppelt, die in der Regel zusätzlich zu den Daten Befehle übertragen und optional zusätzlich zu den in den NVM-Vorrichtungen 140 zu speichernden Datenwerten und den aus den NVM-Vorrichtungen 140 gelesenen Datenwerten Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen übertragen. Die NVM-Vorrichtungen 140 können eine beliebige Anzahl von (d. h. eine oder mehrere) Speichervorrichtungen einschließen, einschließlich, ohne Einschränkung, nichtflüchtiger Halbleiterspeichervorrichtungen, wie Flash-Speichervorrichtung(en).
  • Die Flash-Speichervorrichtung(en) (z. B. NVM-Vorrichtungen 140) kann bzw. können für Unternehmensspeicher eingerichtet sein, die für Anwendungen wie Cloud Computing, für Datenbankanwendungen, als primäre und/oder sekundäre Speicher oder zum Zwischenspeichern von gespeicherten (oder zu speichernden) Daten in sekundären Speichern, wie Festplattenlaufwerken, geeignet sind. Außerdem und/oder alternativ kann bzw. können die Flash-Speichervorrichtung(en) (z. B. NVM-Vorrichtungen 140) auch für Anwendungen mit relativ kleinerem Maßstab wie persönliche Flash-Laufwerke oder Festplattenersatz für PCs, Laptops und Tablets eingerichtet sein. Obwohl hier als Beispiel Flash-Speichervorrichtungen und Flash-Steuerungen verwendet werden, schließen in einigen Ausführungsformen Speichervorrichtung(en) 120 andere nichtflüchtige Speichervorrichtungen und entsprechende nichtflüchtige Speichersteuerung(en) ein.
  • In einigen Ausführungsformen sind die NVM-Vorrichtungen 140 in eine Reihe von adressierbaren und einzeln auswählbaren Blöcken unterteilt, die manchmal als Löschblöcke bezeichnet werden. In einigen Ausführungsformen sind die individuell auswählbaren Blöcke die löschbaren Einheiten mit minimaler Größe in einer Flash-Speichervorrichtung. Mit anderen Worten: jeder Block enthält die minimale Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können (d. h. in einer einzigen Löschoperation). Jeder Block wird in der Regel weiter unterteilt in eine Vielzahl von Seiten und/oder Wortleitungen, wobei jede Seite oder Wortleitung in der Regel eine Instanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Ausführungsformen (z. B. unter Verwendung einiger Arten von Flash-Speichern) ist die kleinste individuell zugängliche Einheit eines Datensatzes jedoch ein Sektor oder Codewort, der bzw. das eine Untereinheit einer Seite ist. Das heißt, ein Block schließt eine Vielzahl von Seiten ein, wobei jede Seite eine Vielzahl von Sektoren oder Codewörtern enthält, und jeder Sektor oder jedes Codewort die minimale Dateneinheit zum Lesen von Daten aus der Flash-Speichervorrichtung ist.
  • 2 ist ein Blockdiagramm, das eine beispielhafte Speichervirtualisierungssteuerung (SVC) 110 gemäß einigen Ausführungsformen veranschaulicht, wie in 1 dargestellt. Ein Host kann auf Speicher in einem Speichersystem zugreifen, indem er Lese-/Schreibbefehle an die SVC 110 sendet. In einigen Ausführungsformen kann die SVC 110 nur eine Komponente des Steuerpfads und nicht im Datenpfad sein. Daten, die mit Lese-/Schreibbefehlen verbunden sind, werden zwischen Speichervorrichtungen und Hostsystemen oder von Speichervorrichtung zu Speichervorrichtung übertragen, ohne die SVC 110 zu durchlaufen. Zum Beispiel kann die SVC 110 (direkt oder indirekt) mit Remote-Data-Management-System- (RMDS) Engines in den Hosts, Speichervorrichtungen, Zwischenverbindungs-Fabric, Netzwerkschnittstellen usw. kommunizieren, um Datenübertragungen von einer Komponente zur anderen ohne Routing über die SVC 110 herzustellen.
  • In einigen Ausführungsformen steuert die SVC 110 den Datenfluss zwischen Hosts und Speichervorrichtungen. Die SVC 110 kann Befehle vom Host empfangen, verteilte Speichervorrichtungsdienste (z. B. Host-Flash-Übersetzungsschicht-Dienste (FTL. Dienste)) aufrufen, den Status von Speichervorrichtungen empfangen und den Status an den Host zurückmelden. In einigen Ausführungsformen kann die SVC 110 eine Hardware-Automatisierung zur Behandlung bestimmter Leistungsfälle einschließen. Die SVC 110 kann die Verwaltung von Speichervorrichtungsressourcen auf Speichersystemebene über alle Speichervorrichtungen in der Speicheranordnung hinweg implementieren, z. B. Zuweisung von Medienspeicherplatz, Verteilung von Diensten und zugehörigen Prozessor- und Speicherressourcen, einschließlich des Pufferspeichers der Speichervorrichtung. Beispielsweise kann die SVC 110 Speichervorrichtungspufferspeicher verwalten und für Lese-/Schreib-, Speicherbereinigungsoperationen, degradierte Operationen und Wiederherstellungsoperationen zuweisen. In einigen Ausführungsformen kann die SVC 110 Operationen auf Speichersystemebene verwalten, indem sie verteilte und/oder entladene Dienste, wie Host-FTL-Dienste, aufruft, die von einer oder mehreren Speichervorrichtungen ausgeführt werden.
  • Die SVC 110 schließt in der Regel eine oder mehrere Verarbeitungseinheiten (CPUs 202) ein, die hierin manchmal als CPUs, Prozessoren oder Hardware-Prozessoren bezeichnet werden und manchmal unter Verwendung von Mikroprozessoren, Mikrocontrollern oder dergleichen zum Ausführen von Modulen, Programmen und/oder Befehlen implementiert werden, die im Speicher 210 gespeichert sind und dadurch Verarbeitungsoperationen ausführen, sowie Speicher 210 (manchmal als Speichervirtualisierungssteuerungsspeicher bezeichnet) und einen oder mehrere Kommunikationsbusse 200 zum Verbinden dieser Komponenten. Der eine oder die mehreren Kommunikationsbusse 200 schließen gegebenenfalls Schaltlogik ein (manchmal als Chipsatz bezeichnet), die Systemkomponenten miteinander verbinden und die Kommunikation zwischen ihnen steuern.
  • SVC 110 kann mit einem oder mehreren Hosts (z. B. Host 102 in 1) über die Hostschnittstelle 206 über ein Netzwerk-Fabric (z. B. Netzwerk-Fabric 104 in 1) gekoppelt werden und ist mit Speichervorrichtung(en) (z. B. Speichervorrichtungen 120 in 1) über die Speichervorrichtungsschnittstelle 208 über ein Zwischenverbindungs-Fabric (z. B. Zwischenverbindungs-Fabric 114 in 1) durch eine Zwischenverbindungs-Fabric-Schnittstelle 204 gekoppelt. In einigen Ausführungsformen kann die gesamte Kommunikation von der SVC 110 durch ein Zwischenverbindungs-Fabric über eine Zwischenverbindungs-Fabric-Schnittstelle 204 geleitet werden, einschließlich der Hostkommunikation und der Kommunikation mit Speichervorrichtungen, und die Hostkommunikation kann über eine mit dem Zwischenverbindungs-Fabric verbundene Speichernetzwerkschnittstelle (z. B. Schnittstelle 112 in 1) geleitet werden.
  • Der Speicher 210 kann Hochgeschwindigkeitsdirektzugriffsspeicher wie DRAM, SRAM, Double Data Rate (DDR) RAM oder andere Festkörperspeicher mit direktem Zugriff einschließen und kann nichtflüchtige Speicher wie eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen einschließen. Der Speicher 210 kann gegebenenfalls ein oder mehrere Speichervorrichtungen einschließen, die entfernt von der/den CPU(s) 202 angeordnet sind. Der Speicher 210, oder alternativ die nichtflüchtige(n) Speichervorrichtung(en) im Speicher 210, weist/weisen ein nicht-transitorisches computerlesbares Speichermedium auf.
  • In einigen Ausführungsformen speichert der Speicher 210, oder das nicht-transitorische computerlesbare Speichermedium von Speicher 210, die folgenden Programme, Module und Datenstrukturen oder eine Untergruppe oder eine Übermenge davon:
    • • Anforderungs-Handler 212 zum Empfangen und Verwalten von Anforderungen von anderen Systemen oder Subsystemen wie Lese-/Schreibanforderungen von einem Host;
    • • Dienstabbildungsmodul 214 zum Verwalten des Standorts von verteilten und/oder entladenen Diensten zwischen den Speichervorrichtungen in der Anordnung;
    • • Vorrichtungspuffermanager 216 zum Verwalten von Pufferressourcen zwischen den Speichervorrichtungen in der Anordnung:
    • • Datenlese-/-schreibmodul 218 zum Verwalten von Leseoperationen zwischen dem Host und den Speichervorrichtungen;
    • • RAID-Striping-Modul 220 zum Verwalten des RAID-Striping über die Speichervorrichtungen in der Anordnung;
    • • Speicherbereinigungsmodul 222 zum Verwalten der Speicherbereinigung über die Speichervorrichtungen in der Anordnung;
    • • Vorrichtungsinitialisierungsmodul 224 für das Initialisieren oder Neustarten einer oder mehrerer Speichervorrichtungen in der Anordnung nach einem Stromausfall oder einer anderen Unterbrechung
    • • Vorrichtungsneuaufbaumodul 226 für das Verwalten des Neuaufbaus einer ausgefallenen Speichervorrichtung, einschließlich verteilter Dienste und Speicherressourcen; und
    • • Zusatzdienstmodul 228.
  • Jedes der vorstehend identifizierten Elemente der SVC 110 kann in einem oder mehreren der vorstehend aufgeführten Speichervorrichtungen gespeichert sein und entspricht einem Satz von Anweisungen zum Ausführen einer vorstehend beschriebenen Funktion. Die vorstehend identifizierten Module oder Programme (d. h. Satz von Anweisungen) brauchen nicht als separate Softwareprogramme, Verfahren oder Module implementiert zu werden, und somit können verschiedene Teilgruppen dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig anders angeordnet werden. In einigen Ausführungsformen kann der Speicher 210 eine Teilgruppe der vorstehend identifizierten Module und Datenstrukturen speichern. Darüber hinaus kann Speicher 210 zusätzliche vorstehend nicht beschriebene Module und Datenstrukturen speichern. In einigen Ausführungsformen stellen die in Speicher 210 oder dem nicht-transitorichen, computerlesbaren Speichermedium von Speicher 210 gespeicherten Programme, Module und Datenstrukturen Anweisungen für die Implementierung einiger der nachstehend beschriebenen Verfahren bereit. In einigen Ausführungsformen können einige oder alle dieser Module mit spezialisierten Hardwareschaltungen implementiert sein, die einen Teil oder die gesamte Modulfunktionalität subsumieren.
  • In einigen Ausführungsformen kann der Anforderungs-Handler 212 so konfiguriert sein, dass er Befehle von einem Host (z. B. Host 102 in 1) über die Host-Schnittstelle 206 empfängt, wie Host-Lese- und Host-Schreibbefehle. In einigen Ausführungsformen kann der Anforderungs-Handler 212 andere Befehle über den Anforderungs-Handler 212 empfangen, wie Datenlöschbefehle und/oder Befehle im Zusammenhang mit Speicherbereinigung, Datenwiederherstellung und anderen Funktionen. Der Anforderungs-Handler 212 kann Befehle von anderen Systemen oder Subsystemen als dem Host empfangen, wie von einer oder mehreren der Speichervorrichtungen in der Anordnung. In einigen Ausführungsformen kann der Anforderungs-Handler 212 Datenverwaltungsanforderungen von Datenverwaltungsdiensten empfangen, die in anderen Systemen oder Subsystemen gehostet werden, einschließlich anderer Komponenten der SVC 110. Zum Beispiel kann das Speicherbereinigungsmodul 222, das Vorrichtungsinitialisierungsmodul 224 und/oder das Vorrichtungsneuaufbaumodul 226 Datenverwaltungsoperationen basierend auf Benutzereingaben, Systemereignissen, geplanten Wartungsarbeiten und/oder anderen Auslösern initiieren. Diese Module können eine Anforderung an den Anforderungs-Handler 212 für den Zugriff auf gehostete Dienste auf einer oder mehreren Speichervorrichtungen 120 senden.
  • In einigen Ausführungsformen kann der Anforderungs-Handler 212 einen Lesebefehl vom Host empfangen. Der Lesebefehl kann beispielsweise einen Bereich von logischen Host-Blockadressen (Host LB As) identifizieren, die in den Speichervorrichtungen 120 des Datenspeichersystems 100 gespeichert sind und von denen der Host die Übertragung von Daten an eine Host-Datenposition anfordert, wie einen Lesepuffer in Host 102. Der Anforderungs-Handler 212 kann einen Schreibbefehl vom Host empfangen. Zum Beispiel kann der Schreibbefehl eine Schreibdatenposition, die Menge der zu schreibenden Daten und einen Bereich von Host-LBs identifizieren, in den die Daten geschrieben werden sollen. In einigen Ausführungsformen können Schreibbefehle empfangen werden, die einer definierten Seitengröße entsprechen, die sich an die Medienprogrammierungsgrößen anpasst, wie 4 KB-Seiten.
  • In einigen Ausführungsformen kann das Dienstabbildungsmodul 214 eine oder mehrere Tabellen oder Funktionen zur Identifizierung eines oder mehrerer ausgelagerter oder verteilter Dienste in Speichervorrichtungen 120 einschließen. Zum Beispiel kann das Dienstabbildungsmodul 214 eine oder mehrere von 120 Speichevorrichtungen identifizieren, die Datenverwaltungsoperationen hosten, wie Host-FTL-Abfrage, Host-FTL-Aktualisierungen, Paritäts-Host-FTL-Aktualisierungen, Host-FTL-Initialisierung, Host-FTL-Neuaufbau, Puffer-zu-Puffer-Kopie, Puffer-zu-Puffer-Codierung, Speichervorrichtungsprotokollzugriff und/oder Unterstützung der Speicherbereinigung wie LBA-Protokollfilterung oder Datenverschiebung. In einigen Ausführungsformen kann das Dienstabbildungsmodul 214 eine Speichervorrichtungskennungs- (ID) .1 (auch als Vorrichtungsvirtualisierungstabelle bezeichnet) einschließen, um zu ermitteln, welche der Speichervorrichtungen 120 den für einen bestimmten Befehl oder eine Datenverwaltungsfunktion benötigten Dienst beherbergt. Als Reaktion auf den Empfang einer Host-Lese-/Schreibanforderung muss die SVC 110 zum Beispiel möglicherweise auf den Host-LBA A zugreifen, um auf die Speicherplatzabbildungsinformationen der Speichervorrichtung mittels einer Host-FTL-Abrufoperation zuzugreifen.
  • In einigen Ausführungsformen kann die SVC 110 möglicherweise keine Host-LBA für die Speicherplatzabbildungsinformationen der Speichervorrichtung enthalten, aber das Dienstabbildungsmodul 214 bietet möglicherweise eine Funktion zum Bestimmen, welche der Speichervorrichtungen 120 dies tut. Beispielsweise können die Host-FTL-Abbildungsinformationen für die Speicheranordnung über mehrere Speichervorrichtungen verteilt sein, und das Dienstabbildungsmodul 214 kann auf die Speichervorrichtungs-ID-Abbildung 214.1 zugreifen, um zu ermitteln, welche der Speichervorrichtungen 120 den relevanten Abschnitt der Host-FTL-Abbildungsinformationen beherbergt. In einigen Ausführungsformen kann eine feste Funktion oder Berechnung, wie Modulo-Mathematik, vom Dienstabbildungsmodul 214 verwendet werden, um die Speichervorrichtungs-ID der Speichervorrichtung mit Diensten zu bestimmen, die für den verarbeiteten Befehl relevant sind. Die Speichervorrichtungs-ID kann von der SVC 110 verwendet werden, um mit den ausgelagerten oder verteilten Diensten in Speichervorrichtungen 120 zu kommunizieren und diese zu steuern. Die Speichervorrichtung, die die relevanten Host-FTL-Dienste enthält und durch die Speichervorrichtung-ID identifiziert wird, kann für jede Dienstanforderung als ein Dienst-Host oder als eine Ziel-Dienst-Host-Speichervorrichtung bezeichnet werden.
  • In einigen Ausführungsformen kann der Vorrichtungspuffermanager 216 die SVC 110 in die Lage versetzen, persistenten Speicher, wie NVM-Steuerungsspeicherpuffer, über Speichervorrichtungen 120 hinweg zu nutzen, um Host-Datenübertragungen und andere Datenverwaltungsfunktionen zu verwalten. Zum Beispiel kann jede der Speichervorrichtungen 120 eine Vielzahl von Speichervorrichtungen einschließen, die über entfernten Direktspeicherzugriff (RDMA) adressierbar sind, und der Vorrichtungspuffermanager 216 kann Pufferplatz für Host-Datenübertragungen und andere Datenverwaltungsfunktionen zuweisen.
  • In einigen Ausführungsformen kann der Vorrichtungspuffermanager 216 eine Pufferzuweisungstabelle 216.1 zum Verwalten der Pufferverwendung zwischen Speichervorrichtungen 120 einschließen. Wenn beispielsweise Host-Schreibanforderungen verarbeitet werden, stellt der Puffermanager 216 eine Logik zur Verfügung, um zu bestimmen, wie Host-Daten über die Puffer in verschiedenen Speichervorrichtungen 120 hinweg serialisiert werden, basierend auf den Daten der aktuellen und/oder früheren Verwendung in der Pufferzuweisungstabelle 216.1. Die vom Puffermanager 216 verwendeten Algorithmen können RAI D-Konfigurationen, Lastausgleich, Zuweisung von Speicherkapazität, Eingabe/Ausgabe- (E/A) Effizienz und Überlegungen zur Datenzuverlässigkeit implementieren, um die Nutzung der Puffer zu ordnen. In einigen Ausführungsformen kann der Puffermanager 216 auch für die Pufferzuweisung zur Speicherbereinigung, Datenwiederherstellung und/oder für andere Funktionen verwendet werden.
  • Der Vorrichtungspuffermanager 216 kann Pufferplätze in Speichervorrichtungen 120 identifizieren und Pufferzugriffsbefehle an eine oder mehrere RDMA-Engines erteilen, um Datenübertragungen zu initiieren. In einigen Ausführungsformen führt der Vorrichtungspuffermanager 216 ein Protokoll der Pufferzuweisungen über Speichervorrichtungen 120 hinweg, wie in der Pufferzuweisungstabelle 216.1, und gibt Statusbenachrichtigungen an Speichervorrichtungen 120 aus, die sich darauf beziehen, welche Puffer bestimmten Host-FTL-Diensten zugewiesen sind und welche Puffer Speichervorrichtungen 120 zur lokalen Verwendung zur Verfügung stehen. In einigen Ausführungsformen kann der Vorrichtungspuffermanager 216 Pufferbefehle an die Speichervorrichtungen 120 ausgeben, um die Pufferverwendung durch die SVC 110, Datenverwaltungsoperationen, verteilte Dienste und/oder die Verwendung durch Peer-Speichervorrichtungen zu verwalten.
  • In einigen Ausführungsformen kann der Vorrichtungspuffermanager 216 Pufferspeicher für eine Reihe kleinerer Host-Lese- oder Host-Schreiboperationen (z. B. 4 K-Blockschreiboperationen) zuweisen, um einen Pufferspeicherplatz zu füllen, der einer bevorzugten Granularität einer Zielspeichervorrichtung entspricht, wie z. B. 96 K- oder 192 K-Multiebenenseiten. Zum Beispiel können zugewiesene Host-Schreiboperationen serialisiert oder anderweitig zugewiesen werden, bis der Pufferplatz voll ist, und dann vom Pufferplatz auf das Speichermedium/die Speichermedien geschrieben werden. In einigen Ausführungsformen kann der Vorrichtungspuffermanager 216 einen Pufferausräumbefehl 216.2 einschließen. Der Pufferausräumbefehl 216.2 kann an eine oder mehrere der Speichervorrichtungen 120 gesendet werden, damit die Zielspeichervorrichtung den Inhalt eines oder mehrerer Puffer auf ein Medium/mehrere Medien schreibt und diese Puffer zur späteren Verwendung löscht.
  • In einigen Ausführungsformen kann das Datenlese-/schreibmodul 218 eine Reihe von Operationen ausführen, um die Ausführung eines Host-Lesebefehls oder Host-Schreibbefehls zwischen Speichervorrichtungen 120 und Host 102 zu koordinieren. Wenn ein Host-Lese-/Schreibbefehl vom Anforderungs-Handler 212 empfangen wird, kann dieser das Datenlese-/-schreibmodul 218 initiieren. Das Datenlese-/-schreibmodul 218 kann das Dienstabbildungsmodul 214 verwenden, um eine Speichervorrichtungs-ID auf der Grundlage der im Host-Lese-/-schreibbefehl identifizierten Host-LBA zu identifizieren. Zum Beispiel kann ein Daten-Lese-/Schreibmodul einen FTL-Abfragebefehl verwenden, um auf die FTL-Abfrageoperation zuzugreifen, die auf der Host-Speichervorrichtung des Ziel-Dienstes gehostet wird. Die SVC kann eine Antwort von der Ziel-Host-Speichervorrichtung empfangen, die die Speichervorrichtungs-ID und den Speicherplatz für die Zielspeichervorrichtung mit den angeforderten Daten im Host-Lese-/-schreibbefehl identifiziert.
  • Das Daten-Lese-/Schreibmodul 218 kann den Vorrichtungspuffermanager 216 verwenden, um eine Pufferzuweisung in einer oder mehreren Zielspeichervorrichtungen anzufordern und einen oder mehrere Lese- oder Schreibbefehle verwenden, um Datenübertragungen zwischen dem Medium oder den Medien der Zielspeichervorrichtung, dem zugewiesenen Übertragungspufferplatz und einem Host-Datenort zu initiieren. Zum Beispiel kann ein Pufferzugriffsbefehl an eine RDMA-Engine gesendet werden, die in der Lage ist, die Lesedaten im zugewiesenen Pufferraum an die im Host-Lesebefehl enthaltene Host-Adresse zu schieben (und/oder zu ziehen). Eine RDMA-Engine kann in der Zielspeichervorrichtung, im Host oder an einer anderen Stelle im Kommunikations-Fabric und in Schnittstellen, wie einer Netzwerkschnittstellenkarte, die Datenübertragung zwischen dem Puffer in der Speichervorrichtung und dem Host initiieren.
  • Für Host-Schreiboperationen kann ein FTL-Aktualisierungsbefehl von der SVC 110 unter Verwendung der Speichervorrichtungs-ID an die Ziel-Dienst-Host-Speichervorrichtung gesendet werden. Es ist zu beachten, dass die Speichervorrichtung, auf der sich der relevante Abschnitt der Host-LBA-Abbildung befindet, möglicherweise nicht die gleiche ist wie die Zielspeichervorrichtung für den Schreibbefehl, sodass sich die Ziel-Dienst-Host-Speichervorrichtung für den FTL-Aktualisierungsbefehl von der Zielspeichervorrichtungs-ID unterscheiden kann. Die SVC 110 kann eine Antwort von der Ziel-Host-Speichervorrichtung erhalten, wenn der relevante Abschnitt der verteilten FTL-Abbildung aktualisiert wurde.
  • Wenn die Datenübertragung zwischen der Zielspeichervorrichtung und dem Host abgeschlossen ist und die FTL-Abbildung aktualisiert wurde (falls erforderlich), kann die SVC 110 einen Lesen oder Schreiben abgeschlossen Status an den Host senden. In einigen Ausführungsformen, die RAID- oder Paritätsfehler-Codierung implementieren, können die verteilten Dienste zum Aktualisieren der FTL-Abbildung auch RAID- und/oder Paritätsdatenübertragungen von Laufwerk zu Laufwerk und damit verbundene FTL-Abbildungsaktualisierungen implementieren.
  • In einigen Ausführungsformen kann SVC 110 das RAID-Striping zwischen Speichervorrichtungen 120 auf der Grundlage einer ausgewählten RAID-Konfiguration koordinieren. Zum Beispiel kann das RAID-Striping-Modul 220 die Schreibserialisierung und die Verwendung des Vorrichtungspuffermanagers 216 zur Zuweisung von Schreiboperationen in RAID-Streifen unterstützen. Das RAID-Striping-Modul 220 kann jeden Abschnitt eines RAID-Streifens an Speichervorrichtungen 120 übergeben. In einigen Ausführungsformen kann nach dem Schreiben eines ganzen Streifens der Pufferausräumbefehl verwendet werden, um den gesamten Streifen aus ihren jeweiligen Puffern auf das Speichermedium oder die Speichermedien zu schreiben.
  • In einer beispielhaften RAID-Konfiguration kann es eine oder mehrere RAID-Gruppen im Speichersystem geben, und jede beliebige Speichervorrichtung kann an einer oder mehreren RAID-Gruppen teilnehmen. Die Speichervorrichtungs-FTL einzelner Speichervorrichtungen kann möglicherweise kein RAID zwischen Speichermedien innerhalb der Speichervorrichtung implementieren, selbst wenn die Speichervorrichtung mehrere diskrete Medieneinheiten, wie NVM-Chips oder Pakete, einschließt. In einigen Ausführungsformen sind die RAID-Streifen über Speichervorrichtungs-Speicherplätze (z. B. Speichervorrichtung LB As) von verschiedenen Speichervorrichtungen mit einer Streifentiefe, die der Granularität des Vorrichtungspeicherplatzes oder der Größe der Speichereinheiten entspricht, wie eine Multiebenen-Programmiergröße. Zum Beispiel dürfen sich keine zwei Seiten in einem RAID-Streifen auf der gleichen Medieneinheit und keine zwei Seiten im RAID-Streifen auf der gleichen Speichervorrichtung befinden. In einer Multiebenen-Programmierimplementierung kann der RAID-Streifen anfangs über Puffer aus verschiedenen Speichervorrichtungen aufgebaut werden, sodass jeder Puffer genau über eine Seite abgebildet wird, die der Multi-Ebenen-Programmierung entspricht.
  • In einigen Ausführungsformen wird die Paritätsberechnung durch Verschieben von Daten aus dem Puffer der Zielspeichervorrichtung auf eine Paritätsspeichervorrichtung unter Verwendung einer RDMA-Engine für eine Übertragung von Puffer zu Puffer durchgeführt. Wenn die Daten auf die Paritätsspeichervorrichtung verschoben werden, wird eine neue Parität in Abhängigkeit von der aktuellen Parität und den neuen Daten berechnet, und die neue Parität wird wieder in den Puffer der Paritätsvorrichtung gelegt. In einigen Ausführungsformen kann dies in einem einzigen atomaren RDMA-Operation zwischen den beiden Speichervorrichtungen ohne Eingreifen der SVC 110 erfolgen.
  • In einigen Ausführungsformen kann die SVC 110 die Speicherbereinigung unter Verwendung einer Speichervorrichtung 120 unter Verwendung des Speicherbereinigungsmoduls 222 koordinieren. Wenn Daten seitenweise auf ein Speichermedium geschrieben werden, das Speichermedium jedoch blockweise gelöscht wird, können Seiten auf dem Speichermedium ungültige (z. B. veraltete) Daten enthalten, aber diese Seiten können nicht überschrieben werden, bis der gesamte Block, der diese Seiten enthält, gelöscht ist. Um auf die Seiten mit ungültigen Daten zu schreiben, können die Seiten (falls vorhanden) mit gültigen Daten in diesem Block gelesen und neu in einen neuen Block geschrieben werden, und der alte Block wird gelöscht (oder zum Löschen in eine Warteschlange gestellt). Dieser Prozess wird als Speicherbereinigung bezeichnet. Nach der Speicherbereinigung enthält der neue Block die Seiten mit gültigen Daten und kann freie Seiten aufweisen, die für das Schreiben neuer Daten zur Verfügung stehen, und der alte Block kann gelöscht werden, sodass er für das Schreiben neuer Daten zur Verfügung steht. Eine Vielzahl von Speicherbereinigungsalgorithmen kann zum Auswählen der zu verschiebenden Blöcke verwendet werden.
  • In einigen Ausführungsformen kann das Speicherbereinigungsmodul 222 Speicherbereinigungsoperationen unter Verwendung eines oder mehrerer Pufferspeicher und/oder der Verarbeitungskapazität von 120 Speichervorrichtungen durchführen. Zum Beispiel kann das Speicherbereinigungsmodul 222 einen LBA-Filterbefehl verwenden, um bestimmte Speicherblöcke auf den Speichervorrichtungen 120 als Kandidaten für die Speicherbereinigung oder andere Datenverwaltungsoperationen zu identifizieren. Das Speicherbereinigungsmodul 222 kann einen Datenverschiebungsbefehl verwenden, um Blöcke zu verschieben, die durch den von ihm implementierten Speicherbereinigungsalgorithmus zum Überschreiben identifiziert wurden. In einigen Ausführungsformen kann das Speicherbereinigungsmodul 222 auch Nutzungsinformationen für die Speichervorrichtungen 120 sammeln und verfolgen.
  • In einigen Ausführungsformen kann die SVC 110 die Initialisierung von Speichervorrichtungen 120 unter Verwendung einer Speichervorrichtung 224 koordinieren. Zum Beispiel muss nach einer Dienstunterbrechung für ein oder mehrere Speichervorrichtungen 120 möglicherweise jede betroffene Speichervorrichtung initialisiert werden. Betriebsunterbrechungen können Stromunterbrechungen des Systems und/oder einzelner Speichervorrichtungen, Kommunikationsverluste zwischen einem oder mehreren Systemen oder Subsystemen, Vorrichtungsausfall und -austausch usw. einschließen. Das Vorrichtungsinitialisierungsmodul 224 kann für die Koordination zwischen den zu initialisierenden Speichervorrichtungen verantwortlich sein, um sicherzustellen, dass die Daten, einschließlich der Daten auf dem Speichermedium, der Pufferdaten und der logischen Abbildungsdaten, zwischen den Speichervorrichtungen konsistent sind und dass das Beenden unterbrochener Operationen oder Warteschlangen anstehender Operationen nicht verloren geht. Gegebenenfalls können Operationen neu gestartet und/oder Daten von einer anderen Speicherstelle, in einigen Fällen von einer Peer-Speichervorrichtung, gespiegelt werden, um die Anordnung wieder in einen konsistenten Zustand zu versetzen.
  • In einigen Ausführungsformen kann das Vorrichtungsinitialisierungsmodul 224 einen Host-FTL-Initialisierungsbefehl an eine oder mehrere betroffene Speichervorrichtungen für eine Initialisierungsoperation verwenden. Beispielsweise kann der Host-FTL-Initialisierungsbefehl ein Segment der Host-FTL-Abbildungstabelle initialisieren, die von der Dienst-Host-Speichervorrichtung gehostet wird. Der Befehl kann die Speichervorrichtung anweisen, eine Reihe von Protokolleinträgen zu verarbeiten, um die Host-FTL-Abbildungstabelle zu aktualisieren.
  • In einigen Ausführungsformen kann die SVC 110 den Neuaufbau von ausgefallenen Speichervorrichtungen innerhalb der Anordnung unter Verwendung des Vorrichtungsneuaufbaumoduls 226 koordinieren. Wenn zum Beispiel eine Speichervorrichtung innerhalb einer RAID-Gruppe ausfällt und nicht wiederhergestellt werden kann, kann die Speichervorrichtung ersetzt und neu aufgebaut oder auf einer oder mehreren andere Speichervorrichtungen neu aufgebaut werden, wie ein für die Anordnung verfügbarer Hot-Spare. Der Neuaufbau von Vorrichtungen kann sowohl den Neuaufbau von RAID-Datenstreifen gemäß der RAID-Konfiguration als auch gespiegelte Daten und/oder Paritätsdaten, die auf den verbleibenden Speichervorrichtungen in der Anordnung verfügbar sind, sowie den Neuaufbau verteilter Dienste und damit zusammenhängender Daten einschließen.
  • In einigen Ausführungsformen können Abschnitte der Host-FTL-Abbildungstabelle, die auf der ausgefallenen Speichervorrichtung gehostet wurden, auf einer neuer Speichervorrichtung oder einem neuen Speicherplatz auf einer vorhandenen Speichervorrichtung neu aufgebaut werden. In einigen Ausführungsformen kann die Host-FTL-Abbildungstabelle ihre eigene RAID-Konfiguration und Paritätsdaten haben, die auf die Speichervorrichtungen verteilt sind. Der Neuaufbau eines oder mehrerer Abschnitte einer Host-FTL-Abbildungstabelle für eine fehlende oder ausgefallene Vorrichtung kann das Senden eines Host-FTL-Neuaufbaubefehls an jede verbleibende Speichervorrichtung einschließen, der relevante Host-FTL-Abbildungsdaten und/oder Host-FTL-Abbildungsparitätsdaten für die fehlenden Abschnitte enthält. Zum Beispiel kann der neu aufgebaute Abschnitt der Host-FTL-Abbildungstabelle von der Speichervorrichtung an den SVC 110 zurückgegeben und dann an den neuen Speicherort gesendet werden, oder der neu aufgebaute Abschnitt kann durch eine Peer-to-Peer-Übertragung direkt an die neu aufgebaute Speichervorrichtung oder den neuen Speicherort gesendet werden.
  • In einigen Ausführungsformen kann die SVC 110 eine beliebige Anzahl von Zusatzdienstmodulen (z. B. Zusatzdienstmodul 228) einschließen, die zusätzlichen Datenverwaltungsdiensten oder -operationen entsprechen. Die in der SVC 110 gezeigten beispielhaften Datenverwaltungsdienste sind möglicherweise nicht abschließend die Datenverwaltungsdienste oder -operationen, die auf Peer-Speichervorrichtungen verteilt sein können und von der SVC 110 oder einer anderen Komponente profitieren, die ein gewisses Maß an Koordination zwischen den Speichervorrichtungen bietet.
  • Obwohl 2 die SVC 110 als architektonisch isolierte Speichersteuerung zeigt, ist 2 eher als funktionelle Beschreibung der verschiedenen Merkmale gedacht, die in einem Verwaltungsmodul vorhanden sein können, als als strukturelles Schema der hierin beschriebenen Ausführungsformen. In der Praxis, und wie von Fachleuten anerkannt werden wird, könnten die getrennt dargestellten Elemente kombiniert und einzelne Elemente getrennt werden. In einigen Ausführungsformen können eine oder mehrere der Operationen und/oder Module der SVC 110 stattdessen von anderen Komponenten im Datenspeichersystem 100 ausgeführt und/oder implementiert werden. In einigen Ausführungsformen können eine oder mehrere der Operationen und/oder Module der SVC 110 stattdessen von einer oder mehreren NVM-Steuerungen 130 ausgeführt und/oder implementiert werden. Beispielsweise kann die NVM-Steuerung 130 der Speichervorrichtung 120.1 eine Datenverwaltungslogik (z. B. ähnlich wie ein oder mehrere Module im Speicher 210 in 2) zum Verwalten der Datenlebensdauer von Speicherblöcken eines oder mehrerer der Speichervorrichtungen 120.1 bis 120.n einschließen. In einigen Ausführungsformen können die Module im Speicher 210 ganz oder teilweise durch Software, Hardware, Firmware oder eine beliebige Kombination davon im Datenspeichersystem 100 implementiert sein.
  • In einigen Ausführungsformen kann die SVC 110 durch ein Hostsystem (z. B. Host 102, 1) implementiert werden, das auch Daten in der Vielzahl von Speichervorrichtungen 120 speichert und auf sie zugreift. Darüber hinaus kann in einigen Ausführungsformen die SVC 110 durch eine Speichervorrichtung (z. B. Speichervorrichtung 120.1, 1) in der Multivorrichtungsspeicherumgebung implementiert werden. Noch weiterhin kann die SVC 110 in einigen Ausführungsformen an anderer Stelle in der Kommunikationsstruktur und den Schnittstellen des Datenspeichersystems 100 implementiert sein. Zum Beispiel kann SVC 110 als Teil der Zwischenverbindungs-Fabric 114, der Schnittstelle 112 oder der host-seitigen Netzwerk-Fabric 104 implementiert werden.
  • In einigen Ausführungsformen, wie in 3 dargestellt, schließt eine Speichervorrichtung 120.1 die Funktionen einer NVM-Steuerung 130.1 und verteilte gehostete Dienste 322 unter Verwendung gemeinsamer Rechenressourcen ein, wie eine oder mehrere Verarbeitungseinheiten (CPUs 302), die hierin manchmal als CPU, Prozessoren oder Hardware-Prozessoren bezeichnet werden und manchmal unter Verwendung von Mikroprozessoren, Mikrocontrollern oder dergleichen implementiert werden, die so konfiguriert sind, dass sie Befehle in einem oder mehreren Programmen ausführen (z. B. die Module im Speicher 320). In einigen Ausführungsformen werden die eine oder mehreren CPUs 302 im Rahmen der Funktion der Speichervorrichtung 120 und in einigen Fällen auch darüber hinausgehend geteilt. Die Module im Speicher 320, die von der CPU 302 ausgeführt werden, können mit der Zwischenverbindungs-Fabric-Schnittstelle 301, der RDMA-Schnittstelle 304, der NVM-Schnittstelle 308, der Speicherschnittstelle 310 und einer beliebigen Anzahl von Zusatzmodulen wie der Löschcodierungs-Engine 314 und der Fehlerkorrektur-Engine 316 gekoppelt werden, um den Betrieb dieser Komponenten zu koordinieren. In einigen Ausführungsformen können die Komponenten der Speichervorrichtung 120.1 durch einen oder mehrere Kommunikationsbusse 300 miteinander verbunden sein. In einigen Ausführungsformen können CPU 302, Speicher 320, NVM-Schnittstelle 308 und eine beliebige Anzahl von Zusatzmodulen als NVM-Steuerung 130.1 verpackt sein, der in einer anwendungsspezifischen integrierten Schaltung (ASIC), einer feldprogrammierten Gate-Anordnung (FPGA) oder einer ähnlichen Architektur implementiert ist.
  • Die Speichervorrichtung 120.1 kann eine Vielfalt von lokalen Speicherressourcen und lokalen Rechenressourcen einschließen. In einigen Ausführungsformen können lokale Ressourcen Komponenten einschließen, die in die Speichervorrichtung 120.1 integriert sind und mit der Anzahl der Speichervorrichtungen skalieren können. Beispielhafte lokale Speicherressourcen können Speicher 320 (z. B. der Betriebsspeicher der NVM-Steuerung 130.1), Pufferspeicher 306 (z. B. über eine fernadressierbare Schnittstelle verfügbarer, fernadressierbarer Speicher) und FTL-Speicher 312 (eine spezialisierte Speicherkomponente, auf die die NVM-Steuerung 130.1 zugreifen kann, die aber nicht unbedingt denselben Bus, dieselbe Platine oder dasselbe Paket teilt) einschließen. In einigen Ausführungsformen können ein oder mehrere Speichermedien, wie z. B. NVM-Vorrichtungen 140, lokale Speicherressourcen für Datenverwaltungsfunktionen bereitstellen, die sich jedoch von Speicherorten für Hostdaten unterscheiden können. Beispielhafte lokale Rechenressourcen können CPU 302 (z. B. der Betriebsprozessor der NVM-Steuerung 130.1), die Löschcodierungs-Engine 314, die Fehlerkorrektur-Engine 316 und andere spezialisierte Verarbeitungssysteme einschließen. In einigen Ausführungsformen können eine oder mehrere Schnittstellen, wie z. B. die Zwischenverbindungs-Fabric-Schnittstelle 301 oder die RDMA-Schnittstelle 304, auch Speicher- und/oder Rechenressourcen einschließen oder nutzen und Teil der verfügbaren lokalen Ressourcen der Speichervorrichtung 120.1 sein.
  • In einigen Ausführungsformen kann die RDMA-Schnittstelle 304 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine sein, die den Fernzugriff auf Pufferspeicher 306 zur Datenverwaltung ermöglicht. Dies kann den lokalen Direktspeicherzugriff (DMA) auf Pufferspeicher 306 für CPU 302 oder andere Komponenten der NVM-Steuerung 130.1 einschließen. Die RDMA-Engines der RDMA-Schnittstelle 304 können es der Speichervorrichtung 120.1 ermöglichen, Daten vom/zum Pufferspeicher 306 und zu/von Speicherplätzen in anderen Speichervorrichtungen, Speichersteuerungen (z. B. SVC 110) oder Servern (z. B. Host 102) zu schieben oder zu ziehen.
  • In einigen Ausführungsformen kann das Löschcodierungs-Engine Modul 314 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine sein, um exklusiv-ODER-Berechnungen durchzuführen oder eine andere Löschcodierungsoperation zu implementieren. Die Löschcodierungs-Engine 314 kann mehrere im Speicher 320 gespeicherte Funktionen und/oder die XOR- oder andere Löschcodeverarbeitung von Daten unterstützen, die zum oder vom Pufferspeicher 306, mit oder ohne RDMA-Schnittstelle 304, und/oder FTL-Speicher 312 übertragen werden.
  • In einigen Ausführungsformen kann die Fehlerkorrektur-Engine 316 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine zur Fehlerkontrolle für Daten sein, die auf NVM-Vorrichtungen 140 geschrieben und von diesen gelesen werden. Zum Beispiel kann eine Fehlerkorrektur-Engine 316 ein Fehlerüberwachungsmodul einschließen, um die Anzahl der nicht korrigierbaren Fehler zu begrenzen, die versehentlich bei Schreiboperationen in den Speicher oder bei Leseoperationen von dem Speicher in die Daten eingeführt werden, wie ein Fehlerkorrekturcode- (ECC) Codierer und -Decodierer.
  • Zusätzliche Module (nicht dargestellt), die eine oder mehrere Funktionen der Speichervorrichtung 120 unterstützen, können an CPU 302, RDMA-Schnittstelle 304, NVM-Schnittstelle 308, Löschcodierungs-Engine 314, FTL-Speicher 312 und Speicher 320 angeschlossen werden. In einigen Ausführungsformen wird ein zusätzliche Modul bzw. werden zusätzliche Module in Software von der CPU 302 ausgeführt; in anderen Ausführungsformen wird ein zusätzliches Modul bzw. werden zusätzliche Module ganz oder teilweise unter Verwendung spezieller Schaltungen (z. B. zur Durchführung von Codierungs- und Decodierungsfunktionen) implementiert.
  • In einigen Ausführungsformen empfängt die SVC 110 während einer von einem Host 102 eingeleiteten Schreiboperation einen Host-Schreibbefehl (z. B. in einem Satz von einem oder mehreren Host-Schreibbefehlen) über die Schnittstelle 112 (1), übersetzt diesen Host-Schreibbefehl in einen Schreibbefehl, der manchmal als übersetzter Befehl oder übersetzter Schreibbefehl bezeichnet wird und zur Ausführung durch eine Datenspeichervorrichtung 120 geeignet ist, und sendet den übersetzten Befehl an eine oder mehrere Datenspeichervorrichtungen, die einer oder mehreren vom Host-Schreibbefehl angegebenen Adressen entsprechen, einer Zielspeichervorrichtung.
  • In einigen Speichersystemen empfängt eine Speichersteuerung über die Schnittstelle 112 auch Daten, die in der einen oder den mehreren Datenspeichervorrichtungen gespeichert werden sollen, die der einen oder den mehreren durch den Host-Schreibbefehl angegebenen Adressen entsprechen. Eine entsprechende Datenspeichervorrichtung empfängt die in ihren NVM-Vorrichtungen 140.1.1-140. 1.n zu speichernden Daten oder einen Teil der zu speichernden Daten von der Speichervorrichtung über die Zwischenverbindungs-Fabric 114. Die von der Speichervorrichtung empfangenen Daten können codiert oder anderweitig verarbeitet und der Speicher-NVM-Schnittstelle 308 bereitgestellt werden, die die Daten je nach Art des verwendeten Speichermediums an die NVM-Vorrichtungen 140.1 überträgt. In der Speichervorrichtung 120 können die RDMA-Schnittstelle 304 und der Pufferspeicher 306 in Verbindung mit der Koordination von der SVC 110 es dem Host 102 ermöglichen, die im Host-Schreibbefehl zu speichernden Daten an den Pufferspeicher 306 in der Speichervorrichtung 120 zu senden, ohne dass sie die SVC 110 oder eine andere Speichersteuerung passieren.
  • In einigen Ausführungsformen wird eine Leseoperation eingeleitet, wenn Host 102 einen Host-Lesebefehl (z. B. in einem Satz von einem oder mehreren Host-Lesebefehlen) an die SVC 110 sendet, die den empfangenen Host-Lesebefehl in einen Lesebefehl übersetzt (z. B, in einen Datenspeichervorrichtungsbefehl auf niedrigerer Ebene, der hier manchmal als übersetzter Befehl oder übersetzter Lesebefehl bezeichnet wird, der zur Ausführung durch eine Datenspeichervorrichtung 120 geeignet ist) und den übersetzten Lesebefehl an eine Zieldatenspeichervorrichtung 120 sendet und Daten vom Speichermedium dieser Datenspeichervorrichtung (z. B. eine oder mehrere NVM-Vorrichtungen 140.1) anfordert. CPU 302 kann einen oder mehrere Lesezugriffsbefehle an die NVM-Vorrichtungen 140.1 über die NVM-Schnittstelle 308 in Übereinstimmung mit den durch den Host-Lesebefehl angegebenen Speicherplätzen (Adressen) senden.
  • Die NVM-Schnittstelle 308 kann die rohen Lesedaten (z. B. mit einem oder mehreren Codewörtern) zur Decodierung oder anderen Verarbeitung bereitstellen. Die Lesezugriffsbefehle entsprechen dem empfangenen Lesebefehl, aber der Lesebefehl wird von der Speichervorrichtung 120 in Lesezugriffsbefehle umgewandelt, um beispielsweise von den NVM-Vorrichtung 140.1 an eine oder mehrere bestimmte NVM-Vorrichtungen gerichtet zu werden. In einigen Ausführungsformen kann, wenn das Lesen nicht erfolgreich ist, die Speichervorrichtung 120 auf eine Anzahl von Abhilfemaßnahmen zurückgreifen oder eine Anzeige eines unauflösbaren Fehlerzustands bereitstellen.
  • In einigen Speichersystemen werden die Lesedaten von Speichervorrichtung 120 einer Speichersteuerung bereitgestellt, um sie dem Host 102 bereitzustellen. In der Speichervorrichtung 120 können die RDMA-Schnittstelle 304 und der Pufferspeicher 306 in Verbindung mit der Koordination von der SVC 110 es dem Host 102 ermöglichen, die im Host-Lesebefehl zu speichernden Daten vom Pufferspeicher 306 in der Speichervorrichtung 120 zu empfangen, ohne dass sie die SVC 110 oder eine andere Speichersteuerung passieren.
  • Wie vorstehend erläutert, werden ein oder mehrere Speichermedien (z. B. NVM-Vorrichtungen 140.1) in eine Anzahl adressierbarer und einzeln auswählbarer Blöcke unterteilt, und jeder Block wird optional (aber in der Regel) weiterhin in eine Vielzahl von Seiten und/oder Wortzeilen und/oder Sektoren, Speicherplätze definierter Speichereinheitsgrößen, unterteilt. Während das Löschen von Daten von einem Speichermedium auf Blockbasis erfolgt, wird in vielen Ausführungsformen das Lesen und Programmieren des Speichermediums auf einer kleineren Untereinheit eines Blocks durchgeführt (z. B. auf Seitenbasis, Wortzeilenbasis oder Sektorbasis).
  • In einigen Ausführungsformen besteht die kleinere Untereinheit eines Blocks aus mehreren Speicherzellen (z. B. Single-Level-Zellen (SLCs) oder Multi-Level-Zellen). In einigen Ausführungsformen wird die Programmierung auf einer ganzen Seite durchgeführt. In einigen Ausführungsformen hat ein Multi-Level-Zellen- (MLC) NAND-Flash in der Regel vier mögliche Zustände pro Zelle, was zwei Informationsbits pro Zelle ergibt. In einigen Ausführungsformen hat ein MLC-NAND weiterhin zwei Seitentypen: (1) eine untere Seite (manchmal als die schnelle Seite bezeichnet) und (2) eine obere Seite (manchmal als die langsame Seite bezeichnet). In einigen Ausführungsformen hat ein Triple-Level-Zellen- (TLC) NAND-Flash acht mögliche Zustände pro Zelle, was drei Informationsbits pro Zelle ergibt. Obwohl in der vorliegenden Beschreibung TLC, MLC und SLC als Beispiele verwendet werden, werden erfahrene Anwender erkennen, dass die hierin beschriebenen Ausführungsformen auf Speicherzellen ausgedehnt werden können, die mehr als acht mögliche Zustände pro Zelle aufweisen, was mehr als drei Informationsbits pro Zelle ergibt. In einigen Ausführungsformen wird das Codierungsformat des Speichermediums oder der Speichermedien (d. h. TLC, MLC oder SLC und/oder ein gewählter Datenredundanzmechanismus oder ECC-Code) erst dann gewählt, wenn die Daten tatsächlich auf das Speichermedium oder die Speichermedien geschrieben werden.
  • 3 ist ein Blockdiagramm, das verteilte Datenverwaltungs- und Lese-/Schreiboperationen veranschaulicht, die von der Speichervorrichtung 120 gemäß einigen Ausführungsformen abgewickelt werden. Die Speichervorrichtung 120 schließt die CPU 302 zum Ausführen von Modulen, Programmen und/oder Befehlen ein, die im Speicher 320 gespeichert sind und dadurch Verarbeitungsoperationen ausführen, den Speicher 320 (manchmal als NVM-Steuerungsspeicher oder Betriebsspeicher bezeichnet) und einen oder mehrere Kommunikationsbusse 300 zur Verbindung dieser Komponenten.
  • Der eine oder die mehreren Kommunikationsbusse 300 schließen gegebenenfalls Schaltlogik ein (manchmal als Chipsatz bezeichnet), die Systemkomponenten miteinander verbinden und die Kommunikation zwischen ihnen steuern. CPU 302 und Speicher 320 können über einen oder mehrere Kommunikationsbusse 300 an die Zwischenverbindungs-Fabric-Schnittstelle 301, die RDMA-Schnittstelle 304, den Pufferspeicher 306, die NVM-Schnittstelle 308, die NVM-Bausteine 140.1, die Speicherschnittstelle 310, den FTL-Speicher 312, die Löschcodierungs-Engine 314, die Fehlerkorrektur-Engine 316 und jedes zusätzliche Modul/jede zusätzlichen Module gekoppelt werden. In einigen Ausführungsformen können auch Schnittstellen-Hardware und/oder Protokolle zum Bereitstellen der Kommunikation über die Kommunikationsbusse 300 für die Kommunikation mit einem oder mehreren Komponenten vorhanden sein. Beispielsweise kann der FTL-Speicher 312 im RAM außerhalb eines FPGA, ASIC oder einer anderen Architektur, die CPU 302, Speicher 320 und andere Komponenten in 3 integriert, bereitgestellt werden, und es kann eine Speicherschnittstelle (310) für CPU 302 bereitgestellt werden, um Daten zum und vom FTL-Speicher 312 zu übertragen.
  • Der Speicher 320 kann Hochgeschwindigkeitsdirektzugriffsspeicher wie DRAM, SRAM, DDR RAM oder andere Festkörperspeicher mit direktem Zugriff einschließen und kann nichtflüchtige Speicher wie eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen einschließen. Der Speicher 320 kann gegebenenfalls ein oder mehrere Speichervorrichtungen einschließen, die entfernt von der CPU 302 angeordnet sind. In einigen Ausführungsformen können ein oder mehrere zusätzliche Speicher für bestimmte Funktionen bereitgestellt werden, wie FTL-Speicher 312 für Flash-Übersetzungsschicht- (FTL) Daten und/oder Pufferspeicher 306. Diese funktionalen Speicher können spezialisierte Verarbeitung, Hardwarebeschleunigung und/oder andere Ressourcen im Zusammenhang mit ihrer Funktion einschließen. In einigen Ausführungsformen können einer oder mehrere der FTL-Speicher 312 und/oder Pufferspeicher 306 Teil des Speichers 320 sein.
  • Der Speicher 320, oder alternativ die nichtflüchtige(n) Speichervorrichtung(en) im Speicher 320, weist/weisen ein nicht-transitorisches computerlesbares Speichermedium auf. In einigen Ausführungsformen speichert der Speicher 320, oder das nicht-transitorische computerlesbare Speichermedium von Speicher 320, die folgenden Programme, Module und Datenstrukturen oder eine Untergruppe oder eine Übermenge davon:
    • • Dienstanforderungs-Handler 321 zum Empfangen und Verwalten von Anforderungen von anderen Systemen oder Subsystemen, wie SVC 110 oder Peer-Speichervorrichtungen
    • • Gehostete FTL-Dienste 322 zum Verwalten von verteilten Datenverwaltungsoperationen (einschließlich logischer Adressabbildung) und damit verbundenen Prozessen und Anforderungen, wie Host-FTL-Abrufanforderungen von einem Host, einer Speichersteuerung oder einer anderen Speichervorrichtung (z. B. Host 102, SVC 110 oder Speichervorrichtungen 120);
    • • NVM-Manager 324 zum Verwalten von FTL-Daten von Speichervorrichtungen (einschließlich logischer Adressabbildung) und verwandten Prozessen und Anforderungen, wie Lese- und Schreiboperationen von Medien über die NVM-Schnittstelle 308 bis NVM 140.1.-140.1.n;
    • • Pufferzugriffsmodul 326 zum Überwachen der Inhalte und des Zugriffs auf die Pufferspeicher 306, die manchmal als persistente Speicherpuffer oder Steuerungsspeicherpuffer bezeichnet werden, durch die Speichervorrichtung 120 sowie Hosts, Speichersteuerungen und Peer-Speichervorrichtungen (z. B. Host 102, SVC 110 oder Speichervorrichtungen 120);
    • • verteiltes Lesemodul 328 zum Ausführen von Leseoperationen als Zielspeichervorrichtung, in Verbindung mit NVM-Manager 324 und Pufferzugriffsmodul 326;
    • • verteiltes Schreibmodul 330 zum Ausführen von Schreiboperationen als Zielspeichervorrichtung, in Verbindung mit NVM-Manager 324 und Pufferzugriffsmodul 326; und
    • • verteiltes Paritätsmodul 332 zum Ausführen von Paritätsschreiboperationen und verwandten Prozessen zum Berechnen von Paritäts- und zugehörigen Host-FTL-Aktualisierungen, in Verbindung mit der Löschcodierungs-Engine 314, NVM-Manager 324 und Pufferzugriffsmodul 326.
  • Jedes der vorstehend identifizierten Elemente kann in einem oder mehreren der vorstehend aufgeführten Speichervorrichtungen gespeichert sein, die zusammen den Speicher 320 bilden, und entspricht einem Satz von Anweisungen zum Ausführen einer vorstehend beschriebenen Funktion. Die vorstehend identifizierten Module oder Programme (d. h. Satz von Anweisungen) brauchen nicht als separate Softwareprogramme, Verfahren oder Module implementiert zu werden, und somit können verschiedene Teilgruppen dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig anders angeordnet werden. In einigen Ausführungsformen kann der Speicher 320 eine Teilgruppe der vorstehend identifizierten Module und Datenstrukturen speichern. Darüber hinaus kann Speicher 320 zusätzliche vorstehend nicht beschriebene Module und Datenstrukturen speichern. In einigen Ausführungsformen stellen die in Speicher 320 oder dem nicht-transitorischen, computerlesbaren Speichermedium von Speicher 320 gespeicherten Programme, Module und Datenstrukturen Anweisungen für die Implementierung von entsprechenden Operationen der nachstehend beschriebenen Verfahren bereit. In einigen Ausführungsformen können einige oder alle dieser Module mit spezialisierten Hardwareschaltungen implementiert sein, die einen Teil oder die gesamte Modulfunktionalität subsumieren.
  • In einigen Ausführungsformen kann der Anforderungs-Handler 321 einen adressierbaren Kommunikationskanal für den Empfang von Nachrichten von anderen Systemen oder Subsystemen wie Hosts, Speichersteuerungen und Peer-Speichervorrichtungen (z. B. Host 102, SVC 110 oder Speichervorrichtungen 120) einschließen. In einigen Ausführungsformen kann der Anforderungs-Handler 212 Datenverwaltungsbefehle oder -anforderungen empfangen, die durch den Speicher und die Rechenressourcen der Speichervorrichtung 120.1 allein oder in Verbindung mit Peer-Speichervorrichtungen und/oder der SVC 110 ausgeführt werden können. Zum Beispiel kann der Anforderungs-Handler 321 Host-FTL-Abrufanforderungen, Host-FTL-Aktualisierungsanforderungen, Paritäts-Host-FTL-Aktualisierungsanforderungen, Host-FTL-Initialisierungsanforderungen, Host-FTL-Neuaufbauanforderungen, Pufferzugriffsanforderungen, Puffer-zu-Puffer-Kopieranforderungen, Puffer-zu-Puffer-Codierungsanforderungen, Protokoll-Leseanforderungen, Protokollverarbeitungsanforderungen, LBA-Filteranforderungen, Datenverschiebungsanforderungen usw. empfangen. Der Dienstanforderungs-Handler 321 kann die empfangenen Anforderungen parsen und gehostete Dienste initiieren, fortsetzen oder stoppen. In einigen Ausführungsformen kann der Dienstanforderungs-Handler 321 Lese-, Schreib- und Paritätsoperationen auf der Grundlage entsprechender Anforderungen initiieren, die einen oder mehrere gehostete Dienste 322 nutzen können oder nicht.
  • In einigen Ausführungsformen können die gehosteten Dienste 322 Abschnitte von FTL-Diensten einschließen, die andernfalls an der Speichersteuerung oder am Host ausgeführt worden wären, wie der Zugriff auf und die Wartung der logischen .1 des Host-FTL, die im FTL-Speicher 312 gespeichert ist. Zum Beispiel kann die logische .1 der Host-FTL einen Abschnitt einer vollständigen logischen Abbildung für alle Speichervorrichtungen im Datenspeichersystem 100 einschließen. In einigen Ausführungsformen wird die vollständige logische Abbildung in Abschnitten zugewiesen, die auf Speichervorrichtungen 120 in ungefähr gleichen Abschnitten verteilt sind. Die logische Host-FTL-Abbildung 312.1 auf einer beliebigen Speichervorrichtung 120 kann Speicherorte auf dieser Speichervorrichtung 120 einschließen oder nicht. In einigen Ausführungsformen können Abschnitte der vollständigen logischen Abbildung nach dem Zufallsprinzip, sequentiell nach dem Round-Robin-Prinzip oder nach einem genaueren Zuweisungsschema zugewiesen werden, um Standards für Datenschutz, Leistung oder Kapazitätsauslastung zu unterstützen. In einigen Ausführungsformen wird jeder Abschnitt der vollständigen logischen Abbildung bei Ausfall einer Speichervorrichtung redundant auf zwei oder mehr Speichervorrichtungen gespeichert.
  • In einigen Ausführungsformen kann die logische Host-FTL-Abbildung 312.1 in einem dedizierten Abschnitt des FTL-Speichers 312 gehostet werden. Zum Beispiel kann der FTL-Speicher 312 ein DRAM sein, wobei ein Abschnitt für die FTL-Abbildung 312.2 der Speichervorrichtung und der Rest für die logische Host-FTL-Abbildung 312.1 bestimmt ist. Die logische Host-FTL-Abbildung 312.1 kann für die Speicherung von Segmenten der Abbildungsinformationen zwischen logischen Host-Blockadressen (LBA) und Speichervorrichtungs-LBA oder Medienspeicherplätzen verwendet werden. In einigen Ausführungsformen kann die vollständige logische Abbildung für alle Host-LBAs im Datenspeichersystem 100 in einer Host-FTL-Tabelle enthalten sein, und die logische Host-FTL-Abbildung 312.1 in einer beliebigen Speichervorrichtung 120 kann ein mathematisch bestimmter Abschnitt der Host-FTL-Tabelle sein, damit eine Host-FTL-Abrufanforderung an die richtige Ziel-Dienst-Host-Speichervorrichtung adressiert werden kann. Zum Beispiel können die gehosteten FTL-Dienste 322 in Speichervorrichtung 120 für die Host-LBAs 1-1000 verantwortlich sein, unabhängig davon, welche der Speichervorrichtungen 120.1-120.n die tatsächlichen Daten auf ihrem Medium oder ihren Medien hosten, und Host-FTL-Abfrageanforderungen für diese LBAs werden an die gehosteten FTL-Dienste 322 gerichtet.
  • In einigen Ausführungsformen kann die logische Host-FTL-Abbildung 312.1 nach Host-LBA-Speicherorten zugewiesen und/oder organisiert werden, die einer Host-Schreibgröße entsprechen, z. B. 4 K-Datenblöcke. Die FTL-Abbildung 312.2 der Speichervorrichtung kann nach LBA-Speicherorten für Medien zugewiesen und/oder organisiert werden, die einer Schreib- oder Programmiergröße des Mediums entsprechen, die ein größeres Vielfaches der Schreibgröße des Hosts ist. Die Programmiergröße des Mediums kann zum Beispiel auf eine Seitenprogrammiergröße eingestellt werden, wie eine Multiebenenseitengröße von 96 K oder 192 K. Daher kann die Host-Blockgröße um den Faktor 6, 12, 24, 48 oder mehr kleiner als die Medienblockgröße sein, je nach dem Verhältnis zwischen der Host-Schreibgranularität und der Seitenprogrammierungsgranularität.
  • Durch Erhöhen der Medienschreibgranularität kann die FTL-Abbildung 312.2 der Speichervorrichtung weniger FTL-Speicher 312 verwenden. Zum Beispiel kann die FTL-Abbildung 312.2 des Speichermediums weniger als 5 % des FTL-Speichers 312 relativ zum verbleibenden Speicherplatz für die logische Host-FTL-Abbildung 312.1 verwenden. In einigen Ausführungsformen kann dies Speichervorrichtungen ermöglichen, die zwischen herkömmlicher Host-Datenblockzuweisung (z. B. 4 K-Host-Schreiboperationen auf Speichermedienplätzen) und entladener Host-FTL mit reduziertem Speicher für die Speichervorrichtungs-FTL bei höherer Medienschreibgranularität (z. B. 96 K- oder 192 K-Medienschreiboperationen) umgeschaltet werden können, ohne die Hardware des FTL-Speichers 312 zu ändern.
  • In einigen Ausführungsformen kann die FTL-Abbildung 312.2 der Speichervorrichtung für kontinuierliche logische Blockgrößen konfiguriert sein, die der Größe der Medienprogrammierung entsprechen. Jeder Speichermedienblock kann ohne Rücksicht auf schlechte Blöcke, Medienfehler oder -verschleiß oder diskontinuierliche physische Medienpositionen dargestellt und verwaltet werden. Zum Beispiel kann der NVM-Manager 324 die Speichervorrichtungs-FTL so verwalten, dass kontinuierliche logische Blöcke der Medienprogrammierungsgröße zur Verwendung beim Zuweisen von Medienspeicherplätzen in der FTL-Abbildung 312.2 der Speichervorrichtung bereitgestellt werden.
  • Die gehosteten Dienste 322 können eine Reihe von Diensten oder Funktionen zur Unterstützung von verteilten Lese-/Schreiboperationen, Laufwerk-zu-Laufwerk-Operationen und anderen Datenverwaltungsoperationen einschließen. In einigen Ausführungsformen können die gehosteten Dienste 322 Dienste einschließen, die mit dem Initialisieren, dem Zugreifen, dem Aktualisieren und dem Verwenden der logischen Host-FTL-Abbildungsinformationen 312.1, der Unterstützung verteilter Lese-/Schreiboperationen unter Verwendung des Pufferspeichers 306 und der Löschcodierungs-Engine 314, verteilten Speicherbereinigungsdiensten, der Wartung und Verwendung von Protokolldaten für die Kontinuität, der Peer-Laufwerk-Kommunikation und/oder dem Neuaufbau der Speichervorrichtung (RAID-Neuaufbau von Host-Daten und/oder Host-FTL-Abbildungsinformationen) zusammenhängen. Jede dieser Dienstoperationen kann lokalen Speicher und Rechenressourcen nutzen.
  • Gehostete FTL-Dienste 322 können den Host-FTL-Abruf 322.1 zum Nachschlagen von Abbildungsinformationen zur Übersetzung von Host-LBA in Medienspeicherorte oder umgekehrt einschließen. Zum Beispiel kann der Dienstanforderungs-Handler 321 eine Host-FTL-Abfrageanforderung empfangen, die ein oder mehrere Host-LBAs angibt, die entsprechenden Einträge in der logischen Host-FTL-Abbildung 312.1 nachschlagen und Abbildungsinformationen zurückgeben, die den Medienspeicherorten auf den jeweiligen Speichervorrichtungen entsprechen. Die zurückgegebenen Abbildungsinformationen können sowohl eine oder mehrere Speichervorrichtungskennungen und entsprechende Speichervorrichtungs-LBA- oder Medienspeicherplatzkennungen zur Verwendung durch andere zentralisierte (SVC 110 oder Host 102) oder verteilte (andere Speichervorrichtungen) Funktionen wie Lesen/Schreiben, Speicherbereinigung, Paritätsberechnung, RAID-Striping, Datenwiederherstellung, Daten- oder FTL-Abbildungsneuaufbau usw. einschließen.
  • Gehostete Dienste 322 können den Host-FTL-Aktualisierer 322.2 zur Aktualisierung des Abschnitts der logischen Host-FTL-Abbildung 312.1 im FTL-Speicher 312 einschließen. Der Dienstanforderungs-Handler 321 kann eine Host-FTL-Aktualisierungsanforderung erhalten, die ein oder mehrere Host-LB As und die neuen Abbildungsinformationen für die entsprechende Speichervorrichtungskennung und Medienspeicherplätze angibt. In einigen Ausführungsformen schreibt der Host-FTL-Aktualisierer 322.2 die neuen Abbildungsinformationen in die logische Host-FTL-Abbildung 312.1.
  • In Ausführungsformen, die redundante Host-FTL-Abbildung verwenden, kann Host-FTL-Aktualisierer 322.2 die neuen Abbildungsinformationen auch an den entsprechenden Abschnitt der logischen Host-FTL-Abbildung in einer anderen Speichervorrichtung senden. Zum Beispiel kann der Host-FTL-Aktualisierer 322.2 die neuen Abbildungsinformationen schreiben, indem er eine Aktualisierungsanforderung an den Host-FTL-Aktualisierer einer anderen Speichervorrichtung sendet. In einigen Ausführungsformen kann der Host-FTL-Aktualisierer 322.2 auch die Änderungen im Pufferspeicher 306 und/oder den entsprechenden Puffern in der redundanten Speichervorrichtung protokollieren. Der Host-FTL-Aktualisierer 322.2 kann eine Nachricht über die vollständige Aktualisierung an den Anforderer senden.
  • In einigen Ausführungsformen wirddie Aktualisierungsanforderung die Aktualisierung sowohl der Host-FTL-Abbildungsinformationen für die Zielspeichervorrichtung als auch für eine Paritätsspeichervorrichtung einschließen. Host-FTL-Aktualisierer 322.2 kann einen Host-FTL-Aktualisierungsbefehl mit Host-LBA, Abbildungsinformationen und Paritätsspeichervorrichtungskennung empfangen. Host-FTL-Aktualisierer 322.2 kann die gespeicherten Abbildungsinformationen in der logischen FTL-Abbildung 312.1 nachschlagen und die gespeicherten Abbildungsinformationen mit den empfangenen Abbildungsinformationen XOR-verknüpfen und dann einen Host-FTL-XOR-Aktualisierungsbefehl an die Host-FTL-Dienste der Paritätsspeichervorrichtung senden. In einigen Ausführungsformen kann der Host-FTL-Aktualisierer 322.2 den Status oder eine andere Benachrichtigung erhalten, dass der Host-FTL-XOR-Aktualisierungsbefehl vollständig ist, und die lokale logische Host-FTL-Abbildung 312.1 mit den neuen Abbildungsinformationen aktualisieren. In einigen Ausführungsformen kann der Host-FTL-Aktualisierer die Änderung des Host-FTL-Eintrags in der logischen Host-FTL-Abbildung 312.1 in einem Pufferprotokoll 306.3 in einem Pufferspeicher 306 protokollieren.
  • In einigen Ausführungsformen fungiert die Speichervorrichtung 120 auch als Paritätsspeichervorrichtung und die gehosteten Dienste 322 können den Paritäts-Host-FTL-Aktualisierer 322.3 einschließen. Paritäts-Host-Aktualisierer 322.2 kann einen Host-FTL-XOR-Aktualisierungsbefehl von den Host-FTL-Diensten einer anderen Speichervorrichtung empfangen, z. B. von der Speichervorrichtung, die den relevanten Abschnitt der logischen Host-FTL-Abbildung 312.1 verwaltet. Der Paritäts-Host-FTL-Aktualisierer 322.3 kann Befehle für den Zugriff auf die in der Anforderung identifizierten lokalen Daten erteilen, diese Daten mit dem Inhalt eines in der Anforderung identifizierten XOR-Puffers (z. B. Paritätspuffer 306.2 im Pufferspeicher 306) XOR-verknüpfen und die resultierenden Daten in denselben XOR-Puffer schreiben.
  • In einigen Ausführungsformen kann der Paritäts-Host-FTL-Aktualisierer 322.3 eine ähnliche Operation mit den Abbildungsinformationen in der Anforderung ausführen: die entsprechenden Abbildungsinformationen abrufen (Host-FTL-Eintrag gemäß Paritäts-LBA); die Abbildungsinformationen in der Anforderung mit den abgerufenen Abbildungsinformationen XOR-verknüpfen; die Ergebnisse zurück in der (lokalen) logischen Host-FTL-Abbildung 312.1 speichern. In einigen Ausführungsformen kann der Paritäts-Host-FTL-Aktualisierer 322.3 die Änderung des Host-FTL-Eintrags in der logischen Host-FTL-Abbildung 312.1 in einem Pufferspeicher 306 protokollieren. Der Paritäts-Host-FTL-Aktualisierer 322.2 kann einen Status an den Dienstanforderungs-Handler 321 der Speichervorrichtung, der die Anforderung gesendet hat, zurücksenden.
  • Gehostete Dienste 322 können den Host-FTL-Initialisierer 322.4 zum Initialisieren eines Abschnitts der logischen Host-FTL-Abbildung 312.1 im FTL-Speicher 312 nach einem Einschalt- oder anderen Initialisierungsereignis einschließen. In einigen Ausführungsformen kann die Initialisierung das Abspielen einer Reihe von Host-FTL-Aktualisierungen aus einem im persistenten Speicher gespeicherten Protokoll einschließen. Zum Beispiel kann der Host-FTL-Initialisierer 322.4 einen Protokollpuffer 306.3 verwenden, der im Pufferspeicher 306 zugewiesen ist. Der Dienstanforderungs-Handler 321 kann eine Host-FTL-Initialisierungsanforderung empfangen, die die zu initialisierenden Host-LB-A-Abbildungsinformationen in der logischen FTL-Abbildung 312.1 definiert. Die Anforderung kann zum Beispiel eine oder mehrere persistente Speicherstellen angeben, die aktualisierte Host-FTL-Abbildungsinformationen enthalten, z. B. durch Angabe einer Startposition und der Anzahl der zu verarbeitenden Protokolleinträge. Der Host-FTL-Initialisierer 322.4 kann jeden Protokolleintrag in ein LBA-Feld und die entsprechenden Abbildungsinformationen parsen. Der Host-FTL-Initialisierer 322.4 kann den Speicherort für den entsprechenden Eintrag in der Host-FTL-Abbildung 312.1 berechnen und die Host-FTL-Abbildung 312.1 auf der Grundlage der Abbildungsinformationen aus dem Protokollpuffer 306.3 aktualisieren. Der Dienstanforderungs-Handler 321 kann eine vollständige Statusmeldung an den Anforderer zurücksenden, wie die SVC 110, wenn die angegebenen Protokolleinträge verarbeitet wurden.
  • Die gehosteten Dienste 322 können den Host-FTL-Rebuilder 322.5 einschließen, um einen Abschnitt der logischen Host-FTL-Abbildung 312.1 neu aufzubauen, der in einer Peer-Speichervorrichtung gespeichert ist, die fehlt oder ausgefallen ist. In einigen Ausführungsformen können gespiegelte Abschnitte und/oder Paritätsinformationen auf Peer-Speichervorrichtungen verteilt sein und Neuaufbauanforderungen können an jede der verbleibenden Speichervorrichtungen für die Host-FTL-Wiederherstellung gesendet werden. Dienstanforderungs-Handler 321 kann eine Anforderung zum Neuaufbau der Host-FTL erhalten, die die Liste der FTL-Abbildungseinträge in der empfangenden Speichervorrichtung definiert, die den Host-FTL-Segmenten in der fehlenden oder ausgefallenen Speichervorrichtung entsprechen. Zum Beispiel kann der Host-FTL-Rebuilder 322.5 den fehlenden Eintrag durch XOR-Verknüpfung der entsprechenden Einträge in der logischen Host-FTL-Abbildung 312.1 neu erstellen. In einigen Ausführungsformen sind die entsprechenden Einträge auf mehrere überlebende Speichervorrichtungen verteilt, und die Laufwerk-zu-Laufwerk-Kommunikation kann verwendet werden, um den Neuaufbau abzuschließen, wie Puffer-zu-Puffer-Kopie 322.6 und/oder Puffer-zu-Puffer-Codierung 322.7.
  • Die gehosteten Dienste 322 können die Puffer-zu-Puffer-Kopie 322.6 und die Puffer-zu-Puffer-Codierung 322.7 einschließen, um die Laufwerk-zu-Laufwerk-Kommunikation und Datenverwaltungsfunktionen zu ermöglichen. Diese Dienste können speziell über Puffer-zu-Puffer-Kopie-Anforderungen an Dienstanforderungs-Handler 321 angefordert werden und/oder in andere Dienste integriert werden, wie verteiltes Paritätsmodul 332 oder FTL-Host-Rebuilder 322.5. In einigen Ausführungsformen verschiebt die Puffer-zu-Puffer-Kopie 322.6 Daten von einem Pufferplatz im Pufferspeicher 306 in einer ersten Speichervorrichtung zu einem zweiten Pufferplatz im Pufferspeicher 306 einer anderen Speichervorrichtung. Zum Beispiel kann eine Anforderung für eine Puffer-zu-Puffer-Kopie die IDs der Quell- und Zielspeichervorrichtung, die entsprechenden Pufferspeicherplätze und die Länge der zu verschiebenden Daten angeben.
  • In einigen Ausführungsformen verhält sich die Puffer-zu-Puffer-Codierung 322.7 ähnlich wie die Puffer-zu-Puffer-Kopie 322.6, außer dass während der Verschiebung ein Codierungsschritt eingefügt werden kann. In einigen Ausführungsformen verwendet die Puffer-zu-Puffer-Codierung 322.7 mindestens einen Paritätspuffer 306.2, der im Pufferspeicher 306 zugewiesen ist. Zum Beispiel können Daten aus einem Pufferspeicher 306 ausgelesen, XOR-verknüpft oder mit dem Inhalt des Paritätspuffers 306.2 löschcodiert und wieder im Paritätspuffer 306.2 gespeichert werden. Der Pufferspeicher, aus dem ein Datensatz ausgelesen wird, darf sich nicht auf derselben Speichervorrichtung befinden wie der Paritätspuffer 306.2 und die darin enthaltenen löschcodierten Daten. Eine Anforderung für eine Puffer-zu-Puffer-Codierung kann die Quell- und Zielspeichervorrichtungen und die entsprechenden Pufferspeicherplätze, einschließlich des Paritätspuffers 306.2, sowie die Länge der zu verarbeitenden und zu verschiebenden Daten angeben.
  • Die gehosteten Dienste 322 können den LBA-Filter 322.8 einschließen, um eine gültige LBA-Liste für eine NVM-Einheit zur Unterstützung der Speicherbereinigung zu erhalten. LBA-Filter 322.8 kann ein Protokoll von Speicherorten, die der NVM-Einheit entsprechen, wie eine Seite, parsen, um gültige LBAs in der NVM-Einheit zu identifizieren und herauszufiltern. Dienstanforderungs-Handler 321 kann eine LBA-Filteranforderung empfangen, die eine Stelle im Pufferspeicher angibt, wie eine Startposition und die Anzahl der Einträge im Pufferprotokoll 306.3, wo die Protokolleinträge mit den Seiteninformationen gespeichert werden. Die Anforderung kann auch einen Zielpufferspeicherort angeben, in den die resultierende LBA-Liste vom LBA-Filter 322.8 geschrieben werden kann. LBA-Filter 322.8 kann jeden Protokolleintrag in ein Host-LBA-Feld und die entsprechenden Abbildungsinformationen parsen, die Abbildungsinformationen im Eintrag in der Host-FTL-Abbildung 312.1 für das Host-LBA nachschlagen und die Abbildungsinformationen aus dem Protokolleintrag mit den aus der Host-FTL-Abbildung 312.1 abgerufenen Abbildungsinformationen vergleichen. LBA-Einträge mit übereinstimmenden Log- und Abbildungsinformationen können dann in eine gefilterte LBA-Liste geschrieben werden. Der Dienstanforderungs-Handler 321 kann eine vollständige Statusmeldung an den Anforderer zurücksenden, wie die SVC 110, wenn die angegebenen Protokolleinträge verarbeitet wurden.
  • Der gehostete Dienst 322 kann den Datenverschieber 322.9 zum Auswählen, Serialisieren und Neuschreiben von LBAs aus einer Verschiebungsliste zur Unterstützung der Speicherbereinigung einschließen. Der Datenverschieber 322.9 kann ein Protokoll parsen, das die LBA-Verschiebungsliste und den Speicherort enthält, in den die serialisierten Daten geschrieben werden sollen. In einigen Ausführungsformen kann der Dienstanforderungs-Handler 321 eine Datenverschiebungsanforderung empfangen, die eine Stelle im Pufferspeicher angibt, wie eine Startposition und die Anzahl der Einträge im Pufferprotokoll 306.2, wo die Protokolleinträge mit der Verschiebungsliste gespeichert werden. Die Datenverschiebungsanforderung kann auch die Zuweisung von Speicherplätzen im Pufferspeicher 306 für das Serialisieren der Daten und die für die serialisierten Daten zu verwendenden Ziel-LBAs angeben.
  • Der Datenverschieber 322.9 kann jedes LBA in der Verschiebungsliste lesen und den NVM-Manager 324 verwenden, um auf die FTL-Abbildung 312.2 der Speichervorrichtung zuzugreifen, um jedes LBA zu lokalisieren und in den angegebenen Serialisierungspufferplatz im Pufferspeicher 306 zu schreiben. LBAs aus der Verschiebungsliste können in den Pufferspeicher 306 geschrieben werden, bis der Serialisierungspufferplatz voll ist. Der Datenverschieber 322.9 kann dann über den NVM-Manager 324 einen Schreibvorgang auf das Medium einleiten. Wenn alle LBAs in der Verschiebungsliste verschoben wurden und der letzte Stapel auf ein Medium oder mehrere Medien geschrieben wird, kann Dienstanforderungs-Handler 321 eine vollständige Statusmeldung an den Anforderer zurücksenden, wie SVC 110. In einigen Ausführungsformen, Daten kann nach links in die Serialisierung Pufferraum und zur Parität Berechnung in einer Parität Speichervorrichtung. Zum Beispiel kann das verteilte Paritätsmodul 332 in der Paritätsspeichervorrichtung initiiert und auf den Serialisierungspufferplatz (als Übertragungspufferplatz 306.1 wiederverwendet) für die ursprünglichen Schreibdaten verwiesen werden, die von der Puffer-zu-Puffer-Codierung 322.7 (ebenfalls in der Speichervorrichtung) verarbeitet werden sollen.
  • In einigen Ausführungsformen schließt der NVM-Manager 324 Basis-FTL-Dienste für die Speichervorrichtung 120 ein und verwaltet die FTL-Abbildung 312.2 der Speichervorrichtung. In einigen Ausführungsformen bietet die FTL-Abbildung 312.2 der Speichervorrichtung eine Basisebene der FTL-Abbildung für die Speichervorrichtung 120. Die FTL-Abbildung 312.2 der Speichervorrichtung kann die Zuweisung von Speicherplätzen mit einer definierten Größe einschließen, die auf der Kompatibilität mit Speichereinheiten in NVM-Vorrichtungen 140.1 basiert, wie der Seitengröße, und die gleichen definierten Speichereinheitengrößen können für Pufferspeicher 306 verwendet werden. Zum Beispiel können Speicherplätze als 4 KB- oder 8 KB-Seiten zugewiesen werden. In einigen Ausführungsformen können die Zuweisungsgrößen für Speicherorte größeren Multiebenen-NVM-Seitengrößen entsprechen, z. B. 96 KB oder 192 KB.
  • Die FTL-Abbildung 312.2 der Speichervorrichtung kann die Verwaltung von Speicherorten auf NVM-Ebene ermöglichen. Zum Beispiel kann der NVM-Manager 324 die FTL-Abbildung 312.2 der Speichervorrichtung für die FTL-Verwaltung einschließlich fehlerhaften Blöcken, die Überbereitstellung von fehlerhaften Blöcken und die Zuweisung von durchgehenden oder lückenlosem logischem Speicherplatz während der gesamten Lebensdauer des NVMs verwenden. In einigen Ausführungsformen kann der NVM-Manager 324 auch eine Fehlerkorrektur (z. B. Paritätsprüfung geringer Dichte (LDPC) oder Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes)) mit Unterstützung durch die Fehlerkorrektur-Engine 316 und die Abstimmung der NVM-Zugriffsparameter (z. B. Leseebenen, Programmierungsschwellenwerte usw.) einschließen. Der NVM-Manager 324 kann Leseoperationen aus LB A-Speicherorten in NVM-Vorrichtungen 140.1 zum Schreiben in den Pufferspeicher 306 und Leseoperationen aus dem Pufferspeicher 306 zum Schreiben in LB-Speicherorte in NVM-Vorrichtungen 140.1 ermöglichen. In einigen Ausführungsformen verwaltet der NVM-Manager 324 keine RAID-bezogene Redundanz oder Striping über den von ihm verwalteten NVM, und RAID-Gruppen und Striping können über die Speichervorrichtungen verteilt verwaltet werden.
  • In einigen Ausführungsformen arbeitet das Pufferzugriffsmodul 326 in Verbindung mit der RDMA-Schnittstelle 304, um die lokale und entfernte Nutzung des Pufferspeichers 306 zu verwalten. Lokale Operationen durch den NVM-Manager 324 können beispielsweise Schreib- und Leseoperationen in Pufferspeicher 306 einschließen, Lese-/Schreiboperationen können die Koordinaten des Speicherplatzes in Pufferspeicher 306 sowohl für den lokalen als auch für den Fernzugriff einschließen, und andere verteilte Operationen können den Speicherplatz in Pufferspeicher 306 gemäß den Anforderungen von SVC 110 oder anderen Speichervorrichtungen nutzen. In einigen Ausführungsformen kann das Pufferzugriffsmodul 326 einen oder mehrere pufferbezogene Dienste für die gehostete Dienste 322 implementieren. Zum Beispiel kann das Pufferzugriffsmodul 326 Pufferplatz für das Empfangen von Host-Daten, Daten von einer anderen Speichervorrichtung oder anderen Daten im Zusammenhang mit verteilten FTL-Diensten zuweisen. In einigen Ausführungsformen kann das Pufferzugriffsmodul 326 Pufferspeicher 306 für bestimmte Zwecke in Verbindung mit gehosteten Diensten 322 und/oder Lese-/Schreiboperationen zuweisen, wie Übertragungspuffer 306.1 zum Verschieben von Daten zwischen Speichervorrichtungen und/oder dem Host, Paritätspuffer 306.2 zum Empfangen und Aktualisieren von Paritätsdaten in Paritätsspeichervorrichtungen und Protokollpuffer 306.3 zum Speichern von sequentiellen Datenverwaltungsinformationen im Zusammenhang mit gehosteten Diensten 322 und/oder Lese-/Schreiboperationen.
  • In einigen Ausführungsformen ist das Pufferzugriffsmodul 326 den Pufferzuweisungen durch einen entfernten Puffermanager untergeordnet, wie dem Vorrichtungspuffermanager 216 in der SVC 110. Zum Beispiel kann das Pufferzugriffsmodul 326 Pufferzuweisungen durch den Vorrichtungspuffermanager 216 empfangen und protokollieren und/oder Pufferzuweisungen vom Vorrichtungspuffermanager 216 zur lokalen Verwendung anfordern. In einigen Ausführungsformen kann das Pufferzugriffsmodul 326 auch einen Pufferausräumbefehl verarbeiten, der von einem entfernten Puffermanager empfangen wurde. Zum Beispiel kann der Pufferausräumbefehl den NVM-Manager 324 veranlassen, den Inhalt des Pufferspeichers 306 in NVM-Vorrichtungen 140.1 zu schreiben und das Pufferzugriffsmodul 326, den Inhalt des Pufferspeichers 306 zur Wiederverwendung zu löschen. In einigen Ausführungsformen kann das Pufferzugriffsmodul 326 den Status an einen entfernten Puffermanager zurückmelden, wenn der Pufferausräumbefehl abgeschlossen ist.
  • In einigen Ausführungsformen schließt das verteilte Lesemodul 328 lokale Leseoperationen ab, wenn die Speichervorrichtung 120 den Zielspeicherort eines Host-Lesebefehls oder eines anderen Lesebefehls einschließt. SVC 110 kann den Lesebefehl initiieren. Der Lesebefehl kann an die Speichervorrichtung 120 adressiert werden, basierend auf einem vorherigen FTL-Abruf, den die Zielspeichervorrichtung für den Lesebefehl identifiziert hat. Der Lesebefehl kann den LBA-Bereich für den Lesebefehl und einen Zielpufferort im Pufferspeicher 306 einschließen.
  • Das verteilte Lesemodul 328 kann dann eine Medienleseoperation initiieren. Zum Beispiel kann die Medienleseoperation Anweisungen an den NVM-Manager 324 einschließen, eine Leseoperation von einem Speicherort auf NVM-Vorrichtungen 140.1 auszuführen, der dem LBA-Bereich in der Leseanforderung entspricht, basierend auf der FTL-Abbildung 312.2 der Speichervorrichtung im FTL-Speicher 312. Die Anweisung kann auch einen zugewiesenen Pufferort im Pufferspeicher 306 angeben, in den der NVM-Manager 324 die Daten schreiben kann. In einigen Ausführungsformen kann die Medienleseoperation auch das Pufferzugriffsmodul 326 verwenden, um die Pufferzuweisung zu protokollieren, den Pufferort für den NVM-Manager 324 zum Schreiben der Lesedaten verfügbar zu machen und/oder die RDMA-Schnittstelle 304 für die Host-Datenübertragung aus Pufferspeicher 306, die möglicherweise folgt, bereitzustellen.
  • In einigen Ausführungsformen kann das verteilte Lesemodul 328, wenn die Daten aus den NVM-Vorrichtungen 140.1 gelesen werden und in den Pufferspeicher 306 bereit sind, einen Status Lesen abgeschlossen an das anfordernde System senden. Das anfordernde System kann dann in der Lage sein, die Host-Leseoperationen auf der Grundlage der im zugewiesenen Pufferort im Pufferspeicher 306 verfügbaren Daten fortzusetzen. In einigen Ausführungsformen kann das verteilte Lesemodul 328 eine Push-Übertragung von Daten aus dem Pufferspeicher 306 unter Verwendung der RDMA-Schnittstelle 304 initiieren. In anderen Ausführungsformen kann die SVC 110, der Host 102 oder eine RDMA-Engine an anderer Stelle im Datenspeichersystem 100 die Datenübertragung zu Host 102 initiieren.
  • In einigen Ausführungsformen schließt das verteilte Schreibmodul 330 lokale Schreiboperationen ab, wenn die Speichervorrichtung 120 den Zielspeicherort eines Host-Schreibbefehls oder eines anderen Schreibbefehls einschließt. SVC 110 kann den Schreibbefehl initiieren. Der Schreibbefehl kann an die Speichervorrichtung 120 adressiert werden, basierend auf einem vorherigen FTL-Abruf, den die Zielspeichervorrichtung für den Schreibbefehl identifiziert hat. Der Schreibbefehl kann einen Zielpufferort im Pufferspeicher 306 für die Host-Datenübertragung und LB A für den Zielspeicherort einschließen.
  • Das verteilte Schreibmodul 330 kann das Pufferzugriffsmodul 326 verwenden, um den Pufferort im Pufferspeicher 306 für den Empfang der Host-Daten zuzuweisen. Die RDMA-Schnittstelle 304 kann für die Host-Datenübertragung vorbereitet werden. In einigen Ausführungsformen kann das verteilte Schreibmodul 330 auch das Pufferzugriffsmodul 326 verwenden, um die Pufferzuweisung zu protokollieren und den Pufferort dem NVM-Manager 324 zum Lesen der zu schreibenden Daten zur Verfügung zu stellen.
  • Das verteilte Schreibmodul 330 kann dann eine Medienschreiboperation initiieren. Zum Beispiel kann die Medienschreiboperation Anweisungen an den NVM-Manager 324 einschließen, eine Leseoperation aus dem zugewiesenen Pufferort im Pufferspeicher 306 für die Host-Daten und eine Schreiboperation an einen Speicherort auf NVM-Vorrichtungen 140.1 entsprechend dem LBA-Bereich in der Schreibanforderung auf der Grundlage der FTL-Abbildung 312.2 der Speichervorrichtung im FTL-Speicher 312 auszuführen. Der NVM-Manager 324 kann auch die FTL-Abbildung 312.2 der Speichervorrichtung aktualisieren, um die neu geschriebenen Daten widerzuspiegeln. In einigen Ausführungsformen kann das verteilte Schreibmodul 330 beim Lesen der Daten aus dem Pufferspeicher 306 und beim Schreiben in die NVM-Vorrichtungen 140.1 einen Status Schreiben abgeschlossen an das anfordernde System senden. Das anfordernde System kann dann in der Lage sein, die Host-Schreiboperationen fortzusetzen, wozu auch Aktualisierungen der Host-FTL und etwaige Paritätsoperationen gehören können.
  • In einigen Ausführungsformen unterstützt das verteilte Paritätsmodul 332 die lokale Paritätsberechnung, -speicherung und damit verbundene Aktualisierungen der Host-FTL-Zuweisungsinformationen, die vom Paritäts-Host-FTL-Aktualisierer 322.3 initiiert werden. Die Puffer-zu-Puffer-Kopie 322.6 kann es der Paritätsspeichervorrichtung ermöglichen, für eine Schreibanforderung Daten aus dem Puffer der Zielspeichervorrichtung zu ziehen und in den lokalen Pufferspeicher 306 zu schreiben. Beispielsweise kann die Puffer-zu-Puffer-Kopie 322.6 in der Paritätsspeichervorrichtung einen RDMA-Befehl verwenden, um auf einen Puffer in der anderen Speichervorrichtung zuzugreifen, der vom Paritätshost-FTL-Aktualisierer 322.2 identifiziert wird.
  • Das verteilte Paritätsmodul 332 kann lokale Paritätsstreifen-Daten von NVM-Vorrichtungen 140.1 unter Verwendung des NVM-Managers 324 lesen, die Fehler-Codierungs-Engine 314 verwenden, um den Inhalt des Paritätspuffers 306.2 mit den lokalen Paritätsstreifen-Daten zu XORIEREN, und die resultierenden Daten zurück in den Paritätspuffer 306.2 schreiben. Für diese Operation kann zum Beispiel die Puffer-zu-Puffer-Codierung 322.7 verwendet werden. Der Inhalt des Paritätspuffers 306.2 kann dann zur Paritätsspeicherung in die NVM-Vorrichtungen 140.1 geschrieben werden. In einigen Ausführungsformen kann der Inhalt des Paritätspuffers 306.2 in NVM-Vorrichtungen 140.1 geschrieben werden, wenn ein separater Befehl von einem entfernten Puffermanager, wie SVC 110, empfangen wird. Beispielsweise kann es dem Parität-Puffers 306.2 erlaubt werden, einen vollständigen Streifen mit Informationen zu akkumulieren und dann einen Befehl zum Löschen des Puffers zu erhalten, um die Daten des vollständigen Paritätsstreifens in die NVM-Vorrichtungen 140.1 zu schreiben.
  • 4 veranschaulicht eine beispielhafte Implementierung einer Multivorrichtungsspeicherarchitektur mit verteilter Lese-/Schreibverarbeitung, wie sie in einem disaggregierten Speichersystem verwendet werden kann, in Übereinstimmung mit einigen Ausführungsformen. Bei der SSD-Anordnung 400 kann es sich um eine redundante Anordnung von unabhängigen Festplatten (RAID) mit hoher Verfügbarkeit (HA) Bündel von Flash (BOF) handeln. Wie der Name schon sagt, zeigt dieses Beispiel ein Bündel von Flash-Laufwerken, SSDs 404, in einer redundanter Codierungs-Konfiguration (RC-Konfiguration), die über eine Zwischenverbindungs-Fabric 114 verbunden sind, um eine hohe Verfügbarkeit zu ermöglichen.
  • In einigen Ausführungsformen verbinden ein oder mehrere Adapter oder Speichernetzwerk-Schnittstellenkarten (SNICs) 402 die SSD-Anordnung 400 über ein oder mehrere Netzwerk-Fabrics 104 mit einem oder mehreren Hosts 102 und können die RDMA-Engine 402.1.1 zur Übertragung von Daten zwischen Komponenten einschließen, die an die Zwischenverbindungs-Fabrics 114 und die Netzwerk-Fabrics 104 angeschlossen sind. Das Beispiel zeigt eine oder mehrere Speichervirtualisierungssteuerungen (SVCs) 110, die über eine oder mehrere Zwischenverbindungs-Fabrics 114 mit einem oder mehreren festen Backend-Speichervorrichtungen (SSDs, 404.1 bis 404.n) und einer oder mehreren Netzwerk-Fabrics 104 (z. B. Ethernet, Infiniband, Peripheriekomponentenverbindung Express (PCle)) verbunden sind. In einigen Ausführungsformen ist die Zwischenverbindungs-Fabric 114 PCle oder eine ähnliche Fabric. In einigen Ausführungsformen sind die SVCs 110 Teil der SNIC/Adapter 402 und/oder der Zwischenverbindungs-Fabric 114.
  • Der Speichervirtualisierungssteuerung 110.1 kann eine separate System-auf-Chip (SOC), ASIC-, FPGA- oder ähnliche Komponente mit eigener CPU 430.1 und DRAM 432.1 sein, die einen globalen FTL-Manager 434.1 ausführt, um Lese-/Schreibanforderungen von Hosts 102.1-102.m zu koordinieren. Darüber hinaus enthält in einigen Ausführungsformen jede SVC 110 eine preiswerte CPU 430 zur Durchführung von Initialisierung, Verwaltung und anderen ähnlich langsamen Pfadaktivitäten sowie Hardware zur Automatisierung schneller Pfade, die die Verarbeitung schneller Pfadbefehle vollständig übernimmt (z. B. Datenübertragungen zwischen Hosts 102 und Backend-SSDs 404), sodass die CPU 430 nur wenig oder gar nicht an der Verarbeitung schneller Pfadbefehle beteiligt ist (z. B. keine andere Beteiligung als die Initialisierung oder Einrichtung von SNIC/Adaptern 402 (einschließlich RDMA-Engine 402.1.1), Puffern 410 und RDMAs 420 zur Abwicklung der Operationen).
  • In einigen Ausführungsformen ist jede SSD 404 so konfiguriert, dass sie entladene oder verteilte Operationen unterstützt, wie nachfolgend ausführlicher besprochen. Jedes SSD 404 verfügt über einen internen Pufferspeicher, der in einem oder mehreren Puffern 410 organisiert ist. In einigen Ausführungsformen unterstützen die SSDs 404 die Peer-to-Peer-Kommunikation zwischen den SSDs, sodass die SSDs 404 untereinander Daten übertragen können, z. B. für die Durchführung der Paritätsberechnung an ein Paritäts-SSD mit Hilfe der XOR-Module 422, ohne externe Steuerung. Jedes SSD 404 verfügt außerdem über ein NVM-Verwaltungsmodul 414, das ein oder mehrere nichtflüchtige Speichervorrichtungen (NVMs) 416 verwaltet und verschiedene Flash-Verwaltungsoperationen für die jeweiligen SSDs durchführt. Das Host-FTL-Dienstmodul 418 arbeitet mit dem NVM-Verwaltungsmodul 414 zusammen oder koordiniert es, um verschiedene verteilte Operationen, wie verteilte Lese-/Schreiboperationen, zu implementieren.
  • In einigen Ausführungsformen führen ein oder mehrere Module in der NVM-Steuerung 406 ausgelagerte Dienste aus, die von einer oder mehreren SVCs 110 ausgelagert werden. Solche Dienste schließen Adressierungsoperationen auf der globalen Flash-Übersetzungsschicht (FTL), Paritätsberechnungen (z. B. XOR, Reed-Solomon), Funktionen im Zusammenhang mit der Speicherbereinigung (GC), GC-Datenübertragungen (über Peer-to-Peer-Kommunikation) und andere Operationen ein, die typischerweise in den SVCs durchgeführt werden. Ebenfalls in einigen Ausführungsformen werden Operationen, die verzögert werden (z. B. ein Teil der Streifenschließung oder der Speicherbereinigung, die in Zukunft ausgeführt werden sollen), zusammen mit Operationen, die eine unmittelbarere Aufmerksamkeit erfordern, auf die SSDs ausgelagert. Mit der Unterstützung von Peer-SSDs handhaben die SSDs 404 die ausgelagerten Operationen als Reaktion auf Host-Befehle und/oder Zwischenbefehle von der SVC 110, in Übereinstimmung mit einigen Ausführungsformen.
  • Ein Beispiel für ein SSD 404.1 kann auch RAM-Speicher 412.1 zum Speichern sowohl der SSD-FTL-Abbildung 412.1.2 als auch eines Abschnitts der Host-FTL-Abbildung 412.1.1 einschließen. Einige SSDs verfügen über ausreichende Hardware- und Rechenressourcen zur Unterstützung ausgelagerter Dienste, und es sind nur Firmware-Änderungen erforderlich, um den SSD-Abschnitt einiger der hierin beschriebenen Ausführungsformen zu implementieren. Die in 4 dargestellte Systemarchitektur ermöglicht kostengünstige disaggregierte Speicherung mit nahezu derselben Leistung wie Backend-SSDs und unterstützt gleichzeitig entlastete Dienste wie globale FTL-Adressierung, Line Speed Offloaded Coding (LSOC), Schreibtransaktionen, Neuabbildung, Scale-Out und Xcopy. Das Entlasten solcher Dienste von Hosts 102 unter Verwendung eines Speichersystems mit der Speichersystemarchitektur von 4 kann zu betrieblichen Einsparungen führen.
  • Darüber hinaus können, wie in 4 dargestellt, verschiedene Abschnitte der Kommunikationsstruktur zwischen Hosts 102 und SSDs 404 in einzelnen (durchgezogene Linie) oder redundanten (gepunktete Linie) Konfigurationen bereitgestellt werden. Zum Beispiel können redundantes Netzwerk-Fabric 104, SNIC/Adapter 402, Zwischenverbindungs-Fabric 114 und SVC 110 für zusätzlichen Ausfallschutz bereitgestellt werden. Die redundanten Kommunikationspfade und SVCs sind möglicherweise weniger wünschenswert in Ausführungsformen, die verteilte Lese-/Schreiboperationen, wie hierin beschrieben, implementieren, wodurch die Auswirkungen von Stromunterbrechungen durch die strukturierte Verwendung von persistenten Speichern, Laufwerk-zu-Laufwerk-Kommunikation und Ereignisprotokollierung verringert werden können.
  • Wie in 5 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, gemäß einem verteilten oder ausgelagerten Datenverwaltungsdienst für den Zugriff auf den lokalen Speicher und/oder die Rechenressourcen der Datenspeichervorrichtung 120.1 betrieben werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienstanforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehreren Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 510-580 in 5 dargestellten Verfahren 500 antworten.
  • In Block 510 kann eine Dienst-Host-Anforderung von einer Ziel-Dienst-Host-Speichervorrichtung empfangen werden. Wenn beispielsweise ein Host, ein Server, eine Peer-Speichervorrichtung oder ein anderes Netzwerksystem, das das Datenspeichersystem zur Datenspeicherung verwendet, auf einen gehosteten Dienst zugreifen muss, kann es eine Dienst-Host-Anforderung für den gehosteten Dienst an die Ziel-Dienst-Host-Speichervorrichtung senden. Die Dienst-Host-Anforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden.
  • In Block 520 parst eine Ziel-Service-Host-Speichervorrichtung die empfangene Dienst-Host-Anforderung, um zu identifizieren, welcher Dienst-Host-Dienst aus der Vielzahl der gehosteten Dienste in der Speichervorrichtung angefordert wurde. Zum Beispiel kann die empfangene Dienst-Host-Anforderung einen Typ, ein Format und entsprechende Argumente einschließen, um einen gehosteten Dienst einzuleiten oder fortzusetzen. In einigen Ausführungsformen kann jeder gehostete Dienst einen entsprechenden Prozess innerhalb der Speichervorrichtung des Ziel-Hosts haben, der eine oder mehrere lokale Speicherressourcen und/oder lokale Rechenressourcen verwendet.
  • In Block 530 kann auf einen fernadressierbaren Speicher in der Speichervorrichtung des Ziel-Hosts zugegriffen werden, um den gehosteten Dienst in der Anfrage zu vervollständigen. Zum Beispiel kann ein über RDMA zugänglicher Übertragungspufferspeicher für eine oder mehrere Datenübertragungen mit einer Host- oder Peer-Speichervorrichtung zugewiesen werden. In einigen Ausführungsformen kann ein fernadressierbarer Speicher für den Empfang, die Protokollierung oder die Rückgabe von Datenverwaltungsinformationen zugewiesen oder für die Berechnung und Speicherung von Paritätsdaten verwendet werden.
  • In Block 540 kann auf logische Host-Abbildungsinformationen in der Ziel-Host-Speichervorrichtung zugegriffen werden, um den gehosteten Dienst in der Anfrage zu vervollständigen. Die Speichervorrichtung des Ziel-Host-Speichers kann beispielsweise einen Abschnitt der Host-LBA-Abbildungsinformationen für das Speichersystem in einem logischen Abbildungsspeicher hosten, und die Anforderung kann sich auf das Abrufen, Aktualisieren, Initialisieren, Vergleichen oder den Neuaufbau von Host-LBA-Abbildungsinformationen beziehen. In einigen Ausführungsformen beziehen sich die Host-LBA-Abbildungsinformationen, auf die zugegriffen wird, auf Host-LBAs und/oder Host-LBA-Abbildungsinformationen, die auf Peer-Speichervorrichtungen gespeichert sind.
  • In Block 550 kann auf eine Löschcodierungs-Engine in der Ziel-Host-Speichervorrichtung zugegriffen werden, um den gehosteten Dienst in der Anforderung zu vervollständigen. Die Speichervorrichtung der Ziel-Host-Speichervorrichtung kann beispielsweise ein Löschcodierungssystem für die XOR-Verknüpfung von Daten zur Berechnung der Parität einschließen. In einigen Ausführungsformen kann der gehostete Dienst die Berechnung der Parität für Host-Daten oder LBA-Abbildungsdaten einschließen und einen fernadressierbaren Speicher zum Lesen, Speichern und/oder Übertragen von Paritätsdaten verwenden.
  • In Block 560 kann auf eine Peer-Speichervorrichtung durch die Ziel- Host-Speichervorrichtung zugegriffen werden, um den gehosteten Dienst-Host in der Anforderung zu vervollständigen. Zum Beispiel kann die Ziel-Host-Speichervorrichtung Daten aus ihrem fernadressierbaren Puffer in den fernadressierbaren Puffer einer Peer-Speichervorrichtung übertragen, um Paritätsberechnung, Datenspiegelung, Neuaufbau, Speicherbereinigung oder eine andere Datenverwaltungsfunktion durchzuführen. In einigen Ausführungsformen können Peer-Speichervorrichtungen in der Lage sein, Dienstanforderungen an andere Speichervorrichtungen zu senden, um ihren gehosteten Dienst zu vervollständigen.
  • In Block 570 kann der Host-Dienst mit den Ressourcen ausgeführt werden, auf die in den Blöcken 520-560 zugegriffen wurde. Die Ausführung des Host-Dienstes kann die Verwendung einer Vielzahl von lokalen Speicherressourcen für den Zugriff, die gemeinsame Nutzung und die Speicherung von Daten einschließen. Die Ausführung des Host-Dienstes kann eine Vielzahl von lokalen Rechenressourcen für die Ausführung der Funktionen und Ein-/Ausgabeprotokolle zur Vervollständigung der gehosteten Dienste einschließen. In einigen Ausführungsformen kann die Ausführung der Host-Dienste die Kommunikation mit anderen Ressourcen und das Warten auf die angeforderten Ressourcen zur Vervollständigung ihrer Anforderungen einschließen.
  • In Block 580 kann eine Statusmeldung an den Anforderer zurückgesendet werden. Zum Beispiel kann eine Nachricht über den Abschluss eines angeforderten Dienstes von einem Dienstanforderer an das System oder Subsystem gesendet werden, das die Dienst-Host-Anforderung initiiert hat. In einigen Ausführungsformen kann die Statusmeldung ein oder mehrere Ergebnisse der Dienstanforderung und/oder einen Hinweis auf einen Pufferspeicherplatz, an dem die Dienstergebnisse gespeichert wurden, einschließen.
  • Wie in 6 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, zur Bearbeitung einer Datenübertragungsanforderung eingesetzt werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienst-Host-Anforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehrerer Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 610-630 in 6 dargestellten Verfahren 600 antworten. In einigen Ausführungsformen kann die Datenübertragungsanforderung Teil einer gehosteten Dienst-Host-Anforderung sein, wie im Hinblick auf Verfahren 500 in 5 beschrieben.
  • In Block 610 kann eine Dienst-Host-Speichervorrichtung eine Datenübertragungsanforderung empfangen. Wenn zum Beispiel eine Host-, Server-, Peer-Speichervorrichtung oder ein anderes Netzwerksystem Daten zwischen zwei Speichervorrichtungen, zwischen einer Speichervorrichtung und einem Host oder innerhalb einer Speichervorrichtung (z. B. zur Speicherbereinigung) übertragen muss, kann es eine Datenübertragungsanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. Die Datenübertragungsanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine Datenübertragungsanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein.
  • In Block 620 kann ein Übertragungspufferplatz innerhalb eines fernadressierbaren Speichers zugewiesen werden. Zum Beispiel kann eine Speichervorrichtung einen Abschnitt eines fernadressierbaren Pufferspeichers für die Übertragung von Daten zwischen dem Speichermedium oder den Medien in der Speichervorrichtung und einem anderen Speicherort zuweisen. In einigen Ausführungsformen kann die Zuweisung des Übertragungspufferplatzes von einem Puffermanager außerhalb der Speichervorrichtung verwaltet werden, der den Übertragungspufferplatz als Teil der Datenübertragungsanforderung zuweist.
  • In Block 630 können Daten unter Verwendung des Übertragungspufferplatzes übertragen werden. Beispielsweise können zu übertragende Daten von einem Speicherplatz in den Übertragungspufferplatz geschrieben und aus dem Übertragungspufferplatz in einen zweiten Speicherplatz gelesen werden. In einigen Ausführungsformen kann einer der Speicherplätze das lokale Speichermedium oder die lokalen Speichermedien der Speichervorrichtungen sein, und der zweite Speicherplatz kann sich in einem anderen System oder einer anderen Komponente befinden, wie einem Host-System oder einer Peer-Speichervorrichtung. Für die Übertragung zum zweiten Speicherort kann ein Speicherfernzugriffsprotokoll wie RDMA verwendet werden.
  • Wie in 7 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, zur Bearbeitung einer Löschcodierungsanforderung eingesetzt werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienst-Host-Anforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehrerer Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 710-760 in 7 dargestellten Verfahren 700 antworten. In einigen Ausführungsformen kann die Datenübertragungsanforderung Teil einer gehosteten Dienst-Host-Anforderung sein, wie im Hinblick auf Verfahren 500 in 5 beschrieben.
  • In Block 710 kann eine Löschcodierungsanforderung von einer Ziel-Dienst-Host-Speichervorrichtung empfangen werden. Wenn zum Beispiel eine Host-, Server-, Peer-Speichervorrichtung oder ein anderes Netzwerksystem Codedaten löschen muss, wie für die Paritätsberechnung, kann es eine Löschcodierungsanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. Die Löschcodierungsanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine Löschcodierungsanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein.
  • In Block 720 kann ein Paritätspufferplatz innerhalb eines fernadressierbaren Speichers zugewiesen werden. Die Speichervorrichtung kann zum Beispiel einen Abschnitt eines fernadressierbaren Pufferspeichers zur Aufnahme eines ersten Datensatzes, der in einer Paritätsberechnung verwendet werden soll, zuweisen. Der Paritätspufferplatz kann bereits Daten von einer früheren Datenübertragung und/oder einer früheren Paritätsberechnung einschließen, oder es können Daten in den Paritätspufferplatz zur Verwendung in der Datenübertragungsanforderung zur Löschcodierung übertragen werden, wie bei der Verwendung einer Datenübertragungsanforderung oder der Bestimmung einer Datenquelle in der Löschcodierungsanforderung.
  • In Block 730 können Paritätspufferdaten aus dem Paritätspufferplatz gelesen werden. Zum Beispiel kann der erste Datensatz zur Verwendung in der Löschcodierungsoperation aus dem Paritätspufferplatz gelesen werden. In einigen Ausführungsformen kann der erste Datensatz von einem anderen Ort gelesen werden, um den Paritätspufferplatz zu initialisieren.
  • In Block 740 kann ein neuer Datensatz von einem anderen Speicherort gelesen werden. Zum Beispiel kann ein zweiter Datensatz zur Verwendung in der Löschcodierungsoperation aus einem Übertragungspufferplatz in der Speichervorrichtung oder einer Peer-Speichervorrichtung gelesen werden. In einigen Ausführungsformen kann der zweite Datensatz in der Löschcodierungsanforderung empfangen, von einem oder mehreren Speichermedien in der Speichervorrichtung abgerufen oder aus einer anderen Quelle gelesen werden.
  • In Block 750 können die Paritätspufferdaten und die neuen Daten für eine Löschcodierungsoperation verwendet werden. Zum Beispiel kann der erste Datensatz aus dem Paritätspuffer mit dem zweiten Datensatz unter Verwendung einer Puffer-zu-Puffer-Codierung in der Speichervorrichtung XOR-verknüpft werden. In einigen Ausführungsformen kann die Paritätsberechnung für Host-Daten, logische Abbildungsdaten und/oder andere Datenverwaltungsdaten durchgeführt werden, die über Speichervorrichtungen und/oder Speichermedium- oder Speichermedienstandorte durch eine RAID- oder RAID-ähnliche Speicherkonfiguration geschützt sind.
  • In Block 760 können löschcodierten Daten im Paritätspufferplatz gespeichert werden. Zum Beispiel können die neuen Paritätsdaten, die in Block 750 berechnet wurden, den ersten Datensatz überschreiben, der aus dem Paritätspufferplatz in Block 730 abgerufen wurde. In einigen Ausführungsformen können die löschcodierten Daten in einem neuen Paritätspufferplatz gespeichert oder an einen anderen Speicherplatz übertragen werden.
  • Wie in 8 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, zur Bearbeitung einer logischen Host-Abbildungsabrufanforderung eingesetzt werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienst-Host-Anforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehrerer Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 810-830 in 8 dargestellten Verfahren 800 antworten. In einigen Ausführungsformen kann die logische Host-Abbildungsabrufanforderung Teil einer gehosteten Dienst-Host-Anforderung sein, wie im Hinblick auf Verfahren 500 in 5 beschrieben.
  • In Block 810 kann eine Dienst-Host-Speichervorrichtung eine logische Host-Abbildungsabrufanforderung empfangen. Wenn zum Beispiel eine Host-, Server-, Peer-Speichervorrichtung oder ein anderes Netzwerksystem Host-LBA-Abbildungsinformationen aus dem Abschnitt der Host-LBA-Abbildung in der Speichervorrichtung abrufen muss, z. B. für Lese-, Schreib- oder Datenverwaltungsoperationen, kann sie eine logische Host-Abbildungsabrufanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. Die logische Host-Abbildungsabrufanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine logische Host-Abbildungsabrufanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein.
  • In Block 820 werden logische Host-Abbildungsabrufanforderungen unter Verwendung der in der Speichervorrichtung gespeicherten Host-LBA-Abbildungsinformationen identifiziert. Zum Beispiel kann die logische Host-Abbildungsabrufanforderung ein oder mehrere LBAs angeben, die als Index für die logischen Host-Abbildungsinformationen in einem Abschnitt der Host-LBA-Abbildung verwendet werden können. In einigen Ausführungsformen kann jeder LBA-Eintrag eine Vielzahl von Feldern einschließen, die die Abbildungsinformationen für das LBA beschreiben, und identifizierte Informationen können bestimmte Felder innerhalb der Anforderung einschließen.
  • In Block 830 können logische Host-Abbildungsinformationen an den Anforderer zurückgesendet werden. Beispielsweise können die identifizierten logischen Host-Abbildungsinformationen aus Block 820 in eine Antwort- oder Statusmeldung an den Anforderer eingeschlossen werden. In einigen Ausführungsformen können die identifizierten logischen Abbildungsinformationen zum Abruf durch den Anforderer oder zur Weiterverarbeitung in einen Protokollpufferplatz geschrieben werden.
  • Wie in 9 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, zur Bearbeitung einer logischen Host-Abbildungsaktualisierungs- oder -initialisierungsanforderung eingesetzt werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienst-Host-Anforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehrerer Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 910-950 in 9 dargestellten Verfahren 900 antworten. In einigen Ausführungsformen kann die logische Host-Abbildungsaktualisierungs- oder -initialisierungsanforderung Teil einer gehosteten Dienst-Host-Anforderung sein, wie im Hinblick auf Verfahren 500 in 5 beschrieben. Verfahren 900 kann eine Initialisierungsanforderung zum Starten und/oder Verifizieren von logischen Host-Abbildungsinformationen in der Speichervorrichtung einschließen, wie nach einer erstmaligen Einrichtung, einem Stromausfall und/oder anderen Unterbrechungen.
  • In Block 910 kann eine Dienst-Host-Speichervorrichtung eine logische Host-Abbildungsaktualisierungsanforderung empfangen. Wenn zum Beispiel eine Host-, Server-, Peer-Speichervorrichtung oder ein anderes Netzwerksystem Host-LBA-Abbildungsaktualisierungsinformationen im Abschnitt der Host-LBA-Abbildung in der Speichervorrichtung abrufen muss, z. B. für Schreib- oder Datenverwaltungsoperationen, kann sie eine logische Host-Abbildungsaktualisierungsanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. Die logische Host-Abbildungsaktualisierungsanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine logische Host-Abbildungsaktualisierungsanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein.
  • In Block 920 können die logischen Host-Abbildungsinformationen innerhalb der Host-LBA-Abbildung in der Speichervorrichtung aktualisiert werden. Beispielsweise kann die logische Host-Abbildungsaktualisierungsanforderung ein oder mehrere Felder oder vollständige LBA-Einträge für neue logische Host-Abbildungsinformationen zum Überschreiben oder Hinzufügen zur Host-LBA-Abbildung in der Speichervorrichtung einschließen. In einigen Ausführungsformen können die neuen Abbildungsinformationen zumindest teilweise von der Speichervorrichtung erzeugt werden, wie auf der Grundlage einer Schreib- oder Verschiebungsoperation im Zusammenhang mit dem Speicherort im Speichermedium oder in den Speichermedien der Speichervorrichtung.
  • Bei Block 930 kann die Aktualisierung der logischen Host-Abbildungsinformationen in einem Protokollpufferplatz protokolliert werden. Zum Beispiel kann die LB als aktualisiert und ein zugehöriger Zeitstempel in einem oder mehreren Protokolleinträgen in einem Protokollpufferplatz im persistenten Speicher gespeichert werden. In einigen Ausführungsformen bleiben die Daten im Protokollpufferplatz bei Stromausfall erhalten und können für Peer-Speichervorrichtungen, Speichersteuerungen oder andere Systeme zugänglich sein, um zu überprüfen, ob Aktualisierungen verarbeitet wurden.
  • In Block 940 kann eine Initialisierungsanforderung für logische Host-Abbildungsinformationen von einer Ziel-Dienst-Host-Speichervorrichtung empfangen werden. Wenn zum Beispiel eine Host-, Server-, Peer-Speichervorrichtung oder ein anderes Netzwerksystem aktualisierte Host-LBA-Abbildungsinformationen in dem Abschnitt der Host-LBA-Abbildung in der Speichervorrichtung einrichten und/oder verifizieren muss, z. B. nach einem Stromausfall oder einer anderen Dienst-Unterbrechung, kann es eine Initialisierungsanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. In einigen Ausführungsformen kann die Initialisierungsanforderung das Identifizieren eines Protokollpufferplatzes einschließen, in dem LBA-Abbildungsinformationen gespeichert werden können, die für die Initialisierung eines Abschnitts der Host-LBA-Abbildung verwendet werden sollen. Die Initialisierungsanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine Initialisierungsanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein.
  • Bei Block 950 können LBA-Abbildungsinformationen aus einem Protokollpuffer verarbeitet werden, um die logischen Host-Abbildungsinformationen zu aktualisieren. Beispielsweise kann die Initialisierungsanforderung einen Protokollpufferplatz identifizieren, der LBA-Abbildungsinformationen für eine Reihe von Host-LBAs einschließt, und jeder LBA-Eintrag kann gegen den Abschnitt der Host-LBA-Abbildung in der Speichervorrichtung geparst werden, um sicherzustellen, dass die Abbildungsinformationen im Protokoll in der Host-LBA-Abbildung wiedergegeben werden. In einigen Ausführungsformen kann jeder LBA-Eintrag im Protokoll, der in der Host-LBA-Abbildung fehlt oder davon abweicht, wie in Block 920 beschrieben, aktualisiert werden. Jeder LBA-Eintrag kann auf diese Weise geparst und selektiv geschrieben oder aktualisiert werden.
  • Wie in 10 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, zur Bearbeitung einer logischen Host-Abbildungsneuaufbauanforderung eingesetzt werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienst-Host-Anforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehrerer Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 1010-1030 in 10 dargestellten Verfahren 1000 antworten. In einigen Ausführungsformen kann die logische Host-Abbildungsneuaufbauanforderung Teil einer gehosteten Dienst-Host-Anforderung sein, wie im Hinblick auf Verfahren 500 in 5 beschrieben.
  • In Block 1010 können Paritätsdaten für logische Host-Abbildungsinformationen in einer Ziel-Dienst-Host-Speichervorrichtung gespeichert werden. Zum Beispiel können Paritätsdaten für den Abschnitt der Host-LBA-Abbildungsdaten, die auf einer Speichervorrichtung gespeichert sind, auf mindestens einer anderen Speichervorrichtung gespeichert werden. In einigen Ausführungsformen können Paritätsdaten für die Host-LBA-Abbildungsdaten auf mehrere Speichervorrichtungen in einer Speicheranordnung verteilt sein, sodass der Abschnitt der Host-LBA-Abbildungsdaten auf einer Speichervorrichtung aus den auf den übrigen Speichervorrichtungen gespeicherten Paritätsdaten neu aufgebaut werden kann.
  • In Block 1020 kann eine Dienst-Host-Speichervorrichtung eine logische Host-Abbildungsneuaufbauanforderung empfangen. Wenn zum Beispiel eine Host, Server, RAID-Steuerung, Peer-Speichervorrichtung oder ein anderes Netzwerksystem Host-LBA-Abbildungsinformationen für den Abschnitt der Host-LBA-Abbildung in einer ausgefallenen Speichervorrichtung neu aufbauen muss, kann eine logische Host-Abbildungsneuaufbauanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. In einigen Ausführungsformen kann eine logische Host-Abbildungsneuaufbauanforderung an jede der verbleibenden Speichervorrichtungen in der Speicheranordnung gesendet werden. Die logische Host-Abbildungsneuaufbauanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine logische Host-Abbildungsneuaufbauanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein, nachdem ein Speichervorrichtungsfehler identifiziert wurde.
  • In Block 1030 können die logischen Host-Abbildungsdaten mit Paritätsdaten auf der Ziel- Dienst-Host-Speichervorrichtung aus den Paritätsdaten neu erstellt werden. Zum Beispiel kann die logische Host-Abbildungsneuaufbauanforderung eine Liste von LBA-Einträgen einschließen, die denen in der Host-LBA-Abbildung der ausgefallenen Speichervorrichtung entsprechen, und die Ziel-Dienst-Host-Speichervorrichtung kann eine Löschcodierungs-Engine verwenden, um die LBA-Einträge in der Liste aus den Paritätsdaten neu zu erstellen. In einigen Ausführungsformen können Paritätsdaten von mehreren Speichervorrichtungen, die den LBA-Einträgen entsprechen, zum Neuerstellen der Daten verwendet werden, und fernauslesbare Speicher können verwendet werden, um Paritätsdaten und neu erstellte Host-LBA-Abbildungsdaten zwischen den Peer-Laufwerken gemeinsam zu nutzen und sie auf eine neu aufgebaute oder ausgetauschte Speichervorrichtung zu übertragen.
  • Wie in 11 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, zur Bearbeitung einer logischen Host-Abbildungsverifizierungsanforderung eingesetzt werden. Zum Beispiel kann die Speichervorrichtung 120.1 auf eine oder mehrere Dienst-Host-Anforderungen von einer Speichervirtualisierungssteuerung (z. B. SVC 110), einem Host (z. B. Host 102) und/oder einer oder mehrerer Peer-Speichervorrichtungen (z. B. Speichervorrichtungen 120) gemäß dem durch die Blöcke 1110-1140 in 11 dargestellten Verfahren 1100 antworten. In einigen Ausführungsformen kann die logische Host-Abbildungsverifizierungsanforderung Teil einer gehosteten Dienst-Host-Anforderung sein, wie im Hinblick auf Verfahren 500 in 5 beschrieben.
  • In Block 1110 kann eine Dienst-Host-Speichervorrichtung eine logische Host-Abbildungsverifizierungsanforderung empfangen. Wenn zum Beispiel eine Host-, Server-, Peer-Speichervorrichtung oder ein anderes Netzwerksystem Host-LBA-Abbildungsinformationen aus dem Abschnitt der Host-LBA-Abbildung in der Speichervorrichtung verifizieren muss, wie für Speicherbereinigungs- oder andere Datenverwaltungsoperationen, kann sie eine logische Host-Abbildungsverifizierungsanforderung an die Ziel-Dienst-Host-Speichervorrichtung senden. Die logische Host-Abbildungsverifizierungsanforderung kann innerhalb des Speichersystems entsprechend einer Speichervorrichtungs-ID zum Empfang durch einen Dienstanforderer in der Speichervorrichtung des Ziel-Dienst-Hosts weitergeleitet werden. In einigen Ausführungsformen kann eine logische Host-Abbildungsabrufanforderung eine Unteranforderung innerhalb eines anderen gehosteten Dienstes oder eine Lese-/Schreiboperation sein.
  • In Block 1120 kann eine Verifizierungsliste der Host-LBAs aus einem Protokollpufferplatz gelesen werden. Zum Beispiel kann die logische Host-Abbildungsverifizierungsanforderung einen fernadressierbaren Speicherplatz angeben, der eine Liste von Host-LBAs und entsprechende Abbildungsinformationen zur Verifizierung einschließt. In einigen Ausführungsformen kann die Liste der Host-LBAs den Seiteninformationen entsprechen, die in einer Speicherbereinigung verwendet werden.
  • In Block 1130 können entsprechende Host-LBA-Einträge in der Host-LBA-Abbildung zum Vergleich mit der Verifizierungsliste identifiziert werden. Zum Beispiel können die Host-LBA-Abbildungsinformationen, die den einzelnen Host-LBAs in der Liste entsprechen, aus der Host-LBA-Abbildung in der Speichervorrichtung abgerufen werden. In einigen Ausführungsformen wird beim Parsen jeder LBA aus dem Verifizierungslisteneintrag der entsprechende Eintrag aus der Host-LBA-Abbildung zum Vergleich identifiziert.
  • In Block 1140 wird auf der Grundlage des Vergleichs des Verifizierungslisteneintrags mit dem Host-LBA-Abbildungseintrag eine gefilterte Liste gültiger LBAs erstellt. Wenn beispielsweise die Abbildungsinformationen im Verifizierungslisteneintrag mit dem Host-LBA-Abbildungseintrag übereinstimmen, wird die LBA verifiziert und in eine verifizierte LBA-Liste geschrieben, um an den Antragsteller zurückgegeben zu werden. In einigen Ausführungsformen kann die logische Host-Verifizierungsanforderung einen fernadressierbaren Speicherplatz zur Speicherung der verifizierten Liste der LBAs angeben.
  • Während mindestens eine beispielhafte Ausführungsform in der vorstehenden ausführlichen Beschreibung der Technologie dargestellt worden ist, sollte gewürdigt werden, dass eine große Anzahl von Variationen existieren kann. Es sollte auch beachtet werden, dass eine beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen Beispiele sind, und in keiner Weise den Umfang, die Anwendbarkeit, oder Konfiguration der Technologie einschränken sollen. Die vorangehende genaue Beschreibung wird vielmehr eine brauchbare Anleitung für Fachleute zur Implementierung einer beispielhaften Ausführungsform der Technologie bereitstellen, wobei es sich versteht, dass verschiedene Modifikationen an einer Funktion und/oder Anordnung von Elementen vorgenommen werden können, die in einer beispielhaften Ausführungsform beschrieben sind, ohne vom Umfang der Technologie abzuweichen, wie in den beigefügten Ansprüchen und ihren rechtlichen Entsprechungen dargelegt.
  • Wie einem Durchschnittsfachmann bekannt, können verschiedene Ausführungsformen der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Folglich können Ausführungsformen der vorliegenden Offenlegung die Form einer vollständigen Hardware-Ausführung, einer vollständigen Software-Ausführung (einschließlich Firmware, speicherresidente Software, Mikrocodes, oder dergleichen) oder Ausführungsformen in der Form einer Kombination von Hardware und Software annehmen, die alle allgemein hierin als Schaltung, Modul, System und/oder Netzwerk bezeichnet werden können. Darüber hinaus können verschiedene Ausführungsformen der vorliegenden Technologie die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, einschließlich eines darauf ausgebildeten computerlesbaren Programmcodes.
  • Es kann jede Kombination eines oder mehrerer computerlesbarer Speichermedien verwendet werden. Ein computerlesbares Medium kann ein computerlesbares Signalmedium oder ein physisches oder computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, ein Gerät oder eine Vorrichtung, usw. oder irgendeine geeignete Kombination der Vorstehenden sein. Nicht einschränkende Beispiele eines physischen, computerlesbaren Speichermediums können eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM), einen Flash-Speicher, eine optische Faser, eine CD-ROM, einen optischen Prozessor, einen magnetischen Prozessor, usw. oder eine beliebige geeignete Kombination des Vorgenannten einschließen, sind aber nicht darauf beschränkt. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium jedes greifbare Medium sein, das ein Programm oder Daten zur Verwendung durch ein System, ein Gerät und/oder eine Vorrichtung zur Befehlsausführung oder in Verbindung mit einer/einem solchen, enthalten oder speichern kann.
  • Ein Computercode, der auf einem computerlesbaren Medium enthalten ist, kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, aber nicht beschränkt auf, drahtloses, verdrahtetes, optisches Faserkabel, Radiofrequenz (RF), usw. oder jede geeignete Kombination des Vorhergehenden. Ein Computercode zur Ausführung von Prozessen bei Ausführungsformen der vorliegenden Erfindung kann in einer beliebigen statischen Sprache, wie die C-Programmiersprache oder andere ähnliche Programmiersprachen, geschrieben werden. Der Computercode kann vollständig auf einer Rechenvorrichtung des Benutzers, teilweise auf einer Rechenvorrichtung des Benutzers, als ein alleinstehendes Softwarepaket, teilweise auf einer Rechenvorrichtung des Benutzers und teilweise auf einer Remote-Rechenvorrichtung oder vollständig auf der Remote-Vorrichtung oder einem Server ausgeführt werden. In dem letzteren Szenario kann eine Remote-Rechenvorrichtung mit einer Rechenvorrichtung des Benutzers durch eine beliebige Art von Netzwerk oder Kommunikationssystem, einschließlich, aber nicht begrenzt auf, ein lokales Netzwerk (LAN) oder ein Wide Area Network (WAN), eine Netzkonvergenz, verbunden sein, oder die Verbindung kann zu einem externen Computer (z. B. durch das Internet unter Verwendung eines Internetanbieters) hergestellt werden.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung können oben mit Bezug auf die Flussdiagramme und/oder Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten beschrieben sein. Es versteht sich, dass jeder Block des schematischen Flussdiagramms und/oder schematischen Blockdiagramms und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einer Verarbeitungseinheit (Prozessor) eines allgemeinen Computers, speziellen Computers oder einer anderen programmierbaren Datenverarbeitungsanlage zur Erzeugung einer Maschine bereitgestellt werden, so dass die Anweisungen, die über die Verarbeitungsvorrichtung oder andere programmierbare Datenverarbeitungsanlagen ausgeführt werden können, Mittel zum Implementieren der Abläufe/Handlungen in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms erzeugen.
  • Einige Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder (eine) andere Vorrichtung(en) zum Betrieb in einer bestimmten Weise steuern kann, so dass die in einem computerlesbaren Medium gespeicherten angefertigten Artikel Anweisungen beinhalten, die den in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang implementieren. Einige Computerprogrammanweisungen können auch auf eine Rechenvorrichtung, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Vorrichtung(n) geladen werden, um zu bewirken, dass eine Reihe von Betriebsschritten an der Rechenvorrichtung, einer anderen programmierbaren Vorrichtung oder (einer) anderen Vorrichtung(en) durchgeführt werden, so dass die Anweisungen, die durch den Computer oder eine andere programmierbare Vorrichtung ausgeführt werden, einen oder mehrere Prozesse zur Implementierung der in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang bereitstellen.
  • Ein Flussdiagramm und/oder Blockdiagramm in den obigen Figuren kann eine Bauweise, Funktionalität und/oder einen Vorgang möglicher Implementierungen von Vorrichtungen, Systemen, Verfahren und/oder Computerprogrammprodukten gemäß verschiedenen Aspekten der vorliegenden Technologie veranschaulichen. In dieser Hinsicht kann ein Block in einem Flussdiagramm oder Blockdiagramm ein Modul, Segment oder einen Teil eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren einer oder mehrerer spezifizierter logischer Funktionen aufweisen kann. Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, entsprechend der involvierten Funktionalität. Es sei auch angemerkt, dass ein Block einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung oder eine Kombination von Blöcken in einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung durch speziell auf Hardware basierenden Systemen implementiert werden kann, die eine oder mehrere spezifizierte Vorgänge oder Handlungen ausführen, oder durch Kombinationen von Hardware zu speziellen Zwecken und Computeranweisungen.
  • Während ein oder mehrere Aspekte der vorliegenden Technologie im Detail dargestellt und besprochen wurden, wird ein Fachmann erkennen, dass Modifikationen und/oder Anpassungen an die verschiedenen Aspekte vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.

Claims (22)

  1. Speichervorrichtung, aufweisend: einen Prozessor; einen Betriebsspeicher; einen fernadressierbaren Speicher; eine Fabric-Schnittstelle, die so konfiguriert ist, dass sie mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric zwischen der Fabric-Schnittstelle und der Vielzahl von Peer-Speichervorrichtungen kommuniziert; einen Dienstanforderungs-Handler, der im Betriebsspeicher gespeichert und vom Prozessor ausführbar ist, um einen angeforderten gehosteten Dienst von einer Dienst-Host-Anforderung zu identifizieren, die über die Fabric-Schnittstelle empfangen wurde; und eine Vielzahl von gehosteten Diensten: gespeichert im Betriebsspeicher und durch den Prozessor ausführbar, um auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen zuzugreifen; und einschließlich des angeforderten gehosteten Dienstes.
  2. Speichervorrichtung gemäß Anspruch 1, wobei: der fernadressierbare Speicher so konfiguriert werden kann, dass er einen Übertragungspufferplatz im fernadressierbaren Speicher zuweist; und der angeforderte gehostete Dienst eine Datenübertragung zwischen dem Übertragungspufferplatz und mindestens einer der Vielzahl von Peer-Speichervorrichtungen einschließt.
  3. Speichervorrichtung gemäß Anspruch 2, weiterhin aufweisend eine Löschcodierungs-Engine, wobei der angeforderte gehostete Dienst weiterhin eine Löschcodierungsoperation aufweist, bei der die Löschcodierungs-Engine verwendet wird, um Daten für die Datenübertragung zu löschen.
  4. Speichervorrichtung gemäß Anspruch 3, wobei: der fernadressierbare Speicher weiterhin so konfiguriert werden kann, dass er einen Paritätspufferplatz im fernadressierbaren Speicher zuweist; und der angeforderte gehostete Dienst weiterhin aufweist: Lesen von Paritätspufferdaten aus dem Paritätspufferplatz; Löschen der Paritätspufferdaten, die aus dem Paritätspufferplatz gelesen wurden; und und Schreiben der löschcodierten Paritätspufferdaten zurück in den Paritätspufferplatz.
  5. Speichervorrichtung gemäß Anspruch 1, weiterhin aufweisend: einen logischen Abbildungsspeicher, einschließlich: logischer Speichervorrichtungsmedien-Abbildungsinformationen für die Speichervorrichtung; und logische Host-Abbildungsinformationen für mindestens eine von der Vielzahl von Peer-Speichervorri chtu ngen, wobei die Vielzahl von gehosteten Diensten einschließt: Verwenden mindestens einer logischen Host-Blockadresse, um logische Host-Abbildungsinformationen von dem logischen Abbildungsspeicher zu identifizieren; und Senden der identifizierten logischen Host-Abbildungsinformationen an einen Anforderer.
  6. Speichervorrichtung gemäß Anspruch 5, wobei der angeforderte Host-Dienst weiterhin das Aktualisieren der logischen Host-Abbildungsinformationen auf der Grundlage einer Änderung in mindestens einer der Vielzahl von Peer-Speichervorrichtungen aufweist.
  7. Speichervorrichtung gemäß Anspruch 6, wobei der Anforderer für den angeforderten Host-Dienst mindestens eine der Vielzahl von Peer-Speichervorrichtungen sein kann.
  8. Speichervorrichtung gemäß Anspruch 6, wobei: der fernadressierbare Speicher so konfiguriert sein kann, dass er einen Protokollpufferplatz im fernadressierbaren Speicher zuweist; die Vielzahl von gehosteten Diensten das Protokollieren angeforderter Aktualisierungen der logischen Host-Abbildungsinformationen im Protokollpufferplatz einschließt; und der angeforderte gehostete Dienst das Verarbeiten angeforderter Aktualisierungen aus dem Protokollpufferplatz nach einem Initialisierungsereignis einschließt.
  9. Speichervorrichtung gemäß Anspruch 5, wobei: die logischen Host-Abbildungsinformationen logische Host-Abbildungsparitätsdaten einschließen, die in mindestens einer der Vielzahl von Peer-Speichervorrichtungen gespeichert sind; und der angeforderte gehostete Dienst die Neuerstellung von logischen Host-Abbildungsinformationen aus den logischen Host-Abbildungsparitätsdaten einschließt.
  10. Speichervorrichtung gemäß Anspruch 5, wobei der angeforderte gehostete Dienst einschließt: Empfangen einer Verifizierungsliste von logischen Host-Blockadressen; Identifizieren von logischen Host-Abbildungsinformationen, die der Verifizierungsliste der logischen Host-Blockadressen entsprechen; und Erzeugen einer gefilterten Liste logischer Host-Blockadressen für die Speicherbereinigung auf der Grundlage der identifizierten logischen Host-Abbildungsinformationen.
  11. Speichervorrichtung gemäß Anspruch 10, wobei: das Empfangen der Verifizierungsliste der logischen Host-Blockadressen ein Speicherbereinigungsmodul einschließt, das die Verifizierungsliste in den fernadressierbaren Speicher schreibt; und das Erzeugen der gefilterten Liste von logischen Host-Blockadressen das Schreiben der gefilterten Liste in den fernadressierbaren Speicher für den Zugriff durch das Speicherbereinigungsmodul einschließt.
  12. Speichervorrichtung gemäß Anspruch 1, wobei die lokalen Speicherressourcen ausgewählt sind aus: dem Betriebsspeicher, dem fernadressierbaren Speicher, oder einem logischen Abbildungsspeicher, und die lokalen Rechenressourcen ausgewählt sind aus: dem Prozessor, oder einer Löschcodierungs-Engine.
  13. Computer-implementiertes Verfahren zur Ausführung durch eine Speichervorrichtung, aufweisend: Verwalten eines fernadressierbaren Speichers; Kommunizieren mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-F abric; Speichern einer Vielzahl von gehosteten Diensten für den Zugriff auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen; Empfangen einer Dienst-Host-Anfrage von einem Dienstanforderer; Identifizieren eines angeforderten gehosteten Dienstes aus der Dienst-Host-Anfrage; Ausführen des angeforderten gehosteten Dienstes unter Verwendung des fernadressierbaren Speichers; und Zurückgeben einer Statusmeldung als Antwort auf die Ausführung des angeforderten Host-Dienstes an den Dienstanforderer.
  14. Computer-implementiertes Verfahren gemäß Anspruch 13, weiterhin aufweisend: Zuweisen eines Übertragungspufferplatzes im fernadressierbaren Speicher; und Übertragen von Daten zwischen dem Übertragungspufferplatz und mindestens einer der Vielzahl von Peer-Speichervorrichtungen.
  15. Computer-implementiertes Verfahren gemäß Anspruch 14, weiterhin aufweisend: Zuweisen eines Paritätspufferplatzes im fernadressierbaren Speicher; Lesen von Paritätspufferdaten aus dem Paritätspufferplatz; Löschen der Paritätspufferdaten, die aus dem Paritätspufferplatz gelesen wurden; und und Schreiben der löschcodierten Paritätspufferdaten zurück in den Paritätspufferplatz.
  16. Computer-implementiertes Verfahren gemäß Anspruch 13, weiterhin aufweisend: Verwalten eines logischen Abbildungsspeichers, einschließlich: logischer Speichervorrichtungsmedien-Abbildungsinformationen für mindestens eine Speichermedium in der Speichervorrichtung; und logischer Host-Abbildungsinformationen für mindestens eine von der Vielzahl von Peer-Speichervorri chtu ngen; Identifizieren von logischen Host-Abbildungsinformationen aus dem logischen Abbildungsspeicher unter Verwendung mindestens einer logischen Host-Blockadresse; und Verwenden der identifizierten logischen Host-Abbildungsinformationen zum Ausführen des angeforderten gehosteten Dienstes.
  17. Computer-implementiertes Verfahren nach Anspruch 16, weiterhin aufweisend das Aktualisieren der logischen Host-Abbildungsaktualisierungsinformationen basierend auf einer Änderung in mindestens einer der Vielzahl von Peer-Speichervorrichtungen während des Ausführens des angeforderten gehosteten Dienstes.
  18. Computer-implementiertes Verfahren gemäß Anspruch 17, weiterhin aufweisend: Zuweisen eines Protokollpufferplatzes im fernadressierbaren Speicher; Protokollieren angeforderter Aktualisierungen der logischen Host-Abbildungsinformationen im Protokollpufferplatz; und Verarbeiten angeforderter Aktualisierungen vom Protokollpufferplatz nach einem Initialisierungsereignis als Antwort auf die Dienst-Host-Anforderung.
  19. Computer-implementiertes Verfahren gemäß Anspruch 16, weiterhin aufweisend: Speichern logischer Host-Abbildungsparitätsdaten im logischen Abbildungsspeicher für logische Host-Abbildungsinformationen, die in mindestens einer der Vielzahl von Peer-Speichervorrichtungen gespeichert sind; und Neuerstellen logischer Host-Abbildungsinformationen als Antwort auf die Dienst-Host-Anforderung aus den logischen Host-Abbildungsparitätsdaten.
  20. Speichervorrichtung, aufweisend: mindestens ein Speichermedium; einen fernadressierbaren Pufferspeicher; Mittel zum Kommunizieren mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric; Mittel zum Speichern einer Vielzahl von gehosteten Diensten für den Zugriff auf lokale Speicherressourcen und lokale Rechenressourcen für Datenverwaltungsoperationen für die Vielzahl von Peer-Speichervorrichtungen; Mittel zum Empfangen einer Dienst-Host-Anforderung von einem Dienstanforderer; Mittel zum Identifizieren eines angeforderten gehosteten Dienstes von der Dienst-Host-Anforderung; Mittel zum Ausführen des angeforderten gehosteten Dienstes unter Verwendung des fernadressierbaren Pufferspeichers bereitgestellt.
  21. Speichervorrichtung, aufweisend: mindestens ein Speichermedium; eine Fabric-Schnittstelle, die so konfiguriert ist, dass sie mit einer Vielzahl von Peer-Speichervorrichtungen über einen Zwischenverbindungs-Fabric zwischen der Fabric-Schnittstelle und der Vielzahl von Peer-Speichervorrichtungen kommuniziert; einen logischen Abbildungsspeicher, einschließlich: logischer Speichervorrichtungsmedien-Abbildungsinformationen für das mindestens eine Speichermedium, wobei die logischen Speichervorrichtungsmedien-Abbildungsinformationen in kontinuierlichen logischen Blöcken mit einer Medienblockgröße gleich einer Seitenprogrammiergröße des mindestens einen Speichermediums konfiguriert sind; und logischer Host-Abbildungsinformationen für mindestens eine der Vielzahl von Peer-Speichervorrichtungen, wobei die logischen Speichervorrichtungsmedien-Abbildungsinformationen in logischen Host-Blöcken mit einer Host-Blockgröße konfiguriert sind, die kleiner als die Medienblockgröße ist.; einen Dienstanforderungs-Handler, der konfiguriert ist, um einen angeforderten gehosteten Dienst von einer Dienst-Host-Anforderung zu identifizieren, die über die Fabric-Schnittstelle empfangen wurde; und eine Vielzahl von gehosteten Diensten, die so konfiguriert sind, dass sie auf den logischen Abbildungsspeicher für Datenoperationen für die Vielzahl von Peer-Speichervorrichtungen zugreifen, und wobei die Dienst-Host-Anforderung mindestens einen der Vielzahl von gehosteten Diensten initiiert.
  22. Speichervorrichtung gemäß Anspruch 21, weiterhin aufweisend: einen Medienmanager, der so konfiguriert ist, dass er eine Flash-Übersetzungsschicht für das mindestens eine Speichermedium verwaltet, wobei der Medienmanager kontinuierliche logische Blöcke mit der Medienblockgröße in dem mindestens einen Speichermedium definiert.
DE112019000149.3T 2018-06-30 2019-02-28 Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen Pending DE112019000149T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/024,738 US10725941B2 (en) 2018-06-30 2018-06-30 Multi-device storage system with hosted services on peer storage devices
US16/024,738 2018-06-30
PCT/US2019/020165 WO2020005337A1 (en) 2018-06-30 2019-02-28 Multi-device storage system with hosted services on peer storage devices

Publications (1)

Publication Number Publication Date
DE112019000149T5 true DE112019000149T5 (de) 2020-09-03

Family

ID=68986774

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000149.3T Pending DE112019000149T5 (de) 2018-06-30 2019-02-28 Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen

Country Status (4)

Country Link
US (2) US10725941B2 (de)
CN (1) CN111433732B (de)
DE (1) DE112019000149T5 (de)
WO (1) WO2020005337A1 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10824369B2 (en) * 2018-07-31 2020-11-03 Nutanix, Inc. Elastic method of remote direct memory access memory advertisement
US11074013B2 (en) 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
KR20200069889A (ko) * 2018-12-07 2020-06-17 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US11481118B2 (en) * 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11204716B2 (en) 2019-01-31 2021-12-21 EMC IP Holding Company LLC Compression offloading to RAID array storage enclosure
US10831407B2 (en) * 2019-01-31 2020-11-10 EMC IP Holding Company LLC Write flow offloading to raid array storage enclosure
JP6942748B2 (ja) * 2019-03-19 2021-09-29 株式会社日立製作所 分散ストレージシステム、データ管理方法、及びデータ管理プログラム
US11055256B2 (en) * 2019-04-02 2021-07-06 Intel Corporation Edge component computing system having integrated FaaS call handling capability
KR20200137181A (ko) 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보를 전송하는 장치
KR20200123684A (ko) * 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 장치
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20200139433A (ko) 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 컨트롤러의 동작 방법 및 메모리 시스템
KR20210004502A (ko) 2019-07-05 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11055188B2 (en) 2019-04-12 2021-07-06 EMC IP Holding Company LLC Offloading error processing to raid array storage enclosure
US11663139B2 (en) * 2019-04-22 2023-05-30 SK Hynix Inc. Apparatus for transmitting map information in memory system
FR3097994B1 (fr) * 2019-06-28 2022-03-11 St Microelectronics Rousset Modification d'une mémoire d'un microprocesseur sécurisé
US11127442B2 (en) * 2019-12-06 2021-09-21 Xilinx, Inc. Data transfers between a memory and a distributed compute array
US11334434B2 (en) * 2020-02-19 2022-05-17 Seagate Technology Llc Multi-level erasure system with cooperative optimization
US11675499B2 (en) * 2020-06-19 2023-06-13 Western Digital Technologies, Inc. Synchronous discovery logs in a fabric storage system
US11079939B1 (en) 2020-07-30 2021-08-03 Hewlett Packard Enterprise Development Lp Distributing I/O Q-connections of subsytems among hosts
US11314423B2 (en) * 2020-08-21 2022-04-26 Seagate Technology Llc Sync-mark detection error recovery
US11733920B2 (en) * 2020-09-10 2023-08-22 Western Digital Technologies, Inc. NVMe simple copy command support using dummy virtual function
US20210117246A1 (en) 2020-09-25 2021-04-22 Intel Corporation Disaggregated computing for distributed confidential computing environment
US11531498B2 (en) * 2020-11-20 2022-12-20 Western Digital Technologies, Inc. Peer storage device messaging over control bus
US20220187992A1 (en) * 2020-12-16 2022-06-16 Kioxia Corporation Systems and methods for data copy offload for storage devices
US20210117123A1 (en) * 2020-12-24 2021-04-22 Intel Corporation Accelerated raid rebuild offload
US11372553B1 (en) 2020-12-31 2022-06-28 Seagate Technology Llc System and method to increase data center availability using rack-to-rack storage link cable
US11573718B2 (en) 2021-02-12 2023-02-07 Western Digital Technologies, Inc. Disaggregation of control path and data path
US11818031B2 (en) 2021-03-04 2023-11-14 Dell Products L.P. Automated internet protocol (IP) route update service for ethernet layer 3 (L3) IP storage area networks (SANs)
US11805171B2 (en) * 2021-03-04 2023-10-31 Dell Products L.P. Automated ethernet layer 3 (L3) connectivity between non-volatile memory express over fabric (NVMe-oF) hosts and NVM-oF subsystems using bind
US20220300165A1 (en) * 2021-03-22 2022-09-22 Google Llc Cooperative Storage Architecture
WO2022207551A1 (en) 2021-03-29 2022-10-06 Arlanxeo Netherlands B.V. Process for producing polymers
US11507321B1 (en) 2021-06-04 2022-11-22 Western Digital Technologies, Inc. Managing queue limit overflow for data storage device arrays
US11567883B2 (en) * 2021-06-04 2023-01-31 Western Digital Technologies, Inc. Connection virtualization for data storage device arrays
US11698854B2 (en) 2021-08-25 2023-07-11 Western Digital Technologies, Inc. Global extension of a logical-to-physical region of a data storage device
WO2023217397A1 (en) 2022-05-09 2023-11-16 Arlanxeo Netherlands B.V. Process for producing polymers
US11671350B1 (en) * 2022-08-15 2023-06-06 Red Hat, Inc. Data request servicing using multiple paths of smart network interface cards

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5220653A (en) 1990-10-26 1993-06-15 International Business Machines Corporation Scheduling input/output operations in multitasking systems
US5530948A (en) 1993-12-30 1996-06-25 International Business Machines Corporation System and method for command queuing on raid levels 4 and 5 parity drives
JP4072271B2 (ja) 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7809854B2 (en) * 2002-02-12 2010-10-05 Open Design, Inc. Logical routing system
US6871263B2 (en) 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
US7162582B2 (en) * 2002-11-18 2007-01-09 Aristos Logic Corporation Caching in a virtualization system
US10075750B2 (en) * 2002-12-10 2018-09-11 Sony Interactive Entertainment America Llc Porting locally processed media data with low latency to a remote client device via various wireless links
US7996645B2 (en) * 2003-09-26 2011-08-09 Hitachi Global Storage Technologies Netherlands B.V. Log-structured file system for disk drives with shingled writing
JP4766240B2 (ja) 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US9118698B1 (en) 2005-12-02 2015-08-25 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US7962827B2 (en) 2006-03-08 2011-06-14 Marvell World Trade Ltd. Systems and methods for achieving higher coding rate using parity interleaving
US8307359B1 (en) * 2006-06-23 2012-11-06 Emc Corporation Embedded virtual storage area network using a virtual block network fabric
WO2008070191A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
TWI467370B (zh) 2009-01-23 2015-01-01 Infortrend Technology Inc 執行儲存虛擬化之儲存子系統及儲存系統架構及其方法
US8250283B1 (en) 2009-05-22 2012-08-21 Google Inc. Write-distribute command for RAID mirroring
KR101644125B1 (ko) 2009-09-22 2016-07-29 삼성전자주식회사 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
US8468534B2 (en) 2010-04-05 2013-06-18 Apple Inc. Dynamic priority queuing
US8677068B2 (en) 2010-06-18 2014-03-18 Lsi Corporation Scalable storage devices
US8473648B2 (en) 2010-12-16 2013-06-25 Lsi Corporation System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network
US8626989B2 (en) 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8706834B2 (en) 2011-06-30 2014-04-22 Amazon Technologies, Inc. Methods and apparatus for remotely updating executing processes
CN103858116B (zh) * 2011-08-09 2015-09-02 Lsi公司 I/o设备及计算主机互操作
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US9098406B2 (en) * 2012-01-23 2015-08-04 Empire Technology Development Llc Managing addressable memory in heterogeneous multicore processors
US9645917B2 (en) * 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9390055B2 (en) 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9300574B2 (en) * 2012-12-31 2016-03-29 Advanced Micro Devices, Inc. Link aggregation emulation for virtual NICs in a cluster server
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9122588B1 (en) * 2013-03-15 2015-09-01 Virident Systems Inc. Managing asymmetric memory system as a cache device
US20140280767A1 (en) * 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Web services provided from software framework
US9438665B1 (en) 2013-06-18 2016-09-06 Amazon Technologies, Inc. Scheduling and tracking control plane operations for distributed storage systems
US9053167B1 (en) 2013-06-19 2015-06-09 Amazon Technologies, Inc. Storage device selection for database partition replicas
JP6007329B2 (ja) 2013-07-17 2016-10-12 株式会社日立製作所 ストレージコントローラ、ストレージ装置、ストレージシステム
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9405623B2 (en) 2013-09-25 2016-08-02 Xyratex Technology Limited Method of, and apparatus for, layout rectification of erasure encoded storage systems
US9740409B2 (en) * 2013-12-13 2017-08-22 Ineda Systems, Inc. Virtualized storage systems
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
US9794186B2 (en) * 2014-03-27 2017-10-17 Nicira, Inc. Distributed network address translation for efficient cloud service access
US9639268B2 (en) 2014-08-21 2017-05-02 Datrium, Inc. Distributed data storage system with key-based addressing
US10380026B2 (en) 2014-09-04 2019-08-13 Sandisk Technologies Llc Generalized storage virtualization interface
US10621138B2 (en) * 2014-09-25 2020-04-14 Intel Corporation Network communications using pooled memory in rack-scale architecture
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9720596B1 (en) 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
CN107210828A (zh) * 2015-01-12 2017-09-26 Lg电子株式会社 广播信号发送装置、广播信号接收装置、广播信号发送方法和广播信号接收方法
US11099746B2 (en) 2015-04-29 2021-08-24 Marvell Israel (M.I.S.L) Ltd. Multi-bank memory with one read port and one or more write ports per cycle
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
TWI531963B (zh) 2015-06-04 2016-05-01 Accelstor Inc Data storage systems and their specific instruction enforcement methods
US9904490B2 (en) * 2015-06-26 2018-02-27 Toshiba Memory Corporation Solid-state mass storage device and method for persisting volatile data to non-volatile media
US10127101B2 (en) * 2015-08-28 2018-11-13 Intel Corporation Memory device error check and scrub mode and error transparency
US10013370B2 (en) 2015-12-29 2018-07-03 EMC IP Holding Company LLC Method and system for providing access of a storage system using a shared storage module as a transport mechanism
US10170151B2 (en) * 2016-02-29 2019-01-01 Microsemi Solutions (U.S.), Inc. Method and system for handling random access write requests for a shingled magnetic recording hard disk drive
US9780829B1 (en) * 2016-03-24 2017-10-03 Focal Point Positioning Ltd. Method, apparatus, computer program, chip set, or data structure for correlating a digital signal and a correlation code
US10164897B1 (en) * 2016-06-28 2018-12-25 Amazon Technologies, Inc. System and method for host isolation in a web-based computing system
US10289568B2 (en) 2016-07-07 2019-05-14 Microsoft Technology Licensing, Llc Application-driven storage systems for a computing system
US10476846B2 (en) * 2016-08-05 2019-11-12 The Boeing Company Data-at-rest (DAR) encryption for integrated storage media
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
US11023275B2 (en) * 2017-02-09 2021-06-01 Intel Corporation Technologies for queue management by a host fabric interface

Also Published As

Publication number Publication date
US20200004701A1 (en) 2020-01-02
US20200327074A1 (en) 2020-10-15
US10725941B2 (en) 2020-07-28
CN111433732B (zh) 2023-08-22
US11281601B2 (en) 2022-03-22
CN111433732A (zh) 2020-07-17
WO2020005337A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
CN111164574B (zh) 基于存储设备内部地址的冗余编码条带
TWI709073B (zh) 分佈式儲存系統、分佈式儲存方法及分佈式設施
US10140136B2 (en) Distributed virtual array data storage system and method
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE112019000215T5 (de) Wiederherstellungshilfe mit ausgefallener Speichervorrichtung
DE112019000194T5 (de) Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112014005570T5 (de) Deaktivieren von Seiten in einem Nand-Flash-Speicher-System
US11809707B2 (en) File operations in a distributed storage system
DE112020003277T5 (de) Erzeugen von tags für die datenzuweisung
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112019005408B4 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
US11379326B2 (en) Data access method, apparatus and computer program product
DE112022002830T5 (de) Spiegeln von daten in schreibcaches eines controllers eines nicht flüchtigen speichers
DE112020005099T5 (de) Konstruktion einer blockvorrichtung
US20210382634A1 (en) Efficient segment cleaning employing remapping of data blocks in log-structured file systems of distributed data systems
KR102133316B1 (ko) 메모리 시스템 관리
US11704053B1 (en) Optimization for direct writes to raid stripes

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0012020000

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE