DE112019000146T5 - Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung - Google Patents

Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung Download PDF

Info

Publication number
DE112019000146T5
DE112019000146T5 DE112019000146.9T DE112019000146T DE112019000146T5 DE 112019000146 T5 DE112019000146 T5 DE 112019000146T5 DE 112019000146 T DE112019000146 T DE 112019000146T DE 112019000146 T5 DE112019000146 T5 DE 112019000146T5
Authority
DE
Germany
Prior art keywords
storage
storage device
data
host
target
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
DE112019000146.9T
Other languages
English (en)
Inventor
Sanjay Subbarao
Vladislav Bolkhovitin
Anand Kulkarni
Brian Walter 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 DE112019000146T5 publication Critical patent/DE112019000146T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

Beispielhafte Multivorrichtungsspeichersysteme und -verfahren bieten disaggregierte Lese-/Schreiboperationen. Lese und/oder Schreibdatenanforderung werden von einem Host-System an eine Speichersteuerung für eine Vielzahl von Speichervorrichtungen empfangen. Eine Ziel-Dienst-Host-Speichervorrichtung wird identifiziert, die einen Zielabschnitt einer logischen Abbildung von Speicherorten beherbergt, die auf die Vielzahl von Speichervorrichtungen verteilt sind. Die Ziel-Dienst-Host-Speichervorrichtung identifiziert eine Ziel-Speichervorrichtung, die einem Zielort für die Anforderung entspricht. Eine Datenübertragung vom Hostsystem zur Ziel-Speichervorrichtung wird für die Anforderung verarbeitet und die logische Abbildung der Ziel-Dienst-Host-Vorrichtung wird aktualisiert. Die Ziel-Dienst-Host-Speichervorrichtung und die Zielspeichervorrichtung können verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen sein.

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 Rechenressourcen auf Speichervorrichtungen wie SSDs verteilen und zuverlässige Lese-/Schreib- und Entladeoperationen angesichts skalierender Speichersysteme, Laufwerksausfälle und/oder Unterbrechungen der Systemstromversorgung ermöglichen.
  • KU RZDARSTELLU NG
  • Es werden verschiedene Gesichtspunkts für Lese-/Schreiboperationen, insbesondere für verteilte Lese-/Schreiboperationen in Multivorrichtungsspeichersystemen, beschrieben. In einem innovativen Gesichtspunkt weist ein System eine Speichersteuerung auf, die für den Empfang einer Datenanforderung von einem Hostsystem konfiguriert ist, und eine Vielzahl von Speichervorrichtungen, die mit der Speichersteuerung kommunizieren. Die Speichersteuerung weist einen ersten Prozessor, einen ersten Speicher und ein Dienstabbildungsmodul auf, das in dem ersten Speicher gespeichert ist und von dem ersten Prozessor ausführbar ist, um eine Ziel-Dienst-Host-Speichervorrichtung aus einer Vielzahl von Speichervorrichtungen zu identifizieren. Die Ziel-Dienst-Host-Speichervorrichtung beherbergt einen Zielabschnitt einer logischen Abbildung von Speicherorten, die auf die Vielzahl von Speichervorrichtungen verteilt sind. Jede Speichervorrichtung weist einen zweiten Prozessor, einen zweiten Speicher, ein Speichermedium, einen Abschnitt der im zweiten Speicher gespeicherten logischen Abbildung, ein Dienst-Host-Modul, ein Medienmanagermodul und ein Aktualisierungsmodul der logischen Abbildung auf. Das Dienst-Host-Modul ist im zweiten Speicher gespeichert und durch den zweiten Prozessor ausführbar, um eine Zielspeichervorrichtung aus der Vielzahl von Speichervorrichtungen zu identifizieren. Die Zielspeichervorrichtung entspricht einem Zielspeicherort für die Datenanforderung auf der Grundlage des Abschnitts der logischen Abbildung. Der Medienmanager ist im zweiten Speicher gespeichert und durch den zweiten Prozessor ausführbar, um eine Datenübertragung zwischen dem Zielspeicherort auf dem Speichermedium oder den Speichermedien und dem Hostsystem zu verarbeiten. Das Aktualisierungsmodul der logischen Abbildung ist im zweiten Speicher gespeichert und vom zweiten Prozessor ausführbar, um den im zweiten Speicher gespeicherten Abschnitt der logischen Abbildung auf der Grundlage der Datenübertragung zwischen dem Zielspeicherort auf dem Speichermedium oder den Speichermedien und dem Hostsystem zu aktualisieren.
  • In verschiedenen Ausführungsformen weist die Vielzahl von Speichervorrichtungen jeweils weiterhin einen Pufferspeicher und eine Schnittstelle für entfernte Direktspeicherzugriffe zum Zugreifen auf den Pufferspeicher über ein Zwischenverbindungs-Fabric außerhalb der Vielzahl von Speichervorrichtungen auf. Der Medienmanager überträgt Daten zwischen dem Zielspeicherort auf dem Speichermedium oder den Speichermedien und dem Pufferspeicher. Das Hostsystem überträgt Daten zwischen dem Hostsystem und dem Pufferspeicher. Die Speichersteuerung kann weiterhin einen Puffermanager aufweisen, der im ersten Speicher gespeichert ist und vom ersten Prozessor ausgeführt werden kann. Der Puffermanager kann den Pufferspeicher der Vielzahl von Speichervorrichtungen zum Verarbeiten der Datenanforderung zuweisen, einen Datenübertragungsbefehl an die Zielspeichervorrichtung senden, um Daten zwischen dem Zielspeicherort und dem zugewiesenen Pufferspeicher zu übertragen, und einen Pufferzugriffsbefehl an das Hostsystem senden, um Daten zwischen dem Hostsystem und dem zugewiesenen Pufferspeicher zu übertragen. Der Datenübertragungsbefehl kann ausgeführt werden, nachdem ein vollständiger Streifen einer redundanten Anordnung von unabhängigen Festplatten (RAID) für die Datenanforderung im Pufferspeicher der Vielzahl von Speichervorrichtungen zusammengestellt wurde. Der Puffermanager kann weiterhin zum Serialisieren einer Vielzahl von Datenanforderungen über den Pufferspeicher jeder der Vielzahl von Speichervorrichtungen hinweg ausführbar sein. Das Speichermedium oder die Speichermedien können für den Empfang von Dateneinheiten einer vordefinierten Größe konfiguriert werden, und der Pufferspeicher kann in den Dateneinheiten der vordefinierten Größe zugewiesen werden.
  • In einigen Ausführungsformen enthält der Zielabschnitt der logischen Abbildung eine Paritätskennung für eine Ziel-Paritätsspeichervorrichtung aus der Vielzahl von Speichervorrichtungen. Die Vielzahl von Speichervorrichtungen weist weiterhin jeweils einen exklusiv-ODER-Puffer (XOR-Puffer) und ein Paritätsmodul auf, das im zweiten Speicher gespeichert ist und vom zweiten Prozessor ausgeführt werden kann. Das Paritätsmodul empfängt Daten von der Zielspeichervorrichtung, berechnet Paritätsdaten aus den empfangenen Daten und speichert die Paritätsdaten im XOR-Puffer. Das Paritätsmodul kann weiterhin ausführbar sein, um Abbildungsinformationen in Bezug auf die empfangenen Daten zu empfangen und einen Paritätsspeicherort in dem Abschnitt der logischen Abbildung, der im zweiten Speicher gespeichert ist, unter Verwendung der empfangenen Abbildungsinformationen zu aktualisieren. Die Zielspeichervorrichtung und die Ziel-Paritätsspeichervorrichtung können verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen sein. Eine logische Medienabbildung kann im zweiten Speicher gespeichert werden und Medienspeicherorte im Speichermedium oder in Medien mit einer Speichervorrichtungsschreibgröße identifizieren. Die Speichervorrichtungsschreibgröße kann größer als eine Host-Schreibgröße der Datenanforderung sein, und der Abschnitt der logischen Host-Abbildung kann die Host-Schreibgröße zum Abbilden von Datenpositionen verwenden. Die Ziel-Dienst-Host-Speichervorrichtung und die Zielspeichervorrichtung können verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen sein.
  • In einem weiteren innovativen Gesichtspunkt bietet ein computerimplementiertes Verfahren eine verteilte Schreibverarbeitung. Eine Schreibdatenanforderung wird von einem Host-System an eine Speichersteuerung für eine Vielzahl von Speichervorrichtungen empfangen. Eine Ziel-Dienst-Host-Speichervorrichtung wird aus der Vielzahl von Speichervorrichtungen identifiziert. Die Ziel-Dienst-Host-Speichervorrichtung beherbergt einen Zielabschnitt einer logischen Abbildung von Speicherorten, die auf die Vielzahl von Speichervorrichtungen verteilt sind. Eine Ziel-Speichervorrichtung wird aus der Vielzahl von Speichervorrichtungen identifiziert. Die Zielspeichervorrichtung entspricht einem Zielspeicherort für die Schreibdatenanforderung. Für die Schreibdatenanforderung wird eine Datenübertragung vom Hostsystem auf das Zielspeichermedium durchgeführt. Der Zielabschnitt der logischen Abbildung in der Ziel-Dienst-Hostspeichervorrichtung wird auf der Grundlage der Datenübertragung zwischen dem Hostsystem und der Zielspeichervorrichtung aktualisiert. Die Ziel-Dienst-Host-Speichervorrichtung und die Zielspeichervorrichtung können verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen sein.
  • In verschiedenen Ausführungsformen weist das Verarbeiten der Datenübertragung weiterhin das Übertragen von Daten zwischen dem Hostsystem und einem Pufferspeicher in der Zielspeichervorrichtung und das Übertragen von Daten zwischen dem Pufferspeicher und dem Zielspeicherort auf einem Speichermedium der Zielspeichervorrichtung auf. Das Verfahren kann weiterhin aufweisen: Zuweisen des Pufferspeichers der Vielzahl von Speichervorrichtungen zum Verarbeiten der Schreibdatenanforderung, Senden eines Pufferzugriffsbefehls an das Hostsystem, um Daten zwischen dem Hostsystem und dem zugewiesenen Pufferspeicher zu übertragen, und Senden eines Datenübertragungsbefehls an die Zielspeichervorrichtung, um Daten zwischen dem zugewiesenen Pufferspeicher und dem Zielspeicherort auf dem Speichermedium oder den Medien der Zielspeichervorrichtung zu übertragen. Das Verfahren kann weiterhin das Zusammenstellen eines vollen Streifens für die Schreibdatenanforderung im Pufferspeicher der Zielspeichervorrichtung aufweisen. Der Datenübertragungsbefehl kann gesendet werden, nachdem der volle Streifen für die Datenanforderung im Pufferspeicher zusammengestellt worden ist. Das Verfahren kann weiterhin das Serialisieren einer Vielzahl von Schreibdatenanforderungen über eine Vielzahl von Pufferspeichern in der Vielzahl von Speichervorrichtungen aufweisen. Das Speichermedium oder die Speichermedien können für den Empfang von Dateneinheiten einer vordefinierten Größe konfiguriert werden, und der Pufferspeicher wird in den Dateneinheiten der vordefinierten Größe zugewiesen.
  • In einigen Ausführungsformen weist das Verfahren weiterhin das Identifizieren einer Ziel-Paritätsspeichervorrichtung aus der Vielzahl von Speichervorrichtungen auf. Die Ziel-Paritätsspeichervorrichtung empfängt Daten von der Zielspeichervorrichtung, berechnet Paritätsdaten aus den empfangenen Daten; und speichert die Paritätsdaten in einem XOR-Puffer der Ziel-Paritätsspeichervorrichtung. Das Verfahren kann weiterhin das Empfangen von Abbildungsinformationen bezüglich der empfangenen Daten in der Ziel-Paritätsspeichervorrichtung und das Aktualisieren eines Paritätsspeicherorts in einem Abschnitt der in der Ziel-Paritätsspeichervorrichtung gespeicherten logischen Abbildung unter Verwendung der empfangenen Abbildungsinformationen aufweisen. Die Zielspeichervorrichtung und die Ziel-Paritätsspeichervorrichtung können verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen sein.
  • Ein noch weiterer innovativer Gesichtspunkt ist ein System mit verteilten Schreiboperationen. Es werden Mittel zum Empfangen einer Schreibdatenanforderung von einem Hostsystem an eine Speichersteuerung für eine Vielzahl von Speichervorrichtungen bereitgestellt. Es werden Mittel zum Identifizieren einer Ziel-Dienst-Host-Speichervorrichtung aus der Vielzahl von Speichervorrichtungen bereitgestellt. Die Ziel-Dienst-Host-Speichervorrichtung beherbergt einen Zielabschnitt einer logischen Abbildung von Speicherorten, die auf die Vielzahl von Speichervorrichtungen verteilt sind. Es werden Mittel zum Identifizieren einer Zielspeichervorrichtung aus der Vielzahl von Speichervorrichtungen bereitgestellt. Die Zielspeichervorrichtung entspricht einem Zielspeicherort für die Schreibdatenanforderung. Es werden Mittel für eine Datenübertragung vom Hostsystem auf das Zielspeichermedium für die Schreibdatenanforderung bereitgestellt. Es werden Mittel für die Aktualisierung des Zielabschnitts der logischen Abbildung in der Ziel-Dienst-Hostspeichervorrichtung auf der Grundlage der Datenübertragung zwischen dem Hostsystem und der Zielspeichervorrichtung bereitgestellt. Die Ziel-Dienst-Host-Speichervorrichtung und die Ziel-Speichervorrichtung sind verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen.
  • 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 zum Verbessern der Skalierbarkeit und Zuverlässigkeit von disaggregierten Lese-/Schreiboperationen ein, die auf der Verteilung von Lese-/Schreiboperationen und der damit verbundenen logischen Abbildung auf eine Vielzahl von 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 den Betrieb einer 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 für verteilte Leseoperationen unter Verwendung einer Speichervirtualisierungssteuerung.
    • 6 veranschaulicht ein Beispiel für ein Verfahren für verteilte Schreiboperationen unter Verwendung einer Speichervirtualisierungssteuerung.
    • 7 veranschaulicht ein Beispiel für ein Verfahren für verteilte Lese-/Schreiboperationen unter Verwendung eines Puffermanagers.
    • 8 veranschaulicht ein Beispiel für ein Verfahren für verteilte Lese-/Schreiboperationen unter Verwendung einer Dienst-Host-Speichersteuerung.
    • 9 veranschaulicht ein Beispiel für ein Verfahren für verteilte Lese-/Schreiboperationen unter Verwendung einer Zielspeichervorrichtung.
    • 10 veranschaulicht ein Beispiel für ein Verfahren für verteilte Lese-/Schreiboperationen unter Verwendung einer Paritätsspeichervorrichtung.
  • 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 204 ü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) 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 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:
      • • Datenlesemodul 218 zum Verwalten von Leseoperationen zwischen dem Host und den Speichervorrichtungen;
      • • Datenschreibmodul 220 zum Verwalten von Schreiboperationen zwischen dem Host und den Speichervorrichtungen; und
      • • RAID-Striping-Modul 222 zum Verwalten des RAID-Striping über die Speichervorrichtungen in der Anordnung.
  • 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 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 4KB-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. 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-LB A zugreifen, um auf die Speicherplatzabbildungsinformationen der Speichervorrichtung 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 Puffern 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 können Pufferbefehle vom Vorrichtungspuffermanager 216 an Speichervorrichtungen 120 einen Pufferausräumbefehl 216.2 einschließen. Beispielsweise kann der Pufferausräumbefehl 216.2 an eine oder mehrere der Speichervorrichtungen 120 gesendet werden, damit die Zielspeichervorrichtung den Inhalt eines oder mehrerer Puffer auf ein Medium oder mehrere Medien schreibt und diese Puffer zur späteren Verwendung löscht.
  • In einigen Ausführungsformen kann das Datenlesemodul 218 eine Reihe von Aktionen ausführen, um die Ausführung eines Host-Lesebefehls zwischen Speichervorrichtungen 120 und Host 102 zu koordinieren. Wenn ein Host-Lesebefehl vom Anforderungs-Handler 212 empfangen wird, kann dieser das Datenlesemodul 218 initiieren. Das Datenlesemodul 218 kann das Dienstabbildungsmodul 214 verwenden, um eine Speichervorrichtungs-ID auf der Grundlage der im Host-Lesebefehl identifizierten Host-LBA zu identifizieren. Der FTL-Abrufbefehl 218.1 kann von der SVC 110 unter Verwendung der Speichervorrichtungs-ID an die Ziel-Dienst-Host-Speichervorrichtung gesendet werden. 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-Lesebefehl identifiziert.
  • Der Vorrichtungspuffer-Zuweiser 218.2 kann den Vorrichtungspuffermanager 216 verwenden, um eine Pufferzuweisung in der Zielspeichervorrichtung anzufordern. Der Vorrichtungspuffer-Lesebefehl 218.3 wird an die Zielspeichervorrichtung gesendet, um eine Datenübertragung vom Medium oder den Medien der Zielspeichervorrichtung zum zugewiesenen Pufferplatz zu initiieren. Der Pufferzugriffsbefehl 218.4 wird an eine RDMA-Engine gesendet, die in der Lage ist, die Lesedaten im zugewiesenen Pufferraum an die im Host-Lesebefehl enthaltene Host-Adresse zu schieben (und/oder zu ziehen). Zum Beispiel kann eine RDMA-Engine 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. Wenn die Datenübertragung zum Host abgeschlossen ist, sendet die SVC 110 möglicherweise den Status Lesen abgeschlossen 218.5 an den Host.
  • In einigen Ausführungsformen kann das Datenschreibmodul 220 eine Reihe von Aktionen ausführen, um die Ausführung eines Host-Schreibbefehls zwischen Speichervorrichtungen 120 und Host 102 zu koordinieren. Wenn ein Host-Schreibbefehl vom Anforderungs-Handler 212 empfangen wird. Er kann das Datenschreibmodul 220 initiieren. Das Datenschreibmodul 220 kann den Schreibserialisierer 220.1 verwenden, um zu bestimmen, welcher Speichervorrichtungs-ID eine neue Schreiboperation zugewiesen werden soll und/oder wie eine Reihe von Schreiboperationen über mehrere Speichervorrichtungs-IDs hinweg zugewiesen werden soll. In einigen Ausführungsformen kann der Schreibserialisierer 220.1 einer Speichervorrichtung eine Reihe von Host-Datenschreiboperationen, wie 4K-Datenblöcke, zuordnen, um eine größere Schreibgranularität, wie 96K- oder 192K-Multiebenenseitengrößen, zu füllen, bevor diese Host-Daten auf ein Speichermedium oder -medien übertragen werden. Zum Beispiel kann der Schreibserialisierer 220.1 Host-Schreiboperationen zu einer Speichervorrichtung zuordnen, um einen Datenpufferplatz zu füllen, der der bevorzugten Schreibgranularität der Speichervorrichtung entspricht. In einigen Ausführungsformen können Speichervorrichtungen für eine große Schreibgranularität konfiguriert werden, um die Speichergröße der Speichervorrichtungs-FTL zu reduzieren und Speicherplatz für die Host-FTL bereitzustellen.
  • Der Vorrichtungspuffer-Zuweiser 220.2 kann den Vorrichtungspuffermanager 216 verwenden, um einen bestimmten Pufferplatz in der Zielspeichervorrichtung für den Schreibbefehl zu identifizieren. Zum Beispiel kann ein Pufferplatz in der Pufferzuweisungstabelle 216.1 zugewiesen werden, und es kann eine Pufferzuweisungsmeldung an die Zielspeichervorrichtung gesendet werden, die den zu verwendenden Pufferplatz angibt. In einigen Ausführungsformen kann die Pufferzuweisung der bevorzugten Schreibgranularität der Zielspeichervorrichtung entsprechen und der Puffer kann für eine Reihe kleinerer Host-Schreiboperationen zugewiesen werden, um den zugewiesenen Pufferplatz zu füllen.
  • Ein Host-Schreibbefehl 220.3 kann an eine RDMA-Engine gesendet werden, die die Quelle der Schreibdaten an einem Host-Platz und den Pufferplatz in der Zielspeichervorrichtung angibt. Zum Beispiel kann eine RDMA-Engine 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. Das Datenschreibmodul 220 kann das Dienstabbildungsmodul 214 verwenden, um eine Speichervorrichtungs-ID auf der Grundlage der im Schreibbefehl identifizierten Host-LBA zu identifizieren.
  • Der FTL-Aktualisierungsbefehl 220.4 kann 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 220.4 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 zur Zielspeichervorrichtung abgeschlossen ist und die FTL-Abbildung aktualisiert wurde, sendet die SVC 110 möglicherweise einen Schreiben abgeschlossen Status 218.5 an den Host. 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 222 in Verbindung mit dem Schreibserialisierer 220.1 und dem Vorrichtungspuffermanager 216 arbeiten, um Schreiboperationen in RAID-Streifen zuzuweisen. Das RAID-Striping-Modul 222 kann jeden Abschnitt eines RAID-Streifens an Speichervorrichtungen 120 übergeben. In einigen Ausführungsformen kann nach dem Schreiben eines ganzen Streifens der Pufferausräumbefehl 216.2 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.
  • 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 die Funktionen einer NVM-Steuerung und verteilte FTL-Dienste 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 RDMA-Schnittstelle 304, der NVM-Schnittstelle 308 und einer beliebigen Anzahl von Zusatzmodulen wie dem XOR-Modul 314 und dem FTL-Speicher 312 gekoppelt werden, um den Betrieb dieser Komponenten zu koordinieren. 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.
  • In einigen Ausführungsformen kann die RDMA-Schnittstelle 304 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine sein, die den Fernzugriff auf die Puffer 306 zur Datenverwaltung ermöglicht. Dies kann den lokalen Direktspeicherzugriff (DMA) auf Puffer 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 von/zu den Puffern 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 XOR-Modul 314 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine sein, um exklusiv-ODER-Berechnungen durchzuführen oder eine andere Löschcodierungsoperation zu implementieren. Das XOR-Modul 314 kann mehrere im Speicher 320 gespeicherte Funktionen und/oder die XOR- oder andere Löschcodeverarbeitung von Daten unterstützen, die zu oder von den Puffern 306, mit oder ohne RDMA-Schnittstelle 304, und/oder FTL-Speicher 312 übertragen werden.
  • 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, XOR-Modul 314, FTL-Speicher 312 und Speicher 320 angeschlossen werden. Zum Beispiel könne ein zusätzliches Modul bzw. zusätzliche Module 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. 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 die Puffer 306 in Verbindung mit der Koordination von der SVC 110 es dem Host 102 ermöglichen, die im Host-Schreibbefehl zu speichernden Daten an die Puffer 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 die Puffer 306 in Verbindung mit der Koordination von der SVC 110 es dem Host 102 ermöglichen, die im Host-Lesebefehl zu speichernden Daten von den Puffern 306 in der Speichervorrichtung 120 zu empfangen, ohne dass sie die SVC 110 oder eine andere Speichersteuerung passieren.
  • Wie vorstehend erläutert, wird ein Speichermedium (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.
  • Wenn zum Beispiel 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, werden die Seiten (falls vorhanden) mit gültigen Daten in diesem Block gelesen und neu in einen neuen Block geschrieben, 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. Da Flash-Speicher nur eine begrenzte Anzahl von Malen programmiert und gelöscht werden kann, hat die Effizienz des Algorithmus, der verwendet wird, um den nächsten Block bzw. die nächsten Blöcke zum erneuten Schreiben und Löschen auszuwählen, einen erheblichen Einfluss auf die Lebensdauer und Zuverlässigkeit von Flash-basierten Speichersystemen.
  • 3 ist ein Blockdiagramm, das verteilte 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 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 mit der RDMA-Schnittstelle 304, den Puffern 306, der NVM-Schnittstelle 308, den NVM-Vorrichtungen 140.1, dem XOR-Modul 314, dem FTL-Speicher 312 und einem oder mehreren Zusatzmodulen 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 RAM-Schnittstelle (nicht dargestellt) 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 Puffer 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 Puffer 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:
    • • Host-FTL-Dienste 322 zum Verwalten von Host-FTL-Daten (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.1-140.1.n;
    • • Pufferzugriffsmodul 326 zum Überwachen der Inhalte und des Zugriffs auf die Puffer 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 XOR-Modul 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 können die Host-FTL-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 Host-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 ihren Medien hosten, und Host-FTL-Abfrageanforderungen für diese LBAs werden an die Host-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. 4K-Datenblöcke. Die FTL-Abbildung 312.2 der Speichervorrichtung kann nach LBA-Speicherorten für Medien zugewiesen und/oder organisiert werden, die einer Schreibgröße des Mediums entsprechen, die ein größeres Vielfaches der Schreibgröße des Hosts ist. Die Schreibgröße des Mediums kann zum Beispiel auf eine Seitengröße eingestellt werden, wie eine Multiebenenseitengröße von 96K oder 192K. 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. 4K-Host-Schreiboperationen auf Speichermedienplätzen) und entladener Host-FTL mit reduziertem Speicher für die Speichervorrichtungs-FTL bei höherer Medienschreibgranularität (z. B. 96K- oder 192K-Medienschreiboperationen) umgeschaltet werden können, ohne die Hardware des FTL-Speichers 312 zu ändern.
  • Die Host-FTL-Dienste 322 können eine Reihe von Diensten oder Funktionen zum Unterstützen verteilter Lese-/Schreib- und Laufwerk-zu-Laufwerk-Kommunikation einschließen. Die Host-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 Host-FTL-Dienst 322 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-Abbildungswiederherstellung usw. einschließen.
  • Die Host-FTL-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 Host-FTL-Dienst 322 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 Puffer 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 Anmeldepuffer 306 protokollieren.
  • In einigen Ausführungsformen fungiert die Speichervorrichtung 120 auch als Paritätsspeichervorrichtung und die Host-FTL-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 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 Anmeldepuffer 306 protokollieren. Der Paritäts-Host-FTL-Aktualisierer 322.2 kann einen Status an die Host-FTL-Dienste 322 der Speichervorrichtung, die die Anforderung gesendet hat, zurücksenden.
  • 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 Puffer 306 verwendet werden. Zum Beispiel können Speicherplätze als 4KB- oder 8KB-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 Verwaltung von fehlerhaften Blöcken, die Überbereitstellung von fehlerhaften Blöcken und die Zuweisung von 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 (BCH)-Codes) 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 die Puffer 306 und Leseoperationen aus den Puffern 306 zum Schreiben in LBA-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 der Puffer 306 zu verwalten. Lokale Operationen durch den NVM-Manager 324 können beispielsweise Schreib- und Leseoperationen in Puffer 306 einschließen, Lese-/Schreiboperationen können die Koordinaten des Speicherplatzes in Puffer 306 sowohl für den lokalen als auch für den Fernzugriff einschließen, und andere verteilte Operationen können den Speicherplatz in Puffer 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 Host-FTL-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 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 der Puffer 306 in NVM-Vorrichtungen 140.1 zu schreiben und das Pufferzugriffsmodul 326, den Inhalt der Puffer 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. Das verteilte Lesemodul 328 kann einen Lesebefehl am Lesebefehls-Handler 328.1 empfangen. 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 in Puffern 306 einschließen.
  • Das verteilte Lesemodul 328 kann dann eine Medienleseoperation 328.2 initiieren. Zum Beispiel kann Medienleseoperation 328.2 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 in Puffern 306 angeben, in den der NVM-Manager 324 die Daten schreiben kann. In einigen Ausführungsformen kann die Medienleseoperation 328.2 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 Puffern 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 Puffern 306 bereit sind, einen Status Lesen abgeschlossen 328.3 an das anfordernde System senden. Das anfordernde System kann dann in der Lage sein, die Host-Leseoperationen auf der Grundlage der im zugewiesenen Pufferort in den Puffern 306 verfügbaren Daten fortzusetzen. In einigen Ausführungsformen kann das verteilte Lesemodul 328 eine Push-Übertragung von Daten aus den Puffern 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. Das verteilte Schreibmodul 330 kann einen Schreibbefehl am Schreibbefehls-Handler 330.1 empfangen. 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 in den Puffern 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 in den Puffern 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 330.2 initiieren. Beispielsweise kann die Medienleseoperation 328.2 Anweisungen an den NVM-Manager 324 einschließen, eine Leseoperation aus dem zugewiesenen Pufferort in den Puffern 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 den Puffern 306 und beim Schreiben in die NVM-Vorrichtungen 140.1 einen Status Schreiben abgeschlossen 330.3 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-Übertragung 332.1 kann es der Paritätsspeichervorrichtung ermöglichen, für eine Schreibanforderung Daten aus dem Puffer der Zielspeichervorrichtung zu ziehen und in die lokalen Puffer 306 zu schreiben. Beispielsweise kann die Puffer-zu-Puffer-Übertragung 332.1 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. Die Puffer-zu-Puffer-Übertragung 332.1 kann einen XOR-Puffer unter Verwendung des Pufferzugriffsmoduls 326 und/oder entsprechend der Identifizierung durch einen entfernten Puffermanager zuweisen. Die Puffer-zu-Puffer-Übertragung 332.1 kann die Host-Schreibdaten in den Puffern des Schreibdatenspeichers in den XOR-Puffer übertragen.
  • Die Paritätsvorrichtung XOR 332.2 kann lokale Paritätsstreifendaten von NVM-Vorrichtungen 140.1 unter Verwendung des NVM-Managers 324 lesen, das XOR-Modul 314 verwenden, um den Inhalt des XOR-Puffers mit den lokalen Paritätsstreifendaten zu XOR-verknüpfen, und die resultierenden Daten zurück in den XOR-Puffer schreiben. Der Inhalt des XOR-Puffers kann dann zur Paritätsspeicherung in die NVM-Vorrichtungen 140.1 geschrieben werden. In einigen Ausführungsformen kann der Inhalt des XOR-Puffers in NVM-Vorrichtungen 140.1 geschrieben werden, wenn ein separater Befehl von einem entfernten Puffermanager, wie SVC 110, empfangen wird. Beispielsweise kann es dem XOR-Puffer 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 das Datenspeichersystem 100 gemäß einer verteilten Leseoperation betrieben werden, um Abbildungsinformationen von einer Ziel-Dienst-Host-Speichervorrichtung zu identifizieren, Pufferspeicher für den Transfer von der Speichervorrichtung zum Host zuzuweisen und die aus der Zielspeichervorrichtung und dem Host gelesenen Daten zu koordinieren. Zum Beispiel kann eine Speichervirtualisierungssteuerung (z. B. SVC 110) einen oder mehrere Schritte in der Kommunikation mit einem Host (z. B. Host 102), einer oder mehrerer Speichervorrichtungen (z. B. Speichervorrichtungen 120) und einer oder mehreren Datenübertragungs-Engines (z. B. RDMA-Engines 420, 402.1.1) gemäß dem durch die Blöcke 510-590 in 5 dargestellten Verfahren 500 ausführen.
  • In Block 510 kann eine Lesedatenanforderung vom Datenspeichersystem empfangen werden. Wenn beispielsweise ein Host, Server oder ein anderes Netzwerksystem, das das Datenspeichersystem zur Datenspeicherung verwendet, Daten aus der Speicheranordnung lesen muss, kann es eine Host-Lesedatenanforderung über eine Netzwerkschnittstelle an das Speichersystem senden. Die Lesedatenanforderung kann innerhalb des Speichersystems an ein Anforderungsbehandlungsmodul, z. B. ein Anforderungsbehandlungsmodul in einer SVC oder einer anderen Speichersystemkomponente, weitergeleitet werden.
  • In Block 520 wird eine Ziel-Dienst-Host-Speichervorrichtung identifiziert. Zum Beispiel kann der Host-LBA-Bereich in einer Funktions- oder Tabellensuche verwendet werden, um den Abschnitt (oder die Abschnitte) der logischen Abbildung zu identifizieren, in dem die LBA-Zuweisungsinformationen gespeichert sind. Es kann eine Speichervorrichtungs-ID für die Ziel-Dienst-Host-Speichervorrichtung zurückgegeben werden.
  • In Block 530 kann ein Abfragebefehl für die logische Abbildung an die Speichervorrichtung (oder die Speichervorrichtungen) gesendet werden, die in Block 520 identifiziert wird (werden). Zum Beispiel kann, auf der Grundlage der Speichervorrichtungs-ID und des Host-LBA-Bereichs in der Host-Lesedatenanforderung, der Abfragebefehl für die logische Abbildung an die Speichervorrichtung adressiert werden, die den relevanten Abschnitt der logischen Abbildung mit dem Host-LBA-Bereich als Argument für das Abfragen der Abbildungsinformationen enthält.
  • In Block 540 kann eine Antwort vom Abfragebefehl für die logische Abbildung einschließlich der Abbildungsinformationen vom Host zur Speichervorrichtung empfangen werden. Zum Beispiel kann die Host-Speichervorrichtung des Ziel-Dienst-Hosts den Abfragebefehl für die logische Abbildung verarbeitet und die Antwort zurückgegeben haben.
  • In Block 550 können ein Zielspeichervorrichtung und ein Speicherort für den Lesebefehl identifiziert werden. Die von der Ziel-Dienst-Host-Speichervorrichtung empfangenen Abbildungsinformationen können z. B. eine Speichervorrichtungs-ID, einen LBA-Bereich und andere FTL-Abbildungsinformationen einschließen, und die relevanten Informationen können aus der Antwort extrahiert werden.
  • In Block 560 kann im Datenspeichersystem ein Pufferspeicher zum Puffern der Lesedaten beim Lesen vom Medium oder den Medien in der Zielspeichervorrichtung zugewiesen werden. Zum Beispiel kann ein Abschnitt des Pufferspeichers in der Zielspeichervorrichtung für die Lesedaten zugewiesen werden, wobei der Pufferspeicherort über das Zwischenverbindungs-Fabric des Speichersystems unter Verwendung eines Direktspeicherzugriffsprotokolls wie RDMA adressierbar ist.
  • In Block 570 kann ein Lesebefehl an die Zielspeichervorrichtung gesendet werden. Der Vorrichtungslesebefehl kann z. B. auf der Grundlage der Speichervorrichtungs-ID adressiert werden und den zu lesenden LBA-Bereich und den Pufferort, an den er übertragen werden soll, identifizieren.
  • In Block 580 kann von der Zielspeichervorrichtung ein Status Lesen abgeschlossen empfangen werden. Zum Beispiel, wenn die Zielspeichervorrichtung die entsprechende Speichervorrichtung LB As erfolgreich vom Speichermedium oder den Speichermedien gelesen und die entsprechenden Daten an den identifizierten Pufferort geschrieben hat.
  • In Block 590 kann eine Host-Datenübertragung vom Pufferspeicher zu einem Host-Speicherort eingeleitet werden. Zum Beispiel kann ein Direktspeicherzugriffsprotokoll, wie RDMA, in einer Datenübertragungs-Engine initiiert werden, um die Daten aus dem Speicherpuffer an den Host-Speicherort zu schieben, die Daten aus dem Speicherpuffer an den Host-Speicherort zu ziehen oder sie anderweitig über die Zwischenverbindungs- und Netzwerk-Fabrics zwischen den Speichervorrichtungen und dem Host zu übertragen. In einigen Ausführungsformen kann eine RDMA-Engine in den Fabrics oder Schnittstellen, wie eine Netzwerkschnittstellenkarte, den Host-Datenübertragungsbefehl empfangen und die Übertragung von einer RDMA-Schnittstelle in der Speichervorrichtung zu einer RDMA-Schnittstelle im Host über ihre jeweiligen Fabrics ausführen.
  • Wie in 6 dargestellt, kann das Datenspeichersystem 100 gemäß einer verteilten Schreiboperation betrieben werden, um Pufferspeicher für die Übertragung vom Host zur Speichervorrichtung zuzuweisen, Abbildungsinformationen auf einer Ziel-Dienst-Host-Speichervorrichtung zu identifizieren, die aktualisiert werden müssen, und das Schreiben von Daten vom Host und dem Zielspeichervorrichtung zu koordinieren. Zum Beispiel kann eine Speichervirtualisierungssteuerung (z. B. SVC 110) einen oder mehrere Schritte in der Kommunikation mit einem Host (z. B. Host 102), einer oder mehrerer Speichervorrichtungen (z. B. Speichervorrichtungen 120) und einer oder mehreren Datenübertragungs-Engines (z. B. RDMA-Engines 420, 402.1.1) gemäß dem durch die Blöcke 510-590 in 6 dargestellten Verfahren 600 ausführen.
  • In Block 610 kann eine Schreibdatenanforderung vom Datenspeichersystem empfangen werden. Wenn beispielsweise ein Host, Server oder ein anderes Netzwerksystem, das das Datenspeichersystem zur Datenspeicherung verwendet, Daten in die Speicheranordnung schreiben muss, kann es eine Host-Schreibdatenanforderung über eine Netzwerkschnittstelle an das Speichersystem senden. Die Schreibdatenanforderung kann innerhalb des Speichersystems an ein Anforderungsbehandlungsmodul, z. B. ein Anforderungsbehandlungsmodul in einer SVC oder einer anderen Speichersystemkomponente, weitergeleitet werden.
  • In Block 620 kann im Datenspeichersystem ein Pufferspeicher zum Puffern der Schreibdaten vom Host zugewiesen werden, bevor sie auf das Medium oder die Medien in der Zielspeichervorrichtung geschrieben werden. Zum Beispiel kann ein Abschnitt des Pufferspeichers in der Zielspeichervorrichtung für die Schreibdaten zugewiesen werden, wobei der Pufferspeicherort über das Zwischenverbindungs-Fabric des Speichersystems unter Verwendung eines Direktspeicherzugriffsprotokolls wie RDMA adressierbar ist. In einigen Ausführungsformen kann die SVC eine Logik für die Zuweisung neuer Schreibanforderungen an die Speichervorrichtungen einschließen, einschließlich einer Schreib- und/oder Puffer-Serialisierungslogik unter Verwendung einer Funktion oder Tabelle von Speichervorrichtungs-IDs. In einigen Ausführungsformen kann die Pufferzuweisung der Zielspeichervorrichtung auf der Grundlage der Speicher-ID für die Schreiboperation mitgeteilt werden.
  • In Block 630 kann eine Host-Datenübertragung vom Host-Speicher zum zugewiesenen Pufferspeicherplatz initiiert werden. Zum Beispiels kann ein Direktspeicherzugriffsprotokoll, wie RDMA, in einer Datenübertragungs-Engine initiiert werden, um die Daten von dem Host-Speicherort in den Pufferspeicher zu schieben, die Daten von dem Host-Speicherort in den Pufferspeicher zu ziehen oder sie anderweitig über die Zwischenverbindungs- und Netzwerk-Fabrics zwischen den Speichervorrichtungen und dem Host zu übertragen. In einigen Ausführungsformen kann eine RDMA-Engine in den Fabrics oder Schnittstellen, wie eine Netzwerkschnittstellenkarte, den Host-Datenübertragungsbefehl empfangen und die Übertragung von einer RDMA-Schnittstelle in der Speichervorrichtung zu einer RDMA-Schnittstelle im Host über ihre jeweiligen Fabrics ausführen.
  • In Block 640 kann eine Ziel-Dienst-Host-Speichervorrichtung identifiziert werden. Zum Beispiel kann der Host-LBA-Bereich in einer Funktions- oder Tabellensuche verwendet werden, um den Abschnitt (oder die Abschnitte) der logischen Abbildung zu identifizieren, in dem die LBA-Zuweisungsinformationen gespeichert sind. Es kann eine Speichervorrichtungs-ID für die Ziel-Dienst-Host-Speichervorrichtung zurückgegeben werden.
  • In Block 650 kann ein Aktualisierungsbefehl für die logische Abbildung an die Speichervorrichtung (oder die Speichervorrichtungen) gesendet werden, die in Block 640 identifiziert wird (werden). Beispielsweise kann auf der Grundlage der Speichervorrichtungs-ID der Host-Speichervorrichtung des Ziel-Dienst-Hosts, des Host-LBA-Bereichs in der Host-Schreibdatenanforderung und der Zielspeichervorrichtung, in der der Pufferspeicher zugewiesen wurde, der Aktualisierungsbefehl für die logische Abbildung an die Speichervorrichtung adressiert werden, die den relevanten Abschnitt der logischen Abbildung enthält, wobei der Host-LBA-Bereich und die Zielspeichervorrichtungs-ID als Argumente für den Zugriff auf und die Aktualisierung der Abbildungsinformationen dienen. In einigen Ausführungsformen können die Host-Speichervorrichtung des Ziel-Dienstes, die Zielspeichervorrichtung und/oder eine RAID-bezogene Funktion die Datenübertragung vom zugewiesenen Pufferspeicher zum Speichermedium oder zu den Speichermedien in der Zielspeichervorrichtung (und/oder Paritätsspeichervorrichtung) initiieren. In einigen Ausführungsformen können auch zusätzliche Argumente im Zusammenhang mit Paritätsspeichervorrichtungen und/oder RAID-Striping eingeschlossen sein. Zum Beispiel kann die Ziel-Host-Speichervorrichtung Host-FTL-Dienste für die Koordination von Paritätsschreiboperationen und die Abbildung von Informationsaktualisierungen unter Verwendung von Laufwerk-zu-Laufwerk-Kommunikation in der Speicheranordnung einschließen.
  • In Block 660 kann eine Antwort vom Aktualisierungsbefehl der logischen Abbildung empfangen werden, um mitzuteilen, dass Daten von den Speichervorrichtungen empfangen wurden und die logischen Abbildungsinformationen aktualisiert wurden. Zum Beispiel kann die Host-Speichervorrichtung des Ziel-Dienst-Hosts die Änderungen in der logischen Abbildung auf der Grundlage der neuen Schreiboperationen (und der damit verbundenen Paritätsschreiboperationen) berechnet und protokolliert und die Statusantwort zurückgesendet haben.
  • In Block 670 wird ein Status Schreiben abgeschlossen an den Host gesendet. Zum Beispiel, wenn die Host-Speichervorrichtung (oder Speichervorrichtungen) des Ziels-Dienst-Hosts die entsprechenden Host-LBAs erfolgreich aktualisiert hat (haben) und alle Daten in Speichervorrichtungspuffer geschrieben wurden. Der Status Schreiben abgeschlossen kann den Abschluss des Schreibens von Daten aus den Puffern der Speichervorrichtungen auf das Speichermedium oder die Speichermedien widerspiegeln oder auch nicht.
  • Wie in 7 dargestellt, kann das Datenspeichersystem 100 gemäß einer Pufferverwaltungsoperation betrieben werden, um verteilte Lese-/Schreiboperationen und/oder andere verteilte oder Laufwerk-zu-Laufwerk-Dienste zu unterstützen. Zum Beispiel kann eine Speichervirtualisierungssteuerung (z. B. SVC 110) einen Puffermanager einschließen und einen oder mehrere Schritte in der Kommunikation mit einem Host (z. B. Host 102), einer oder mehrerer Speichervorrichtungen (z. B. Speichervorrichtungen 120) und einer oder mehreren Datenübertragungs-Engines (z. B. RDMA-Engines 420, 402.1.1) gemäß dem durch die Blöcke 710-760 in 7 dargestellten Verfahren 700 ausführen.
  • In Block 710 können Pufferzuweisungen serialisiert werden. Wenn z. B. ein Host-Schreibbefehl ausgeführt wird, kann der Puffermanager die Reihenfolge bestimmen, in der die Schreiboperationen über die Puffer der Speichervorrichtungen in der Anordnung verteilt werden sollen. Pufferzuweisungen können auch für andere Operationen serialisiert werden, wie Speicherbereinigung, Wiederherstellungen oder andere Aktivitäten, bei denen Speicher-, E/A- und/oder Verarbeitungseffizienz durch die Reihenfolge der Puffernutzung erreicht werden können. In einigen Ausführungsformen können die Pufferzuweisungen serialisiert werden, um RAID-Striping zu unterstützen.
  • In Block 720 kann im Datenspeichersystem Pufferspeicher zugewiesen werden. Zum Beispiel kann ein Abschnitt des Pufferspeichers in einer oder mehreren Speichervorrichtungen für Lesedaten, Schreibdaten, Paritäts-/XOR-Daten, Protokolldaten oder andere Speicherzuweisungen für Lese-/Schreiboperationen oder andere verteilte Dienste zugewiesen werden. Die Pufferorte können über das Zwischenverbindungs-Fabric des Speichersystems mit Hilfe eines Direktpeicherzugriffsprotokolls, wie RDMA, adressierbar sein. In einigen Ausführungsformen kann die Pufferzuweisung den Speichervorrichtungen mitgeteilt werden, die den Pufferort enthalten, und/oder den Speichervorrichtungen oder anderen Komponenten, die auf den Pufferort zugreifen.
  • In Block 730 können Pufferplätze serialisiert und zum Aufbau eines vollständigen RAID-Streifens zugewiesen werden. Zum Beispiel können Schreibbefehle, die Host-Schreiboperationen einer ausgewählten RAID-Streifentiefe entsprechen, sequentiell mehreren Speichervorrichtungen in der Anordnung, die an einer RAID-Gruppe teilnimmt, zugewiesen werden, und der Puffermanager kann verfolgen, wann den Speichervorrichtungen ein vollständiger Streifen mit Schreibdaten zugewiesen wurde.
  • In Block 740 wird der Status RAID-Streifenschreiboperation abgeschlossen empfangen. Beispielsweise kann ein RAID-Striping-Modul die Statusmeldungen der Speichervorrichtungen über den Status Schreiboperation abgeschlossen verfolgen und dem Puffermanager den Status RAID-Streifenschreiboperation abgeschlossen senden, wenn alle Statusmeldungen für den Streifen empfangen wurden. In einigen Ausführungsformen kann der Puffermanager Meldungen über den Status Schreiben abgeschlossen direkt von den Speichervorrichtungen empfangen, um den Status RAID-Streifenschreiboperation abgeschlossen zu verfolgen.
  • Bei Block 750 kann ein Pufferübertragungsbefehl an eine Speichervorrichtung gesendet werden, um Daten in einem Pufferspeicherort auf das Speichermedium oder die Speichermedien der Speichervorrichtung zu übertragen. Beispielsweise kann der Puffermanager einen Pufferübertragungsbefehl an jede Speichervorrichtung senden, die an einem RAID-Streifen beteiligt ist, wenn die Status RAID-Streifenschreiboperation abgeschlossen empfangen wird. In einigen Ausführungsformen können Schreiboperationen durch Senden eines Pufferübertragungsbefehls an eine Speichervorrichtung abgeschlossen werden, wobei die Speichervorrichtung und der Pufferspeicherort ohne Rücksicht auf die Fertigstellung eines RAID-Streifens identifiziert werden. In einigen Ausführungsformen wird der Pufferübertragungsbefehl unter Umständen erst dann gesendet, wenn die Pufferkapazität oder ein vordefinierter Abschnitt davon voll ist. Der Pufferübertragungsbefehl kann den Puffer löschen oder auch nicht und ihn für die Zuweisung an eine andere Verwendung freigeben. Nachdem der Pufferübertragungsbefehl gesendet wurde, kann die Operation zum Block 710 zurückkehren, um zusätzliche Schreiboperationen im Zusammenhang mit einem anstehenden oder neu empfangenen Host-Schreibbefehl zu serialisieren.
  • In Block 760 kann ein Befehl zum Löschen des Puffers an eine oder mehrere Speichervorrichtungen gesendet werden. Zum Beispiel kann der Pufferausräumbefehl die empfangende Speichervorrichtung veranlassen, alle Daten in ihren Datenpuffern oder einen bestimmten Abschnitt seiner Datenpuffer auf das Speichermedium oder die Speichermedien der Speichervorrichtungen zu schreiben und die betroffenen Datenpuffer für die zukünftige Verwendung zu löschen. In einigen Ausführungsformen kann der Pufferausräumbefehl ausgegeben werden, nachdem ein vollständiger RAID-Streifen in die Puffer mehrerer Speichervorrichtungen geschrieben und die LBA-Abbildungsinformationen aktualisiert wurden, und er kann alle betroffenen Speichervorrichtungen dazu veranlassen, die entsprechenden Puffer auf das Speichermedium oder die Speichermedien zu schreiben und sie zur Wiederverwendung freizugeben.
  • Wie in 8 dargestellt, kann das Datenspeichersystem 100 gemäß verteilten Host-FTL-Dienst-Operationen betrieben werden, um verteilte Lese-/Schreiboperationen und/oder andere verteilte oder Laufwerk-zu-Laufwerk-Dienste zu unterstützen. Zum Beispiel können eine oder mehrere Speichervorrichtungen (z. B. Speichervorrichtungen 120) ein Host-FTL-Dienstmodul (z.B. Host-FTL-Dienste 322) einschließen und einen oder mehrere Schritte in der Kommunikation mit einer Speichervirtualisierungssteuerung (z.B. SVC 110), einer oder mehreren anderen Speichervorrichtungen (z. B. Speichervorrichtungen 120) und/oder anderen Komponenten gemäß dem durch die Blöcke 810-890 in 8 dargestellten Verfahren 800 ausführen. Zum Beispiel können sich die Blöcke 810-830 auf ein Verfahren 802 zum Verarbeiten von Abfragebefehlen für logische Abbildungen beziehen, und die Blöcke 840-890 können sich auf ein Verfahren 804 zum Verarbeiten von Aktualisierungsbefehlen für logische Abbildungen beziehen.
  • In Block 810 kann ein Abfragebefehl für logische Abbildungen empfangen werden. Zum Beispiel kann eine SVC dem Host-FTL-Dienst in einer Speichervorrichtung einen Abfragebefehl für die logische Abbildung für den Abschnitt der vollständigen logischen LBA-Host-LBA-Zuweisung senden, die in der Speichervorrichtung gehostet wird. Der Host-LBA-Bereich kann in dem Befehl eingeschlossen sein, der als Schlüssel für die relevanten Abbildungsinformationen in dem Abschnitt der logischen Abbildung verwendet werden soll.
  • In Block 820 können die im Abfragebefehl für die logische Abbildung angeforderten Abbildungsinformationen aus dem lokalen Abschnitt der logischen Abbildung abgerufen werden, der auf dem empfangenden Laufwerk gehostet wird. Zum Beispiel kann das Host-FTL-Dienstmodul den Host-LBA-Bereich verwenden, um Abbildungsinformationen aus einem Abschnitt der in der Speichervorrichtung gespeicherten Host-FTL-Tabelle abzurufen.
  • In Block 830 können die im Abfragebefehl für die logische Abbildung angeforderten Abbildungsinformationen an die Komponente zurückgegeben werden, die den Befehl gesendet hat. Zum Beispiel können die Abbildungsinformationen an eine SVC zurückgegeben werden, die die Anforderung zur Verwendung in weiteren Lese-/Schreiboperationen gesendet hat. In einigen Ausführungsformen können die Abbildungsinformation von einer anderen Funktion in der gleichen Speichervorrichtung oder von einer anderen Speichervorrichtung in der gleichen Anordnung angefordert werden. Die Informationen können über eine interne oder Laufwerk-zu-Laufwerk-Kommunikation an diesen Anforderer zurückgegeben werden.
  • In Block 840 kann ein Aktualisierungsbefehl für logische Abbildungen empfangen werden. Zum Beispiel kann eine SVC dem Host-FTL-Dienst in der Speichervorrichtung einen Aktualisierungsbefehl für die logische Abbildung senden, der auf einem Host-Schreibbefehl basiert, der in eine Host-LBA geschrieben wird, die dem Abschnitt der vollständigen logischen Host-LBA-Abbildung zugewiesen ist, der in der Speichervorrichtung gehostet wird. In einigen Ausführungsformen kann der Aktualisierungsbefehl der logischen Abbildung den Host-LBA-Bereich für eine Schreiboperation, neue Abbildungsinformationen und eine Speichervorrichtungs-ID für eine Paritätsspeichervorrichtung einschließen.
  • In Block 850 können die früheren Abbildungsinformationen, die für den Aktualisierungsbefehl der logischen Abbildung relevant sind, aus dem lokalen Abschnitt der logischen Abbildung abgerufen werden, der im empfangenden Laufwerk gehostet wird. Zum Beispiel kann das Host-FTL-Dienstmodul den zu schreibenden Host-LBA-Bereich verwenden, um vorherige Abbildungsinformationen aus einem Teil der in der Speichervorrichtung gespeicherten Host-FTL-Tabelle abzurufen.
  • In Block 860 können die vorherigen Abbildungsinformationen mit den neuen Abbildungsinformationen, die im Aktualisierungsbefehl der logischen Abbildung empfangen wurden, XOR-verknüpft werden. Zum Beispiel können die vorherigen Abbildungsinformationen und die neuen Abbildungsinformationen mit Hilfe eines XOR-Moduls XOR-verknüpft werden.
  • In Block 870 wird ein Paritätsaktualisierungsbefehl von den Host-FTL-Diensten der Speichervorrichtung mit den LBA-Abbildungsinformationen für die Schreibzielspeichervorrichtung an eine Paritätsspeichervorrichtung gesendet. Der Paritätsaktualisierungsbefehl kann zum Beispiel die in Block 860 erzeugten XOR-Abbildungsinformationen einschließen und einen für die Paritätsberechnung zugewiesenen XOR-Puffer identifizieren.
  • In Block 880 kann von den Host-FTL-Diensten der Paritätsspeichervorrichtung ein Paritätsaktualisierungsabschluss-Status empfangen werden. Zum Beispiel kann die Paritätsspeichervorrichtung eine Reihe von Operationen, wie die nachfolgend in Bezug auf 10 beschriebenen, abschließen und den Status abgeschlossen zurückgeben.
  • In Block 890 werden die Abbildungsinformationen im lokalen Abschnitt der logischen Abbildung aktualisiert. Beispielsweise können die Host-FTL-Dienste die neuen Abbildungsinformationen verwenden, um den Teil der LBA-Abbildungsinformationen für die abgeschlossene Schreiboperation zu aktualisieren.
  • Wie in 9 dargestellt, kann das Datenspeichersystem 100 nach verteilten Schreiboperationen betrieben werden, wobei die Zielspeichervorrichtung Schreiboperationen auf der Grundlage von Anweisungen von einem Puffermanager ausführen kann. Zum Beispiel können eine oder mehrere Speichervorrichtungen (z. B. Speichervorrichtungen 120) einen Medienmanager (z. B. NVM-Manager 324) und einen fernadressierbaren Pufferzugriff (z. B. Pufferzugriffsmodul 326) einschließen, um einen oder mehrere Schritte in der Kommunikation mit einer Speichervirtualisierungssteuerung (z. B. SVC 110), einer oder mehreren anderen Speichervorrichtungen (z. B. Speichervorrichtungen 120) und/oder anderen Komponenten gemäß des durch die Blöcke 910-970 in 9 dargestellten Verfahrens 900 auszuführen.
  • In Block 910 kann eine Pufferzuweisung empfangen werden. Zum Beispiel kann einer Speichervorrichtung mitgeteilt werden, dass ein oder mehrere Pufferspeicherplätze Datenfernzugriff erhalten werden, um Daten in den Pufferspeicher zu schreiben, der den Host-LBAs entspricht. In einigen Ausführungsformen folgen solche Zuweisungen den Seitengrößen, die vom Speichermedium oder den Speichermedien in der Speichervorrichtung unterstützt werden, und Puffereinheiten unterstützen möglicherweise übereinstimmende Seitengrößen.
  • Bei Block 920 können die Hostdaten in den zugewiesenen Pufferplätzen empfangen werden. Auf die in Block 910 zugewiesenen Puffer kann z. B. mit einem Speicherfernzugriffsprotokoll wie RDMA zugegriffen werden, um die Host-Daten in die Puffer zu stellen. In einigen Ausführungsformen können die Blöcke 910 und 920 gleichzeitig mit dem Empfang der Host-Daten ausgeführt werden, die aus der Sicht der Speichervorrichtung effektiv den Pufferort zugewiesen haben, und eine separate Meldung (über einen separaten Befehlskanal, Daten-Header/Metadaten oder ein Schreiben an eine Protokollposition im Puffer) kann die Ziel-LBA für die empfangenen Daten identifizieren.
  • In Block 930 kann ein Pufferübertragungsbefehl empfangen werden, um Daten in einem Pufferspeicherort auf das Speichermedium oder die Speichermedien der Speichervorrichtung zu übertragen. Zum Beispiel kann der Puffermanager einen Pufferübertragungsbefehl an die Speichervorrichtung senden, wenn der RAID-Streifen vollständig ist, die Schreiboperation anderweitig abgeschlossen werden kann oder der Pufferplatz voll ist. Der Pufferübertragungsbefehl kann den Puffer nicht löschen oder ihn nicht für die Zuweisung an eine andere Verwendung freigeben.
  • In Block 940 werden die Daten aus dem Puffer auf das Speichermedium oder die Speichermedien übertragen. Ein Medienmanager kann z. B. den Speicherort für die Daten auf dem Speichermedium oder den Speichermedien bestimmen, die Daten aus dem Puffer auf das Medium oder die Medien schreiben und die FTL-Informationen der Speichervorrichtung (einschließlich Abbildungsinformationen), die sich auf das Schreiben beziehen, aktualisieren. In einigen Ausführungsformen verbleiben die Daten im Puffer zur Verwendung bei Paritätsberechnungen, Datenwiederherstellung im Falle eines Stromausfalls oder anderen nachfolgenden Operationen.
  • In Block 950 kann ein Pufferausräumbefehl empfangen werden. Zum Beispiel können alle Daten in den Puffern, die zuvor nicht auf das Speichermedium oder die Speichermedien geschrieben wurden, auf das Medium oder die Medien übertragen werden. Wenn alle Daten auf ein Medium oder Medien übertragen und bestätigt worden sind, kann die Operation mit der Blockierung von 960 fortgesetzt werden.
  • Bei Block 960 werden die Puffer für die Wiederverwendung gelöscht. Zum Beispiel können die Puffer in ihren Bereitschaftszustand zurückgesetzt und alle Pufferzuweisungen gelöscht werden. In einigen Ausführungsformen kann dies auch das Löschen aller in den zu löschenden Puffern vorhandenen Daten einschließen.
  • Bei Block 970 wird ein Status Puffer bereit gesendet, um gelöschte Puffer als für die weitere Verwendung bereit zu kennzeichnen. Zum Beispiel kann ein Status Puffer bereit an einen entfernten Puffermanager und/oder ein lokales Pufferzugriffsmodul gesendet werden. In einigen Ausführungsformen kann der Status Puffer bereit auch anderen Speichervorrichtungen oder Komponenten im Speichersystem mitgeteilt werden, die für verteilte Dienste oder Operationen aus der Ferne auf die Puffer zugreifen können.
  • Wie in 10 dargestellt, kann das Datenspeichersystem 100 nach verteilten Schreiboperationen betrieben werden, wobei eine Paritätsspeichervorrichtung Paritätsoperationen auf der Grundlage von Befehlen von den Host-FTL-Diensten einer anderen Speichervorrichtung ausführen kann. Zum Beispiel können eine oder mehrere Speichervorrichtungen (z. B. Speichervorrichtungen 120) ein verteiltes Paritätsmodul (z. B. verteiltes Paritätsmodul 332) und XOR oder eine andere Fehlercodierungsfunktion (z. B. XOR-Modul 314) enthalten, um einen oder mehrere Schritte in der Kommunikation mit einer Speichervirtualisierungssteuerung (z. B. SVC 110), einer oder mehreren anderen Speichervorrichtungen (z. B. Speichervorrichtungen 120) und/oder anderen Komponenten gemäß dem in den Blöcken 1010-1060 von 10 dargestellten Verfahren 1000 auszuführen.
  • Im Block 1010 kann ein Paritätsaktualisierungsbefehl von einer Paritätsspeichervorrichtung empfangen werden. Zum Beispiel können die Host-FTL-Dienste des Paritätsspeichers einen Paritäts-Aktualisierungsbefehl empfangen, der die im Block 860 in 8 erzeugten XOR-Abbildungsinformationen enthält und einen für die Paritätsberechnung zugewiesenen XOR-Puffer identifiziert.
  • In Block 1020 kann die Paritätsspeichervorrichtung die Schreibdaten abrufen. Zum Beispiel kann die Paritätsspeichervorrichtung ein Laufwerk-zu-Laufwerk-Direktspeicherzugriffsprotokoll, wie RDMA, verwenden, um für den ursprünglichen Schreibbefehl aus dem Puffer in der Zielspeichervorrichtung zu lesen.
  • In Block 1030 können die Paritätsdaten von der Paritätsspeichervorrichtung berechnet werden. Zum Beispiel kann die Paritätsberechnung durchgeführt werden, indem die aus der Zielspeichervorrichtung für den ursprünglichen Schreibbefehl gelesenen Daten verwendet und mit den aktuellen Paritätsdaten in der Paritätsspeichervorrichtung XOR-verknüpft werden. In einigen Ausführungsformen kann die Paritätsspeichervorrichtung über die aktuellen Paritätsdaten in einem XOR-Puffer verfügen (basierend auf einer vorherigen Paritätsberechnung oder vom Speichermedium oder den Speichermedien dorthin verschoben), der einer XOR-Engine zum Durchführen der Paritätsberechnung zugeordnet ist.
  • Bei Block 1040 können die neuen Paritätsdaten wieder in einem Pufferspeicherort gespeichert werden. Zum Beispiel können nach der Berechnung der neuen Parität die neuen Paritätsdaten in den XOR-Puffer zurückgeschrieben werden, aus dem die alten Paritätsinformationen gelesen wurden.
  • In Block 1050 können die Abbildungsinformationen für die Paritätsdaten im lokalen Abschnitt der Abbildungsinformationen in der Paritätsspeichervorrichtung aktualisiert werden. Zum Beispiel kann die Paritätsspeichervorrichtung die im Paritätsaktualisierungsbefehl empfangenen Abbildungsinformationen mit den entsprechenden Informationen in der Host-FTL-Abbildungstabelle für die Paritäts-LB As XOR-verknüpfen und die Ergebnisse im entsprechenden Abschnitt der Host-FTL-Abbildung für die Paritäts-LBAs zurückspeichern.
  • In Block 1060 sendet die Paritätsspeichervorrichtung den Status an die Komponente zurück, die den Paritätsaktualisierungsbefehl gesendet hat. Zum Beispiel kann die Paritätsspeichervorrichtung den Status Paritätsaktualisierung abgeschlossen an die Host-FTL-Dienste der Speichervorrichtung senden, die den Befehl gesendet hat.
  • 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/Operation 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/Operation bereitstellen.
  • Ein Flussdiagramm und/oder Blockdiagramm in den obigen Figuren kann eine Bauweise, Funktionalität und/oder einen Operation 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 Operationen 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 (20)

  1. Speichersystem, aufweisend: eine Speichersteuerung, die eingerichtet ist zum Empfangen einer Datenanforderung von einem Hostsystem und aufweisend: einen ersten Prozessor; einen ersten Speicher; und ein Dienstabbildungsmodul, das in dem ersten Speicher gespeichert ist und durch den ersten Prozessor ausführbar ist, zum Identifizieren einer Ziel-Dienst-Host-Speichervorrichtung aus einer Vielzahl von Speichervorrichtungen, wobei die Ziel-Dienst-Host-Speichervorrichtung einen Zielabschnitt einer logischen Abbildung von Speicherorten beherbergt, die unter der Vielzahl von Speichervorrichtungen verteilt sind; und die Vielzahl von Speichervorrichtungen in Kommunikation mit der Speichersteuerung, wobei jede Speichervorrichtung der Vielzahl von Speichervorrichtungen aufweist: einen zweiten Prozessor; einen zweiten Speicher; ein Speichermedium; einen Abschnitt der logischen Abbildung, der im zweiten Speicher gespeichert ist; ein Dienst-Host-Modul, das in dem zweiten Speicher gespeichert ist und durch den zweiten Prozessor ausführbar ist, um eine Zielspeichervorrichtung aus der Vielzahl von Speichervorrichtungen zu identifizieren, wobei die Zielspeichervorrichtung einem Zielspeicherort für die Datenanforderung auf der Grundlage des Abschnitts der logischen Abbildung entspricht; einen Medienmanager, der im zweiten Speicher gespeichert ist und durch den zweiten Prozessor ausführbar ist, um eine Datenübertragung zwischen dem Zielspeicherort auf dem Speichermedium und dem Hostsystem zu verarbeiten; und ein Aktualisierungsmodul der logischen Host-Abbildung, das im zweiten Speicher gespeichert und vom zweiten Prozessor ausführbar ist, um den im zweiten Speicher gespeicherten Abschnitt der logischen Abbildung auf der Grundlage der Datenübertragung zwischen dem Zielspeicherort auf dem Speichermedium und dem Hostsystem zu aktualisieren.
  2. Speichersystem gemäß Anspruch 1, wobei jede Speichervorrichtung weiterhin aufweist: einen Pufferspeicher; und einen entfernten Direktspeicherzugriff (RDMA) zum Zugreifen auf den Pufferspeicher über einen Zwischenverbindungs-Fabric außerhalb der Vielzahl von Speichervorrichtungen, wobei: der Medienmanager Daten zwischen dem Zielspeicherort auf dem Speichermedium und dem Pufferspeicher überträgt; und das Hostsystem Daten zwischen dem Hostsystem und dem Pufferspeicher überträgt.
  3. Speichersystem gemäß Anspruch 2, wobei die Speichersteuerung weiterhin aufweist: einen Puffermanager, der im ersten Speicher gespeichert und vom ersten Prozessor ausführbar ist zum: Zuweisen des Pufferspeichers für die Verarbeitung der Datenanforderung; Senden eines Datenübertragungsbefehls an die Zielspeichervorrichtung, um Daten zwischen dem Zielspeicherort und dem zugewiesenen Pufferspeicher zu übertragen; und Senden eines Pufferzugriffsbefehls an das Hostsystem, um Daten zwischen dem Hostsystem und dem zugewiesenen Pufferspeicher zu übertragen.
  4. Speichersystem gemäß Anspruch 3, wobei: die Datenanforderung eine Vielzahl von Host-Schreibbefehlen einschließt; und der Datenübertragungsbefehl ausgeführt wird, nachdem eine vollständiger Streifen einer redundanten Anordnung von unabhängigen Festplatten (RAID) für die Datenanforderung im Pufferspeicher der Vielzahl von Speichervorrichtungen zusammengestellt wurde.
  5. Speichersystem gemäß Anspruch 3, wobei: die Datenanforderung einen Host-Schreibbefehl mit einer Host-Blockgröße einschließt; und der Puffermanager weiterhin ausführbar ist, um eine Vielzahl von Datenanforderungen über den Pufferspeicher zu serialisieren, um eine Speichervorrichtungsschreibgröße zu füllen, die ein Vielfaches der Host-Blockgröße größer als eins ist.
  6. Speichersystem gemäß Anspruch 3, wobei: das Speichermedium eingerichtet ist, um Dateneinheiten einer vordefinierten Größe zu empfangen; der Pufferspeicher in den Dateneinheiten der vordefinierten Größe zugewiesen ist.
  7. Speichersystem gemäß Anspruch 1, wobei: der Zielabschnitt der logischen Abbildung eine Paritätskennung für eine Ziel-Paritätsspeichervorrichtung aus der Vielzahl von Speichervorrichtungen einschließt; und jede Speichervorrichtung der Vielzahl von Speichervorrichtungen weiterhin aufweist: einen XOR-Puffer; und ein Paritätsmodul, das im zweiten Speicher gespeichert ist und vom zweiten Prozessor ausführbar ist zum: Empfangen von Daten von der Zielspeichervorrichtung; Berechnen von Paritätsdaten aus den empfangenen Daten; und Speichern der Paritätsdaten im XOR-Puffer.
  8. Speichersystem gemäß Anspruch 7, wobei das Paritätsmodul weiterhin ausführbar ist zum: Empfangen von Abbildungsinformationen, die sich auf die empfangenen Daten beziehen; und Aktualisieren eines Paritätsspeicherorts in dem im zweiten Speicher gespeicherten Abschnitt der logischen Abbildung unter Verwendung der empfangenen Abbildungsinformationen.
  9. Speichersystem gemäß Anspruch 1, wobei jede Speichervorrichtung der Vielzahl von Speichervorrichtungen weiterhin aufweist: eine logische Medienabbildung, die in dem zweiten Speicher gespeichert ist und Medienspeicherplätze in dem Speichermedium mit einer Speichervorrichtungsschreibgröße identifiziert, wobei die Speichervorrichtungsschreibgröße größer als eine Host-Schreibgröße der Datenanforderung ist und der Abschnitt der logischen Host-Abbildung die Host-Schreibgröße zum Abbilden von Datenplätzen verwendet.
  10. Speichersystem gemäß Anspruch 1, wobei die Ziel-Dienst-Host-Speichervorrichtung und die Ziel-Speichervorrichtung verschiedene Speichervorrichtungen aus der Vielzahl der Speichervorrichtungen sind.
  11. Computer-implementiertes Verfahren, aufweisend: Empfangen einer Schreibdatenanforderung von einem Host-System an eine Speichersteuerung für eine Vielzahl von Speichervorrichtungen; Identifizieren einer Ziel-Dienst-Host-Speichervorrichtung aus der Vielzahl von Speichervorrichtungen, wobei die Ziel-Dienst-Host-Speichervorrichtung einen Zielabschnitt einer logischen Abbildung von Speicherorten beherbergt, die unter der Vielzahl von Speichervorrichtungen verteilt sind; Identifizieren einer Zielspeichervorrichtung aus der Vielzahl von Speichervorrichtungen, wobei die Zielspeichervorrichtung einem Zielspeicherort für die Schreibdatenanforderung entspricht; Verarbeiten eines Datentransfers vom Hostsystem zur Zielspeichervorrichtung für die Schreibdatenanforderung; und Aktualisieren des Zielabschnitts der logischen Abbildung in der Ziel-Dienst-Host-Speichervorrichtung auf der Grundlage der Datenübertragung zwischen dem Hostsystem und der Zielspeichervorrichtung, wobei die Ziel-Dienst-Host-Speichervorrichtung und die Zielspeichervorrichtung unterschiedliche Speichervorrichtungen unter der Vielzahl von Speichervorrichtungen sind.
  12. Computer-implementiertes Verfahren gemäß Anspruch 11, wobei: Verarbeiten der Datenübertragung weiterhin aufweist: Übertragen von Daten zwischen dem Hostsystem und einem Pufferspeicher in der Zielspeichervorrichtung; und Übertragung von Daten zwischen dem Pufferspeicher und dem Zielspeicherort auf einem Speichermedium der Zielspeichervorrichtung.
  13. Computer-implementiertes Verfahren gemäß Anspruch 12, weiterhin aufweisend: Zuweisen des Pufferspeichers der Vielzahl von Speichervorrichtungen zum Verarbeiten der Schreibdatenanforderung; Senden eines Pufferzugriffsbefehls an das Hostsystem, um Daten zwischen dem Hostsystem und dem zugewiesenen Pufferspeicher zu übertragen; und Senden eines Datenübertragungsbefehls an die Zielspeichervorrichtung, um Daten zwischen dem zugewiesenen Pufferspeicher und dem Zielspeicherort auf dem Speichermedium der Zielspeichervorrichtung zu übertragen.
  14. Computer-implementiertes Verfahren gemäß Anspruch 13, weiterhin aufweisend: Zusammenstellen eines vollständigen Streifens für die Schreibdatenanforderung im Pufferspeicher der Zielspeichervorrichtung, wobei der Datenübertragungsbefehl gesendet wird, nachdem der vollständige Streifen für die Datenanforderung im Pufferspeicher zusammengestellt worden ist.
  15. Computer-implementiertes Verfahren gemäß Anspruch 13, weiterhin aufweisend: Serialisieren einer Vielzahl von Schreibdatenanforderungen über eine Vielzahl von Pufferspeichern in der Vielzahl von Speichervorrichtungen.
  16. Computer-implementiertes Verfahren gemäß Anspruch 13, wobei: das Speichermedium eingerichtet ist, um Dateneinheiten einer vordefinierten Größe zu empfangen; der Pufferspeicher in den Dateneinheiten der vordefinierten Größe zugewiesen ist.
  17. Computer-implementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Identifizieren einer Ziel-Paritätsspeichervorrichtung aus der Vielzahl von Speichervorrichtungen; und durch die Ziel-Paritätsspeichervorrichtung: Empfangen von Daten von der Zielspeichervorrichtung; Berechnen von Paritätsdaten aus den empfangenen Daten; und Speichern der Paritätsdaten in einem XOR-Puffer der Ziel-Paritätsspeichervorrichtung.
  18. Computer-implementiertes Verfahren gemäß Anspruch 17, weiterhin aufweisend: Empfangen von Abbildungsinformationen, die sich auf die empfangenen Daten in der Ziel-Paritätsspeichervorrichtung beziehen; und Aktualisieren eines Paritätsspeicherorts in einem Abschnitt der in der Ziel-Paritätsspeichervorrichtung gespeicherten logischen Abbildung unter Verwendung der empfangenen Abbildungsinformationen.
  19. Computer-implementiertes Verfahren gemäß Anspruch 18, wobei die Ziel-Speichervorrichtung und die Ziel-Paritätsspeichervorrichtung verschiedene Speichervorrichtungen aus der Vielzahl von Speichervorrichtungen sind.
  20. System, aufweisend: Mittel zum Empfangen einer Schreibdatenanforderung von einem Host-System an eine Speichersteuerung für eine Vielzahl von Speichervorrichtungen; Mittel zum Identifizieren einer Ziel-Dienst-Host-Speichervorrichtung aus der Vielzahl von Speichervorrichtungen, wobei die Ziel-Dienst-Host-Speichervorrichtung einen Zielabschnitt einer logischen Abbildung von Speicherorten beherbergt, die unter der Vielzahl von Speichervorrichtungen verteilt sind; Mittel zum Identifizieren einer Zielspeichervorrichtung aus der Vielzahl von Speichervorrichtungen, wobei die Zielspeichervorrichtung einem Zielspeicherort für die Schreibdatenanforderung entspricht; Mittel zum Verarbeiten eines Datentransfers vom Hostsystem zur Zielspeichervorrichtung für die Schreibdatenanforderung; und Mittel zum Aktualisieren des Abschnitts der logischen Abbildung in der Ziel-Dienst-Host-Speichervorrichtung auf der Grundlage der Datenübertragung zwischen dem Hostsystem und der Zielspeichervorrichtung, wobei die Ziel-Dienst-Host-Speichervorrichtung und die Zielspeichervorrichtung unterschiedliche Speichervorrichtungen unter der Vielzahl von Speichervorrichtungen sind.
DE112019000146.9T 2018-06-30 2019-02-28 Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung Pending DE112019000146T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/024,736 US10409511B1 (en) 2018-06-30 2018-06-30 Multi-device storage system with distributed read/write processing
US16/024,736 2018-06-30
PCT/US2019/020155 WO2020005336A1 (en) 2018-06-30 2019-02-28 Multi-device storage system with distributed read/write processing

Publications (1)

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

Family

ID=67844968

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000146.9T Pending DE112019000146T5 (de) 2018-06-30 2019-02-28 Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung

Country Status (4)

Country Link
US (1) US10409511B1 (de)
CN (1) CN111373362B (de)
DE (1) DE112019000146T5 (de)
WO (1) WO2020005336A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561860B2 (en) * 2017-11-13 2023-01-24 Weka.IO Ltd. Methods and systems for power failure resistance for a distributed storage system
US10896089B2 (en) * 2018-04-06 2021-01-19 Western Digital Technologies, Inc. System level data-loss protection using storage device local buffers
KR102608825B1 (ko) * 2018-04-26 2023-12-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
US11171671B2 (en) * 2019-02-25 2021-11-09 Samsung Electronics Co., Ltd. Reducing vulnerability window in key value storage server without sacrificing usable capacity
KR20210004502A (ko) 2019-07-05 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11055256B2 (en) * 2019-04-02 2021-07-06 Intel Corporation Edge component computing system having integrated FaaS call handling capability
KR20200139433A (ko) 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 컨트롤러의 동작 방법 및 메모리 시스템
KR20200123684A (ko) * 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 장치
KR20200137181A (ko) 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보를 전송하는 장치
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device
US11663139B2 (en) * 2019-04-22 2023-05-30 SK Hynix Inc. Apparatus for transmitting map information in memory system
US20210117320A1 (en) * 2019-10-22 2021-04-22 Micron Technology, Inc. Construction of a block device
CN112835967B (zh) * 2019-11-25 2023-07-21 浙江宇视科技有限公司 基于分布式存储系统的数据处理方法、装置、设备和介质
US11579799B2 (en) * 2020-03-18 2023-02-14 Micron Technology, Inc. Dynamic selection of cores for processing responses
US20220137835A1 (en) * 2020-10-30 2022-05-05 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
US11531498B2 (en) * 2020-11-20 2022-12-20 Western Digital Technologies, Inc. Peer storage device messaging over control bus
US11842083B2 (en) 2021-02-03 2023-12-12 Infortrend Technology, Inc. Storage system architecture with dual storage virtualization controllers and the data access method thereof
WO2022165828A1 (en) * 2021-02-08 2022-08-11 Yangtze Memory Technologies Co., Ltd. On-die static random-access memory (sram) for caching logical to physical (l2p) tables
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
CN112783913B (zh) * 2021-03-17 2024-02-06 中广核工程有限公司 数据库更新方法、装置、设备及存储介质
US20230418490A1 (en) * 2022-06-22 2023-12-28 Western Digital Technologies, Inc. Rate Levelling Among Peer Data Storage Devices
US11671350B1 (en) * 2022-08-15 2023-06-06 Red Hat, Inc. Data request servicing using multiple paths of smart network interface cards
CN116048424B (zh) * 2023-03-07 2023-06-06 浪潮电子信息产业股份有限公司 Io数据处理方法、装置、设备及介质
CN117251107B (zh) * 2023-06-27 2024-04-16 北京忆芯科技有限公司 降低页条带写操作性能波动的方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US6871263B2 (en) * 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
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
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
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
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 삼성전자주식회사 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
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
US9389805B2 (en) 2011-08-09 2016-07-12 Seagate Technology Llc I/O device and computing host interoperation
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
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
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
US20160179403A1 (en) * 2013-07-17 2016-06-23 Hitachi, Ltd. Storage controller, storage device, storage system, and semiconductor storage device
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
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
US9280293B2 (en) * 2014-05-23 2016-03-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. RAID 1 mirror meshed into a co-existing RAID 5 parity stream
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
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9575853B2 (en) * 2014-12-12 2017-02-21 Intel Corporation Accelerated data recovery in a storage system
US9720596B1 (en) 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
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
TWI531963B (zh) 2015-06-04 2016-05-01 Accelstor Inc Data storage systems and their specific instruction enforcement methods
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
US10261902B2 (en) * 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method

Also Published As

Publication number Publication date
CN111373362A (zh) 2020-07-03
US10409511B1 (en) 2019-09-10
CN111373362B (zh) 2023-07-21
WO2020005336A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
US11243837B2 (en) Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
CN111164574B (zh) 基于存储设备内部地址的冗余编码条带
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
US10725859B2 (en) Parity generation offload using peer-to-peer data transfers in data storage system
CN111465922B (zh) 具有对等数据清理的存储系统
CN111149091B (zh) 基于跨多个装置的协调内部地址方案的冗余编码条带
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
US11809707B2 (en) File operations in a distributed storage system
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE112022002830T5 (de) Spiegeln von daten in schreibcaches eines controllers eines nicht flüchtigen speichers
DE112020005099T5 (de) Konstruktion einer blockvorrichtung
KR102133316B1 (ko) 메모리 시스템 관리
US11868248B2 (en) Optimization for garbage collection in a storage system
DE102022209387A1 (de) Speichersteuerung und betriebsverfahren dafür
DE102023200651A1 (de) Verfahren und systeme für stapelübergreifende kommunikation für die verwaltung logischer datenträger

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