DE112022002303T5 - Selektives wiederherstellen von unterbrochenen vorrichtungen in datenspeichervorrichtungsarrays - Google Patents

Selektives wiederherstellen von unterbrochenen vorrichtungen in datenspeichervorrichtungsarrays Download PDF

Info

Publication number
DE112022002303T5
DE112022002303T5 DE112022002303.1T DE112022002303T DE112022002303T5 DE 112022002303 T5 DE112022002303 T5 DE 112022002303T5 DE 112022002303 T DE112022002303 T DE 112022002303T DE 112022002303 T5 DE112022002303 T5 DE 112022002303T5
Authority
DE
Germany
Prior art keywords
raid
block
data storage
storage device
data
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
DE112022002303.1T
Other languages
English (en)
Inventor
Kushal Hosmani
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 DE112022002303T5 publication Critical patent/DE112022002303T5/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es werden Systeme und Verfahren zur selektiven Wiederherstellung von unterbrochenen Datenspeichervorrichtungen in Speicherarrays beschrieben. Eine Steuerung bestimmt eine Betriebsunterbrechung einer Datenspeichervorrichtung in einer Konfiguration einer redundanten Anordnung unabhängiger Festplatten (RAID). Als Reaktion auf die Unterbrechung bestimmt die Steuerung einen letzten Blockzeitwert für den letzten erfolgreich gespeicherten RAID-Block in der unterbrochenen Speichervorrichtung und einen oder mehrere unvollständige RAID-Streifen, die die unterbrochene Speichervorrichtung nicht abgeschlossen hat. Die Steuerung stellt dann selektiv die unvollständigen RAID-Streifen von den anderen Speichervorrichtungen in der RAID-Konfiguration wieder her.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG(EN)
  • Diese Anmeldung beansprucht den Vorteil der nichtvorläufigen US-Anmeldung Nr. 17/528,768 , eingereicht am 17. November 2021 und mit dem Titel „SELECTIVE REBUILD OF INTERRUPTED DEVICES IN DATA STORAGE DEVICE ARRAYS“, und nimmt ihren gesamten Inhalt hiermit für alle Zwecke durch Bezugnahme auf.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich allgemein auf Speichersysteme, die eine redundante Anordnung unabhängiger Festplatten (RAID) unterstützen, und insbesondere auf das Verwalten von Wiederherstellungsvorgängen für den RAID-Satz von Datenspeichervorrichtungen.
  • HINTERGRUND
  • Multivorrichtungsspeicherungssysteme verwenden mehrere diskrete Datenspeichervorrichtungen, in der Regel Plattenlaufwerke (Festkörperlaufwerke (SSD), Festplattenlaufwerke (HDD), Hybridlaufwerke, Bandlaufwerke usw.) zum Speichern großer Datenmengen. Diese Multivorrichtungsspeicherungssysteme sind im Allgemeinen in einer Anordnung von Laufwerken angeordnet, die durch eine gemeinsame Kommunikationsstruktur miteinander verbunden sind und in vielen Fällen durch eine Speicherungssteuerung, eine Steuerung für eine redundante Anordnung von unabhängigen Festplatten (RAID) oder eine allgemeine Steuerung gesteuert werden, um Speicherungs- und Systemaktivitäten über die Anordnung von Laufwerken zu koordinieren. Die in der Anordnung gespeicherten Daten können gemäß einem definierten RAID-Level, einer Kombination von RAID-Schemata oder anderen Konfigurationen gespeichert werden, um die gewünschte Datenredundanz, Leistung und Kapazitätsauslastung zu erreichen. Im Allgemeinen können diese Datenspeicherkonfigurationen eine Kombination aus redundanten Kopien (Spiegelung), Daten-Striping und/oder Parität (Berechnung und Speicherung) sowie andere Datenverwaltungs-, Fehlerkorrektur- und Datenwiederherstellungsprozesse beinhalten, die manchmal spezifisch für den Typ der verwendeten Laufwerke sind (z. B. Solid-State-Laufwerke im Vergleich zu Festplattenlaufwerken).
  • Diese Multivorrichtungsspeichersysteme können in Rechenzentren konfiguriert sein, die eine große Anzahl von rack-basierten Speichersystemen mit entsprechenden Sätzen von austauschbaren Datenspeichervorrichtungen einschließen. Diese rack-basierten Speichersysteme können eine Vielfalt von Leistungs-, Netzwerk- und anderer physischer Verbindungen zum Aufrechterhalten von Vorgängen einschließen. Die Größe und Komplexität dieser Systeme kann zu vorübergehenden Leistungs-, Verbindungs- und/oder anderen Dienstunterbrechungen führen, wie wenn eine lose Verbindung und Vibration oder andere Bewegung in dem zugeordneten Rack zu einer vorübergehenden Trennung führt oder ein Systemadministrator die falsche Vorrichtung versehentlich entfernt, den Fehler bemerkt und sie sofort wieder in ihren Schlitz ersetzt. Variationen in Leistungs- und Schlitzpositionen können auch Variationen bei der Zeitsteuerung von Leistungsverwaltungszuständen von Vorrichtungen verursachen, wobei eine Vorrichtung offline geht, bevor andere Vorrichtungen in einer Gruppe, wie ein RAID-Satz von Vorrichtungen, offline geht. Diese temporären Unterbrechungen werden in großen, verteilten Mehrvorrichtungsspeichersystemen immer häufiger.
  • Jeder der vorstehenden Fehler kann, wenngleich er vorübergehend ist, eine oder mehrere Speichervorrichtungen in einem RAID-Satz veranlassen, die Synchronisation mit den anderen Speichervorrichtungen in demselben RAID-Satz zu beenden. In einigen Konfigurationen kann eine Speichervorrichtung, die die Synchronisation beendet, eine Wiederherstellung des betroffenen RAID-Satzes auslösen. Da die Kapazität von Datenspeichervorrichtungen weiterhin zunimmt, ist die Zeit, die erforderlich ist, um einen RAID-Satz wiederherzustellen, aus Dienstverlust-, Systemdesign- und Energieperspektiven sehr groß und kostspielig geworden.
  • Daher besteht weiterhin ein Bedarf an Speichersystemen, die teilweise Wiederherstellungen unterstützen, die auf das erneute Synchronisieren von Speichervorrichtungen nach vorübergehenden Unterbrechungen abzielen.
  • KURZDARSTELLUNG
  • Verschiedene Gesichtspunkte für die selektive Wiederherstellung von unterbrochenen Datenspeichervorrichtungen in RAID-Arrays werden beschrieben. Insbesondere können Zeitzähler mit jedem RAID-Block in den Speichervorrichtungen gespeichert und verwendet werden, um zu bestimmen, welche Vorrichtungen nicht synchron sind, um die Streifen, die unvollständige Blöcke enthalten, selektiv wiederherzustellen. Dies kann eine teilweise Wiederherstellung einer begrenzten Anzahl von Streifen ermöglichen, die während der Unterbrechung beeinträchtigt wurden, ohne dass eine vollständige Wiederherstellung des RAID-Satzes erforderlich ist.
  • Ein allgemeiner Gesichtspunkt schließt ein System ein, das eine Vielzahl von Datenspeichervorrichtungen und eine Steuerung einer redundanten Anordnung unabhängiger Festplatten (RAID) einschließt. Die Vielzahl von Datenspeichervorrichtungen kann ein nichtflüchtiges Speichermedium einschließen, das konfiguriert ist, um Host-Daten zu speichern, wobei: die Host-Daten in einer Vielzahl von RAID-Blöcken konfiguriert sind; jeder RAID-Block einem RAID-Streifen entspricht, der über die Vielzahl von Datenspeichervorrichtungen verteilt ist; und jeder RAID-Block einen Blockzeitwert aufweist, der einer Zeit entspricht, als der RAID-Block in der entsprechenden Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert wurde. Die RAID-Steuerung ist konfiguriert zum: Bestimmen einer Betriebsunterbrechung für mindestens eine Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen; Bestimmen, als Reaktion auf die Betriebsunterbrechung, eines letzten Blockzeitwerts für einen letzten RAID-Block, der durch die mindestens eine Datenspeichervorrichtung gespeichert ist; Bestimmen, basierend auf dem letzten Blockzeitwert, mindestens eines unvollständigen RAID-Streifens; und selektives Wiederherstellen des mindestens einen unvollständigen RAID-Streifens.
  • Implementierungen können eines oder mehrere der folgenden Merkmale einschließen. Jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen kann konfiguriert sein, um benachbart zu jedem RAID-Block in dem nichtflüchtigen Speichermedium den Blockzeitwert dieses RAID-Blocks zu speichern. Jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen kann: als eine Blockspeichervorrichtung konfiguriert sein, die eine Host-Datenblockgröße und eine erweiterte Blockgröße einschließt, die zusätzliche Speicherorte über die Host-Datenblockgröße für jeden Host-Datenblock hinaus definiert, und ferner konfiguriert sein, um den Blockzeitwert an den zusätzlichen Speicherorten zu speichern, die der erweiterten Blockgröße für jeden RAID-Block entsprechen. Jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen kann konfiguriert sein, um in Metadatenspeicher einen Vorrichtungszeitwert zu speichern, der einer Zeit entspricht, als ein jüngster RAID-Block eines jüngsten RAID-Streifens in dem nichtflüchtigen Speichermedium für diese Datenspeichervorrichtung gespeichert wurde. Die RAID-Steuerung kann weiterhin konfiguriert sein zum: Speichern, in RAID-Metadaten, eines Zeitzählerwerts für einen jüngsten RAID-Streifen, der in der Vielzahl von Datenspeichervorrichtungen gespeichert ist; Bestimmen, aus der mindestens einen Datenspeichervorrichtung, des letzten Blockzeitwerts; und Bestimmen, basierend auf dem Zeitzählerwert und dem letzten Blockzeitwert, des mindestens einen unvollständigen RAID-Streifens. Die RAID-Steuerung kann weiterhin konfiguriert sein, um an die Vielzahl von Datenspeichervorrichtungen den Zeitzählerwert zu senden, der als der Blockzeitwert benachbart zu jedem RAID-Block in dem nichtflüchtigen Speichermedium gespeichert werden soll. Die RAID-Steuerung kann weiterhin konfiguriert sein zum: selektiven Inkrementieren des Zeitzählerwerts um einen konfigurierbaren Granularitätsschwellenwert; und Schreiben einer Vielzahl von RAID-Streifen in die Vielzahl von Datenspeichervorrichtungen zwischen jedem Inkrement. Die RAID-Steuerung kann weiterhin konfiguriert sein zum: Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in der mindestens einen Datenspeichervorrichtung gespeichert sind, eines letzten vollständigen RAID-Streifens; und Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in einer anderen Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert sind, des mindestens einen unvollständigen RAID-Streifens seit dem letzten vollständigen RAID-Streifen. Die RAID-Steuerung kann weiterhin konfiguriert sein zum: Bestimmen eines Betriebsverlusts für die mindestens eine Datenspeichervorrichtung; Eintreten, als Reaktion auf den Betriebsverlust, in einen verschlechterten Zustand für einen RAID-Satz, der der Vielzahl von Datenspeichervorrichtungen entspricht; Erfassen einer Betriebsdatenspeichervorrichtung entsprechend einer Position der mindestens einen Datenspeichervorrichtung; Bestimmen, basierend auf einer Vorrichtungssignatur, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist; und Bestimmen der Betriebsunterbrechung als Reaktion darauf, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist. Die RAID-Steuerung kann weiterhin konfiguriert sein zum: Bestimmen eines Unterbrechungszählers zum Messen einer verstrichenen Zeit aus dem Betriebsverlust; Bestimmen eines Unterbrechungsschwellenwerts; selektiven Initiieren einer vollständigen Wiederherstellung des RAID-Satzes als Reaktion darauf, dass der Unterbrechungszähler den Unterbrechungsschwellenwert überschreitet; Bestimmen einer Wiederherstellungszählung des mindestens einen unvollständigen RAID-Streifens; Bestimmen eines Wiederherstellungsschwellenwerts; und selektiven Initiieren der vollständigen Wiederherstellung des RAID-Satzes als Reaktion auf den Wiederherstellungszählwert, der den Wiederherstellungsschwellenwert überschreitet.
  • Ein weiterer allgemeiner Gesichtspunkt schließt ein computerimplementiertes Verfahren ein, das Folgendes einschließt: Speichern, in einer Vielzahl von Datenspeichervorrichtungen, die ein nichtflüchtiges Speichermedium einschließen, von Host-Daten, wobei die Host-Daten in einer Vielzahl von RAID-Blöcken konfiguriert sind, wobei jeder RAID-Block einem RAID-Streifen entspricht, der über die Vielzahl von Datenspeichervorrichtungen verteilt ist, und jeder RAID-Block einen Blockzeitwert aufweist, der einer Zeit entspricht, als der RAID-Block in der entsprechenden Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert wurde; Bestimmen einer Betriebsunterbrechung für mindestens eine Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen; Bestimmen, als Reaktion auf die Betriebsunterbrechung, eines letzten Blockzeitwerts für einen letzten RAID-Block, der durch die mindestens eine Datenspeichervorrichtung gespeichert ist; Bestimmen, basierend auf dem letzten Blockzeitwert, mindestens eines unvollständigen RAID-Streifens; und selektives Wiederherstellen des mindestens einen unvollständigen RAID-Streifens.
  • Implementierungen können eines oder mehrere der folgenden Merkmale einschließen. Das computerimplementierte Verfahren kann das Speichern, benachbart zu jedem RAID-Block in dem nichtflüchtigen Speichermedium, des Blockzeitwerts dieses RAID-Blocks einschließen. Das computerimplementierte Verfahren kann das Konfigurieren der Vielzahl von Datenspeichervorrichtungen als Blockspeichervorrichtungen einschließen, einschließlich: einer Host-Datenblockgröße und einer erweiterten Blockgröße, die zusätzliche Speicherorte über die Host-Datenblockgröße für jeden Host-Datenblock hinaus definiert, wobei das Speichern des Blockzeitwerts jedes RAID-Blocks das Speichern des Blockzeitwerts an den zusätzlichen Speicherorten einschließt, die der erweiterten Blockgröße für diesen RAID-Block entsprechen. Das computerimplementierte Verfahren kann das Speichern eines Vorrichtungszeitwerts, der einer Zeit entspricht, als ein jüngster RAID-Block eines jüngsten RAID-Streifens in dem nichtflüchtigen Speichermedium für diese Datenspeichervorrichtung gespeichert wurde, in einem Metadatenspeicher für jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen einschließen. Das computerimplementierte Verfahren kann einschließen: Speichern, in RAID-Metadaten, eines Zeitzählerwerts für einen jüngsten RAI D-Streifen, der in der Vielzahl von Datenspeichervorrichtungen gespeichert ist; Bestimmen, aus der mindestens einen Datenspeichervorrichtung, des letzten Blockzeitwerts; und Bestimmen, basierend auf dem Zeitzählerwert und dem letzten Blockzeitwert, des mindestens einen unvollständigen RAID-Streifens. Das computerimplementierte Verfahren kann das Senden, an die Vielzahl von Datenspeichervorrichtungen, des Zeitzählerwerts einschließen, der als der Blockzeitwert, der zu jedem RAID-Block in dem nichtflüchtigen Speichermedium benachbart ist, gespeichert werden soll. Das computerimplementierte Verfahren kann einschließen: selektives Inkrementieren des Zeitzählerwerts um einen konfigurierbaren Granularitätsschwellenwert; und Schreiben einer Vielzahl von RAID-Streifen in die Vielzahl von Datenspeichervorrichtungen zwischen jedem Inkrement. Das computerimplementierte Verfahren kann einschließen: Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in der mindestens einen Datenspeichervorrichtung gespeichert sind, eines letzten vollständigen RAID-Streifens; und Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in einer anderen Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert sind, des mindestens einen unvollständigen RAID-Streifens seit dem letzten vollständigen RAID-Streifen. Das computerimplementierte Verfahren kann einschließen: Bestimmen eines Betriebsverlusts für die mindestens eine Datenspeichervorrichtung; Eintreten, als Reaktion auf den Betriebsverlust, in einen verschlechterten Zustand für einen RAID-Satz, der der Vielzahl von Datenspeichervorrichtungen entspricht; Erfassen einer Betriebsdatenspeichervorrichtung entsprechend einer Position der mindestens einen Datenspeichervorrichtung; Bestimmen, basierend auf einer Vorrichtungssignatur, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist; und Bestimmen, als Reaktion darauf, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist, der Betriebsunterbrechung.
  • Noch ein weiterer allgemeiner Gesichtspunkt schließt ein System ein, das eine Vielzahl von Datenspeichervorrichtungen einschließt, die ein nichtflüchtiges Speichermedium einschließen, das konfiguriert ist, um Host-Daten zu speichern, wobei: die Host-Daten in einer Vielzahl von RAID-Blöcken konfiguriert sind; jeder RAID-Block einem RAID-Streifen entspricht, der über die Vielzahl von Datenspeichervorrichtungen verteilt ist; und jeder RAID-Block einen Blockzeitwert aufweist, der einer Zeit entspricht, als der RAID-Block in der entsprechenden Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert wurde. Das System schließt auch ein: Mittel zum Bestimmen einer Betriebsunterbrechung für mindestens eine Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen; Mittel zum Bestimmen, als Reaktion auf die Betriebsunterbrechung, eines letzten Blockzeitwerts für einen letzten RAID-Block, der durch die mindestens eine Datenspeichervorrichtung gespeichert ist; Mittel zum Bestimmen, basierend auf dem letzten Blockzeitwert, mindestens eines unvollständigen RAID-Streifens; und Mittel zum selektiven Wiederherstellen des mindestens einen unvollständigen RAID-Streifens.
  • Die verschiedenen Ausführungsformen wenden vorteilhaft die Lehren von Datenspeichervorrichtungen und/oder Multivorrichtungsspeichersystemen an, um die Funktionalität solcher Computersysteme zu verbessern. Die verschiedenen Ausführungsformen schließen Vorgänge ein, die die Probleme, die bisher bei Speicher-Arrays und/oder -Systemen aufgetreten sind, überwinden oder mindestens verringern und dementsprechend zuverlässiger und/oder effizienter sind als andere Rechnersysteme. Das heißt, die verschiedenen hierin offenbarten Ausführungsformen schließen Hardware und/oder Software mit Funktionalität ein, um Daten als Reaktion auf eine temporäre Unterbrechung einer Datenspeichervorrichtung in einem RAID-Satz effizienter wiederherzustellen, wie durch Verwenden von Zeitzählern, die RAID-Speichervorgängen zugeordnet sind, um RAID-Streifen zu identifizieren, die von der Unterbrechung betroffen waren. Entsprechend stellen die hierin offenbarten Ausführungsformen verschiedene Verbesserungen an Speichernetzwerken und/oder Speichersystemen bereit.
  • Es sei klargestellt, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeits- und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
    • 1 veranschaulicht schematisch ein Multivorrichtungsspeichersystem, das eine selektive Wiederherstellung von unterbrochenen Speichervorrichtungen unterstützt.
    • 2a veranschaulicht schematisch die Verwendung von Blockzeitwerten zu einem ersten Zeitpunkt vor einer Unterbrechung der Speichervorrichtung.
    • 2b veranschaulicht schematisch die Verwendung von Blockzeitwerten zu einem zweiten Zeitpunkt nach einer Unterbrechung der Speichervorrichtung.
    • 3 veranschaulicht schematisch einen Speicherknoten des Multivorrichtungsspeichersystems aus 1.
    • 4 veranschaulicht schematisch einen Host oder Steuerknoten des Multivorrichtungsspeichersystems aus 1.
    • 5 veranschaulicht detaillierter schematisch einige Elemente des Speichersystems aus den 1-4.
    • 6 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Speichern von RAID-Blockzeitwerten und Verwenden derselben zum selektiven Wiederherstellen unvollständiger RAID-Streifen.
    • 7 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Speichern von RAID-Blockzeitwerten in einem RAID-Satz von Datenspeichervorrichtungen.
    • 8 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Bestimmen von Betriebsunterbrechungen zum selektiven Initiieren von teilweisen Wiederherstellungen eines RAID-Satzes von Datenspeichervorrichtungen.
  • DETAILLIERTE BESCHREIBUNG
  • 1 zeigt eine Ausführungsform eines beispielhaften Datenspeichersystems 100 mit mehreren Datenspeichervorrichtungen 120, die eine Vielzahl von Host-Systemen 112 durch die Speichersteuerung 102 unterstützen. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Gesichtspunkten der hierin beschriebenen Ausführungsbeispiele abzulenken, nicht veranschaulicht. Zu diesem Zweck kann das Datenspeichersystem 100 als ein nicht einschränkendes Beispiel eine oder mehrere Datenspeichervorrichtungen 120 (auch manchmal als Informationsspeichervorrichtungen, Speichervorrichtungen, Plattenlaufwerke oder Laufwerke bezeichnet) einschließen, die in einem Speicherknoten mit Speichersteuerung 102 konfiguriert sind und jeweils ein nichtflüchtiges Speichermedium enthalten. In einigen Ausführungsformen können die Speichervorrichtungen 120 in einem Server, einem Speicherarray-Blade, einer Flash-Array-Vorrichtung oder ähnlichen Speichereinheit zur Verwendung in Rechenzentrenspeicherracks oder -chassis konfiguriert sein. Die Speichervorrichtungen 120 können mit einem oder mehreren Host-Knoten oder Host-Systemen 112 eine Schnittstelle bilden und Datenspeicherungs- und -abfragefähigkeiten für oder durch diese Host-Systeme bereitstellen. In einigen Ausführungsformen können die RAID-Funktionen der Speichersteuerung 102 in den Host-Systemen 112 ausgeführt oder von diesen verwaltet werden. In einigen Ausführungsformen können die Speichervorrichtungen 120 in einer Speicherhierarchie konfiguriert sein, die Speicherknoten, Speichersteuerungen (wie die Speichersteuerung 102) und/oder andere Zwischenkomponenten zwischen den Speichervorrichtungen 120 und den Host-Systemen 112 einschließt. Zum Beispiel kann jede Speichersteuerung 102 für einen entsprechenden Satz von Speichervorrichtungen 120 in einem Speicherknoten verantwortlich sein und ihre jeweiligen Speichervorrichtungen können über ein entsprechendes Rückwandnetzwerk oder eine entsprechende interne Busarchitektur einschließlich eines Speicherschnittstellenbusses 108 und/oder eines Steuerbusses 110 verbunden sein, obwohl nur eine Instanz der Speichersteuerung 102 und entsprechende Speicherknotenkomponenten gezeigt sind. In einigen Ausführungsformen kann die Speichersteuerung 102 einen Host-Busadapter zum Verbinden der Speichervorrichtungen 120 mit dem Strukturnetzwerk 114 zur Kommunikation mit Host-Systemen 112 einschließen oder in diesem konfiguriert sein.
  • In der gezeigten Ausführungsform sind eine Anzahl von Speichervorrichtungen 120 an einem gemeinsamen Speicherschnittstellenbus 108 für die Host-Kommunikation durch die Speichersteuerung 102 montiert. Zum Beispiel können die Speichervorrichtungen 120 eine Anzahl von Laufwerken einschließen, die in einem Speicher-Array angeordnet sind, wie beispielsweise Speichervorrichtungen, die sich ein gemeinsames Rack, eine Einheit oder ein Blade in einem Rechenzentrum teilen, oder die SSDs in einem All-Flash-Array. In einigen Ausführungsformen können sich Speichervorrichtungen 120 ein Backplane-Netzwerk, Netzwerk-Switch(es) und/oder andere Hardware- und Softwarekomponenten teilen, auf die über den Speicherschnittstellenbus 108 und/oder den Steuerbus 110 zugegriffen wird. Zum Beispiel können die Speichervorrichtungen 120 mit dem Speicherschnittstellenbus 108 und/oder dem Steuerbus 110 über eine Vielzahl von physischen Anschlussverbindungen verbunden werden, die physische, Transport- und andere logische Kanäle für die Kommunikation mit den unterschiedlichen Komponenten und Unterkomponenten definieren, um einen Kommunikationskanal zum Host 112 bereitzustellen. In einigen Ausführungsformen kann der Speicherschnittstellenbus 108 die primäre Host-Schnittstelle für die Verwaltung von Speichervorrichtungen und die Datenübertragung des Hosts bereitstellen, und der Steuerbus 110 kann eine begrenzte Konnektivität zum Host für niedrigstufige Steuerfunktionen einschließen.
  • In einigen Ausführungsformen können die Speichervorrichtungen 120 als Peer-Gruppe oder Peer-Speicherungsvorrichtungen bezeichnet werden, da sie über den Speicherschnittstellenbus 108 und/oder den Steuerbus 110 miteinander verbunden sind. In einigen Ausführungsformen können die Speichervorrichtungen 120 für die Peer-Kommunikation zwischen den Speichervorrichtungen 120 über den Speicherschnittstellenbus 108 konfiguriert werden, mit oder ohne Unterstützung der Speichersteuerung 102 und/oder der Host-Systeme 112. Zum Beispiel können Speichervorrichtungen 120 für den direkten Speicherzugriff eingerichtet werden, indem ein oder mehrere Protokolle verwendet werden, wie beispielsweise nichtflüchtiger Express-Speicher (NVMe), direkter Fernspeicherzugriff (RDMA), NVMe über Struktur (NVMeOF) usw., um Befehlsnachrichten und Datenübertragungen zwischen Speichervorrichtungen über die Speicherschnittstelle mit hoher Bandbreite und den Speicherschnittstellenbus 108 bereitzustellen.
  • In einigen Ausführungsformen sind die Datenspeichervorrichtungen 120 Festkörperlaufwerke (SSDs) oder schließen diese ein. Jede Datenspeichervorrichtung 120.1-120.n kann eine nichtflüchtige Speicher- (NVM) oder Vorrichtungssteuerung 130 auf der Grundlage von Rechenressourcen (Prozessor und Speicher) und eine Vielzahl von NVM- oder nichtflüchtigen Speichermedienvorrichtungen 140 für die Datenspeicherung einschließen (z. B. eine oder mehrere NVM-Vorrichtung(en), wie eine oder mehrere Flash-SpeicherVorrichtungen). In einigen Ausführungsformen schließt eine jeweilige Datenspeichervorrichtung 120 der einen oder der mehreren Datenspeicherungsvorrichtungen eine oder mehrere NVM-Steuerungen, wie Flash-Steuerungen oder Kanal-Steuerungen (z. B. für Speichervorrichtungen mit NVM-Vorrichtungen in mehreren Speicherkanälen), ein. In einigen Ausführungsformen können die Datenspeichervorrichtungen 120 jeweils in einem Gehäuse untergebracht sein, beispielsweise in einem mehrteiligen versiegelten Gehäuse mit einem definierten Formfaktor und Anschlüssen und/oder Verbindern zur Verbindung mit dem Speicherschnittstellenbus 108 und/oder dem Steuerbus 110.
  • In einigen Ausführungsformen kann eine jeweilige Datenspeichervorrichtung 120 eine einzelne Medienvorrichtung einschließen, während in anderen Ausführungsformen die jeweilige Datenspeichervorrichtung 120 eine Vielzahl von Medienvorrichtungen einschließt. In einigen Ausführungsformen schließen die Medienvorrichtungen einen NAND-Flash-Speicher oder einen NOR-Flash-Speicher ein. In einigen Ausführungsformen kann die Datenspeichervorrichtung 120 eine oder mehrere Festplattenlaufwerke (HDDs) einschließen, die magnetische nichtflüchtige Speichermedienscheiben einschließen, die in einen Kopf und eine entsprechende Lese-/Schreibkanalelektronik geschrieben und dadurch gelesen werden. In einigen Ausführungsformen können die Datenspeichervorrichtungen 120 eine Flash-Speicherungsvorrichtung einschließen, die wiederum einen oder mehrere Flash-Speicherchips, ein oder mehrere Flash-Speicherpakete, einen oder mehrere Flash-Speicherkanäle oder dergleichen einschließt. In einigen Ausführungsformen können jedoch eine oder mehrere der Datenspeichervorrichtungen 120 andere Arten von nichtflüchtigen Datenspeichermedien aufweisen (z. B. Phasenänderungs-Direktzugriffsspeicher (PCRAM), resistive Direktzugriffsspeicher (ReRAM), Spin-Transfer-Drehmoment-Direktzugriffsspeicher (STT-RAM), magnetoresistive Direktzugriffsspeicher (MRAM) usw.).
  • In einigen Ausführungsformen schließt jede Speichervorrichtung 120 eine Vorrichtungssteuerung 130 ein, die eine oder mehrere Verarbeitungseinheiten (auch manchmal zentrale Verarbeitungseinheiten (CPUs), Prozessoren, Mikroprozessoren oder Mikrocontroller genannt) einschließt, die konfiguriert sind, um Befehle in einem oder mehreren Programmen auszuführen. In einigen Ausführungsformen werden die ein oder mehreren Prozessoren von einer oder mehreren Komponenten innerhalb und in einigen Fällen über die Funktion der Gerätesteuerungen hinaus geteilt. In einigen Ausführungsformen können die Vorrichtungssteuerungen 130 Firmware zum Steuern von Daten, die in Medienvorrichtungen 140 geschrieben und aus den Medienvorrichtungen 140 gelesen werden, ein oder mehrere Speicher-(oder Host-) -Schnittstellenprotokolle für die Kommunikation mit anderen Komponenten sowie verschiedene interne Funktionen, wie Speicherbereinigung, Wear-Leveling, Medienscans und andere Speicher- und Datenwartung, einschließen. Zum Beispiel können Vorrichtungssteuerungen 130 Firmware zum Ausführen der NVM-Schicht eines NVMe-Speicherungsprotokolls neben der Medienvorrichtungsschnittstelle und Verwaltungsfunktionen einschließen, die für die Speichervorrichtung spezifisch sind. Medienvorrichtungen 140 sind mit den Vorrichtungssteuerungen 130 über Verbindungen gekoppelt, die in der Regel zusätzlich zu den Daten Befehle übertragen und zusätzlich zu den in den Medienvorrichtungen 140 zu speichernden Datenwerten und den aus den Medienvorrichtungen gelesenen Datenwerten optional Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen übertragen. Die Medienvorrichtungen 140 können eine beliebige Anzahl von (d. h. eine oder mehrere) Arbeitsspeichervorrichtungen einschließen, einschließlich, ohne Einschränkung, nichtflüchtiger Halbleiterspeichervorrichtungen, wie Flash-Speichervorrichtung(en).
  • In einigen Ausführungsformen sind die Medienvorrichtungen 140 in den Speichervorrichtungen 120 in eine Anzahl von adressierbaren und einzeln auswählbaren Blöcken unterteilt, die manchmal als Löschblöcke bezeichnet werden. In einigen Ausführungsformen sind die individuell auswählbaren Blöcke die löschbaren Einheiten mit minimaler Größe in einer Flash-Speichervorrichtung. Mit anderen Worten: jeder Block enthält die minimale Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können (d. h. in einer einzigen Löschoperation). Jeder Block wird in der Regel weiter unterteilt in eine Vielzahl von Seiten und/oder Wortleitungen, wobei jede Seite oder Wortleitung in der Regel eine Instanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Ausführungsformen (z. B. unter Verwendung einiger Arten von Flash-Speichern) ist die kleinste individuell zugängliche Einheit eines Datensatzes jedoch ein Sektor oder Codewort, der bzw. das eine Untereinheit einer Seite ist. Das heißt, ein Block schließt eine Vielzahl von Seiten ein, wobei jede Seite eine Vielzahl von Sektoren oder Codewörtern enthält, und jeder Sektor oder jedes Codewort die minimale Dateneinheit zum Lesen von Daten aus der Flash-Speichervorrichtung ist.
  • Eine Dateneinheit kann eine beliebige Größenzuordnung von Daten beschreiben, wie einen Hostblock, ein Datenobjekt, einen Sektor, eine Seite, eine Seite mit mehreren Ebenen, einen Lösch-/Programmierblock, eine Medienvorrichtung/ein Paket, usw. Speicherplätze können physische und/oder logische Speicherplätze auf den Speichervorrichtungen 120 einschließen und können je nach Speichermedium, Speicherungsvorrichtung/Systemkonfiguration und/oder Kontext auf verschiedenen Stufen der Granularität beschrieben und/oder zugewiesen werden. Beispielsweise können Speicherplätze bei einer logischen Blockadressierungsdateneinheit (LBA-Dateneinheit) eines Hosts Größe und Adressierbarkeit für Host-Lese/Schreibzwecke zugewiesen werden, aber als Seiten mit Speicherungsvorrichtungsadressierung verwaltet werden, die in der Medien-Flash-Translationsschicht (FTL) in anderen Kontexten verwaltet wird. Die Mediensegmente können physische Speicherplätze auf den Medienvorrichtungen 120 einschließen, die auch einem oder mehreren logischen Speicherplätzen entsprechen können. In einigen Ausführungsformen können Mediensegmente eine kontinuierliche Reihe von physikalischem Speicherplatz wie benachbarte Dateneinheiten auf einem Speichermedium einschließen und können bei Flash-Speichern einem oder mehreren Medien zum Löschen oder Programmieren der Blöcke entsprechen. Eine logische Datengruppe kann eine Vielzahl logischer Dateneinheiten einschließen, die unabhängig von dem Speicherplatz auf einer logischen Basis gruppiert sein können, wie Datenobjekte, Dateien oder andere logische Datenkonstrukte, die aus mehreren Host-Blöcken zusammengesetzt sind.
  • In einigen Ausführungsformen können die Speichervorrichtungen 120 als Blockspeichervorrichtungen mit einer definierten Host-Datenblockgröße konfiguriert sein, wie 512 Bytes, 2048 Bytes, 4.096 Bytes oder einer anderen Host-Blockgröße. Speichervorrichtungen 120 können für erweiterte Blockspeicherung konfiguriert sein, die zusätzliche Speicherorte über diejenigen hinaus einschließt, die der Host-Blockgröße zugewiesen sind. Zum Beispiel kann jeder 512-Byte-Hostblock zusätzliche Bytes für system- oder sicherheitsrelevante Daten einschließen, wie Schutzinformationen, die T10-Schutzinformationsstandards erfüllen. In einigen Ausführungsformen kann jedem Host-Datenblock ein 8-Byte-Datenintegritätsfeld hinzugefügt werden, um eine erweiterte Blockgröße von 520 Bytes bereitzustellen, und kann für Schutzinformationen verwendet werden, oder kann von dem System für einen anderen Zweck verwendet werden, wenn Schutzinformationen nicht aktiviert sind. Einige Blockspeicherkonfigurationen können andere erweiterte Blockkonfigurationen einschließen, wie erweiterte Blockgrößen von 544 Bytes, 560 Bytes, 580 Bytes usw., wobei die Host-Blockgröße 512 Bytes bleibt und zu jedem Block unterschiedliche Mengen des Systemspeicherplatzes hinzugefügt werden, wie 32, 48 oder 68 Bytes erweiterter Speicherorte.
  • In einigen Ausführungsformen kann die Speichersteuerung 102 mit den Datenspeichervorrichtungen 120 über eine Netzwerkschnittstelle verbunden sein, die Teil des Host-Strukturnetzwerks 114 ist und den Speicherschnittstellenbus 108 als Host-Strukturschnittstelle einschließt. In einigen Ausführungsformen sind die Host-Systeme 112 über das Strukturnetzwerk 114 mit dem Datenspeichersystem 100 gekoppelt und die Speichersteuerung 102 kann eine Speichernetzwerkschnittstelle, einen Host-Bus-Adapter oder eine andere Schnittstelle einschließen, die in der Lage ist, Kommunikationen mit mehreren Host-Systemen 112 zu unterstützen. Das Strukturnetzwerk 114 kann ein verdrahtetes und/oder drahtloses Netzwerk einschließen (z. B. öffentliche und/oder private Computernetzwerke in beliebiger Anzahl und/oder Konfiguration), die in geeigneter Weise zum Übertragen von Daten gekoppelt werden können. Das Strukturnetzwerk kann zum Beispiel jedes Mittel eines konventionellen Datenkommunikationsnetzes einschließen, wie ein lokales Bereichsnetz (LAN), ein Weitverkehrsnetz (WAN), ein Telefonnetz, wie das öffentliche Telefonnetz (PSTN), ein Intranet, das Internet oder jedes andere geeignete Kommunikationsnetz oder jede Kombination von Kommunikationsnetzen. Aus der Perspektive der Speichervorrichtungen 120 kann der Speicherschnittstellenbus 108 als Host-Schnittstellenbus bezeichnet werden und stellt einen Host-Datenpfad zwischen den Speichervorrichtungen 120 und den Host-Systemen 112 durch die Speichersteuerung 102 und/oder eine alternative Schnittstelle zu dem Strukturnetzwerk 114 bereit.
  • Die Host-Systeme 112 oder ein entsprechender Host in einem System mit mehreren Hosts kann eine beliebige geeignete Rechenvorrichtung sein, wie beispielsweise ein Computer, ein Computerserver, ein Laptop-Computer, eine Tablet-Vorrichtung, ein Netbook, ein Internet-Kiosk, ein persönlicher digitaler Assistent, ein Mobiltelefon, ein Smartphone, eine Spielvorrichtung oder eine beliebige andere Rechenvorrichtung. Die Host-Systeme 112 werden manchmal auch als Host, Client oder Client-System bezeichnet. In einigen Ausführungsformen sind die Host-Systeme 112 Serversysteme, wie z. B. ein Serversystem in einem Rechenzentrum. In einigen Ausführungsformen sind das eine oder die mehreren Host-Systeme 112 eine oder mehrere Host-Vorrichtungen, die sich von einem Speicherknoten unterscheiden, der die Vielzahl von Speichervorrichtungen 120 und/oder die Speichersteuerung 102 aufnimmt. In einigen Ausführungsformen können die Host-Systeme 112 eine Vielzahl von Host-Systemen einschließen, die Eigentum sind, betrieben werden und/oder Anwendungen hosten, die zu einer Vielzahl von Entitäten gehören, und einen oder mehrere Qualityof-Service-Standards (QoS-Standards) für diese Entitäten und ihre Anwendungen unterstützen.
  • Die Speichersteuerung 102 kann eine oder mehrere zentrale Verarbeitungseinheiten (CPUs) oder Prozessoren 104 zum Ausführen von Rechenvorgängen, Speicherverwaltungsvorgängen, RAID-Vorgängen und/oder sonstigen Anweisungen zum Zugreifen auf Speichervorrichtungen 120 durch den Speicherschnittstellenbus 108 einschließen. In einigen Ausführungsformen können die Prozessoren 104 eine Vielzahl von Prozessorkernen einschließen, die parallelen Verarbeitungsaufgaben und/oder Verarbeitungsthreads für unterschiedliche Speichervorgänge und/oder Hostspeicherverbindungen zugewiesen oder zugeordnet werden können. In einigen Ausführungsformen kann der Prozessor 104 konfiguriert sein, um eine Strukturschnittstelle für Kommunikationen durch das Strukturnetzwerk 114 und/oder Speicherschnittstellenprotokolle für die Kommunikation durch den Speicherschnittstellenbus 108 und/oder den Steuerbus 110 auszuführen. In einigen Ausführungsformen kann eine separate Netzwerkschnittstelleneinheit und/oder Speicherschnittstelleneinheit (nicht gezeigt) das Netzwerkschnittstellenprotokoll und/oder das Speicherschnittstellenprotokoll und zugehörige Prozessor- und Speicherressourcen bereitstellen.
  • Die Speichersteuerung 102 kann einen Speicher 106 einschließen, der konfiguriert ist, um eine RAID-Steuerung 150 zwischen Host-Systemen 112 und Speichervorrichtungen 120 zu unterstützen, um die Speicherung von über die Speichervorrichtungen 120 verteilter redundanter Daten für die Datenzuverlässigkeit und -wiederherstellung zu verwalten. In einigen Ausführungsformen kann die RAID-Steuerung 150 für die selektive Wiederherstellung von RAID-Streifen konfiguriert sein, wenn die Vorgänge einer oder mehrerer der Speichervorrichtungen 120 vorübergehend unterbrochen werden, was zu unvollständigen RAI D-Streifen führt. Zum Beispiel kann die RAID-Steuerung 150 konfiguriert sein, um die Streifen zu bestimmen und wiederherzustellen, die während oder nach der Unterbrechung geschrieben oder aktualisiert wurden. Eine Betriebsunterbrechung der Speichervorrichtung kann jedes Ereignis einschließen, das eine Speichervorrichtung vorübergehend nicht verfügbar macht, um einen oder mehrere zugewiesene Blöcke eines RAID-Streifens zu schreiben, und führt dazu, dass die Speichervorrichtung auf Befehle oder Vorgänge von der Speichersteuerung 102 nicht reagiert. Zum Beispiel kann eine Speichervorrichtung Leistungs-, Netzwerk- und/oder Speicherschnittstellenverbindungen (mit dem Speicherschnittstellenbus 108 und/oder dem Steuerbus 110) aufgrund von losen physischen Verbindungen oder Manipulation der Kabel, der Montage, des Gehäuses oder anderer Rack-Komponenten verlieren, in denen die Speichervorrichtung betrieben wird, und diese Unterbrechungen können schnell wiederhergestellt werden. Eine beispielhafte Ursache dafür, dass eine Speichervorrichtung vorübergehend nicht verfügbar ist, kann ihr versehentliches Entfernen aus dem Schlitz oder dem Feld, in dem sie montiert ist, gefolgt von dem Austausch, sobald der Fehler erkannt wird, sein. Ein weiteres Beispiel kann ein versehentlicher oder ungleichmäßiger Leistungszyklus einzelner Speichervorrichtungen sein.
  • Die RAID-Steuerung 150 kann eine Blockschreibfunktion 152 und eine Unterbrechungswiederherstellungsfunktion 154 einschließen, um die selektive Wiederherstellung unvollständiger RAID-Streifen zu unterstützen. In einigen Ausführungsformen kann die Blockschreibfunktion 152 konfiguriert sein, um einen Zeitzählerwert zu jedem RAID-Block hinzuzufügen, der in den Speichervorrichtungen 120 gespeichert ist. Zum Beispiel kann jeder RAID-Block zusätzliche Metadaten einschließen, die einen Zeitzählerwert einschließen, der durch die RAID-Steuerung 150 bestimmt wird und über alle RAID-Blöcke und RAID-Streifen, die während eines bestimmten Zeitfensters geschrieben werden, gemeinsam genutzt wird. In einigen Ausführungsformen kann der Zeitzählerwert, der in einen bestimmten RAID-Block geschrieben wird, als ein Blockzeitwert an den zusätzlichen Speicherorten gespeichert werden, die durch ein erweitertes Blockformat bereitgestellt werden. Blockzeitwerte können später verwendet werden, um zu bestimmen, welche Blöcke (und entsprechenden Streifen) vollständig sind, und alle unvollständigen Streifen identifizieren, die sich aus einer Speichervorrichtungsunterbrechung ergeben.
  • Die Unterbrechungswiederherstellungsfunktion 154 kann konfiguriert sein, um auf eine Unterbrechung der Speichervorrichtung zu reagieren und die Blockzeitwerte zu verwenden, die durch die Blockschreibfunktion 152 geschrieben werden, um den Umfang einer teilweisen Wiederherstellung zu bestimmen. In einigen Ausführungsformen kann die Unterbrechungswiederherstellungsfunktion 154 konfiguriert sein, um zu arbeiten, wenn ein RAID-Satz, wie die Speichervorrichtungen 120.1-120.n, aufgrund des Betriebsverlusts mindestens einer Speichervorrichtung in einen verschlechterten Zustand eintritt. Sobald der Betriebsverlust feststeht, kann die RAID-Steuerung 150 während eines gewissen konfigurierbaren Wartezeitraums warten, um die Rückkehr der verloren gegangenen Speichervorrichtung zu erkennen und zu verifizieren, ob die zurückgekehrte Speichervorrichtung dieselbe Speichervorrichtung ist, die verloren gegangen war (und keine Ersatzspeichervorrichtung), wie durch Vergleichen von Speichervorrichtungssignaturwerten. Beim Bestimmen einer Betriebsunterbrechung kann die Unterbrechungswiederherstellungsfunktion 154 die Blockzeitwerte der letzten Blöcke, die durch die unterbrochene Speichervorrichtung gespeichert sind, mit den Blockzeitwerten des letzten Blocks vergleichen, die von mindestens einer der ununterbrochenen Speichervorrichtungen gespeichert sind, um einen oder mehrere unvollständige RAID-Streifen zu bestimmen. Wenn für jeden unvollständigen RAID-Streifen die fehlenden Datenblöcke aus der unterbrochenen Speichervorrichtung innerhalb der Wiederherstellungsfähigkeiten der RAID-Konfiguration liegen und die Datenblöcke (einschließlich Paritätsdaten) in den ununterbrochenen Speichervorrichtungen gespeichert sind, kann eine Unterbrechungswiederherstellungsfunktion 154 eine teilweise Wiederherstellung des RAID-Satzes initiieren, die nur auf die unvollständigen RAID-Streifen abzielt. Nach Abschluss der Wiederherstellung der unvollständigen RAID-Streifen kann der teilweise wiederhergestellte (und nun vollständige) RAID-Satz den verschlechterten Zustand verlassen und zum normalen Betrieb zurückkehren.
  • In einigen Ausführungsformen schließt das Datenspeichersystem 100 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, ein Display und/oder andere Benutzerschnittstellenkomponenten wie eine Tastatur, einen Touchscreen, eine Maus, ein Trackpad, eine digitale Kamera und/oder eine beliebige Anzahl von zusätzlichen Vorrichtungen ein, um Funktionalität hinzuzufügen. In einigen Ausführungsformen hat das Datenspeichersystem 100 kein Display und keine anderen Benutzerschnittstellenkomponenten.
  • Die 2a und 2b zeigen schematische Darstellungen der Verwendung von Blockzeitwerten zum Bestimmen unvollständiger RAID-Streifen. 2a zeigt den Zustand des Speichersystems 200 zu einem ersten Zeitpunkt vor einer Betriebsunterbrechung. 2b zeigt den Zustand des Speichersystems 200 zu einem zweiten Zeitpunkt, nachdem eine Betriebsunterbrechung aufgetreten ist, der RAID-Satz in einen verschlechterten Zustand eingetreten ist und die RAID-Streifen für eine teilweise Wiederherstellung bestimmt werden müssen. In einigen Ausführungsformen kann das Speichersystem 200 ähnlich wie das Datenspeichersystem 100 in 1 konfiguriert sein, aber mit der RAID-Steuerung, die auf der Host-Ebene implementiert ist, z. B. im Host 210, und den Datenspeichervorrichtungen, die in den Laufwerken 220 (z. B. HDDs oder SSDs) implementiert sind.
  • Das Bestimmen der unvollständigen RAID-Streifen für eine teilweise Wiederherstellung kann eine schnellere Rekonstruktion (Rekonstruktion nur von desynchronisierten Sektoren) ermöglichen, indem Blockzeitwerte in Systemdatenbytes für jeden RAID-Block oder Sektor in den Laufwerken 220.1-220.n gespeichert werden. Zum Beispiel können Blockzeitwerte unter Verwendung speziell formatierter Laufwerke gespeichert werden, wie Schutzinformations-(PI-) -formierter Laufwerke, die ein Systemdatenbyteslaufwerk über die 512-Byte-Daten des Benutzers des Sektors (z. B. 520- oder 528-Bytes-Sektoren usw.) hinaus einschließen. Eine ähnliche Strategie kann für 4K-Laufwerke oder andere Laufwerksformatierungen mit zusätzlichem Systemraum pro Block gelten. Der Systemraum für jeden Sektor/Block kann verwendet werden, um Zählerinformationen für einen besseren Wiederherstellungsprozess zu speichern. In einigen Ausführungsformen kann der Systemraum mehrere Systemmerkmale unterstützen, wie sowohl das Datenintegritätsfeld für PI als auch den Blockzeitwert für Zählerinformationen. In den 2a und 2b sind nur die Blockzeitwerte 323.1 und 232.2 gezeigt und jeder Blockzeitwert würde mit dem entsprechenden Host-Datenblock (einschließlich Paritätsblöcken) in den jeweiligen Laufwerken 220 für die Streifen 230 gespeichert werden. Es werden weitere Streifen 230.5-230.n gezeigt, um zu veranschaulichen, dass eine beliebige Anzahl von Streifen in den RAID-Satz geschrieben werden kann und die entsprechenden Blockzeitwerte der Kürze wegen weggelassen werden. Es ist zu beachten, dass die Streifenreihenfolge in den 2a und 2b nicht notwendigerweise der Reihenfolge entspricht, in der die Streifen geschrieben und/oder aktualisiert werden.
  • Der Host 210 kann konfiguriert sein, um einen Zeitzähler 214 mit einer definierten Granularität zu halten, im Allgemeinen ein Zeitfenster, das größer als die normalen Takt- oder Zeitstempelinkremente ist, wie eine Minute. Die Verwendung größerer Zeitgranularitäten reduziert den Schreibzeit-Overhead zum Verfolgen und Speichern des Zeitzählers 214, kann aber die Anzahl der nicht-synchronisierten oder unbekannten Streifen, die aus einer gegebenen Unterbrechung resultieren, ausgleichen. Der Host schreibt die Host-Daten in RAID-Blöcken im Sektor jedes Laufwerks zusammen mit dem Zeitzähler im Systemraum. Für jeden vollständigen RAID-Streifen würden alle Sektoren innerhalb des Streifens den gleichen oder einen ähnlichen Zeitzähler aufweisen. Zum Beispiel beträgt jeder Blockzeitwert für Streifen 230.1 123, für Streifen 230.3 101 und für Streifen 230.4 1000. In einigen Ausführungsformen wird der Granularitätswert so eingestellt, dass mehrere RAID-Streifen innerhalb des Fensters jedes Zeitzählerwerts geschrieben werden können. Zum Beispiel können mehrere Streifen in dem Zeitzähler 101, 123 und 1000 geschrieben werden. Periodisch, wie bei jedem Inkrement, basierend auf dem Granularitätswert, kann der Host 210 den Host-Zeitzähler in RAID-Metadaten 212 aktualisieren.
  • Zu einem ersten Zeitpunkt in 2a zeigen Blockzeitwerte 232.1 die Streifen-/Sektorschreibung im Laufe der Zeit an. Das neuste (letzte oder jüngste) Schreiben erfolgte auf dem Streifen 230.4 mit dem Zeitzähler (TC) 1000. In einigen Ausführungsformen kann der jüngste Zeitzählerwert (Blockzeitwert) periodisch in Laufwerksmetadaten 222 in jedem Laufwerk 220 geschrieben werden, um das schnelle Identifizieren des letzten Zeitfensters zu unterstützen, in dem das Laufwerk zugewiesene Blockschreibvorgänge abgeschlossen hat.
  • In 2b geht das Laufwerk 220.3 zu einem zweiten Zeitpunkt nach dem ersten Zeitpunkt für einen kurzen Zeitraum offline und kommt zurück. Innerhalb dieser Offline-Zeit wird nur der Streifen 230.2 aktualisiert. Wenn das Laufwerk 220.3 wieder online ist, kann der Host 210 Metadaten (z. B. Blockzeitwerte) verwenden, um zu bestimmen, welche RAID-Streifen unvollständig oder nicht synchronisiert sind, und nur diese Streifen aktualisieren. In 2b kann der Host 210 bestimmen, dass der letzte Block, der in das unterbrochene Laufwerk 220.3 geschrieben wurde, der Streifen 230.4 mit einem Blockzeitwert von 1000 war (entspricht dem Zeitzähler, während dessen der Block geschrieben wurde). Daher sind alle Streifen, die in den Zeitzählern größer als 1000 geschrieben werden, unvollständig, da das Laufwerk 220.3 nicht beim Schreiben seiner zugewiesenen Blöcke teilnahm (oder dessen Teilnahme garantiert werden kann). Der Host 210 kann Blockzeitwerte für beliebige der Laufwerke abtasten, die nicht unterbrochen waren (ununterbrochene Laufwerke 220.1, 220,2, 220.n), um Streifen zu identifizieren, die Blöcke aufweisen, die mit höheren Zeitzählerwerten geschrieben werden. In 2b wurde der Streifen 230.2 in dem Zeitzähler 1003 geschrieben oder aktualisiert und das Laufwerk 220.3 ist bei dem fehlenden Block 240 nicht synchronisiert.
  • Der Host 210 kann den Zeitzählerwert für jeden Streifen (basierend auf den Blockzeitwerten für ein ununterbrochenes Laufwerk) prüfen und die Liste unvollständiger Streifen zum Wiederherstellen bestimmen, um das Laufwerk 220.3 wieder in Synchronisation mit den anderen Laufwerken zu bringen. Zum Beispiel können die RAID-Daten, die erfolgreich auf den ununterbrochenen Laufwerken 220.1, 220.2 und 220.n gespeichert werden, verwendet werden, um die Host- und/oder Paritätsdaten für den fehlenden Block 240 zu berechnen, und dann können die rekonstruierten Daten in dem ursprünglich zugewiesenen Block in dem Laufwerk 220.3 gespeichert werden, um den Streifen 230.2 zu vervollständigen. Das Rekonstruieren nur der desynchronisierten Streifen kann die Zeit reduzieren, die im verschlechterten Zustand verbracht wird, und eine vollständige Wiederherstellung verhindern.
  • 3 zeigt eine schematische Darstellung eines Speicherknotens 302. Zum Beispiel kann die Speichersteuerung 102 als Speicherknoten 302 zum Zugreifen auf Speichervorrichtungen 120 als Speicherelemente 300 konfiguriert sein. Der Speicherknoten 302 kann einen Bus 310, einen Speicherknotenprozessor 320, einen Speicherknotenspeicher 330, eine oder mehrere optionale Eingabeeinheiten 340, eine oder mehrere optionale Ausgabeeinheiten 350, eine Kommunikationsschnittstelle 360, eine Speicherelementschnittstelle 370 und eine Vielzahl von Speicherelementen 300.1-300.10 aufweisen. In einigen Ausführungsformen können mindestens Abschnitte des Busses 310, des Prozessors 320, des lokalen Speichers 330, der Kommunikationsschnittstelle 360, der Speicherelementschnittstelle 370 eine Speichersteuerung, eine Rückwandverwaltungssteuerung, eine Netzwerkschnittstellensteuerung oder eine Host-Busschnittstellensteuerung, wie die Speichersteuerung 102, aufweisen. Der Bus 310 kann einen oder mehrere Leiter einschließen, die eine Kommunikation unter den Komponenten des Speicherknotens 302 ermöglichen. Der Prozessor 320 kann einen beliebigen Typ von herkömmlichem Prozessor oder Mikroprozessor einschließen, der Anweisungen interpretiert und ausführt. Der lokale Speicher 330 kann einen Speicher mit wahlfreiem Zugriff (Random Access Memory, RAM) oder einen anderen Typ von dynamischer Speichervorrichtung, die Informationen und Anweisungen zur Ausführung durch den Prozessor 320 speichert, und/oder einen Festwertspeicher (Read Only Memory, ROM) oder einen anderen Typ von statischer Speichervorrichtung, die statische Informationen und Anweisungen zur Verwendung durch den Prozessor 320 speichert, einschließen. Die Eingabeeinheit 340 kann einen oder mehrere herkömmliche Mechanismen einschließen, die es einem Bediener ermöglichen, Informationen in den Speicherknoten 302 einzugeben, wie eine Tastatur, eine Maus, einen Stift, eine Spracherkennung und/oder biometrische Mechanismen usw. Die Ausgabeeinheit 350 kann einen oder mehrere herkömmliche Mechanismen einschließen, die Informationen an den Bediener ausgeben, wie eine Anzeige, einen Drucker, einen Lautsprecher usw. Die Kommunikationsschnittstelle 360 kann einen beliebigen Transceiver-artigen Mechanismus einschließen, der es dem Speicherknoten 302 ermöglicht, mit anderen Vorrichtungen und/oder Systemen zu kommunizieren, zum Beispiel Mechanismen zum Kommunizieren mit anderen Speicherknoten 302 oder Host-Systemen 112. Die Speicherelementschnittstelle 370 kann eine Speicherschnittstelle, wie zum Beispiel eine SATA-Schnittstelle (Serial Advanced Technology Attachment interface), eine SCSI-Schnittstelle (Small Computer System Interface), eine PCIe (Peripheral Computer Interface express) usw. zum Verbinden des Busses 310 mit einem oder mehreren Speicherelementen 300, wie einer oder mehreren Speichervorrichtungen 120, zum Beispiel, 2-Terabyte (TB)-SATA-II-Festplattenlaufinierke oder 2-TB-NVMe-Festkörperlaufwerke (SSDs), und das Lesen und Schreiben von Daten in/aus diese(n) Speicherelemente(n) 300 steuern. Wie in 3 gezeigt, könnte ein solcher Speicherknoten 302 zehn 2-TB-SATA-I I-Plattenlaufinierke als Speicherelemente 300.1-300.10 aufweisen, und auf diese Weise würde der Speicherknoten 302 dem Speichersystem 100 eine Speicherkapazität von 20 TB bereitstellen.
  • Die Speicherelemente 300 können als redundant konfiguriert sein oder unabhängig voneinander arbeiten. Wenn in einigen Konfigurationen ein bestimmtes Speicherelement 300 ausfällt, kann seine Funktion leicht durch ein anderes Speicherelement 300 in dem Speichersystem übernommen werden. Ferner erlaubt der unabhängige Betrieb der Speicherelemente 300 eine beliebige geeignete Mischung von Typen von Speicherelementen 300, die in einem bestimmten Speichersystem 100 zu verwenden sind. Es ist möglich, beispielhafte Speicherelemente mit unterschiedlicher Speicherkapazität, Speicherelemente unterschiedlicher Hersteller unter Verwendung unterschiedlicher Hardware-Technologie wie zum Beispiel herkömmliche Festplatten und Festkörperspeicherelemente unter Verwendung unterschiedlicher Speicherschnittstellen und so weiter zu verwenden. All dies führt zu Vorteilen bezüglich der Skalierbarkeit und Flexibilität des Speichersystems 100, weil es das Hinzufügen oder Entfernen von Speicherelementen 300 ermöglicht, ohne ihrem Design in Korrelation mit anderen Speicherelementen 300, die bereits in diesem Speichersystem 100 verwendet werden, spezifische Anforderungen aufzuerlegen.
  • 4 zeigt eine schematische Darstellung eines beispielhaften Host-Systems 112. Das Host-System 112 kann einen Bus 410, einen Prozessor 420, einen lokalen Speicher 430, eine oder mehrere optionale Eingabeeinheiten 440, eine oder mehrere optionale Ausgabeeinheiten 450 und eine Kommunikationsschnittstelle 460 aufweisen. Der Bus 410 kann einen oder mehrere Leiter einschließen, welche die Kommunikation zwischen den Komponenten des Hosts 112 zulassen. Der Prozessor 420 kann einen beliebigen Typ von herkömmlichem Prozessor oder Mikroprozessor einschließen, der Anweisungen interpretiert und ausführt. Der lokale Speicher 430 kann einen Speicher mit wahlfreiem Zugriff (Random Access Memory, RAM) oder einen anderen Typ von dynamischer Speicherungsvorrichtung, die Informationen und Anweisungen zur Ausführung durch den Prozessor 420 speichert, und/oder einen Festwertspeicher (Read Only Memory, ROM) oder einen anderen Typ von statischer Speichervorrichtung, die statische Informationen und Anweisungen zur Verwendung durch den Prozessor 420 speichert, und/oder ein beliebiges geeignetes Speicherelement, wie eine Festplatte oder ein Solid-State-Speicherelement, einschließen. Eine optionale Eingabeeinheit 440 kann einen oder mehrere herkömmliche Mechanismen einschließen, die es einem Bediener ermöglichen, Informationen in den Host 112 einzugeben, wie eine Tastatur, eine Maus, einen Stift, eine Spracherkennung und/oder biometrische Mechanismen usw. Die optionale Ausgabeeinheit 450 kann einen oder mehrere herkömmliche Mechanismen einschließen, die Informationen an den Bediener ausgeben, wie ein Display, einen Drucker, einen Lautsprecher usw. Die Kommunikationsschnittstelle 460 kann jeden Transceiverähnlichen Mechanismus einschließen, der es dem Host 112 ermöglicht, mit anderen Vorrichtungen und/oder Systemen zu kommunizieren.
  • 5 zeigt schematisch ausgewählte Module eines Speichersystems 500, das zum selektiven Wiederherstellen von unterbrochenen Speichervorrichtungen konfiguriert ist. Das Speichersystem 500 kann Elemente und Konfigurationen enthalten, die denen in 1-4 ähnlich sind. In der gezeigten Konfiguration ist eine Steuerung 502 konfiguriert, um RAID-Steuerungsfunktionen auszuführen. Zum Beispiel kann die Steuerung 502 in einem Host-System, einer Speichersteuerung, einer dedizierten RAID-Steuerung oder einer anderen Vorrichtung ausgeführt sein, die konfiguriert ist, um die RAID-Blockzuweisung und die Wiederherstellung für einen Satz von Datenspeichervorrichtungen zu verwalten, die in einem RAID-Satz konfiguriert sind. In einigen Ausführungsformen können die Komponenten und Funktionen der Steuerung 502 unter mehreren Systemen unterteilt werden, wie zum Beispiel separate RAID-Schreib- und RAID-Wiederherstellungssysteme. Die Datenspeichervorrichtung 504 stellt eine beispielhafte Speichervorrichtung oder Festplattenkonfiguration für das Speichersystem 500 bereit. Mehrere Instanzen der Datenspeichervorrichtung 504 können im Speichersystem 500 vorhanden sein und können im Allgemeinen der Anzahl von Datenspeichervorrichtungen in dem RAID-Satz für eine gegebene Implementierung entsprechen.
  • Die Steuerung 502 und die Datenspeichervorrichtung 504 können jeweils mindestens einen Bus 510, 550, der mindestens einen Prozessor 512, 552, mindestens einen Speicher 514, 554 und mindestens eine Schnittstelle, wie die Speicherschnittstelle 516 und die Host-Schnittstelle 556 verbindet, einschließen. Der Bus 510, 550 kann einen oder mehrere Leiter einschließen, die jeweils eine Kommunikation unter den Komponenten der Steuerung 502 und der Datenspeichervorrichtung 504 erlauben. Der Prozessor 512, 552 kann jede Art von Prozessor oder Mikroprozessor einschließen, der Anweisungen oder Vorgänge interpretiert und ausführt. Der Speicher 514, 554 kann einen Direktzugriffsspeicher (RAM) oder eine andere Art von dynamischer Speichervorrichtung, die Informationen und Anweisungen zur Ausführung durch den Prozessor 512, 552 speichert, und/oder einen Nur-Lese-Speicher (ROM) oder eine andere Art von statischer Speichervorrichtung, die statische Informationen und Anweisungen zur Verwendung durch den Prozessor 512, 552 speichert, und/oder ein beliebiges geeignetes Speicherelement wie eine Festplatte oder ein Festkörperspeicherelement einschließen.
  • Die Speicherschnittstelle 516 und die Host-Schnittstelle 556 können physische Schnittstellen zum Verbinden der Steuerung 502 mit einer oder mehreren Datenspeichervorrichtungen 504 unter Verwendung eines Schnittstellenprotokolls, das den Speichervorrichtungszugriff unterstützt, einschließen. Zum Beispiel können die Speicherschnittstelle 516 und die Host-Schnittstelle 556 jeweils eine PCIe oder einen ähnlichen Speicherschnittstellenverbinder einschließen, der NVMe-Zugang zu Festkörpermedien, die nichtflüchtige Speichervorrichtungen 560 aufweisen, unterstützt. Wie vorstehend beschrieben, können andere Netzwerk- und/oder Peripherieschnittstellenstandards für die Speicherschnittstelle 516 und die Host-Schnittstelle 556 verwendet werden.
  • Die Steuerung 502 und die Datenspeichervorrichtung 504 können jeweils eine oder mehrere nichtflüchtige Speichervorrichtungen 520, 560 oder ähnliche Speicherelemente einschließen. Zum Beispiel können nichtflüchtige Speichervorrichtungen 520 Onboard-Flash-Speicher und/oder Datenspeichervorrichtungen einschließen, die konfiguriert sind, um System- und Metadatenspeicher für die Steuerung 502 bereitzustellen, und nichtflüchtige Speichervorrichtungen 560 können Flash-Speicherpakete einer SSD, ein Magnetplattensubsystem (z. B. Lese-/Schreibkanal, Servosteuerung, Köpfe und Medien) eines HDD oder ein anderes nichtflüchtiges Speichersystem einschließen, das als adressierbares Speicherarray organisiert ist. In einigen Ausführungsformen können die nichtflüchtigen Speichervorrichtungen 520, 560 NAND- oder NOR-Flash-Speichervorrichtungen einschließen, die aus einstufigen Zellen (SLC), mehrstufigen Zellen (MLC), dreistufigen Zellen, vierstufigen Zellen usw. bestehen.
  • Die Steuerung 502 kann eine Vielzahl von Modulen oder Subsystemen einschließen, die im Speicher 514 gespeichert und/oder instanziiert werden, um vom Prozessor 512 als Anweisungen oder Vorgänge ausgeführt zu werden. Zum Beispiel kann der Speicher 514 einen Speichermanager 530 einschließen, der konfiguriert ist, um Host-Befehle zu empfangen und entsprechende Lese-, Schreib- und andere Vorgänge zu Datenspeichervorrichtungen, wie die Datenspeichervorrichtung 504, zu verwalten. Der Speicher 514 kann eine RAID-Steuerung 540 einschließen, die konfiguriert ist, um RAID-Schreibvorgänge, RAID-Metadaten und RAID-Wiederherstellungsvorgänge, die eine Vielzahl von Datenspeichervorrichtungen beinhalten, die in einem RAID-Satz konfiguriert sind, einschließlich der Datenspeichervorrichtung 304 zu verwalten.
  • Der Speichermanager 530 kann Schnittstellenprotokolle und/oder Funktionen und Parameter zum Empfangen, Parsen, Reagieren auf und sonstigem Verwalten von Anforderungen von Host-Knoten oder -Systemen (oder die von anderen Anwendungen, die auf einem System, das die Steuerung 502 einschließt, erzeugt werden) für eine Vielzahl von Datenspeichervorrichtungen einschließen, die in einem RAI D-Satz konfiguriert sind, der durch die RAID-Steuerung 540 verwaltet wird. Der Speichermanager 530 kann zum Beispiel Funktionen zum Empfangen und Verarbeiten von Host-Speicheranforderungen zum Lesen, Schreiben, Ändern oder anderweitigen Manipulieren von Datenblöcken und ihrer jeweiligen Client- oder Host-Daten und/oder Metadaten in Übereinstimmung mit Host-Kommunikations- und Speicherprotokollen einschließen. In einigen Ausführungsformen kann der Speichermanager 530 auch Funktionen zum Verwalten der Leistungsverwaltung, Konfiguration, Initialisierung der Datenspeichervorrichtung und/oder andere Verwaltungsfunktionen der Datenspeichervorrichtung einschließen.
  • In einigen Ausführungsformen kann der Speichermanager 530 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so konfiguriert sind, dass sie den Prozessor 512 und den Speicher 514 nutzen, um definierte Vorgänge des Speichermanagers 530 zu handhaben oder zu verwalten. Zum Beispiel kann der Speichermanager 530 ein Speicherschnittstellenprotokoll 532 einschließen, das konfiguriert ist, um den physischen, Transport- und Speicheranwendungsprotokollen zu entsprechen, die vom Host und/oder Datenspeichervorrichtungen für Kommunikation über die Speicherschnittstelle 516 unterstützt werden. Der Speichermanager 530 kann einen Host-Befehlshandler 534 einschließen, der konfiguriert ist, um Host-Speicherungsbefehle zu empfangen und entsprechende Speicherungsbefehle oder -vorgänge zu bestimmen, die in Bezug auf die Datenspeichervorrichtungen ausgeführt werden sollen. Der Host-Befehlshandler 534 kann die RAID-Steuerung 540 zum Schreiben, Löschen und für andere Vorgänge aufrufen, die Host-Daten beeinflussen, die gemäß einer RAID-Konfiguration gespeichert sind. Der Speichermanager 530 kann einen Vorrichtungsunterbrechungsdetektor einschließen, der konfiguriert ist, um zu bestimmen, wann Operationen an eine oder mehrere Datenspeichervorrichtungen unterbrochen werden.
  • In einigen Ausführungsformen kann das Speicherschnittstellenprotokoll 532 einen oder mehrere Standards für Konformität in Bezug auf Kommunikation, einen Befehl und Syntaxfunktionen, Verfahren und Datenstrukturen unterstützen. Zum Beispiel kann das Speicherschnittstellenprotokoll 532 PCIe-, SATA-, SCSI- (Small Computer Peripheral Interface), SAS- (Serial Attached SCSI), FC- (Fibre Channel), USB- (Universal Serial Bus) und/oder netzwerkgebundene Speicherschnittstellen unterstützen und kann Speicherprotokolle mit höherer Ebene wie NVMe und RDMA und/oder Netzwerkprotokolle wie Übertragungssteuerungsprotokoll/Internetprotokoll (TCP/IP) unterstützen. In einigen Ausführungsformen kann das Speicherschnittstellenprotokoll 532 sicherstellen, dass die Steuerung 502 mit einer Host-Anforderung, einem Befehl und einer Antwortsyntax zum Interagieren mit der Datenspeichervorrichtung 504 über die Speicherschnittstelle 516 und die Host-Schnittstelle 556 konform ist.
  • In einigen Ausführungsformen kann der Host-Befehlshandler 534 Schnittstellen, Funktionen, Parameter und/oder Datenstrukturen einschließen, um Speicherungsanforderungen zu handhaben, die auf die Datenspeichervorrichtungen gerichtet sind. Zum Beispiel kann ein Host oder eine Anwendung eine beliebige Anzahl von Speicherungsbefehlen, die auf Daten abzielen, die in dem RAID-Satz der Datenspeichervorrichtungen gespeichert sind, an die Steuerung 502 senden. Der Host-Befehlshandler 534 kann die eingehenden Speicherungsbefehle parsen und validieren und dann den Speicherungsbefehl an einen Speicherbefehlsprozessor weiterleiten. In einigen Ausführungsformen kann der Host-Befehlshandler 534 Speicherungsbefehle, die auf Daten abzielen, die in dem RAID-Satz gespeichert sind oder in diesem gespeichert werden sollen, an die RAID-Steuerung 540 weiterleiten. Der Host-Befehlshandler 534 kann auch Rückpfade für Antworten aus den Speicherungsbefehlen aufrechterhalten, die dann an den anfordernden Host oder die anfordernde Host-Anwendung zurückgegeben werden können.
  • Der Vorrichtungsunterbrechungsdetektor 536 kann Schnittstellen, Funktionen, Parameter und/oder Datenstrukturen zum Verwalten von Speicherschnittstellenverbindungen mit den Speichervorrichtungen in dem RAID-Satz und Bestimmen, wann eine Betriebsverbindung mit einer oder mehreren der Speichervorrichtungen verloren geht, einschließen. Zum Beispiel kann der Vorrichtungsunterbrechungsdetektor 536 eine Kommunikations- und/oder Leistungsverbindung mit jeder Speichervorrichtung überwachen und/oder Status- oder Fehlermeldungen in Bezug auf Befehle oder andere Kommunikationen mit jeder Speichervorrichtung empfangen. In einigen Ausführungsformen kann ein Betriebsverlustdetektor 536.1 konfiguriert sein, um einen Kommunikations- oder Betriebsverlustzustand für eine Speichervorrichtung zu bestimmen. Zum Beispiel kann der Betriebsverlustdetektor 536.1 ein Leistungssignal, eine Kommunikationsping, eine Befehlsfehlerüberwachung oder einen anderen Indikator des Betriebsverlusts verwenden, um zu bestimmen, wann die Verbindung mit einer Speichervorrichtung verloren gegangen ist. In einigen Ausführungsformen kann der Betriebsverlust einer beliebigen Speichervorrichtung einen Zustands- oder Fehlerindikator erzeugen, der an die RAID-Steuerung 540 und/oder andere Systemkomponenten weitergeleitet wird, der angibt, dass eine Speichervorrichtung nicht mehr für Speichervorgänge verfügbar ist oder reagiert. Zum Beispiel kann der Betriebsverlust einen verschlechterten Zustand für den RAID-Satz als Reaktion auf einen potenziellen Ausfall einer der Speichervorrichtungen auslösen.
  • In einigen Ausführungsformen kann der Vorrichtungsdetektor 536.2 eine Schnittstellenfunktion zum Erkennen des Vorhandenseins einer Datenspeichervorrichtung sein. Zum Beispiel kann eine verloren gegangene Speichervorrichtung einem bestimmten Schlitz, einem bestimmten Feld, einer bestimmten Schnittstellenverbindung oder einer anderen physischen Verbindung zugeordnet werden, und ein Vorrichtungsdetektor 536.2 kann die physische Verbindung für die Initialisierung, den Handshake oder einen anderen Indikator, dass sich eine neue Speichervorrichtung in derselben Position verbunden hat, überwachen. Das Erscheinungsbild einer Speichervorrichtung kann einen Verifizierungsprozess auslösen, um die Identität, Konfiguration und/oder andere Informationen bezüglich der neuen Speichervorrichtung zu bestimmen. Zum Beispiel kann beim Einschalten, Initialisieren oder Verbinden einer Speichervorrichtung die Signaturprüfung 536.3 durch Lesen einer Vorrichtungssignatur 560.4 ausgeführt werden, die in der Speichervorrichtung gespeichert ist, um eine eindeutige Kennung oder Signatur dieser Speichervorrichtung zu bestimmen. In einigen Ausführungsformen kann die Signaturprüfung 536.3 die Signatur der neuen Speichervorrichtung mit der Signatur der Speichervorrichtung vergleichen, mit der die Verbindung verloren gegangen war, um zu bestimmen, ob sie dieselbe Datenspeichervorrichtung sind. Wenn die Signaturen der zwei Speichervorrichtungen übereinstimmen, kann der Vorrichtungsunterbrechungsdetektor 536 bestimmen, dass eine Vorrichtungsunterbrechung aufgetreten ist, und die Vorrichtungsunterbrechung an die RAID-Steuerung 540 übermitteln, um zu bestimmen, ob die Wiederverbindung derselben Vorrichtung eine teilweise Wiederherstellung ermöglichen kann, um den verschlechterten Zustand des RAID-Satzes zu korrigieren. Wenn die Signaturen der zwei Speichervorrichtungen nicht übereinstimmen, kann der Vorrichtungsunterbrechungsdetektor 536 bestimmen, dass eine Ersatzvorrichtung bereitgestellt wurde, und das Vorhandensein der Ersatzvorrichtung an die RAID-Steuerung für eine vollständige Wiederherstellung übermitteln.
  • Die RAID-Steuerung 540 kann ein Schnittstellenprotokoll und/oder einen Satz von Funktionen und Parametern zum Lesen, Schreiben und Löschen von Dateneinheiten in einer oder mehreren RAID-Konfigurationen in den Datenspeichervorrichtungen einschließen, die mit der Steuerung 502 verbunden sind, wie der Datenspeichervorrichtung 504. Darüber hinaus kann die RAID-Steuerung 540 Funktionen zum Deaktivieren von Speichervorgängen an einen RAID-Satz, der in einen verschlechterten Zustand eingetreten ist, und zum Durchführen von teilweisen oder vollständigen Wiederherstellungen, um den RAI D-Satz wieder in den normalen Betrieb zu versetzen, einschließen. Die RAID-Steuerung 540 kann Funktionen zum Ausführen von Host-Datenvorgängen, die mit Host-Speicherbefehlen verknüpft sind, die durch den Host-Befehlshandler 534 empfangen werden, einschließen. Zum Beispiel können PUT- oder Schreibbefehle konfiguriert werden, um Host-Dateneinheiten in den RAID-Satz zu schreiben. GET- oder Lesebefehle können konfiguriert werden, um Daten aus dem RAID-Satz zu lesen. DELETE-Befehle können so konfiguriert werden, dass sie Daten aus dem RAID-Satz löschen oder mindestens einen Datenort zur Löschung markieren, bis eine zukünftige Speicherbereinigung oder ein ähnlicher Vorgang die Daten tatsächlich löscht oder den physischen Speicherplatz für einen anderen Zweck neu zuweist. In einigen Ausführungsformen kann die RAID-Steuerung 540 konfiguriert sein, um Host-Speicherungsbefehle zuzuweisen, um eine redundante Speicherung zwischen den Datenspeichervorrichtungen in dem RAID-Satz bereitzustellen. Zum Beispiel können Host-Datenblöcke in RAID-Blöcke geschrieben, aggregiert oder unterteilt werden und können Paritätsberechnungen durchgeführt werden, um einen oder mehrere zusätzliche Paritätsblöcke zu erzeugen, um einen RAID-Streifen zu erzeugen und zu speichern, der in der Lage ist, Daten (bis zu einem definierten Pegel von ausgefallenen Speichervorrichtungen und/oder entsprechenden verlorengegangenen RAID-Blöcken) zu rekonstruieren.
  • In einigen Ausführungsformen kann die RAID-Steuerung 540 eine Vielzahl von Hardware- und/oder Software-Modulen einschließen, die konfiguriert sind, um den Prozessor 512 und den Speicher 514 zu verwenden, um definierte Vorgänge der RAID-Steuerung 540 zu handhaben oder zu verwalten. Zum Beispiel kann die RAID-Steuerung 540 eine RAID-Konfiguration 542 einschließen, die konfiguriert ist, um einen oder mehrere RAID-Sätze, RAID-Stufen und andere Parameter zu definieren, die den Betrieb der RAID-Speicher- und -wiederherstellungsprozesse definieren. Die RAID-Steuerung 540 kann eine RAID-Schreib-Engine 544 einschließen, die konfiguriert ist, um RAID-Datenblöcke für jeden RAID-Streifen in den RAID-Satz von Datenspeichervorrichtungen zu schreiben. Die RAID-Steuerung 540 kann einen Wiederherstellungsmanager 546 einschließen, der konfiguriert ist, um teilweise oder vollständige Wiederherstellungen auszuführen, um die Host-Daten in dem RAID-Satz nach einem Datenverlust (oder einem möglichen Datenverlust) wiederherzustellen.
  • Die RAID-Konfiguration 542 kann Schnittstellen, Funktionen, Parameter und/oder Datenstrukturen einschließen, um eine spezifische RAID-Konfiguration für einen oder mehrere RAID-Sätze zu definieren, die von der RAID-Steuerung 540 verwaltet werden. Zum Beispiel: Die RAID-Konfiguration 542 kann in einer Konfigurationsdatei, Seite, Tabelle oder einer ähnlichen Datenstruktur ausgeführt sein, die einen Satz von RAID-Konfigurationsparametern für einen bestimmten RAID-Satz bereitstellt. In einigen Ausführungsformen können die RAID-Konfigurationsparameter eine Anzahl von Speichervorrichtungen, eindeutige Kennungen (wie Speichervorrichtungssignaturwerte) für jede Speichervorrichtung, Kapazität und/oder andere technische Spezifikationen für jede Speichervorrichtung, RAID-Ebene (RAID 4, RAID 5, RAID 6 usw.), Paritätsparameter, RAID-Metadatenparameter, Wiederherstellungsparameter usw. einschließen. In einigen Ausführungsformen können ein oder mehrere RAID-Konfigurationsparameter durch eine Befehlsleitung oder eine Verwaltungsschnittstelle benutzerkonfigurierbar sein. Benutzerkonfigurierbare RAID-Konfigurationsparameter können einen oder mehrere Parameter einschließen, die speziell auf die teilweise Wiederherstellung von unterbrochenen Datenspeichervorrichtungen bezogen sind. Zum Beispiel können der Granularitätsschwellenwert 544.3, die Unterbrechungs- und/oder Wiederherstellungsschwellenwerte für den Wiederherstellungsmanager 546, das Aktivieren oder Deaktivieren der Speicherung des Vorrichtungszeitwerts 560.1 in jeder Speichervorrichtung usw. benutzerkonfigurierbare Parameter sein, wie weiter unten erörtert.
  • Die RAID-Schreib-Engine 544 kann Schnittstellen, Funktionen, Parameter und/oder Datenstrukturen einschließen, um zu verwalten, wie Host-Daten an die Speichervorrichtungen in dem RAID-Satz gesendet werden. Zum Beispiel können Host-Speicherungsbefehle zum Schreiben in oder Aktualisieren von Host-Datenblöcken in dem RAID-Satz geparst und in RAID-Datenblöcken zur Speicherung in der Speichervorrichtung zugewiesen werden. In einigen Ausführungsformen kann die RAID-Schreib-Engine 544 einen oder mehrere Algorithmen und zugehörige Puffer zum Empfangen, Aggregieren, Teilen und/oder anderweitigen Zuweisen von Host-Daten in einen Satz von RAID-Blöcken einschließen, die Host-Daten und entsprechende Paritätsdaten einschließen. Für neue RAID-Streifen kann der RAID-Blockverteiler 544.1 bestimmen, welche RAID-Blöcke in welche Speichervorrichtungen in dem RAID-Satz für jeden RAID-Streifen geschrieben werden. Zum Beispiel kann der RAID-Blockverteiler 544.1 konfiguriert sein, um Paritätsblöcke über Speichervorrichtungen in einer RAID 5- oder RAID 6-Konfiguration zu verteilen. Die RAID-Schreib-Engine 544 kann konfiguriert sein, um einen Schreib- oder PUT-Befehl an jede Speichervorrichtung für ihre jeweiligen RAID-Blöcke auszuführen, die von dem RAID-Blockverteiler 544.1 zugewiesen werden.
  • In einigen Ausführungsformen kann die RAID-Schreib-Engine 544 einen Zeitzähler 544.2 einschließen, der konfiguriert ist, um Zeitintervalle zum Schreiben von RAID-Streifen und Anhängen von Blockzeitwerten an jeden RAID-Block, wenn er geschrieben wird, zu bestimmen. Zum Beispiel kann der Zeitzähler 544.2 einen Zeitzählerwert einschließen, der periodisch inkrementiert wird, um einen einheitlichen Zeitwert bereitzustellen, der durch den Zeitzählerschreiber 544.4 mit jedem RAID-Datenblock geschrieben werden kann. In einigen Ausführungsformen kann das Inkrement des Zeitzählers 544.2 auf einer Taktzeit basieren, die der RAID-Steuerung 540 und/oder der Steuerung 502 zugeordnet ist. In einigen Ausführungsformen kann ein Granularitätsschwellenwert 544.3 konfiguriert sein, um Zeitinkremente bereitzustellen, die größer sind als Taktzeitinkremente, und die Frequenz, mit der sich der Zeitzähler 544.2 ändert, reduzieren. Beispielsweise kann der Granularitätsschwellenwert 544.3 einen konfigurierbaren Zeitparameter einschließen, wie alle 10 Sekunden oder jede Minute. In einer alternativen Ausführungsform kann der Granularitätsschwellenwert 544.3 auf anderen Werten, wie einer Anzahl von RAID-Streifen, die geschrieben werden (z. B. alle 5 RAID-Streifen), dem Zeitinkrement seit ein letzter RAID-Streifen geschrieben wurde (5 Sekunden ab dem Zeitpunkt, in dem der letzte Satz von RAID-Blockschreibvorgängen an die Speichervorrichtungen gesendet wurde), nach dem Empfang von Schreibantworten für jeden RAID-Datenblock in einem vorherigen RAID-Streifen oder anderen Ereignissen und/oder zeitbasierten Auslösern basieren. In einigen Ausführungsformen kann ein Benutzer den Granularitätsschwellenwert 544.3 konfigurieren, wie die Auswahl eines Zeitinkrements oder eines Satzes logischer Regeln zum Inkrementieren des Zeitzählers 544.2. In einigen Ausführungsformen können Zeitzählerwerte Zeitwerte, die einer Taktzeit entsprechen, als der Zeitzähler 544.2 inkrementiert wurde, einen Ordnungszählwert, der für jeden passierten Granularitätsschwellenwert inkrementiert wird, oder andere geordnete Sätze von Werten, die einer RAID-Steuerung ermöglichen, Sätze von RAID-Streifen zu bestimmen, die während verschiedener (und geordneter) Zeitfenster geschrieben werden, einschließen. In einigen Ausführungsformen kann der Zeitzähler 544.2 periodisch, wie nach jedem Inkrement, den aktuellen Zeitzählerwert als Zeitzählerwert 520.2 im nichtflüchtigen Speicher 520 speichern. Zum Beispiel kann der Zeitzählerwert 520.2 als Parameterwert in die RAID-Metadaten 520.1 geschrieben und/oder in entsprechende Einträge für jeden RAID-Streifen geschrieben werden, der während des entsprechenden Zeitfensters des Zeitzählers 544.2 geschrieben wird. In einigen Ausführungsformen kann der Zeitzählerwert periodisch in die Metadaten jeder Datenspeichervorrichtung in dem RAID-Satz als Vorrichtungszeitwert 560.1 geschrieben werden, um Zustandsinformationen für die jüngsten Blockzeitwerte aufrechtzuerhalten, die durch diese Datenspeichervorrichtung empfangen werden.
  • In einigen Ausführungsformen kann der Zeitzählerschreiber 544.4 den Zeitzählerwert für das vorliegende Zeitfenster mit jedem RAID-Block und in jede Speichervorrichtung in dem RAID-Satz schreiben. Zum Beispiel kann der aktuelle Zeitzählerwert des Zeitzählers 544.2 an jeden RAID-Datenblock angehängt werden, der in den nichtflüchtigen Speicher der Zielspeichervorrichtung mit diesem RAID-Block (z. B. an kontinuierlichen Speicherorten im nichtflüchtigen Speicher 560) in einem atomaren Schreibvorgang geschrieben werden soll. In einigen Ausführungsformen können die Datenspeichervorrichtungen zum Ermöglichen eines erweiterten Blockformat formatiert werden, das zusätzliche Systemspeicherorte in dem Schreibblock bereitstellt, und der Zeitzählerschreiber 544.4 kann den Zeitzählerwert als einen Blockzeitwert (z. B. Blockzeitwert 560.3) in demselben Schreibblock und Schreibvorgang wie der RAID-Datenblock einschließen. Der Zeitzählerschreiber 544.4 kann konfiguriert sein, um den Zeitzählerwert als Blockzeitwert in jede Speichervorrichtung zu schreiben, ohne einen separaten Vorgang zu erfordern, wie beispielsweise einen Metadatenbetrieb, der getrennt vom erfolgreichen Schreiben des RAID-Datenblocks ausgeführt oder unterbrochen werden könnte. In einigen Ausführungsformen kann der Zeitzählerschreiber 544.4 sicherstellen, dass jeder RAID-Datenblock, der erfolgreich in jede Datenspeichervorrichtung geschrieben wurde, notwendigerweise von einem Blockzeitwert begleitet werden kann, der das Zeitfenster widerspiegelt, in dem die Schreibbefehle durch die RAID-Schreib-Engine 544 ausgegeben wurden.
  • Der Wiederaufbaumanager 546 kann Schnittstellen, Funktionen, Parameter und/oder Datenstrukturen einschließen, die konfiguriert sind, um vollständige oder teilweise Wiederherstellungen eines RAID-Satzes als Reaktion darauf zu bestimmen und auszuführen, dass eine oder mehrere Datenspeichervorrichtungen unempfänglich werden. Zum Beispiel kann die RAID-Steuerung 540, wie etwa basierend auf einem Indikator vom Vorrichtungsunterbrechungsdetektor 536, bestimmen, dass der Betrieb einer Speichervorrichtung unterbrochen wurde, was angibt, dass ein oder mehrere RAI D-Streifen möglicherweise nicht erfolgreich gespeichert wurden und der RAID-Satz zum Speichern zusätzlicher Host-Daten mit der gewünschten Redundanz beeinträchtigt sein kann. In einigen Ausführungsformen kann der Wiederherstellungsmanager 546 eine verschlechterte Zustandsengine 546.1 einschließen, die eine Logik zum Bestimmen aufweist, wann der RAID-Satz in einen verschlechterten Zustand versetzt werden sollte, sodass neue Speichervorgänge erst dann in Bezug darauf ausgeführt werden, wenn er den verschlechterten Zustand verlässt und zum normalen Betrieb zurückkehrt. Zum Beispiel kann die verschlechterte Zustandsengine 546.1 Speichervorrichtungs-Zustandsinformationen und/oder Fehlerbedingungen vom Vorrichtungsunterbrechungsdetektor 536, anderer Komponenten der RAID-Steuerung 540 (z. B. RAID-Schreib-Engine 544), einer Leseengine und/oder andere Funktionen, die eine nicht reagierende Datenspeichervorrichtung erkennen können, überwachen.
  • In einigen Ausführungsformen kann der Wiederherstellungsmanager 546 eine Betriebsunterbrechungslogik 546.2 einschließen, die konfiguriert ist, um eine Betriebsunterbrechung im Gegensatz zum vollständigen (oder erweiterten) Verlust einer Speichervorrichtung zu bestimmen. Zum Beispiel kann die Betriebsunterbrechungslogik 546.2 Benachrichtigungen, Ereignisse und/oder Zustandsinformationen von dem Vorrichtungsunterbrechungsdetektor 536.1 in Bezug auf den Betriebsverlust einer oder mehrerer Speichervorrichtungen, wie als Reaktion auf einen und/oder während eines verschlechterten Zustands, empfangen. Die Betriebsunterbrechungslogik 546.2 kann eine Vielzahl von logischen Regeln einschließen, die ausgewertet werden können, um zu bestimmen, ob ein Betriebsunterbrechungsereignis aufgetreten ist, die unterbrochene Speichervorrichtung zu identifizieren und zu bestimmen, ob eine vollständige oder teilweise Wiederherstellung ausgelöst werden sollte. In einigen Ausführungsformen kann ein Unterbrechungszähler 546.3 verwendet werden, um eine verstrichene Zeit zu bestimmen, seit der Betriebskontakt mit einer Speichervorrichtung verloren gegangen war. Zum Beispiel kann der Unterbrechungszähler 546.3 die verstrichene Zeit messen und die Zeit mit einem Unterbrechungsschwellenwert vergleichen. Wenn der verstrichene Zeitwert des Unterbrechungszählers 546.3 den Unterbrechungsschwellenwert überschreitet, bevor die Speichervorrichtung zum Betrieb zurückkehrt, kann der Betriebsverlust als abgeschlossen behandelt werden und, wenn die Speichervorrichtung zum Betrieb zurückkehrt oder durch eine Ersatzspeichervorrichtung ersetzt wird, kann die vollständige Wiederherstellung 546.5 ausgelöst werden.
  • In einigen Ausführungsformen kann ein Wiederherstellungszähler 546.4 verwendet werden, um eine Anzahl von unvollständigen RAID-Streifen zu bestimmen, die durch eine Betriebsunterbrechung erzeugt werden. Zum Beispiel kann der Wiederherstellungszähler 546.4 die Anzahl der unvollständigen RAI D-Streifen zählen, die unter Verwendung der Blockzeitwerte und Zeitzähler-Vergleiche bestimmt werden, und den Zählwert mit einem vollständigen Wiederherstellungsschwellenwert vergleichen. Wenn der Zählwert den vollständigen Wiederherstellungsschwellenwert erreicht oder überschreitet, kann der vollständige Wiederherstellungsschwellenwert 546.5 ausgelöst werden. Wenn nach Abschluss der Unterbrechung der Zählwert den vollständigen Wiederherstellungsschwellenwert nicht erreicht oder überschreitet, kann die teilweise Wiederherstellung 546.6 ausgelöst werden. Die vollständige Wiederherstellung 546.5 kann konfiguriert sein, um anzunehmen, dass alle RAID-Streifen, die zuvor in dem RAID-Satz geschrieben wurden, die Daten verloren haben können, die in einem oder mehreren (abhängig von der RAID-Konfiguration und der Anzahl von unterbrochenen Speichervorrichtungen) enthalten sind, und jeder RAID-Streifen in dem RAID-Satz kann für einen Wiederherstellungsprozess basierend auf den RAID-Blöcken in den verbleibenden Speichervorrichtungen in der Warteschlange angeordnet werden. Die teilweise Wiederherstellung 546.6 kann so konfiguriert sein, dass angenommen wird, dass nur die unvollständigen oder nicht-synchronisierten RAID-Streifen aus der Betriebsunterbrechung Daten verloren haben können und nur diese unvollständigen RAID-Streifen für den Wiederherstellungsprozess in der Warteschlange angeordnet werden können. In beiden Fällen können für jeden RAID-Streifen in der Wiederherstellungswarteschlange die synchronisierten RAID-Blöcke (einschließlich eines oder mehrerer Paritätsblöcke) verwendet werden, um Ersatz-RAID-Blöcke für die fehlenden oder nicht-synchronisierten RAID-Blöcke der unterbrochenen Speichervorrichtung(en) wiederherzustellen oder zu berechnen.
  • In einigen Ausführungsformen kann der Wiederherstellungsmanager 546 konfiguriert sein, um eine Differenz zwischen den Blockzeitwerten der RAID-Blöcke in der unterbrochenen Speichervorrichtung und mindestens einer ununterbrochenen Speichervorrichtung zu verwenden, um zu bestimmen, welche RAID-Streifen als unvollständige RAID-Streifen identifiziert werden sollen. Zum Beispiel kann der letzte RAID-Block, der erfolgreich in die unterbrochene Speichervorrichtung geschrieben wurde, aus den Blockzeitwerten bestimmt werden, die mit den RAID-Blöcken in der Speichervorrichtung gespeichert sind, und dieser Blockzeitwert kann dem letzten Zeitzählerwert entsprechen, als die Speichervorrichtung Befehle verarbeitete. Der jüngste, neuste oder letzte Blockzeitwert, der in die unterbrochene Speichervorrichtung geschrieben wird, kann den letzten vollständigen RAID-Streifen bestimmen, und der Wiederherstellungsmanager 546 kann diesen Zeitzählerwert und jeden RAID-Streifen mit einem höheren Zeitzählerwert verwenden, um unvollständige RAID-Streifen zu identifizieren. In einigen Ausführungsformen kann der Wiederherstellungsmanager 546 eine Vorrichtungszeitlesevorrichtung 546.7 einschließen, die konfiguriert ist, um den Vorrichtungszeitwert 560.1 für mindestens eine ununterbrochene Speichervorrichtung zu lesen, um den letzten RAID-Streifen oder Satz von RAID-Streifen zu bestimmen, die in die ununterbrochenen Speichervorrichtungen geschrieben werden. In einigen Ausführungsformen kann der Wiederherstellungsmanager 546 eine Blockzeitlesevorrichtung 546.8 einschließen, die konfiguriert ist, um den Blockzeitwert 560.3 für jeden RAID-Block in einer Datenspeichervorrichtung zu lesen, um den jüngsten oder höchsten Blockzeitwert zu bestimmen und/oder die RAID-Streifen mit Blockzeitwerten zu bestimmen, die gleich oder größer als ein ausgewählter Zeitzählerwert sind. Zum Beispiel kann die Blockzeitlesevorrichtung 546.8 den Blockzeitwert 560,3 für jeden RAID-Block lesen, der in der unterbrochenen Datenspeichervorrichtung gespeichert ist, um den letzten RAID-Streifen (oder die letzten RAID-Streifen), der geschrieben wird, und den entsprechenden Zeitzählerwert zu bestimmen. Die unvollständige Streifenlogik 546.9 kann konfiguriert sein, um die Zeitzählerwerte aus Blockzeitwerten, Vorrichtungszeitwerten und/oder RAID-Metadaten zu verwenden, um die unvollständigen oder nicht-synchronisierten RAID-Streifen für die teilweise Wiederherstellung 546.6 zu bestimmen. Zum Beispiel kann die unvollständige Streifenlogik 546.9 einen letzten Blockzeitwert von der unterbrochenen Speichervorrichtung als einen letzten gültigen RAID-Streifenwert verwenden und diesen mit Blockzeitwerten vergleichen, die aus mindestens einer ununterbrochenen Speichervorrichtung gelesen werden, um die unvollständigen RAID-Streifen zu bestimmen. In einigen Ausführungsformen kann der Zeitzählerwert aus dem letzten Blockzeitwert in der unterbrochenen Speichervorrichtung mit Zeitzählerwerten in RAID-Metadaten 520.1 verglichen und/oder aus Vorrichtungszeitwerten 560.1 gelesen werden, um die unvollständigen RAID-Streifen zu bestimmen. Zum Beispiel können die RAID-Metadaten 520.1 Einträge für jeden RAID-Streifen einschließen, der einen Zeitzählerwert 520.2 für die RAID-Streifen einschließt, die während dieses Zeitfensters geschrieben werden, und der letzte Blockzeitwert kann als ein Index zum Bestimmen verwendet werden, dass alle RAID-Streifeneinträge mit Zeitzählern, die größer als (oder so groß wie) der letzte Blockzeitwert sind, unvollständige RAID-Streifen sein können und wiederhergestellt werden sollten.
  • Die beispielhafte Datenspeichervorrichtung 504 kann eine Vielzahl von Modulen oder Subsystemen einschließen, die im Speicher 554 gespeichert und/oder instanziiert werden, um vom Prozessor 552 als Anweisungen oder Vorgänge ausgeführt zu werden. Zum Beispiel kann der Speicher 554 eine Host-Schnittstelle 570 einschließen, die konfiguriert ist, um Host-Befehle zu empfangen und entsprechende Lese-, Schreib- und andere Vorgänge, die in Bezug auf den nichtflüchtigen Speicher 560 ausgeführt werden, und entsprechende Host-Daten und Metadaten zu verwalten. Der Speicher 554 kann einen Metadatenmanager 580 einschließen, der konfiguriert ist, um Metadaten zu verwalten, die in der Datenspeichervorrichtung 504 gespeichert sind. Der Speicher 554 kann einen Vorrichtungsspeichermanager 590 einschließen, der konfiguriert ist, um Host- und Systemdaten zu verwalten, die in den nichtflüchtigen Speicher 560 geschrieben und aus diesem gelesen werden.
  • Die Host-Schnittstelle 570 kann Schnittstellenprotokolle und/oder Funktionen und Parameter zum Empfangen, Parsen, Reagieren auf und sonstigen Verwalten von Anforderungen von Host-Knoten oder -Systemen (direkt oder durch eine oder mehrere Speichersteuerungen, wie die Steuerung 502) einschließen. Die Host-Schnittstelle 570 kann zum Beispiel Funktionen zum Empfangen und Verarbeiten von Speicheranforderungen zum Lesen, Schreiben, Ändern oder anderweitigen Manipulieren von Datenblöcken und ihrer jeweiligen Client- oder Host-Daten und/oder Metadaten in Übereinstimmung mit Host-Kommunikations- und Speicherprotokollen einschließen.
  • In einigen Ausführungsformen kann die Host-Schnittstelle 570 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so konfiguriert sind, dass sie den Prozessor 552 und den Speicher 554 nutzen, um definierte Vorgänge der Host-Schnittstelle 570 zu handhaben oder zu verwalten. Zum Beispiel kann die Host-Schnittstelle 570 ein Speicherschnittstellenprotokoll 572 einschließen, das konfiguriert ist, um den physischen, Transport- und Speicheranwendungsprotokollen zu entsprechen, die vom Host für Kommunikation über die Speicherschnittstelle 556 unterstützt werden. In einigen Ausführungsformen kann das Speicherschnittstellenprotokoll 572 ähnlich wie das Speicherschnittstellenprotokoll 532 konfiguriert sein, aber für die Speichervorrichtungsrolle. Die Host-Schnittstelle 570 kann eine erweiterte Blockkonfiguration 574 zur Konfiguration der Datenspeichervorrichtung 504 einschließen, wie vorstehend in Bezug auf die Speichervorrichtungen 120 in 1 beschrieben. Die Host-Schnittstelle 570 kann einen Speicherbefehlshandler 576 einschließen, der konfiguriert ist, um Speicherungsbefehle oder -vorgänge von der Steuerung 502 zu empfangen und entsprechende Speichervorgänge zu bestimmen, die in Bezug auf den nichtflüchtigen Speicher 560 ausgeführt werden sollen. Zum Beispiel kann der Speicherbefehlshandler 576 Lese-, Schreib-, Lösch- und andere Befehle von der Steuerung 502 empfangen und parsen und entsprechende Vorgänge in den Metadatenmanager 580 und den Speichermanager 590 leiten. Die Host-Schnittstelle 570 kann eine Vorrichtungsinitialisierungslogik 578 einschließen, die konfiguriert ist, um Vorrichtungsleistungszyklen zu verwalten und die Kommunikation (gemäß dem Speicherschnittstellenprotokoll 572) mit der Steuerung 502 beim Start oder anderen Initialisierungsereignissen zu initiieren. Zum Beispiel kann die Vorrichtungsinitialisierungslogik 578 eine Initialisierungsnachricht an die Steuerung 502 senden, die die Vorrichtungssignatur 560.4 und/oder andere Speichervorrichtungsmetadaten zum Herstellen oder Wiederherstellen der Betriebskommunikation mit der Steuerung 502 einschließt.
  • Der Metadatenmanager 580 kann Schnittstellenprotokolle und/oder Funktionen und Parameter zum Verwalten von in der Datenspeichervorrichtung 504 gespeicherten Metadaten einschließen, wie FTL-Daten oder Sektorzuordnungsinformationen, Vorrichtungsparameter und andere Systeminformationen. Zum Beispiel kann der Metadatenmanager 580 Funktionen zum Definieren und Verwalten von Metadatentabellen, Seiten oder anderen Datenstrukturen in Systembereichen des nichtflüchtigen Speichers 560 einschließen. In einigen Ausführungsformen kann der Metadatenmanager 580 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so konfiguriert sind, dass sie den Prozessor 552 und den Speicher 554 nutzen, um definierte Vorgänge des Metadatenmanagers 580 zu handhaben oder zu verwalten. Zum Beispiel kann der Metadatenmanager 580 einen Vorrichtungszeitschreiber 582 einschließen, der konfiguriert ist, um einen Zeitzählerwert für ein definiertes Betriebsfenster (und entsprechende RAID-Streifen/Blöcke) als Vorrichtungszeitwert 560.1 in Speichervorrichtungsmetadaten zu schreiben. Der Zeitwert für den Vorrichtungszeitwert 560.1 kann in einem Metadatenschreibbefehl von der Steuerung 502 empfangen und in einem Speicherort gespeichert werden, der für den jüngsten Vorrichtungszeitwert bestimmt ist. Ein entsprechender Lesevorgang kann konfiguriert sein, um den Vorrichtungszeitwert 560.1 nach Anforderung an die Steuerung 502 zurückzugeben.
  • Der Vorrichtungsspeichermanager 590 kann Schnittstellenprotokolle und/oder Funktionen und Parameter zum Verwalten von Daten einschließen, die in dem nichtflüchtigen Speicher 560 gespeichert sind, wie Host/RAID-Datenblöcke an Host-Speicherorten und Systemdaten an Systemspeicherorten. Zum Beispiel kann der Vorrichtungsspeichermanager 590 konfiguriert sein, um Schreib- und Lesevorgänge in Bezug auf den nichtflüchtigen Speicher 560 basierend auf Host-LBA-Bezeichnungen und entsprechenden Speicherorten oder Sektoren, die den nichtflüchtigen Speicher 560 bilden, unter Verwendung der Lese- und Schreibpfade der Datenspeichervorrichtung 304 auszuführen. In einigen Ausführungsformen kann der Vorrichtungsspeichermanager 590 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die konfiguriert sind, um den Prozessor 552 und den Speicher 554 zu nutzen, um definierte Vorgänge des Vorrichtungsspeichermanagers 590 zu handhaben oder zu verwalten. Zum Beispiel kann der Vorrichtungsspeichermanager 590 eine RAID-Blockschreibvorrichtung 592 einschließen, die konfiguriert ist, um RAID-Blockschreibvorgänge basierend auf den Befehlen auszuführen, die von der RAID-Schreib-Engine 544 empfangen werden, einschließlich des Schreibens jedes Blockzeitwerts 560.3 benachbart zu jedem RAID-Block 560.2 als Teil eines atomaren Schreibvorgangs. Zum Beispiel kann der Vorrichtungsspeichermanager 590 eine Blockzeitlesevorrichtung 594 einschließen, die konfiguriert ist, um Blockzeitlesevorgänge basierend auf Befehlen auszuführen, die vom Wiederherstellungsmanager 546 empfangen werden, einschließlich des Lesens des Blockzeitwerts 560.3 für jeden RAID-Block 560.2.
  • Wie in 6 gezeigt, kann das Speichersystem 500 gemäß einem beispielhaften Verfahren zum Speichern von RAID-Blockzeitwerten und Verwenden davon zum selektiven Wiederherstellen von unvollständigen RAID-Streifen, d. h., gemäß dem Verfahren 600, das durch die Blöcke 610-630 in 6 veranschaulicht ist, betrieben werden.
  • Bei Block 610 kann ein Host-Speicherbefehl bestimmt werden. Zum Beispiel kann eine Steuerung einen Host-Speicherbefehl empfangen, um einen oder mehrere Host-Datenblöcke in einem RAID-Satz von Datenspeichervorrichtungen zu speichern oder zu modifizieren, die von der Steuerung verwaltet werden.
  • Bei Block 612 können RAID-Blöcke zum Speichern der Host-Daten bestimmt werden. Zum Beispiel kann die Steuerung die Host-Daten in eine Vielzahl von RAID-Blöcken unterteilen.
  • Bei Block 614 können aus den Host-Daten ein oder mehrere Paritätsblöcke bestimmt werden. Zum Beispiel kann die Steuerung basierend auf der RAID-Konfiguration mindestens einen Paritätsblock für den Satz von RAID-Blöcken berechnen, der die Host-Daten enthält, und den Paritätsblock zu dem Satz von RAID-Blöcken hinzufügen, die den entsprechenden RAID-Streifen ausmachen.
  • Bei Block 616 kann ein Zeitzähler für den RAID-Streifen bestimmt werden. Zum Beispiel kann die Steuerung einen Zeitzähler einschließen, der inkrementiert wird, um regelmäßige Intervalle oder Zeitfenster bereitzustellen, während derer RAID-Streifen durch einen bestimmten Zeitzählerwert gruppiert werden können.
  • Bei Block 618 können die RAID-Blöcke an die Speichervorrichtungen in dem RAID-Satz verteilt werden. Zum Beispiel kann für jeden RAID-Streifen ein RAID-Block an jede Speichervorrichtung in dem RAID-Satz zusammen mit dem aktuellen Zeitzählerwert als Blockzeitwert gesendet werden.
  • Bei Block 620 können die RAID-Blöcke und ihre entsprechenden Blockzeitwerte in den Speichervorrichtungen gespeichert werden. Zum Beispiel kann jede Datenspeichervorrichtung einen Schreibbefehl von der Steuerung empfangen, der ihren zugewiesenen RAID-Block und den Blockzeitwert einschließt, und den RAID-Block mit dem Blockzeitwert in einem nichtflüchtigen Speicher speichern.
  • Blöcke 610 bis 620 können sich beliebig oft für eine Vielzahl von Host-Speicherungsbefehlen und Inkrementierzeitzählerwerten während des normalen Betriebs des RAID-Satzes wiederholen. Wenn eine oder mehrere Speichervorrichtungen in dem RAID-Satz einen Verlust des Betriebs oder der Kommunikation mit der Steuerung erleiden, kann das Verfahren 600 mit Block 622 fortfahren.
  • Bei Block 622 kann eine Betriebsunterbrechung bestimmt werden. Zum Beispiel kann die Steuerung bestimmen, dass die Kommunikation mit und/oder der Betriebszustand einer Speichervorrichtung verlorengegangen ist, wobei sie die Vorgänge unterbricht und einen verschlechterten Zustand für den RAID-Satz auslöst.
  • Bei Block 624 kann mindestens eine unterbrochene Speichervorrichtung bestimmt werden. Zum Beispiel kann die Steuerung einen Betriebsverlust und eine Rückkehr derselben Speichervorrichtung bestimmen, wobei sie die Speichervorrichtung als unterbrochen (anstatt ersetzt) identifiziert.
  • Bei Block 626 kann ein letzter Blockzeitwert für die unterbrochene Speichervorrichtung bestimmt werden. Zum Beispiel kann die Steuerung die Blockzeitwerte lesen, die mit den RAID-Blöcken in der unterbrochenen Speichervorrichtung gespeichert sind, um den letzten oder jüngsten Blockzeitwert und den entsprechenden RAID-Block zu bestimmen.
  • Bei Block 628 kann mindestens ein unvollständiger RAID-Streifen bestimmt werden. Zum Beispiel kann die Steuerung den letzten Blockzeitwert verwenden, um alle RAID-Streifen zu identifizieren, die in eine ununterbrochene Speichervorrichtung geschrieben werden (z. B. solche mit einem größeren Zeitzählerwert), für die der entsprechende RAID-Block nicht in die unterbrochene Speichervorrichtung geschrieben oder aktualisiert wurde. Der Satz unvollständiger RAID-Streifen kann alle RAID-Streifen einschließen, die in Zeitintervallen mit höheren Zeitzählerwerten als der letzte Blockzeitwert geschrieben werden.
  • Bei Block 630 können die unvollständigen RAID-Streifen selektiv wiederhergestellt werden. Zum Beispiel kann die Steuerung den Satz unvollständiger RAID-Streifen, die bei Block 628 bestimmt wurden, zu einer Wiederherstellungswarteschlange hinzufügen, und RAID-Streifen mit Zeitzählerwerten, die kleiner als der letzte Blockzeitwert sind, ausschließen, da sie vor der Betriebsunterbrechung erfolgreich geschrieben wurden.
  • Wie in 7 gezeigt, kann das Speichersystem 500 gemäß einem beispielhaften Verfahren zum Speichern von RAID-Blockzeitwerten in einem RAID-Satz von Datenspeichervorrichtungen betrieben werden, d. h., gemäß dem Verfahren 700, das durch die Blöcke 710-734 in 7 veranschaulicht ist.
  • Bei Block 710 können erweiterte Blockdatenspeichervorrichtungen konfiguriert werden. Zum Beispiel kann die Steuerung oder ein anderes Konfigurationsdienstprogramm jede Datenspeichervorrichtung in dem RAID-Satz als eine erweiterte Blockspeichervorrichtung mit Systemspeicherorten formatieren, die an jeden Host-Datenort angehängt sind.
  • Bei Block 712 kann ein Satz von Datenspeichervorrichtungen als RAID-Satz konfiguriert sein. Zum Beispiel kann die Steuerung einen RAID-Satz einrichten, der aus einer definierten Anzahl von Datenspeichervorrichtungen besteht, der mit einer gewünschten RAID-Konfiguration in Bezug auf Redundanz und zulässige Speichervorrichtungsfehler übereinstimmt, woraus die Host-Daten wiederhergestellt werden können.
  • Bei Block 714 kann ein Granularitätsschwellenwert konfiguriert werden. Zum Beispiel kann die Steuerung einen konfigurierbaren Granularitätsschwellenwert einschließen, der in RAID-Konfigurationsparametern gespeichert ist und durch einen Systemstandardwert oder eine Benutzer- oder Administratoreingabe bestimmt werden kann.
  • Bei Block 716 können ein oder mehrere vollständige Wiederherstellungsschwellenwerte konfiguriert werden. Zum Beispiel kann die Steuerung konfigurierbare Unterbrechungsschwellenwerte und/oder Wiederherstellungsschwellenwerte einschließen, die in den RAID-Konfigurationsparametern gespeichert sind, um basierend auf verstrichener Zeit oder einer Anzahl unvollständiger RAID-Streifen zu bestimmen, ob eine vollständige Wiederherstellung oder eine teilweise Wiederherstellung initiiert werden soll.
  • Bei Block 718 können RAID-Vorgänge initialisiert werden. Zum Beispiel kann die Steuerung die Datenspeichervorrichtungen in dem RAID-Satz initialisieren und mit dem Empfang von Host-Speichervorgängen oder Befehlen, die an den RAID-Satz gerichtet sind, beginnen.
  • Bei Block 720 kann ein Zeitzählerwert bestimmt werden. Zum Beispiel kann die Steuerung einen Zeitzähler initialisieren, der verwendet wird, um Betriebszeitfenster zu verfolgen, während derer ein oder mehrere RAID-Streifen in den RAID-Satz geschrieben werden können.
  • Bei Block 722 kann der Zeitzählerwert in RAI D-Metadaten gespeichert werden. Zum Beispiel kann die Steuerung den Zeitzähler in RAID-Metadaten zu Beginn jedes Betriebsfensters speichern.
  • Bei Block 724 kann der Zeitzählerwert in jeder Datenspeichervorrichtung in dem RAID-Satz als Vorrichtungszeitwert gespeichert werden. Zum Beispiel kann die Steuerung einen Metadatenschreibbefehl verwenden, um den aktuellen Zeitzählerwert in den Metadaten jeder Datenspeichervorrichtung in dem RAID-Satz zu speichern.
  • Bei Block 726 kann der Zeitzählerwert an jeden RAID-Block als Blockzeitwert angehängt werden. Zum Beispiel kann die Steuerung den Zeitzählerwert an einem Blockzeitwertort an den Systemspeicherorten des erweiterten Blockformats hinzufügen, das bei Block 710 konfiguriert wird.
  • Bei Block 728 können die RAID-Blöcke, einschließlich der Blockzeitwerte, in die Datenspeichervorrichtungen geschrieben werden. Zum Beispiel kann die Steuerung einen Schreibbefehl für einen RAID-Datenblock senden, der den angehängten Blockzeitwert in demselben Schreibbefehl und atomaren Schreibvorgang einschließt.
  • Bei Block 730 kann ein vollständiger RAID-Streifen bestimmt werden. Zum Beispiel kann die Steuerung eine Benachrichtigung von jeder Datenspeichervorrichtung empfangen, nachdem der RAID-Block (und Blockzeitwert) erfolgreich gespeichert wurde.
  • Bei Block 732 kann eine verstrichene Zeit überwacht werden. Zum Beispiel kann die Steuerung eine verstrichene Zeit überwachen, seit der aktuelle Zeitzählerwert bestimmt wurde und entsprechende RAID-Schreibvorgänge initiiert wurden.
  • Bei Block 734 kann der Zeitzählerwert gemäß dem Granularitätsschwellenwert inkrementiert werden. Wenn zum Beispiel die bei Block 732 überwachte verstrichene Zeit den Granularitätsschwellenwert erreicht, kann der Zeitzählerwert inkrementiert werden und der neue Zeitzählerwert kann für RAID-Vorgänge verwendet werden, wobei zu Block 722 mit einem neuen aktuellen Zeitzählerwert für einen nächsten Satz von RAID-Streifen zurückgekehrt wird.
  • Wie in 8 gezeigt, kann das Speichersystem 500 gemäß einem beispielhaften Verfahren zum Bestimmen von Betriebsunterbrechungen zum selektiven Initiieren von teilweisen Wiederherstellungen eines RAID-Satzes von Datenspeichervorrichtungen betrieben werden, d. h., gemäß dem Verfahren 800, das durch die Blöcke 810-836 in 8 veranschaulicht ist.
  • Bei Block 810 kann ein Unterbrechungsschwellenwert bestimmt werden. Zum Beispiel kann die Steuerung einen benutzerkonfigurierten Unterbrechungsschwellenwert aus RAID-Konfigurationsparametern lesen.
  • Bei Block 812 kann ein Wiederherstellungsschwellenwert bestimmt werden. Zum Beispiel kann die Steuerung einen benutzerkonfigurierten Schwellenwert der vollständigen Wiederherstellung aus RAID-Konfigurationsparametern lesen.
  • Bei Block 814 kann ein Betriebsverlust für eine Speichervorrichtung bestimmt werden. Zum Beispiel kann die Steuerung erkennen, dass eine Datenspeichervorrichtung offline gegangen ist, Leistung verloren hat und/oder nicht mehr auf Kommunikationsversuche reagiert.
  • Bei Block 816 kann in einen verschlechterten Zustand eingetreten werden. Zum Beispiel kann die Steuerung ihren Betriebszustand auf verschlechtert ändern und Host-Systeme benachrichtigen, dass der RAID-Satz Speichervorgänge erst dann wieder akzeptiert, wenn eine Wiederherstellung abgeschlossen ist und normale Vorgänge zurückgegeben werden können.
  • Bei Block 818 kann ein Wiederholungszähler initialisiert werden. Zum Beispiel kann die Steuerung einen zeitbasierten oder ereignisbasierten Zähler zum Bestimmen einer Dauer des bei Block 814 bestimmten Betriebsverlusts initialisieren.
  • Bei Block 820 kann, wenn der Unterbrechungsschwellenwert überschritten wird, selektiv eine vollständige Wiederherstellung initiiert werden. Zum Beispiel kann der Unterbrechungsschwellenwert, der bei Block 810 festgelegt wird, bestimmen, wie lange die Steuerung auf die Rückkehr der Speichervorrichtung warten sollte, bevor bestimmt wird, dass eine vollständige Wiederherstellung initiiert werden sollte (z. B. wird, wenn die Speichervorrichtung schließlich zurückkehrt, eine Ersatzvorrichtung in ihrem Steckplatz erkannt, oder ein Ersatz-Laufwerk kann aus einem anderen Ort, wie beispielsweise reservierten Laufwerken oder Hot Spares ausgewählt werden).
  • Bei Block 822 kann eine Betriebsdatenspeichervorrichtung erkannt werden. Zum Beispiel kann die Steuerung erkennen, dass eine Speichervorrichtung wieder neu erschienen ist oder die Kommunikation von einem physischen Schlitz, der zuvor von der verlorengegangenen Speichervorrichtung belegt wurde, oder einem anderen physischen Schlitz, der dem RAID-Satz zugeordnet ist, hergestellt hat.
  • Bei Block 824 können die Vorrichtungssignaturen verglichen werden. Als Teil der Initialisierung und/oder der Erfassung der Speichervorrichtung kann ein eindeutiger Vorrichtungssignaturwert durch die in Block 822 erfasste Speichervorrichtung bereitgestellt werden und mit der zuvor in den RAID-Metadaten oder anderen Konfigurationsdaten für die verloren gegangene Speichervorrichtung gespeicherten Vorrichtungssignatur verglichen werden.
  • Bei Block 826 kann eine Betriebsunterbrechung bestimmt werden. Zum Beispiel kann die Steuerung basierend auf der Betriebsspeichervorrichtung, die vor dem Unterbrechungsschwellenwert erkannt wurde, und der Vorrichtungssignatur, die jener der verlorengegangenen Speichervorrichtung entspricht, bestimmen, dass eine Betriebsunterbrechung aufgetreten ist und die unterbrochene Speichervorrichtung weiterhin die zugewiesenen RAID-Blöcke für eine Anzahl von vollständigen und synchronisierten RAID-Streifen aufweisen kann.
  • Bei Block 828 können Blockzeitwerte aus der unterbrochenen Speichervorrichtung gelesen werden, um einen letzten Blockzeitwert für den jüngsten RAID-Block zu bestimmen, der in die unterbrochene Speichervorrichtung geschrieben wird. Zum Beispiel kann die Steuerung Lesevorgänge für jeden RAID-Block in der unterbrochenen Speichervorrichtung initiieren, die auf die Blockzeitwerte abzielen, die mit jedem RAID-Block gespeichert sind, und diese miteinander vergleichen, um den höchsten Zeitzählerwert zu finden, der dem letzten Blockzeitwert entspricht.
  • Bei Block 830 können Blockzeitwerte aus mindestens einer ununterbrochenen Speichervorrichtung gelesen werden, um unvollständige RAID-Streifen zu bestimmen. Zum Beispiel kann die Steuerung Lesevorgänge für jeden RAID-Block in einer der ununterbrochenen Speichervorrichtungen initiieren, um den jüngsten RAID-Streifen zu bestimmen, der in die ununterbrochenen Speichervorrichtungen geschrieben wird, und sie mit dem letzten Blockzeitwert (von Block 828) vergleichen, um RAID-Blöcke (und entsprechende unvollständige RAID-Streifen) mit einem höheren Blockzeitwert zu bestimmen (entsprechend höheren Zeitzählerwerten für den unvollständigen RAID-Streifen).
  • Bei Block 832 kann ein Wiederherstellungszählwert bestimmt werden. Zum Beispiel kann die Steuerung die Anzahl der unvollständigen RAID-Streifen zählen, die bei Block 830 bestimmt wurden.
  • Bei Block 834 kann, wenn der Wiederherstellungsschwellenwert überschritten wird, die vollständige Wiederherstellung selektiv initiiert werden. Zum Beispiel kann die Steuerung bestimmen, dass mehr unvollständige RAID-Streifen vorhanden sind, als durch den Wiederherstellungsschwellenwert erlaubt wird, und eine vollständige Wiederherstellung initiieren.
  • Bei Block 836 kann eine teilweise Wiederherstellung initiiert werden. Wenn zum Beispiel die Anzahl unvollständiger RAID-Streifen kleiner als der Wiederherstellungsschwellenwert ist, kann die Steuerung die teilweise Wiederherstellung nur der unvollständigen RAID-Streifen initiieren.
  • Während mindestens eine beispielhafte Ausführungsform in der vorstehenden ausführlichen Beschreibung der Technologie dargestellt worden ist, sollte gewürdigt werden, dass eine große Anzahl von Variationen existieren kann. Es sollte auch beachtet werden, dass eine beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen Beispiele sind, und in keiner Weise den Umfang, die Anwendbarkeit, oder Konfiguration der Technologie einschränken sollen. Die vorangehende genaue Beschreibung wird vielmehr eine brauchbare Anleitung für Fachleute zur Implementierung einer beispielhaften Ausführungsform der Technologie bereitstellen, wobei es sich versteht, dass verschiedene Modifikationen an einer Funktion und/oder Anordnung von Elementen vorgenommen werden können, die in einer beispielhaften Ausführungsform beschrieben sind, ohne vom Umfang der Technologie abzuweichen, wie in den beigefügten Ansprüchen und ihren rechtlichen Entsprechungen dargelegt.
  • Wie einem Durchschnittsfachmann bekannt, können verschiedene Ausführungsformen der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Folglich können Ausführungsformen der vorliegenden Offenlegung die Form einer vollständigen Hardware-Ausführung, einer vollständigen Software-Ausführung (einschließlich Firmware, speicherresidente Software, Mikrocodes, oder dergleichen) oder Ausführungsformen in der Form einer Kombination von Hardware und Software annehmen, die alle allgemein hierin als Schaltung, Modul, System und/oder Netzwerk bezeichnet werden können. Darüber hinaus können verschiedene Ausführungsformen der vorliegenden Technologie die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, einschließlich eines darauf ausgebildeten computerlesbaren Programmcodes.
  • Es kann jede Kombination eines oder mehrerer computerlesbarer Speichermedien verwendet werden. Ein computerlesbares Medium kann ein computerlesbares Signalmedium oder ein physisches oder computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, ein Gerät oder eine Vorrichtung, usw. oder irgendeine geeignete Kombination der Vorstehenden sein. Nicht einschränkende Beispiele eines physischen computerlesbaren Speichermediums können eine elektrische Verbindung, einschließlich einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, Speicher mit wahlfreiem Zugriff (RAM), Festwertspeicher (ROM), löschbaren programmierbaren Festwertspeicher (EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), einen Flash-Speicher, eine optische Faser, einen Compact Disk-Festwertspeicher (CD-ROM), einen optischen Prozessor, einen magnetischen Prozessor usw. oder eine beliebige geeignete Kombination der Vorstehenden einschließen, sind aber nicht darauf beschränkt. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium jedes greifbare Medium sein, das ein Programm oder Daten zur Verwendung durch ein System, ein Gerät und/oder eine Vorrichtung zur Befehlsausführung oder in Verbindung mit einer/einem solchen, enthalten oder speichern kann.
  • Ein Computercode, der auf einem computerlesbaren Medium enthalten ist, kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, aber nicht beschränkt auf, drahtloses, verdrahtetes, optisches Faserkabel, Radiofrequenz (RF), usw. oder jede geeignete Kombination des Vorhergehenden. Ein Computercode zur Ausführung von Prozessen bei Ausführungsformen der vorliegenden Erfindung kann in einer beliebigen statischen Sprache, wie die C-Programmiersprache oder andere ähnliche Programmiersprachen, geschrieben werden. Der Computercode kann vollständig auf einer Rechenvorrichtung des Benutzers, teilweise auf einer Rechenvorrichtung des Benutzers, als ein alleinstehendes Softwarepaket, teilweise auf einer Rechenvorrichtung des Benutzers und teilweise auf einer Remote-Rechenvorrichtung oder vollständig auf der Remote-Vorrichtung oder einem Server ausgeführt werden. In dem letzteren Gedankenspiel kann eine Remote-Rechenvorrichtung mit einer Rechenvorrichtung des Benutzers durch eine beliebige Art von Netzwerk oder Kommunikationssystem, einschließlich, aber nicht begrenzt auf, ein lokales Netzwerk (LAN) oder ein Wide Area Network (WAN), eine Netzkonvergenz, verbunden sein, oder die Verbindung kann zu einem externen Computer (z. B. durch das Internet unter Verwendung eines Internetanbieters) hergestellt werden.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung können vorstehend mit Bezug auf die Flussdiagramme und/oder Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten beschrieben sein. Es versteht sich, dass jeder Block des schematischen Flussdiagramms und/oder schematischen Blockdiagramms und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einer Verarbeitungseinheit (Prozessor) eines allgemeinen Computers, speziellen Computers oder einer anderen programmierbaren Datenverarbeitungsanlage zur Erzeugung einer Maschine bereitgestellt werden, so dass die Anweisungen, die über die Verarbeitungsvorrichtung oder andere programmierbare Datenverarbeitungsanlagen ausgeführt werden können, Mittel zum Implementieren der Abläufe/Handlungen in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms erzeugen.
  • Einige Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder (eine) andere Vorrichtung(en) zum Betrieb in einer bestimmten Weise steuern kann, so dass die in einem computerlesbaren Medium gespeicherten angefertigten Artikel Anweisungen beinhalten, die den in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang implementieren. Einige Computerprogrammanweisungen können auch auf eine Rechenvorrichtung, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Vorrichtung(n) geladen werden, um zu bewirken, dass eine Reihe von Betriebsschritten an der Rechenvorrichtung, einer anderen programmierbaren Vorrichtung oder (einer) anderen Vorrichtung(en) durchgeführt werden, so dass die Anweisungen, die durch den Computer oder eine andere programmierbare Vorrichtung ausgeführt werden, einen oder mehrere Prozesse zur Implementierung der in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang bereitstellen.
  • Ein Flussdiagramm und/oder Blockdiagramm in den vorstehenden Figuren kann eine Bauweise, Funktionalität und/oder einen Vorgang möglicher Implementierungen von Vorrichtungen, Systemen, Verfahren und/oder Computerprogrammprodukten gemäß verschiedenen Gesichtspunkten der vorliegenden Technologie veranschaulichen. In dieser Hinsicht kann ein Block in einem Flussdiagramm oder Blockdiagramm ein Modul, Segment oder einen Teil eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren einer oder mehrerer spezifizierter logischer Funktionen aufweisen kann. Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, entsprechend der involvierten Funktionalität. Es sei auch angemerkt, dass ein Block einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung oder eine Kombination von Blöcken in einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung durch speziell auf Hardware basierenden Systemen implementiert werden kann, die eine oder mehrere spezifizierte Vorgänge oder Handlungen ausführen, oder durch Kombinationen von Hardware zu speziellen Zwecken und Computeranweisungen.
  • Während ein oder mehrere Gesichtspunkte der vorliegenden Technologie im Detail dargestellt und besprochen wurden, wird ein Fachmann erkennen, dass Modifikationen und/oder Anpassungen an die verschiedenen Gesichtspunkte vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 17/528768 [0001]

Claims (20)

  1. System, aufweisend: eine Vielzahl von Datenspeichervorrichtungen, die ein nichtflüchtiges Speichermedium aufweisen, das konfiguriert ist, um Host-Daten zu speichern, wobei: die Host-Daten in einer Vielzahl von RAID-Blöcken konfiguriert sind; jeder RAID-Block einem RAID-Streifen entspricht, der über die Vielzahl von Datenspeichervorrichtungen verteilt ist; und jeder RAID-Block einen Blockzeitwert aufweist, der einer Zeit entspricht, als der RAID-Block in der entsprechenden Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert wurde; eine Steuerung einer redundanten Anordnung unabhängiger Festplatten (RAID), die konfiguriert ist zum: Bestimmen einer Betriebsunterbrechung für mindestens eine Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen; Bestimmen, als Reaktion auf die Betriebsunterbrechung, eines letzten Blockzeitwerts für einen letzten RAID-Block, der durch die mindestens eine Datenspeichervorrichtung gespeichert ist; Bestimmen, basierend auf dem letzten Blockzeitwert, mindestens eines unvollständigen RAID-Streifens; und selektiven Wiederherstellen des mindestens einen unvollständigen RAID-Streifens.
  2. System nach Anspruch 1, wobei jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen konfiguriert ist, um, benachbart zu jedem RAID-Block in dem nichtflüchtigen Speichermedium, den Blockzeitwert dieses RAID-Blocks zu speichern.
  3. System gemäß Anspruch 2, wobei jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen Folgendes ist: als eine Blockspeichervorrichtung konfiguriert ist, einschließlich: einer Host-Datenblockgröße; und einer erweiterten Blockgröße, die zusätzliche Speicherorte über die Host- Datenblockgröße hinaus für jeden Host-Datenblock definiert; und ferner konfiguriert ist, um den Blockzeitwert an den zusätzlichen Speicherorten zu speichern, die der erweiterten Blockgröße für jeden RAID-Block entsprechen.
  4. System nach Anspruch 1, wobei jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen konfiguriert ist, um in Metadatenspeicher einen Vorrichtungszeitwert zu speichern, der einer Zeit entspricht, als ein jüngster RAI D-Block eines jüngsten RAI D-Streifens in dem nichtflüchtigen Speichermedium für diese Datenspeichervorrichtung gespeichert wurde.
  5. System gemäß Anspruch 1, wobei die RAID-Steuerung weiterhin konfiguriert ist zum: Speichern, in RAID-Metadaten, eines Zeitzählerwerts für einen jüngsten RAID-Streifen, der in der Vielzahl von Datenspeichervorrichtungen gespeichert ist; Bestimmen, aus der mindestens einen Datenspeichervorrichtung, des letzten Blockzeitwerts; und Bestimmen, basierend auf dem Zeitzählerwert und dem letzten Blockzeitwert, des mindestens einen unvollständigen RAID-Streifens.
  6. System nach Anspruch 5, wobei die RAID-Steuerung ferner konfiguriert ist, um an die Vielzahl von Datenspeichervorrichtungen den Zeitzählerwert zu senden, der als der Blockzeitwert benachbart zu jedem RAID-Block in dem nichtflüchtigen Speichermedium gespeichert wird.
  7. System gemäß Anspruch 5, wobei die RAID-Steuerung weiterhin konfiguriert ist zum: selektiven Inkrementieren des Zeitzählerwerts um einen konfigurierbaren Granularitätsschwellenwert; und Schreiben einer Vielzahl von RAID-Streifen in die Vielzahl von Datenspeichervorrichtungen zwischen jedem Inkrement.
  8. System gemäß Anspruch 5, wobei die RAID-Steuerung weiterhin konfiguriert ist zum: Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in der mindestens einen Datenspeichervorrichtung gespeichert sind, eines letzten vollständigen RAID-Streifens; und Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in einer anderen Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert sind, des mindestens einen unvollständigen RAID-Streifens seitdem letzten vollständigen RAID-Streifen.
  9. System gemäß Anspruch 5, wobei die RAID-Steuerung weiterhin konfiguriert ist zum: Bestimmen eines Betriebsverlusts für die mindestens eine Datenspeichervorrichtung; Eintreten, als Reaktion auf den Betriebsverlust, in einen verschlechterten Zustand für einen RAID-Satz, der der Vielzahl von Datenspeichervorrichtungen entspricht; Erfassen einer Betriebsdatenspeichervorrichtung entsprechend einer Position der mindestens einen Datenspeichervorrichtung; Bestimmen, basierend auf einer Vorrichtungssignatur, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist; und Bestimmen der Betriebsunterbrechung als Reaktion darauf, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist.
  10. System gemäß Anspruch 9, wobei die RAID-Steuerung weiterhin konfiguriert ist zum: Bestimmen eines Unterbrechungszählers, um eine verstrichene Zeit aus dem Betriebsverlust zu messen; Bestimmen eines Unterbrechungsschwellenwerts; selektiven Initiieren einer vollständigen Wiederherstellung des RAID-Satzes als Reaktion darauf, dass der Unterbrechungszähler den Unterbrechungsschwellenwert überschreitet; Bestimmen einer Wiederherstellungszählung des mindestens einen unvollständigen RAID-Streifens; Bestimmen eines Wiederherstellungsschwellenwerts; und selektiven Initiieren der vollständigen Wiederherstellung des RAID-Satzes als Reaktion darauf, dass der Wiederherstellungszählwert den Wiederherstellungsschwellenwert überschreitet.
  11. Computerimplementiertes Verfahren, aufweisend: Speichern, in einer Vielzahl von Datenspeichervorrichtungen, die ein nichtflüchtiges Speichermedium aufweisen, von Host-Daten, wobei: die Host-Daten in einer Vielzahl von RAID-Blöcken konfiguriert sind; jeder RAID-Block einem RAID-Streifen entspricht, der über die Vielzahl von Datenspeichervorrichtungen verteilt ist; und jeder RAID-Block einen Blockzeitwert aufweist, der einer Zeit entspricht, als der RAID-Block in der entsprechenden Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert wurde; Bestimmen einer Betriebsunterbrechung für mindestens eine Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen; Bestimmen, als Reaktion auf die Betriebsunterbrechung, eines letzten Blockzeitwerts für einen letzten RAID-Block, der durch die mindestens eine Datenspeichervorrichtung gespeichert ist; Bestimmen, basierend auf dem letzten Blockzeitwert, mindestens eines unvollständigen RAID-Streifens; und selektives Wiederherstellen des mindestens einen unvollständigen RAID-Streifens.
  12. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Speichern, benachbart zu jedem RAID-Block in dem nichtflüchtigen Speichermedium, des Blockzeitwerts dieses RAID-Blocks.
  13. Computerimplementiertes Verfahren gemäß Anspruch 12, weiterhin aufweisend: Konfigurieren der Vielzahl von Datenspeichervorrichtungen als Blockspeichervorrichtungen, einschließlich: einer Host-Datenblockgröße; und eine erweiterte Blockgröße, die zusätzliche Speicherorte über die Host-Datenblockgröße für jeden Host-Datenblock hinaus definiert, wobei das Speichern des Blockzeitwerts jedes RAID-Blocks das Speichern des Blockzeitwerts an den zusätzlichen Speicherorten einschließt, die der erweiterten Blockgröße für diesen RAID-Block entsprechen.
  14. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Speichern, in Metadatenspeicher für jede Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen, eines Vorrichtungszeitwerts, der einer Zeit entspricht, als ein jüngster RAID-Block eines jüngsten RAID-Streifens in dem nichtflüchtigen Speichermedium für diese Datenspeichervorrichtung gespeichert wurde.
  15. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Speichern, in RAID-Metadaten, eines Zeitzählerwerts für einen jüngsten RAID-Streifen, der in der Vielzahl von Datenspeichervorrichtungen gespeichert ist; Bestimmen, aus der mindestens einen Datenspeichervorrichtung, des letzten Blockzeitwerts; und Bestimmen, basierend auf dem Zeitzählerwert und dem letzten Blockzeitwert, des mindestens einen unvollständigen RAID-Streifens.
  16. Computerimplementiertes Verfahren gemäß Anspruch 15, weiterhin aufweisend: Senden, an die Vielzahl von Datenspeichervorrichtungen, des Zeitzählerwerts, der als der Blockzeitwert, der zu jedem RAID-Block in dem nichtflüchtigen Speichermedium benachbart ist, gespeichert werden soll.
  17. Computerimplementiertes Verfahren gemäß Anspruch 15, weiterhin aufweisend: selektives Erhöhen des Zeitzählerwerts um einen konfigurierbaren Granularitätsschwellenwert; und Schreiben einer Vielzahl von RAID-Streifen in die Vielzahl von Datenspeichervorrichtungen zwischen jedem Inkrement.
  18. Computerimplementiertes Verfahren gemäß Anspruch 15, weiterhin aufweisend: Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in der mindestens einen Datenspeichervorrichtung gespeichert sind, eines letzten vollständigen RAID-Streifens; und Bestimmen, basierend auf den Blockzeitwerten für RAID-Blöcke, die in einer anderen Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert sind, des mindestens einen unvollständigen RAID-Streifens seit dem letzten vollständigen RAID-Streifen.
  19. Computerimplementiertes Verfahren gemäß Anspruch 15, weiterhin aufweisend: Bestimmen eines Betriebsverlusts für die mindestens eine Datenspeichervorrichtung; Eintreten, als Reaktion auf den Betriebsverlust, in einen verschlechterten Zustand für einen RAID-Satz, der der Vielzahl von Datenspeichervorrichtungen entspricht; Erfassen einer Betriebsdatenspeichervorrichtung entsprechend einer Position der mindestens einen Datenspeichervorrichtung; Bestimmen, basierend auf einer Vorrichtungssignatur, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist; und Bestimmen der Betriebsunterbrechung als Reaktion darauf, dass die Betriebsdatenspeichervorrichtung die mindestens eine Datenspeichervorrichtung ist.
  20. System, aufweisend: eine Vielzahl von Datenspeichervorrichtungen, die ein nichtflüchtiges Speichermedium aufweisen, das konfiguriert ist, um Host-Daten zu speichern, wobei: die Host-Daten in einer Vielzahl von RAID-Blöcken konfiguriert sind; jeder RAID-Block einem RAID-Streifen entspricht, der über die Vielzahl von Datenspeichervorrichtungen verteilt ist; und jeder RAID-Block einen Blockzeitwert aufweist, der einer Zeit entspricht, als der RAID-Block in der entsprechenden Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen gespeichert wurde; Mittel zum Bestimmen einer Betriebsunterbrechung für mindestens eine Datenspeichervorrichtung der Vielzahl von Datenspeichervorrichtungen; Mittel zum Bestimmen, als Reaktion auf die Betriebsunterbrechung, eines letzten Blockzeitwerts für einen letzten RAID-Block, der durch die mindestens eine Datenspeichervorrichtung gespeichert ist; Mittel zum Bestimmen, basierend auf dem letzten Blockzeitwert, mindestens eines unvollständigen RAID-Streifens; und Mittel zum selektiven Wiederherstellen des mindestens einen unvollständigen RAID-Streifens.
DE112022002303.1T 2021-11-17 2022-05-14 Selektives wiederherstellen von unterbrochenen vorrichtungen in datenspeichervorrichtungsarrays Pending DE112022002303T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/528,768 2021-11-17
US17/528,768 US11853163B2 (en) 2021-11-17 2021-11-17 Selective rebuild of interrupted devices in data storage device arrays
PCT/US2022/029344 WO2023091185A1 (en) 2021-11-17 2022-05-14 Selective rebuild of interrupted devices in data storage device arrays

Publications (1)

Publication Number Publication Date
DE112022002303T5 true DE112022002303T5 (de) 2024-03-07

Family

ID=86323472

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022002303.1T Pending DE112022002303T5 (de) 2021-11-17 2022-05-14 Selektives wiederherstellen von unterbrochenen vorrichtungen in datenspeichervorrichtungsarrays

Country Status (4)

Country Link
US (1) US11853163B2 (de)
CN (1) CN117616376A (de)
DE (1) DE112022002303T5 (de)
WO (1) WO2023091185A1 (de)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US7020805B2 (en) * 2002-08-15 2006-03-28 Sun Microsystems, Inc. Efficient mechanisms for detecting phantom write errors
US7870464B2 (en) 2004-11-02 2011-01-11 International Business Machines Corporation System and method for recovery of data for a lost sector in a storage system
US7454668B1 (en) * 2005-09-23 2008-11-18 Emc Corporation Techniques for data signature and protection against lost writes
US8595595B1 (en) * 2010-12-27 2013-11-26 Netapp, Inc. Identifying lost write errors in a raid array
US20130198585A1 (en) * 2012-02-01 2013-08-01 Xyratex Technology Limited Method of, and apparatus for, improved data integrity
US10360119B2 (en) 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
CN110413439B (zh) * 2018-04-28 2023-10-20 伊姆西Ip控股有限责任公司 用于检测数据的不完整写入的方法、设备和计算机可读介质
US11275512B2 (en) 2018-05-08 2022-03-15 Micron Technology, Inc. Asynchronous power loss impacted data structure
US10761738B2 (en) 2018-07-13 2020-09-01 Seagate Technology Llc Raid performance by offloading tasks to expanders
US11132256B2 (en) 2018-08-03 2021-09-28 Western Digital Technologies, Inc. RAID storage system with logical data group rebuild
US11397644B2 (en) 2019-04-23 2022-07-26 Samsung Electronics Co., Ltd. Method for controlling operations of RAID system comprising host device and plurality of SSDs
CN111858189A (zh) 2019-04-29 2020-10-30 伊姆西Ip控股有限责任公司 对存储盘离线的处理

Also Published As

Publication number Publication date
CN117616376A (zh) 2024-02-27
WO2023091185A1 (en) 2023-05-25
US20230153206A1 (en) 2023-05-18
US11853163B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
US10001947B1 (en) Systems, methods and devices for performing efficient patrol read operations in a storage system
JP6294518B2 (ja) 不揮発性メモリシステムにおける同期ミラーリング
DE112014006605B4 (de) Speichersystem
DE112011103666B4 (de) Speicherverwaltung in Cluster-Datenverarbeitungssystemen
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
DE102013112672B4 (de) Datenspeicher für eine Remote-Umgebung
EP3179359B1 (de) Verfahren zum versenden von daten, datenempfangsverfahren und speichervorrichtung
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102018123817A1 (de) Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE112021003061T5 (de) Ausgleichen von resilienz und leistung durch selektive verwendung von verschlechterten schreibvorgängen und freier kapazität in speichersystemen
DE112020000305B4 (de) Verringern der wiederherstellungszeit in einer computerspeicherumgebung
US20160048342A1 (en) Reducing read/write overhead in a storage array
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE102011014588A1 (de) Multicasting-Schreibanforderungen an Mehrfachspeicher-Controller
US9792056B1 (en) Managing system drive integrity in data storage systems
DE102004027672A1 (de) Speicherplattenarraysystem
DE102016108733B4 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE112013000881T5 (de) Systeme und Verfahren zum Verhindern von Datenverlust
US9223658B2 (en) Managing errors in a raid
DE112014003372T5 (de) Verschieben von Objekten in einem primären Computer aufgrund von Speicherfehlern in einem sekundären Computer
DE102005012358A1 (de) Datenschutz unter Verwendung von Daten, die in Schnappschüsse verteilt sind
DE112018005135T5 (de) Thin provisioning unter verwendung von speicherbänken auf cloud-grundlage
DE112016000335T5 (de) Plattenerhalt und fehlervermeidung in einem raid-array
DE202019005816U1 (de) System zur Aufrechterhaltung der Fehlertoleranz einer Speichervorrichtung in einer zusammensetzbaren Infrastruktur

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE