DE112016000258B4 - Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher - Google Patents

Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher Download PDF

Info

Publication number
DE112016000258B4
DE112016000258B4 DE112016000258.0T DE112016000258T DE112016000258B4 DE 112016000258 B4 DE112016000258 B4 DE 112016000258B4 DE 112016000258 T DE112016000258 T DE 112016000258T DE 112016000258 B4 DE112016000258 B4 DE 112016000258B4
Authority
DE
Germany
Prior art keywords
node
shared
nvms
nvm
network
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.)
Active
Application number
DE112016000258.0T
Other languages
English (en)
Other versions
DE112016000258T5 (de
Inventor
Govind Kamble Keshav
Atul Tambe
Vijoy Pandey
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.)
Kyndryl Inc
Original Assignee
Kyndryl 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 Kyndryl Inc filed Critical Kyndryl Inc
Publication of DE112016000258T5 publication Critical patent/DE112016000258T5/de
Application granted granted Critical
Publication of DE112016000258B4 publication Critical patent/DE112016000258B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

System, das aufweist:einen ersten Knoten (702), wobei der erste Knoten aufweist:einen ersten nichtflüchtigen Speicher (NVM), der so gestaltet ist, dass er Daten speichert;eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden ist;eine erste Netzwerk-Schnittstellenkarte (NIC), die mit der ersten Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht;einen ersten Prozessor; undeine erste Logik, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist, wobei die erste Logik so gestaltet ist, dass sie:Verbundparameter initiiert (802), die regeln, wie ein NVM-Verbund (700) funktioniert und arbeitet;per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten (704, 706, 708, 710) in dem NVM-Verbund sendet (804);eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten (704) empfängt (806);von dem zweiten Knoten Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten empfängt (808), wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten aufweist;die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten sendet (810), wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten aufweist; undÜbermittlungs- (404) und Beendigungswarteschlangen (410) der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten zuordnet (812), wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich auf nichtflüchtigen Speicher auf Grundlage von Hosts, und im Besonderen bezieht sich diese Erfindung auf ein Gruppieren von nichtflüchtigem Speicher auf Grundlage von Hosts mithilfe von zugeordnetem Netzwerkspeicher.
  • HINTERGRUND
  • Bei einem nichtflüchtigen Speicher (non-volatile memory, NVM) handelt es sich um einen sehr nützlichen Speichertyp, der aufgrund seiner Fähigkeit, Daten ohne Strom aufrechtzuerhalten, in zahlreichen modernen Anwendungen eingesetzt werden kann. Dies ist bei mobilen Einheiten besonders vorteilhaft, die als einzige Stromquelle Batterien nutzen, da jeglicher Stromverbrauch während Ausschaltzeiten die Nutzbarkeit der Einheiten verringern würde. Des Weiteren werden NVMs in sonstigen, weniger augenfälligen Anwendungen wie zum Beispiel Netzwerkspeichern zunehmend stärker genutzt.
  • Es bestehen einige gewünschte Zugriffsspezifikationen für ein Verwenden von NVMs in den heutigen anspruchsvollen Anwendungen: 1) Der NVM sollte in der Lage sein, ähnliche Geschwindigkeiten wie diejenigen zu erreichen, die mithilfe eines synchronen, dynamischen Direktzugriffsspeichers mit doppelter Übertragungsgeschwindigkeit vom Typ Drei (synchronous dynamic random-access memory, DDR3 SDRAM) erzielt werden können. 2) Der NVM sollte in der Lage sein, eine Million Eingabe-/Ausgabe(E/A)-Operationen pro Sekunde (input/output (I/O) operations per second, IOPS) oder mehr zu erzielen, was als Richtwert für die Nutzbarkeit von Speichern in einer Speicherinfrastruktur eines Unternehmensnetzwerks gilt. 3) Der NVM sollte in der Lage sein, eine Verbindungslatenzzeit zwischen 3 µs und 10 µs zu erzielen, was ebenfalls als Richtwert für die Nutzbarkeit von Speichern in einer Speicherinfrastruktur eines Unternehmensnetzwerks gilt. 4) Der NVM sollte in der Lage sein, eine Leistung zu erzielen, die Strecken von Parallel-Seriell- und Seriell-Parallel-Umsetzern (serializer/deserializer, SerDes) nach dem Peripheral Component Interconnect Express (PCIe) ähnelt.
  • Aktuelle Verfahren zum Nutzen von NVMs und im Besonderen von Flash-Speichern sind jedoch nicht in der Lage, sämtliche dieser gewünschten Zugriffsspezifikationen zu erzielen. Zu einigen der Probleme beim Implementieren von NVMs im Zusammenhang mit Unternehmens-Netzwerkspeichern zählen, eine Möglichkeit zu finden, einen nahtlosen Hochleistungstransport von Daten in der Netzwerkinfrastruktur bereitzustellen, wie ein Speichermittel herzustellen ist, das in der Lage ist, Speicher auf Grundlage von NVMs bereitzustellen, wie Halbleiter-Laufwerke (solid state drives, SSDs) auf Grundlage von Hosts, die NVMs nutzen, zu gruppieren sind, wie die SSDs auf Grundlage von Hosts mit zentralen Speichermitteln in der Netzwerkinfrastruktur zu gruppieren sind und wie eine Virtualisierung des NVM-Speichers auf Grundlage von Servern und auf Grundlage eines Netzwerks in dem Netzwerk zu erzielen ist.
  • Aktuelle Implementierungen von NVMs sind nicht in der Lage, mit sonstigen Elementen eines Netzwerks in einer Weise zu interagieren, die ermöglicht, die volle Leistungsfähigkeit der zu verwendenden NVMs in einer Netzwerkinfrastruktur zu nutzen.
  • Die Druckschrift US 2015/0 006 663 A1 betrifft ein Verfahren und ein System zum Ermöglichen von Non-Volatile Memory Express (NVMe) für den Zugriff auf entfernte Festkörperlaufwerke (SSDs) (oder andere Typen von entfernten nichtflüchtigen Arbeitsspeichern) über das Ethernet oder andere Netzwerke. Eine erweiterte NVMe-Steuereinheit wird bereitgestellt, um der CPU den Zugriff auf entfernte nichtflüchtige Arbeitsspeicher unter Verwendung des NVMe-Protokolls zu ermöglichen. Die erweiterte NVMe-Steuereinheit ist auf einem Server für die Datenübertragung mit anderen Servern oder nichtflüchtigen Arbeitsspeichern über einen Ethernet-Switch umgesetzt. Das NVMe-Protokoll wird über das Ethernet oder ähnliche Netzwerke verwendet, indem es geändert wird, um einen speziellen NVMover-Ethernet-Rahmen bereitzustellen.
  • KURZDARSTELLUNG
  • Bei einer Ausführungsform beinhaltet ein System einen ersten Knoten. Der erste Knoten beinhaltet einen ersten nichtflüchtigen Speicher (NVM), der so gestaltet ist, dass er Daten speichert. Der erste Knoten beinhaltet des Weiteren eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden ist. Der erste Knoten beinhaltet des Weiteren eine erste Netzwerk-Schnittstellenkarte (network interface card, NIC), die mit der ersten Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht. Der erste Knoten beinhaltet des Weiteren einen ersten Prozessor. Der erste Knoten beinhaltet des Weiteren eine erste Logik, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist. Die erste Logik ist so gestaltet, dass sie Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet. Die erste Logik ist des Weiteren so gestaltet, dass sie per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet. Die erste Logik ist des Weiteren so gestaltet, dass sie eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten empfängt. Die erste Logik ist des Weiteren so gestaltet, dass sie von dem zweiten Knoten Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten empfängt, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten. Die erste Logik ist des Weiteren so gestaltet, dass sie die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten sendet, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten. Die erste Logik ist des Weiteren so gestaltet, dass sie Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO, Zuerst-hinein-zuerst-hinaus)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind. Diese Ausführungsform stellt eine Virtualisierung von NVM-Speichern im Netzwerk auf Grundlage von Servern und/oder auf Grundlage eines Netzwerks bereit.
  • Bei dieser Ausführungsform kann das System des Weiteren den zweiten Knoten beinhalten. Der zweite Knoten beinhaltet einen zweiten NVM, der so gestaltet ist, dass er Daten speichert. Der zweite Knoten beinhaltet des Weiteren eine zweite Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem zweiten NVM verbunden ist. Der zweite Knoten beinhaltet des Weiteren eine zweite NIC, die mit der zweiten Speichersteuereinheit verbunden ist, wobei die zweite NIC so gestaltet ist, dass sie Daten über das Netzwerk austauscht. Der zweite Knoten beinhaltet des Weiteren einen zweiten Prozessor. Der zweite Knoten beinhaltet des Weiteren eine zweite Logik, die mit dem zweiten Prozessor integriert und/oder durch diesen ausführbar ist. Die zweite Logik ist so gestaltet, dass sie lokale Verbundparameter von einer lokalen Verbundkonfigurationsdatei empfängt. Die zweite Logik ist des Weiteren so gestaltet, dass sie eine Multicast-Nachricht empfängt, die die Verbundparameter des NVM-Verbunds beinhaltet. Die zweite Logik ist des Weiteren so gestaltet, dass sie in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten die Anforderung von Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den ersten Knoten sendet. Die zweite Logik ist des Weiteren so gestaltet, dass sie dem NVM-Verbund durch Initialisieren der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten beitritt. Die zweite Logik ist des Weiteren so gestaltet, dass sie die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten den sonstigen Knoten in dem NVM-Verbund zuordnet. Darüber hinaus ist die zweite Logik des Weiteren so gestaltet, dass sie Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten an den ersten Knoten sendet. Die zweite Logik ist des Weiteren so gestaltet, dass sie die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten empfängt. Die zweite Logik ist des Weiteren so gestaltet, dass sie die gemeinsam genutzten NVMs auf dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten der zweiten Speichersteuereinheit zuordnet. Diese Ausführungsform stellt einen NVM-Verbund bereit, der den ersten Knoten und den zweiten Knoten beinhaltet, die in der Lage sind, Daten nahtlos in dem Netzwerk zu befördern.
  • In einem Beispiel beinhaltet ein Datenspeichersystem auf Grundlage von Hosts NVMs, die so gestaltet sind, dass sie Daten speichern. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit den NVMs verbunden ist. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren eine NIC, die mit der Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren einen Prozessor. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist. Die Logik ist so gestaltet, dass sie Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet. Die Logik ist des Weiteren so gestaltet, dass sie per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet. Die Logik ist des Weiteren so gestaltet, dass sie Übermittlungs- und Beendigungswarteschlangen von beliebigen gemeinsam genutzten NVMs auf sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit auf Grundlage von Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind. Diese Ausführungsform stellt eine Virtualisierung von NVM-Speichern im Netzwerk auf Grundlage von Servern und/oder auf Grundlage eines Netzwerks bereit.
  • Bei dieser Ausführungsform können Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit mithilfe eines direkten Speicherzugriffs aus der Ferne (remote direct memory access, RDMA) zugeordnet werden. Das Zuordnen von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zu der Speichersteuereinheit mithilfe von RDMA stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die in sonstigen gemeinsam genutzten NVMs in dem Netzwerk gespeichert sind.
  • In einem Beispiel beinhaltet ein Netzwerkspeichermittel eine Mehrzahl von NVM-Speichereinheiten, die so gestaltet sind, dass sie Daten speichern. Das Netzwerkspeichermittel beinhaltet des Weiteren eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit der Mehrzahl von NVM-Speichereinheiten verbunden ist. Das Netzwerkspeichermittel beinhaltet des Weiteren eine NIC, die mit der Speichersteuereinheit verbunden ist. Die NIC ist so gestaltet, dass sie über ein Netzwerk hinweg mit sonstigen Knoten in einem NVM-Verbund über RDMA over converged Ethernet (RoCE) Daten austauscht. Das Netzwerkspeichermittel beinhaltet des Weiteren einen Prozessor. Das Netzwerkspeichermittel beinhaltet des Weiteren eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist. Die Logik ist so gestaltet, dass sie eine Multicast-Nachricht empfängt, die Verbundparameter eines NVM-Verbunds beinhaltet. Der NVM-Verbund beinhaltet einen oder mehrere Knoten, auf denen gemeinsam genutzte NVMs zugreifbar sind. Die Logik ist des Weiteren so gestaltet, dass sie in Reaktion auf das Empfangen der Multicast-Nachricht eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs an beliebige sonstige Knoten in dem NVM-Verbund sendet. Die Logik ist des Weiteren so gestaltet, dass sie dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel beitritt. Die Logik ist des Weiteren so gestaltet, dass sie die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel den sonstigen Knoten in dem NVM-Verbund zuordnet. Die Logik ist des Weiteren so gestaltet, dass sie Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel den sonstigen Knoten in dem NVM-Verbund sendet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind, Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund empfängt und die gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit zuordnet. Diese Ausführungsform stellt ein Speichermittel bereit, das in der Lage ist, dem Netzwerk Speicher auf Grundlage von NVMs bereitzustellen.
  • Bei dieser Ausführungsform können gemeinsam genutzte NVMs auf dem Netzwerkspeichermittel für die sonstigen Knoten in dem NVM-Verbund über zumindest eines des Folgenden zugreifbar sein: Coherent Accelerator Processor Interface (CAPI) und NVM Express (NVMe). Ein Zugreifen auf gemeinsam genutzte NVMs auf dem Netzwerkspeichermittel über zumindest eines des Folgenden: CAPI und NVMe stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die auf sonstigen gemeinsam genutzten NVMs in dem Netzwerk gespeichert sind.
  • Gemäß einer weiteren Ausführungsform beinhaltet ein Verfahren ein Initiieren von Verbundparametern, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, mithilfe eines ersten Knotens, der einen ersten NVM beinhaltet. Das Verfahren beinhaltet des Weiteren ein Senden per Multicasting von Verbundparametern des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund mithilfe des ersten Knotens. Das Verfahren beinhaltet des Weiteren ein Empfangen einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten an dem ersten Knoten. Das Verfahren beinhaltet des Weiteren ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf einem zweiten Knoten an dem ersten Knoten. Die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten beinhalten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten. Das Verfahren beinhaltet des Weiteren ein Senden der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten. Die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten beinhalten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten. Das Verfahren beinhaltet des Weiteren ein Zuordnen von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten mithilfe des ersten Knotens, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind. Dieses Verfahren stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die auf gemeinsam genutzten NVMs in dem NVM-Verbund gespeichert sind.
  • In einem Beispiel beinhaltet das Verfahren ein Empfangen einer Multicast-Nachricht, die Verbundparameter eines NVM-Verbunds beinhaltet. Der NVM-Verbund beinhaltet einen oder mehrere Knoten, auf denen gemeinsam genutzte NVMs zugreifbar sind. Das Verfahren beinhaltet des Weiteren ein Senden einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs an beliebige sonstige Knoten in dem NVM-Verbund in Reaktion auf das Empfangen der Multicast-Nachricht. Das Verfahren beinhaltet des Weiteren ein Beitreten zu dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von lokalen, gemeinsam genutzten NVMs. Das Verfahren beinhaltet des Weiteren ein Zuordnen der Übermittlungs- und Beendigungswarteschlangen der lokalen, gemeinsam genutzten NVMs zu den sonstigen Knoten in dem NVM-Verbund. Das Verfahren beinhaltet des Weiteren ein Senden von Einzelangaben der lokalen, gemeinsam genutzten NVMs an die sonstigen Knoten in dem NVM-Verbund. Das Verfahren beinhaltet des Weiteren ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund. Das Verfahren beinhaltet des Weiteren ein Zuordnen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund. Dieses Verfahren stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die auf gemeinsam genutzten NVMs in dem NVM-Verbund gespeichert sind.
  • Sonstige Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung ersichtlich, die zusammen mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulicht.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
    • 1 veranschaulicht eine Netzwerkarchitektur gemäß einer Ausführungsform.
    • 2 stellt eine typische Hardware-Umgebung eines Prozessorsystems gemäß einer Ausführungsform dar, die den Servern und/oder Clients von 1 zugehörig sein kann.
    • 3 stellt ein Datenspeichersystem auf Grundlage von Hosts bei einer Ausführungsform dar.
    • 4 stellt Vorgänge eines Speichersystems mit nichtflüchtigem Speicher (NVM) auf Grundlage von Hosts gemäß einer Ausführungsform dar.
    • 5 stellt ein Netzwerkspeichermittel gemäß einer Ausführungsform dar.
    • 6 stellt Vorgänge eines Netzwerkspeichermittels gemäß einer Ausführungsform dar.
    • 7 stellt eine Gruppierung von NVM-Speicher auf Grundlage von Hosts gemäß einer Ausführungsform dar.
    • 8 stellt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einer Ausführungsform werden Zugriffsverfahren zum Verwenden eines nichtflüchtigen Speichers (NVM) bereitgestellt, die in den heutigen komplizierten und ressourcenintensiven Anwendungen zweckdienlich sind. Bei einem solchen Zugriffsverfahren auf NVMs handelt es sich um einen nahtlosen Hochleistungstransport, der Speichermittelerstellungen bereitstellt, ein Gruppieren von NVM-Speichereinheiten wie zum Beispiel Halbleiter-Laufwerken (SSDs) auf Grundlage von Hosts ermöglicht, ein Gruppieren von NVM-Speichereinheiten auf Grundlage von Hosts und zentraler Speichermittel bereitstellt und eine Virtualisierung von NVMs auf Grundlage von Servern und auf Grundlage eines Netzwerks bereitstellt.
  • Bei einer allgemeinen Ausführungsform beinhaltet ein System einen ersten Knoten, wobei der erste Knoten einen ersten NVM, der so gestaltet ist, dass er Daten speichert, eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden ist, eine erste Netzwerk-Schnittstellenkarte (NIC), die mit der ersten Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht, einen ersten Prozessor und eine erste Logik beinhaltet, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist, wobei die erste Logik so gestaltet ist, dass sie: Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet, eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten empfängt, von dem zweiten Knoten Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten empfängt, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten, die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten sendet, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten, und Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  • Bei einer weiteren allgemeinen Ausführungsform beinhaltet ein Datenspeichersystem auf Grundlage von Hosts NVMs, die so gestaltet sind, dass sie Daten speichern, eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit den NVMs verbunden ist, eine NIC, die mit der Speichersteuereinheit verbunden ist, wobei die NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht, einen Prozessor und eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so gestaltet ist, dass sie: Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet, und Übermittlungs- und Beendigungswarteschlangen von beliebigen gemeinsam genutzten NVMs auf sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit auf Grundlage von Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  • Gemäß einer weiteren allgemeinen Ausführungsform beinhaltet ein Netzwerkspeichermittel eine Mehrzahl von NVM-Speichereinheiten, die so gestaltet sind, dass sie Daten speichern, eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit der Mehrzahl von NVM-Speichereinheiten verbunden ist, eine NIC, die mit der Speichersteuereinheit verbunden ist, wobei die NIC so gestaltet ist, dass sie über ein Netzwerk hinweg mit sonstigen Knoten in einem NVM-Verbund über Remote Direct Memory Access (RDMA) over converged Ethernet (RoCE) Daten austauscht, einen Prozessor und eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so gestaltet ist, dass sie: eine Multicast-Nachricht empfängt, die Verbundparameter eines NVM-Verbunds beinhaltet, wobei der NVM-Verbund einen oder mehrere Knoten beinhaltet, auf denen gemeinsam genutzte NVMs zugreifbar sind, in Reaktion auf das Empfangen der Multicast-Nachricht eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf beliebigen sonstigen Knoten in dem NVM-Verbund sendet, dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel beitritt, die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel den sonstigen Knoten in dem NVM-Verbund zuordnet und Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel an die sonstigen Knoten in dem NVM-Verbund sendet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind, Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund empfängt und die gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit zuordnet.
  • Gemäß einer weiteren allgemeinen Ausführungsform beinhaltet ein Verfahren ein Initiieren von Verbundparametern, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, mithilfe eines ersten Knotens, der erste NVMs beinhaltet, ein Senden per Multicasting von Verbundparametern des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund mithilfe des ersten Knotens, ein Empfangen einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten an dem ersten Knoten, ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf einem zweiten Knoten an dem ersten Knoten, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten, ein Senden der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten, und ein Zuordnen von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten mithilfe des ersten Knotens, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  • Bei einer weiteren allgemeinen Ausführungsform beinhaltet ein Verfahren ein Empfangen einer Multicast-Nachricht, die Verbundparameter eines NVM-Verbunds beinhaltet, wobei der NVM-Verbund einen oder mehrere Knoten beinhaltet, auf denen gemeinsam genutzte NVMs zugreifbar sind, ein Senden einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf beliebigen sonstigen Knoten in dem NVM-Verbund in Reaktion auf das Empfangen der Multicast-Nachricht, ein Beitreten zu dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von lokalen, gemeinsam genutzten NVMs, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der lokalen, gemeinsam genutzten NVMs zu den sonstigen Knoten in dem NVM-Verbund und Senden von Einzelangaben der lokalen, gemeinsam genutzten NVMs an die sonstigen Knoten in dem NVM-Verbund, ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund und ein Zuordnen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund.
  • 1 veranschaulicht eine Netzwerkarchitektur 100 gemäß einer Ausführungsform. Wie in 1 dargestellt, wird eine Mehrzahl von entfernt angeordneten Netzwerken 102 bereitgestellt, darunter ein erstes entfernt angeordnetes Netzwerk 104 und ein zweites entfernt angeordnetes Netzwerk 106. Ein Gateway 101 kann zwischen den entfernt angeordneten Netzwerken 102 und einem nahegelegenen Netzwerk 108 verbunden sein. Im Rahmen der vorliegenden Netzwerkarchitektur 100 können die Netzwerke 104, 106 jeweils eine beliebige Form annehmen, darunter die eines LAN, eines WAN wie zum Beispiel des Internet, eines öffentlichen Fernsprechnetzes (public switched telephone network, PSTN), eines internen Telefonnetzes usw., ohne auf diese beschränkt zu sein.
  • Im Einsatz dient das Gateway 101 als Eintrittspunkt von den entfernt angeordneten Netzwerken 102 in das nahegelegene Netzwerk 108. Insofern kann das Gateway 101 als Router, der in der Lage ist, ein bestimmtes Paket von Daten weiterzuleiten, das an dem Gateway 101 eintrifft, und als Switch dienen, der für ein bestimmtes Paket den tatsächlichen Pfad in das Gateway 101 und aus diesem heraus bereitstellt.
  • Des Weiteren ist zumindest ein Daten-Server 114 enthalten, der mit dem nahegelegenen Netzwerk 108 verbunden ist und auf den über das Gateway 101 von den entfernt angeordneten Netzwerken 102 zugegriffen werden kann. Es ist zu beachten, dass der/die Daten-Server 114 einen beliebigen Typ einer Datenverarbeitungseinrichtung/Groupware beinhalten kann/können. Mit jedem Daten-Server 114 ist eine Mehrzahl von Benutzereinheiten 116 verbunden. Zu solchen Benutzereinheiten 116 können ein Desktop-Computer, ein Laptop-Computer, ein Hand-Computer, ein Drucker und/oder ein beliebiger sonstiger Typ einer Logik enthaltenden Einheit zählen. Es ist zu beachten, dass eine Benutzereinheit 111 bei einigen Ausführungsformen auch direkt mit einem beliebigen der Netzwerke verbunden sein kann.
  • Eine Peripherieeinheit 120 oder eine Reihe von Peripherieeinheiten 120, z.B. Faxgeräte, Drucker, Scanner, Festplattenlaufwerke, vernetzte und/oder lokale Datenspeichereinheiten oder -systeme usw. können mit einem oder mehreren der Netzwerke 104, 106, 108 verbunden sein. Es ist zu beachten, dass Datenbanken und/oder zusätzliche Komponenten mit einem beliebigen Typ eines mit den Netzwerken 104, 106, 108 verbundenen Netzwerkelements genutzt werden können oder in dieses integriert sein können. Im Rahmen der vorliegenden Beschreibung kann sich ein Netzwerkelement auf eine beliebige Komponente eines Netzwerks beziehen.
  • Gemäß einigen Ansätzen können hierin beschriebene Verfahren und Systeme mit und/oder auf virtuellen Systemen und/oder Systemen implementiert sein, die ein oder mehrere sonstige Systeme emulieren, wie zum Beispiel ein UNIX-System, das eine IBM z/OS-Umgebung emuliert, ein UNIX-System, das eine MICROSOFT-WINDOWS-Umgebung virtuell beherbergt, oder ein MICROSOFT-WINDOWS-System, das eine IBM z/OS-Umgebung emuliert usw. Diese Virtualisierung und/oder Emulation kann bei einigen Ausführungsformen durch die Verwendung von VMWARE-Software erweitert werden.
  • In weiteren Ansätzen können ein oder mehrere Netzwerke 104, 106, 108 einen Verbund von Systemen darstellen, der allgemein als „Cloud“ bezeichnet wird. Beim Cloud-Computing werden gemeinsam genutzte Ressourcen wie zum Beispiel Verarbeitungskapazität, Peripherieeinheiten, Software, Daten, Server usw. jedem System in der Cloud nach Bedarf bereitgestellt und dabei Zugriff und Verteilung von Diensten über zahlreiche Datenverarbeitungssysteme hinweg gewährt. Cloud-Computing geht üblicherweise mit einer Internet-Verbindung zwischen den Systemen einher, die in der Cloud arbeiten, es können jedoch auch andere Techniken zum Verbinden der Systeme nach dem Stand der Technik verwendet werden.
  • 2 stellt eine typische Hardware-Umgebung gemäß einer Ausführungsform dar, der eine Benutzereinheit 116 und/oder ein Server 114 von 1 zugehörig sind. 2 veranschaulicht eine typische Hardware-Konfiguration eines Prozessorsystems 200, das eine Zentraleinheit 210 wie zum Beispiel einen Mikroprozessor und eine Anzahl sonstiger Einheiten aufweist, die über einen Systembus 212 verbunden sind, gemäß einer Ausführungsform.
  • Das in 2 dargestellte Prozessorsystem 200 beinhaltet einen Direktzugriffsspeicher (Random Access Memory, RAM) 214, einen Festwertspeicher (Read Only Memory, ROM) 216, einen E/A-Adapter 218, um Peripherieeinheiten wie zum Beispiel ein Speicherteilsystem 220 mit dem Bus 212 zu verbinden, einen Benutzerschnittstellenadapter 222, um eine Tastatur 224, eine Maus 226, einen Lautsprecher 228, ein Mikrophon 232 und/oder sonstige Benutzerschnittstelleneinheiten wie etwa einen Touchscreen, eine (nicht dargestellte) Digitalkamera usw. mit dem Bus 212 zu verbinden, einen Datenübertragungsadapter 234, um das Prozessorsystem 200 mit einem Datenübertragungsnetzwerk 235 (z.B. einem Datenverarbeitungsnetzwerk) zu verbinden, und einen Anzeigeadapter 236, um den Bus 212 mit einer Anzeigeeinheit 238 zu verbinden.
  • Auf dem Prozessorsystem 200 kann sich ein Betriebssystem wie zum Beispiel das Betriebssystem (operating system, OS) MICROSOFT WINDOWS, ein MAC-OS, ein UNIX-OS usw. befinden. Es versteht sich, dass eine bevorzugte Ausführungsform auch auf anderen als den genannten Plattformen und Betriebssystemen implementiert sein kann. Eine bevorzugte Ausführungsform kann mithilfe von JAVA, XML, C und/oder der Sprache C++ oder sonstigen Programmiersprachen wie auch einer objektorientierten Programmiermethodik geschrieben sein. Es kann objektorientierte Programmierung (OOP) verwendet werden, die zunehmend beim Entwickeln komplexer Anwendungen zum Einsatz kommt.
  • Es wird nun auf 3 Bezug genommen, in der ein Datenspeichersystem 300 auf Grundlage von Hosts gemäß einer Ausführungsform dargestellt wird. Das Datenspeichersystem 300 auf Grundlage von Hosts kann ein oder mehrere NVM-Speichereinheiten 302 wie zum Beispiel NVM-Express(NVMe)-Speichereinheiten, SSDs, Flash-Laufwerke usw. aufweisen. Jede NVM-Speichereinheit 302 kann NVMs eines Typs nach dem Stand der Technik wie zum Beispiel einen Flash-Speicher, einen Festwertspeicher (ROM), einen ferroelektrischen Direktzugriffsspeicher (FRAM), einen programmierbaren Festwertspeicher (PROM), einen nichtflüchtigen Direktzugriffsspeicher (nonvolatile random access memory, NVRAM) usw. aufweisen. Bei einer Ausführungsform kann ein Host-Prozessor 304 so gestaltet sein, dass er Daten mit einer Speichersteuereinheit 308 austauscht, die ein Gruppieren der NVMs auf den verschiedenen NVM-Speichereinheiten 302 bereitstellt und unterstützt.
  • Der Host-Prozessor 304 kann so gestaltet sein, dass er mithilfe eines Treibers 306 des Host-Prozessors 304 Daten mit der Speichersteuereinheit 308 über eine Mehrzahl von Peripheral-Component-Interconnect-Express(PCIe)-Strecken 312 wie zum Beispiel über Mehrfache von acht solcher Strecken, z.B. 16 Strecken, 32 Strecken usw. austauscht. Der Host-Prozessor 304 kann eine oder mehrere Zentraleinheiten (central processing units, CPUs) oder einen sonstigen geeigneten Prozessortyp nach dem Stand der Technik aufweisen.
  • Die Speichersteuereinheit 308 kann mit den verschiedenen NVM-Speichereinheiten 302 über eine NVM-Schnittstelle 310 eines Typs nach dem Stand der Technik Daten austauschen. Die Speichersteuereinheit 308 kann als Hardware-Modul, Block und/oder Prozessor wie zum Beispiel als ASIC, FPGA usw. implementiert werden. Darüber hinaus kann die Speichersteuereinheit 308 so gestaltet sein, dass sie über ein oder mehrere Datenübertragungsprotokolle, die zum Speichern und Abrufen von Daten aus den NVM-Speichereinheiten 302 geeignet sind, wie zum Beispiel Remote Direct Memory Access (RDMA) over converged Ethernet (RoCE), Coherent Accelerator Processor Interface (CAPI) over RoCE, CAPI over Ethernet, NVMe over Ethernet usw. Daten austauscht. Bei CAPI handelt es sich um ein Protokoll zum Austauschen von Daten mit lokalen SSDs, und NVMe ist ein Protokoll zum Übertragen von Daten ähnlich wie PCIe für lokalen, verbundenen Speicher.
  • Sonstige Datenübertragungsprotokolle können ebenfalls im Rahmen des Datenspeichersystems 300 eingesetzt werden, wie zum Beispiel Fiber Channel (FC), FC over Ethernet (FCoE), Infiniband, Internet Small Computer System Interface (iSCSI), Transport Control Protocol/Internet Protocol (TCP/IP), PCIe, usw. und/oder eine beliebige Kombination von diesen.
  • Um ein Gruppieren von NVMs (über NVMe, CAPI usw.) bereitzustellen, können Operationswarteschlangen wie zum Beispiel Übermittlungs- und/oder Beendigungswarteschlangen für einen Speicherzugriff aus der Ferne zugeordnet werden. Ein beliebiger Teil des Speicherzugriffsprotokolls kann bei dieser Ausführungsform verwendet werden. Auf diese Weise kann ein Gruppieren verteilten Speichers (oder Platten) in einer direkteren und wirksameren Weise bereitgestellt werden, als aktuell möglich ist.
  • Es wird nun auf 4 Bezug genommen, in der Vorgänge eines NVM-Speichersystems auf Grundlage von Hosts gemäß einer Ausführungsform dargestellt werden. Der Host-Prozessorspeicher 402 kann mit dem Host-Prozessor verbunden werden und kann eine Mehrzahl von Puffern und im Besonderen einen oder mehrere Ringpuffer mit einer Größe aufweisen, die so gestaltet ist, dass sie während einer typischen Ausfallzeit, einer Dienstleistungsunterbrechung, einer Blockübertragung von Befehlen usw. eine Mehrzahl von Befehlen speichert, ohne Befehle mit einer Push-Operation aus dem Puffer zu übertragen. Bei einer Ausführungsform kann der Host-Prozessorspeicher 402 einen oder mehrere Übermittlungswarteschlangen-Ringpuffer 404 (dargestellt werden zwei solcher Ringpuffer, es kann jedoch eine beliebige Anzahl verwendet werden) und einen oder mehrere Beendigungswarteschlangen-Ringpuffer 410 (dargestellt wird ein solcher Ringpuffer, es kann jedoch eine beliebige Anzahl verwendet werden) aufweisen. Sonstige Typen von Puffern können für die Übermittlungswarteschlange und/oder die Beendigungswarteschlange verwendet werden, zum Beispiel ein linearer Puffer und ein sonstiger Puffer nach dem Stand der Technik.
  • Der Übermittlungswarteschlangen-Ringpuffer 404 kann so gestaltet sein, dass er Befehle speichert, die nach einem First-In-First-Out(FIFO)-Schema oder einem sonstigen gewünschten Hinein-/Hinaus-Schema nach dem Stand der Technik ausgeführt werden können. Der Übermittlungswarteschlangen-Ringpuffer 404 kann die Befehle von einem Kopf 406 bis zu einem Nachsatz 408 speichern, wobei zusätzliche Befehle an dem Kopf 406 platziert werden, bis keine weiteren Befehle mehr in die Warteschlagen passen. Bei einer Ausführungsform werden Befehle mit einer Pull-Operation von dem Nachsatz aus dem Übermittlungswarteschlangen-Ringpuffer 404 extrahiert.
  • Der Beendigungswarteschlangen-Ringpuffer 410 kann die beendeten Befehle speichern, nachdem sie durch den Übermittlungswarteschlangen-Ringpuffer 404 verarbeitet worden sind. Der Beendigungswarteschlangen-Ringpuffer 410 kann darüber hinaus Befehle speichern, die nach einem FIFO-Schema oder einem sonstigen gewünschten Hinein-/Hinaus-Schema nach dem Stand der Technik ausgeführt worden sind. Des Weiteren kann der Beendigungswarteschlangen-Ringpuffer 410 die beendeten Befehle von einem Kopf 412 bis zu einem Nachsatz 414 speichern, wobei zusätzliche beendete Befehle vor dem Kopf 412 platziert werden.
  • Die Speichersteuereinheit 308 kann so gestaltet sein, dass sie einen Hinweis empfängt, dass dem Übermittlungswarteschlangen-Ringpuffer 404 ein neuer Befehl hinzugefügt worden ist. Bei einer Ausführungsform kann es sich bei dem Hinweis um einen Doorbell-Message-signaled-Interrupt (MSI) handeln. Anschließend kann die Speichersteuereinheit 308 den Befehl aus dem Übermittlungswarteschlangen-Ringpuffer 404 abrufen, den Befehl bis zum Beenden verarbeiten und einen Hinweis an den Host-Prozessor senden, dass der Befehl beendet worden ist (zum Beispiel über einen Beendigungs-MSI). Anschließend kann die Speichersteuereinheit 308 gemäß einer Ausführungsform einen Hinweis darüber empfangen, dass die Prozessbeendigung bestätigt wird, zum Beispiel über einen Doorbell-MSI (der auf einen neuen Kopf hinweist) in dem Beendigungswarteschlangen-Ringpuffer 410.
  • Ein Netzwerkspeichermittel 500 gemäß einer Ausführungsform wird in 5 dargestellt, das über ein Netzwerk 512 mit einem Host 510 verbunden werden kann. Das Netzwerkspeichermittel 500 kann eine Netzwerk-Schnittstellenkarte (NIC) 502 aufweisen, die so gestaltet sein kann, dass sie Daten über das Netzwerk 512 austauscht. Das Netzwerk 512 kann einen oder mehrere Switches 504 aufweisen. Bei dem einen oder den mehreren Switches 504 kann es sich um eine beliebige Kombination von physischen Switches, virtuellen Switches, verteilten Switches usw. handeln, die so gestaltet sind, dass sie zumindest eines des Folgenden durchführen: eine Vorrangablaufsteuerung (priority flow control, PFC), eine erweiterte Übertragungsauswahl (enhanced transmission selection, ETS), eine quantisierte Überlastungsmeldung (quantized congestion notification, QCN). Bei einer Ausführungsform können der eine oder die mehreren Switches 504 in einem Pfad zwischen dem Netzwerkspeichermittel 500 und dem Host 510 so gestaltet sein, dass sie sämtliche oben aufgeführten Ablaufprotokolle durchführen. Des Weiteren kann jeder der Switches 504 in dem Pfad zwischen dem Netzwerkspeichermittel 500 und dem Host 510 so gestaltet sein, dass er über RoCE und/oder einige oder sämtliche der sonstigen oben aufgeführten Datenübertragungsprotokolle Daten austauscht.
  • Das Netzwerkspeichermittel 500 kann einige oder sämtliche der Komponenten des Datenspeichersystems auf Grundlage von Hosts aufweisen, wie in 3 dargestellt. Wie in 5 dargestellt, kann das Netzwerkspeichermittel 500 eine NIC 502, die so gestaltet sein kann, dass sie über das Netzwerk 512 Daten austauscht, einen Prozessor 508 zum Steuern des Betriebs des Netzwerkspeichermittels 500, die Speichersteuereinheit 308 und eine Mehrzahl von NVM-Speichereinheiten 302 aufweisen, mit denen die Speichersteuereinheit 308 über die NVM-Schnittstelle 310 Daten austauschen kann.
  • Bei einer Ausführungsform kann der Host 510 eine NIC 506 aufweisen, die so gestaltet sein kann, dass sie Daten über das Netzwerk 512 austauscht, und die mit dem Treiber 306 zum Austauschen von Daten über ein oder mehrere der verschiedenen oben aufgeführten Datenübertragungsprotokolle verbunden sein kann. Der Treiber 306 kann durch den Prozessor 304 gesteuert werden.
  • Bei einer Ausführungsform können sowohl die NIC 502 als auch die NIC 506 so gestaltet sein, dass sie Daten über RoCE über das Netzwerk 512 so über den einen oder die mehreren Switches 504 austauschen, dass jeder der Switches 504 in dem Pfad zwischen dem Netzwerkspeichermittel 500 und dem Host 510 so gestaltet sein kann, dass er über RoCE Daten austauscht.
  • Auf diese Weise kann der Host 510 so gestaltet sein, dass er auf die NVMs auf den verschiedenen NVM-Speichereinheiten 302 in dem Netzwerkspeichermittel 500 zugreift. Wenn das Netzwerk 512 Ethernet-Verbindungen nutzt, sind abhängig von der tatsächlichen Gestaltung von 10/40/100 Gbps beliebige mit einer konsistenten, geringen Latenzzeit, Converged-Ethernet-Fähigkeit (für eine Verlustfreiheitsfunktion) und RoCE-Unterstützung möglich. Dies ist eine universelle, schnelle, skalierbare und kostengünstige Lösung für einen direkten Zugriff auf die NVMs auf dem Netzwerkspeichermittel 500.
  • Bei einer Ausführungsform kann ein Netzwerkspeichermittel 500 eine Mehrzahl von NVM-Speichereinheiten 302, die so gestaltet sein können, dass sie Daten speichern, eine Speichersteuereinheit 308, die über eine NVM-Schnittstelle 310 mit der Mehrzahl von NVM-Speichereinheiten 302 verbunden sein kann, eine NIC 502, die mit der Speichersteuereinheit 308 verbunden sein kann und die so gestaltet sein kann, dass sie über ein Netzwerk 512 hinweg mit sonstigen Knoten in einem NVM-Verbund über RoCE oder ein sonstiges geeignetes Protokoll nach dem Stand der Technik Daten austauscht, einen Prozessor 508 und eine Logik aufweisen, die mit dem Prozessor 508 integriert und/oder durch diesen ausführbar ist und die so gestaltet sein kann, dass sie: eine Multicast-Nachricht empfängt, die Verbundparameter eines NVM-Verbunds beinhaltet, wobei der NVM-Verbund einen oder mehrere Knoten beinhaltet, auf denen gemeinsam genutzte NVMs zugreifbar sind; in Reaktion auf das Empfangen der Multicast-Nachricht eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf beliebigen sonstigen Knoten in dem NVM-Verbund sendet; dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel 500, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel 500 zu den sonstigen Knoten in dem NVM-Verbund, Senden von Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel 500 an die sonstigen Knoten in dem NVM-Verbund beitritt; Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund empfängt; und die gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit 308 auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zuordnet. Die Übermittlungswarteschlange kann so gestaltet sein, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem sonstigen Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet sein kann, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  • Vorgänge eines Netzwerkspeichermittels 500 gemäß einer Ausführungsform werden in 6 dargestellt. Wie dargestellt, kann ein Host-Prozessor 304 einen Warteschlangenbefehl ausgeben, der über das Netzwerk über eine NIC 506 ausgetauscht werden kann (wie durch einen Pfeil 608 angegeben) und an dem anderen Ende durch eine NIC 502 empfangen werden kann und anschließend per RDMA in einen Übermittlungswarteschlangen-Ringpuffer 604 übertragen werden kann. Dies ist möglich, weil der Host-Prozessor 304 gemäß einer Ausführungsform dem zugeordneten Speicher 602 des Netzwerkspeichermittels 500 über RDMA so zugeordnet werden kann, dass Warteschlangenbefehle von dem Host-Prozessor 304 per RDMA in den Übermittlungswarteschlangen-Ringpuffer 604 übertragen werden können, ohne dass eine sonstige Verarbeitung erforderlich ist.
  • Damit diese Operation erfolgreich und wiederholbar ist, kann bei einer Ausführungsform die Datenübertragung 608 über das Netzwerk zumindest durch RoCE, PFC und QCN unterstützt werden.
  • Anschließend kann die Speichersteuereinheit 308 einen Hinweis empfangen, dass dem Übermittlungswarteschlangen-Ringpuffer 604 ein neuer Befehl hinzugefügt worden ist. Bei einer Ausführungsform kann es sich bei dem Hinweis um einen Doorbell-MSI handeln. Als Nächstes kann die Speichersteuereinheit 308 den Befehl aus dem Übermittlungswarteschlangen-Ringpuffer 604 abrufen, den Befehl bis zum Beenden verarbeiten und einen Hinweis an den Host-Prozessor 304 senden, dass der Befehl beendet worden ist (zum Beispiel über einen Beendigungs-MSI). Anschließend kann die Speichersteuereinheit 308 gemäß einer Ausführungsform einen Hinweis darüber empfangen, dass die Prozessbeendigung bestätigt wird, zum Beispiel über einen Doorbell-MSI (der einen neuen Kopf angibt) in dem Beendigungswarteschlangen-Ringpuffer 606.
  • Es wird nun auf 7 Bezug genommen, in der ein Gruppieren von NVM-Speicher auf Grundlage von Hosts gemäß einer Ausführungsform dargestellt wird. Wie dargestellt, kann eine Mehrzahl von NVMs auf Grundlage von Hosts in einem NVM-Verbund 700 beinhaltet sein, wobei jeder Host, z.B. ein Host 0 702, ein Host 1 704, ein Host 2 706, ein Host 3 708, ein Host 4 710 usw. seine eigenen lokalen NVMs verwaltet und den sonstigen Mitgliedern des NVM-Verbunds 700 Zugriff auf diese gewährt. In ähnlicher Weise können beliebige Netzwerkspeichermittel 712 so gestaltet sein, dass sie ihre eigenen lokalen NVMs verwalten und den sonstigen Mitgliedern des NVM-Verbunds 700 Zugriff auf diese gewähren. Dieser NVM-Verbund 700 kann eine beliebige Anzahl von Knoten beinhalten. Die Knoten des NVM-Verbunds 700 können ein oder mehrere Netzwerkspeichermittel, einen oder mehrere NVMs auf Grundlage von Hosts und/oder eine beliebige Kombination von diesen beinhalten. Dies hat den Vorteil, dass ein nahtloser und schneller Zugriff auf die Daten, die auf den gemeinsam genutzten NVMs in dem NVM-Verbund 700 gespeichert sind, für sämtliche berechtigten Komponenten in dem Netzwerk bereitgestellt wird.
  • Um diesen NVM-Verbund 700 zu erzielen, können bei einer Ausführungsform die folgenden Operationsschritte durchgeführt werden, um den NVM-Verbund 700 zu starten und in Betrieb zu halten.
    • 1) Ein erster Knoten (z.B. der Host 0 702) startet und initiiert Verbundparameter, die regeln, wie der NVM-Verbund 700 funktioniert und arbeitet.
    • 2) Der erste Knoten sendet per Multicasting Einzelangaben zu dem Verbund in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund 700. Die Einzelangaben zu dem Verbund können Zugriffsrichtlinien beinhalten (zum Beispiel, wie und durch wen auf jegliche Daten zugegriffen werden darf, die in den verschiedenen NVMs des NVM-Verbunds 700 gespeichert sind). Dies bietet eine Möglichkeit, den Zugriff auf bestimmte Daten auf gemeinsam genutzten NVMs zu begrenzen. Dadurch wird der Zugriff auf diese Daten so eingeschränkt, dass unberechtigte Komponenten nicht in der Lage sind, auf diese beschränkten Daten zuzugreifen.
    • 3) Ein zweiter Knoten startet (z.B. ein beliebiger der Hosts 1 bis 5), und der zweite Knoten empfängt lokale Verbundparameter von einer Datei auf einer lokalen Festplatte (z.B. von einer Verbundkonfigurationsdatei). Diese lokalen Verbundparameter können beinhalten, woraufhin die Multicast-Nachricht von dem ersten Knoten überwacht werden soll.
    • 4) Anschließend fordert der zweite Knoten Daten von sämtlichen Mitgliedsknoten in dem NVM-Verbund 700 an, wobei aktuell der erste Knoten der einzige Mitgliedsknoten ist, der zweite Knoten hat darüber jedoch keine Kenntnis und stellt daher diese Anforderung von Daten. Die Anforderung wird innerhalb des Intervalls gestellt, da der zweite Knoten die Daten von dem ersten Knoten an dem Intervall empfangen würde und diese Anforderung möglicherweise unnötig würde.
    • 5) Der zweite Knoten überwacht und empfängt die Multicast-Nachricht von dem erste Knoten.
    • 6) Der zweite Knoten fordert in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten Dateispeicherpositionen und Einzelangaben von gemeinsam genutzten Speichern auf dem ersten Knoten an, die bei einem Ansatz in (einem) für Dateien zugänglichen Index/Indizes bereitgestellt werden können.
    • 7) Der zweite Knoten tritt dem NVM-Verbund 700 durch Initialisieren seiner eigenen Übermittlungs- und Beendigungswarteschlangen bei, ordnet seinen lokalen NVM-Speicher (die Übermittlungs- und Beendigungswarteschlangen) über RDMA den sonstigen Knoten in dem NVM-Verbund 700 zu und stellt seine eigenen NVM-Einzelangaben wie zum Beispiel eine RoCE-NIC-Adresse zum Zugreifen auf die lokalen NVMs des zweiten Knotens bereit. Dadurch wird ein schneller und zuverlässiger Zugriff auf die gemeinsam genutzten NVMs auf sonstigen Knoten des Verbunds bereitgestellt.
    • 8) Der erste Knoten empfängt die NVM-Einzelangaben von dem zweiten Knoten, ordnet die Übermittlungs- und Beendigungswarteschlangen des zweiten Knotens in RDMA zu und stellt NVM-Einzelangaben des ersten Knotens für den zweiten Knoten bereit. Auch sonstige spezifische Operationen sind beim Einrichten eines NVM-Verbunds 700 möglich, der spezifische Beschränkungen einer gemeinsamen Nutzung, Zeiteinschränkungen, Zugriffseinschränkungen usw. nutzt, und diese Daten werden ebenfalls zu diesem Zeitpunkt gemeinsam genutzt.
    • 9) Zu diesem Zeitpunkt beinhaltet der NVM-Verbund 700 zwei Knoten, und die NVMs jedes Knotens sind für die anderen Knoten sichtbar.
  • Jetzt ist jeglicher Knoten in dem NVM-Verbund 700 in der Lage, Fernzugriffsanforderungen zum Zugreifen auf die lokalen NVMs des anderen Knotens an sonstige Knoten zu senden. Diese Fernzugriffsanforderungen können in der lokalen Übermittlungswarteschlange des anderen Knotens gespeichert werden, wie zuvor beschrieben verarbeitet werden und anschließend in Reaktion darauf, dass die Operation beendet ist, mit jeglichen Informationen, Daten, Bestätigungen usw., die für die jeweilige Fernzugriffsanforderung angemessen sind, an den initiierenden Knoten zurückgemeldet werden. Dies hat den Vorteil, dass ein nahtloser und schneller Zugriff auf die Daten bereitgestellt wird, die auf sonstigen gemeinsam genutzten NVMs in dem Netzwerk gespeichert sind. Ein lokaler Host weist jedoch keine Sichtbarkeit für Fernzugriffsanforderungen an NVMs des lokalen Hosts auf, und stattdessen wird diese Funktionalität durch die NVM-Steuereinheit bereitgestellt.
  • Bei einer weiteren Ausführungsform kann ein Speicher auf Grundlage von Hosts und/oder ein Netzwerkspeichermittel eine oder mehrere Warteschlangen mit Zugriffsbeschränkung aufweisen, auf die nur durch bestimmte, im Voraus berechtigte Entitäten in dem Netzwerk zugegriffen werden darf. Ein Austausch von Daten kann mit einer entfernt angeordneten Entität erfolgen, die auf die eine oder mehreren Warteschlangen mit Zugriffsbeschränkung zugreifen möchte, um zu ermitteln, ob ein Zugriff zuzulassen ist. Diese eine oder mehreren Warteschlangen mit Zugriffsbeschränkung können bei einem Ansatz über RDMA gemeinsam genutzt werden. Dies hat den Vorteil, dass ein Zugriff auf bestimmte gemeinsam genutzte NVMs in dem Netzwerk beschränkt wird.
  • Unter Bezugnahme auf 8 wird nun ein Verfahren 800 zum Bereitstellen eines Gruppierens von NVMs gemäß einer Ausführungsform dargestellt. In einer Operation 802 werden Verbundparameter, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, mithilfe eines ersten Knotens initiiert.
  • Der erste Knoten kann bei einer Ausführungsform einen ersten NVM, der so gestaltet sein kann, dass er Daten speichert; eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden sein kann; eine erste NIC, die mit der ersten Speichersteuereinheit verbunden sein kann und die so gestaltet sein kann, dass sie Daten über ein Netzwerk hinweg austauscht; einen ersten Prozessor; und eine erste Logik beinhalten, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist. Die erste Logik kann bei einer Ausführungsform so gestaltet sein, dass sie das Verfahren 800 ausführt.
  • In einer Operation 804 können Verbundparameter des NVM-Verbunds per Multicasting über das Netzwerk hinweg in vorgegebenen Intervallen so an einen beliebigen sonstigen Knoten in dem NVM-Verbund gesendet werden, dass diese sonstigen Knoten auf das Vorhandensein des NVM-Verbunds hingewiesen werden können.
  • In einer Operation 806 kann eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten empfangen werden. Nicht sämtliche NVMs des ersten Knotens müssen für eine gemeinsame Nutzung gestaltet sein, und daher kann der erste Knoten so gestaltet sein, dass er ermittelt, welcher Anteil der ersten NVMs gemeinsam zu nutzen ist, was als gemeinsam genutzte NVMs auf dem ersten Knoten bezeichnet wird.
  • In einer Operation 808 können Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten an dem ersten Knoten von dem zweiten Knoten empfangen werden. Die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten können Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten, sodass die Dateispeicherpositionen der ersten Speichersteuereinheit des ersten Knotens zugeordnet werden können.
  • In einer Operation 810 können Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten gesendet werden. Die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten können Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten, sodass die Dateispeicherpositionen der zweiten Speichersteuereinheit des zweiten Knotens zugeordnet werden können.
  • In einer Operation 812 können Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit zugeordnet werden. Die Übermittlungswarteschlange kann so gestaltet sein, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem FIFO-Schema speichert, und die Beendigungswarteschlange kann so gestaltet sein, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  • Dies ermöglicht über den NVM-Verbund hinweg ein Zugreifen auf die gemeinsam genutzten Speicher sämtlicher Knoten in dem NVM-Verbund.
  • Bei einer weiteren Ausführungsform kann das Verfahren 800 ein Empfangen von lokalen Verbundparametern von einer lokalen Verbundkonfigurationsdatei; ein Empfangen einer Multicast-Nachricht, die die Verbundparameter des NVM-Verbunds beinhaltet; in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten ein Senden der Anforderung von Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den ersten Knoten; ein Beitreten zu dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu den sonstigen Knoten in dem NVM-Verbund, Senden von Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten an den ersten Knoten; ein Empfangen der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten; und ein Zuordnen der gemeinsam genutzten NVMs auf dem ersten Knoten zu der zweiten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten beinhalten.
  • Bei einer Ausführungsform können die Einzelangaben zu dem Verbund Zugriffsrichtlinien für Daten beinhalten, die in den gemeinsam genutzten NVMs auf dem ersten Knoten gespeichert sind. Auf diese Weise können Dateien mit Zugriffsbeschränkung angegeben werden und sonstige Knoten in den NVMs möglicherweise keinen Zugriff haben oder besondere Berechtigungen benötigen, um auf den beschränkten Inhalt zuzugreifen, wie einem Fachmann verständlich wäre.
  • Bei einer weiteren Ausführungsform kann das Verfahren 800 ein Empfangen einer Anforderung von Einzelangaben zu dem Verbund von dem zweiten Knoten beinhalten, bevor die Einzelangaben zu dem Verbund in den vorgegebenen Intervallen per Multicasting gesendet werden. Dies ermöglicht, dass der erste Knoten auf das Vorhandensein des zweiten Knotens hingewiesen wird, bevor ein Übertragen der Einzelangaben zum Verbund ausgeblendet wird.
  • In einem Ansatz können die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit mithilfe von RDMA zugeordnet werden. Des Weiteren können die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten eine RoCE-NIC-Adresse des zweiten Knotens beinhalten, die durch einen beliebigen sonstigen Knoten in dem NVM-Verbund zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten verwendet wird.
  • Darüber hinaus können die gemeinsam genutzten NVMs auf dem ersten Knoten und die gemeinsam genutzten NVMs auf dem zweiten Knoten für sonstige Knoten in dem NVM-Verbund über zumindest eines des Folgenden zugreifbar sein: CAPI und NVMe.
  • Ein beliebiger geeigneter NVM kann in einem beliebigen der Knoten in dem NVM-Verbund verwendet werden, darunter in denjenigen, die hierin beschrieben werden, und in sonstigen nach dem Stand der Technik.
  • Bei einer weiteren Ausführungsform kann das Verfahren 800 ein Senden von Daten von den gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten über RDMA mithilfe von zumindest einem des Folgenden: NVMe over Ethernet und CAPI o-ver Ethernet; und ein Durchführen von Operationen an den Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten über RoCE beinhalten, wobei die Operationen von einem Zugreifen auf Daten, einem Zugreifen auf Anweisungen, einem Einstellen von Daten in eine Warteschlange und einem Einstellen von Anweisungen in eine Warteschlange zumindest eines beinhalten.
  • Der NVM-Verbund kann darüber hinaus ein oder mehrere Netzwerkspeichermittel und/oder sonstige Netzwerkspeichereinheiten beinhalten, die NVMs beinhalten, wie einem Fachmann bekannt wäre.
  • Die hierin dargestellten Zugriffsverfahren von NVMs gemäß verschiedenen Ausführungsformen ermöglichen einen Ethernet-Transport mit geringer und konsistenter Latenzzeit für eine Datenspeicherung auf einem nichtflüchtigen Speicher, verkürzen eine Prozessorwartezeit und verbessern die Leistungsfähigkeit von Anwendungen, können in einem skalierbaren NVM-Speichermittel beinhaltet sein, ermöglichen ein Gruppieren, stellen eine Speichervirtualisierung bereit und senken die Kosten der Implementierung gegenüber aktuellen Zugriffsverfahren.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) beinhalten, auf dem sich computerlesbare Programmanweisungen befinden, die bewirken, dass ein Prozessor Aspekte der vorliegenden Erfindung ausführt.
  • Bei dem computerlesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufrechterhalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Eine nicht erschöpfende Liste konkreterer Beispiele für das computerlesbare Speichermedium beinhaltet folgende: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (random access memory, RAM), einen Festwertspeicher (read-only memory, ROM), einen löschbaren, programmierbaren Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (static random access memory, SRAM), einen tragbaren Compact-Disk-Festwertspeicher (CD-ROM), eine digitale, vielseitige Scheibe (digital versatile disk, DVD), einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Nut, auf denen Anweisungen aufgezeichnet sind, oder eine beliebige geeignete Kombination aus Obigen. So, wie dieser Begriff hierin verwendet wird, ist ein computerlesbares Speichermedium nicht als per se transitorische Signale auszulegen, wie zum Beispiel Funkwellen oder sonstige sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder sonstige Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch eine Leitung übertragen werden.
  • Die hierin beschriebenen computerlesbaren Programmanweisungen können von einem computerlesbaren Speichermedium über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrs-Netzwerk und/oder ein drahtloses Netzwerk auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragungssysteme, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zum Speichern in einem computerlesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei computerlesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, Anweisungen einer Anweisungssatzarchitektur (instruction-set-architecture, ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Microcode, Firmware-Anweisungen, Zustandseinstelldaten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sind, darunter in einer objektorientierten Programmiersprache wie zum Beispiel Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie etwa der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden. Bei einigen Ausführungsformen können elektronische Schaltungen wie zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen durch Einsetzen von Zustandsdaten der computerlesbaren Programmanweisungen zum Anpassen der elektronischen Schaltungen so ausführen, dass Aspekte der vorliegenden Erfindung durchgeführt werden.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen implementiert werden kann/können.
  • Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand (article of manufacture) aufweist, der Anweisungen beinhaltet, die Aspekte der Funktion/des Vorgangs implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die computerlesbaren Programmanweisungen können außerdem so auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder eine sonstige Einheit geladen werden, dass sie bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder einer sonstigen Einheit so ausgeführt wird, dass ein computerimplementierter Prozess erzeugt wird, sodass die auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder einer sonstigen Einheit ausgeführten Anweisungen die in dem Block oder den Blöcken des Ablaufplans/der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge implementieren.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der angegebenen logischen Funktion(en) aufweist. Bei einigen alternativen Implementierungen können die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware implementiert werden können, die die angegebenen Funktionen oder Vorgänge ausführen oder Kombinationen von Spezial-Hardware und Computeranweisungen ausführen.
  • Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine Logik beinhalten, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so gestaltet ist, dass sie einen oder mehrere der hierin aufgeführten Prozessschritte durchführt. „integriert mit“ bedeutet, dass in den Prozessor eine Logik als Hardware-Logik wie zum Beispiel eine ASIC, ein FPGA usw. eingebettet ist. „Durch den Prozessor ausführbar“ bedeutet, dass es sich bei der Logik um eine Hardware-Logik; eine Software-Logik wie zum Beispiel eine Firmware, einen Teil eines Betriebssystems, einen Teil eines Anwendungsprogramms; usw. oder eine Kombination aus Hardware- und Software-Logik handelt, die durch den Prozessor zugreifbar ist und die so gestaltet ist, dass sie bewirkt, dass der Prozessor bei einer Ausführung durch den Prozessor eine Funktionalität durchführt. Eine Software-Logik kann auf einem lokalen und/oder einem entfernt angeordneten Speicher eines beliebigen Speichertyps nach dem Stand der Technik gespeichert sein. Ein beliebiger Prozessor nach dem Stand der Technik kann verwendet werden, zum Beispiel ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie zum Beispiel eine ASIC, ein FPGA, eine CPU, eine integrierte Schaltung (integrated circuit, IC) eine Grafikverarbeitungseinheit (graphics processing unit, GPU) usw.
  • Es ist ersichtlich, dass die verschiedenen Merkmale der obigen Systeme und/oder Methoden in beliebiger Weise kombiniert werden können, wodurch eine Mehrzahl von Kombinationen aus den oben dargelegten Beschreibungen erzeugt wird.
  • Es ist des Weiteren ersichtlich, dass Ausführungsformen der vorliegenden Erfindung in Form einer im Namen eines Kunden bereitgestellten Dienstleistung bereitgestellt werden können, um eine Dienstleistung auf Anforderung anzubieten.
  • Oben sind zwar verschiedene Ausführungsformen beschrieben worden, es versteht sich jedoch, dass sie lediglich als Beispiel und nicht als Beschränkung dargestellt worden sind. Folglich sollen die Breite und der Umfang einer Ausführungsform der vorliegenden Erfindung nicht durch jegliche der oben beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern sie sollen nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Entsprechungen definiert werden.

Claims (15)

  1. System, das aufweist: einen ersten Knoten (702), wobei der erste Knoten aufweist: einen ersten nichtflüchtigen Speicher (NVM), der so gestaltet ist, dass er Daten speichert; eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden ist; eine erste Netzwerk-Schnittstellenkarte (NIC), die mit der ersten Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht; einen ersten Prozessor; und eine erste Logik, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist, wobei die erste Logik so gestaltet ist, dass sie: Verbundparameter initiiert (802), die regeln, wie ein NVM-Verbund (700) funktioniert und arbeitet; per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten (704, 706, 708, 710) in dem NVM-Verbund sendet (804); eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten (704) empfängt (806); von dem zweiten Knoten Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten empfängt (808), wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten aufweist; die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten sendet (810), wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten aufweist; und Übermittlungs- (404) und Beendigungswarteschlangen (410) der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten zuordnet (812), wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  2. System nach Anspruch 1, das des Weiteren den zweiten Knoten aufweist, wobei der zweite Knoten aufweist: einen zweiten NVM (302), der so gestaltet ist, dass er Daten speichert; eine zweite Speichersteuereinheit (308), die über eine NVM-Schnittstelle (310) mit dem zweiten NVM verbunden ist; eine zweite NIC (502), die mit der zweiten Speichersteuereinheit verbunden ist, wobei die zweite NIC so gestaltet ist, dass sie Daten über das Netzwerk austauscht; einen zweiten Prozessor (508); und eine zweite Logik, die mit dem zweiten Prozessor integriert und/oder durch diesen ausführbar ist, wobei die zweite Logik so gestaltet ist, dass sie: lokale Verbundparameter von einer lokalen Verbundkonfigurationsdatei empfängt; eine Multicast-Nachricht empfängt, die die Verbundparameter des NVM-Verbunds aufweist; in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten die Anforderung von Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den ersten Knoten sendet; dem NVM-Verbundbeitritt durch Initialisieren der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu den sonstigen Knoten in dem NVM-Verbund und Senden von Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten an den ersten Knoten; die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten empfängt; und die gemeinsam genutzten NVMs auf dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten der zweiten Speichersteuereinheit zuordnet.
  3. System nach Anspruch 1, wobei die Verbundparameter Zugriffsrichtlinien für Daten aufweist, die in den gemeinsam genutzten NVMs auf dem ersten Knoten gespeichert sind.
  4. System nach Anspruch 1, wobei die erste Logik des Weiteren so gestaltet ist, dass sie eine Anforderung der Verbundparameter von dem zweiten Knoten empfängt, bevor die Verbundparameter in den vorgegebenen Intervallen per Multicasting gesendet werden.
  5. System nach Anspruch 1, wobei die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit mithilfe eines direkten Speicherzugriffs aus der Ferne (RDMA) zugeordnet werden.
  6. System nach Anspruch 5, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten eine RDMA-over-converged-Ethernet(RoCE)-Netzwerk-Schnittstellenkarten(NIC)-Adresse des zweiten Knotens aufweist, die durch einen beliebigen sonstigen Knoten in dem NVM-Verbund zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten verwendet wird.
  7. System nach Anspruch 1, wobei die gemeinsam genutzten NVMs auf dem ersten Knoten und die gemeinsam genutzten NVMs auf dem zweiten Knoten für sonstige Knoten in dem NVM-Verbund über zumindest eines des Folgenden zugreifbar sind: Coherent Accelerator Processor Interface (CAPI) und NVM Express (NVMe).
  8. System nach Anspruch 1, wobei die NVMs auf dem ersten Knoten und die NVMs auf dem zweiten Knoten zumindest eines des Folgenden aufweisen: Halbleiter-Laufwerke, einen Flash-Speicher, einen Festwertspeicher (ROM), einen ferroelektrischen Direktzugriffsspeicher (FRAM), einen programmierbaren Festwertspeicher (PROM) und einen nichtflüchtigen Direktzugriffsspeicher (NVRAM).
  9. System nach Anspruch 1, wobei die erste Logik des Weiteren so gestaltet ist, dass sie: Daten von den gemeinsam genutzten NVMs auf dem ersten Knoten über einen direkten Speicherzugriff aus der Ferne (RDMA) mithilfe zumindest eines des Folgenden an den zweiten Knoten sendet: NVM express (NVMe) over Ethernet und Coherent Accelerator Processor Interface (CAPI) over Ethernet; und Operationen an den Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten über RDMA over converged Ethernet (RoCE) durchführt, wobei die Operationen zumindest eines des Folgenden aufweisen: Zugreifen auf Daten, Zugreifen auf Anweisungen, Einstellen von Daten in eine Warteschlange und Einstellen von Anweisungen in eine Warteschlange.
  10. System nach Anspruch 1, das des Weiteren ein Netzwerkspeichermittel (500; 712) aufweist, wobei das Netzwerkspeichermittel aufweist: eine Mehrzahl von NVM-Speichereinheiten (302), die so gestaltet sind, dass sie Daten speichern; eine dritte Speichersteuereinheit (308), die über eine NVM-Schnittstelle (310) mit der Mehrzahl von NVM-Speichereinheiten verbunden ist; eine dritte Netzwerk-Schnittstellenkarte (NIC) (502), die mit der dritten Speichersteuereinheit verbunden ist, wobei die dritte NIC so gestaltet ist, dass sie über ein Netzwerk (512) hinweg mit sonstigen Knoten (702, 704, 706, 708, 710) in einem NVM-Verbund (700) über Remote Direct Memory Access (RDMA) over converged Ethernet (RoCE) Daten austauscht; einen dritten Prozessor (508); und eine dritte Logik, die mit dem dritten Prozessor integriert und/oder durch diesen ausführbar ist, wobei die dritte Logik so gestaltet ist, dass sie: lokale Verbundparameter von einer lokalen Verbundkonfigurationsdatei empfängt; eine Multicast-Nachricht von dem ersten Knoten empfängt, die die Verbundparameter des NVM-Verbunds aufweist; in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten eine Anforderung von Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den ersten Knoten sendet; dem NVM-Verbundbeitritt durch Initialisieren von Übermittlungs- (604) und Beendigungswarteschlangen (606) von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs des Netzwerkspeichermittels zu den sonstigen Knoten in dem NVM-Verbund und Senden von Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel an den ersten Knoten; die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten empfängt; und die gemeinsam genutzten NVMs auf dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten der dritten Speichersteuereinheit zuordnet.
  11. Verfahren (800), das aufweist: Initiieren (802) von Verbundparametern, die regeln, wie ein NVM-Verbund (700) funktioniert und arbeitet, mithilfe eines ersten Knotens (702), der einen ersten nichtflüchtigen Speicher (NVM) beinhaltet; Senden (804) per Multicasting von Verbundparametern des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten (704, 706, 708, 710) in dem NVM-Verbund mithilfe des ersten Knotens; Empfangen (806) einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten an dem ersten Knoten; Empfangen (808) von Einzelangaben von gemeinsam genutzten NVMs auf einem zweiten Knoten an dem ersten Knoten, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten; Senden (810) der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten aufweist; und Zuordnen (812) von Übermittlungs- (404) und Beendigungswarteschlangen (410) der gemeinsam genutzten NVMs auf dem zweiten Knoten zu dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten mithilfe des ersten Knotens, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
  12. Verfahren nach Anspruch 11, wobei die Verbundparameter Zugriffsrichtlinien für Daten aufweist, die in den gemeinsam genutzten NVMs auf dem ersten Knoten gespeichert sind.
  13. Verfahren nach Anspruch 11, das des Weiteren ein Empfangen einer Anforderung der Verbundparameter an dem ersten Knoten aufweist, bevor die Verbundparameter in den vorgegebenen Intervallen per Multicasting gesendet werden.
  14. Verfahren nach Anspruch 11, wobei die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit mithilfe eines direkten Speicherzugriffs aus der Ferne (RDMA) zugeordnet werden.
  15. Computerprogramm, das auf einem computerlesbaren Medium gespeichert und in den internen Speicher eines Digitalcomputers ladbar ist, das einen Software-Code aufweist, um das Verfahren eines der Ansprüche 11 bis 14 durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
DE112016000258.0T 2015-01-27 2016-01-14 Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher Active DE112016000258B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/606,947 2015-01-27
US14/606,947 US10061743B2 (en) 2015-01-27 2015-01-27 Host based non-volatile memory clustering using network mapped storage
PCT/EP2016/050685 WO2016120084A1 (en) 2015-01-27 2016-01-14 Host based non-volatile memory clustering using network mapped storage

Publications (2)

Publication Number Publication Date
DE112016000258T5 DE112016000258T5 (de) 2017-09-28
DE112016000258B4 true DE112016000258B4 (de) 2023-09-14

Family

ID=55182301

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016000258.0T Active DE112016000258B4 (de) 2015-01-27 2016-01-14 Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher

Country Status (5)

Country Link
US (2) US10061743B2 (de)
JP (1) JP6663434B2 (de)
DE (1) DE112016000258B4 (de)
GB (1) GB2551077B (de)
WO (1) WO2016120084A1 (de)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003648B2 (en) * 2014-10-02 2018-06-19 Samsung Electronics Co., Ltd. Mechanism for universal parallel information access
US10061743B2 (en) 2015-01-27 2018-08-28 International Business Machines Corporation Host based non-volatile memory clustering using network mapped storage
WO2018023499A1 (zh) * 2016-08-03 2018-02-08 华为技术有限公司 网络接口卡、计算设备以及数据包处理方法
US11586565B2 (en) * 2016-10-03 2023-02-21 Samsung Electronics Co., Ltd. Non-volatile storage system and data storage access protocol for non-volatile storage devices
US10614356B2 (en) 2017-04-24 2020-04-07 International Business Machines Corporation Local multicast in single-host multi-GPU machine for distributed deep learning systems
US11102294B2 (en) 2017-06-09 2021-08-24 Samsung Electronics Co., Ltd. System and method for supporting energy and time efficient content distribution and delivery
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10785301B2 (en) * 2017-08-03 2020-09-22 Toshiba Memory Corporation NVM express over fabrics
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
CN110199512B (zh) * 2017-12-26 2020-12-22 华为技术有限公司 存储系统中存储设备的管理方法及装置
US11595474B2 (en) * 2017-12-28 2023-02-28 Cisco Technology, Inc. Accelerating data replication using multicast and non-volatile memory enabled nodes
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
KR20190112446A (ko) * 2018-03-26 2019-10-07 삼성전자주식회사 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10936196B2 (en) 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US10630554B1 (en) * 2018-10-29 2020-04-21 International Business Machines Corporation Input/output (I/O) performance of hosts through bi-directional bandwidth feedback optimization
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US20220365729A1 (en) * 2019-01-31 2022-11-17 Intel Corporation Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd
US10958597B2 (en) * 2019-02-25 2021-03-23 Cisco Technology, Inc. General purpose ring buffer handling in a network controller
CN111625180B (zh) 2019-02-27 2021-05-28 英韧科技(上海)有限公司 数据写入方法及装置、存储介质
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
CN111064680B (zh) * 2019-11-22 2022-05-17 华为技术有限公司 一种通信装置及数据处理方法
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US20230236994A1 (en) * 2022-01-27 2023-07-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for queue management with a coherent interface
CN115550384B (zh) * 2022-11-25 2023-03-10 苏州浪潮智能科技有限公司 集群数据同步方法、装置、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006663A1 (en) 2013-06-26 2015-01-01 Cnex Labs, Inc. NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US10037272B2 (en) 2012-08-08 2018-07-31 Avalanche Technology, Inc. Storage system employing MRAM and array of solid state disks with integrated switch
WO2013147820A1 (en) * 2012-03-29 2013-10-03 Intel Corporation System and method for managing persistence with a multi-level memory hierarchy including non-volatile memory
JP2014130420A (ja) 2012-12-28 2014-07-10 Hitachi Ltd 計算機システム及び計算機の制御方法
US9483431B2 (en) * 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US9727503B2 (en) * 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US10061743B2 (en) 2015-01-27 2018-08-28 International Business Machines Corporation Host based non-volatile memory clustering using network mapped storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006663A1 (en) 2013-06-26 2015-01-01 Cnex Labs, Inc. NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks

Also Published As

Publication number Publication date
US20160217104A1 (en) 2016-07-28
GB201713001D0 (en) 2017-09-27
US11321271B2 (en) 2022-05-03
GB2551077B (en) 2018-05-30
JP2018509674A (ja) 2018-04-05
JP6663434B2 (ja) 2020-03-11
GB2551077A (en) 2017-12-06
US10061743B2 (en) 2018-08-28
DE112016000258T5 (de) 2017-09-28
US20180322088A1 (en) 2018-11-08
WO2016120084A1 (en) 2016-08-04

Similar Documents

Publication Publication Date Title
DE112016000258B4 (de) Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher
DE112014000415B4 (de) Quantisierte Überlastbenachrichtigung in einem virtuellen Netzwerksystem
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112013001904B4 (de) Paketvermittlung auf der Ebene 2 ohne Nachschlagetabelle für Ethernet-Switches
DE102019105193A1 (de) Technologien zum beschleunigen von edge-vorrichtungsarbeitslasten
DE112012001753B4 (de) 3 -Anmeldesequenz für eine Fibre-Channel-Weiterleiterstruktur
DE102013208431B4 (de) Großer verteilter Switch auf Fabric-Basis unter Verwendung virtueller Switches und virtueller Steuereinheiten
DE112012003776T5 (de) Migration logischer Partitionen mit zustandsbehafteten Auslagerungsdatenverbindungen während des laufenden Betriebs unter Verwendung der Kontextherauslösung und -einfügung
DE112013006417B4 (de) Verlustfreie Schalterstruktur mit niedriger Latenzzeit zum Gebrauch in einem Rechenzentrum
WO2016101288A1 (zh) 一种远程直接数据存取方法、设备和系统
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE112016001657T5 (de) Multi-Tenant-Sensitiver DHCP-Mechanismus für Cloud-Netzwerke
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE112013002270T5 (de) Bereitstellen von Diensten für virtuellen Overlay-Netzwerkverkehr
EP3076296A1 (de) Computer, steuerungsvorrichtung und datenverarbeitungsverfahren
DE112008001168T5 (de) System und Verfahren zum gemeinschaftlichen Verwenden eines Druckers
DE112020000535B4 (de) Fehlerbehebung innerhalb und außerhalb der eigenen Räumlichkeiten
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE102016104264A1 (de) Übertragen von Mehrfachzielpaketen in Overlay-Netzwerken
DE112014001397T5 (de) Flussrichterbasierter Niedriglatenznetzwerkbetrieb
DE112019005392T5 (de) Steigern von datenleistung durch transferieren von daten zwischen speicherebenen unter verwendung von arbeitslastmerkmalen
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden
DE112022002736T5 (de) Übertragen von aufgabendaten zwischen edge-einheiten beim edge computing

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: G06F0012080000

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R081 Change of applicant/patentee

Owner name: KYNDRYL, INC., NEW YORK, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

R016 Response to examination communication
R018 Grant decision by examination section/examining division