DE112019000194T5 - Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe - Google Patents

Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe Download PDF

Info

Publication number
DE112019000194T5
DE112019000194T5 DE112019000194.9T DE112019000194T DE112019000194T5 DE 112019000194 T5 DE112019000194 T5 DE 112019000194T5 DE 112019000194 T DE112019000194 T DE 112019000194T DE 112019000194 T5 DE112019000194 T5 DE 112019000194T5
Authority
DE
Germany
Prior art keywords
storage device
storage
failed
task
centric
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
DE112019000194.9T
Other languages
English (en)
Inventor
Anand Kulkarni
Vladislav Bolkhovitin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112019000194T5 publication Critical patent/DE112019000194T5/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1093Some peer nodes performing special functions
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verfahren, Systeme und andere Gesichtspunkte in Bezug auf das Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), um eine speicherzentrische Aufgabe durchzuführen. Zum Beispiel kann ein Verfahren, als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, ein Bestimmen, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und ein Durchführen, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem einschließen.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich auf Speichersysteme. In einem spezielleren Beispiel bezieht sich die vorliegende Offenbarung auf Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), um eine speicherzentrische Aufgabe durchzuführen.
  • Speichersysteme mit einer Vielzahl von Speichervorrichtungen verwenden üblicherweise Datenredundanztechniken (z. B. Spiegelung oder Parität für Redundant Array of Independent Disks (RAID), Löschcodierung) um ein Rekonstruieren von Daten und ein Wiederherstellen einer ausgefallenen Speichervorrichtung zu ermöglichen. Wenn zum Beispiel eine Speichervorrichtung in einem RAID-Array ausgefallen ist, wird bei herkömmlichen Systemen die ausgefallene Speichervorrichtung nicht mehr verwendet, und die verbleibenden funktionierenden Speichervorrichtungen werden verwendet, um die verlorenen Daten der ausgefallenen Speichervorrichtung zu rekonstruieren.
  • Während dieser Zeit wechselt das Speichersystem in einen verminderten Betriebsmodus, in dem das Speichersystem ein reduziertes Leistungsniveau und/oder Lastausgleichsprobleme (z. B. aufgrund einer erhöhten Last, die den verbleibenden funktionierenden Speichervorrichtungen auferlegt wird) erfahren kann, bis die ausgefallene Speichervorrichtung repariert oder ersetzt ist.
  • KURZDARSTELLUNG
  • Die vorliegende Offenbarung bezieht sich auf Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen.
  • Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung, wie hierin offenbart, können eine Anzahl technischer Merkmale und Vorteile bereitstellen, einschließlich, ohne darauf beschränkt zu sein, Folgendes:
    • (1) Verbesserte Systemleistung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemleistung durch Zuweisen von speicherzentrischen Aufgaben zu der ausgefallenen Speichervorrichtung, anstatt von dieser weg (wie bei herkömmlichen Systemen), nachdem der Ausfall detektiert wurde. Die ausgefallene Speichervorrichtung kann Aufgaben effizienter durchführen als eine andere, noch funktionierende Speichervorrichtung in dem Speichersystem, weil die ausgefallene Speichervorrichtung aufgrund des Ausfalls ihres Speichermediums keine regelmäßige Eingabe/Ausgabe-Last (E/A-Last) (z. B. Komprimierung/Dekomprimierung oder Verschlüsselung/Entschlüsselung, die sehr rechenintensiv sind) mehr aufweist.
    • (2) Verbesserte Systemressourcennutzung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemressourcennutzung durch die fortgesetzte Verwendung der ausgefallenen Speichervorrichtung nach dem Ausfall der Vorrichtung, indem die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen. Die vorliegende Offenbarung nutzt die Tatsache, dass trotz eines Ausfalls in ihrem Speichermedium andere Rechen-, Speicher- und/oder E/A-Ressourcen der ausgefallenen Speichervorrichtung weiterhin betriebsfähig sein können.
  • Die vorliegende Offenbarung schließt, ohne darauf beschränkt zu sein, die folgenden Gesichtspunkte ein:
  • Gemäß einem innovativen Gesichtspunkt ein Verfahren, einschließlich, als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), eines Bestimmens, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und eines Durchführens, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem.
  • Gemäß einem weiteren innovativen Gesichtspunkt eine Einrichtung, einschließlich eines oder mehrerer Prozessoren; und Logik, die durch den einen oder die mehreren Prozessoren ausführbar ist, die eingerichtet sind, um Vorgänge durchzuführen, aufweisend: als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem): Bestimmen, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und Durchführen, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem.
  • Gemäß noch einem weiteren innovativen Gesichtspunkt ein computerimplementiertes Verfahren, das ein Detektieren einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem) aufweist; als Reaktion auf das Erfassen der ausgefallenen Speichervorrichtung, Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung, wobei die speicherzentrische Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem durch die ausgefallene Speichervorrichtung durchzuführen ist; und Detektieren einer Beendigung der speicherzentrischen Aufgabe durch die ausgefallene Speichervorrichtung.
  • Gemäß einem weiteren innovativen Gesichtspunkt ein System, das ein Mittel zum Detektieren einer ausgefallenen Speichervorrichtung in einer Vielzahl von Speichervorrichtungen; ein Mittel zum Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung als Reaktion auf das Detektieren der ausgefallenen Speichervorrichtung; und ein Mittel zum Durchführen der speicherzentrischen Aufgabe als Reaktion auf Peer-to-Peer-Kommunikationen (P2P-Kommunikationen) mit einer funktionierenden Speichervorrichtung in der Vielzahl von Speichervorrichtungen aufweist.
  • Diese und andere Implementierungen können optional jeweils eines oder mehrere der folgenden Merkmale einschließen: dass das Durchführen der speicherzentrischen Aufgabe ein Empfangen von Eingabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, über die P2P-Kommunikationen von der funktionierenden Speichervorrichtung und ein Durchführen der speicherzentrischen Aufgabe unter Verwendung der Eingabedaten, die von der funktionierenden Speichervorrichtung empfangen werden, einschließt; dass das Durchführen der speicherzentrischen Aufgabe ein Erzeugen von Ausgabedaten und ein Senden der Ausgabedaten über die P2P-Kommunikationen an die funktionierende Speichervorrichtung einschließt; dass eine funktionierende Rechenressource in der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe durchführt; dass die P2P-Kommunikationen mindestens eines von einem P2P-Lesebefehl und einem P2P-Schreibbefehl einschließen, die durch die ausgefallene Speichervorrichtung an die funktionierende Speichervorrichtung ausgegeben werden; dass das P2P-Speichersystem eine Steuerung einschließt und die Steuerung der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe basierend auf einer Lastausgleichsrichtlinie für das P2P-Speichersystem zuweist; dass die Detektion der ausgefallenen Speichervorrichtung eine Änderung in einer Gewichtung der Lastausgleichsrichtlinie bewirkt und dass die speicherzentrische Aufgabe eine Musterabgleichsaufgabe aufweist und die ausgefallene Speichervorrichtung die Musterabgleichsaufgabe an einem Datensatz durchführt, der auf der funktionierenden Speichervorrichtung gespeichert ist.
  • Andere Implementierungen eines oder mehrerer dieser Gesichtspunkte schließen entsprechende Systeme, Einrichtungen und Computerprogramme ein, die eingerichtet sind, um die Aktionen der Verfahren durchzuführen, die auf Computerspeichervorrichtungen codiert sind. Es sei klargestellt, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeits- und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.
  • Figurenliste
  • Die hierin eingeführten Techniken sind beispielhaft und nicht einschränkend in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen gleiche Bezugszeichen verwendet werden, um auf ähnliche Elemente Bezug zu nehmen.
    • 1 stellt ein Blockdiagramm eines beispielhaften Rechensystems, einschließlich eines Hosts und eines Peer-to-Peer-Speichersystems (P2P-Speichersystems), gemäß einer Ausführungsform dar.
    • 2 stellt ein Blockdiagramm einer beispielhaften Systemsteuerung für das in 1 gezeigte P2P-Speichersystem gemäß einer Ausführungsform dar.
    • 3 stellt ein Blockdiagramm einer beispielhaften Vorrichtungssteuerung für das in 1 gezeigte P2P-Speichersystem gemäß einer Ausführungsform dar.
    • 4 veranschaulicht verschiedene Host- und P2P-Datenübertragungen, die in Verbindung mit einem Verfahren zum Verwenden einer ausgefallenen Speichervorrichtung in dem in 1 gezeigten P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, gemäß einer Ausführungsform erfolgen können.
    • 5A und 5B stellen ein Flussdiagramm eines beispielhaften Verfahrens zum Verwenden einer ausgefallenen Speichervorrichtung in dem in 1 und 4 gezeigten P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, gemäß einer Ausführungsform dar.
    • 6A und 6B stellen ein Flussdiagramm eines beispielhaften Verfahrens zum Verwenden einer ausgefallenen Speichervorrichtung in dem in 1 und 4 gezeigten P2P-Speichersystem, um eine beispielhafte speicherzentrische Aufgabe (insbesondere eine Musterabgleichsaufgabe) durchzuführen, gemäß einer Ausführungsform dar.
    • 7 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Durchführen einer Datenverwaltungsanforderung (z. B. einer Datenübertragungsanforderung) gemäß einem Datenverwaltungsschema einer verteilten globalen Flash-Translationsschicht (Flash Translation Layer, FTL) für das in 1 und 4 gezeigte Rechensystem gemäß einer Ausführungsform dar.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird eine neuartige Datenverarbeitungstechnologie, wie, ohne darauf beschränkt zu sein, Systeme, Vorrichtungen und Verfahren zum Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), um eine speicherzentrische Aufgabe durchzuführen, offenbart. Während diese Technologie nachfolgend im Zusammenhang mit einer bestimmten Systemarchitektur in verschiedenen Fällen beschrieben wird, versteht es sich, dass die Systeme und Verfahren auf andere Hardware-Architekturen und -Organisationen angewendet werden können. Genauer sei angemerkt, dass, während die folgende Beschreibung in Bezug auf bestimmte Ausführungsformen erfolgt, die vorliegende Offenbarung auf jedes Speichersystem angewendet werden kann, das eine bekannte oder in Betracht gezogene Datenredundanz implementiert.
  • 1 stellt ein Blockdiagramm eines beispielhaften Rechensystems 100, einschließlich eines Hosts 101 und eines P2P-Speichersystems 110, gemäß einer Ausführungsform dar. Wie unten unter Bezugnahme auf 5-6 ausführlich beschrieben, kann das Rechensystem 100 in Verbindung mit einem Verfahren zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, verwendet werden.
  • In der vorliegenden Offenbarung kann eine „speicherzentrische Aufgabe“ auf jede Sequenz von Vorgängen (z. B. einen „Job“, einen „Prozess“ usw.), die die Übertragung und/oder Verarbeitung von in Speichervorrichtungen oder -systemen gespeicherten Daten beinhalten, Bezug nehmen. Beispiele von speicherzentrischen Aufgaben schließen Musterabgleich, Abbildung/Reduzierung, Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Wiederherstellung einer ausgefallenen Speichervorrichtung usw. ein.
  • Der Host 101 kann eines oder mehrere von beliebigen geeigneten Computervorrichtungen oder -systemen sein, wie ein Servercomputer, ein Desktop-Computer, ein Laptop-Computer, ein Tablet-Computer, ein Mobiltelefon oder eine beliebige andere elektronische Vorrichtung, die dazu in der Lage ist, Anforderungen an das P2P-Speichersystem vorzunehmen. In einigen Ausführungsformen kann der Host 101 einen oder mehrere Prozessoren, eine oder mehrere Speichervorrichtungen und beliebige andere geeignete Komponenten einschließen, um dem Host 101 Funktionalität hinzuzufügen.
  • Der Host 101 kann durch ein Netzwerk, wie ein lokales Netzwerk (Local-Area Network, LAN), ein Weitverkehrsnetzwerk (Wide-Area Network, WAN), eine geschaltete Fabric, ein drahtverbundenes oder drahtloses Netzwerk, ein privates oder öffentliches Netzwerk usw., kommunikativ mit dem P2P-Speichersystem 110 gekoppelt sein.
  • Der Host 101 kann eine oder mehrere Anwendungen ausführen, die Speicheranforderungen (z. B. Lesen, Schreiben usw.) an das P2P-Speichersystem vornehmen. In einigen Ausführungsformen können die eine oder die mehreren Anwendungen dedizierte Softwareanwendungen sein, die auf dem Host 101 ausgeführt werden, oder können sich alternativ auf anderen geeigneten Rechenvorrichtungen befinden und können entfernt durch den Host 101 ausgeführt werden.
  • Das P2P-Speichersystem 110 kann eine Systemsteuerung 120 und eine Vielzahl von Speichervorrichtungen 140a, 140b und 140c aufweisen, die durch ein Transportmittel, wie eine auf Ethernet basierende interne Fabric, InfiniBand, Peripheral Component Interconnect Express (PCle), Non-Volatile Memory Express Over Fabric (NVMeOF) usw., gekoppelt sind. Wenngleich das P2P-Speichersystem 110 in 1 zur einfacheren Veranschaulichung mit drei Speichervorrichtungen gezeigt ist, sei angemerkt, dass andere Ausführungsformen des P2P-Speichersystems eine beliebige geeignete Anzahl von Speichervorrichtungen einsetzen können.
  • Wie unten unter Bezugnahme auf 2 ausführlicher beschrieben, kann die Systemsteuerung 120 eine oder mehrere Rechenvorrichtungen und/oder Software (in der vorliegenden Offenbarung zusammen als „Logik“ bezeichnet) aufweisen, die eingerichtet sind, um den Betrieb der Speichervorrichtungen 140a, 140b und 140c zu verwalten und eine externe Schnittstelle zu diesen (z. B. zur Kommunikation mit dem Host 101) bereitzustellen. Zum Beispiel kann die Systemsteuerung 120 verschiedene Vorgänge der Speichervorrichtungen 140a, 140b und 140c, einschließlich Datenredundanz und/oder -wiederherstellung, Speichervorrichtungswiederherstellung und/oder automatischer Speicherbereinigung, koordinieren und durchführen. Außerdem kann die Systemsteuerung 120 in einigen Ausführungsformen Kommunikationen zwischen dem Host 101 und den Speichervorrichtungen 140a, 140b und 140c, einschließlich eines Weiterleitens von Lese- oder Schreibanforderungen, die von dem Host 101 empfangen werden, an die entsprechende Speichervorrichtung (einschließlich eines Durchführens einer erforderlichen Adressübersetzung, wie weiter unten beschrieben) und eines Abrufens von Daten von den Speichervorrichtungen auf eine logische Weise (z. B. können Blöcke in einen Streifen assembliert werden) koordinieren, bevor sie an den Host 101 zurückgegeben werden. In einigen Ausführungsformen kann die Systemsteuerung 120 eine Non-Volatile Memory Express-Steuerung (NVMe-Steuerung) sein.
  • In einigen Ausführungsformen kann die Systemsteuerung 120 ihre Aktionen mit den Aktionen der anderen Komponenten in dem Computersystem 100, wie dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c, beim Durchführen der verschiedenen speicherzentrischen Aufgaben, wie unten beschrieben, unter Verwendung zum Beispiel des verteilten globalen FTL-Datenverwaltungsschemas, wie unten unter Bezugnahme auf 7 beschrieben, koordinieren. In einigen Ausführungsformen kann die Systemsteuerung 120 keine separate Komponente, wie in 1 gezeigt, sein, sondern kann stattdessen in den Host 101 oder in eine oder mehrere der Speichervorrichtungen 140a, 140b und 140c integriert sein.
  • Jede der Vielzahl von Speichervorrichtungen 140a, 140b und 140c (im Folgenden allgemein einzeln als Speichervorrichtung 140 bezeichnet) kann eine flüchtige oder nicht-flüchtige nicht-transitorische Speichervorrichtung mit geeigneten Eigenschaften sein, wie ein Flash-Speicher (z. B. Festkörperlaufwerk (Solid-State Drive, SSD)), persistenter Speicher (Persistent Memory, PM) und/oder Festplattenmedien, einschließlich Shingled Magnetic Recording-Platten (SMR-Platten), hybrider Speichervorrichtungen usw. Die Speichervorrichtungen 140a, 140b und 140c können durch ein Transportmedium, wie eine auf Ethernet basierende interne Fabric, InfiniBand, PCIe, NVMeOF usw., kommunikativ miteinander und an die Systemsteuerung 120 gekoppelt sein.
  • Jede Speichervorrichtung 140 schließt eine Vorrichtungssteuerung 142 und ein Speichermedium 143 ein. Wie unten unter Bezugnahme auf 3 ausführlicher beschrieben, kann die Vorrichtungssteuerung 142 eine oder mehrere Rechenvorrichtungen und/oder Software (in der vorliegenden Offenbarung zusammen als „Logik“ bezeichnet) aufweisen, die eingerichtet sind, um den Betrieb des Speichermediums 143 zu verwalten und eine externe Schnittstelle zu der jeweiligen Speichervorrichtung 140 bereitzustellen. In einigen Ausführungsformen, wie unten unter Bezugnahme auf 4 beschrieben, können diese Vorgänge ein Durchführen von Peer-to-Peer-Kommunikationen (P2P-Kommunikationen) (z. B. P2P-Datenübertragungen) mit anderen Speichervorrichtungen in dem P2P-Speichersystem einschließen.
  • Das Speichermedium 143 kann ein oder mehrere flüchtige oder nicht-flüchtige Speichermedien mit physischen oder logischen Abschnitten zum Speichern von Daten, wie Dies, Platten, Speicherzellen, Sektoren und/oder Seiten, aufweisen. In einigen Ausführungsformen können Daten in dem Speichermedium 143 jeder Speichervorrichtung 140 in Form von einem oder mehreren Blöcken 144 organisiert sein. Ferner können die Blöcke 144 in Form von Streifen unter Verwendung einer geeigneten Datenstrukturierungsmethodik, wie einer Protokollstrukturierung, in die Speichervorrichtungen in dem P2P-Speichersystem 110 geschrieben werden.
  • Das P2P-Speichersystem 110 kann unter Verwendung eines geeigneten Redundanzschemas, wie RAID oder einer Löschcodierung, eingerichtet werden, so dass im Falle eines Ausfalls von einer oder mehreren Speichervorrichtungen in dem P2P-Speichersystem 110 ein Datenrekonstruktions- und/oder -wiederherstellungsprozess durchgeführt werden kann, um die Daten von der/den ausgefallenen Speichervorrichtung(en) wiederherzustellen.
  • In der vorliegenden Offenbarung kann eine „ausgefallene Speichervorrichtung“ auf jede Speichervorrichtung in dem P2P-Speichersystem, die in irgendeiner Hinsicht nicht richtig funktioniert, Bezug nehmen, einschließlich: (1) einer Speichervorrichtung, die weiterhin betriebsfähig ist, aber basierend auf einem Frühwarnhinweis als „ausgefallen“ betrachtet werden kann, und (2) einer Speichervorrichtung, die nur teilweise ausgefallen ist. Zum Beispiel kann die ausgefallene Speichervorrichtung in einigen Ausführungsformen eine oder mehrere Speicherressourcen (z. B. das Speichermedium 143), die teilweise oder vollständig ausgefallen sind, und eine oder mehrere Rechenressourcen (z. B. die Vorrichtungssteuerung 142), die mindestens teilweise weiterhin funktionieren (z. B. in der Lage sind, mindestens einige ihrer vorgesehenen Funktionen durchzuführen), einschließen. Die eine oder die mehreren Speichervorrichtungen in dem P2P-Speichersystem, außer der ausgefallenen Speichervorrichtung, können als „funktionierende Speichervorrichtungen“ bezeichnet werden.
  • In dem in 1 und 4 gezeigten P2P-Speichersystem 110 entspricht die Speichervorrichtung 140b der ausgefallenen Speichervorrichtung (im Folgenden als ausgefallene Speichervorrichtung 140' bezeichnet) und entsprechen eine oder mehrere der Speichervorrichtungen 140a und 140c der/den funktionierenden Speichervorrichtung(en) (im Folgenden als funktionierende Speichervorrichtung 140" bezeichnet). Es sei jedoch angemerkt, dass in anderen Ausführungsformen des P2P-Speichersystems andere Speichervorrichtungen der ausgefallenen Speichervorrichtung und der/den funktionierenden Speichervorrichtung(en) entsprechen können.
  • In Ausführungsformen, in denen die Speicherressourcen (z. B. das Speichermedium 143) der ausgefallenen Speichervorrichtung ausgefallen sind (z. B. nicht mehr funktionieren), können die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen, wie unten unter Bezugnahme auf 5-6 beschrieben. Wie bereits erwähnt, steht dies im Gegensatz zu herkömmlichen Systemen, bei denen die ausgefallene Speichervorrichtung nicht mehr verwendet wird, nachdem ein Ausfall detektiert wird.
  • 2 stellt ein Blockdiagramm einer beispielhaften Systemsteuerung 120 für das in 1 gezeigte P2P-Speichersystem 110 gemäß einer Ausführungsform dar. Die Systemsteuerung 120 kann verwendet werden, um den Betrieb der Speichervorrichtungen 140a, 140b und 140c zu verwalten und eine externe Schnittstelle zu diesen (z. B. zur Kommunikation mit dem Host 101) bereitzustellen. Wie bereits erwähnt, kann die Systemsteuerung 120 in einigen Ausführungsformen ihre Aktionen mit den Aktionen der anderen Komponenten in dem Computersystem 100, wie dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c, beim Durchführen der verschiedenen speicherzentrischen Aufgaben, wie unten beschrieben, unter Verwendung zum Beispiel des verteilten globalen FTL-Datenverwaltungsschemas, wie unten unter Bezugnahme auf 7 beschrieben, koordinieren.
  • Wie in 2 gezeigt, kann die Systemsteuerung 120 neben anderen Komponenten eine oder mehrere Schnittstelle(n) 205, einen Prozessor 210, einen Speicher 220 mit Software, Firmware und/oder Daten, einschließlich, ohne darauf beschränkt zu sein, einer Speicherverwaltungs-Engine 222, aufweisen. Ein Bus 250 kann verwendet werden, um die verschiedenen Komponenten der Systemsteuerung 120 kommunikativ zu koppeln. Es versteht sich, dass die Systemsteuerung 120 je nach der Konfiguration, wie Konfigurationen, die Elemente kombinieren, die Elemente in Hardware im Gegensatz zu Software implementieren usw., alternative, zusätzliche und/oder weniger Komponenten einschließen kann.
  • Die eine oder die mehreren Schnittstelle(n) 205 können die Systemsteuerung 120 mit dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c kommunikativ koppeln. Die eine oder die mehreren Schnittstelle(n) 205 können, ohne darauf beschränkt zu sein, eine Eingabe/Ausgabe-Schnittstellenschaltung (E/A-Schnittstellenschaltung) einschließen, die (ein) geeignete(s) Kommunikationsprotokoll(e) zum Kommunizieren mit dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c verwendet.
  • Der Prozessor 210, der eine oder mehrere Verarbeitungseinheiten einschließen kann, kann verwendet werden, um die Anweisungen verschiedener Softwareprogramme auszuführen, die in dem Speicher 220 enthalten sind. Der Prozessor 210 kann eine oder mehrere Verarbeitungseinheiten und/oder Kerne, programmierbare integrierte Schaltungen, wie anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs) oder feldprogrammierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGAs), oder eine Kombination davon einschließen. Der Prozessor 210 kann auf verschiedenen Rechenarchitekturen basieren, einschließlich einer Architektur für Computer mit komplexem Anweisungssatz (Complex Instruction Set Computer, CISC), einer Architektur für Computer mit reduziertem Anweisungssatz (Reduced Instruction Set Computer, RISC) oder einer Architektur, die eine Kombination von Anweisungssätzen implementiert. Es versteht sich, dass andere Konfigurationen des Prozessors 210 möglich sind.
  • Der Speicher 220, der eine oder mehrere nicht-transitorische Speichervorrichtungen einschließen kann, kann Softwareprogramme, Firmware und/oder Daten speichern, die durch den Prozessor 210 ausgeführt oder auf sonstige Weise verarbeitet werden. Der Speicher 220 kann zum Beispiel flüchtigen Speicher, wie (eine) Vorrichtung(en) mit dynamischem Speicher mit wahlfreiem Zugriff (Dynamic Random-Access Memory, DRAM), (eine) Vorrichtung(en) mit statischem Speicher mit wahlfreiem Zugriff (Static Random-Access Memory, SRAM), nicht-flüchtigen Speicher, wie Vorrichtungen mit elektrisch löschbarem programmierbarem Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM) oder Flash-Speicher, eine Kombination des Vorgenannten und/oder einen anderen geeigneten Typ von Datenspeichermedium aufweisen.
  • Die in dem Speicher 220 enthaltene Speicherverwaltungs-Engine 222 kann Routinen und/oder Anweisungen einschließen, die bei Ausführung durch den Prozessor 210 eine oder mehrere der verschiedenen Speicherverwaltungsvorgänge für die Speichervorrichtungen 140a, 140b und 140c, einschließlich Vorgängen in Bezug auf Adressübersetzung, Datenwiederherstellung und -rekonstruktion, automatische Speicherbereinigung und/oder Lastausgleich, durchführen können.
  • In einigen Ausführungsformen kann die Speicherverwaltungs-Engine 222 eine Adresskarte 225 und ein Lastausgleichsmodul 226 einschließen. Die Adresskarte 225 kann Adressinformationen enthalten, die durch die Speicherverwaltungs-Engine 222 verwendet werden, um logische Adressen oder Namensräume, die in Verbindung mit Lese- oder Schreibanforderungen empfangen werden, die von dem Host 101 empfangen werden, in physische Adressen zum Zugreifen auf Speichervorrichtungen in dem P2P-Speichersystem 110 zu übersetzen.
  • Das Lastausgleichsmodul 226 kann eine Lastausgleichsrichtlinie für das P2P-Speichersystem 110 implementieren. In einigen Ausführungsformen kann das Lastausgleichsmodul 226 Funktionen durchführen, einschließlich eines Überwachens der Last der Speichervorrichtungen in dem P2P-Speichersystem und eines Zuweisens und Verwaltens von Aufgaben, die von dem Host 101 empfangen werden und durch eine oder mehrere der Speichervorrichtungen in dem P2P-Speichersystem 110 durchgeführt werden sollen, basierend auf den gemessenen Lasten. Diese Lastausgleichsfunktionen werden unten unter Bezugnahme auf 5-6 ausführlicher beschrieben.
  • In einigen Ausführungsformen können ein oder mehrere Hardwarelogikmodul(e) 230, wie ASICs, FPGAs usw., anstelle oder ergänzend zu der Software und/oder Firmware in dem Speicher 220 eingesetzt werden, um eine oder mehrere der zuvor erwähnten Funktionen durchzuführen, die durch die Speicherverwaltungs-Engine 222 bereitgestellt werden.
  • 3 stellt ein Blockdiagramm einer beispielhaften Vorrichtungssteuerung 142 für das in 1 gezeigte P2P-Speichersystem 110 gemäß einer Ausführungsform dar. Wie bereits erwähnt, kann die Vorrichtungssteuerung 142 verwendet werden, um den Betrieb der jeweiligen Speichervorrichtung 140 zu verwalten und eine externe Schnittstelle zu dieser bereitzustellen.
  • Wie in 3 gezeigt, kann die Vorrichtungssteuerung 142 neben anderen Komponenten eine oder mehrere Schnittstelle(n) 305, einen Prozessor 310, einen Steuerungsspeicherpuffer (Controller Memory Buffer, CMB) 315, einen Speicher 320 mit Software, Firmware und/oder Daten, einschließlich einer Medienverwaltungs-Engine 322, und eine P2P-Datenübertragungs-Engine 324 aufweisen. Ein Bus 350 kann verwendet werden, um die verschiedenen Komponenten der Vorrichtungssteuerung 142 kommunikativ zu koppeln. Es versteht sich, dass die Vorrichtungssteuerung 142 je nach der Konfiguration, wie Konfigurationen, die Elemente kombinieren, die Elemente in Hardware im Gegensatz zu Software implementieren usw., alternative, zusätzliche und/oder weniger Komponenten einschließen kann.
  • Die eine oder die mehreren Schnittstelle(n) 305 können die Vorrichtungssteuerung 142 mit der Systemsteuerung 120 und/oder den Speichervorrichtungen in dem P2P-Speichersystem 110 kommunikativ koppeln. Die eine oder die mehreren Schnittstelle(n) 305 können, ohne darauf beschränkt zu sein, eine E/A-Schnittstellenschaltung einschließen, die (ein) geeignete(s) Kommunikationsprotokoll(e) (z. B. Ethernet, InfiniBand, PCle usw.) zum Kommunizieren mit der Systemsteuerung 120 und/oder den anderen Speichervorrichtungen verwendet.
  • Der Prozessor 310, der eine oder mehrere Verarbeitungseinheiten einschließen kann, kann verwendet werden, um die Anweisungen verschiedener Softwareprogramme auszuführen, die in dem Speicher 320 enthalten sind. Der Prozessor 310 kann eine oder mehrere Verarbeitungseinheiten und/oder Kerne, programmierbare integrierte Schaltungen, wie anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs) oder feldprogrammierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGAs), oder eine Kombination davon einschließen. Der Prozessor 310 kann auf verschiedenen Rechenarchitekturen basieren, einschließlich einer Architektur für Computer mit komplexem Anweisungssatz (Complex Instruction Set Computer, CISC), einer Architektur für Computer mit reduziertem Anweisungssatz (Reduced Instruction Set Computer, RISC) oder einer Architektur, die eine Kombination von Anweisungssätzen implementiert. Es versteht sich, dass andere Konfigurationen des Prozessors 310 möglich sind.
  • Der CMB 315 kann einen oder mehrere Speicherpuffer einschließen, die verwendet werden, um Quell- oder Zieldaten, die an P2P-Lese- oder -Schreibdatenübertragungen beteiligt sind, temporär zu speichern. In einigen Ausführungsformen kann der CMB 315 direkt von außerhalb der Speichervorrichtung zugänglich sein, um Vorgänge eines direkten Speicherzugriffs (Direct Memory Access, DMA) mit einer anderen Speichervorrichtung in dem P2P-Speichersystem 110 durchzuführen.
  • Der Speicher 320, der eine oder mehrere nicht-transitorische Speichervorrichtungen einschließen kann, kann Softwareprogramme, Firmware und/oder Daten speichern, die durch den Prozessor 310 ausgeführt oder auf sonstige Weise verarbeitet werden. Der Speicher 320 kann zum Beispiel flüchtigen Speicher, wie (eine) Vorrichtung(en) mit dynamischem Speicher mit wahlfreiem Zugriff (Dynamic Random-Access Memory, DRAM), (eine) Vorrichtung(en) mit statischem Speicher mit wahlfreiem Zugriff (Static Random-Access Memory, SRAM), nicht-flüchtigen Speicher, wie Vorrichtungen mit elektrisch löschbarem programmierbarem Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM) oder Flash-Speicher, eine Kombination des Vorgenannten und/oder einen anderen geeigneten Typ von Datenspeichermedium aufweisen.
  • Die in dem Speicher 320 enthaltene Medienverwaltungs-Engine 322 kann Routinen und/oder Anweisungen einschließen, die bei Ausführung durch den Prozessor 310 eine oder mehrere der verschiedenen Speicherverwaltungsvorgänge für das Speichermedium 143, einschließlich Vorgängen in Bezug auf Datenwiederherstellung und -rekonstruktion und automatische Speicherbereinigung auf Vorrichtungsebene, durchführen können.
  • Die in dem Speicher 320 enthaltene P2P-Datenübertragungs-Engine 324 kann Routinen und/oder Anweisungen einschließen, die bei Ausführung durch den Prozessor 310 eine oder mehrere Aktionen zum Durchführen von P2P-Kommunikationen (z. B. P2P-Datenübertragungen) mit anderen Speichervorrichtungen in dem P2P-Speichersystem 110 durchführen, wie ein Übersetzen von logischen Adressen, die P2P-Befehlen zugeordnet sind, ein Ausgeben und Ausführen von P2P-Befehlen und Datenübertragungen, wie unten unter Bezugnahme auf 4 beschrieben. Die P2P-Datenübertragungs-Engine 324 kann die P2P-Datenübertragungen in verschiedenen Weisen durchführen. Zum Beispiel kann die P2P-Datenübertragungs-Engine 324 in einigen Ausführungsformen im Vollinitiatormodus arbeiten, was es einer Speichervorrichtung ermöglicht, eine Verbindung herzustellen, Befehle zu erzeugen und die Befehle an andere Speichervorrichtungen zu senden. In einigen anderen Ausführungsformen kann der Host 101 gemeinsame Speicherbereiche in jeder Speichervorrichtung 140 einrichten, einen oder mehrere Befehle an eine Quellspeichervorrichtung senden, um Daten in der Quellspeichervorrichtung in einen gemeinsamen Speicherbereich zu lesen, und dann das Senden von Daten von dem gemeinsamen Speicherbereich an eine Zielspeichervorrichtung unter Verwendung von DMA initiieren.
  • In einigen Ausführungsformen können ein oder mehrere Hardwarelogikmodul(e) 330, wie ASICs, FPGAs usw., anstelle oder ergänzend zu der Software und/oder Firmware in dem Speicher 320 eingesetzt werden, um eine oder mehrere der zuvor erwähnten Funktionen durchzuführen, die durch die Medienverwaltungs-Engine 322 und/oder P2P-Datenübertragungs-Engine 324 bereitgestellt werden.
  • 4 veranschaulicht verschiedene Host- und P2P-Datenübertragungen, die in Verbindung mit dem Verfahren zum Verwenden der ausgefallenen Speichervorrichtung 140' (z. B. die Speichervorrichtung 140b) in dem in 1 gezeigten P2P-Speichersystem 110, um eine speicherzentrische Aufgabe (wie unten unter Bezugnahme auf 5-6 beschrieben) durchzuführen, gemäß einer Ausführungsform erfolgen können. Wie bereits erwähnt, entspricht in dem in 1 und 4 gezeigten P2P-Speichersystem 110 die Speichervorrichtung 140b der ausgefallenen Speichervorrichtung 140' und entsprechen eine oder mehrere der Speichervorrichtungen 140a und 140c der funktionierenden Speichervorrichtung 140". Es sei jedoch angemerkt, dass in anderen Ausführungsformen des P2P-Speichersystems andere Speichervorrichtungen der ausgefallenen Speichervorrichtung und der/den funktionierenden Speichervorrichtung(en) entsprechen können.
  • Wie in 4 gezeigt, schließen in einigen Ausführungsformen die Typen von Datenübertragungen, die zwischen dem Host 101 und den Speichervorrichtungen 140a, 140b und 140c in dem P2P-Speichersystem 110 (beschrieben aus der Perspektive des Hosts 101) erfolgen können, ein: (1) eine Lesedatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „R“) und (2) eine Schreibdatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „W“). In einigen Ausführungsformen können diese Datenübertragungen, wie geeignet, durch die Ausgabe von einem oder mehreren NVMe-Lesebefehlen oder -Schreibbefehlen durch die Systemsteuerung 120 initiiert werden. In einigen Ausführungsformen können diese Datenübertragungen durch den Host 101 in Koordination mit der Speicherverwaltungs-Engine 222 in der Systemsteuerung 120 durchgeführt werden.
  • Wie in 4 gezeigt, schließen in einigen Ausführungsformen die Typen von P2P-Datenübertragungen, die zwischen Speichervorrichtungen in dem P2P-Speichersystem 110 (beschrieben aus der Perspektive der ausgefallenen Speichervorrichtung 140') erfolgen können, ein: (1) eine Lesedatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „R“), (2) eine Schreibdatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „W“) und (3) eine Lese/Schreib-Datenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „R/W“). In dem veranschaulichten Beispiel sind die P2P-Datenübertragungen so gezeigt, dass sie zwischen Speichervorrichtungen 140a und 140b erfolgen, aber allgemeiner können die P2P-Datenübertragungen zwischen beliebigen zwei Speichervorrichtungen in dem P2P-Speichersystem 110 erfolgen. In einigen Ausführungsformen können diese P2P-Datenübertragungen, wie geeignet, durch die Ausgabe von einem oder mehreren P2P-Lesebefehlen oder -Schreibbefehlen durch die Initiatorvorrichtung an die Zielvorrichtung initiiert werden. In einigen Ausführungsformen können diese P2P-Datenübertragungen durch die P2P-Datenübertragungs-Engine 324 in Koordination mit dem CMB 315 der Vorrichtungssteuerung 142 der entsprechenden Speichervorrichtungen in dem P2P-Speichersystem 110 durchgeführt werden.
  • Für die in dem Beispiel von 4 gezeigten P2P-Datenübertragungen entspricht die ausgefallene Speichervorrichtung 140' der Initiatorvorrichtung und entspricht die funktionierende Speichervorrichtung 140" der Zielvorrichtung. Jedoch können die Initiatorvorrichtung und die Zielvorrichtung in anderen Fällen in Abhängigkeit von der jeweiligen Transaktion, die durchgeführt wird, verschieden sein.
  • 5A und 5B stellen ein Flussdiagramm eines beispielhaften Verfahrens 500 zum Verwenden der ausgefallenen Speichervorrichtung 140' in dem in 1 und 4 gezeigten P2P-Speichersystem 110, um eine speicherzentrische Aufgabe durchzuführen, gemäß einer Ausführungsform dar. In einigen Ausführungsformen können einer oder mehrere der Blöcke in dem Verfahren 500 gemäß dem verteilten globalen FTL-Datenverwaltungsschema durchgeführt werden, wie unten unter Bezugnahme auf 7 beschrieben.
  • Wie bereits erwähnt, kann in der vorliegenden Offenbarung eine „speicherzentrische Aufgabe“ auf jede Sequenz von Vorgängen (z. B. einen „Job“, einen „Prozess“ usw.), die die Übertragung und/oder Verarbeitung von in Speichervorrichtungen oder -systemen (z. B. dem P2P-Speichersystem 110) gespeicherten Daten beinhalten, Bezug nehmen. Die speicherzentrische Aufgabe kann von dem Host 101 (in Verbindung mit der Ausführung einer Anwendung durch den Host) stammen oder in einigen Fällen von einer funktionierenden Speichervorrichtung 140" in dem P2P-Speichersystem 110 übertragen werden. Beispiele von speicherzentrischen Aufgaben schließen Musterabgleich, Abbildung/Reduzierung, Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Wiederherstellung einer ausgefallenen Speichervorrichtung usw. ein. In einigen Ausführungsformen kann die speicherzentrische Aufgabe eine „neue“ Aufgabe sein, die vor dem Ausfall der ausgefallenen Speichervorrichtung nicht bereits durch die ausgefallene Speichervorrichtung 140' durchgeführt wurde. In einigen Ausführungsformen kann die speicherzentrische Aufgabe durch eine Reihe von computerausführbaren Anweisungen und Adressen von Eingabedaten und/oder Ausgabedaten definiert werden. In einigen Ausführungsformen können die computerausführbaren Anweisungen Programmcode aufweisen, der durch die funktionierende Rechenressource (z. B. die Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' ausführbar ist.
  • In Block 510 kann sich das P2P-Speichersystem 110 in einem normalen Betriebszustand befinden, in dem die Speichervorrichtungen in dem P2P-Speichersystem 110 ordnungsgemäß funktionieren und Aufgaben gemäß einer Lastausgleichsrichtlinie einer oder mehreren der Speichervorrichtungen zugewiesen und von diesen durchgeführt werden können. Die durch das P2P-Speichersystem 110 verwendete Lastausgleichsrichtlinie kann statisch oder dynamisch sein und kann auf einem oder mehreren Lastausgleichsschemata, wie Rundlauf-Verfahren, „ausgeglichene Last“ usw., basieren. In einigen Ausführungsformen kann die Richtlinie der „ausgeglichenen Last“ einfach versuchen, die Verarbeitung und/oder E/A-Last zwischen den Speichervorrichtungen in dem P2P-Speichersystem 110 basierend auf Faktoren, wie der Anzahl durchgeführter Aufgaben, der Latenz und/oder dem Durchsatz jeder Speichervorrichtung, auszugleichen. Abhängig von der Ausführungsform kann die Lastausgleichsrichtlinie, die während des normalen Betriebszustands des P2P-Speichersystems 110 in Block 510 verwendet wird, identisch mit oder verschieden von der Lastausgleichsrichtlinie sein, die verwendet wird, um die speicherzentrische Aufgabe auszuwählen und zuzuweisen, wie unten in Block 531 erörtert.
  • In Block 520 detektiert die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110. In einigen Ausführungsformen kann die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' in Koordination mit der ausgefallenen Speichervorrichtung durch die Verwendung von einem oder mehreren NVMe-Befehlen detektieren. Wie zuvor beschrieben, kann die ausgefallene Speichervorrichtung 140' auf jede Speichervorrichtung in dem P2P-Speichersystem Bezug nehmen, die in irgendeiner Hinsicht nicht richtig funktioniert, einschließlich einer Speichervorrichtung, die weiterhin betriebsfähig ist, aber basierend auf einem Frühwarnhinweis als „ausgefallen“ betrachtet werden kann. In einigen Ausführungsformen kann die ausgefallene Speichervorrichtung 140' eine oder mehrere Rechenressourcen (z. B. die Vorrichtungssteuerung 142) und/oder Speicherressourcen (z. B. das Speichermedium 143), die mindestens teilweise weiterhin funktionieren, z. B. in der Lage sind, mindestens einige ihrer vorgesehenen Funktion(en) durchzuführen, einschließen.
  • In Block 530 weist die Systemsteuerung 120 der ausgefallenen Speichervorrichtung 140' eine speicherzentrische Aufgabe zu. In einigen Ausführungsformen kann der Block 530 durch das Lastausgleichsmodul 226 in der Systemsteuerung 120 durchgeführt werden. Block 530 schließt Blöcke 531-532 ein, die als Nächstes beschrieben werden.
  • In Block 531 wählt die Systemsteuerung 120 eine speicherzentrische Aufgabe zur Zuweisung zu der ausgefallenen Speichervorrichtung 140' basierend auf der Lastausgleichsrichtlinie für das P2P-Speichersystem 110 aus. Abhängig von der Ausführungsform kann die Lastausgleichsrichtlinie, die zum Auswählen und Zuweisen der speicherzentrischen Aufgabe (in Block 531) verwendet wird, identisch mit oder verschieden von der Lastausgleichsrichtlinie sein, die während des normalen Betriebszustands des P2P-Speichersystems 110 (in Block 510) verwendet wird. In einigen Ausführungsformen kann die Detektion der ausgefallenen Speichervorrichtung eine Änderung (z. B. eine Erhöhung) einer Gewichtung oder eines Trends der Lastausgleichsrichtlinie zum Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung 140' im Vergleich zu dem normalen Betriebszustand des P2P-Speichersystems 110 bewirken. Wie bereits erwähnt, kann dieses Merkmal zu einer verbesserten Systemleistung und/oder Systemressourcennutzung durch die fortgesetzte Verwendung der ausgefallenen Speichervorrichtung 140' nach dem Ausfall der Vorrichtung führen, indem die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen.
  • In Block 532 sendet die Systemsteuerung 120 Informationen (z. B. eine oder mehrere Anweisungen und Eingabe- und/oder Ausgabedatenadressen), die der speicherzentrischen Aufgabe zugeordnet sind, zu der ausgefallenen Speichervorrichtung 140'. In einigen Ausführungsformen kann die Speicherverwaltungs-Engine 222 in der Systemsteuerung 120 die Informationen, die der speicherzentrischen Aufgabe zugeordnet sind, durch Ausgeben einer Reihe von NVMe-Schreibbefehlen (wie oben unter Bezugnahme auf 4 beschrieben), die die Informationen enthalten, die der speicherzentrischen Aufgabe zugeordnet sind, an die ausgefallene Speichervorrichtung 140' senden. Auf diese Weise werden der ausgefallenen Speichervorrichtung 140' die Informationen bereitgestellt, die erforderlich sind, um die speicherzentrische Aufgabe in Block 540 durchzuführen.
  • In Block 540, nach dem Bestimmen, dass die speicherzentrische Aufgabe der ausgefallenen Speichervorrichtung 140' zugewiesen wurde, führt die ausgefallene Speichervorrichtung die speicherzentrische Aufgabe als Reaktion auf P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140" durch. In einigen Ausführungsformen kann die speicherzentrische Aufgabe durch eine funktionierende Rechenressource (z. B. die Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' durchgeführt werden. Block 540 schließt Blöcke 541-545 ein, die als Nächstes beschrieben werden.
  • In der Ausführungsform von 5A und 5B befinden sich die Eingabedaten und Ausgabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, beide auf der funktionierenden Speichervorrichtung 140". Jedoch können sich die Eingabedaten und Ausgabedaten in anderen Ausführungsformen auf verschiedenen funktionierenden Speichervorrichtungen in dem P2P-Speichersystem 110, wie den Speichervorrichtungen 140a bzw. 140c, befinden. In den P2P-Kommunikationen, die für die veranschaulichte Ausführungsform beschrieben sind, entspricht die ausgefallene Speichervorrichtung 140' der Initiatorvorrichtung und entspricht die funktionierende Speichervorrichtung 140" der Zielvorrichtung.
  • In Block 541 bestimmt die ausgefallene Speichervorrichtung 140' einen Ort (z. B. in der funktionierende Speichervorrichtung 140") in dem P2P-Speichersystem 110 der Eingabedaten mit der speicherzentrischen Aufgabe. In einigen Ausführungsformen kann der Ort der Eingabedaten aus der/den Eingabedatenadresse(n) bestimmt werden, die der speicherzentrischen Aufgabe zugeordnet ist/sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 532). In einigen Ausführungsformen kann der Ort der Eingabedaten durch Durchführen eines Adressübersetzungsvorgangs unter Verwendung der P2P-Datenübertragungs-Engine 324 in der ausgefallenen Speichervorrichtung 140' bestimmt werden.
  • In Block 542 empfängt die ausgefallene Speichervorrichtung 140' die Eingabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, über P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140". In einigen Ausführungsformen können die P2P-Kommunikationen eine Reihe von einem oder mehreren P2P-Lesebefehlen (wie oben unter Bezugnahme auf 4 beschrieben) aufweisen, die durch die ausgefallene Speichervorrichtung 140' an die funktionierende Speichervorrichtung 140" ausgegeben werden. In einigen Ausführungsformen können die P2P-Lesebefehle durch die P2P-Datenübertragungs-Engine 324 in Koordination mit dem CMB 315 der Vorrichtungssteuerung 142 der entsprechenden Speichervorrichtungen durchgeführt werden.
  • In Block 543 führt die ausgefallene Speichervorrichtung 140' die speicherzentrische Aufgabe unter Verwendung der Eingabedaten durch, die von der funktionierenden Speichervorrichtung 140" empfangen werden, wodurch Ausgabedaten basierend auf dem Durchführen der speicherzentrischen Aufgabe erzeugt werden. In einigen Ausführungsformen kann die speicherzentrische Aufgabe unter Verwendung der funktionierenden Rechenressource (z. B. der Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' basierend auf der einen oder den mehreren Anweisungen durchgeführt werden, die der speicherzentrischen Aufgabe zugeordnet sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 532). Die ausgefallene Speichervorrichtung 140' kann die speicherzentrische Aufgabe bei den Blöcken 144 der Eingabedaten einzeln, wenn sie empfangen werden, oder bei dem gesamten Satz der Eingabedaten auf einmal (z. B. unter Verwendung von DMA) durchführen. In einigen Ausführungsformen können die Ausgabedaten temporär in einem Puffer (z. B. CMB 315) in der ausgefallenen Speichervorrichtung 140' gespeichert werden.
  • Wenngleich Blöcke 542 und 543 in der Figur separat gezeigt sind, sei angemerkt, dass in einigen Ausführungsformen mindestens einige der Vorgänge in diesen Blöcken gleichzeitig durch die ausgefallene Speichervorrichtung 140' beim Durchführen der speicherzentrischen Aufgabe durchgeführt werden können.
  • In Block 544 sendet die ausgefallene Speichervorrichtung 140' die Ausgabedaten, die durch die speicherzentrische Aufgabe erzeugt werden, über P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140". In einigen Ausführungsformen können die P2P-Kommunikationen eine Reihe von einem oder mehreren P2P-Schreibbefehlen (wie oben unter Bezugnahme auf 4 beschrieben) aufweisen, die durch die ausgefallene Speichervorrichtung 140' an die funktionierende Speichervorrichtung 140" ausgegeben werden. In einigen Ausführungsformen können die P2P-Schreibbefehle durch die P2P-Datenübertragungs-Engine 324 in Koordination mit dem CMB 315 der Vorrichtungssteuerung 142 der entsprechenden Speichervorrichtungen durchgeführt werden. In einigen Ausführungsformen kann ein Ort der Ausgabedaten in der funktionierenden Speichervorrichtung 140" aus der/den Ausgabedatenadresse(n) bestimmt werden, die der speicherzentrischen Aufgabe zugeordnet ist/sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 532). In einigen Ausführungsformen kann der Ort der Ausgabedaten durch Durchführen eines Adressübersetzungsvorgangs unter Verwendung der P2P-Datenübertragungs-Engine 324 in der ausgefallenen Speichervorrichtung 140' bestimmt werden (wie oben in Block 541 beschrieben).
  • In Block 545 sendet die funktionierende Speichervorrichtung 140" die Ausgabedaten, die durch die speicherzentrische Aufgabe erzeugt werden, an den Host 101, von dem die Aufgabe stammt. In einigen Ausführungsformen kann Block 545 durch die funktionierende Speichervorrichtung 140" in Koordination mit der Systemsteuerung 120 durch die Verwendung von einem oder mehreren NVMe-Befehlen durchgeführt werden.
  • In Block 550 detektiert die Systemsteuerung 120 eine Beendigung der speicherzentrischen Aufgabe durch die ausgefallene Speichervorrichtung 140'. In einigen Ausführungsformen kann die Systemsteuerung 120 die Beendigung der speicherzentrischen Aufgabe durch Ausgeben von einem oder mehreren NVMe-Befehlen an die ausgefallene Speichervorrichtung 140' detektieren.
  • In Block 560 bestimmt die Systemsteuerung 120, ob die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110 repariert oder ersetzt wurde. Wenn dies der Fall ist, gibt die Systemsteuerung 120 die Steuerung an Block 510 zurück (z. B. normaler Betrieb des P2P-Speichersystems 110). Wenn dies jedoch nicht der Fall ist, gibt die Systemsteuerung die Steuerung an Block 530 zurück, in dem die Systemsteuerung der ausgefallenen Speichervorrichtung 140' eine andere speicherzentrische Aufgabe zuweist.
  • 6A und 6B stellen ein Flussdiagramm eines beispielhaften Verfahrens 600 zum Verwenden der ausgefallenen Speichervorrichtung 140' in dem in 1 und 4 gezeigten P2P-Speichersystem 110, um eine beispielhafte speicherzentrische Aufgabe (insbesondere eine Musterabgleichsaufgabe) durchzuführen, gemäß einer Ausführungsform dar. Die Musterabgleichsaufgabe kann eine Sequenz von Vorgängen aufweisen, die von dem Host 101 stammen, die alle Vorkommnisse des Worts „Katze“ in einem verschlüsselten komprimierten Datensatz zählt, der auf der funktionierenden Speichervorrichtung 140" gespeichert ist. In einigen Ausführungsformen können einer oder mehrere der Blöcke in dem Verfahren 600 gemäß dem verteilten globalen FTL-Datenverwaltungsschema durchgeführt werden, wie unten unter Bezugnahme auf 7 beschrieben. Es sei angemerkt, dass das Verfahren 600 eine Ausführungsform des Verfahrens 500 ist, das oben unter Bezugnahme auf 5A und 5B beschrieben ist, wie es insbesondere auf die Musterabgleichsaufgabe angewendet wird.
  • In Block 610 kann sich das P2P-Speichersystem 110 in einem normalen Betriebszustand befinden, in dem die Speichervorrichtungen in dem P2P-Speichersystem 110 ordnungsgemäß funktionieren und Aufgaben gemäß einer Lastausgleichsrichtlinie einer oder mehreren der Speichervorrichtungen zugewiesen und von diesen durchgeführt werden können. In einigen Ausführungsformen kann die Lastausgleichsrichtlinie wie oben unter Bezugnahme auf Blöcke 510 und 531 in 5A und 5B beschrieben sein.
  • In Block 620 detektiert die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110. In einigen Ausführungsformen kann die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' detektieren, wie oben unter Bezugnahme auf Block 520 in 5A und 5B beschrieben.
  • In Block 630 weist die Systemsteuerung 120 der ausgefallenen Speichervorrichtung 140' die Musterabgleichsaufgabe zu. Block 630 schließt Blöcke 631-632 ein, die als Nächstes beschrieben werden.
  • In Block 631 wählt die Systemsteuerung 120 die Musterabgleichsaufgabe zur Zuweisung zu der ausgefallenen Speichervorrichtung 140' basierend auf der in Block 610 beschriebenen Lastausgleichsrichtlinie für das P2P-Speichersystem 110 aus. Normalerweise würde die Systemsteuerung 120 die Musterabgleichsaufgabe der funktionierenden Speichervorrichtung 140" zuweisen, weil dort der Datensatz gespeichert ist, der der Musterabgleichsaufgabe zugeordnet ist. Stattdessen weist jedoch die Systemsteuerung 120 die Musterabgleichsaufgabe der ausgefallenen Speichervorrichtung 140' zu, weil sie bestimmt, dass die funktionierende Speichervorrichtung 140" ausreichend damit beschäftigt ist, andere Aufgaben durchzuführen, und die funktionierende Rechenressource in der ausgefallenen Speichervorrichtung 140' ungenutzt ist, und somit würde die Datenentschlüsselung/-dekomprimierung, die der Musterabgleichsaufgabe zugeordnet ist, schneller durch die ausgefallene Speichervorrichtung 140' durchgeführt werden.
  • In Block 632 gibt die Systemsteuerung 120 eine Reihe von NVMe-Schreibbefehlen (wie oben unter Bezugnahme auf 4 beschrieben), die Informationen (z. B. eine oder mehrere Anweisungen und Eingabe- und/oder Ausgabedatenadressen) enthalten, die der Musterabgleichsaufgabe zugeordnet sind, an die ausgefallene Speichervorrichtung 140' aus. Auf diese Weise werden der ausgefallenen Speichervorrichtung 140' die Informationen bereitgestellt, die erforderlich sind, um die speicherzentrische Aufgabe in Block 640 durchzuführen.
  • In Block 640 führt die ausgefallene Speichervorrichtung 140' die Musterabgleichsaufgabe als Reaktion auf P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140" durch, in der der Datensatz, der der Musterabgleichsaufgabe zugeordnet ist, gespeichert ist. Block 640 schließt Blöcke 641-645 ein, die als Nächstes beschrieben werden.
  • In Block 641 bestimmt die ausgefallenen Speichervorrichtung 140' einen Ort in der funktionierenden Speichervorrichtung 140" des Datensatzes, der der Musterabgleichsaufgabe zugeordnet ist.
  • In Block 642 gibt die ausgefallene Speichervorrichtung 140' eine Reihe von einem oder mehreren P2P-Lesebefehlen (wie oben unter Bezugnahme auf 4 beschrieben) an die funktionierende Speichervorrichtung 140" aus, um einen oder mehrere Blöcke 144 in dem Datensatz von der funktionierenden Speichervorrichtung zu empfangen.
  • In Block 643(1) beginnt die ausgefallene Speichervorrichtung 140' damit, die Musterabgleichsaufgabe durchzuführen, indem sie eine Suche nach dem Wort „Katze“ auf dem einen oder den mehreren Blöcken 144 in dem Datensatz durchführt, der von der funktionierenden Speichervorrichtung 140" empfangen wird. In einigen Ausführungsformen kann Block 643(1) zunächst ein Entschlüsseln und/oder Dekomprimieren der Blöcke in dem Datensatz beinhalten. In einigen Ausführungsformen kann die Musterabgleichsaufgabe unter Verwendung der funktionierenden Rechenressource (z. B. der Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' basierend auf der einen oder den mehreren Anweisungen durchgeführt werden, die der Musterabgleichsaufgabe zugeordnet sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 632). Die ausgefallene Speichervorrichtung 140' kann die Musterabgleichsaufgabe bei den Blöcken des Datensatzes einzeln, wenn sie empfangen werden, oder bei dem gesamten Satz von Blöcken auf einmal (z. B. unter Verwendung von DMA) durchführen. In einigen Ausführungsformen können die Ausgabedaten temporär in einem Puffer (z. B. CMB 315) in der ausgefallenen Speichervorrichtung 140' gespeichert werden.
  • In Block 643(2) bereitet die ausgefallene Speichervorrichtung 140' eine Liste von Blöcken in dem Datensatz vor, von dem festgestellt wird, dass er das Wort „Katze“ enthält.
  • Wenngleich Blöcke 642, 643(1) und 643(2) in der Figur separat gezeigt sind, sei angemerkt, dass in einigen Ausführungsformen mindestens einige der Vorgänge in diesen Blöcken gleichzeitig durch die ausgefallene Speichervorrichtung 140' beim Durchführen der Musterabgleichsaufgabe durchgeführt werden können.
  • In Block 644 gibt die ausgefallene Speichervorrichtung 140' eine Reihe von einem oder mehreren P2P-Schreibbefehlen an die funktionierende Speichervorrichtung 140" aus, um die Liste von Blöcken 144 in dem Datensatz, von denen festgestellt wurde, dass sie das Wort „Katze“ enthalten, an die funktionierende Speichervorrichtung zu senden.
  • In Block 645 sendet die funktionierende Speichervorrichtung 140" die Liste von Blöcken 144 in dem Datensatz, von denen festgestellt wurde, dass sie das Wort „Katze“ enthalten, an den Host 101, von dem die Aufgabe stammt. In einigen Ausführungsformen kann Block 645 durch die funktionierende Speichervorrichtung 140" in Koordination mit der Systemsteuerung 120 unter Verwendung von einem oder mehreren NVMe-Befehlen durchgeführt werden.
  • In Block 650 detektiert die Systemsteuerung 120 eine Beendigung der Musterabgleichsaufgabe durch die ausgefallene Speichervorrichtung 140'. In einigen Ausführungsformen kann die Systemsteuerung 120 die Beendigung der speicherzentrischen Aufgabe durch Ausgeben von einem oder mehreren NVMe-Befehlen an die ausgefallene Speichervorrichtung 140' detektieren.
  • In Block 660 bestimmt die Systemsteuerung 120, ob die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110 repariert oder ersetzt wurde. Wenn dies der Fall ist, gibt die Systemsteuerung 120 die Steuerung an Block 510 zurück (z. B. normaler Betrieb des P2P-Speichersystems 110). Wenn dies jedoch nicht der Fall ist, gibt die Systemsteuerung die Steuerung an Block 530 zurück, in dem die Systemsteuerung 120 der ausgefallenen Speichervorrichtung 140' eine andere speicherzentrische Aufgabe zuweist.
  • 7 stellt ein Flussdiagramm eines beispielhaften Verfahrens 700 zum Durchführen einer Datenverwaltungsanforderung (z. B. einer Datenübertragungsanforderung) gemäß einem Datenverwaltungsschema einer verteilten globalen Flash-Translationsschicht (Flash Translation Layer, FTL) für das in 1 gezeigte Rechensystem 100 gemäß einer Ausführungsform dar. In dem in 7 gezeigten Beispiel werden die meisten der Blöcke in dem Verfahren 700 durch die Systemsteuerung 120 durchgeführt, wenngleich in anderen Ausführungsformen einer oder mehrere der Blöcke in dem Verfahren durch andere Vorrichtungen (z. B. den Host 101 oder die Speichervorrichtung 140) in dem Speichersystem 110 durchgeführt werden können.
  • In Block 710 kann die Systemsteuerung 120 eine Datenverwaltungsanforderung (z. B. Leseanforderung) von dem Host 101 empfangen.
  • In Block 720 kann die Systemsteuerung 120 (z. B. unter Verwendung der Speicherverwaltungs-Engine 222) basierend auf der Datenverwaltungsanforderung eine oder mehrere Speichervorrichtungen 140 in dem Speichersystem 110 und einen oder mehrere Datenverwaltungsvorgänge, die durch die eine oder die mehreren Speichervorrichtungen 140 durchgeführt werden sollen, bestimmen. In einigen Ausführungsformen, um die eine oder die mehreren Speichervorrichtungen 140 zu bestimmen, empfängt die Systemsteuerung 120 eine logische Eingabeadresse von dem Host 101 und indiziert die Adresskarte 225, die logische Adressen auf Speichervorrichtungen abbildet, unter Verwendung der logischen Eingabeadresse, um die eine oder die mehreren Speichervorrichtungen 140 zu identifizieren. In einigen solchen Ausführungsformen verwendet die Systemsteuerung 120 mindestens einen Abschnitt der logischen Eingabeadresse, um die eine oder die mehreren Speichervorrichtungen 140 zu identifizieren.
  • In Block 730 kann die Systemsteuerung 120 eine Durchführung eines Datenverwaltungsvorgangs/von Datenverwaltungsvorgängen entsprechend der Datenverwaltungsanforderung initiieren. In einigen Ausführungsformen schließt Block 730 ein Senden von einem oder mehreren Datenverwaltungsbefehlen an die eine oder die mehreren Speichervorrichtungen 140 und ein Initiieren von einer oder mehreren Datenübertragungen (entweder vor oder nach dem Senden der einen oder mehreren Datenverwaltungsbefehle) ein. Die eine oder die mehreren Datenübertragungen können einen oder mehrere Vorgänge, wie einen Vorgang eines direkten Speicherzugriffs (Direct Memory Access, DMA), um Daten zwischen einem Speicherpuffer einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110 und einem Speicherpuffer des Hosts 101 zu übertragen, und/oder eine interne Datenübertragung zwischen zwei oder mehreren der Speichervorrichtungen 140 in dem Speichersystem 110 einschließen. In einigen Ausführungsformen schließen die eine oder die mehreren Datenübertragungen einen DMA-Vorgang, um Daten zwischen einem Speicherpuffer einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110 und einem Speicherpuffer des Hosts 101 zu übertragen, und/oder eine interne Datenübertragung zwischen zwei oder mehreren der Speichervorrichtungen 140 in dem Speichersystem 110 ein.
  • In Block 740 bestimmt die Systemsteuerung 120 im Fall einer Leseanforderung basierend auf der Adresskarte 225 einen Satz von Blöcken, die sich in einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110, das die angeforderten Daten enthält, befinden. In einigen Ausführungsformen bildet die Adresskarte 225 eine oder mehrere globale logische Adressen, die durch die Leseanforderung (empfangen von dem Host 101) identifiziert werden, auf eine oder mehrere Speichervorrichtungen 140 in dem P2P-Speichersystem 110 und optional auf eine oder mehrere lokale logische Adressen in jeder solchen Speichervorrichtung ab. Die lokalen logischen Adressen werden durch die jeweilige Speichervorrichtung 140 unter Verwendung von Mechanismen für eine logisch-zu-physisch-Abbildung in der Speichervorrichtung auf physische Adressen in der Speichervorrichtung abgebildet. In einigen Ausführungsformen initiiert die Systemsteuerung 120 die Berechnung der Adresskarte 225. In einigen Ausführungsformen wird die Adresskarte durch eine oder mehrere Vorrichtungen außerhalb der Systemsteuerung 120 berechnet. In einigen Ausführungsformen wird die Adresskarte 225 in der jeweiligen Speichervorrichtung 140 gespeichert/befindet sich in dieser.
  • In Block 750 sendet die Systemsteuerung 120 einen oder mehrere Lesebefehle an die jeweilige Speichervorrichtung 140, um den Lesevorgang bei dem Satz von Blöcken durchzuführen. In einigen Ausführungsformen übersetzt die Systemsteuerung 120 die von dem Host 101 empfangene Leseanforderung unter Verwendung eines vordefinierten Befehlsübersetzungsprozesses in den einen oder die mehreren Lesebefehle.
  • In Block 760 antwortet die Vorrichtungssteuerung 142 der jeweiligen Speichervorrichtung 140 auf den einen oder die mehreren Lesebefehle, indem sie die entsprechenden Daten aus dem Satz von Blöcken in der jeweiligen Speichervorrichtung liest.
  • In Block 770 empfängt die Systemsteuerung 120 eine Fertigstellungsbenachrichtigung von der jeweiligen Speichervorrichtung 140, die angibt, dass die Ausführung des an die jeweilige Speichervorrichtung gesendeten Lesebefehls abgeschlossen ist und dass die resultierenden Lesedaten in einem Speicherpuffer der Vorrichtungssteuerung 142 der jeweiligen Speichervorrichtung gespeichert werden.
  • In Block 780 initiiert die Systemsteuerung 120 nach dem Empfangen der Fertigstellungsbenachrichtigung eine Datenübertragung unter Verwendung eines DMA-Vorgangs, um die Lesedaten an den Host 101, der die Leseanforderung gesendet hat, zu übertragen (z. B. zu senden). In einigen Ausführungsformen schließt Block 780 ein, dass die Systemsteuerung 120 einen Datenübertragungsbefehl an eine jeweilige Netzwerkschnittstellensteuerung (nicht gezeigt) in dem Speichersystem 110 sendet, um die Lesedaten aus einem Speicherpuffer der Systemsteuerung 120 an einen Speicherpuffer des Hosts 101 zu übertragen, wobei DMA oder ein entfernter direkter Speicherzugriff (Remote Direct Memory Access, RDMA) verwendet wird, um die Lesedaten zu übertragen.
  • Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, sind oben beschrieben. Technische Merkmale und Vorteile von einer oder mehreren Ausführungsformen der vorliegenden Offenbarung, wie oben beschrieben, können, ohne darauf beschränkt zu sein, eines oder mehrere von Folgendem einschließen:
    • (1) Verbesserte Systemleistung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemleistung durch Zuweisen von speicherzentrischen Aufgaben zu der ausgefallenen Speichervorrichtung, anstatt von dieser weg (wie bei herkömmlichen Systemen), nachdem der Ausfall detektiert wurde. Die ausgefallene Speichervorrichtung kann Aufgaben effizienter durchführen als eine andere, noch funktionierende Speichervorrichtung in dem Speichersystem, weil die ausgefallene Speichervorrichtung aufgrund des Ausfalls ihres Speichermediums keine regelmäßige Eingabe/Ausgabe-Last (E/A-Last) (z. B. Komprimierung/Dekomprimierung oder Verschlüsselung/Entschlüsselung, die sehr rechenintensiv sind) mehr aufweist.
    • (2) Verbesserte Systemressourcennutzung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemressourcennutzung durch die fortgesetzte Verwendung der ausgefallenen Speichervorrichtung nach dem Ausfall der Vorrichtung, indem die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen. Die vorliegende Offenbarung nutzt die Tatsache, dass trotz eines Ausfalls in ihrem Speichermedium andere Rechen-, Speicher- und/oder E/A-Ressourcen der ausgefallenen Speichervorrichtung weiterhin betriebsfähig sein können.
  • Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, sind oben beschrieben. In der obigen Beschreibung wurden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt. Es ist jedoch offensichtlich, dass die offenbarten Technologien ohne irgendeine gegebene Untermenge dieser spezifischen Details praktiziert werden können. In anderen Fällen sind Strukturen und Vorrichtungen in Blockdiagrammform gezeigt. Zum Beispiel werden die offenbarten Technologien in einigen Implementierungen oben unter Bezugnahme auf Benutzerschnittstellen und bestimmte Hardware beschrieben.
  • Eine Bezugnahme in der Patentschrift auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform oder Implementierung der offenbarten Technologien eingeschlossen ist. Fälle des Auftretens des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in der Patentschrift nehmen nicht notwendigerweise alle auf dieselbe Ausführungsform oder Implementierung Bezug.
  • Einige Abschnitte der obigen ausführlichen Beschreibungen können in Form von Prozessen und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers dargestellt werden. Ein Prozess kann im Allgemeinen als eine eigenständige Abfolge von Operationen, die zu einem Ergebnis führen, betrachtet werden. Die Operationen können physische Manipulationen physikalischer Größen einschließen. Diese Größen nehmen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Diese Signale können als in der Form von Bits, Werten, Elementen, Symbolen, Zeichen, Begriffen, Zahlen oder dergleichen befindlich bezeichnet werden.
  • Diese und ähnliche Ausdrücke können mit den geeigneten physikalischen Größen assoziiert werden und können als Markierungen betrachtet werden, die auf diese Größen angewendet werden. Sofern aus der vorherigen Erörterung nicht ausdrücklich etwas anderes hervorgeht, versteht es sich, dass sich in der gesamten Beschreibung Erörterungen, die Begriffe wie „Verarbeiten“ oder „Errechnen“ oder „Berechnen“ oder „Bestimmen“ oder „Anzeigen“ oder dergleichen verwenden, auf die Aktion und die Prozesse eines Computersystems oder einer ähnlichen elektronischen Datenverarbeitungsvorrichtung beziehen können, die Daten, die als physikalische (elektronische) Größen innerhalb der Register und Speicher des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die gleichermaßen als physikalische Größen innerhalb der Computersystemspeicher oder -register oder anderer derartiger Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen dargestellt werden.
  • Die offenbarten Technologien können sich auch auf eine Einrichtung zum Durchführen der Operationen hierin beziehen. Diese Einrichtung kann speziell für die erforderlichen Zwecke konstruiert sein, oder sie kann einen Universalcomputer einschließen, der selektiv durch ein Computerprogramm aktiviert oder umkonfiguriert wird, das in dem Computer gespeichert ist. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert sein, zum Beispiel, ohne darauf beschränkt zu sein, einem beliebigen Typ von Festplatte, einschließlich Disketten, optischer Platten, CD-ROMs und Magnetplatten, Festwertspeicher (Read-Only Memories, ROMs), Speicher mit wahlfreiem Zugriff (Random Access Memories, RAMs), löschbarer programmierbarer Festwertspeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbarer programmierbarer Festwertspeicher (Electrically Erasable Programmable Read-Only Memories, EEPROMs), magnetischer oder optischer Karten, Flash-Speichern, einschließlich USB-Sticks mit nicht-flüchtigem Speicher, oder eines beliebigen Typs von Medien, die zum Speichern elektronischer Anweisungen geeignet sind, jeweils gekoppelt an einen Computersystembus.
  • Die offenbarten Technologien können die Form einer vollständigen Hardware-Implementierung, einer vollständigen Software-Implementierung oder einer Implementierung annehmen, die sowohl Hardware- als auch Software-Elemente enthält. In einigen Implementierungen ist die Technologie in Software implementiert, die Firmware, residente Software, Mikrocode usw. einschließt, aber nicht darauf beschränkt ist.
  • Darüber hinaus können die offenbarten Technologien in Form eines Computerprogrammprodukts vorliegen, das von einem nicht vorübergehenden computerverwendbaren oder computerlesbaren Medium aus zugänglich ist und Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen Anweisungsausführungssystem bereitstellt. Für die Zwecke dieser Beschreibung kann ein computerverwendbares oder computerlesbares Medium jede Einrichtung sein, welche das Programm zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem, der Einrichtung oder der Vorrichtung enthalten, speichern, kommunizieren, verbreiten oder transportieren kann.
  • Ein Computersystem oder Datenverarbeitungssystem, das zum Speichern und/oder Ausführen des Programmcodes geeignet ist, schließt mindestens einen Prozessor ein (z. B. einen Hardwareprozessor), der über einen Systembus direkt oder indirekt mit Speicherelementen gekoppelt ist. Die Speicherelemente können einen lokalen Speicher einschließen, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cache-Speicher, die eine vorübergehende Speicherung mindestens eines Programmcodes bereitstellen, um die Häufigkeit zu reduzieren, mit der der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Ein-/Ausgabe- oder E/A-Vorrichtungen (einschließlich, aber nicht beschränkt auf Tastaturen, Anzeigen, Zeigevorrichtungen usw.) können entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten mit dem System gekoppelt werden.
  • Netzwerkadapter können auch mit dem System gekoppelt sein, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichervorrichtungen über dazwischen liegende private oder öffentliche Netzwerke gekoppelt wird. Modems, Kabelmodems und Ethernet-Karten sind nur einige der gegenwärtig verfügbaren Arten von Netzwerkadaptern.
  • Die Begriffe Speichermedien, Speichervorrichtung und Datenblöcke werden in der vorliegenden Offenbarung austauschbar verwendet, um auf die physischen Medien Bezug zu nehmen, auf denen die Daten gespeichert sind.
  • Schließlich brauchen die hierin dargestellten Prozesse und Anzeigen nicht von Natur aus auf einen bestimmten Computer oder eine andere Einrichtung bezogen sein. Verschiedene Universalsysteme können mit Programmen gemäß den Lehren hierin verwendet werden, oder es kann sich als zweckmäßig erweisen, Spezialeinrichtungen zu konstruieren, um die erforderlichen Verfahrensoperationen durchzuführen. Die für eine Vielzahl dieser Systeme erforderliche Struktur wird aus der obigen Beschreibung ersichtlich. Außerdem wurden die offenbarten Technologien nicht mit Bezug auf irgendeine bestimmte Programmiersprache beschrieben. Es versteht sich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der hierin beschriebenen Technologien zu implementieren.
  • Die vorstehende Beschreibung der Implementierungen der vorliegenden Techniken und Technologien wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Es ist nicht beabsichtigt, umfassend zu sein oder die vorliegenden Techniken und Technologien auf die genau offenbarte Form zu beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Es ist beabsichtigt, dass der Schutzumfang der vorliegenden Techniken und Technologien nicht durch diese ausführliche Beschreibung beschränkt wird. Die vorliegenden Techniken und Technologien können in anderen spezifischen Formen implementiert werden, ohne von ihrem Wesen oder ihren wesentlichen Eigenschaften abzuweichen. Gleichermaßen sind die spezielle Benennung und Aufteilung der Module, Routinen, Merkmale, Attribute, Methodologien und anderer Gesichtspunkte nicht zwingend oder signifikant, und die Mechanismen, die die vorliegenden Techniken und Technologien oder ihre Merkmale implementieren, können unterschiedliche Namen, Unterteilungen und/oder Formate aufweisen. Darüber hinaus können die Module, Routinen, Merkmale, Attribute, Methodologien und andere Gesichtspunkte der vorliegenden Technologie als Software, Hardware, Firmware oder irgendeine Kombination der drei implementiert werden. Ebenso kann die Komponente überall dort, wo eine Komponente, beispielsweise ein Modul, als Software implementiert ist, als eigenständiges Programm, als Teil eines größeren Programms, als eine Vielzahl separater Programme, als eine statisch oder dynamisch verknüpfte Bibliothek, als ein kernladbares Modul, als ein Vorrichtungstreiber und/oder zukünftig in der Computerprogrammierung implementiert sein. Zusätzlich sind die vorliegenden Techniken und Technologien in keiner Weise auf die Implementierung in irgendeiner spezifischen Programmiersprache oder für irgendein spezielles Betriebssystem oder eine bestimmte Umgebung beschränkt. Dementsprechend soll die Offenbarung der vorliegenden Techniken und Technologien veranschaulichend, aber nicht einschränkend sein.

Claims (20)

  1. Computerimplementiertes Verfahren, aufweisend: als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem): Bestimmen, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und Durchführen, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem.
  2. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei das Durchführen der speicherzentrischen Aufgabe einschließt: Empfangen von Eingabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, über die P2P-Kommunikationen von der funktionierenden Speichervorrichtung; und Durchführen der speicherzentrischen Aufgabe unter Verwendung der Eingabedaten, die von der funktionierenden Speichervorrichtung empfangen werden.
  3. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei das Durchführen der speicherzentrischen Aufgabe einschließt: Erzeugen von Ausgabedaten; und Senden der Ausgabedaten über die P2P-Kommunikationen an die funktionierende Speichervorrichtung.
  4. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei eine funktionierende Rechenressource in der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe durchführt.
  5. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei die P2P-Kommunikationen mindestens eines von einem P2P-Lesebefehl und einem P2P-Schreibbefehl einschließen, die durch die ausgefallene Speichervorrichtung an die funktionierende Speichervorrichtung ausgegeben werden.
  6. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei: das P2P-Speichersystem eine Steuerung einschließt; und die Steuerung der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe basierend auf einer Lastausgleichsrichtlinie für das P2P-Speichersystem zuweist.
  7. Computerimplementiertes Verfahren gemäß Anspruch 6, wobei die Detektion der ausgefallenen Speichervorrichtung eine Änderung in einer Gewichtung der Lastausgleichsrichtlinie bewirkt.
  8. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei: die speicherzentrische Aufgabe eine Musterabgleichsaufgabe aufweist; und die ausgefallene Speichervorrichtung die Musterabgleichsaufgabe an einem Datensatz durchführt, der auf der funktionierenden Speichervorrichtung gespeichert ist.
  9. Einrichtung, aufweisend: einen oder mehrere Prozessoren; und Logik, die durch den einen oder die mehreren Prozessoren ausführbar ist, die eingerichtet sind, um Vorgänge durchzuführen, aufweisend: als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem): Bestimmen, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und Durchführen, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem.
  10. Einrichtung gemäß Anspruch 9, wobei das Durchführen der speicherzentrischen Aufgabe einschließt: Empfangen von Eingabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, über die P2P-Kommunikationen von der funktionierenden Speichervorrichtung; und Durchführen der speicherzentrischen Aufgabe unter Verwendung der Eingabedaten, die von der funktionierenden Speichervorrichtung empfangen werden.
  11. Einrichtung gemäß Anspruch 9, wobei das Durchführen der speicherzentrischen Aufgabe einschließt: Erzeugen von Ausgabedaten; und Senden der Ausgabedaten über die P2P-Kommunikationen an die funktionierende Speichervorrichtung.
  12. Einrichtung gemäß Anspruch 9, wobei eine funktionierende Rechenressource in der ausgefallenen Speichervorrichtung eingerichtet ist, um die speicherzentrische Aufgabe durchzuführen.
  13. Einrichtung gemäß Anspruch 9, wobei die P2P-Kommunikationen mindestens eines von einem P2P-Lesebefehl und einem P2P-Schreibbefehl einschließen, die durch die ausgefallene Speichervorrichtung an die funktionierende Speichervorrichtung ausgegeben werden.
  14. Einrichtung gemäß Anspruch 9, wobei: das P2P-Speichersystem eine Steuerung einschließt; und die Steuerung eingerichtet ist, um der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe basierend auf einer Lastausgleichsrichtlinie für das P2P-Speichersystem zuzuweisen.
  15. Einrichtung gemäß Anspruch 14, wobei die Detektion der ausgefallenen Speichervorrichtung eine Änderung in einer Gewichtung der Lastausgleichsrichtlinie bewirkt.
  16. Computerimplementiertes Verfahren, aufweisend: Detektieren einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem); als Reaktion auf das Erfassen der ausgefallenen Speichervorrichtung, Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung, wobei die speicherzentrische Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem durch die ausgefallene Speichervorrichtung durchzuführen ist; und Detektieren einer Beendigung der speicherzentrischen Aufgabe durch die ausgefallene Speichervorrichtung.
  17. Computerimplementiertes Verfahren gemäß Anspruch 16, wobei eine funktionierende Rechenressource in der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe durchführt.
  18. Computerimplementiertes Verfahren gemäß Anspruch 16, wobei die P2P-Kommunikationen mindestens eines von einem P2P-Lesebefehl und einem P2P-Schreibbefehl einschließen, die durch die ausgefallene Speichervorrichtung an die funktionierende Speichervorrichtung ausgegeben werden.
  19. Computerimplementiertes Verfahren gemäß Anspruch 16, wobei: das P2P-Speichersystem eine Steuerung einschließt; und die Steuerung der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe basierend auf einer Lastausgleichsrichtlinie für das P2P-Speichersystem zuweist.
  20. System, aufweisend: ein Mittel zum Detektieren einer ausgefallenen Speichervorrichtung in einer Vielzahl von Speichervorrichtungen; ein Mittel zum Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung als Reaktion auf das Detektieren der ausgefallenen Speichervorrichtung; und ein Mittel zum Durchführen der speicherzentrischen Aufgabe als Reaktion auf Peer-to-Peer-Kommunikationen (P2P-Kommunikationen) mit einer funktionierenden Speichervorrichtung in der Vielzahl von Speichervorrichtungen.
DE112019000194.9T 2018-08-03 2019-06-01 Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe Pending DE112019000194T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/054,892 US10824526B2 (en) 2018-08-03 2018-08-03 Using failed storage device in peer-to-peer storage system to perform storage-centric task
US16/054,892 2018-08-03
PCT/US2019/035088 WO2020027913A1 (en) 2018-08-03 2019-06-01 Using failed storage device in peer-to-peer storage system to perform storage-centric task

Publications (1)

Publication Number Publication Date
DE112019000194T5 true DE112019000194T5 (de) 2020-07-30

Family

ID=69228706

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000194.9T Pending DE112019000194T5 (de) 2018-08-03 2019-06-01 Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe

Country Status (4)

Country Link
US (1) US10824526B2 (de)
CN (1) CN111512289B (de)
DE (1) DE112019000194T5 (de)
WO (1) WO2020027913A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110737393B (zh) 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 数据读取方法、设备和计算机程序产品
US11327683B2 (en) * 2019-09-27 2022-05-10 Dell Products L.P. RAID storage-device-assisted read-modify-write system
US11262946B2 (en) * 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11824931B2 (en) 2020-09-28 2023-11-21 Vmware, Inc. Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
CN114490222B (zh) * 2022-02-14 2022-11-15 无锡众星微系统技术有限公司 一种PCIe P2P系统测试启动方法和装置
US12032483B2 (en) * 2022-04-11 2024-07-09 Samsung Electronics Co., Ltd. Systems and methods for pre-populating address translation cache
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5530948A (en) 1993-12-30 1996-06-25 International Business Machines Corporation System and method for command queuing on raid levels 4 and 5 parity drives
US5680539A (en) 1995-07-11 1997-10-21 Dell Usa, L.P. Disk array system which performs data reconstruction with dynamic load balancing and user-specified disk array bandwidth for reconstruction operation to maintain predictable degradation
US5742752A (en) 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US6092215A (en) 1997-09-29 2000-07-18 International Business Machines Corporation System and method for reconstructing data in a storage array system
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7934251B2 (en) 1999-12-02 2011-04-26 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6738937B1 (en) 2000-12-01 2004-05-18 Lsi Logic Corporation Method for nondisruptive testing of device and host attachment to storage subsystems
US7017107B2 (en) 2001-04-30 2006-03-21 Sun Microsystems, Inc. Storage array employing scrubbing operations at the disk-controller level
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7137038B2 (en) 2003-07-29 2006-11-14 Hitachi Global Storage Technologies Netherlands, B.V. System and method for autonomous data scrubbing in a hard disk drive
US7127636B2 (en) 2003-09-08 2006-10-24 International Business Machines Corporation Autonomic recovery of PPRC errors detected by PPRC peer
US7103739B2 (en) 2003-10-09 2006-09-05 International Business Machines Corporation Method and apparatus for providing hardware aware logical volume mirrors
US7945675B2 (en) 2003-11-03 2011-05-17 Apacheta Corporation System and method for delegation of data processing tasks based on device physical attributes and spatial behavior
US7596570B1 (en) 2003-11-04 2009-09-29 Emigh Aaron T Data sharing
US7428691B2 (en) 2003-11-12 2008-09-23 Norman Ken Ouchi Data recovery from multiple failed data blocks and storage units
US7293133B1 (en) 2003-12-31 2007-11-06 Veritas Operating Corporation Performing operations without requiring split mirrors in a multi-class file system
US7913148B2 (en) 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
US7434107B2 (en) 2004-07-19 2008-10-07 Dell Products L.P. Cluster network having multiple server nodes
US7526686B2 (en) 2004-08-04 2009-04-28 International Business Machines Corporation Apparatus, system, and method for active data verification in a storage system
US7275123B2 (en) 2004-12-06 2007-09-25 Nvidia Corporation Method and apparatus for providing peer-to-peer data transfer within a computing environment
US7571344B2 (en) 2005-08-12 2009-08-04 Silver Peak Systems, Inc. Ensuring data integrity in network memory
WO2007036932A2 (en) 2005-09-27 2007-04-05 Zetapoint Ltd. Data table management system and methods useful therefor
US8938591B2 (en) 2005-09-30 2015-01-20 Cleversafe, Inc. Dispersed storage processing unit and methods with data aggregation for use in a dispersed storage system
JP4766240B2 (ja) 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US9118698B1 (en) 2005-12-02 2015-08-25 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US7620841B2 (en) 2006-01-19 2009-11-17 International Business Machines Corporation Re-utilizing partially failed resources as network resources
US7783600B1 (en) * 2006-02-27 2010-08-24 Symantec Operating Corporation Redundancy management service for peer-to-peer networks
US7752387B2 (en) 2006-03-21 2010-07-06 International Business Machines Corporation Offloading firmware update tasks from RAID adapter to distributed service processors in switched drive connection network enclosure
WO2007115317A2 (en) 2006-04-04 2007-10-11 Permabit, Inc Storage assignment and erasure coding technique for scalable and fault tolerant storage system
US20080005382A1 (en) 2006-06-14 2008-01-03 Hitachi, Ltd. System and method for resource allocation in fault tolerant storage system
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008070802A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for an in-server storage area network
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US7975171B2 (en) 2007-09-12 2011-07-05 International Business Machines Corporation Automated file recovery based on subsystem error detection results
US8049980B1 (en) 2008-04-18 2011-11-01 Network Appliance, Inc. Partial disk failures and improved storage resiliency
US8082393B2 (en) 2008-06-06 2011-12-20 Pivot3 Method and system for rebuilding data in a distributed RAID system
US8086911B1 (en) 2008-10-29 2011-12-27 Netapp, Inc. Method and apparatus for distributed reconstruct in a raid system
US9037541B2 (en) 2009-04-30 2015-05-19 Microsoft Technology Licensing, Llc Metadata for data storage array
US8250283B1 (en) 2009-05-22 2012-08-21 Google Inc. Write-distribute command for RAID mirroring
US8706980B2 (en) 2009-07-30 2014-04-22 Cleversafe, Inc. Method and apparatus for slice partial rebuilding in a dispersed storage network
JP5397148B2 (ja) 2009-10-16 2014-01-22 富士通株式会社 記憶装置、制御装置および記憶装置の制御方法
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US8677068B2 (en) 2010-06-18 2014-03-18 Lsi Corporation Scalable storage devices
US20120011200A1 (en) * 2010-07-06 2012-01-12 Roxbeam Media Network Corporation Method and apparatus for data storage in a peer-to-peer network
US8726070B2 (en) 2010-09-27 2014-05-13 Dell Products L.P. System and method for information handling system redundant storage rebuild
US8473648B2 (en) 2010-12-16 2013-06-25 Lsi Corporation System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8838931B1 (en) 2012-03-30 2014-09-16 Emc Corporation Techniques for automated discovery and performing storage optimizations on a component external to a data storage system
US8862928B2 (en) 2011-09-20 2014-10-14 Cloudbyte, Inc. Techniques for achieving high availability with multi-tenant storage when a partial fault occurs or when more than two complete faults occur
EP2761481A4 (de) 2011-09-30 2015-06-17 Intel Corp Darstellung von direktzugriffsspeichern in einem logischen laufwerkmodell
US8751861B2 (en) 2012-02-08 2014-06-10 Lsi Corporation System and method for improved rebuild in RAID
US9292205B2 (en) 2012-06-14 2016-03-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods and systems for adaptive queue depth management
US9100362B2 (en) 2012-07-06 2015-08-04 Yahoo! Inc. Peer-to-peer architecture for web traffic management
US9262278B2 (en) 2012-07-30 2016-02-16 Ebay Inc. Allocation of replica-sets in a storage cluster
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9152643B2 (en) 2012-12-21 2015-10-06 Zetta Inc. Distributed data store
US9152502B2 (en) 2012-12-21 2015-10-06 Microsoft Technology Licensing, Llc Data error detection and correction using hash values
US9378135B2 (en) 2013-01-08 2016-06-28 Violin Memory Inc. Method and system for data storage
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9349476B2 (en) 2013-02-21 2016-05-24 Sandisk Technologies Inc. Methods, systems, and computer readable media for early detection of potential flash failures using an adaptive system level algorithm based on flash program verify
US9122587B2 (en) 2013-03-06 2015-09-01 Seagate Technology Llc Self recovery in a solid state drive
JP2016526720A (ja) 2013-06-19 2016-09-05 エグザブロックス・コーポレーション クラスタベースの記憶システムにおけるデータスクラビング
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
WO2015116197A1 (en) 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Storing data based on a write allocation policy
CN106462492A (zh) 2014-03-20 2017-02-22 慧与发展有限责任合伙企业 固态驱动器操作
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US10380026B2 (en) 2014-09-04 2019-08-13 Sandisk Technologies Llc Generalized storage virtualization interface
US9405928B2 (en) 2014-09-17 2016-08-02 Commvault Systems, Inc. Deriving encryption rules based on file content
US10409769B1 (en) * 2014-09-29 2019-09-10 EMC IP Holding Company LLC Data archiving in data storage system environments
US9658923B2 (en) 2014-09-30 2017-05-23 International Business Machines Corporation Optimization of rebuilding in solid state drives
US9692733B2 (en) 2015-02-10 2017-06-27 Red Hat, Inc. Key establishment and management protocol optimizations in view of channel reliability
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9785480B2 (en) 2015-02-12 2017-10-10 Netapp, Inc. Load balancing and fault tolerant service in a distributed data system
WO2016135872A1 (ja) 2015-02-25 2016-09-01 株式会社日立製作所 ストレージ装置及び記憶デバイス
US10289507B1 (en) 2015-10-27 2019-05-14 Pavilion Data Systems, Inc. Distributed rebuild of failed storage device
TW201730764A (zh) 2016-02-18 2017-09-01 群暉科技股份有限公司 用來於一儲存系統中進行資料擦洗管理之方法與裝置
US9875052B2 (en) 2016-03-15 2018-01-23 International Business Machines Corporation Storage capacity allocation using distributed spare space
CN107220148B (zh) 2016-03-21 2020-12-04 伊姆西Ip控股有限责任公司 针对独立磁盘冗余阵列的重建方法和设备
US10042721B2 (en) 2016-03-30 2018-08-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Peer-to-peer redundant array of independent disks (RAID) lacking a RAID controller
TWI604455B (zh) 2016-05-13 2017-11-01 Silicon Motion Inc 資料儲存裝置、記憶體控制器及其資料管理方法與資料區塊管理方法
US10241722B1 (en) 2016-05-27 2019-03-26 Pavilion Data Systems, Inc. Proactive scheduling of background operations for solid state drives
US20180024964A1 (en) 2016-07-19 2018-01-25 Pure Storage, Inc. Disaggregated compute resources and storage resources in a storage system
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
US9971515B2 (en) 2016-09-13 2018-05-15 Western Digital Technologies, Inc. Incremental background media scan
KR102631351B1 (ko) 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
US10310935B2 (en) 2016-11-17 2019-06-04 International Business Machines Corporation Dynamically restoring disks based on array properties
US10241877B2 (en) * 2016-12-12 2019-03-26 International Business Machines Corporation Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
US10860508B2 (en) 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
US10725859B2 (en) 2017-05-25 2020-07-28 Western Digital Technologies, Inc. Parity generation offload using peer-to-peer data transfers in data storage system
US20180357017A1 (en) 2017-06-12 2018-12-13 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
US10394634B2 (en) 2017-06-30 2019-08-27 Intel Corporation Drive-based storage scrubbing
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
US10585767B2 (en) 2018-02-07 2020-03-10 International Business Machines Corporation Automatic data healing using a storage controller

Also Published As

Publication number Publication date
CN111512289B (zh) 2023-09-22
WO2020027913A1 (en) 2020-02-06
US10824526B2 (en) 2020-11-03
CN111512289A (zh) 2020-08-07
US20200042412A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
DE112019000194T5 (de) Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe
DE112019000215T5 (de) Wiederherstellungshilfe mit ausgefallener Speichervorrichtung
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102004038649B4 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE102015205396A1 (de) Speichersystem und Verfahren zum Durchführen und Authentifizieren eines Schreibschutzes für dieses
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE102013111339A1 (de) Sicherheitsverwaltungseinheit, Hostcontrollerschnittstelle mit derselben, Verfahren zum Betreiben einer Hostcontrollerschnittstelle und Vorrichtungen mit einer Hostcontrollerschnittstelle
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112011101317T5 (de) Optimieren eines Dateisystems für unterschiedliche Typen von Anwendungen in einem Datenverarbeitungs-Cluster unter Verwendung von dynamischer Blockgrössen-Granularität
DE102012216034A1 (de) Direkte speicheradressierung for solid-state-laufwerke
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE112013000900T5 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112020004840T5 (de) Speicherbereinigung in datenspeichersystemen
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE102018204427A1 (de) Simulieren mehrerer Speichergeräte mit einem einzelnen Speichergerät, das mit einem Rechengerät gekoppelt ist
DE112011106066T5 (de) System und Verfahren zur Bereitstellung von differenziertem Speicherservice in der Datenbank
DE102018110704A1 (de) Speicherungsvorrichtung für ein vorausgehendes Verwalten einer Schreibdaten zuzuweisenden physischen Adresse

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE