DE112019000215T5 - Wiederherstellungshilfe mit ausgefallener Speichervorrichtung - Google Patents

Wiederherstellungshilfe mit ausgefallener Speichervorrichtung Download PDF

Info

Publication number
DE112019000215T5
DE112019000215T5 DE112019000215.5T DE112019000215T DE112019000215T5 DE 112019000215 T5 DE112019000215 T5 DE 112019000215T5 DE 112019000215 T DE112019000215 T DE 112019000215T DE 112019000215 T5 DE112019000215 T5 DE 112019000215T5
Authority
DE
Germany
Prior art keywords
data
storage device
failed
storage
failed storage
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
DE112019000215.5T
Other languages
English (en)
Inventor
Anand Kulkarni
Vladislav Bolkhovitin
Brian Walter O`Krafka
Sanjay Subbarao
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 DE112019000215T5 publication Critical patent/DE112019000215T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • 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/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Abstract

Verfahren, Systeme und andere Gesichtspunkte zum Rekonstruieren von Daten und Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung. Zum Beispiel kann ein Verfahren als Reaktion auf ein Erkennen einer ausgefallenen Speichervorrichtung in einem Speichersystem einschließen: Lokalisieren von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speichersystem zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; Ausgeben von Peer-to-Peer-Befehlen an die funktionierende(n) Speichervorrichtung(en), um die Daten und die Redundanzinformationen von der oder den funktionierenden Speichervorrichtungen zu erhalten; und Rekonstruieren der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von der oder den funktionierenden Speichervorrichtungen erhalten wurden, wobei eine funktionierende Rechenressource der ausgefallenen Rechenvorrichtung mindestens teilweise eines oder mehrere von Lokalisieren, Ausgeben und Rekonstruieren ausführt.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich auf Speichersysteme. In einem spezielleren Beispiel bezieht sich die vorliegende Offenbarung auf Verfahren und Systeme zum Rekonstruieren von Daten und Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung.
  • 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. Doch herkömmliche Prozesse zum Rekonstruieren von Daten und Wiederherstellen für ausgefallene Speichervorrichtungen können zu einer erheblichen Beeinträchtigung der Systemleistung führen, da die verbleibenden funktionierenden Speichervorrichtungen im System möglicherweise zum Rekonstruieren der verlorenen Daten verwendet werden müssen, was erhebliche CPU-Zeit sowie Bandbreite der Speichersystemverbindung erfordern kann.
  • Wenn zum Beispiel eine Speichervorrichtung in einem RAID-Array ausgefallen ist, wird in herkömmlichen Systemen die ausgefallene Speichervorrichtung aus dem Array herausgeschoben und sendet die RAID-Steuerung (entweder eigenständig oder von der Host-CPU gehostet) zusätzliche Befehle an die verbleibenden funktionierenden Speichervorrichtungen, um die verlorenen Daten der ausgefallenen Speichervorrichtung zu rekonstruieren. Das Rekonstruieren der Daten wird üblicherweise von der RAID-Steuerung unter Verwendung von Exklusiv-ODER-Operationen (XOR) oder Galois Field-Operationen (GF) durchgeführt.
  • KU RZDARSTELLU NG
  • Die vorliegende Offenlegung bezieht sich auf Verfahren und Systeme zum Rekonstruieren von Daten und Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung.
  • Wie oben erörtert, besteht ein Problem im Zusammenhang mit Prozessen zum herkömmlichen Rekonstruieren von Daten und Wiederherstellen für ausgefallene Speichervorrichtungen darin, dass sie während der Datenwiederherstellung zu einer erheblichen Verschlechterung der Systemleistung führen können. In Anbetracht dessen besteht ein Bedarf an einem verbesserten Verfahren zum Rekonstruieren von Daten und Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem.
  • Verschiedene Ausführungsformen der vorliegenden Offenbarung, wie hierin offenbart, können Daten rekonstruieren und/oder eine ausgefallene Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung wiederherstellen. Bei mindestens einigen Ausführungsformen kann die ausgefallene Speichervorrichtung selbst an dem Datenrekonstruktions- und/oder Wiederherstellungsprozess der ausgefallenen Speichervorrichtung teilnehmen, indem sie Peer-to-Peer (P2P) mit den verbleibenden funktionierenden Speichervorrichtungen im Speichersystem kommuniziert. Ferner kann, mindestens bei einigen Ausführungsformen, der tatsächliche Ausfallmechanismus der ausgefallenen Speichervorrichtung beim Durchführen der Vorrichtungswiederherstellung berücksichtigt werden. Zum Beispiel kann in Fällen, in denen bei der ausgefallenen Speichervorrichtung nur ein teilweiser Medienausfall vorliegt, die Durchführung der Datenrekonstruktion nur auf den ausgefallenen Medienabschnitt beschränkt sein.
  • Infolgedessen können eine oder mehrere Ausführungsformen der vorliegenden Offenbarung eine Reihe von technischen Merkmalen und Vorteilen bereitstellen, einschließlich eines oder mehrerer der Folgenden, ohne darauf beschränkt zu sein:
    • (1) Verbesserte Systemleistung während des Datenrekonstruktions- und/oder Wiederherstellungsprozesses der ausgefallenen Speichervorrichtung durch die Verwendung funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung.
    • (2) Verbesserte Systemleistung während des Datenrekonstruktions- und/oder Wiederherstellungsprozesses der ausgefallenen Speichervorrichtung in Fällen eines teilweisen Datenverlusts in der ausgefallenen Speichervorrichtung, indem der Datenrekonstruktionsprozess speziell für den ausgefallenen Medienabschnitt durchgeführt wird. In diesen Fällen ist die Verschlechterung der Systemleistung möglicherweise nur proportional zu der tatsächlich verlorenen Datenmenge und nicht zu allen Daten der ausgefallenen Speichervorrichtung.
  • Die vorliegende Offenbarung schließt, ohne darauf beschränkt zu sein, die folgenden Gesichtspunkte ein:
  • Gemäß einem innovativen Gesichtspunkt ein Verfahren, das als Reaktion auf ein Erkennen einer ausgefallenen Speichervorrichtung in einem Speichersystem das Lokalisieren von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speichersystem zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; das Ausgeben eines oder mehrerer Peer-to-Peer-Befehle an das eine oder die mehreren funktionierenden Speichervorrichtungen, um die Daten und die Redundanzinformationen von dem einen oder den mehreren funktionierenden Speichervorrichtungen zu erhalten; und das Rekonstruieren der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von der einen oder den mehreren funktionierenden Speichervorrichtungen erhalten wurden, einschließt, wobei eine funktionierende Rechenressource der ausgefallenen Rechenvorrichtung mindestens teilweise eines oder mehrere von Lokalisieren, Ausgeben und Rekonstruieren durchführt.
  • Gemäß einem weiteren innovativen Gesichtspunkt ein Gerät, das einen oder mehrere Prozessoren; und eine Logik einschließt, die von einem oder mehreren Prozessoren ausführbar ist, die dafür eingerichtet sind, Operationen durchzuführen, die einschließen: als Reaktion auf ein Erkennen einer ausgefallenen Speichervorrichtung in einem Speichersystem, Lokalisieren von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speichersystem zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; Ausgeben eines oder mehrerer Peer-to-Peer-Befehle an die eine oder die mehreren funktionierenden Speichervorrichtungen, um die Daten und die Redundanzinformationen von dem einen oder den mehreren funktionierenden Speichervorrichtungen zu erhalten; und das Rekonstruieren der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von der einen oder den mehreren funktionierenden Speichervorrichtungen erhalten wurden, einschließt, wobei eine funktionierende Rechenressource der ausgefallenen Rechenvorrichtung mindestens teilweise eines oder mehrere von Lokalisieren, Ausgeben und Rekonstruieren durchführt.
  • Gemäß noch einem weiteren innovativen Gesichtspunkt ein Gerät, das einen oder mehrere Prozessoren; und ein Speicherarray einschließt, das mit der Steuerung gekoppelt ist, wobei das Speicherarray eine Vielzahl von Speichervorrichtungen einschließt, wobei die Steuerung und das Speicherarray dafür eingerichtet sind, Operationen durchzuführen, die einschließen: Erkennen einer ausgefallenen Speichervorrichtung in dem Speicherarray durch die Steuerung; Lokalisieren, durch die ausgefallene Speichervorrichtung, von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speicherarray zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; Ausgeben, durch die ausgefallene Speichervorrichtung, eines oder mehrerer Peer-to-Peer-Befehle an das eine oder die mehreren funktionierenden Speichervorrichtungen, um die Daten und die Redundanzinformationen von dem einen oder den mehreren funktionierenden Speichervorrichtungen zu erhalten; Rekonstruieren, durch die ausgefallene Speichervorrichtung, der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von dem einen oder den mehreren funktionierenden Speichervorrichtungen erhalten wurden; und Schreiben, durch die Steuerung, der rekonstruierten Daten der ausgefallenen Speichervorrichtung an einen oder mehrere verfügbare Orte in dem Speicherarray.
  • Diese und andere Implementierungen können jeweils optional eines oder mehrere der folgenden Merkmale einschließen: dass das Verfahren oder die Operationen ferner das Schreiben der rekonstruierten Daten der ausgefallenen Speichervorrichtung an einen oder mehrere verfügbare Orte in dem Speichersystem einschließen; dass die funktionierende Rechenressource der ausgefallenen Speichervorrichtung eine Vorrichtungssteuerung ist; dass der eine oder die mehreren Peer-to-Peer-Befehle einen Lesebefehl einschließen, der von der ausgefallenen Speichervorrichtung ausgegeben und ausgeführt wird; dass das Verfahren ferner das Definieren eines Streifens in dem Speichersystem einschließt, wobei der Streifen den Daten der ausgefallenen Speichervorrichtung und den Daten und den Redundanzinformationen in dem einen oder den mehreren funktionierenden Speichervorrichtungen zugeordnet ist; dass das Verfahren oder die Operationen ferner das Identifizieren eines Medienabschnitts der ausgefallenen Speichervorrichtung mit wiederherstellbaren Daten und das Kopieren der wiederherstellbaren Daten von einem ersten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung an einen zweiten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung einschließen; und dass der Medienabschnitt der ausgefallenen Speichervorrichtung eine Speicherzelle ist.
  • Andere Implementierungen eines oder mehrerer dieser Gesichtspunkte schließen entsprechende Systeme, Geräte und Computerprogramme ein, die dafür eingerichtet sind, 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 Speichersystems gemäß einer Ausführungsform dar.
    • 2 stellt ein Blockdiagramm einer beispielhaften Systemsteuerung für das in 1 gezeigte Speichersystem gemäß einer Ausführungsform dar.
    • 3 stellt ein Blockdiagramm einer beispielhaften Vorrichtungssteuerung für das in 1 gezeigte Speichersystem gemäß einer Ausführungsform dar.
    • 4 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Rekonstruieren von Daten einer ausgefallenen Speichervorrichtung unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung über Peer-to-Peer-Kommunikation für das in 1 gezeigte Speichersystem gemäß einer Ausführungsform dar.
    • 5 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Wiederherstellen einer ausgefallenen Speichervorrichtung unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung über Peer-to-Peer-Kommunikation für das in 1 gezeigte Speichersystem gemäß einer Ausführungsform dar.
    • 6 stellt ein Blockdiagramm eines beispielhaften Speicherarrays für das in 1 gezeigte Speichersystem gemäß einer Ausführungsform dar.
    • 7 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Wiederherstellen einer ausgefallenen Speichervorrichtung unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung über Peer-to-Peer-Kommunikation für das in 6 gezeigte Speicherarray gemäß einer Ausführungsform dar.
    • 8 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Durchführen einer Datenverwaltungsanforderung (z. B. Leseanforderung) gemäß einem Datenverwaltungsschema einer verteilten globalen Flash-Übersetzungsschicht (Flash Translation Layer, FTL) für das in 1 gezeigte Rechensystem gemäß einer Ausführungsform dar.
  • DETAILLIERTE BESCHREIBUNG
  • Neuartige Datenverarbeitungstechnologien wie Systeme, Vorrichtungen und Verfahren zum Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung, ohne darauf beschränkt zu sein, werden 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 Speichersystems 110 gemäß einer Ausführungsform dar.
  • Der Host 101 kann eines oder mehrere von 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 Speichersystem 110 zu stellen. 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), ein Switched-Fabric-Netzwerk, ein drahtgebundenes oder drahtloses Netzwerk, ein privates oder öffentliches Netzwerk usw. kommunikativ mit dem Speichersystem 110 gekoppelt sein.
  • Der Host 101 kann eine oder mehrere Anwendungen ausführen, die Speicheranforderungen (z. B. Lesen, Schreiben usw.) an das Speichersystem 110 stellen. 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 Speichersystem 110 kann eine Systemsteuerung 120 und ein Speicherarray 130 aufweisen, die mit der Systemsteuerung über ein Transportmedium wie eine interne Struktur basierend auf Ethernet, InfiniBand, PCI Express (PCle), NVM Express Over Fabric (NVMeOF) usw. gekoppelt sind. Wie unter Bezugnahme auf 2 unten ausführlicher beschrieben, kann die Systemsteuerung 120 eine oder mehrere Computervorrichtungen und/oder Software (in der vorliegenden Offenbarung zusammen als „Logik“ bezeichnet) aufweisen, die zum Verwalten des Betriebs und zum Bereitstellen einer externen Schnittstelle (z. B. zur Kommunikation mit dem Host 101) des Speicherarrays 130 eingerichtet sind. Zum Beispiel kann die Systemsteuerung 120 verschiedene Operationen auf Speichervorrichtungen des Speicherarrays 130 einschließlich Datenredundanz und/oder -wiederherstellung, Speichervorrichtungswiederherstellung und/oder automatische Speicherbereinigung koordinieren und durchführen. Außerdem kann die Systemsteuerung 120 bei einigen Ausführungsformen Kommunikationen zwischen dem Host 101 und dem Speicherarray 130 koordinieren, einschließlich Weiterleiten von Lese- oder Schreibanforderungen von dem Host 101 an die entsprechende Speichervorrichtung (einschließlich Durchführen einer erforderlichen Adressübersetzung, wie weiter unten beschrieben) und Abrufen von Daten von den Speichervorrichtungen auf logische Weise (z. B. können Segmente in einen Streifen assembliert werden), bevor sie an den Host 101 zurückgegeben werden. Bei einigen Ausführungsformen kann die Systemsteuerung 120 eine Non-Volatile Memory Express-Steuerung (NVMe-Steuerung) sein.
  • Bei 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 dem Speicherarray 130 beim Durchführen des Datenkonstruktions- und/oder Wiederherstellungsprozesses für eine ausgefallene Speichervorrichtung koordinieren, wie unten unter Bezugnahme auf 4, 5 und 7 beschrieben. Die Systemsteuerung 120 kann diese Aktionen in Verbindung mit dem Datenrekonstruktions- und/oder Wiederherstellungsprozess durchführen und koordinieren, zum Beispiel unter Verwendung eines Datenverwaltungsschemas einer verteilten globalen Flash-Übersetzungsschicht (Flash Translation Layer, FTL), wie weiter unten unter Bezugnahme auf 8 beschrieben. Bei 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, ... , 140n integriert sein.
  • Das Speicherarray 130 kann eine Vielzahl von Speichervorrichtungen 140a, 140b, ... , 140n aufweise (jede Speichereinheit wird im Folgenden allgemein einzeln als Speichereinheit 140 bezeichnet), von denen jede eine flüchtige oder nichtflüchtige nicht-transitorische Speichervorrichtung mit geeigneten Eigenschaften wie Flash-Speicher (z. B. Solid-State-Laufwerk (SSD)), persistenter Speicher (PM) und/oder Festplattenmedien einschließlich SMR-Platten (Shiedled Magnetic Recording), hybride Speichervorrichtungen usw. aufweisen kann. Die Speichervorrichtungen 140a, 140b, ... , 140n in dem Speicherarray 130 können kommunikativ miteinander durch ein Transportmedium wie ein internes Gewebe auf Basis von Ethernet, InfiniBand, PCle, NVMeOF usw. 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. Bei einigen Ausführungsformen, wie unten unter Bezugnahme auf 4, 5 und 7 beschrieben, können diese Operationen ein Durchführen von Peer-to-Peer-Kommunikation (z. B. Datenübertragungen) mit anderen Speichervorrichtungen in dem Speicherarray 130 einschließen.
  • Das Speichermedium 143 kann eines oder mehrere flüchtige oder nicht-flüchtige Speichermedien umfassen, die einen oder mehrere Medienabschnitte 144 mit physischen oder logischen Abschnitten des Speichermediums zum Speichern von Daten wie Chips, Platten, Speicherzellen, Sektoren und/oder Seiten einschließen. Bei einigen Ausführungsformen können Daten im Speichermedium 143 jeder Speichervorrichtung 140 in Form von Segmenten organisiert sein, von denen jedes Segment aus einem oder mehreren Blöcken zusammengesetzt sein kann. Ferner können die Segmente in die Speichervorrichtungen 140a, 140b, ... , 140n in dem Speicherarray 130 in Form von Streifen unter Verwendung eines geeigneten Datenstrukturierungsverfahrens wie Log-Strukturierung geschrieben werden. Dies wird unten unter Bezugnahme auf 6 detaillierter gezeigt und beschrieben.
  • Wie weiter unten unter Bezugnahme auf 4, 5, und 7 erörtert, kann das Speichersystem 110 unter Verwendung eines geeigneten Redundanzschemas wie RAID- oder Löschcodierung dafür eingerichtet sein, dass bei Ausfall eines oder mehrerer der Speichervorrichtungen 140a, 140b, ... , 140n (nachfolgend als ausgefallene Speichervorrichtung 140' bezeichnet) ein Datenrekonstruktions- und/oder Wiederherstellungsprozess wie unten beschrieben durchgeführt werden kann, um die Daten von der oder den ausgefallenen Speichervorrichtungen wiederherzustellen.
  • In der vorliegenden Offenbarung kann sich eine „ausgefallene Speichervorrichtung“ auf jede Speichervorrichtung in dem Speicherarray beziehen, die in irgendeiner Hinsicht nicht richtig funktioniert, 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 Speicherarray, außer der ausgefallenen Speichervorrichtung, können als „funktionierende Speichervorrichtungen“ bezeichnet werden.
  • 2 stellt ein Blockdiagramm einer beispielhaften Systemsteuerung 120 für das in 1 gezeigte Speichersystem 110 gemäß einer Ausführungsform dar. Wie bereits erwähnt, kann die Systemsteuerung 120 verwendet werden, um den Betrieb des Speicherarrays 130 zu verwalten und eine externe Schnittstelle zu diesem (z. B. zur Kommunikation mit dem Host 101) bereitzustellen. Die Systemsteuerung 120 kann ihre Aktionen mit den Aktionen der anderen Komponenten in dem Rechensystem 100 wie dem Host 101 und/oder dem Speicherarray 130 beim Durchführen des Datenrekonstruktions- und/oder Wiederherstellungsprozesses für eine ausgefallene Speichervorrichtung koordinieren, wie unten unter Bezugnahme auf 4, 5 und 7 beschrieben, zum Beispiel unter Verwendung des verteilten globalen FTL-Datenverwaltungsschemas, wie unter Bezugnahme auf 8 beschrieben.
  • 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 Schnittstellen 205 können die Systemsteuerung 120 kommunikativ mit dem Host 101 und/oder dem Speicherarray 130 koppeln. Die eine oder die mehreren Schnittstellen 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 dem Speicherarray 130 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), nichtflü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 Speicherverwaltungsoperationen für das Speicherarray 130 einschließlich Operationen im Zusammenhang mit Adressübersetzung, Datenwiederherstellung und -rekonstruktion, Speichervorrichtungswiederherstellung und/oder automatischer Speicherbereinigung durchführen können.
  • Bei einigen Ausführungsformen kann die Speicherverwaltungs-Engine 222 eine Adressabbildung 225 mit Adressinformationen einschließen, die von der Speicherverwaltungs-Engine 222 verwendet werden, um logische Adressen oder Namensräume, die in Verbindung mit Lese- oder Schreibanforderungen des Hosts 101 empfangen werden, in physische Adressen für den Zugriff auf Speichervorrichtungen in dem Speicherarray 130 zu übersetzen, wie unten unter Bezugnahme auf 4, 5 und 7 beschrieben. Bei einigen Ausführungsformen kann die Speicherverwaltungs-Engine 222 eine Streifenabbildung 227 einschließen, die in Verbindung mit dem Schreiben oder Lesen von Daten auf einen Streifen in dem Speicherarray 130 verwendet wird, wie nachfolgend unter Bezugnahme auf 7 beschrieben.
  • Bei einigen Ausführungsformen können eines oder mehrere Hardwarelogikmodule 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, Adressabbildung 225 und/oder Streifenabbildung 227 bereitgestellt werden.
  • 3 stellt ein Blockdiagramm einer beispielhaften Vorrichtungssteuerung 142 für das in 1 gezeigte 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 Schnittstellen 305, einen Prozessor 310, einen Speicher 320 mit Software, Firmware und/oder Daten einschließlich einer Medienverwaltungs-Engine 322, Redundanzcodierungs-Paritäts-Engine 323 und einer Peer-to-Peer-Datenübertragungs-Engine 324 umfassen. 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 Schnittstellen 305 können die Vorrichtungssteuerung 142 kommunikativ mit der Systemsteuerung 120 und/oder den Speichervorrichtungen in dem Speicherarray 130 koppeln. Die eine oder die mehreren Schnittstellen 305 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 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 (ASICs) oder feldprogrammierbare 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 (CISC), einer Architektur für Computer mit reduziertem Anweisungssatz (RISC) oder einer Architektur, die eine Kombination von Anweisungssätzen implementiert. Es versteht sich, dass andere Konfigurationen des Prozessors 310 möglich sind.
  • 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), nichtflü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 Speicherverwaltungsoperationen für das Speichermedium 143 einschließlich Operationen im Zusammenhang mit Datenwiederherstellung und -rekonstruktion und automatischer Speicherbereinigung auf Vorrichtungsebene durchführen können.
  • Die in Speicher 320 enthaltene Redundanzcodierungs-Paritäts-Engine 323 kann Routinen und/oder Befehle einschließen, die bei Ausführung durch den Prozessor 310 eine oder mehrere Datenredundanzoperationen einschließlich des Erzeugens und Speicherns von Redundanzinformationen (z. B. Paritätsblöcke) für das Speichermedium 143 durchführen können.
  • Die im Speicher 320 enthaltene Peer-to-Peer-Datenübertragungs-Engine 324 kann Routinen und/oder Befehle einschließen, die bei Ausführung durch den Prozessor 310 eine oder mehrere Aktionen zum Durchführen von Peer-to-Peer-Kommunikation mit anderen Speichervorrichtungen in dem Speicherarray 130 ausführen können wie Ausgeben und Ausführen von Peer-to-Peer-Befehlen und Übertragen von Daten zu oder von den anderen Speichervorrichtungen, wie nachfolgend unter Bezugnahme auf 4, 5 und 7 beschrieben. Die Peer-to-Peer-Datenübertragungs-Engine 324 kann die Peer-to-Peer-Kommunikation auf verschiedene Weise durchführen. Zum Beispiel kann die Peer-to-Peer-Datenübertragungs-Engine 324 bei einigen Ausführungsformen im Vollinitiatormodus arbeiten, so dass eine Speichervorrichtung eine Verbindung herstellen, Befehle erzeugen und die Befehle an andere Speichervorrichtungen senden kann. Bei 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 aus dem gemeinsamen Speicherbereich an eine Zielspeichervorrichtung unter Verwendung von direktem Speicherzugriff (Direct Memory Access, DMA) einleiten.
  • Bei einigen Ausführungsformen können eines oder mehrere Hardwarelogikmodule 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, Redundanzcodierungs-Paritäts-Engine 323 und/oder Peer-to-Peer-Datenübertragungs-Engine 324 bereitgestellt werden.
  • 4 stellt ein Flussdiagramm eines beispielhaften Verfahrens 400 zum Rekonstruieren von Daten einer ausgefallenen Speichervorrichtung 140' unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung über Peer-to-Peer-Kommunikation (z. B. Datenübertragungen) für das in 1 gezeigte Speichersystem 110 gemäß einer Ausführungsform dar. Das Datenrekonstruktionsverfahren aus 4 kann zum Beispiel bei einem teilweisen Medienausfall einer Speichervorrichtung 140 durchgeführt werden. Es sei darauf hingewiesen, dass Block 430 und 440 in diesem Beispiel mindestens teilweise von einer funktionierenden Rechenressource (z. B. der Vorrichtungssteuerung 142) der ausgefallenen Speichervorrichtung 140' ausgeführt werden können. Die in 4 gezeigten verbleibenden Blöcke können zum Beispiel von einem oder mehreren von einer Speichervorrichtung 140 (einschließlich der ausgefallenen Speichervorrichtung 140') in dem Speichersystem 110, der Systemsteuerung 120 und dem Host 101 oder einer Kombination davon gemäß dem verteilten globalen FTL-Datenverwaltungsschema durchgeführt werden, wie nachfolgend unter Bezugnahme auf 8 beschrieben.
  • In Block 405 kann eine Leseanforderung oder ein anderer Befehl vom Host 101 empfangen werden. Block 405 kann während des normalen Betriebs des Speichersystems 110 auftreten.
  • In Block 410 kann ein Medienfehler einschließlich verlorener Daten in der ausgefallenen Speichervorrichtung 140' als Reaktion auf das Empfangen der Leseanforderung erkannt werden. Bei der vorliegenden Offenlegung können verlorene Daten als Daten betrachtet werden, die aufgrund eines Ausfalls eines oder mehrerer Medienabschnitte 144 des Speichermediums 143 nicht ordnungsgemäß aus der Speichervorrichtung gelesen werden können, und umgekehrt können wiederherstellbare Daten als Daten betrachtet werden, die ordnungsgemäß aus der Speichervorrichtung gelesen werden können.
  • Bei einigen Ausführungsformen kann Block 410 bei einem teilweisen Medienausfall das Identifizieren eines Medienabschnitts 144 des Speichermediums 143 in der ausgefallenen Speichervorrichtung 140', der ausgefallen ist (nachfolgend als ausgefallener Medienabschnitt 144' bezeichnet), der die verlorenen Daten enthält, und eines Medienabschnitts der ausgefallenen Speichervorrichtung, der nicht ausgefallen ist (nachfolgend als funktionierender Medienabschnitt 144" bezeichnet), der wiederherstellbare Daten enthält, einschließen. Bei einigen Ausführungsformen kann jeder Medienabschnitt 144 einen oder mehrere physische oder logische Abschnitte des Speichermediums 143 in der jeweiligen Speichervorrichtung 140 zum Speichern von Daten wie Chips, Platten, Speicherzellen, Sektoren und/oder Seiten aufweisen.
  • In Block 420 können sich Daten und Redundanzinformationen in einem oder mehreren der Speichervorrichtungen 140a, 140b, ... , 140n in dem Speichersystem 110 befinden, die nicht ausgefallen sind (nachfolgend als funktionierende Speichervorrichtungen 140" bezeichnet), um die verlorenen Daten der ausgefallenen Speichervorrichtung 140' zu rekonstruieren. Bei einigen Ausführungsformen können sich die Daten und die Redundanzinformationen in der einen oder den mehreren funktionierenden Speichervorrichtungen 140" befinden, wobei das verteilte globale FTL-Datenverwaltungsschema verwendet wird, wie unten unter Bezugnahme auf 8 beschrieben.
  • In Block 430 kann die ausgefallene Speichervorrichtung 140" in dem Speichersystem 110 einen oder mehrere Peer-to-Peer-Befehle an das eine oder die mehreren funktionierenden Speichervorrichtungen 140" in dem Speichersystem 110 ausgeben, um die Daten und die Redundanzinformationen von der oder den funktionierenden Speichervorrichtungen zu erhalten. Bei einigen Ausführungsformen kann der Peer-to-Peer-Befehl ein Lesebefehl sein. Bei einigen Ausführungsformen kann der Peer-to-Peer-Befehl von der Peer-to-Peer-Datenübertragungs-Engine 324 in der Vorrichtungssteuerung 142 der jeweiligen Speichervorrichtung ausgegeben und ausgeführt werden.
  • In Block 440 kann die ausgefallene Speichervorrichtung 140' in dem Speichersystem 110 die verlorenen Daten der ausgefallenen Speichervorrichtung 140' auf Basis der Daten und der Redundanzinformationen rekonstruieren, die von der einen oder den mehreren funktionierenden Speichervorrichtungen 140" in dem Speichersystem erhalten wurden 110. Bei einigen Ausführungsformen können die verlorenen Daten der ausgefallenen Speichervorrichtung durch die Medienverwaltungs-Engine 322 in der Vorrichtungssteuerung 142, wie oben unter Bezugnahme auf 3 beschrieben, der Speichervorrichtung rekonstruiert werden. Bei einigen Ausführungsformen können die verlorenen Daten rekonstruiert werden, indem eine oder mehrere XOR- oder GF-Operationen durchgeführt werden, die für die Daten und die Redundanzinformationen angemessen sind, wie im Stand der Technik bekannt.
  • In Block 450 können die rekonstruierten verlorenen Daten der ausgefallenen Speichervorrichtung 140' an den Host 101 zurückgesendet werden, z. B. als Reaktion auf die Leseanforderung von dem Host. Bei einigen Ausführungsformen kann Block 450 gemäß dem verteilten globalen FTL-Datenverwaltungsschema ausgeführt werden, wie nachfolgend unter Bezugnahme auf 8 beschrieben.
  • In Block 460 kann das Vorhandensein eines oder mehrerer verfügbarer Speicherorte in dem Speichersystem 110 bestimmt werden. Falls bestimmt wird, dass ein verfügbarer Speicherort vorhanden ist, kann das Verfahren mit Block 470 fortgesetzt werden. Falls nicht, kann die Datenrekonstruktion an diesem Punkt enden, da kein verfügbarer Speicherort zum Speichern der rekonstruierten verlorenen Daten vorhanden ist. Bei einigen Ausführungsformen können die verfügbaren Orte verfügbarer freier Speicherplatz in dem Speicherarray 630 sein.
  • In Block 470 können die rekonstruierten verlorenen Daten der ausgefallenen Speichervorrichtung 140' an den einen oder die mehreren verfügbaren Speicherorte in dem Speichersystem 110 geschrieben werden, die in Block 460 identifiziert wurden. Bei einigen Ausführungsformen können sich die verfügbaren Speicherorte, in welche die rekonstruierten verlorenen Daten geschrieben werden, in der ausgefallenen Speichervorrichtung 140' und/oder der funktionierenden Speichervorrichtung 140" in dem Speichersystem 110 befinden. Bei einigen Ausführungsformen kann Block 470 gemäß dem verteilten globalen FTL-Datenverwaltungsschema ausgeführt werden, wie nachfolgend unter Bezugnahme auf 8 beschrieben.
  • Bei einigen Ausführungsformen kann Block 470 bei einem teilweisen Medienausfall das Kopieren der in Block 410 identifizierten wiederherstellbaren Daten von einem ersten Ort in dem funktionierenden Medienabschnitt 144" der ausgefallenen Speichervorrichtung 140" an einen zweiten Ort in dem funktionierenden Medienabschnitt der ausgefallenen Speichervorrichtung einschließen. Bei einigen Ausführungsformen kann das Kopieren durch die ausgefallene Speichervorrichtung erfolgen, die einen XCOPY-Befehl ausgibt.
  • 5 stellt ein Flussdiagramm eines beispielhaften Verfahrens 500 zum Wiederherstellen einer ausgefallenen Speichervorrichtung 140' unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung über Peer-to-Peer-Kommunikation für das in 1 gezeigte Speichersystem 110 gemäß einer Ausführungsform dar. Die Blöcke in dem Verfahren 500 können iterativ durchgeführt werden, zum Beispiel für jeden Streifen in dem Speicherarray 130, bis der Inhalt der ausgefallenen Speichervorrichtung 140' wiederhergestellt ist. Es sei darauf hingewiesen, dass Block 530 und 540 in diesem Beispiel mindestens teilweise von einer funktionierenden Rechenressource (z. B. der Vorrichtungssteuerung 142) der ausgefallenen Speichervorrichtung 140' durchgeführt werden können. Die in 5 gezeigten restlichen Blöcke können zum Beispiel von einem oder mehreren von einer Speichervorrichtung 140 (einschließlich der ausgefallenen Speichervorrichtung 140') in dem Speichersystem 110, der Systemsteuerung 120 und dem Host 101 oder einer Kombination davon gemäß dem verteilten globalen FTL-Datenverwaltungsschema ausgeführt werden, wie nachfolgend unter Bezugnahme auf 8 beschrieben.
  • In Block 510 kann ein Medienausfall in der ausgefallenen Speichervorrichtung 140' erkannt werden. Bei einigen Ausführungsformen kann Block 510 als Reaktion auf eine Leseanforderung oder einen anderen Befehl durchgeführt werden, der von der Systemsteuerung 120 bei normalem Betrieb des Speichersystems 110 empfangen wird.
  • In Block 515 kann ein zu rekonstruierender Abschnitt (z. B. ein oder mehrere Blöcke eines Streifens in dem Speicherarray 130) der ausgefallenen Speichervorrichtung 140' identifiziert werden.
  • In Block 520 können sich Daten und Redundanzinformationen in einer oder mehreren der funktionierenden Speichervorrichtungen 140" in dem Speichersystem 110 befinden, um Daten des identifizierten Abschnitts der ausgefallenen Speichervorrichtung 140' zu rekonstruieren.
  • In Block 530 kann die ausgefallene Speichervorrichtung 140" in dem Speichersystem 110 einen oder mehrere Peer-to-Peer-Befehle an das eine oder die mehreren funktionierenden Speichervorrichtungen 140" in dem Speichersystem 110 ausgeben, um die Daten und die Redundanzinformationen von der oder den funktionierenden Speichervorrichtungen zu erhalten. Bei einigen Ausführungsformen kann der Peer-to-Peer-Befehl ein Lesebefehl sein. Bei einigen Ausführungsformen kann der Peer-to-Peer-Befehl von der Peer-to-Peer-Datenübertragungs-Engine 324 in der Vorrichtungssteuerung 142 der jeweiligen Speichervorrichtung ausgegeben und ausgeführt werden.
  • In Block 540 kann die ausgefallene Speichervorrichtung 140' in dem Speichersystem 110 die Daten des identifizierten Abschnitts der ausgefallenen Speichervorrichtung 140' auf Basis der Daten und der Redundanzinformationen rekonstruieren, die von der einen oder den mehreren funktionierenden Speichervorrichtungen 140" in dem Speichersystem erhalten wurden 110. Bei einigen Ausführungsformen können die verlorenen Daten der ausgefallenen Speichervorrichtung durch die Medienverwaltungs-Engine 322 in der Vorrichtungssteuerung 142, wie oben unter Bezugnahme auf 3 beschrieben, der Speichervorrichtung rekonstruiert werden. Bei einigen Ausführungsformen können die verlorenen Daten rekonstruiert werden, indem eine oder mehrere XOR- oder GF-Operationen durchgeführt werden, die für die Daten und die Redundanzinformationen geeignet sind, wie aus dem Stand der Technik bekannt.
  • In Block 550 können die rekonstruierten Daten des identifizierten Abschnitts der ausgefallenen Speichervorrichtung 140' an einen oder mehrere verfügbare Speicherorte in dem Speichersystem 110 geschrieben werden. Bei einigen Ausführungsformen können sich die verfügbaren Speicherorte, an welche die rekonstruierten verlorenen Daten geschrieben werden, in der ausgefallenen Speichervorrichtung 140' und/oder den funktionierenden Speichervorrichtung 140" in dem Speichersystem 110 befinden.
  • In Block 560 wird bestimmt, ob alle Abschnitte der ausgefallenen Speichervorrichtung 140' rekonstruiert wurden. Falls dies der Fall ist, ist der Wiederherstellungsprozess abgeschlossen und kann enden. Doch falls dies nicht der Fall ist, können die Blöcke 515 bis 550 iterativ wiederholt werden, wie gerade für die übrigen Abschnitte der ausgefallenen Speichervorrichtung 140' beschrieben, bis der Inhalt der ausgefallenen Speichervorrichtung wiederhergestellt ist.
  • 6 stellt ein Blockdiagramm eines beispielhaften Speicherarrays 630 für das in 1 gezeigte Speichersystem 110 gemäß einer Ausführungsform dar. Das Speicherarray 630 ist eine Ausführungsform des in 1 gezeigten Speicherarrays 130 mit vier Solid-State-Laufwerken (SSDs) 640a, 640b, 640c und 640d (nachfolgend jeweils auch als SSD1, SSD2, SSD3 und SSD4 bezeichnet) in einer 3+1-Konfiguration. Obwohl das Speichersystem 110 in 6 zur leichteren Veranschaulichung mit vier SSDs dargestellt ist, sei darauf hingewiesen, dass das Speichersystem in anderen Ausführungsformen auch andere Arten von Speichervorrichtungen wie Festplattenmedien oder hybride Speichervorrichtungen in jeder geeigneten Menge einsetzen kann.
  • Wie in der Figur gezeigt, können SSD1, SSD2, SSD3 und SSD4 in dem Speicherarray 630 jeweils eine Vielzahl von Segmenten 650 enthalten, wobei das Segment einen oder mehrere Blöcke 655 einschließen kann. Die Vielzahl von Segmenten 650, die in dem Speicherarray 630 enthalten ist, kann in einem oder mehreren Streifen 660 organisiert sein.
  • Der Streifen 660 kann eine Kombination von einem oder mehreren Datensegmenten und einem oder mehreren Fehlerkorrektursegmenten (z. B. Paritätssegmenten) aufweisen, wie für das in dem Speicherarray 630 verwendete Datenredundanzschema angemessen. Wie in 6 gezeigt, schließt der Streifen 660 vier Segmente 650 ein, von denen drei Segmente (mit „D1“, „D2“ und „D3“ angegebene) Daten enthalten und ein Segment (mit „P“ angegebene) Paritätsinformationen enthält. Die Daten D1, D2 und D3 können unter Verwendung einer geeigneten Datenstrukturierungsmethode wie Log-Strukturierung in den Streifen 660 geschrieben werden. Bei einer Log-strukturierten Datenorganisation können wahlfreie Datenschreibvorgänge zusammen gruppiert und nacheinander in den Streifen 660 geschrieben werden.
  • Bei dem nachfolgend unter Bezugnahme auf 7 beschriebenen Verfahren zum Wiederherstellen einer ausgefallenen Speichervorrichtung entspricht SSD2 der „ausgefallenen Speichervorrichtung“ und entsprechend SSD1, SSD3 und SSD4 den „funktionierenden Speichervorrichtungen“.
  • 7 stellt ein Flussdiagramm eines beispielhaften Verfahrens 700 zum Wiederherstellen der ausgefallenen Speichervorrichtung SSD2 unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung über Peer-to-Peer-Kommunikation für das in 6 gezeigte Speicherarray 630 gemäß einer Ausführungsform dar. Es sei darauf hingewiesen, dass das in 7 veranschaulichte Verfahren dem oben unter Bezugnahme auf 5 beschriebenen Verfahren entspricht, wie auf das Speicherarray 630 angewendet. Die Blöcke in dem Verfahren 700 können iterativ ausgeführt werden, zum Beispiel für jeden Streifen in dem Speicherarray 630, bis der Inhalt der ausgefallenen Speichervorrichtung SSD2 wiederhergestellt ist. Es sei darauf hingewiesen, dass Block 730 und 740 in diesem Beispiel mindestens teilweise von einer funktionierenden Rechenressource (z. B. Vorrichtungssteuerung 142) der ausgefallenen Speichervorrichtung SSD2 ausgeführt werden können. Die verbleibenden Blöcke in 7 können zum Beispiel von einem oder mehreren von einem SSD (einschließlich der ausgefallenen Speichervorrichtung SSD2) in dem Speicherarray 630, der Systemsteuerung 120 und dem Host 101 oder einer Kombination davon gemäß dem verteilten globalen FTL-Datenverwaltungsschema ausgeführt werden, wie nachfolgend unter Bezugnahme auf 8 beschrieben.
  • In dem in 7 gezeigten Verfahren kann die ausgefallene Speichervorrichtung SSD2 als Initiatorvorrichtung betrachtet werden und können die funktionierenden Speichervorrichtungen SSD1, SSD3 und SSD4 als Zielvorrichtungen betrachtet werden.
  • In Block 710 kann ein Medienausfall in der ausgefallenen Speichervorrichtung SSD2 erkannt werden. Bei einigen Ausführungsformen kann Block 710 als Reaktion auf eine Leseanforderung durchgeführt werden, die von der Systemsteuerung 120 bei normalem Betrieb des Speichersystems 110 empfangen wird.
  • In Block 715 kann ein Datensegment D2 des Streifens 660 in der SSD2 zum Rekonstruieren identifiziert werden.
  • In Block 720 können sich die Datensegmente D1 und D3 und das Paritätssegment P in dem Streifen 660 in funktionierenden Speichervorrichtungen SSD1, SSD3 bzw. SSD4 befinden, um das Datensegment D2 von SSD2 zu rekonstruieren.
  • In Block 730 kann SSD2 einen oder mehrere Peer-to-Peer-Befehle an einen oder mehrere von SSD1, SSD3 und SSD4 ausgeben, um die Datensegmente D1 und D3 und das Paritätssegment P in dem Streifen 660 zu erhalten. Bei einigen Ausführungsformen kann der Peer-to-Peer-Befehl ein Lesebefehl sein. Bei einigen Ausführungsformen kann der Peer-to-Peer-Befehl von der Peer-to-Peer-Datenübertragungs-Engine 324 in der Vorrichtungssteuerung 142 von SSD2 ausgegeben und ausgeführt werden.
  • In Block 740 kann SSD2 das Datensegment D2 von SSD2 auf Basis der Datensegmente D1 und D3 und des Paritätssegments P, die von SSD1, SSD3 bzw. SSD4 erhalten werden, rekonstruieren. Bei einigen Ausführungsformen kann das Datensegment D2 durch die Medienverwaltungs-Engine 322 in der Vorrichtungssteuerung 142, wie oben unter Bezugnahme auf 3 beschrieben, von SSD2 rekonstruiert werden. Bei einigen Ausführungsformen kann das Datensegment D2 rekonstruiert werden, indem eine oder mehrere XOR- oder GF-Operationen durchgeführt werden, die für die Datensegmente D1 und D3 und das Paritätssegment P angemessen sind, wie aus dem Stand der Technik bekannt.
  • In Block 750 kann das rekonstruierte Datensegment D2 von SSD2 in einen oder mehrere verfügbare Speicherorte in dem Speicherarray 630 geschrieben werden. Bei einigen Ausführungsformen können sich der oder die verfügbaren Speicherorte, in welche die rekonstruierten Datensegmente D2 geschrieben werden, in der ausgefallenen Speichervorrichtung SSD2 und/oder den funktionierenden Speichervorrichtungen SSD1, SSD3 und SSD4 befinden.
  • In Block 760 wird bestimmt, ob alle Abschnitte der ausgefallenen Speichervorrichtung SSD2 rekonstruiert wurden. Falls dies der Fall ist, ist der Wiederherstellungsprozess abgeschlossen und kann enden. Doch falls dies nicht der Fall ist, können Block 715 bis 750 iterativ wiederholt werden, wie gerade für die übrigen Abschnitte von SSD2 beschrieben, bis der Inhalt von SSD2 wiederhergestellt ist.
  • 8 stellt ein Flussdiagramm eines beispielhaften Verfahrens 800 zum Durchführen einer Datenverwaltungsanforderung (z. B. Leseanforderung) gemäß einem Datenverwaltungsschema einer verteilten globalen Flash-Übersetzungsschicht (FTL) für das in 1 gezeigte Rechensystem 100 gemäß einer Ausführungsform dar. In dem in 8 gezeigten Beispiel werden die meisten der Blöcke in dem Verfahren 800 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. Host 101 oder Speichervorrichtung 140) in dem Speichersystem 110 durchgeführt werden können.
  • In Block 810 kann die Systemsteuerung 120 eine Datenverwaltungsanforderung (z. B. Leseanforderung) von dem Host 101 empfangen.
  • In Block 820 kann die Systemsteuerung 120 (z.B. unter Verwendung der Speicherverwaltungs-Engine 222) auf Basis der Datenverwaltungsanforderung eine oder mehrere Speichervorrichtungen 140 in dem Speichersystem 110 und eine oder mehrere Datenverwaltungsoperationen, die von der einen oder den mehreren Speichervorrichtungen 140 durchzuführen sind, 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 830 kann die Systemsteuerung 120 die Durchführung einer oder mehrerer Datenverwaltungsoperationen entsprechend der Datenverwaltungsanforderung einleiten. Bei einigen Ausführungsformen schließt Block 830 das Senden eines oder mehrerer Datenverwaltungsbefehle an die eine oder die mehreren Speichervorrichtungen 140 und das Einleiten einer oder mehrerer Datenübertragungen (entweder vor oder nach dem Senden des einen oder der 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 840 bestimmt die Systemsteuerung 120 im Fall einer Leseanforderung auf Basis der Adressabbildung 225 einen Satz von Blöcken, die sich in einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110, das die angeforderten Daten enthält, befinden. Bei einigen Ausführungsformen ordnet die Adressabbildung 225 eine oder mehrere globale logische Adressen, die durch die Leseanforderung (empfangen von dem Host 101) identifiziert wurden, einer oder mehreren Speichervorrichtungen 140 in dem Speicherarray 130 und optional einer oder mehreren lokalen logischen Adressen in jeder dieser Speichervorrichtungen zu. 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 850 sendet die Systemsteuerung 120 einen oder mehrere Lesebefehle an die jeweilige Speichervorrichtung 140, um die Leseoperation auf 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 860 reagiert 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 870 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 880 leitet die Systemsteuerung 120 nach dem Empfangen der Fertigstellungsbenachrichtigung eine Datenübertragung unter Verwendung eines DMA-Vorgangs ein, um die Lesedaten an den Host 101, der die Leseanforderung gesendet hat, zu übertragen (z. B. zu senden). Bei einigen Ausführungsformen schließt Block 880 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.
  • Vorteile einer oder mehrerer Ausführungsformen der Verfahren zum Rekonstruieren von Daten und Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung, wie oben beschrieben, schließen, ohne darauf beschränkt zu sein, eines oder mehrere von Folgenden ein:
    • (1) Verbesserte Systemleistung während (und kürzere erforderliche Zeit zum Abschließen) des Datenrekonstruktions- und/oder Wiederherstellungsprozesses durch die Verwendung funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung. Dies basiert auf der Tatsache, dass die Vorrichtungssteuerung der ausgefallenen Speichervorrichtung nach einem Medienausfall möglicherweise inaktiv ist.
    • (2) Verbesserte Systemleistung während (und kürzere erforderliche Zeit zum Abschließen) des Datenrekonstruktions- und/oder Wiederherstellungsprozesses der ausgefallenen Speichervorrichtung unter Berücksichtigung des tatsächlichen Ausfallmechanismus der ausgefallenen Speichervorrichtung. Zum Beispiel erfolgt in Fällen eines teilweisen Datenverlusts in der ausgefallenen Speichervorrichtung der Datenrekonstruktionsprozess speziell für den ausgefallenen Medienabschnitt. Somit ist in diesen Fällen die Verschlechterung der Systemleistung möglicherweise nur proportional zu der tatsächlich verlorenen Datenmenge und nicht zu allen Daten der ausgefallenen Speichervorrichtung.
  • Verfahren und Systeme zum Rekonstruieren von Daten und Wiederherstellen einer ausgefallenen Speichervorrichtung in einem Speichersystem unter Verwendung einer oder mehrerer funktionierender Rechenressourcen und/oder Speicherressourcen der ausgefallenen Speichervorrichtung 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 ein Gerät zum Durchführen der Operationen hierin beziehen. Dieses Gerät kann speziell für die erforderlichen Zwecke konstruiert sein, oder es 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 jedes Gerät sein, welches das Programm zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem, des Gerätes 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 ein anderes Gerät bezogen sein. Verschiedene Universalsysteme können mit Programmen gemäß den Lehren hierin verwendet werden, oder es kann sich als zweckmäßig erweisen, Spezialgeräte 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, umfassend: als Reaktion auf ein Erkennen einer ausgefallenen Speichervorrichtung in einem Speichersystem, Lokalisieren von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speichersystem zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; Ausgeben eines oder mehrerer Peer-to-Peer-Befehle an die eine oder die mehreren funktionierenden Speichervorrichtungen, um die Daten und die Redundanzinformationen von der einen oder den mehreren funktionierenden Speichervorrichtungen zu erhalten; und Rekonstruieren der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von dem einen oder den mehreren funktionierenden Speichervorrichtungen erhalten wurden, wobei eine funktionierende Rechenressource der ausgefallenen Rechenvorrichtung mindestens teilweise eines oder mehrere von Lokalisieren, Ausgeben und Rekonstruieren durchführt.
  2. Computerimplementiertes Verfahren gemäß Anspruch 1, ferner umfassend: Schreiben der rekonstruierten Daten der ausgefallenen Speichervorrichtung an einen oder mehrere verfügbare Orte in dem Speichersystem.
  3. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei die funktionierende Rechenressource der ausgefallenen Speichervorrichtung eine Vorrichtungssteuerung ist.
  4. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei der eine oder die mehreren Peer-to-Peer-Befehle einen Lesebefehl einschließen, der von der ausgefallenen Speichervorrichtung ausgegeben und ausgeführt wird.
  5. Computerimplementiertes Verfahren gemäß Anspruch 1, ferner umfassend: Definieren eines Streifens in dem Speichersystem, wobei der Streifen den Daten der ausgefallenen Speichervorrichtung und den Daten und den Redundanzinformationen in dem einen oder den mehreren funktionierenden Speichervorrichtungen zugeordnet ist.
  6. Computerimplementiertes Verfahren gemäß Anspruch 1, ferner umfassend: Identifizieren eines Medienabschnitts der ausgefallenen Speichervorrichtung, der wiederherstellbare Daten enthält; und Kopieren der wiederherstellbaren Daten von einem ersten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung an einen zweiten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung.
  7. Computerimplementiertes Verfahren gemäß Anspruch 6, wobei der Medienabschnitt der ausgefallenen Speichervorrichtung eine Speicherzelle ist.
  8. Gerät, umfassend: 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 ein Erkennen einer ausgefallenen Speichervorrichtung in einem Speichersystem, Lokalisieren von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speichersystem zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; Ausgeben eines oder mehrerer Peer-to-Peer-Befehle an die eine oder die mehreren funktionierenden Speichervorrichtungen, um die Daten und die Redundanzinformationen von der einen oder den mehreren funktionierenden Speichervorrichtungen zu erhalten; und Rekonstruieren der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von dem einen oder den mehreren funktionierenden Speichervorrichtungen erhalten wurden, wobei eine funktionierende Rechenressource der ausgefallenen Rechenvorrichtung mindestens teilweise eines oder mehrere von Lokalisieren, Ausgeben und Rekonstruieren durchführt.
  9. Gerät gemäß Anspruch 8, wobei die Logik dafür eingerichtet ist, Operationen durchzuführen, ferner umfassend: Schreiben der rekonstruierten Daten der ausgefallenen Speichervorrichtung an einen oder mehrere verfügbare Orte in dem Speichersystem.
  10. Gerät gemäß Anspruch 8, wobei die funktionierende Rechenressource der ausgefallenen Speichervorrichtung eine Vorrichtungssteuerung ist.
  11. Gerät gemäß Anspruch 8, wobei der eine oder die mehreren Peer-to-Peer-Befehle einen Lesebefehl einschließen, der von der ausgefallenen Speichervorrichtung ausgegeben und ausgeführt wird.
  12. Gerät gemäß Anspruch 8, wobei die Logik dafür eingerichtet ist, Operationen durchzuführen, ferner umfassend: Definieren eines Streifens in dem Speichersystem, wobei der Streifen den Daten der ausgefallenen Speichervorrichtung und den Daten und den Redundanzinformationen in dem einen oder den mehreren funktionierenden Speichervorrichtungen zugeordnet ist.
  13. Gerät gemäß Anspruch 8, wobei die Logik dafür eingerichtet ist, Operationen durchzuführen, ferner umfassend: Identifizieren eines Medienabschnitts der ausgefallenen Speichervorrichtung, der wiederherstellbare Daten enthält; und Kopieren der wiederherstellbaren Daten von einem ersten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung an einen zweiten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung.
  14. Gerät gemäß Anspruch 13, wobei der Medienabschnitt der ausgefallenen Speichervorrichtung eine Speicherzelle ist.
  15. Gerät, umfassend: eine Steuerung mit einem oder mehreren Prozessoren; und ein Speicherarray, das mit der Steuerung gekoppelt ist, wobei das Speicherarray eine Vielzahl von Speichervorrichtungen umfasst, wobei die Steuerung und das Speicherarray dafür eingerichtet sind, um Operationen durchzuführen, die umfassen: Erkennen, durch die Steuereinheit, einer ausgefallenen Speichervorrichtung in dem Speicherarray; Lokalisieren, durch die ausgefallene Speichervorrichtung, von Daten und Redundanzinformationen in einer oder mehreren funktionierenden Speichervorrichtungen in dem Speicherarray zum Rekonstruieren von Daten der ausgefallenen Speichervorrichtung; Ausgeben, durch die ausgefallene Speichervorrichtung, eines oder mehrerer Peer-to-Peer-Befehle an das eine oder die mehreren funktionierenden Speichervorrichtungen, um die Daten und die Redundanzinformationen von dem einen oder den mehreren funktionierenden Speichervorrichtungen zu erhalten; Rekonstruieren, durch die ausgefallene Speichervorrichtung, der Daten der ausgefallenen Speichervorrichtung auf Basis der Daten und der Redundanzinformationen, die von dem einen oder den mehreren funktionierenden Speichervorrichtungen erhalten wurden; und Schreiben, durch die Steuerung, der rekonstruierten Daten der ausgefallenen Speichervorrichtung an einen oder mehrere verfügbare Orte in dem Speicherarray.
  16. Gerät gemäß Anspruch 15, wobei eine Vorrichtungssteuerung der ausgefallenen Steuervorrichtung mindestens teilweise eines oder mehrere von Lokalisieren, Ausgeben und Rekonstruieren durchführt.
  17. Gerät gemäß Anspruch 15, wobei der eine oder die mehreren Peer-to-Peer-Befehle einen Lesebefehl einschließen, der von der ausgefallenen Speichervorrichtung ausgegeben und ausgeführt wird.
  18. Gerät gemäß Anspruch 15, wobei die Steuerung und das Speicherarray dafür eingerichtet sind, Operationen durchzuführen, die ferner umfassen: Definieren eines Streifens in dem Speicherarray, wobei der Streifen den Daten der ausgefallenen Speichervorrichtung und den Daten und den Redundanzinformationen in dem einen oder den mehreren funktionierenden Speichervorrichtungen zugeordnet ist.
  19. Gerät gemäß Anspruch 15, wobei die Steuerung und das Speicherarray dafür eingerichtet sind, Operationen durchzuführen, die ferner umfassen: Identifizieren eines Medienabschnitts der ausgefallenen Speichervorrichtung, der wiederherstellbare Daten enthält; und Kopieren der wiederherstellbaren Daten von einem ersten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung an einen zweiten Ort in dem Medienabschnitt der ausgefallenen Speichervorrichtung.
  20. Gerät gemäß Anspruch 19, wobei der Medienabschnitt der ausgefallenen Speichervorrichtung eine Speicherzelle ist.
DE112019000215.5T 2018-08-03 2019-06-01 Wiederherstellungshilfe mit ausgefallener Speichervorrichtung Pending DE112019000215T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/054,972 US10831603B2 (en) 2018-08-03 2018-08-03 Rebuild assist using failed storage device
US16/054,972 2018-08-03
PCT/US2019/035087 WO2020027912A1 (en) 2018-08-03 2019-06-01 Rebuild assist using failed storage device

Publications (1)

Publication Number Publication Date
DE112019000215T5 true DE112019000215T5 (de) 2020-08-06

Family

ID=69227480

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000215.5T Pending DE112019000215T5 (de) 2018-08-03 2019-06-01 Wiederherstellungshilfe mit ausgefallener Speichervorrichtung

Country Status (4)

Country Link
US (1) US10831603B2 (de)
CN (1) CN111433746B (de)
DE (1) DE112019000215T5 (de)
WO (1) WO2020027912A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110737393B (zh) 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 数据读取方法、设备和计算机程序产品
US11340989B2 (en) * 2019-09-27 2022-05-24 Dell Products L.P. RAID storage-device-assisted unavailable primary data/Q data rebuild system
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
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
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
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
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US11531498B2 (en) * 2020-11-20 2022-12-20 Western Digital Technologies, Inc. Peer storage device messaging over control bus
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs

Family Cites Families (99)

* 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
US20080250057A1 (en) 2005-09-27 2008-10-09 Rothstein Russell I Data Table Management System and Methods Useful Therefor
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
JP5167243B2 (ja) 2006-04-04 2013-03-21 パーマビット テクノロジー コーポレイション 拡張性及び耐障害性を有する記憶システムのための記憶領域割当て及び消去符号化技法
US20080005382A1 (en) 2006-06-14 2008-01-03 Hitachi, Ltd. System and method for resource allocation in fault tolerant storage system
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
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
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
WO2010011428A1 (en) 2008-06-06 2010-01-28 Pivot3 Method and system for data migration in a distributed raid implementation
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
US9235350B2 (en) 2009-08-27 2016-01-12 International Business Machines Corporation Dispersed storage unit and methods with metadata separation for use in a dispersed storage system
JP5397148B2 (ja) 2009-10-16 2014-01-22 富士通株式会社 記憶装置、制御装置および記憶装置の制御方法
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
KR101491484B1 (ko) 2010-06-18 2015-02-10 엘에스아이 코포레이션 스케일러블 스토리지 디바이스들
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
WO2013048451A1 (en) 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
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
US20130339784A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Error recovery in redundant storage systems
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
EP3011428A4 (de) 2013-06-19 2017-02-22 Exablox Corporation Datenbereinigung in clusterbasierten speichersystemen
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
US20160342476A1 (en) 2014-03-20 2016-11-24 Hewlett Packard Enterprise Development Lp Solid state drive operations
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
JP6228347B2 (ja) 2015-02-25 2017-11-08 株式会社日立製作所 ストレージ装置及び記憶デバイス
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
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
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
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
US10860508B2 (en) 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
US10789020B2 (en) 2017-06-12 2020-09-29 Pure Storage, Inc. Recovering data within a unified storage element
US10394634B2 (en) 2017-06-30 2019-08-27 Intel Corporation Drive-based storage scrubbing
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple 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
US10831603B2 (en) 2020-11-10
CN111433746B (zh) 2023-09-26
US20200042389A1 (en) 2020-02-06
CN111433746A (zh) 2020-07-17
WO2020027912A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
DE112019000215T5 (de) Wiederherstellungshilfe mit ausgefallener Speichervorrichtung
DE112019000194T5 (de) Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112018004370T5 (de) Verfahren zum wiederherstellen einer ausgefallenen speichervorrichtung
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112015005211T5 (de) Systeme und verfahren für die speicherfehler-verwaltung
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102017104073B4 (de) Verallgemeinertes Verifikationsverfahren für Schreiboperationen
DE102012216034A1 (de) Direkte speicheradressierung for solid-state-laufwerke
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE102020126663A1 (de) Speichervorrichtung zum Speichern von Daten basierend auf Schlüssel-Wert und Betriebsverfahren derselben
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112020003290T5 (de) Datenplatzierung in einer schreib-cache-architektur, die eine lesehitze-datenaufteilung unterstützt

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE