DE102018204427A1 - Simulieren mehrerer Speichergeräte mit einem einzelnen Speichergerät, das mit einem Rechengerät gekoppelt ist - Google Patents

Simulieren mehrerer Speichergeräte mit einem einzelnen Speichergerät, das mit einem Rechengerät gekoppelt ist Download PDF

Info

Publication number
DE102018204427A1
DE102018204427A1 DE102018204427.9A DE102018204427A DE102018204427A1 DE 102018204427 A1 DE102018204427 A1 DE 102018204427A1 DE 102018204427 A DE102018204427 A DE 102018204427A DE 102018204427 A1 DE102018204427 A1 DE 102018204427A1
Authority
DE
Germany
Prior art keywords
physical storage
storage devices
storage device
logical
single physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018204427.9A
Other languages
English (en)
Inventor
Slawomir Ptak
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102018204427A1 publication Critical patent/DE102018204427A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system

Abstract

Ein Rechengerät generiert mehrere logische Speichergeräte aus einem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist. Mehrere physische Speichergeräte werden über die mehreren logischen Speichergeräte simuliert. Die mehreren physischen Speichergeräte und das einzelne physische Speichergerät sind vom gleichen Typ.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Ein Rechengerät kann mit einem oder mehreren physischen Speichergeräten gekoppelt sein, in denen Daten gespeichert sein können. Ein Speichergerätetreiber ist ein Computerprogramm, das einen bestimmten Typ eines physischen Speichergeräts steuern kann, das mit dem Rechengerät gekoppelt ist. Das Betriebssystem des Rechengeräts kann einen oder mehrere Speichergerätetreiber verwenden, um Eingabe-/Ausgabe(I/O)-Anforderungen zu erfüllen, die von Anwendungen empfangen werden, die in dem Rechengerät ausgeführt werden.
  • Ein Block ist eine Abfolge von Bits oder Bytes, der zum Speichern von Daten verwendet wird. Die logische Blockadressierung (LBA) ist ein Schema, das zum Spezifizieren des Orts von Datenblöcken verwendet wird, die in physischen Speichergeräten wie etwa Festplattenlaufwerken gespeichert sind. Die LBA ist ein lineares Adressierungsschema, in dem Blöcke über einen ganzzahligen Index lokalisiert werden können, wobei der erste Block als LBA 0, der zweite als LBA 1 usw. bezeichnet werden.
  • Bei Non-Volatile Memory Express (NVMe) handelt es sich um ein Protokoll für den Transport von Daten zu und von NAND-Flash- und anderen Arten von Festkörpertechnologien. Speichergeräte, auf die ein Rechengerät über das NVMe-Protokoll zugreifen kann, können als NVMe-Geräte bezeichnet werden. Weitere Details zu NVMe sind unter www.nvmexpress.org zu finden.
  • Bei einem redundanten Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) handelt es sich um eine Datenspeicher-Virtualisierungstechnologie, die mehrere physische Festplattenlaufwerke zum Zwecke der Datenredundanz, Leistungsverbesserung oder beidem zu einer einzigen logischen Einheit vereinigt. Die Daten werden über eine der verschiedenen Konfigurationen der Festplattenlaufwerke auf die Festplattenlaufwerke verteilt. Die Konfigurationen der Festplattenlaufwerke werden als RAID-Level bezeichnet, wobei unterschiedliche RAID-Level unterschiedliche Redundanz- und Leistungslevel aufweisen.
  • Figurenliste
  • Es wird nun auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen für entsprechende Teile stehen:
    • 1 stellt ein Blockdiagramm dar, das ein Rechengerät zeigt, das mit mehreren physischen Speichergeräten gekoppelt ist, gemäß gewissen Ausführungsformen;
    • 2 stellt ein Blockdiagramm dar, das ein Rechengerät zeigt, das mit einem einzelnen physischen Speichergerät gekoppelt ist, wobei mehrere der physischen Speichergeräte im Rechengerät über mehrere logische Speichergeräte simuliert sind, die von dem einzelnen physischen Speichergerät generiert werden, gemäß gewissen Ausführungsformen;
    • 3 stellt ein Blockdiagramm dar, das die Simulation mehrerer physischer Speichergeräte basierend auf der Partitionierung eines einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche zeigt, wobei jeder logische Blockadressbereich einem logischen Speichergerät zugeordnet ist, gemäß gewissen Ausführungsformen;
    • 4 stellt ein Blockdiagramm dar, das die Simulation mehrerer physischer Speichergeräte basierend auf der Generierung mehrerer Namespaces von einem einzelnen NVMe-Gerät zeigt, wobei jeder Namespace einem logischen NVMe-Gerät zugeordnet ist, gemäß gewissen Ausführungsformen;
    • 5 stellt ein Flussdiagramm dar, das die Simulation mehrerer physischer Speichergeräte von einem einzelnen physischen Speichergerät zeigt, das mit einem Rechengerät gekoppelt ist, gemäß gewissen Ausführungsformen; und
    • 6 stellt ein Blockdiagramm eines Systems dar, das ein Rechengerät aufweist, gemäß gewissen Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung wird auf die beiliegenden Zeichnungen Bezug genommen, die Teil davon sind und die verschiedenen Ausführungsformen veranschaulichen. Es versteht sich, dass andere Ausführungsformen benutzt werden können und strukturelle und betriebliche Änderungen vorgenommen werden können.
  • In gewissen Ausführungsformen simuliert ein Rechengerät mehrere physische Speichergeräte unter Verwendung der Funktionen, die von einem einzelnen physischen Speichergerät bereitgestellt werden, das mit dem Rechengerät gekoppelt ist.
  • In gewissen Ausführungsformen generiert das Rechengerät mehrere logische Speichergeräte aus dem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist. Die mehreren physischen Speichergeräte werden über die mehreren logischen Speichergeräte simuliert.
  • Als ein Ergebnis kann in Situationen, in denen physische Speichergeräte kostenaufwändig oder nicht leicht erhältlich sind, das einzelne physische Speichergerät zum Testen und Entwickeln von Software verwendet werden, die mehrere physische Geräte benötigt. Zum Beispiel kann die Entwicklung und das Testen von RAID-Software, die mehrere physische Speichergeräte benötigt, durch Koppeln eines einzelnen physischen Speichergeräts mit dem Rechengerät und Simulieren der mehreren physischen Speichergeräte von dem einzelnen physischen Speichergerät erreicht werden.
  • 1 veranschaulicht ein Blockdiagramm 100, das ein Rechengerät 102 zeigt, das mit mehreren physischen Speichergeräten 104, 106, 108 gekoppelt ist, gemäß gewissen Ausführungsformen.
  • Das Rechengerät 102 kann jedes geeignete Rechengerät umfassen, einschließlich derjenigen, die derzeit im Stand der Technik bekannt sind, wie etwa ein Personal Computer, eine Workstation, ein Server, ein Mainframe, ein Handheld-Computer, ein Palmtop-Computer, ein Telefongerät, ein Netzwerkdienstprogramm, ein Blade-Computer, ein Verarbeitungsgerät usw. Die physischen Speichergeräte 104, 106, 108 können jegliche geeigneten physischen Speichergeräte umfassen, wie z. B. Festplattenlaufwerke, Festkörperlaufwerke usw. In gewissen Ausführungsformen kann das Rechengerät 102 mit dem physischen Speichergerät 104, 106, 108 über einen Bus (z. B. einen Peripheral Component Interconnect Express(PCIe)-Bus , Serial Advanced Technology Attachment(SATA)-Bus, Serial Attached Small Computer System Interface(SAS)-Bus) oder ein Netzwerk, wie das Internet, ein Storage Area Network (SAN), ein lokales Netzwerk (LAN) usw. oder eine logische Geräteschnittstelle, z. B. NVM Express (NVMe), kommunizieren. Weitere Details zu NVMe finden sich in der Veröffentlichung „NVM Express“ Prüfung 1.2.1, veröffentlicht am 5. Juni 2016 von NVM Express, Inc. Das Rechengerät 102 und die physischen Speichergeräte 104, 106, 108 können Elemente in jedem geeigneten Netzwerk sein, wie z. B. ein Speicherbereichsnetzwerk, ein Breitbereichsnetzwerk, das Internet, Intranet usw. In gewissen Ausführungsformen können das Rechengerät 102 und die physischen Speichergeräte 104, 106, 108 Elemente in einer Cloud-Computerumgebung sein.
  • Eine oder mehrere Speichersteuerungsschnittstellen 110 können verwendet werden, um das Rechengerät 102 mit den mehreren physischen Speichergeräte 104, 106, 108 zu koppeln. Ein Speichersteuerungstreiber 112 (der auch als Lower-Level-Speichertreiber bezeichnet wird) kann Funktionen bereitstellen, die es einem Upper-Level-Speichertreiber 114 ermöglichen, mit den mehreren physischen Speichergeräten 104, 106, 108 zu kommunizieren. In gewissen Ausführungsformen kann der Upper-Level-Speichertreiber 114 mehr als ein physisches Speichergerät für die Entwicklung und das Testen benötigen. Wenn zum Beispiel der Upper-Level-Speichertreiber 114 ein RAID-Treiber ist, dann kann, außer wenn die mehreren physischen Speichergeräte 104, 106, 108 in ihrer Anzahl höher sind als für die RAID-Konfiguration benötigt wird, der RAID-Treiber nicht angemessen entwickelt und getestet werden. In den Ausführungsformen, die in 1 gezeigt sind, gibt es mehrere physische Speichergeräte 104, 106, 108, die für die Entwicklung und das Testen des Upper-Level-Speichertreibers 114 angemessen sind. Andere Anwendungen 116, die Userspace-Software umfassen können (d. h. Software, die in dem Arbeitsspeicherraum ausgeführt wird, der Benutzeranwendungen zugewiesen ist), können auch in dem Rechengerät 102 ausgeführt werden und den Upper-Level-Speichertreiber 114 verwenden.
  • Es kann Situationen geben, in denen die physischen Speichergeräte 104, 106, 108 kostenaufwändig oder nicht ohne weiteres erhältlich sind, und es kann wünschenswert sein, die Anzahl der zu verwendenden physischen Speichergeräte für die Entwicklung und das Testen des Upper-Level-Speichertreibers 114 und der Anwendungen 116 zu minimieren.
  • Gewisse Ausführungsformen, die in 2 bis 6 gezeigt sind, stellen Konfigurationen bereit, in denen ein einzelnes physisches Speichergerät (z. B. das physische Speichergerät 104) für die Entwicklung und das Testen des Upper-Level-Speichertreibers 114 und der Anwendungen 116 ausreicht.
  • 2 zeigt ein Blockdiagramm 200, das das Rechengerät 102 zeigt, das mit einem einzelnen physischen Speichergerät 202 gekoppelt ist, wobei mehrere physische Speichergeräte im Rechengerät 102 über mehrere logische Speichergeräte 204, 206, 208 simuliert sind, die von dem einzelnen physischen Speichergerät 202 generiert werden, gemäß gewissen Ausführungsformen.
  • In gewissen Ausführungsformen führt eine Emulationsschicht 210 im Rechengerät 102 das Generieren der mehreren logischen Speichergeräte 204, 206, 208 und das Simulieren der mehreren physischen Speichergeräte von den mehreren logischen Speichergeräten 204, 206, 208 durch. Die Emulationsschicht 210 bildet eine Schnittstelle zwischen dem Upper-Level-Speichertreiber 114 und dem Speichersteuerungstreiber 112 des einzelnen physischen Speichergeräts 202. In gewissen Ausführungsformen kann die Emulationsschicht 210 in Software, Hardware, Firmware oder einer beliebigen Kombination davon implementiert sein.
  • Das Testen und Entwickeln des Upper-Level-Speichertreibers 114 erfolgt durch Simulieren der mehreren physischen Speichergeräte. Das einzelne physische Speichergerät 202 ist geeignet, um die mehreren physischen Speichergeräte zu simulieren, und jeder Befehl, der an die mehreren physischen Speichergeräte durch den Upper-Level-Speichertreiber 114 oder die Anwendungen 116 geleitet wird, wird zu dem einzelnen physischen Speichergerät 202 geleitet, über die Emulationsschicht 210, den Speichersteuerungstreiber 112 und die Speichersteuerungsschnittstelle 110.
  • In gewissen Ausführungsformen, die in 2 gezeigt sind, konfiguriert, wenn der Upper-Level-Speichertreiber 114 ein RAID-Treiber ist, der RAID-Treiber die mehreren physischen Speichergeräte als einen RAID, verwendet aber nur ein einzelnes physisches Festplattenlaufwerk 202. Es brauchen keine zusätzlichen physischen Plattenlaufwerke mit dem Rechengerät 102 gekoppelt sein.
  • 3 zeigt ein Blockdiagramm 300, das die Simulation mehrerer physischer Speichergeräte basierend auf der Partitionierung eines einzelnen physischen Speichergeräts 302 in mehrere logische Blockadressbereiche 304, 306, 308 zeigt, wobei jeder logische Blockadressbereich einem logischen Speichergerät 310, 312, 314 zugeordnet wird, gemäß gewissen Ausführungsformen.
  • In gewissen Ausführungsformen partitioniert die Emulationsschicht 210 den logischen Blockadressraum des physischen Speichergeräts 302 in mehrere logische Blockadressbereiche (Bezugszeichen 316).
  • Daher zeigt 3 gewisse Ausführungsformen, in denen die Emulationsschicht 210 das einzelne physische Speichergerät 302 in mehrere logische Blockadressbereiche 304, 306, 308 partitioniert und jeden logischen Blockadressbereich einem logischen Speichergerät der mehreren logischen Speichergeräte 310, 312, 314 zuordnet. Zum Beispiel ist der logische Blockadressbereich Nr. 1 304 dem logischen Speichergerät Nr. 1 310 zugeordnet, der logische Blockadressbereich Nr. 2 306 ist dem logischen Speichergerät Nr. 3 312 zugeordnet und der logische Blockadressbereich Nr. N 308 ist dem logischen Speichergerät Nr. N 314 zugeordnet. In gewissen Ausführungsformen ist ein logischer Blockadressbereich ein Satz aufeinanderfolgender logischer Blockadressen.
  • In 3 wird in gewissen Ausführungsformen ein einzelnes physisches Laufwerk in eine Vielzahl von LBA-Bereiche durch die Emulationsschicht 210 partitioniert. Dann wird das einzelne physische Laufwerk als eine Vielzahl von Laufwerken an die Upper-Level-Software-Schichten 114, 116 gemeldet. Alle an Laufwerke gerichteten Befehle werden ohne Änderungen an das einzelne physische Laufwerk umgeleitet, mit den folgenden Ausnahmen:
    1. 1. Die Seriennummer für die simulierten Laufwerke wird basierend auf der Seriennummer des physischen Laufwerks generiert;
    2. 2. Die Kapazität jedes simulierten Laufwerks ist geringer als die des einzelnen physischen Laufwerks; und
    3. 3. Die Ziel-LBA für Lese- und Schreibbefehle ist verschoben.
  • 4 veranschaulicht ein Blockdiagramm 400, das die Simulation mehrerer physischer Speichergeräte basierend auf der Generierung mehrerer Namespaces 402, 404, 406 von einem einzelnen NVMe-Gerät 408 zeigt, wobei jeder Namespace einem logischen NVMe-Gerät 410, 412, 414 zugeordnet ist, gemäß gewissen Ausführungsformen.
  • 4 zeigt gewisse Ausführungsformen, in denen das Rechengerät 102 über ein NVMe-Protokoll mit dem einzelnen physischen Speichergerät 408 kommuniziert. Die Emulationsschicht 210 generiert mehrere Namespaces 402, 404, 406 von dem einzelnen physischen Speichergerät 408, das ein physisches NVMe-Gerät ist, durch Senden eines Befehls an das physische NVMe-Gerät 408 über den Speichersteuerungstreiber 112 und die Speichersteuerungsschnittstelle 110. Die Emulationsschicht 210 ordnet jeden Namespace der mehreren Namespaces 402, 404, 406 einem logischen Speichergerät der mehreren logischen Speichergeräte 410, 412, 414 zu, wobei ein logisches Speichergerät ein logisches NVMe-Gerät ist. Zum Beispiel ist der Namespace Nr. 1 402 dem logischen NVMe-Gerät Nr. 1410 zugeordnet, der Namespace Nr. 2 404 ist dem logischen NVMe-Gerät Nr. 2 412 zugeordnet, der Namespace Nr.N 406 ist dem logischen NVMe-Gerät Nr. N 414 zugeordnet.
  • 5 veranschaulicht ein Flussdiagramm 500, das die Simulation mehrerer physischer Speichergeräte von einem einzelnen physischen Speichergerät 202 zeigt, das mit einem Rechengerät 102 gekoppelt ist, gemäß gewissen Ausführungsformen.
  • Die Steuerung startet bei Block 502, in dem ein Rechengerät 102 mehrere logische Speichergeräte 204, 206, 208 von einem einzelnen physischen Speichergerät 202 generiert, das mit dem Rechengerät 102 gekoppelt ist. Mehrere physische Speichergeräte werden (bei Block 504) über die mehreren logischen Speichergeräte 204, 206, 208 simuliert, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät 202 vom selben Typ sind. Zum Beispiel können in bestimmten Ausführungsformen, in denen das einzelne physische Speichergerät eine Festplatte ist, mehrere Festplatten durch die Emulationsschicht 210 simuliert werden.
  • In gewissen Ausführungsformen können die in Block 502 gezeigten Operationen durch Operationen ausgeführt werden, die in den Blöcken 506, 508 gezeigt sind, und in anderen Ausführungsformen können die in Block 502 gezeigten Operationen durch Operationen ausgeführt werden, die in den Blöcken 510, 512, 514 gezeigt sind.
  • In Block 506 partitioniert die Emulationsschicht 210 das einzelne physische Speichergerät in mehrere logische Blockadressbereiche 304, 306, 308 und ordnet dann (bei Block 508) jeden logischen Blockadressbereich einem logischen Speichergerät der mehreren logischen Speichergeräte 310, 312, 314 zu.
  • In Block 510 kommuniziert das Rechengerät 102 über das NVMe-Protokoll mit einem einzelnen physischen Speichergerät. Die Emulationsschicht 210 generiert (bei Block 512) mehrere Namespaces 402, 404, 406 von dem einzelnen physischen Speichergerät, bei dem es sich um ein physisches NVMe-Gerät handelt. Die Emulationsschicht 210 ordnet (bei Block 514) jeden Namespace der mehreren Namespaces 402, 404, 406 einem logischen Speichergerät der mehreren logischen Speichergeräte 410, 412, 414 zu, wobei ein logisches Speichergerät ein logisches NVMe-Gerät ist.
  • Daher stellen gewisse Ausführungsformen, die in 1 bis 5 gezeigt sind, Mechanismen für die Entwicklung von Speichersoftware in einer Betriebssystemumgebung bereit. Ein einzelnes Laufwerk kann in logische Blockadressbereiche (LBA-Bereiche) (oder Namespaces) partitioniert werden, und jeder Teil, der einem LBA-Bereich entspricht, kann als separates Laufwerk an das Betriebssystem und an andere Softwarekomponenten gemeldet werden. Die Partitionierung wird in einer Emulationsschicht mit minimalen oder keinen Auswirkungen auf den Rest des Treibercodes ausgeführt. Folglich muss nur ein einzelnes Laufwerk mit dem Rechengerät verbunden werden, und das einzelne Laufwerk kann als mehrere Laufwerke fungieren. Dieses einzelne Laufwerk verarbeitet alle protokollspezifischen Befehle (z. B. NVMe), sodass eine komplexe Softwareemulation vermieden wird.
  • Es besteht kein Bedarf an einer komplexen Softwareemulation des Laufwerks, wie dies in Situationen der Fall ist, in denen kein physisches Laufwerk verwendet wird. Die Ausführungsformen werden in einem Rechengerät ausgeführt, das an ein physisches Laufwerk gekoppelt ist. Eine solche Konfiguration bietet ein höheres Konfidenzniveau für Entwicklung und Test im Vergleich zu Konfigurationen, bei denen Hardwarekomponenten in Software emuliert werden. Da alle I/O- und Administrationsbefehle vom physischen Laufwerk verarbeitet werden, kann eine einzelne Version der Emulationsschicht Laufwerke simulieren, die mit einer beliebigen Version eines Speicherprotokolls kompatibel sind, das von einem beliebigen Anbieter bereitgestellt wird. Software, die über dem Speichersteuerungstreiber 112 positioniert ist, kann auf die simulierten Laufwerke zugreifen, und arbeitet auf die gleiche Weise wie eine, bei der eine Vielzahl physischer Laufwerke an das System angehängt ist.
  • Obwohl verschiedene Ausführungsformen in Bezug auf physische Speichergeräte beschrieben sind, die Festplattenlaufwerke oder Festkörperlaufwerke (SSD) umfassen, können Ausführungsformen auf jedes physische Speichergerät angewendet werden, das einen nichtflüchtigen Arbeitsspeicher umfasst. In einer Ausführungsform ist das physische Speichergerät ein blockadressierbares Arbeitsspeichergerät, wie beispielsweise eines, das auf NAND- oder NOR-Technologien basiert. Ein physisches Speichergerät kann auch nichtflüchtige Geräte der zukünftigen Generation umfassen, wie etwa ein dreidimensionales Crosspoint-Arbeitsspeichergerät oder andere byteadressierbare nichtflüchtige Arbeitsspeichergeräte mit Schreibzugriff vor Ort. In einer Ausführungsform kann das physische Speichergeräte Arbeitsspeichergeräte sein oder einschließen, die Chalkogenidglas, NAND-Flash-Speicher mit mehreren Schwellenwerten, NOR-Flash-Speicher, Single- oder Multi-Level-Phasenwechselspeicher (PCM), einen resistiven Speicher, Nanodrahtspeicher, ferroelektrischen Transistor-Direktzugriffsspeicher (FeTRAM), magnetoresistiven Direktzugriffsspeicher (MRAM), der Memristor-Technologie enthält, oder Spin-Transfer-Drehmoment(STT)-MRAM, ein spintrisches magnetisches Sperrschicht-Speichergerät oder eine Kombination aus jedem der obigen oder einem anderen Arbeitsspeicher verwendet. Das physische Speichergerät kann sich auf den Chip selbst und/oder auf ein verpacktes Speicherprodukt beziehen.
  • Die beschriebenen Komponenten und/oder Operationen können als ein Verfahren, eine Vorrichtung oder ein Computerprogrammprodukt unter Verwendung von Standardprogrammierung und/oder Ingenieurstechniken implementiert werden, um Software, Firmware, Hardware oder eine beliebige Kombination davon herzustellen. Die beschriebenen Operationen können als Code implementiert werden, der in einem „computerlesbaren Speichermedium“ zur Implementierung in gewissen Ausführungsformen oder zur Softwaresimulation eines Speicherchips für Ausgestaltungszwecke beibehalten wird, wobei ein Prozessor den Code von dem computerspeicherlesbaren Medium lesen und ausführen kann. Das computerlesbare Speichermedium weist mindestens eine elektronische Schaltung, Speichermaterialien, anorganische Materialien, organische Materialien, biologische Materialien, eine Umhüllung, ein Gehäuse, eine Beschichtung und Hardware auf. Ein computerlesbares Speichermedium kann ein magnetisches Speichermedium (z. B. Festplattenlaufwerke, Disketten, Band usw.), einen optischen Speicher (CD-ROMs, DVDs, optische Platten usw.), flüchtige und nichtflüchtige Speichergeräte (z. B. EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash-Speicher, Firmware, programmierbare Logik usw.), Festkörpergeräte (SSD) usw. umfassen. Der Code, der die beschriebenen Operationen implementiert, kann ferner in einer Hardwarelogik implementiert sein, die in einer Hardwarevorrichtung (z. B. einem integrierten Schaltungschip, einer programmierbaren Gate-Anordnung (PGA), einer anwendungsspezifischen integrierten Schaltung (ASIC) usw.) implementiert ist. Noch weiter kann der Code, der die beschriebenen Operationen implementiert, in „Übertragungssignalen“ implementiert sein, wobei Übertragungssignale durch den Raum oder durch ein Übertragungsmedium, wie beispielsweise eine optische Faser, Kupferdraht usw. propagieren. Die Übertragungssignale, in denen der Code oder die Logik codiert sind, können ferner ein drahtloses Signal, Satellitenübertragung, Funkwellen, Infrarotsignale, Bluetooth usw. umfassen. Der auf einem computerlesbaren Speichermedium eingebettete Programmcode kann als Übertragungssignale von einer Übertragungsstation oder einem Computer zu einer Empfangsstation oder einem Computer übertragen werden. Ein computerlesbares Speichermedium besteht nicht nur aus Übertragungssignalen. Der Fachmann wird erkennen, dass viele Modifikationen an dieser Konfiguration vorgenommen werden können und dass der Herstellungsgegenstand ein geeignetes informationstragendes Medium umfassen kann, das im Stand der Technik bekannt ist.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der gewissen Ausführungsformen kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben sein. Blöcke von Flussdiagrammen und/oder Blockdiagrammen können durch Computerprogrammanweisungen implementiert werden.
  • 6 veranschaulicht ein Blockdiagramm eines Systems 600, das ein Rechengerät 102 aufweisen kann, das ein physisches Speichergerät 202, 302, 408 aufweisen kann oder mit dem Rechengerät 102 gekoppelt ist. Zum Beispiel kann das System 600 in gewissen Ausführungsformen ein Computer (z. B. ein Laptop-Computer, ein Desktop-Computer, ein Tablet, ein Mobiltelefon oder ein anderes geeignetes Rechengerät) sein, das ein Massenspeicher- oder Arbeitsspeichergerät in dem Computer aufweist. Das System 600 kann eine Schaltung 602 aufweisen, die in gewissen Ausführungsformen mindestens einen Prozessor 604 aufweisen kann. Das System 600 kann auch einen Arbeitsspeicher 606 und Massenspeicher 608 aufweisen. Der Massenspeicher 608 kann ein Festkörperlaufwerk, ein Plattenlaufwerk oder andere Laufwerke oder Vorrichtungen aufweisen, die ein nichtflüchtiges Arbeitsspeichergerät (z. B. EEPROM, ROM, PROM, Flash, Firmware, programmierbare Logik usw.) aufweisen. Der Massenspeicher 608 kann auch ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk usw. aufweisen. Der Massenspeicher 608 kann ein internes Speichergerät, ein angeschlossenes Speichergerät und/oder ein netzwerkzugängliches Speichergerät umfassen. Das System 600 kann eine Programmlogik 610 aufweisen, die einen Code 612 enthält, der in den Arbeitsspeicher 606 geladen und durch den Prozessor 604 oder die Schaltung 602 ausgeführt werden kann. In gewissen Ausführungsformen kann die Programmlogik 610 einschließlich des Codes 612 in dem Massenspeicher 608 gespeichert sein. In gewissen anderen Ausführungsformen kann die Programmlogik 610 in der Schaltung 602 implementiert sein. Während 6 also die Programmlogik 610 separat von den anderen Elementen zeigt, kann die Programmlogik 610 in dem Arbeitsspeicher 606 und/oder der Schaltung 602 implementiert sein. Das System 600 kann auch eine Anzeige 614 (z. B. eine Flüssigkristallanzeige (LCD), eine Leuchtdioden(LED)-Anzeige, eine Kathodenstrahlröhren(CRT)-Anzeige, eine Touchscreen-Anzeige oder irgendeine andere geeignete Anzeige) aufweisen. Das System 600 kann auch ein oder mehrere Eingabegeräte 616 umfassen, wie beispielsweise eine Tastatur, eine Maus, einen Joystick, ein Trackpad oder andere geeignete Eingabegeräte. In gewissen Ausführungsformen kann die Anzeige 614 mit einem Arbeitsspeicher- oder Massenspeichergerät gekoppelt sein, das den Massenspeicher 608 und/oder den Arbeitsspeicher 606 umfasst; eine Netzwerkschnittstelle 618 kann kommunikativ mit dem Prozessor 604 gekoppelt sein; und eine Batterie 620 kann kommunikativ mit dem Prozessor 604 gekoppelt sein. Andere Komponenten oder Geräte, die über die in 6 gezeigten hinausgehen, sind in dem System 600 zu finden.
  • Gewisse Ausführungsformen können sich an ein Verfahren zum Bereitstellen von Computerbefehlen durch eine Person oder automatische Verarbeitung mit computerlesbarem Code in ein Computersystem richten, wobei der Code in Kombination mit dem Computersystem die Operationen der beschriebenen Ausführungsformen ausführen kann.
  • Die Ausdrücke „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, „eine oder mehrere Ausführungsformen“ und „einige Ausführungsformen“ bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen“ sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „einschließlich/aufweisend“, „umfassend“, „haben“ und Variationen davon bedeuten „einschließlich, aber nicht beschränkt auf”, sofern nicht ausdrücklich anders angegeben.
  • Die nummerierte Auflistung der Elemente bedeutet nicht, dass sich einige der oder alle Elemente gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „ein/e“ und „der/die/das“ bedeuten „eine oder mehrere“, sofern nicht ausdrücklich anders angegeben.
  • Geräte, die miteinander kommunizieren, müssen nicht ständig miteinander kommunizieren, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem können Geräte, die miteinander kommunizieren, direkt oder indirekt über ein oder mehrere Zwischengeräte kommunizieren.
  • Eine Beschreibung einer Ausführungsform mit verschiedenen miteinander kommunizierenden Komponenten bedeutet nicht, dass alle diese Komponenten benötigt werden. Im Gegenteil wird eine Vielzahl von optionalen Komponenten beschrieben, um die große Vielfalt möglicher Ausführungsformen zu veranschaulichen.
  • Obwohl Prozessschritte, Verfahrensschritte, Algorithmen oder dergleichen in einer aufeinander folgenden Reihenfolge beschrieben werden können, können solche Prozesse, Verfahren und Algorithmen ferner so konfiguriert sein, dass sie in wechselnden Reihenfolgen arbeiten. Mit anderen Worten, heißt eine Abfolge oder Reihenfolge von Schritten, die möglicherweise beschrieben wird, nicht notwendigerweise, dass die Schritte in dieser Reihenfolge durchgeführt werden müssen. Die Schritte der hier beschriebenen Prozesse können in jeder beliebigen praktischen Reihenfolge ausgeführt werden. Ferner können einige Schritte gleichzeitig ausgeführt werden.
  • Wenn hierin ein einzelnes Gerät oder ein einzelner Artikel beschrieben ist, ist es offensichtlich, dass mehr als ein Gerät/Artikel (ob sie zusammenwirken oder nicht) anstelle eines einzelnen Geräts/einzelnen Artikels verwendet werden kann. Gleichfalls ist es, wenn mehr als ein Gerät oder ein Artikel hierin beschrieben ist (ob sie zusammenwirken oder nicht), offensichtlich, dass ein einzelnes Gerät/ein einzelner Artikel anstelle des mehr als einem Gerät oder Artikel oder eine andere Anzahl von Geräten/Artikeln anstelle der angegebenen Anzahl von Geräten oder Programmen verwendet werden kann. Die Funktionsweise und/oder die Merkmale eines Geräts können alternativ durch ein oder mehrere andere Geräte ausgeführt sein, die nicht explizit mit solchen Funktionen/Merkmalen beschrieben sind. Daher müssen andere Ausführungsformen das Gerät selbst nicht enthalten.
  • Zumindest gewisse Operationen, die in den Figuren möglicherweise dargestellt sind, zeigen gewisse Ereignisse, die in einer gewissen Reihenfolge auftreten. In alternativen Ausführungsformen können gewisse Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder entfernt werden. Darüber hinaus können Schritte zu der oben beschriebenen Logik hinzugefügt werden und immer noch den beschriebenen Ausführungsformen entsprechen. Ferner können hierin beschriebene Operationen nacheinander auftreten oder gewisse Operationen können parallel verarbeitet werden. Des Weiteren können Operationen von einer einzelnen Verarbeitungseinheit oder von verteilten Verarbeitungseinheiten ausgeführt werden.
  • Die vorstehende Beschreibung der verschiedenen Ausführungsformen wurde zu Erläuterungs- und Beschreibungszwecken dargelegt. Sie bezweckt nicht, erschöpfend zu sein und auf die genaue offenbarte Form eingeschränkt zu sein. Angesichts der oben dargelegten Lehren sind viele Modifikationen und Variationen möglich.
  • Beispiele
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Beispiel 1 ist ein Verfahren für die Gerätesimulation, wobei ein Rechengerät mehrere logische Speichergeräte aus einem einzelnen physischen Speichergerät generiert, das mit dem Rechengerät gekoppelt ist. Mehrere physische Speichergeräte werden über die mehreren logischen Speichergeräte simuliert, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 das Partitionieren des einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche beinhalten, und das Zuordnen jedes logischen Blockadressbereiches einem logischen Speichergerät der mehreren logischen Speichergeräte.
  • In Beispiel 3 kann der Gegenstand von Beispiel 1 beinhalten, dass das Rechengerät mit dem einzelnen physischen Speichergerät über ein NVMe(Non-Volatile Memory Express)-Protokoll kommuniziert, wobei das Verfahren ferner umfasst: Generieren mehrerer Namespaces von dem einzelnen physischen Speichergerät; und Zuordnen jedes Namespace der mehreren Namespaces einem logischen Speichergerät der mehreren logischen Speichergeräte.
  • In Beispiel 4 kann der Gegenstand von Beispiel 1 beinhalten, dass eine Emulationsschicht in dem Rechengerät das Generieren der mehreren logischen Speichergeräte und das Simulieren der mehreren physischen Speichergeräte ausführt.
  • In Beispiel 5 kann der Gegenstand von Beispiel 4 beinhalten, dass die Emulationsschicht eine Schnittstelle zwischen einem Upper-Level-Speichertreiber und einem Speichersteuerungstreiber des einzelnen physischen Speichergeräts ausführt, und wobei das Verfahren ferner umfasst: Testen der Funktionen des Upper-Level-Speichertreibers und der Funktionen der mehreren physischen Speichergeräte durch das Simulieren der mehreren physischen Speichergeräte.
  • In Beispiel 6 kann der Gegenstand von Beispiel 5 beinhalten, dass der Upper-Level-Speichertreiber die mehreren physischen Speichergeräte als ein redundantes Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) konfiguriert.
  • In Beispiel 7 kann der Gegenstand von Beispiel 6 beinhalten, dass das Testen der Funktionen des Upper-Level-Speichertreibers und das Testen der Funktionen der mehreren physischen Speichergeräte ausgeführt wird, ohne ein zusätzliches physisches Speichergerät zusätzlich zu dem einzelnen physischen Speichergerät zu koppeln, das mit dem Rechengerät gekoppelt ist.
  • In Beispiel 8 kann der Gegenstand von Beispiel 1 beinhalten, dass das einzelne physische Speichergerät die mehreren physischen Speichergeräte simulieren kann und wobei ein Befehl, der an eines der mehreren physischen Speichergeräte gerichtet ist, an das einzelne physische Speichergerät gerichtet ist.
  • Beispiel 9 ist ein System zur Gerätesimulation. Das System ist mit einem einzelnen physischen Speichergerät gekoppelt, wobei das System umfasst: einen Arbeitsspeicher; und einen Prozessor, der mit dem Arbeitsspeicher gekoppelt ist, wobei der Prozessor betrieben werden kann zum: Generieren mehrerer logischer Speichergeräte aus dem einzelnen physischen Speichergerät; und Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  • In Beispiel 10 kann der Gegenstand von Beispiel 9 beinhalten, dass der Prozessor ferner betrieben werden kann zum: Partitionieren des einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche; und Zuordnen jedes logischen Blockadressbereichs zu einem logischen Speichergerät der mehreren logischen Speichergeräte.
  • In Beispiel 11 kann der Gegenstand von Beispiel 9 beinhalten, dass das System mit dem einzelnen physischen Speichergerät über ein NVMe(Non-Volatile Memory Express)-Protokoll kommuniziert, wobei der Prozessor ferner betrieben werden kann zum: Generieren mehrerer Namespaces von dem einzelnen physischen Speichergerät; und Zuordnen jedes Namespace der mehreren Namespaces einem logischen Speichergerät der mehreren logischen Speichergeräte.
  • In Beispiel 12 kann der Gegenstand von Beispiel 9 beinhalten, dass eine Emulationsschicht das Generieren der mehreren logischen Speichergeräte und das Simulieren der mehreren physischen Speichergeräte ausführt.
  • In Beispiel 13 kann der Gegenstand von Beispiel 12 beinhalten, dass die Emulationsschicht eine Schnittstelle zwischen einem Upper-Level-Speichertreiber und einem Speichersteuerungstreiber des einzelnen physischen Speichergeräts ausführt, und wobei der Prozessor ferner betrieben werden kann zum: Testen der Funktionen des Upper-Level-Speichertreibers und der Funktionen der mehreren physischen Speichergeräte über die Simulation der mehreren physischen Speichergeräte.
  • In Beispiel 14 kann der Gegenstand von Beispiel 13 beinhalten, dass der Upper-Level-Speichertreiber die mehreren physischen Speichergeräte als ein redundantes Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) konfiguriert.
  • In Beispiel 15 kann der Gegenstand von Beispiel 14 beinhalten, dass das Testen der Funktionen des Upper-Level-Speichertreibers und das Testen der Funktionen der mehreren physischen Speichergeräte ausgeführt werden, ohne ein zusätzliches physisches Speichergerät zusätzlich zu dem einzelnen physischen Speichergerät zu koppeln.
  • In Beispiel 16 kann der Gegenstand von Beispiel 9 beinhalten, dass das einzelne physische Speichergerät die mehreren physischen Speichergeräte simulieren kann, und wobei ein Befehl, der an eines der mehreren physischen Speichergeräte gerichtet ist, an das einzelne physische Speichergerät gerichtet ist.
  • Beispiel 17 ist ein computerlesbares Speichermedium für die Gerätesimulation, das computerlesbaren Programmcode aufweist, der damit ausgeführt ist, wobei der computerlesbare Programmcode konfiguriert ist, um Operationen auf einem Rechengerät durchzuführen, wobei die Operationen umfassen: Generieren mehrerer logischer Speichergeräte aus einem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist; und Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  • In Beispiel 18 kann der Gegenstand von Beispiel 17 das Partitionieren des einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche beinhalten, und das Zuordnen jedes logischen Blockadressbereiches einem logischen Speichergerät der mehreren logischen Speichergeräte.
  • In Beispiel 19 kann der Gegenstand von Beispiel 17 beinhalten, dass das Rechengerät mit dem einzelnen physischen Speichergerät über ein NVMe(Non-Volatile Memory Express)-Protokoll kommuniziert, wobei die Operationen ferner umfassen: Generieren mehrerer Namespaces von dem einzelnen physischen Speichergerät; und Zuordnen jedes Namespace der mehreren Namespaces einem logischen Speichergerät der mehreren logischen Speichergeräte.
  • In Beispiel 20 kann der Gegenstand von Beispiel 17 beinhalten, dass eine Emulationsschicht in dem Rechengerät das Generieren der mehreren logischen Speichergeräte und das Simulieren der mehreren physischen Speichergeräte ausführt.
  • In Beispiel 21 kann der Gegenstand von Beispiel 20 beinhalten, dass die Emulationsschicht eine Schnittstelle zwischen einem Upper-Level-Speichertreiber und einem Speichersteuerungstreiber des einzelnen physischen Speichergeräts ausführt, und wobei die Operationen ferner umfassen: Testen der Funktionen des Upper-Level-Speichertreibers und der Funktionen der mehreren physischen Speichergeräte durch das Simulieren der mehreren physischen Speichergeräte.
  • In Beispiel 22 kann der Gegenstand von Beispiel 21 beinhalten, dass der Upper-Level-Speichertreiber die mehreren physischen Speichergeräte als ein redundantes Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) konfiguriert.
  • In Beispiel 23 kann der Gegenstand von Beispiel 22 beinhalten, dass das Testen der Funktionen des Upper-Level-Speichertreibers und das Testen der Funktionen der mehreren physischen Speichergeräte ausgeführt wird, ohne ein zusätzliches physisches Speichergerät zusätzlich zu dem einzelnen physischen Speichergerät zu koppeln, das mit dem Rechengerät gekoppelt ist.
  • In Beispiel 24 kann der Gegenstand von Beispiel 17 beinhalten, dass das einzelne physische Speichergerät die mehreren physischen Speichergeräte simulieren kann, und wobei ein Befehl, der an eines der mehreren physischen Speichergeräte gerichtet ist, an das einzelne physische Speichergerät gerichtet ist.
  • Beispiel 25 ist ein System zur Gerätesimulation, wobei das System umfasst: Mittel zum Generieren, in einem Rechengerät, mehrerer logischer Speichergeräte aus einem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist; und Mittel zum Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  • Alle optionalen Merkmale eines/r der Systeme und/oder Vorrichtungen und/oder Geräte, die oben beschrieben sind, können auch in Bezug auf das Verfahren oder den Prozess implementiert werden, die oben beschrieben sind, und Besonderheiten in den Beispielen können überall in einer oder mehreren Ausführungsformen verwendet werden. Zusätzlich können alle optionalen Merkmale des oben beschriebenen Verfahrens oder Prozesses in Bezug auf das System und/oder die Vorrichtung und/oder die Geräte, die oben beschrieben wurden, implementiert werden, und die Besonderheiten in den Beispielen können überall in einer oder mehreren Ausführungsformen verwendet werden.

Claims (25)

  1. Verfahren zur Gerätesimulation, wobei das Verfahren Folgendes umfasst: Generieren, in einem Rechengerät, mehrerer logischer Speichergeräte aus einem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist; und Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  2. Verfahren nach Anspruch 1, wobei das Verfahren ferner umfasst: Partitionieren des einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche; und Zuordnen jedes logischen Blockadressbereichs zu einem logischen Speichergerät der mehreren logischen Speichergeräte.
  3. Verfahren nach Anspruch 1, wobei das Rechengerät mit dem einzelnen physischen Speichergerät über ein NVMe (Non-Volatile Memory Express)-Protokoll kommuniziert, wobei das Verfahren ferner umfasst: Generieren mehrerer Namespaces von dem einzelnen physischen Speichergerät; und Zuordnen jedes Namespace der mehreren Namespaces einem logischen Speichergerät der mehreren logischen Speichergeräte.
  4. Verfahren nach Anspruch 1, wobei eine Emulationsschicht in dem Rechengerät das Generieren der mehreren logischen Speichergeräte und das Simulieren der mehreren physischen Speichergeräte ausführt.
  5. Verfahren nach Anspruch 4, wobei die Emulationsschicht eine Schnittstelle zwischen einem Upper-Level-Speichertreiber und einem Speichersteuerungstreiber des einzelnen physischen Speichergeräts ausführt, und wobei das Verfahren ferner umfasst: Testen der Funktionen des Upper-Level-Speichertreibers und der Funktionen der mehreren physischen Speichergeräte durch Simulieren der mehreren physischen Speichergeräte.
  6. Verfahren nach Anspruch 5, wobei: der Upper-Level-Speichertreiber die mehreren physischen Speichergeräte als ein redundantes Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) konfiguriert.
  7. Verfahren nach Anspruch 6, wobei das Testen der Funktionen des Upper-Level-Speichertreibers und das Testen der Funktionen der mehreren physischen Speichergeräte ausgeführt werden, ohne ein zusätzliches physisches Speichergerät zusätzlich zu dem einzelnen physischen Speichergerät zu koppeln, das mit dem Rechengerät gekoppelt ist.
  8. Verfahren nach Anspruch 1, wobei das einzelne physische Speichergerät die mehreren physischen Speichergeräte simulieren kann und wobei ein Befehl, der an eines der mehreren physischen Speichergeräte gerichtet ist, an das einzelne physische Speichergerät gerichtet ist.
  9. System zur Gerätesimulation, wobei das System mit einem einzelnen physischen Speichergerät gekoppelt ist, wobei das System umfasst: einen Arbeitsspeicher; und einen Prozessor, der mit dem Arbeitsspeicher gekoppelt ist, wobei der Prozessor betrieben werden kann zum: Generieren mehrerer logischer Speichergeräte aus dem einzelnen physischen Speichergerät; und Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  10. System nach Anspruch 9, wobei der Prozessor ferner betrieben werden kann zum: Partitionieren des einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche; und Zuordnen jedes logischen Blockadressbereichs zu einem logischen Speichergerät der mehreren logischen Speichergeräte.
  11. System nach Anspruch 9, wobei das System mit dem einzelnen physischen Speichergerät über ein NVMe (Non-Volatile Memory Express)-Protokoll kommuniziert, wobei der Prozessor ferner betrieben werden kann zum: Generieren mehrerer Namespaces von dem einzelnen physischen Speichergerät; und Zuordnen jedes Namespace der mehreren Namespaces einem logischen Speichergerät der mehreren logischen Speichergeräte.
  12. System nach Anspruch 9, wobei eine Emulationsschicht das Generieren der mehreren logischen Speichergeräte und das Simulieren der mehreren physischen Speichergeräte ausführt.
  13. System nach Anspruch 12, wobei die Emulationsschicht eine Schnittstelle zwischen einem Upper-Level-Speichertreiber und einem Speichersteuerungstreiber des einzelnen physischen Speichergeräts ausführt, und wobei der Prozessor ferner betrieben werden kann zum: Testen der Funktionen des Upper-Level-Speichertreibers und der Funktionen der mehreren physischen Speichergeräte über die Simulation der mehreren physischen Speichergeräte.
  14. System nach Anspruch 13, wobei: der Upper-Level-Speichertreiber die mehreren physischen Speichergeräte als ein redundantes Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) konfiguriert.
  15. System nach Anspruch 14, wobei das Testen der Funktionen des Upper-Level-Speichertreibers und das Testen der Funktionen der mehreren physischen Speichergeräte ausgeführt werden, ohne ein zusätzliches physisches Speichergerät zusätzlich zu dem einzelnen physischen Speichergerät zu koppeln.
  16. System nach Anspruch 9, wobei das einzelne physische Speichergerät die mehreren physischen Speichergeräte simulieren kann und wobei ein Befehl, der an eines der mehreren physischen Speichergeräte gerichtet ist, an das einzelne physische Speichergerät gerichtet ist.
  17. Computerlesbares Speichermedium zur Gerätesimulation mit computerlesbarem Programmcode, das damit ausgeführt ist, wobei der computerlesbare Programmcode zum Durchführen von Operationen an einem Rechengerät konfiguriert ist, wobei die Operationen umfassen: Generieren mehrerer logischer Speichergeräte aus einem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist; und Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
  18. Computerlesbares Medium nach Anspruch 17, wobei die Operationen ferner umfassen: Partitionieren des einzelnen physischen Speichergeräts in mehrere logische Blockadressbereiche; und Zuordnen jedes logischen Blockadressbereichs zu einem logischen Speichergerät der mehreren logischen Speichergeräte.
  19. Computerlesbares Speichermedium nach Anspruch 17, wobei das Rechengerät mit dem einzelnen physischen Speichergerät über ein NVMe (Non-Volatile Memory Express)-Protokoll kommuniziert, wobei die Operationen ferner umfassen: Generieren mehrerer Namespaces von dem einzelnen physischen Speichergerät; und Zuordnen jedes Namespace der mehreren Namespaces einem logischen Speichergerät der mehreren logischen Speichergeräte.
  20. Computerlesbares Speichermedium nach Anspruch 17, wobei eine Emulationsschicht in dem Rechengerät das Generieren der mehreren logischen Speichergeräte und das Simulieren der mehreren physischen Speichergeräte ausführt.
  21. Computerlesbares Speichermedium nach Anspruch 20, wobei die Emulationsschicht eine Schnittstelle zwischen einem Upper-Level-Speichertreiber und einem Speichersteuerungstreiber des einzelnen physischen Speichergeräts ausführt, und wobei die Operationen ferner umfassen: Testen der Funktionen des Upper-Level-Speichertreibers und der Funktionen der mehreren physischen Speichergeräte durch Simulieren der mehreren physischen Speichergeräte.
  22. Computerlesbares Speichermedium nach Anspruch 21, wobei: der Upper-Level-Speichertreiber die mehreren physischen Speichergeräte als ein redundantes Array von unabhängigen Platten (Redundant Array of Independent Disks - RAID) konfiguriert.
  23. Computerlesbares Speichermedium nach Anspruch 22, wobei das Testen der Funktionen des Upper-Level-Speichertreibers und das Testen der Funktionen der mehreren physischen Speichergeräte ausgeführt werden, ohne ein zusätzliches physisches Speichergerät zusätzlich zu dem einzelnen physischen Speichergerät zu koppeln, das mit dem Rechengerät gekoppelt ist.
  24. Computerlesbares Speichermedium nach Anspruch 17, wobei das einzelne physische Speichergerät die mehreren physischen Speichergeräte simulieren kann und wobei ein Befehl, der an eines der mehreren physischen Speichergeräte gerichtet ist, an das einzelne physische Speichergerät gerichtet ist.
  25. System zur Gerätesimulation, wobei das System Folgendes umfasst: Mittel zum Generieren, in einem Rechengerät, mehrerer logischer Speichergeräte aus einem einzelnen physischen Speichergerät, das mit dem Rechengerät gekoppelt ist; und Mittel zum Simulieren mehrerer physischer Speichergeräte über die mehreren logischen Speichergeräte, wobei die mehreren physischen Speichergeräte und das einzelne physische Speichergerät vom selben Typ sind.
DE102018204427.9A 2017-03-22 2018-03-22 Simulieren mehrerer Speichergeräte mit einem einzelnen Speichergerät, das mit einem Rechengerät gekoppelt ist Pending DE102018204427A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/466,648 US20180275871A1 (en) 2017-03-22 2017-03-22 Simulation of a plurality of storage devices from a single storage device coupled to a computational device
US15/466,648 2017-03-22

Publications (1)

Publication Number Publication Date
DE102018204427A1 true DE102018204427A1 (de) 2018-09-27

Family

ID=63450487

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018204427.9A Pending DE102018204427A1 (de) 2017-03-22 2018-03-22 Simulieren mehrerer Speichergeräte mit einem einzelnen Speichergerät, das mit einem Rechengerät gekoppelt ist

Country Status (3)

Country Link
US (1) US20180275871A1 (de)
CN (1) CN108628548A (de)
DE (1) DE102018204427A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642488B2 (en) 2017-10-23 2020-05-05 Micron Technology, Inc. Namespace size adjustment in non-volatile memory devices
US10437476B2 (en) 2017-10-23 2019-10-08 Micron Technology, Inc. Namespaces allocation in non-volatile memory devices
US10503404B2 (en) 2017-10-23 2019-12-10 Micron Technology, Inc. Namespace management in non-volatile memory devices
US10223254B1 (en) 2017-11-16 2019-03-05 Micron Technology, Inc. Namespace change propagation in non-volatile memory devices
US11580034B2 (en) 2017-11-16 2023-02-14 Micron Technology, Inc. Namespace encryption in non-volatile memory devices
US10678703B2 (en) 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US10915440B2 (en) 2017-11-16 2021-02-09 Micron Technology, Inc. Namespace mapping optimization in non-volatile memory devices
US11748038B1 (en) * 2022-02-21 2023-09-05 Dell Products L.P. Physical hardware controller for provisioning remote storage services on processing devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
US8677355B2 (en) * 2010-12-17 2014-03-18 Microsoft Corporation Virtual machine branching and parallel execution
US9003104B2 (en) * 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US20150347057A1 (en) * 2014-05-30 2015-12-03 Netapp, Inc. Storage area network emulator
US20170371782A1 (en) * 2015-01-21 2017-12-28 Hewlett Packard Enterprise Development Lp Virtual storage
US20180032249A1 (en) * 2016-07-26 2018-02-01 Microsoft Technology Licensing, Llc Hardware to make remote storage access appear as local in a virtualized environment

Also Published As

Publication number Publication date
US20180275871A1 (en) 2018-09-27
CN108628548A (zh) 2018-10-09

Similar Documents

Publication Publication Date Title
DE102018204427A1 (de) Simulieren mehrerer Speichergeräte mit einem einzelnen Speichergerät, das mit einem Rechengerät gekoppelt ist
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE102019110023A1 (de) System mit programmierbarer Multi-Kontext-Beschleuniger-Schaltung
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112010003662T5 (de) Ausgleich nachlassender Funktionsfähigkeit von Halbleiterdatenträgern auf der Grundlage der von einer RAID-Steuereinheit empfangenen Daten- und Paritätsnutzungsinformationen
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE112013004400B4 (de) Herstellen einer Zeitpunktkopie-Beziehung zwischen logischen Quellenadressen und logischen Zieladressen
DE102020133269A1 (de) Konfigurieren von Parametern von Zielsubsystemen von nichtflüchtigem Speicher für die Arbeitslast-Anforderungs-Servicequalität
DE102011085989B4 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE112020000305B4 (de) Verringern der wiederherstellungszeit in einer computerspeicherumgebung
DE102012218269A1 (de) Schnittstelle zur Verwaltung von Datenverschiebung in einem Speichersystem mit thin provisioning
DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE112020005323T5 (de) Elastische ausführung von machine-learning-arbeitslasten unter verwendung einer anwendungsbasierten profilierung
DE102019102643A1 (de) Neuartige SSD-Architektur für eine FPGA-basierte Beschleunigung
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112013006646T5 (de) Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE112020000891T5 (de) Erzeugung von nativem code für cloud-services
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung