DE112019000201T5 - Speichersysteme mit peer-datenbereinigung - Google Patents

Speichersysteme mit peer-datenbereinigung Download PDF

Info

Publication number
DE112019000201T5
DE112019000201T5 DE112019000201.5T DE112019000201T DE112019000201T5 DE 112019000201 T5 DE112019000201 T5 DE 112019000201T5 DE 112019000201 T DE112019000201 T DE 112019000201T DE 112019000201 T5 DE112019000201 T5 DE 112019000201T5
Authority
DE
Germany
Prior art keywords
data
peer
storage device
storage
cleansing
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
DE112019000201.5T
Other languages
English (en)
Inventor
Adam Roberts
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 DE112019000201T5 publication Critical patent/DE112019000201T5/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/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
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1088Scrubbing in RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Beispielhafte Peer-Speichersysteme, Speichervorrichtungen und Verfahren stellen eine Datenbereinigung unter Verwendung eines Peer-Kommunikationskanals bereit. Peer-Speichervorrichtungen stellen Peer-Kommunikationskanäle her, die Daten zwischen den Peer-Speichervorrichtungen kommunizieren. Eine Speichervorrichtung kann Datensegmente von ihrem Speichermedium für einen Datenbereinigungsprozess identifizieren. Eine Peer-Speichervorrichtung, die entsprechende Datensegmente zu dem Datensegment, das bereinigt wird, enthält, kann identifiziert werden. Ein entsprechender Sperrbefehl kann über den Peer-Kommunikationskanal gesendet werden, um die entsprechenden Datensegmente während des Datenbereinigungsprozesses zu sperren. Ein Datenbereinigungsfehlerbericht kann aus dem Datenbereinigungsprozess erzeugt werden. Wenn während des Datenbereinigungsprozesses ein Fehler entdeckt wird, kann die Speichervorrichtung den Peer-Kommunikationskanal verwenden, um Wiederherstellungsdaten von Peer-Speichervorrichtungen abzurufen, um das Datensegment mit dem Fehler zu rekonstruieren.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Datenspeichersysteme und, in einem spezielleren Beispiel, auf Datenspeichersysteme mit Peer-to-Peer-Vorgängen.
  • STAND DER TECHNIK
  • Multivorrichtungsspeichersysteme verwenden mehrere diskrete Speichervorrichtungen, in der Regel Plattenlaufwerke (Solid-State-Laufwerke, Festplattenlaufwerke, Hybridlaufwerke, Bandlaufwerke usw.) zum Speichern großer Datenmengen. Diese Multivorrichtungsspeichersysteme sind im Allgemeinen in einer Anordnung von Laufwerken angeordnet, die durch eine gemeinsame Kommunikationsstruktur miteinander verbunden sind und in vielen Fällen durch eine Speichersteuerung, eine Steuerung für eine redundante Anordnung von unabhängigen Festplatten (RAID) oder eine allgemeine Steuerung gesteuert werden, um Speicher- 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).
  • Einige Multivorrichtungsspeichersysteme verwenden Speichervorrichtungen, die in der Lage sind, miteinander über die Zwischenverbindungs-Fabric und/oder die Netzwerk-Fabric zu kommunizieren. In einigen Fällen sind diese Vorrichtungen zur Peer-to-Peer-Kommunikation ohne die Beteiligung einer Speichersteuerungsebene, wie eine Speichersteuerung oder Host-Steuerung, als Vermittler in der Lage. Diese Peer-Speichervorrichtungen können in der Lage sein, Nachrichten auszutauschen und/oder Host-Daten über das Zwischenverbindungs-Fabric unabhängig von der Speichersteuerungsebene zu übertragen. Die Reduzierung von Kommunikation, Datentransfer, Verarbeitung und/oder Datenverwaltung an der Speichersteuerungsebene kann Engpässe reduzieren und die Skalierbarkeit mit steigender Anzahl und Kapazität von Speichervorrichtungen verbessern.
  • Speichervorrichtungen, insbesondere Vorrichtungen mit Flash-Speicher zur dauerhaften Speicherung in transaktionalen Anwendungen, sind im Laufe der Zeit empfindlich gegenüber Datenbeschädigung. Beispielsweise können Datenbits in einem Flash-Speicher durch das Lesen, Programmieren und Löschen von Sequenzen beschädigt werden, wenn Speicherzellen in räumlicher Nähe zu jenen, die verwendet werden, unbeabsichtigt belastet werden, bis zu einem Punkt, an dem sich gespeicherte Ladungszustände ausreichend ändern, um Bitfehler hervorzurufen. Selbst unter Bezugnahme auf Lesevorgänge kann eine Lesespannung sowohl gelesene als auch benachbarte Speicherzellen beeinflussen, insbesondere bei wiederholten Lesevorgänge mit großem Volumen. Während die Fehlerkorrekturcodes (error correction codes, ECC), die zum Codieren der Host-Daten verwendet werden, die Wiederherstellung von einigen Bitfehlern ermöglichen können, kann die Beschädigung die Kapazität der ECC im Laufe der Zeit übersteigen.
  • Zur Bekämpfung der langfristigen Auswirkungen von Datenbeschädigung implementieren einige Speichervorrichtungen einen Bereinigungsprozess, wobei Dateneinheiten gelesen und umgeschrieben werden, um ECC die Korrektur von akkumulierten Fehlern und/oder die Identifikation von Dateneinheiten, die die Fähigkeiten der ECC zur Wiederherstellung überschreiten, zu ermöglichen. Diese Datenbereinigungen können auf einem periodischen Plan, Lese-/Schreib- und/oder Haltbarkeitsschwellenwerten und/oder Ereignissen wie Lese- oder Schreibfehlern basieren. In einigen Speicherarchitekturen wird die Planung und Verwaltung von Datenbereinigungen in der Speichersteuerungsebene verwaltet, und individuelle Speichervorrichtungen reagieren auf Datenverwaltungsbefehle, um zielgerichtete Datenbereinigungen zu initiieren. Die Verwaltung von Datenbereinigungen auf Speichersteuerungsebene kann Verarbeitungs- und Planungsengpässe erzeugen, verfügbare Rechenressourcen an den Speichervorrichtungen nicht voll auslasten und die Skalierbarkeit von Speicher-Arrays reduzieren.
  • Daher besteht noch ein Bedarf an Speicherarchitekturen, die Peer-to-Peer-Kommunikation für Datenbereinigungsauslagerung aus der Speichersteuerungsebene ermöglichen.
  • KU RZDARSTELLU NG
  • Es werden verschiedene Gesichtspunkte von Peer-Vorgängen zwischen Peer-Speichervorrichtungen, insbesondere Peer-Datenbereinigung, beschrieben. In einem innovativen Gesichtspunkt weist eine Speichervorrichtung einen Prozessor, einen Arbeitsspeicher, mindestens ein Speichermedium und eine Schnittstelle auf, die eingerichtet ist, um mit einer Vielzahl von Peer-Speichervorrichtungen über einen Peer-Kommunikationskanal zu kommunizieren. Ein Datenbereinigungsmodul ist in dem Arbeitsspeicher gespeichert und kann durch den Prozessor ausführbar sein, um Vorgänge auszuführen. Ein erstes Datensegment auf dem mindestens einen Speichermedium wird für einen Datenbereinigungsprozess ausgewählt. Mindestens eine Peer-Speichervorrichtung mit mindestens einem entsprechenden Datensegment wird identifiziert. Ein entsprechender Datensperrbefehl wird über den Peer-Kommunikationskanal an die mindestens eine Peer-Speichervorrichtung gesendet. Ein Datenbereinigungsvorgang wird auf dem ersten Datensegment ausgeführt. Eine Datenbereinigungsfehlerbericht wird für das erste Datensegment als Reaktion auf das Durchführen des Datenbereinigungsvorgangs erzeugt.
  • In verschiedenen Ausführungsformen kann der Peer-Kommunikationskanal eine Speichersteuerungsebene zum Verwalten der Speichervorrichtung umgehen. Ein Peer-Vorrichtungsregister kann in dem Arbeitsspeicher gespeichert sein und einen Peer-Speichervorrichtungsidentifikator für jede der mehreren Peer-Speichervorrichtungen aufweisen. Der Peer-Speichervorrichtungsidentifikator kann verwendet werden, um über den Peer-Kommunikationskanal gesendete Daten zu adressieren. Die Peer-Datenkonfiguration kann entsprechende Datensegmente in der Vielzahl von Peer-Speichervorrichtungen identifizieren. Das Identifizieren mindestens einer Peer-Speichervorrichtung, die mindestens ein entsprechendes Datensegment enthält, kann das Zugreifen auf die Peer-Datenkonfiguration einschließen. Die Peer-Datenkonfiguration kann eine redundante Anordnung von unabhängigen Festplattenkonfigurationen (RAID-Konfigurationen) sein. Das erste Datensegment kann ein lokaler Abschnitt eines RAID-Streifens sein. Das mindestens eine entsprechende Datensegment kann mindestens einen zusätzlichen Abschnitt des RAID-Streifens einschließen.
  • In einigen Ausführungsformen kann das Datenbereinigungsmodul weiterhin durch den Prozessor ausführbar sein, um Vorgänge durchzuführen, die das Speichern einer Datenbereinigungskonfiguration in dem Arbeitsspeicher aufweisen und den Datenbereinigungsprozess gemäß einem Datenbereinigungsplan initiieren. Die Datenbereinigungskonfiguration kann einen Datenbereinigungsplan und ein Datenbereinigungsmuster definieren und das erste Segment kann als Reaktion auf das Datenbereinigungsmuster ausgewählt werden. Die Datenbereinigungskonfiguration kann von einem Datenbereinigungsverwalter empfangen werden. Der Datenbereinigungsverwalter kann einen Peer-Datenbereinigungsverwalter aufweisen, der in einer Verwalter-Peer-Speichervorrichtung instanziiert wird, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird und über den Peer-Kommunikationskanal kommuniziert und einen Steuerungsdatenbereinigungsverwalter, der in einer Speichersteuerungsebene der Vielzahl von Peer-Speichervorrichtungen instanziiert wird. Der Datenbereinigungsprozess kann einen ersten Bereinigungsabschnitt einschließen, der durch den Datenbereinigungsverwalter für eine erste Vielzahl von Datensegmenten auf dem mindestens einen Speichermedium durchgeführt wird, und einen zweiten Bereinigungsabschnitt, der durch das Datenbereinigungsmodul für eine zweite Vielzahl von Datensegmenten auf dem mindestens einen Speichermedium durchgeführt wird. Die zweite Vielzahl von Datensegmenten kann das erste Datensegment einschließen. Der zweite Datenbereinigungsabschnitt des Datenbereinigungsprozesses kann als Reaktion auf das Empfangen der Datenbereinigungskonfiguration von dem Datenbereinigungsverwalter initiiert werden.
  • In einigen Ausführungsformen kann ein Peer-Datensegment auf mindestens einem Peer-Speichermedium für einen Peer-Datenbereinigungsprozess ausgewählt werden. Das Peer-Speichermedium kann sich in einer ausgewählten Peer-Speichervorrichtung aus der Vielzahl von Peer-Speichervorrichtungen befinden. Ein Peer-Datenbereinigungsvorgang kann auf dem Peer-Datensegment über den Peer-Kommunikationskanal durchgeführt werden. Eine Peer-Datenbereinigungsfehlerbericht kann für das Peer-Datensegment als Reaktion auf das Durchführen des Peer-Datenbereinigungsvorgangs erzeugt werden. Ein Rechenressourcennutzungswert, der sich auf den Prozessor und den Arbeitsspeicher bezieht, kann überwacht werden. Der Datenbereinigungsprozess kann als Reaktion darauf, dass der Rechenressourcennutzungswert unter einem berechneten Rechenressourcenverfügbarkeitsschwellenwert liegt, geplant werden.
  • In einigen Ausführungsformen kann ein Selbstheilungsmodul in dem Arbeitsspeicher gespeichert sein und durch den Prozessor ausführbar sein, um Vorgänge auszuführen. Eine fehlerhafte Dateneinheit kann aus dem ersten Datensegment als Reaktion auf den Datenbereinigungsprozess identifiziert werden. Wiederherstellungsdaten für die fehlerhafte Dateneinheit können von einer Wiederherstellungs-Peer-Speichervorrichtung über den Peer-Kommunikationskanal empfangen werden. Die fehlerhafte Dateneinheit kann von einem ersten Speichermediumssegment in dem mindestens einen Speichermedium zu einem zweiten Speichermediumssegment unter Verwendung der Wiederherstellungsdaten wiederhergestellt werden.
  • In einem weiteren innovativen Gesichtspunkt stellt ein computerimplementiertes Verfahren zur Ausführung durch eine Speichervorrichtung eine Peer-Datenbereinigung bereit. Speichervorrichtungsidentifikatoren für eine Vielzahl von Peer-Speichervorrichtungen werden in einer ersten Speichervorrichtung gespeichert. Ein Peer-Kommunikationskanal ist mit mindestens einem von der Vielzahl von Peer-Vorrichtungen von der ersten Speichervorrichtung eingerichtet. Der Peer-Kommunikationskanal umgeht eine Speichersteuerungsebene zum Verwalten der ersten Speichervorrichtung. Ein Datenbereinigungsprozess wird ausgeführt. Ein erstes Datensegment wird in der ersten Speichervorrichtung ausgewählt. Mindestens ein entsprechendes Datensegment wird in mindestens einer entsprechenden Peer-Speichervorrichtung identifiziert. Ein entsprechender Datensperrbefehl wird über den Peer-Kommunikationskanal an die mindestens eine entsprechende Peer-Speichervorrichtung gesendet. Ein Datenbereinigungsvorgang wird auf dem ersten Datensegment durchgeführt. Eine Datenbereinigungsfehlerbericht wird für das erste Datensegment als Reaktion auf das Durchführen des Datenbereinigungsvorgangs erzeugt.
  • Bei verschiedenen Ausführungsformen kann das Identifizieren mindestens eines entsprechenden Datensegments das Zugreifen auf ein redundantes Peer-Array unabhängiger Festplattendatenkonfiguration (redundant array of independent disks, RAID) einschließen, die eingerichtet ist, um entsprechende Datensegmente für das erste Datensegment in der Vielzahl von Peer-Speichervorrichtungen zu identifizieren. Das erste Datensegment kann ein lokaler Abschnitt von einem RAID-Streifen sein, der in dem ersten Speicher gespeichert ist. Das mindestens eine entsprechende Datensegment kann mindestens einen zusätzlichen Abschnitt des RAID-Streifens einschließen. Eine Datenbereinigungskonfiguration kann gespeichert sein, und die Datenbereinigungskonfiguration kann einen Datenbereinigungsplan und ein Datenbereinigungsmuster definieren. Der Datenbereinigungsprozess kann gemäß dem Datenbereinigungsplan initiiert werden. Das erste Datensegment kann als Reaktion auf das Datenbereinigungsmuster ausgewählt werden. Die Datenbereinigungskonfiguration kann von einem Datenbereinigungsverwalter empfangen werden. Der Datenbereinigungsverwalter kann einen Peer-Datenbereinigungsverwalter aufweisen, der in einer Verwalter-Peer-Speichervorrichtung instanziiert wird, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird und über den Peer-Kommunikationskanal kommuniziert und einen Steuerungsdatenbereinigungsverwalter, der in einer Speichersteuerungsebene der Vielzahl von Peer-Speichervorrichtungen instanziiert wird.
  • In einigen Ausführungsformen kann ein Peer-Datenbereinigungsprozess unter Verwendung der ersten Speichervorrichtung durchgeführt werden. Ein Peer-Datensegment kann auf mindestens einem Peer-Speichermedium ausgewählt werden. Das Peer-Speichermedium kann sich in einer ausgewählten Peer-Speichervorrichtung der Vielzahl von Peer-Speichervorrichtungen befinden und nicht die erste Speichervorrichtung sein. Ein Peer-Datenbereinigungsvorgang kann auf dem Peer-Datensegment über den Peer-Kommunikationskanal durchgeführt werden. Eine Peer-Datenbereinigungsfehlerbericht kann für das Peer-Datensegment als Reaktion auf das Durchführen des Peer-Datenbereinigungsvorgangs erzeugt werden. Ein Rechenressourcennutzungswert, der sich auf mindestens eine Rechenressource der ersten Speichervorrichtung bezieht, kann überwacht werden. Die Planung des Datenbereinigungsprozess kann als Reaktion darauf erfolgen, dass der Rechenressourcennutzungswert unter einem berechneten Rechenressourcenverfügbarkeitsschwellenwert liegt.
  • In einigen Ausführungsformen kann eine fehlerhafte Dateneinheit aus dem ersten Datensegment als Reaktion auf den Datenbereinigungsprozess identifiziert werden. Wiederherstellungsdaten für die fehlerhafte Dateneinheit können von einer Wiederherstellungs-Peer-Speichervorrichtung über den Peer-Kommunikationskanal empfangen werden. Die fehlerhafte Dateneinheit kann von einem ersten Speichermediumssegment in der ersten Speichervorrichtung zu einem zweiten Speichermediumssegment unter Verwendung der Wiederherstellungsdaten wiederhergestellt werden.
  • In noch einem weiteren innovativen Gesichtspunkt weist ein Speichersystem eine Vielzahl von Peer-Speichervorrichtungen auf, und jede Speichervorrichtung umfasst mindestens ein Speichermedium und verschiedene Mittel. Es werden Mittel zum Speichern von Speichervorrichtungsidentifikatoren für die Vielzahl von Peer-Speichervorrichtungen bereitgestellt. Es werden Mittel zum Einrichten eines Peer-Kommunikationskanals zwischen einer bereinigenden Peer-Speichervorrichtung, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird, und einer Ziel-Peer-Speichervorrichtung, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird, bereitgestellt. Der Peer-Kommunikationskanal umgeht eine Speichersteuerungsebene zum Verwalten der Vielzahl von Peer-Speichervorrichtungen. Es werden Mittel für die bereinigende Peer-Speichervorrichtung bereitgestellt, um ein erstes Datensegment in der Zielspeichervorrichtung auszuwählen. Es werden Mittel zum Identifizieren mindestens eines entsprechenden Datensegments in mindestens einer entsprechenden Peer-Speichervorrichtung bereitgestellt. Es werden Mittel zum Senden eines entsprechenden Datensperrbefehls an die mindestens eine entsprechende Peer-Speichervorrichtung über den Peer-Kommunikationskanal bereitgestellt. Es werden Mittel für die bereinigende Peer-Speichervorrichtung bereitgestellt, um einen Datenbereinigungsvorgang auf dem ersten Datensegment über den Peer-Kommunikationskanal durchzuführen. Es werden Mittel zum Erzeugen eines Datenbereinigungsfehlerberichts für das erste Datensegment als Reaktion auf die Durchführung des Datenbereinigungsvorgangs bereitgestellt.
  • In verschiedenen Ausführungsformen werden Mittel zum Verwalten einer Vielzahl von Datenbereinigungsvorgängen für die Vielzahl von Peer-Speichervorrichtungen bereitgestellt. Die Mittel zum Verwalten der Vielzahl von Datenbereinigungsvorgängen können eingerichtet sein, um eine Datenbereinigungskonfiguration an die Vielzahl von Peer-Speichervorrichtungen zu senden. Die Datenbereinigungskonfiguration kann einen Datenbereinigungsplan, ein Datenbereinigungsmuster, die bereinigende Peer-Speichervorrichtung und die Ziel-Peer-Speichervorrichtung für jede der Vielzahl von Datenbereinigungsvorgängen definieren. Mittel können zur Wiederherstellung mindestens einer fehlerhafte Dateneinheit aus dem ersten Datensegment unter Verwendung von Wiederherstellungsdaten von der Vielzahl von Peer-Speichervorrichtungen bereitgestellt werden. Die Mittel zum Wiederherstellen der mindestens einen fehlerhaften Dateneinheit können eingerichtet sein, um automatisch auf den Datenbereinigungsvorgang zu reagieren und die Wiederherstellungsdaten zwischen den Peer-Speichervorrichtungen über den Peer-Kommunikationskanal zu übertragen.
  • Die verschiedenen Ausführungsformen wenden die Lehren der Multivorrichtungs-Peer-Speichersysteme vorteilhaft an, um die Funktionalität solcher Computersysteme zu verbessern. Die verschiedenen Ausführungsformen schließen Vorgänge zum Beseitigen oder mindestens zum Reduzieren der Probleme in den bisherigen Speichersystemen ein, die vorstehend erläutert wurden, und sind dementsprechend für einige Anwendungen zuverlässiger und skalierbarer als andere Computerdatenspeicherarchitekturen. Das heißt, die verschiedenen hier offenbarten Ausführungsformen schließen Hardware und/oder Software mit Funktionalität zur Verbesserung der Zuverlässigkeit und Skalierbarkeit von Peer-to-Peer-Datenbereinigungsvorgängen ein, die auf der Ermöglichung von Peer-to-Peer-Datenbereinigung mit begrenzter Beteiligung der Speichersteuerungsebene basiert. Dementsprechend stellen die hierin offenbarten Ausführungsformen verschiedene Verbesserungen an Speichersystemen bereit.
  • Es versteht sich, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeits- und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.
  • Figurenliste
    • 1 veranschaulicht schematisch ein Beispiel eines Peer-Speichersystems.
    • 2 veranschaulicht schematisch ein Beispiel einer Speichersteuerungsebenenkonfiguration für ein oder mehrere Peer-Speichersysteme.
    • 3 veranschaulicht schematisch ein Beispiel für eine Speichervorrichtung des Peer-Speichersystems aus 1.
    • 4 veranschaulicht ein Beispiel eines Verfahrens zum Durchführen einer Datenbereinigung auf einer Speichervorrichtung mit Peer-to-Peer-Kommunikation.
    • 5 veranschaulicht ein Beispiel eines Verfahrens zum Verwalten einer Peer-Datenbereinigung unter Verwendung einer Speichervorrichtung.
    • 6 veranschaulicht ein Beispiel eines Verfahrens für einen Datenselbstbereinigungs- und -selbstheilungsprozess unter Verwendung einer Speichervorrichtung.
  • DETAILLIERTE BESCHREIBUNG
  • 1 veranschaulicht eine Ausführungsform eines Beispiels eines Datenspeichersystems 100 mit Peer-kommunizierenden Datenspeichervorrichtungen 120. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht. Zu diesem Zweck schließt das Datenspeichersystem 100 als ein nicht einschränkendes Beispiel eine oder mehrere Datenspeichervorrichtungen 120 (auch manchmal als Informationsspeichervorrichtungen, Speichervorrichtungen oder Laufwerke bezeichnet) ein, die in einer Peer-Gruppe 106 eingerichtet sind.
  • In der gezeigten Ausführungsform umfasst die Peer-Gruppe 106 eine Anzahl von Speichervorrichtungen 120, die an einem gemeinsamen Zwischenverbindungs-Fabric 114 angeschlossen sind. Beispielsweise kann die Peer-Gruppe 106 eine Anzahl von Laufwerken einschließen, die in einem Speicher-Array angeordnet sind, wie Speichervorrichtungen, die ein gemeinsames Rack oder eine gemeinsame Einheit in einem Datenzentrum teilen. In einigen Ausführungsformen kann sich die Peer-Gruppe 106 Backplane-Konnektivität, Netzwerk-Switch(e) und/oder andere Hardware- und Software-Komponenten teilen, die sich auf das Zwischenverbindungs-Fabric 114 beziehen. In einigen Ausführungsformen können Peer-Gruppen nicht in der gleichen Einheit, dem gleichen Rack, Datenzentrum oder der gleichen Geografie platziert sein. Beispielsweise können das Zwischenverbindungs-Fabric 114, die Netzwerkschnittstelle 112 und das Netzwerk-Fabric 104 eine Peer-to-Peer-Kommunikation zwischen Speichervorrichtungen über einen beliebigen Abstand ermöglichen, und Peer-Bonds können ungeachtet (oder sogar aufgrund) unterschiedlicher geografischer Orte, Datenzentren, Administratoren und Organisationen eingerichtet werden. In einigen Ausführungsformen kann die Peer-Gruppe 106 durch Peer-Bonds definiert sein, die Peer-to-Peer-Kommunikation ohne die Intervention zugehöriger Speichersteuerungsebenen ermöglichen.
  • In einigen Ausführungsformen sind die Datenspeichervorrichtungen 120 Solid-State-Laufwerke (SSDs) oder schließen diese ein. Jede Datenspeichervorrichtung 120.1 bis 120.n kann eine nichtflüchtige Speicher- (non-volatile memory, NVM) oder Vorrichtungssteuerung 130 basierend auf Rechenressourcen (Prozessor und Speicher) einschließen und eine Vielzahl von NVM- oder Medienvorrichtungen 140 zur Datenspeicherung (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 Datenspeichervorrichtungen eine oder mehrere NVM-Steuerungen, wie Flash-Steuerungen oder Kanal-Steuerungen (z. B. für Speichervorrichtungen mit NVM-Vorrichtungen in mehreren Speicherkanälen). In einigen Ausführungsformen können Datenspeichervorrichtungen 120 jeweils in einem Gehäuse 150 verpackt sein, wie in einem mehrteiligen abgedichteten Gehäuse mit einem definierten Formfaktor und Ports und/oder Verbindern zum Verbinden mit dem Zwischenverbindungs-Fabric 114.
  • In einigen Ausführungsformen kann eine entsprechende Datenspeichervorrichtung 120 eine einzelne Medienvorrichtung 140 einschließen, während in anderen Ausführungsformen die entsprechende Datenspeichervorrichtung 120 eine Vielzahl von NVM-Vorrichtungen einschließt. In einigen Ausführungsformen schließen die Medienvorrichtungen einen NAND-Flash-Speicher oder einen NOR-Flash-Speicher ein. In einigen Ausführungsformen schließt die Datenspeichervorrichtung 120 ein oder mehrere Festplattenlaufwerke (HDD) ein. In einigen Ausführungsformen können die Datenspeichervorrichtungen 120 eine Flash-Speichervorrichtung 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 innehaben (z. B. Phasenänderungs-Direktzugriffsspeicher (phase-change random access memory, PCRAM), resistive Direktzugriffsspeicher (resistive random access memory, ReRAM), Spin-Transfer-Drehmoment-Direktzugriffsspeicher (spin-transfer torque random access memory, STT-RAM), magnetoresistive Direktzugriffsspeicher (magneto-resistive random access memory, MRAM) usw.).
  • Die Speichersteuerung 110 ist über das Zwischenverbindungs-Fabric 114 mit den Datenspeichervorrichtungen 120.1 bis 120.n gekoppelt. In einigen Ausführungsformen kann die Speichersteuerung 110 jedoch als Komponente und/oder als ein Subsystem einer anderen Komponente des Datenspeichersystems 100 gehostet werden. Beispielsweise kann in einigen Ausführungsformen ein Teil oder die gesamte Funktionalität der Speichersteuerung 110 durch Software implementiert werden, die auf einer oder mehreren Rechenressourcen in mindestens einer der Datenspeichervorrichtungen 120.1 bis 120.n des Zwischenverbindungs-Fabrics 114 oder der Schnittstelle 112 ausgeführt wird. Die Speichersteuerung 110 wird manchmal als ein Steuerungssystem, ein Hauptsteuerungssystem, eine nichtflüchtige Speicher-Express-Steuerung (non-volatile memory express controller, NVMe-Steuerung), Speicherbereinigungs-Leiter (garbage collection leader, GC-Leiter) oder Speichervirtualisierungssteuerung (storage virtualization controller, SVC) bezeichnet. In einigen Ausführungsformen fungiert eine Vorrichtungssteuerung 130.1 in Verbindung mit einer bestimmten Speichervorrichtung (z. B. 120.1) als Speichersteuerung 110 für andere Speichervorrichtungen (z. B. 120-2, 120-3 und 120.n) im Datenspeichersystem 100. In einigen Ausführungsformen ist die Speichersteuerung 110 eine Komponente und/oder ein Subsystem von Host 102 (nachfolgend beschrieben).
  • In einigen Ausführungsformen ist Host 102 mit dem Datenspeichersystem 100 über eine Netzwerkschnittstelle 112 über ein Netzwerk-Fabric 104 gekoppelt. In einigen Ausführungsformen sind mehrere Hosts 102 (von denen nur einer in 1 dargestellt ist) mit dem Datenspeichersystem 100 über die Netzwerkschnittstelle 112 gekoppelt, bei der es sich um eine Speichernetzwerkschnittstelle oder eine andere Schnittstelle handeln kann, die die Kommunikation mit mehreren Hosts 102 unterstützt. Das Netzwerk-Fabric 104 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. Zum Beispiel kann das Netzwerk-Fabric 104 jedes Mittel eines herkömmlichen Datenkommunikationsnetzes wie ein lokales Netz (LAN), ein Wide Area Network (WAN), ein Telefonnetz wie das öffentliche Telefonnetz (PSTN), ein Intranet, das Internet oder jedes andere geeignete Kommunikationsnetz oder eine Kombination von Kommunikationsnetzen einschließen.
  • Der Host 102 oder ein entsprechender Host in einem System mit mehreren Hosts kann jede beliebige geeignete Computervorrichtung sein, wie ein Computer, ein Laptop, ein Tablet, ein Netbook, ein Internetkiosk, ein persönlicher digitaler Assistent, ein Mobiltelefon, ein Smartphone, eine Spielekonsole, ein Computerserver oder eine beliebige andere Rechenvorrichtung. Der Host 102 wird manchmal als ein Hostsystem, Client oder Clientsystem bezeichnet. In einigen Ausführungsformen ist der Host 102 ein Serversystem, wie ein Serversystem in einem Datenzentrum. In einigen Ausführungsformen sind der eine oder die mehreren Hosts 102 eine oder mehrere Host-Vorrichtungen, die sich von der Speichersteuerung 110 unterscheiden und sich von der Vielzahl von Speichervorrichtungen 120 unterscheiden; aber in einigen anderen Ausführungsformen schließen der eine oder die mehreren Hosts 102 eine der Speichervorrichtungen 120 ein, die eingerichtet wurde, um Datenverarbeitungsoperationen durchzuführen und Datenspeicherbefehle zu senden, um auf Daten zuzugreifen, die in der einen oder den mehreren Speichervorrichtungen 120 gespeichert sind. In einigen anderen Ausführungsformen sind der eine oder die mehreren Hosts 102 so eingerichtet, dass sie Daten in der Vielzahl von Speichervorrichtungen 120 speichern und auf diese zugreifen.
  • 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 eine oder mehreren Vorrichtungssteuerungen 130 sind, wenn sie in einer entsprechenden Speichervorrichtung 120 eingeschlossen sind, über das Zwischenverbindungs-Fabric 114 mit Speichersteuerung 110 gekoppelt. Das Zwischenverbindungs-Fabric 114 wird manchmal als eine Datenverbindung bezeichnet, überträgt in der Regel jedoch zusätzlich zu Daten Befehle, und überträgt zusätzlich zu Datenwerten, die in den Medienvorrichtungen 140 gespeichert und Datenwerten, die von den Medienvorrichtungen 140 gelesen werden, optional Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen.
  • In einigen Ausführungsformen sind die Speichersteuerung 110, die eine oder mehreren Vorrichtungssteuerungen 130 und die Medienvorrichtungen 140 jedoch in derselben Vorrichtung (d. h. einer integrierten Vorrichtung) als Komponenten davon eingeschlossen. Weiterhin sind in einigen Ausführungsformen eine oder mehrere Speichervorrichtungen 120 (z. B. einschließlich Speichersteuerung 110, der einen oder mehreren Vorrichtungssteuerungen 130 und die Medienvorrichtungen 140) in eine Host-Vorrichtung (z. B. Host 102) eingebettet, wie eine mobile Vorrichtung, ein Tablet, ein anderer Computer oder eine computergesteuerte Vorrichtung, und die hierin beschriebenen Verfahren werden zumindest teilweise durch die eingebettete Speichersteuerung durchgeführt. In einigen Ausführungsformen sind Vorrichtungssteuerungen 130 so eingerichtet, dass sie sowohl ein oder mehrere Medienvorrichtungen 140 steuern und in Verbindung mit Speichersteuerung 110 verteilte Speichersteuerungsfunktionen bereitstellen.
  • In einigen Ausführungsformen schließen die Speichervorrichtungen 120 eine Vielzahl von Medienvorrichtungen 140, wie Flash-Speichervorrichtungen, und optional weniger Vorrichtungssteuerungen 130 ein. Anders betrachtet schließt eine Speichervorrichtung 120 in einigen Ausführungsformen mehrere Arbeitsspeicherkanäle ein, von denen jeder eine Vorrichtungssteuerung 130 und einen Satz von Medienvorrichtungen 140 innehat, die mit der Vorrichtungssteuerung 130 gekoppelt sind. In einigen Ausführungsformen teilen sich jedoch zwei oder mehr Arbeitsspeicherkanäle eine Vorrichtungssteuerung 130. In beiden Beispielen hat jeder Arbeitsspeicherkanal einen eigenen Satz von Medienvorrichtungen 140. In einem nicht einschränkenden Beispiel beträgt die Anzahl der Speicherkanäle in einer typischen Speichervorrichtung 8, 16 oder 32. In einem weiteren nicht einschränkenden Beispiel beträgt die Anzahl von Medienvorrichtungen 140 pro Arbeitsspeicherkanal typischerweise 8, 16, 32 oder 64. Des Weiteren unterscheidet sich in einigen Ausführungsformen die Anzahl der Medienvorrichtungen 140 in einem Arbeitsspeicherkanal von der Anzahl der Medienvorrichtungen in einem der anderen Arbeitsspeicherkanäle.
  • In einigen Ausführungsformen schließt jede Vorrichtungssteuerung der Vorrichtungssteuerungen 130 eine oder mehrere Verarbeitungseinheiten ein (auch manchmal CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller genannt), die so eingerichtet sind, dass sie Befehle in einem oder mehreren Programmen (z. B. in Vorrichtungssteuerungen 130) ausführen. In einigen Ausführungsformen teilen sich eine oder mehrere Komponenten Prozessoren im Rahmen der Funktion der Vorrichtungsteuerungen 130 und in einigen Fällen auch darüber hinausgehend. Wie vorstehend erwähnt, sind die Medienvorrichtungen 140 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 140 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).
  • Die Flash-Speichervorrichtung(en) (z. B. Speichervorrichtungen 140) kann bzw. können für Unternehmensspeicher eingerichtet sein, die für Anwendungen wie Cloud Computing, für Datenbankanwendungen, primäre und/oder sekundäre Speicher oder zum Zwischenspeichern von gespeicherten (oder zu speichernden) Daten in sekundären Speichern, wie Festplattenlaufwerken, geeignet sind. Außerdem und/oder alternativ kann bzw. können die Flash-Speichervorrichtung(en) (z. B. Medienvorrichtungen 140) auch für Anwendungen mit relativ kleinerem Maßstab wie persönliche Flash-Laufwerke oder Festplattenersatz für PCs, Laptops und Tablets eingerichtet sein. Obwohl hier als Beispiel Flash-Speichervorrichtungen und Flash-Steuerungen verwendet werden, schließen in einigen Ausführungsformen Speichervorrichtung(en) 120 andere nichtflüchtige Speichervorrichtungen und entsprechende nichtflüchtige Speichersteuerung(en) ein.
  • In einigen Ausführungsformen sind die Medienvorrichtungen 140 in eine Reihe von adressierbaren und einzeln auswählbaren Blöcken unterteilt, die manchmal als Löschblöcke oder Programmierblö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 beliebig große Zuweisung von Daten beschreiben, z. B. Host-Block, Datenobjekt, Sektor, Seite, Seite mit mehreren Ebenen, Lösch-/Programmierblock, Medienvorrichtung/Paket usw. Speicherorte können physische und/oder logische Orte auf Medienvorrichtungen 140 einschließen und können je nach Speichermedium, Speichervorrichtung/Systemkonfiguration und/oder Kontext auf unterschiedlichen Granularitätsebenen beschrieben und/oder zugewiesen werden. Beispielsweise können Speicherorte bei einer logischen Blockadressierungsdateneinheit (logical block address data unit, LBA-Dateneinheit) eines Hosts Größe und Adressierbarkeit für Host-Lese/Schreibzwecke zugewiesen werden, aber als Seiten mit Speichervorrichtungsadressierung verwaltet werden, die in der Medien-Flash-Translationsschicht (flash translation layer, FTL) in anderen Kontexten verwaltet wird.
  • Mediensegmente können physikalische Speicherstellen auf Medienvorrichtungen 140 einschließen, die auch einer oder mehreren logischen Speicherstellen entsprechen können. In einigen Ausführungsformen können Mediensegmente eine kontinuierliche Reihe von physikalischem Speicherort 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. Datensegmente können eine Vielzahl von Dateneinheiten einschließen, die durch eine Reihe von LBAs beschrieben werden können, wie etwa Host-LBAs. In einigen Ausführungsformen kann ein Mediensegment auf einer Speichervorrichtung ein oder mehrere Datensegmente einschließen, und diese Datensegmente können Datenintegritätsbeziehungen mit entsprechenden Datensegmenten auf anderen Speichervorrichtungen, wie Paritätsdaten, Spiegeldaten und/oder RAID-Streifen, einschließen.
  • 2 zeigt eine Ausführungsform eines Beispiels eines Speichersystems 200, wie ein globales Speichersystem, das mehrere verteilte Speichersysteme 230 an unterschiedlichen Orten 220 implementiert. Das Speichersystem 200 kann als eine Vielzahl verteilter Speichersysteme 230 implementiert sein, die mit einer Anwendung 210 zum Zugreifen auf, Speichern und Verwenden von in dem Speichersystem 200 gespeicherten Daten gekoppelt ist. Das Speichersystem 200 kann eine Vielzahl von Speichervorrichtungen 228 einschließen, die als Komponenten der disaggregierten Speichersysteme eingerichtet sind, und einige oder alle dieser Speichervorrichtungen 228 können für eine Peer-Kommunikation eingerichtet und einer oder mehreren Peer-Gruppen zugeordnet sein. In einigen Ausführungsformen können diese Peer-Gruppen Speichervorrichtungen an unterschiedlichen physischen Orten 220 mit unterschiedlichen Administratoren 232 einschließen. Zusätzliche Fernadministratoren 256 können verschiedene Verantwortlichkeiten für das Speichersystem 200 haben und ein netzbasiertes RAID-Verwaltungssystem 250 verwenden, um die Datenwiederherstellung über das Speichersystem 200 zu konfigurieren, zu überwachen und zu steuern.
  • Die Verbindung zwischen dem Speichersystem 200 und der Anwendung 210 könnte beispielsweise als ein geeignetes Datenkommunikationsnetz 202 wie ein LAN, WAN, Internet, usw. implementiert werden. Die Anwendung 210 könnte beispielsweise eine bestimmte Softwareanwendung sein, die auf einer Rechenvorrichtung wie ein Personal Computer, ein Laptop, ein Mobiltelefon, ein Personal Digital Assistant oder irgendeine andere Art von Vorrichtung, die in der Lage ist mit dem Speichersystem 200 verbunden zu werden, ausgeführt wird. In einigen Ausführungsformen könnte die Anwendung 210 beispielsweise ein geeignetes Dateisystem aufweisen, das eine allgemeine Softwareanwendung ermöglicht, um sich mit dem Speichersystem 200, einer Bibliothek für die Anwendungsprogrammierschnittstelle (application programming interface, API) für das Speichersystem 200 usw. zu verbinden. In einigen Ausführungsformen kann die Anwendung 210 eine Benutzeranwendung sein, wie eine geschäftliche oder persönliche Anwendung, die in einer lokalen, Client/Server, Web und/oder mobilen Anwendung instanziiert wird, die es Benutzern 212 ermöglicht mit im Speichersystem 200 gespeicherten Daten zu interagieren.
  • Wie weiterhin in 2 gezeigt, weist das Speichersystem 200 zwei Speicherorte 220 auf, die disaggregierte Speicherarchitekturen implementieren. Jeder Speicherort 220 kann einen Steuerungsknoten 222 und einen oder mehrere Speicherknoten 224 einschließen, die in geeigneter Weise zum Übertragen von Daten gekoppelt sein können, beispielsweise mittels Zwischenverbindungs-Fabrics 225. Jeder der Speicherknoten 224 kann weiterhin mit einer Vielzahl von Speichervorrichtungen 228 verbunden sein, die in Speicher-Arrays 226 angeordnet sind. Der Steuerungsknoten 222, die Speicherknoten 224 und die Speichervorrichtungen 228 können mittels geeigneter drahtverbundener, drahtloser, optischer usw. Netzwerkverbindungen oder einer beliebigen geeigneten Kombination solcher Netzwerkverbindungen eine Verbindung zu dem Datenkommunikationsnetzwerk 202 herstellen.
  • Obwohl das Beispiel in den Figuren nur zwei Steuerungsknoten 222, drei Speicherknoten 224, drei Speicher-Arrays 226, und fünfzehn Speichervorrichtungen 228 zeigt, könnte das Speichersystem 200 eine beliebige andere geeignete Anzahl von Steuerungsknoten 222, Speicherknoten 224, und Speichervorrichtungen 228 aufweisen, die in einer beliebigen Anzahl von Speicher-Arrays 226 angeordnet sind. Wie in 1 gezeigt, kann jedes Speicher-Array 226 als eine Peer-Gruppe eingerichtet sein. In einigen Ausführungsformen können Peer-Gruppen nicht alle Speicher in einem Speicher-Array einschließen, und/oder Peer-Gruppen können Speichervorrichtungen von unterschiedlichen Arrays und/oder von unterschiedlichen Orten einschließen. Jede Anzahl von Speichervorrichtungen 228 kann für eine oder mehrere Peer-Gruppen eingerichtet sein, und in einigen Ausführungsformen können die Speichervorrichtungen 228 gleichzeitig an mehreren Peer-Gruppen teilnehmen.
  • Die Steuerungsknoten 222 und Speicherknoten 224 können als Universalcomputer konstruiert sein, sie werden jedoch häufiger zur Anordnung in großen Datenzentren physisch angepasst, wo sie in modularen Racks angeordnet werden, die Standardabmessungen aufweisen. Beispielhafte Steuerungsknoten 222 und Speicherknoten 224 können so dimensioniert sein, dass sie eine einzelne Einheit eines solchen Racks aufnehmen, was allgemein als 1U bezeichnet wird. Ein solcher beispielhafter Speicherknoten 224 kann einen Niedrigleistungsprozessor verwenden und mit zehn oder zwölf Speichervorrichtungen 228 als Serial-Advanced-Technology-Attachment-Speichervorrichtungen (SATA-Speichervorrichtungen) hoher Kapazität ausgestattet sein (obwohl nur fünf Speichervorrichtungen 228 für jeden Speicherknoten 224 dargestellt werden), und er ist mit dem Netzwerk über redundante Ethernet-Netzwerkschnittstellen verbindbar. In einigen Ausführungsformen können die Speicherknoten 224 einen Rechenkomplex einschließen, der eine Speichersteuerung oder eine andere speicherbezogene Funktionalität bereitstellt.
  • Ein beispielhafter Steuerungsknoten 222 kann Hochleistungsserver aufweisen und einen Netzwerkzugang zu den Anwendungen 210 über mehrere Ethernet-Netzwerkschnittstellen mit hoher Bandbreite bereitstellen. Daten können zwischen Anwendungen 210 und einem solchen Steuerungsknoten 222 mittels einer Vielzahl von Netzwerkprotokollen, einschließlich Objektschnittstellen für Hypertext Transfer Protocol (HTTP)/Representational State Transfer (REST), sprachspezifischen Schnittstellen, wie Microsoft. Net, Python oder C usw. übertragen werden. Außerdem können solche Steuerungsknoten zusätzliche Ethernet-Ports mit hoher Bandbreite aufweisen, um mit den Speicherknoten 224 verbunden zu werden. In einigen Ausführungsformen können HTTP/REST-Protokolle, die S3 entsprechen, eine Datenübertragung durch eine REST-Anwendungsprotokollschnittstellen (REST-API) ermöglichen. Vorzugsweise arbeiten diese Steuerungsknoten 222 als ein Cluster von Host-Knoten mit hoher Verfügbarkeit und stellen beispielsweise einen gemeinsam genutzten Zugang zu den Speicherknoten 224, Metadatenzwischenspeicherung, Schutz von Metadaten usw. bereit.
  • Mehrere Speicherknoten 224 können zusammen gruppiert werden, beispielsweise weil sie in einem einzelnen Rack oder einem einzelnen physikalischen Standort 220.1 untergebracht sind. Die Speicherknoten 224.1.1 bis 224.1.n können beispielsweise in dem physikalischen Ort 220.1 gruppiert werden und den Host-Knoten 202.1 unterstützen, während die Speicherknoten 224.2 sich in dem physikalischen Ort 220.2 befinden und den Host-Knoten 202.2 unterstützt. Diese physikalischen Orte 220 müssen sich nicht an derselben geografischen Stelle befinden, oft sind sie geografisch über unterschiedliche Datenzentren verteilt. Beispielsweise kann der physikalische Ort 220.1 sich in einem Datenzentrum in Europa befinden und der physikalische Ort 220.2 in einem Datenzentrum der Volksrepublik China. Eine Peer-Gruppe kann zwischen physikalischen Orten 220 kommunizieren und Peer-to-Peer-Datenvorgänge vornehmen, wie das Auslagern oder die Rekonstruktion von RAID- oder gespiegelten Daten über physikalische Orte 220 durch das Netzwerk 202. In einigen Ausführungsformen können der Administrator 232.1 am Standort 220.1 und der Administrator 232.2 am Standort 220.2 nicht kontrollieren, wann Peer-Datenvorgänge zwischen den Speichervorrichtungen 228 auftreten.
  • Die Steuerungsknoten 222, Speicherknoten 224 und/oder Host-Systeme für die Anwendung 210 und/oder das RAID-Verwaltungssystem 250 können eine Speichersteuerungsebene für die Speichervorrichtungen 228 bereitstellen. In einigen Ausführungsformen kann die Speichersteuerungsebene beliebige Systemkomponenten einschließen, die Host-Lese-/Schreibvorgänge, RAID-Verwaltung und/oder Speicher-Array- oder Speichersystemebenendatenverwaltungsbefehle bereitstellen, die selbst keine Peer-Speichervorrichtungen sind. Beispielsweise kann die Speichersteuerungsebene eine Kombination von Speichersteuerungen, Host-Steuerungen, RAID-Steuerungen und ähnlichen Systemen einschließen. Die Speichersteuerungsebene kann sich (im Sinne der Funktion) von dem Zwischenverbindungs- und Netzwerk-Fabric-Systemen unterscheiden, die für das Bereitstellen einer physikalischen Daten- und Kommunikationsschicht zwischen den Systemkomponenten verantwortlich sind, die Adressierung und Weiterleitung von Datenrahmen einschließen. In einigen Ausführungsformen kann die gleiche Hardware an der Speichersteuerungsebene und dem Zwischenverbindungs- und/oder dem Netzwerk-Fabric teilnehmen, aber die Speichersteuerungsebenenfunktionen beziehen sich auf Ursprungs- und/oder Translationsmedienspeicherbezogene Befehle (Sitzungs-, Präsentations- und/oder Anwendungsschichtaktivitäten) und sind von Netzwerkfunktionen (physikalischen, Datenverbindungen- und Netzwerkschichtaktivitäten) unterscheidbar. In einigen Ausführungsformen können Peer-Speichervorrichtungen einander Speichersteuerbefehle bereitstellen, aber sie sind nicht Teil der Speichersteuerungsebene.
  • In einigen Ausführungsformen kann das RAID-Verwaltungssystem 250 als eine Anwendung oder Modul in einem Informationstechnologie-Verwaltungssystem (IT-Verwaltungssystem) auf einem Universalcomputer eingerichtet sein, wie ein Personalcomputer, ein Laptop, ein Tablet, ein drahtloses Telefon, ein Personal Digital Assistant oder irgendeine andere Art von Vorrichtung, die in der Lage ist, sich mit dem Speichersystem 200 und/oder den Betriebsdaten des Speichersystems 200 über das Netzwerk 202 zu verbinden. Beispielsweise kann das RAID-Verwaltungssystem 250 ein Dashboard für Systemkarten, Konfigurationsinformationen, Betriebsdaten, System-/Komponentendiagnosen, Leistungsmetriken und/oder Statusinformationen für Speichervorrichtungen 228, Speicher-Arrays 226, Speicherknoten 224, Steuerungsknoten 222 usw. bereitstellen. In einigen Ausführungsformen können RAID-Verwaltungssysteme 250 RAID-Konfigurationen, Rekonstruktionsstatus, Backup-/Archivkonfigurationen, Speichervorrichtungshaltbarkeits- und -lebenszykluskonfigurationen und/oder Peer-Gruppenkonfigurationen einschließen. Das RAID-Verwaltungssystem 250 kann eine Anzahl von Administratoren 256 mit variierenden IT-Verwaltungsverantwortlichkeiten unterstützen, einschließlich Bereitstellung, Wartung, Datenverwaltung, Ausrüstungsverwaltung und zugehörige Planungs-, Kosten- und Projektverwaltung.
  • In einigen Ausführungsformen kann das RAID-Verwaltungssystem 250 ein Datenbereinigungsmodul 252 und ein RAID-Rekonstruktionsmodul 254 einschließen. Das Datenbereinigungsmodul 252 kann Logik- und Datenstrukturen zum Verwalten einer systematischen Datenbereinigung der Speichervorrichtungen 228 einschließen, um Speicherorte zu identifizieren, die unlesbar, nicht beschreibbar und/oder fehleranfällig geworden sind. Beispielsweise kann das Datenbereinigungsmodul 252 systematische Datenlese- und Schreibvorgänge auf Seiten oder in Sektoren in den Speichervorrichtungen 228 durch Ausgeben von einzelnen Lese-/Schreibbefehlen und Sammeln von Fertigstellungs- und/oder Fehlerdaten koordinieren und/oder eine Datenbereinigungsroutine der Speichervorrichtung an spezifizierten Speicherorten initiieren. Diese systematischen Lese- und Schreibvorgänge können eine Fehlerkorrektur ermöglichen, um eine bestimmte Anzahl akkumulierter Fehler zu korrigieren und/oder Mediensegmente zu identifizieren, bei denen die Fehlerrate die Möglichkeiten einer Fehlerkorrektur innerhalb einer bestimmten Speichervorrichtung übersteigt. In einigen Ausführungsformen können durch das Datenbereinigungsmodul 252 gesammelte Daten mit den Haltbarkeits- oder Leistungsdaten kombiniert werden, um das Datenverwaltungsrisiko und das Ende der Lebensdauer der Speichervorrichtungen 228 und/oder Medienvorrichtungen darin proaktiv zu verwalten. In einigen Ausführungsformen können die Datenbereinigungergebnisse auch die RAI D-Streifenzuordnung und/oder Spiegelungsentscheidungen durch das RAID-Verwaltungssystem 250 unterstützen. Wenn während der Datenbereinigung ein Schwellenwert von fehlerhaften Lesevorgängen überschritten wird, kann eine Speichervorrichtung 228 oder ein Abschnitt davon als ein fehlerhaftes Laufwerk identifiziert werden und eine vollständige oder teilweise RAID-Rekonstruktion initiieren, um die fehlerhafte Speichervorrichtung zu ersetzen.
  • Das RAID-Rekonstruktionsmodul 254 kann auf eine fehlerhafte Speichervorrichtung unter den Speichervorrichtungen 228 antworten, wobei Ergebnisse des Datenbereinigungsmoduls 252 eine fehlerhafte oder kaputte Speichervorrichtung, Haltbarkeits- oder Lebensdauermodellierung, die Speichervorrichtungsfehler vorhersagt, und/oder Wartungsentscheidungen der Administratoren 256 identifiziert. In einigen Ausführungsformen kann das RAID-Rekonstruktionsmodul 254 eine fehlerhafte Speichervorrichtung identifizieren, die rekonstruiert werden soll, und eine Ersatzspeichervorrichtung, auf die die Daten von der fehlerhaften Speichervorrichtung basierend auf der RAID-Konfiguration und den verfügbaren RAID-Wiederherstellungsdaten in den Speichervorrichtungen 228 rekonstruiert werden sollen. Beispielsweise können eine oder mehrere der Speichervorrichtungen 228 gespiegelte Daten einschließen oder an einem RAID-Streifen für die XORed- und/oder Paritätsdaten teilnehmen, um die Daten von der fehlerhaften Speichervorrichtung wiederherzustellen. In einigen Ausführungsformen kann das RAID-Rekonstruktionsmodul 254 für Teilrekonstruktionen bei weniger als einem vollständigen Austausch der Speichervorrichtung und/oder einer Teilwiederherstellung der fehlerhaften Speichervorrichtung eingerichtet sein (anstatt sich ausschließlich auf Wiederherstellungsdaten zu verlassen).
  • In einigen Ausführungsformen können einige oder alle Funktionen des RAID-Verwaltungssystems 250 in andere Komponenten des Speichersystems 200 ausgelagert oder darin integriert sein. Beispielsweise kann die RAID-Verwaltung 250 in die Steuerungsknoten 222 und/oder den Speicherknoten 224 integriert sein. In einigen Ausführungsformen können eine oder mehrere Funktionen vollständig oder teilweise in die Speichervorrichtungen 228 ausgelagert sein. Beispielsweise können die Speichervorrichtungen 228 für die Datenselbstbereinigung mit oder ohne Koordination durch das Datenbereinigungsmodul 252 eingerichtet sein. In einigen Ausführungsformen können die Speichervorrichtungen 228 für die ausgelagerte RAID-Verwaltung eingerichtet sein, was die Zuordnung von RAID-Streifen und/oder Datenspiegelung und/oder Rekonstruktion fehlgeschlagener Speichervorrichtungen mit oder ohne Koordination durch das RAID-Rekonstruktionsmodul 254 einschließen kann. In einigen Ausführungsformen können Speichervorrichtungen 228 für die Datenwiederherstellung basierend auf RAID-Konfiguration und/oder RAID-Wiederherstellungsdaten von Peer-Speichervorrichtungen für einen selektiven Speicherort und RAID-Teilrekonstruktionen eingerichtet sein. In einigen Ausführungsformen können diese ausgelagerten RAID-Verwaltungsdienste des RAID-Verwaltungssystems 250 als ausgelagerte Dienste in den Speichervorrichtungen 228 eingerichtet sein.
  • In einigen Ausführungsformen, wie in 3 dargestellt, schließt eine Speichervorrichtung 120.1 die Funktionen einer Vorrichtungssteuerung 130.1 mit den Fähigkeiten zur Peer-Kommunikation unter Verwendung von Rechenressourcen ein, wie eine oder mehrere Verarbeitungseinheiten (CPUs 302), die hierin manchmal als CPU, Prozessoren oder Hardware-Prozessoren bezeichnet werden, und manchmal unter Verwendung von Mikroprozessoren, Mikrocontrollern oder dergleichen implementiert werden, die so eingerichtet sind, dass sie Anweisungen in einem oder mehreren Programmen ausführen (z. B. die Module im Arbeitsspeicher 320). In einigen Ausführungsformen werden die eine oder mehreren CPUs 302 im Rahmen der Funktion der Speichervorrichtung 120 und in einigen Fällen auch darüber hinausgehend geteilt. Die Module im Arbeitsspeicher 320, ausgeführt durch die CPU 302, können mit der Zwischenverbindungs-Fabric-Schnittstelle 301, RDMA-Schnittstelle 304, Medienschnittstelle 308, Fehlerkorrektur-Engine 310 und einer beliebigen Anzahl von zusätzlichen Modulen, wie Löschcodierungs-Engines, spezialisierte Arbeitsspeichermodule usw. gekoppelt sein, um den Betrieb dieser Komponenten zu koordinieren. In einigen Ausführungsformen sind die Komponenten der Speichervorrichtung 120.1 miteinander durch einen oder mehrere Kommunikationsbusse 300 verbunden. In einigen Ausführungsformen können die CPU 302, der Arbeitsspeicher 320, die Medienschnittstelle 308, die Fehlerkorrektur-Engine 310 und eine beliebige Anzahl von Zusatzmodulen als Vorrichtungssteuerung 130.1 verpackt sein, beispielsweise als eine NVM-Steuerung, die in einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit, ASIC), einem System-on-a-Chip (SoC), einem feldprogrammierbaren Gate-Array (field programmable gate array, FPGA) oder einer ähnlichen Architektur implementiert ist.
  • In einigen Ausführungsformen kann die Speichervorrichtung 120.1 in einem Gehäuse verpackt sein (in 3 nicht dargestellt, siehe jedoch Gehäuse 150.1 in 1), wie ein abgedichtetes mehrteiliges Plattenlaufwerksgehäuse. Die Steuervorrichtung 130.1 und die Medienvorrichtungen 140.1 können beispielsweise von dem Gehäuse umschlossen sein. In einigen Ausführungsformen kann das Gehäuse eine Außenseite innehaben, die die internen Komponenten umgibt, wobei ein oder mehrere Verbinder aus der Außenfläche herausragen oder Schnittstellenanschlüsse in die Außenfläche eingelassen sind. Beispielsweise können diese Verbinder und/oder die Schnittstellenanschlüsse physikalische Verbindungen zur Stromversorgung und Kommunikation mit der Speichervorrichtung 120.1 bereitstellen.
  • Die Speichervorrichtung 120.1 kann eine Vielfalt von lokalen Arbeitsspeicherressourcen und lokalen Rechenressourcen einschließen. In einigen Ausführungsformen können lokale Ressourcen Komponenten einschließen, die in die Speichervorrichtung 120.1 integriert sind und mit der Anzahl von Speichervorrichtungen skalieren können. Beispielhafte lokale Arbeitsspeicherressourcen können den Arbeitsspeicher 320 (z. B. den Arbeitsspeicher der Mediensteuerung 130.1), den fernadressierbaren Arbeitsspeicher 306 (z. B. einen fernadressierbaren Arbeitsspeicher, der über eine fernadressierbare Schnittstelle verfügbar ist) und andere spezielle Arbeitsspeicher (nicht dargestellt) einschließen. In einigen Ausführungsformen können Speichermedien, wie z. B. Medienvorrichtungen 140 lokale Arbeitsspeicherressourcen für Datenverwaltungsfunktionen bereitstellen, aber diese können von Speicherorten für Host-Daten verschieden sein. Beispielhafte lokale Rechenressourcen können die CPU 302 (z. B. den Betriebsprozessor der Vorrichtungssteuerung 130.1), Löschcodierungs-Engines, Fehlerkorrektur-Engines und beliebige andere spezialisierte Verarbeitungssysteme einschließen. In einigen Ausführungsformen können eine oder mehrere Schnittstellen, wie die Zwischenverbindungs-Fabric-Schnittstelle 301 oder die RDMA-Schnittstelle 304, auch Arbeitsspeicher- und/oder Rechenressourcen einschließen oder verwenden und können Teil der verfügbaren lokalen Ressourcen der Speichervorrichtung 120.1 sein.
  • In einigen Ausführungsformen kann die RDMA-Schnittstelle 304 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine sein, die den Fernzugriff auf den fernadressierbaren Arbeitsspeicher 306 zur Datenverwaltung ermöglicht. Dies kann den lokalen Direktspeicherzugriff (direct memory access, DMA) auf den fernadressierbaren Arbeitsspeicher 306 der CPU 302 oder anderen Komponenten der Vorrichtungssteuerung 130.1 einschließen. Die RDMA-Engines der RDMA-Schnittstelle 304 können der Speichervorrichtung 120.1 erlauben, Daten von/zu dem fernadressierbaren Arbeitsspeicher 306 und zu/von Speicherorten in anderen Speichervorrichtungen, Speichersteuerungen (z. B. Speichersteuerung 110) oder Servern (z. B. Host 102) zu schieben oder zu ziehen.
  • In einigen Ausführungsformen kann die Fehlerkorrektur-Engine 310 eine Hardware-, Software- oder kombinierte Hardware/Software-Engine zum Berechnen von Fehlerkorrekturcodes (ECC) oder zum Implementieren eines weiteren Datenfehlerkorrekturvorgangs sein. Die Fehlerkorrektur-Engine 310 kann mehrere Funktionen unterstützen, die in dem Arbeitsspeicher 320 gespeichert sind, und/oder die Fehlerkorrekturverarbeitung von Daten unterstützen, die zu oder von dem fernadressierbaren Arbeitsspeicher 306, mit oder ohne die RDMA-Schnittstelle 304, übertragen werden. In einigen Ausführungsformen kann die Fehlerkorrektur-Engine 310 zum Verarbeiten von Mediensegmente während des Datenbereinigungsprozesses verwendet werden, wie die Durchführung einer Fehlerkorrektur von gelesenen Dateneinheiten, um zu bestimmen, ob die Dateneinheit unter Verwendung von ECC wiederherstellbar ist oder ob die Dateneinheit fehlerhaft oder beschädigt ist.
  • Zusätzliche Module (nicht dargestellt), die eine oder mehrere Funktionen der Speichervorrichtung 120 unterstützen, können an die CPU 302, RDMA-Schnittstelle 304, Medienschnittstelle 308, Fehlerkorrektur-Engine 310 und den Arbeitsspeicher 320 angeschlossen werden. In einigen Ausführungsformen wird ein zusätzliche Modul bzw. werden zusätzliche Module in Software von der CPU 302 ausgeführt; in anderen Ausführungsformen wird ein zusätzliches Modul bzw. werden zusätzliche Module ganz oder teilweise unter Verwendung spezieller Schaltungen (z. B. zur Durchführung von Codierungs- und Decodierungsfunktionen) implementiert.
  • In einigen Ausführungsformen empfängt die Speichersteuerung 110 während eines von einem Host 102 initiierten Schreibvorgangs einen Host-Schreibbefehl (z. B. in einem Satz von einem oder mehreren Host-Schreibbefehlen) über die Schnittstelle 112 (1), übersetzt diesen Host-Schreibbefehl in einen Schreibbefehl, der manchmal als übersetzter Befehl oder übersetzter Schreibbefehl bezeichnet wird und zur Ausführung durch eine Datenspeichervorrichtung 120 geeignet ist, und sendet den übersetzten Host-Datenbefehl an eine oder mehrere Datenspeichervorrichtungen, die einer oder mehreren durch den Host-Schreibbefehl angegebenen Adressen entsprechen; eine Zielspeichervorrichtung.
  • In einigen Speichersystemen empfängt eine Speichersteuerung über die Schnittstelle 112 auch Daten, die in der einen oder den mehreren Datenspeichervorrichtungen gespeichert werden sollen, die der einen oder den mehreren durch den Host-Schreibbefehl angegebenen Adressen entsprechen. Eine entsprechende Datenspeichervorrichtung empfängt die in ihren Medienvorrichtungen 140.1.1 bis 140.1.n zu speichernden Daten oder einen Abschnitt der zu speichernden Daten von der Speichersteuerung über die Zwischenverbindungs-Fabric 114. Die von der Speichervorrichtung empfangenen Daten können codiert oder anderweitig verarbeitet und der Speichermediumsschnittstelle 308 bereitgestellt werden, die die Daten je nach Art des verwendeten Speichermediums an die Medienvorrichtungen 140.1 überträgt. In der Speichervorrichtung 120 können die RDMA-Schnittstelle 304 und der fernadressierbare Arbeitsspeicher 306, manchmal in Verbindung mit der Koordination durch die Speichersteuerung 110, es dem Host 102 ermöglichen, die im Host-Schreibbefehl zu speichernden Daten an den fernadressierbaren Arbeitsspeicher 306 in der Speichervorrichtung 120 zu senden, ohne dass sie die Speichersteuerung 110 oder eine andere Speichersteuerung passieren.
  • In einigen Ausführungsformen wird ein Speichermedium (z. B. die Medienvorrichtungen 140.1) in eine Anzahl adressierbarer und einzeln auswählbarer Blöcke unterteilt, und jeder Block wird optional (aber üblicherweise) weiterhin in eine Vielzahl von Seiten und/oder Wortleitungen und/oder Sektoren, Speicherorten definierter Speichereinheitsgrößen, unterteilt. Während das Löschen von Daten von einem Speichermedium auf Blockbasis erfolgt, wird in vielen Ausführungsformen das Lesen und Programmieren des Speichermediums auf einer kleineren Untereinheit eines Blocks durchgeführt (z. B. auf Seitenbasis, Wortleitungsbasis oder Sektorbasis).
  • In einigen Ausführungsformen besteht die kleinere Untereinheit eines Blocks aus mehreren Speicherzellen (z. B. Single-Level-Zellen oder Multi-Level-Zellen). In einigen Ausführungsformen wird die Programmierung auf einer ganzen Seite durchgeführt. In einigen Ausführungsformen hat ein Multi-Level-Zellen- (MLC) NAND-Flash in der Regel vier mögliche Zustände pro Zelle, was zwei Informationsbits pro Zelle ergibt. In einigen Ausführungsformen hat ein MLC-NAND weiterhin zwei Seitentypen: (1) eine untere Seite (manchmal als die schnelle Seite bezeichnet) und (2) eine obere Seite (manchmal als die langsame Seite bezeichnet). In einigen Ausführungsformen hat ein Triple-Level-Zellen- (TLC) NAND-Flash acht mögliche Zustände pro Zelle, was drei Informationsbits pro Zelle ergibt. Obwohl in der vorliegenden Beschreibung TLC, MLC und SLC als Beispiele verwendet werden, werden erfahrene Anwender erkennen, dass die hierin beschriebenen Ausführungsformen auf Speicherzellen ausgedehnt werden können, die mehr als acht mögliche Zustände pro Zelle aufweisen, was mehr als drei Informationsbits pro Zelle ergibt. In einigen Ausführungsformen wird das Codierungsformat der Speichermedien (d. h. TLC, MLC oder SLC und/oder ein gewählter Datenredundanzmechanismus oder ECC-Code) erst dann gewählt, wenn die Daten tatsächlich auf das Speichermedium geschrieben werden.
  • Zusätzlich können diese verschiedenen Speicherzellenkonfigurationen und Codierungsformate Auswirkungen auf die Lebensdauerleistung der Speichervorrichtung 120.1 haben. Flash-Speicher können definierte I/O-Leistung, Haltbarkeit, Schreibspannungsschwellenwerte, Fehlerraten, Zell-/Vorrichtungsfehler und andere Parameter innehaben, die für spezifische Leistungswerte und/oder Beiträge zur Speicherkapazität, Leistungsklasse, Haltbarkeit und/oder Gesamtgesundheit verfolgt werden können. Ähnlich können Zellennutzung, Lese- und Schreiblastausgleich, Speicherbereinigung und andere Vorgänge für die Haltbarkeits-, Zuverlässigkeits- und Fehlervorhersage für die Medienvorrichtungen 140 verfolgt werden.
  • 3 ist ein Blockdiagramm, das Beispiele ausgelagerter Dienste, Peer-Kommunikationen und Datenbereinigung- und -wiederherstellung veranschaulicht, die durch die Speichervorrichtung 120.1 und ihre Peer-Speichervorrichtungen 120 in Übereinstimmung mit einigen Ausführungsformen gehandhabt werden. Die Speichervorrichtung 120.1 schließt die CPU 302 zum Ausführen von Modulen, Programmen und/oder Anweisungen ein, die im Arbeitsspeicher 320 gespeichert sind und dadurch Verarbeitungsvorgänge ausführen, den Arbeitsspeicher 320 (manchmal als NVM-Steuerungsspeicher, Vorrichtungssteuerungsspeicher oder Arbeitsspeicher bezeichnet) und einen oder mehrere Kommunikationsbusse 300 zur Verbindung dieser Komponenten.
  • Der eine oder die mehreren Kommunikationsbusse 300 schließen optional Schaltlogik (manchmal als Chipsatz bezeichnet) ein, die Systemkomponenten miteinander verbindet und die Kommunikation zwischen ihnen steuert. CPU 302 und Arbeitsspeicher 320 können über eine oder mehrere Zwischenverbindungs-Fabric-Schnittstellen 301, die RDMA-Schnittstelle 304, den fernadressierbaren Arbeitsspeicher 306, die Speicherschnittstelle 308, die Fehlerkorrektur-Engine 310, die Medienvorrichtungen 140.1 und beliebige Zusatzmodule durch ein oder mehrere Kommunikationsbusse 300 gekoppelt sein. In einigen Ausführungsformen können auch Schnittstellen-Hardware und/oder Protokolle zum Bereitstellen der Kommunikation über die Kommunikationsbusse 300 für die Kommunikation mit einem oder mehreren Komponenten vorhanden sein.
  • Der Speicher 320 kann Hochgeschwindigkeitsdirektzugriffsspeicher wie DRAM, SRAM, DDR RAM oder andere Festkörperspeicher mit direktem Zugriff einschließen und kann nichtflüchtige Speicher wie eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen einschließen. Der Speicher 320 kann gegebenenfalls ein oder mehrere Speichervorrichtungen einschließen, die entfernt von der CPU 302 angeordnet sind. In einigen Ausführungsformen können ein oder mehrere zusätzliche Speicher für bestimmte Funktionen bereitgestellt werden, wie FTL-Speicher für Flash-Übersetzungsschichtdaten (flash translation layer data, FTL-Daten) und/oder fernadressierebare Arbeitsspeicher 306. Diese funktionalen Speicher können spezialisierte Verarbeitung, Hardwarebeschleunigung und/oder andere Ressourcen im Zusammenhang mit ihrer Funktion einschließen. In einigen Ausführungsformen kann der fernadressierbare Arbeitsspeicher 306 ein Teil des Arbeitsspeichers 320 sein.
  • Der Arbeitsspeicher 320, oder alternativ die nichtflüchtige(n) Speichervorrichtung(en) im Arbeitsspeicher 320, weist/weisen ein nicht-transitorisches computerlesbares Speichermedium auf. In einigen Ausführungsformen speichert der Arbeitsspeicher 320, oder das nichttransitorische computerlesbare Speichermedium von Arbeitsspeicher 320, die folgenden Programme, Module und Datenstrukturen oder eine Untergruppe oder eine Übergruppe davon:
    • • ausgelagerte Dienste 322 zum Bereitstellen einer verteilten Speicherverwaltung über Peer-Speichervorrichtungen, einschließlich der Speichervorrichtung 120.1;
    • • den Medienverwalter 324 zum Verwalten von FTL-Daten von Speichervorrichtungen (einschließlich logischer Adressabbildung) und verwandten Prozessen und Anfragen, wie Lese- und Schreibvorgänge von Medien über die Medienschnittstelle 308 zu den Medienvorrichtungen 140.1.1 bis 140.1.n;
    • • das Peer-Kommunikationsmodul 326 zum Kommunizieren von Befehlsnachrichten und Datenübertragungen zwischen Speichervorrichtungen 120 durch die Zwischenverbindungs-Fabric-Schnittstelle 301, manchmal unter Verwendung eines Zugriffs auf den fernadressierbaren Arbeitsspeicher 306 ohne den Eingriff von Host 102, die Speichersteuerung 110 oder ähnlich unterschiedlichen Speichersteuerungsebenensystemen;
    • • das Peer-Vorrichtungsregister 328 zum Identifizieren der Peer-Speichervorrichtungsidentifikatoren der Peer-Speichervorrichtungen und/oder anderen Datenverwaltungs- und/oder Peer-Diensteinformationen in Bezug auf jede andere Speichervorrichtung;
    • • das Datenbereinigungsmodul 330 zum Durchführen eines Datenbereinigungsprozesses auf den Medienvorrichtungen 140.1.1 bis 140.1.n und/oder Peer-Speichervorrichtungen bei gleichzeitiger Koordination mit Peer-Speichervorrichtungen, um die Datenintegrität zu schützen; und
    • • das Selbstheilungsmodul 332 zum Wiederherstellen fehlerhafter Dateneinheiten aus Peer-Wiederherstellungsdaten und Speichern der Dateneinheiten auf den Medienvorrichtungen 140.1.1 bis 140.1.n und/oder Auslagern der Dateneinheiten in eine Peer-Speichervorrichtung.
  • Jedes der vorstehend identifizierten Elemente kann in einem oder mehreren der vorstehend aufgeführten Speichervorrichtungen gespeichert sein, die zusammen den Speicher 320 bilden, und entspricht einem Satz von Anweisungen zum Ausführen einer vorstehend beschriebenen Funktion. Die vorstehend identifizierten Module oder Programme (d. h. Satz von Anweisungen) brauchen nicht als separate Softwareprogramme, Verfahren oder Module implementiert zu werden, und somit können verschiedene Teilgruppen dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig anders angeordnet werden. In einigen Ausführungsformen kann der Arbeitsspeicher 320 eine Untergruppe der vorstehend identifizierten Module und Datenstrukturen speichern. Darüber hinaus kann der Arbeitsspeicher 320 zusätzliche vorstehend nicht beschriebene Module und Datenstrukturen speichern. In einigen Ausführungsformen stellen die in Speicher 320 oder dem nicht-transitorischen, computerlesbaren Speichermedium von Speicher 320 gespeicherten Programme, Module und Datenstrukturen Anweisungen für die Implementierung von entsprechenden Operationen der nachstehend beschriebenen Verfahren bereit. In einigen Ausführungsformen können einige oder alle dieser Module mit spezialisierten Hardwareschaltungen implementiert sein, die einen Teil oder die gesamte Modulfunktionalität subsumieren.
  • In einigen Ausführungsformen können die ausgelagerten Dienste 322 eine Nachrichtenhandhabung, Verarbeitungslogik und/oder Datenstrukturen für einen oder mehrere Datenverwaltungsdienste bereitstellen, die ansonsten durch eine Host-Steuerung, Speichersteuerung, RAID-Steuerung oder ein anderes Speichersteuerungsebenensystem verwaltet worden wären. In einigen Ausführungsformen kann eine Speichersteuerungsebene noch eine Rolle bei der Konfiguration und/oder Initiierung von ausgelagerten Diensten 322 innehaben. Beispielsweise kann eine RAID-Steuerung für eine Anfangskonfiguration von RAID-Parametern verwendet werden und eine gemeinsame Datenstruktur dieser Parameter zur Verwendung durch die Speichervorrichtung 120.1 und ihre Peer-Speichervorrichtungen bereitstellen, aber die tatsächliche Zuordnung und Wartung von RAID-Streifen für eingehende Host-Schreibvorgänge kann durch ausgelagerte Dienste 322 und zugehörige Peer-Kommunikation verwaltet werden. Einige Beispiele ausgelagerter Dienste 322 können die Host-FTL-Verwaltung 322.1, die RAID-Streifen-Verwaltung 322.2 und die Datenbereinigungsverwaltung 322.3 einschließen.
  • In einigen Ausführungsformen kann die Host-FTL-Verwaltung 322.1 eine verteilte Verwaltung von Host-FTL-Abbildungsinformationen bereitstellen. Beispielsweise kann eine globale Host-FTL-Datenstruktur segmentiert und zwischen Peer-Speichervorrichtungen aufgeteilt werden, um zu ermöglichen, dass die Tabellengröße mit der Anzahl von Speichervorrichtungen skaliert. Host-FTL-Dienstbefehle können von Speichervorrichtungen und/oder Speichersteuerungsebenensystemen ausgegeben werden und durch die Host-FTL-Verwaltung 322.1 der Speichervorrichtung empfangen werden, die das relevante Segment der Host-FTL-Datenstruktur enthält. In einigen Ausführungsformen kann die Host-FTL-Verwaltung 322.1 Befehle und zugehörige Dienste zum Zuordnen, Abfragen und Aktualisieren der lokalen Host-FTL-Datenstruktur einschließen.
  • In einigen Ausführungsformen kann die RAID-Streifenverwaltung 322.2 eine verteilte Verwaltung der Konfiguration, Zuordnung und Aktualisierung von RAID-Streifeninformationen für eine oder mehrere RAID-Gruppen bereitstellen, die von der Peer-Gruppe unterstützt werden. Eine RAID-Streifenkonfiguration (Streifentiefe, RAID-Gruppe, Speicherortauswahllogik usw.) und die RAID-Streifenabbildungsinformationen (zum Lokalisieren von bestimmten Streifen und Datenwiederherstellungsabhängigkeiten) können beispielsweise über eine Peer-Gruppe verteilt werden. RAID-Streifenbefehle können von Speichervorrichtungen und/oder Speichersteuerungsebenensystemen ausgegeben werden und durch die RAID-Streifenverwaltung 322.2 empfangen werden, um RAID-Streifeninformationen zu konfigurieren und auf sie zuzugreifen. In einigen Ausführungsformen kann die RAID-Streifenverwaltung 322.2 die Verteilung von Host-Datenschreibvorgängen und die Paritätsberechnung und -speicherung für jeden RAID-Streifen berechnen, der eingerichtet ist, um Anfragen zu verwalten und zu beantworten, wenn Host-Daten auf Streifen modifiziert oder wiederhergestellt werden müssen. In einigen Ausführungsformen kann die RAID-Streifenverwaltung 322.2 Befehle und zugehörige Dienste zum Empfangen und Aktualisieren der RAID-Konfigurationen und unterstützende Logik und Datenstrukturen einschließen sowie die Beantwortung von Anfragen in Bezug auf die Zuordnung und/oder Lokalisierung der RAID-Streifen- und Datenwiederherstellungsabhängigkeiten.
  • In einigen Ausführungsformen kann die Datenbereinigungsverwaltung 322.3 eine verteilte Verwaltung der Konfiguration, Zuordnung und Datensammlung aus Mediendatenbereinigungen bereitstellen. Beispielsweise kann die Datenbereinigungsverwaltung 322.3 Logik zum systematischen Zuweisen und Priorisieren von Datenbereinigungsaufgaben zwischen Peer-Speichervorrichtungen sowie das Nachverfolgen, wann Mediumsorte zuletzt bereinigt wurden, einschließen. Datenbereinigungsbefehle werden durch Speichervorrichtungen und/oder Speichersteuerungsebenensysteme und durch die Datenbereinigungsverwaltung 322.3 ausgegeben, um Datenbereinigungsziele, Pläne und Muster zu konfigurieren und Datenbereinigungsbefehle zu empfangen und zu beantworten. Beispielsweise kann die Datenbereinigungsverwaltung 322.3 identifizieren, wann ein bestimmtes Mediensegment bereinigt werden muss, zugehörige Datenbereinigungsbefehle ausgeben und die Fertigstellung und gemeldete Fehler nachverfolgen. In einigen Ausführungsformen kann die Datenbereinigungsverwaltung 322.3 Befehle und zugehörige Dienste zum Empfangen und Aktualisieren von Datenbereinigungskonfigurationen und unterstützender Logik und Datenstrukturen einschließen sowie das Senden und Empfangen von Befehlen zum Initiieren von Bereinigungen, Nachverfolgung des Datenbereinigungsfortschritts und der Berichtsergebnisse.
  • In einigen Ausführungsformen verwaltet der Medienverwalter 324 den Zugriff auf und die Wartung der Medienvorrichtungen 140.1. Beispielsweise kann der Medienverwalter 324 Basis-FTL-Dienste für die Speichervorrichtung 120 einschließen und die FTL-Karte der Speichervorrichtung sowie den Lese-, Schreib- und Datenverwaltungszugriff auf die Medienvorrichtungen 140 verwalten. Host-Befehle, die Host-Datenlese, -schreib- und -löschvorgänge usw. umfassen, können durch den Medienverwalter 324 über die Medienschnittstelle 308 geleitet werden, um auf die Medienvorrichtungen 140.1 zuzugreifen. In einigen Ausführungsformen können Host-Datenbefehle durch andere Module wie ausgelagerte Dienste 322 vorverarbeitet werden und zugehörige interne Datenzugriffsbefehle können durch die Medienverwaltung 324 empfangen werden. In einigen Ausführungsformen bietet die Speichervorrichtung FTL eine Basisebene der FTL-Abbildung für die Speichervorrichtung 120. Die Speichervorrichtung FTL kann die Zuordnung von Speicherorten mit einer definierten Größe basierend auf der Kompatibilität von Speichereinheiten in den Medienvorrichtungen 140.1, z. B. nach Seitengröße, einschließen. Zum Beispiel können Speicherplätze als 4 KB- oder 8 KB-Seiten zugewiesen werden. In einigen Ausführungsformen können die Zuordnungsgrößen für Speicherorte größeren Multiebenen-NVM-Seitengrößen entsprechen, z. B. 96 KB.
  • Der Medienverwalter 324 kann über die Lebensdauer der Medienvorrichtungen 140.1 für das Bad-Block-Management, für das Bad-Block-Spare-Over-Provisioning und die Zuordnung des lückenfreien logischen Raums verantwortlich sein. In einigen Ausführungsformen kann der Medienverwalter 324 auch eine Fehlerkorrektur (z. B. Paritätsprüfung geringer Dichte (low-density parity-check, LDPC) oder Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes)), die von der Fehlerkorrektur-Engine 310 unterstützt wird, und die Abstimmung der NVM-Zugriffsparameter (z. B. Leseebenen, Programmierungsschwellenwerte usw.) einschließen. Der Medienverwalter 324 kann Lesevorgänge an Speicherorten mit logischen Blockadressen (LBA) in den Medienvorrichtungen 140 ermöglichen, um in den fernadressierbaren Arbeitsspeicher 306 zu schreiben, und Lesevorgänge auf dem fernadressierbaren Arbeitsspeicher 306, um in LBA-Speicherorte in den Medienvorrichtungen 140.1 zu schreiben. In einigen Ausführungsformen kann der Medienverwalter 324 Datenlese- und -schreibvorgänge auf den Medienvorrichtungen 140.1 verwalten, um die ausgelagerten Dienste 322, das Datenbereinigungsmodul 330 und/oder das Selbstheilungsmodul 332 zu unterstützen.
  • In einigen Ausführungsformen kann das Peer-Kommunikationsmodul 326 eine Kommunikation unter Verwendung der Zwischenverbindungs-Fabric 114 zwischen den Speichervorrichtungen 120 bereitstellen, ohne durch die Speichersteuerung 110 oder einen anderen Host, eine andere Steuerung oder Speichersteuerungsebenenkomponente weitergeleitet zu werden. Das Peer-Kommunikationsmodul 326 kann beispielsweise Drive-to-Drive-Benachrichtigungen ermöglichen, die durch Speichervorrichtungsidentifikatoren adressiert werden, Peer-Drive-Ausstrahlungen, die die gleiche Nachricht an alle Peer-Speichervorrichtungen bereitstellen, und/oder den Zugriff auf geteilte Arbeitsspeicherorte, wie den fernadressierbaren Arbeitsspeicher 306, zur direkten Datenübertragung und/oder den Zugriff auf Host- und Paritätsdaten, Datenverwaltungsprotokolle usw. In einigen Ausführungsformen werden paketierte Nachrichten zwischen den Speichervorrichtungen 120.1 unter Verwendung von einem oder mehreren Kommunikationsprotokollen, die mit der Zwischenverbindungs-Fabric 114 und/oder dem Netzwerk-Fabric 104 kompatibel sind, weitergeleitet.
  • In einigen Ausführungsformen arbeitet das Peer-Kommunikationsmodul 326 in Verbindung mit der RDMA-Schnittstelle 304, um die lokale und Fernnutzung des fernadressierbaren Arbeitsspeichers 306 zu verwalten. Lokale Vorgänge durch den Medienverwalter 324 können beispielsweise Schreib- und Lesevorgänge auf dem fernadressierbaren Arbeitsspeicher 306 einschließen, Lese-/Schreibvorgänge können die koordinierte Nutzung des Speicherplatzes im fernadressierbaren Arbeitsspeicher 306 sowohl für den lokalen als auch für den Fernzugriff einschließen, und andere verteilte Vorgänge können den Speicherplatz im fernadressierbaren Arbeitsspeicher 306 gemäß der Anforderung der Speichersteuerung 110 oder anderen Speichervorrichtungen nutzen.
  • In einigen Ausführungsformen kann das Peer-Vorrichtungsregister 328 eine Datenstruktur zur Aufbewahrung von Informationen in Bezug auf jede andere Peer-Speichervorrichtung in einer Peer-Gruppe sein, wie die Speichervorrichtungen 120 in der Peer-Gruppe 106. Das Peer-Vorrichtungsregister 328 kann eine Tabelle, Liste, ein Array, eine Datenbank oder ähnliche Struktur zum Speichern von Identifikatoren 328.1, anderen Adressinformationen, der Peer-RAID-Konfiguration 328.2 und/oder weiteren Informationen auf den Peer-Speichervorrichtungen, wie Spezifikationen und/oder Parameter der Speichervorrichtungen, sein. In einigen Ausführungsformen kann der Speichervorrichtungsidentifikator 328.1 eine netzkompatible Vorrichtungsadresse zum Weiterleiten von Datenrahmen von der Speichervorrichtung 120.1 zu einer ausgewählten Peer-Speichervorrichtung einschließen oder in diese übersetzt werden.
  • In einigen Ausführungsformen kann das Peer-Vorrichtungsregister 328 Speichervorrichtungsidentifikatoren 328.1 für jede Speichervorrichtung einschließen, die einer Peer-Gruppe entspricht, die mit der Speichervorrichtung 120.1 geteilt wird. Beispielsweise kann die Speichervorrichtung 120.1 zu einer Peer-Gruppe A gehören und jede andere Speichervorrichtung 120 in der Peer-Gruppe A kann einen Eintrag in dem Peer-Vorrichtungsregister 328 mit einem Speichervorrichtungsidentifikator 328.1 zum Adressieren der Peer-Kommunikationen innehaben. Jede Speichervorrichtung kann beispielsweise einen Eintrag (z. B. eine Zeile in einer Tabelle) mit einem Schlüssel (z. B. einen Speichervorrichtungsidentifikator) und ein Feld (z. B. Spalte in einer Tabelle) für einen oder mehrere Peer-Gruppe-Identifikatoren innehaben.
  • In einigen Ausführungsformen kann das Peer-Vorrichtungsregister 328 Peer-Speichervorrichtungen identifizieren, die Paritätsverbindungen und/oder Spiegel-Bonds einschließen, um Datenredundanz und -wiederherstellung zu unterstützen. Ein oder mehrere Vorrichtungen in einer Peer-Gruppe 106 nehmen beispielsweise an einer RAID-Gruppe teil und enthalten die RAID-Streifendaten (Paritätsdaten und/oder entsprechend gepaarte Host-Daten), und die Peer-RAID-Konfiguration 328.2 kann identifizieren, welche Peer-Speichervorrichtungen sich in der RAID-Gruppe befinden. Eine oder mehrere Vorrichtungen in der Peer-Gruppe 106 können einige oder alle in der Speichervorrichtung 120.1 gespeicherten Host-Daten spiegeln, und die Peer-RAID-Konfiguration 328.2 kann identifizieren, welche Speichervorrichtungen Host-Daten für die Speichervorrichtung 120.1 spiegeln.
  • In einigen Ausführungsformen kann die Peer-RAID-Konfiguration 328.2 die Paritäts-Bond- und/oder Spiegel-Bond-Beziehung anzeigen und kann einen Peer-Befehl und ausgelagerten Dienst, wie die RAI D-Streifenverwaltung 322.2 und/oder die Datenbereinigungsverwaltung 322.2, auf der gebondeten Peer-Speichervorrichtung oder einer anderen Peer-Speichervorrichtung zur Abfrage des Orts der spezifischen Paritätsdaten oder der Host-Daten nutzen. Wenn beispielsweise eine Dateneinheit fehlerhaft ist oder für einen Datenbereinigungsvorgang identifiziert wird, kann bzw. können die Host-LBA(s) der fehlerhaften Einheiten in einem Peer-Abfragebefehl an eine oder mehrere der entsprechenden Peer-Speichervorrichtungen eingeschlossen sein, die in der Peer-RAID-Konfiguration 328.2 identifiziert sind, und jede abgefragte Speichervorrichtung kann eine Antwort zurückgeben, die bestätigt, ob sie die relevanten Daten und den Speicherort, um diese abzurufen und/oder sie zu sperren, innehat.
  • In einigen Ausführungsformen kann die Peer-RAID-Konfiguration 328.2 eine lokale Datenstruktur einschließen oder referenzieren und/oder eine Logik zum spezifischen Abbilden einer fehlerhaften Host-Dateneinheit gemäß ihrer entsprechenden Daten auf einer oder mehreren Peer-Speichervorrichtungen bereitstellen. Wenn beispielsweise eine Dateneinheit fehlerhaft ist oder für einen Datenbereinigungsvorgang identifiziert wird, kann bzw. können die Host-LBA(s) der fehlerhaften Einheiten verwendet werden, um die Peer-RAID-Konfiguration 328.2 zu indizieren und die spezifische Vorrichtung und/oder den Speicherort der gewünschten entsprechenden Daten zur Datenwiederherstellung oder Datensperrung zu identifizieren.
  • In einigen Ausführungsformen kann die Speichervorrichtung 120.1 ein Datenbereinigungsmodul 330 zum Ausführen eines Datenbereinigungsprozesses auf dem Speichermedium 140.1 und/oder den Speichermedien von Peer-Speichervorrichtungen einschließen. Beispielsweise kann das Datenbereinigungsmodul 330 eingerichtet sein, um Datenselbstbereinigungsvorgänge unabhängig und/oder als Reaktion auf Peer- oder Host-Auslagerungsbefehle auszuführen. In einigen Ausführungsformen kann das Datenbereinigungsmodul 330 auch Datenbereinigungen auf den Speichermedien von Peer-Speichervorrichtungen ausführen.
  • In einigen Ausführungsformen kann das Datenbereinigungsmodul 330 eine Datenbereinigungskonfiguration 330.1 einschließen, die ein oder mehrere Datenbereinigungsprofile für einen Datenbereinigungsprozess beschreibt. Beispielsweise kann die Datenbereinigungskonfiguration 330.1 eine Standardselbstbereinigungskonfiguration zum Durchführen einer periodischen Datenselbstbereinigung und/oder eine oder mehrere Konfigurationen für Peer-Speichervorrichtungen einschließen. In einigen Ausführungsformen kann die Speichervorrichtung 120.1 eingerichtet sein, Parameter für eine Datenbereinigungskonfiguration von einem Datenbereinigungsverwalter zu empfangen und zu speichern, wie ein ausgelagerter Peer-Datenbereinigungsverwalter 322.3 oder ein Speichersteuerungebenendatenbereinigungsverwalter (z. B. das Datenbereinigungsmodul 252 in 2). Beispielparameter für ein Datenbereinigungsprofil können einen Plan 330.1.1, ein Muster 330.1.2, und relevante Peer-Bonds 330.1.3. einschließen.
  • Ein Datenbereinigungsplan 330.1.1 kann Kriterien zum Initiieren eines Datenbereinigungsprozesses einschließen. Beispielsweise kann ein Datenbereinigungsplan periodisch basierend auf Kalender-/Uhrinformationen, periodisch basierend auf einer Anzahl von Lese-/Schreibvorgängen seit der letzten Bereinigung des Mediensegments und/oder ereignisbasiert sein, wie ein Lese-/Schreibfehlerschwellenwert, Verfügbarkeit von Rechenressourcen in der Speichervorrichtung 120.1 und/oder der Empfang eines Host-Befehls (wie Bereinigungsauslagerung auf Anforderung 330.4). In einigen Ausführungsformen kann der Datenbereinigungsplan 330.1.1 in die Logik des Datenbereinigungsmoduls 330 eingebaut werden, um auszuwählen, wann eine Datenbereinigung initiiert werden kann.
  • Ein Datenbereinigungsmuster 330.1.2 kann Kriterien zum Auswählen und Einreihen in die Warteschlange von Mediensegmenten für einen Datenbereinigungsprozess einschließen. Wenn der Datenbereinigungsprozess für die Initiierung ausgewählt wurde, können beispielsweise ein oder mehrere Mediensegmente für den Prozess basierend auf den Host-LBAs, die für einen Auslöseplan relevant sind, ausgewählt werden (Kalenderplan, Zeit/Schreibvorgänge seit der letzten Bereinigung dieser Mediensegmente, dieses Fehlerereignisses, Befehls usw.). In einigen Ausführungsformen kann das Datenbereinigungsmuster 330.1.2 ein Rundlaufmuster zum Scannen aller Medien in einer Speichervorrichtung definieren und kann den Endpunkt eines vorherigen Datenbereinigungsprozesses nachverfolgen, um diesen als Ausgangsposition zu verwenden.
  • Peer-Bonds 330.1.3 können Speichervorrichtungsidentifikatoren für Peer-Bonds einschließen, die für entsprechende Daten auf Peer-Speichervorrichtungen relevant sind. Beispielsweise können Peer-Bonds 330.1.3 eine oder mehrere Peer-Speichervorrichtungen identifizieren, die entsprechende Daten enthalten, die während eines Datenbereinigungsprozesses gesperrt werden sollten, um einen Verlust an Datenkonsistenz über gespiegelte oder RAIDgestreifte Daten zu verhindern. In einigen Ausführungsformen können Peer-Bonds 330.1.3 zum Zeitpunkt eines Datenbereinigungsprozesses dynamisch erzeugt werden, indem das Peer-Vorrichtungsregister 328 und/oder die Speichervorrichtungsidentifikatoren 328.1 und das Peer-Kommunikationsmodul 326 abgefragt werden, um relevante Peer-Speichervorrichtungen abzufragen, um entsprechende Daten zu identifizieren, die gesperrt werden sollten. In einigen Ausführungsformen können Peer-Bonds 330.1.3 als Parameter eines Peer- oder Host-Befehls empfangen werden, der den Datenbereinigungsprozess initiiert.
  • In einigen Ausführungsformen kann ein Peer-Streifensperrbefehl 330.2 über das Peer-Kommunikationsmodul 326 an eine oder mehrere Peer-Speichervorrichtungen ausgegeben werden, die entsprechende Daten für die Datensegmente in den Mediensegmenten, die bereinigt werden, einschließen. Wenn beispielsweise eine Datenbereinigung initiiert wird, können Peer-Streifen-Sperrbefehle 330.2 an jede Peer-Speichervorrichtung mit entsprechenden Daten gesendet werden, die spezifizieren, welche entsprechenden Daten (durch die Host-LBAs) gesperrt werden sollen, um Schreibvorgänge auf diese LBAs während des Datenbereinigungsprozesses zu verhindern. Die Peer-Streifensperrbefehle 330.2 können auch Sperrfreigabebefehle einschließen, die gesendet werden, um die Sperrung freizugeben, nachdem der Datenbereinigungsprozess auf diesen Datensegmenten abgeschlossen wurde. Der Umfang und die Häufigkeit von Sperr- und Freigabebefehlen können basierend auf der Größe der Dateneinheit, der Kommunikationsverzögerung und/oder anderen Faktoren eingerichtet werden. In einigen Ausführungsformen kann, wenn Peer-Streifensperrbefehle 330.2 empfangen werden, eine Peer-Speichervorrichtung durch ihr eigenes Datenbereinigungsmodul, den Medienverwalter 324 oder ein anderes Modul, eingerichtet werden, um Schreib- und/oder Lesevorgänge des identifizierten entsprechenden Datensegments während der Sperrperiode vorübergehend zu deaktivieren (beispielsweise ab dem Empfang eines Sperrbefehls bis zum Empfang eines Freigabebefehls).
  • In einigen Ausführungsformen kann das Datenbereinigungsmodul 330 ein Peer-Bereinigungsmodul 330.3 zum Initiieren von Datenbereinigungsprozessen auf Peer-Speichervorrichtungen einschließen. Beispielsweise kann die Speichervorrichtung 120.1 als ein Datenbereinigungsverwalter durch einen ausgelagerten Dienst fungieren, z. B. wie der Datenbereinigungsverwalter 322.3, und/oder kann einen Peer-Datenbereinigungsprozess für eine Peer-Speichervorrichtung initiieren oder darauf reagieren, um die Verwaltung und/oder Verarbeitung bereitzustellen. In einigen Ausführungsformen kann das Peer-Bereinigungsmodul 330.3 durch einen Peer-Datenbereinigungsbefehl initiiert werden, der von einer Peer-Speichervorrichtung (für eine direkte Bereinigungsunterstützung) und/oder einer Peer-Speichervorrichtung oder einem Speichersteuerungsebenensystem empfangen wird, das als Datenbereinigungsverwalter fungiert. Beispielsweise kann das Peer-Bereinigungsmodul 330.3 einen Befehl mit Parametern für eine Datenbereinigungskonfiguration plus eine Ziel-Peer-Speichervorrichtung empfangen, die das zu bereinigende Speichermedium enthält. In einigen Ausführungsformen kann das Peer-Bereinigungsmodul 330.3 durch eine Datenbereinigungskonfiguration für eine oder mehrere Peer-Datenbereinigungen initiiert werden, die innerhalb des Datenbereinigungsmoduls 330 eingerichtet sind, und Zielspeichermedien auf Peer-Speichervorrichtungen identifizieren.
  • In einigen Ausführungsformen kann das Peer-Bereinigungsmodul 330.3 Datenbereinigungsbefehle ausgeben, die denjenigen ähnlich sind, die von einem Datenbereinigungsverwalter ausgegeben werden, die spezifische Lese-/Schreibbefehle für ein Datensegment anfordern und alle Fehlerdaten sammeln. Beispielsweise kann das Peer-Bereinigungsmodul 330.3 eine Peer-Bereinigungskonfiguration mit dem Muster 330.1.2 einschließen, das Datensegmente auf einer Peer-Speichervorrichtung einschließt, und kann eine Reihe von Lese-/Schreibbefehlen an diese Peer-Speichervorrichtung für Dateneinheiten ausgeben, die diesen Datensegmenten in einer durch das Muster 330.1.2 definierten Warteschlange entsprechen. In einigen Ausführungsformen kann die Datenbereinigungskonfiguration 330.1 Pläne und Muster einschließen, die Mediensegmente auf einer Vielzahl von Speichervorrichtungen umspannen, wie jede Peer-Speichervorrichtung in einer RAID-Gruppe, und durch Muster in Kombination mit Datenselbstbereinigungs- und Peer-Datenbereinigungsvorgängen.
  • In einigen Ausführungsformen kann das Peer-Bereinigungsmodul 330.3 Peer-Datenübertragungen verwenden, um bei Datenbereinigungsvorgängen zu assistieren und Datenbereinigungsvorgänge zu ermöglichen, die Segmente von einer Speichervorrichtung zu einer anderen Speichereinheit verschieben. Beispielsweise kann der Lesevorgang für eine Datenbereinigung das Datensegment eines fernadressierbaren Arbeitsspeichers 306 lesen (mit ECC-Korrektur während des Lesens), und der Schreibvorgang kann ein Fernlesen von und Schreiben auf eine andere Peer-Speichervorrichtung einschließen. Das Peer-Datenbereinigungsmodul 330.3 kann auch eingerichtet sein, dass es die Host-FTL-Änderungen durch eine solche Übertragung, wie durch den Host-FTL-Dienst 322.1, berücksichtigt.
  • Bei einigen Ausführungsformen kann das Datenbereinigungsmodul 330 eine Bereinigungsauslagerung 330.4 zum selektiven Implementieren einer Selbstreinigung, eine Peer-Datenbereinigung und/oder eine Datenbereinigungsverwaltung als Reaktion auf ein Ereignis und/oder eine Rechenressourcenbeschränkung in einer Peer-Speichervorrichtung und/oder einem Speichersteuerungsebenensystem einschließen. Wenn beispielsweise ein Speichersteuerungsebenensystem mit einem Datenbereinigungsmodul die Datenbereinigungszuordnung, -überwachung, und Sammlung von Daten über die Peer-Gruppe 106 verwaltet und durch andere Verarbeitungsaufgaben (wie eine RAID-Rekonstruktion oder hohe Host-Lese-/Schreibanforderungen) Ressourcenbeschränkungen unterliegt, kann es einen Datenbereinigungsverwaltungsbefehl ausgeben, um der Speichervorrichtung 120.1 eine Datenbereinigungskonfiguration 330.1 zur Ausführung auszugeben, während das Speichersteuerungsebenensystem anderweitig beansprucht ist. In einigen Ausführungsformen kann eine ähnliche Situation mit einer Peer-Speichervorrichtung auftreten, wie eine Peer-Speichervorrichtung, die andernfalls einen Datenselbstbereinigungsprozess ausgeführt haben könnte. Beispielsweise können die Rechenressourcen der Peer-Speichervorrichtung andernfalls in ausgelagerten Diensten oder anderen Vorgängen beansprucht werden.
  • In einigen Ausführungsformen kann das Datenbereinigungsmodul 330 einen Datenbereinigungsüberwacher 330.5 einschließen, um einen oder mehrere Datenbereinigungsprozesse zu überwachen. Wenn beispielsweise ein Datenbereinigungsprozess auf einem oder mehreren Datensegmenten in dem Speichermedium 140.1 und/oder den Speichermedien von Peer-Speichervorrichtungen initiiert wird, kann der Datenbereinigungsüberwacher 330.5 Dateneinheiten, die Fehler enthalten, überwachen und mit dem Prozess für die Zieldatensegmente fortfahren. In einigen Ausführungsformen kann ein Fehlerbericht 330.5.1 von dem Datenbereinigungsüberwacher 330.5 erzeugt werden, um gescannte Datensegmente und Fehler, die in diesen Datensegmenten auftreten, zu identifizieren. Beispielsweise kann der Fehlerbericht 330.5.1 gleichzeitig mit dem Scan oder nach Fertigstellung des Scans erzeugt werden und Fehler protokollieren, die durch ECC und/oder Dateneinheiten korrigiert wurden, wenn die Fehlerrate den Effektivitätsschwellenwert der ECC überschreitet.
  • In einigen Ausführungsformen kann der Datenbereinigungsüberwacher 330.5 einen Fortschrittsüberwacher 330.5.2 einschließen, der die Warteschlange von Datensegmenten in einem Datenbereinigungsprozess identifiziert und mit der Bereinigung dieser Datensegmente fortfährt. Wenn beispielsweise ein Datenbereinigungsprozess initiiert wird, können die Datensegmente in dem Muster identifiziert werden, und wenn jedes Datensegment fertiggestellt ist, wird es durch den Fortschrittsüberwacher 330.5.2 protokolliert. In einigen Ausführungsformen kann dieser Fortschritt als Fertigstellung in Prozent und/oder als eine Liste von vollständigen und unvollständigen Datensegmenten (oder Dateneinheiten oder Mediensegmenten) ausgedrückt werden. In einigen Ausführungsformen kann der Datenbereinigungsüberwacher 330.5 einen Fortschrittsüberwacher 330.5.2 für ein Muster von Datensegmenten von mehreren Speichervorrichtungen einschließen. Beispielsweise kann ein Datenbereinigungsprozess ein zyklisches Muster einschließen, um alle Daten auf allen Peer-Speichervorrichtungen in einer Peer-Gruppe und/oder RAID-Gruppe zu bereinigen.
  • In einigen Ausführungsformen kann der Datenbereinigungsüberwacher 330.5 unmittelbar eine Warnung oder ein ähnliches Ereignis an ein System für die Reaktion auf solche Warnungen ausgeben, wie das Selbstheilungsmodul 332, wenn er eine kaputte oder fehlerhafte Dateneinheit identifiziert.
  • In einigen Ausführungsformen kann die Speichervorrichtung 120.1 ein Selbstheilungsmodul 332 zum Wiederherstellen und Verschieben der fehlerhaften Dateneinheiten von einem kaputten oder fehlerhaften Speicherort zu einem anderen Speicherort einschließen. Beispielsweise kann das Selbstheilungsmodul 332 eine fehlerhafte Dateneinheit basierend auf dem Datenbereinigungsmodul 330 identifizieren, die benötigten Wiederherstellungsdaten von einer Peer-Speichervorrichtung basierend auf dem Peer-Vorrichtungsregister 328 identifizieren, die Wiederherstellungsdaten von der Peer-Speichervorrichtung anfordern, und die Wiederherstellungsdaten und/oder wiederherstellbaren Daten der fehlerhaften Dateneinheit von einem neuen Speicherort in der Medienvorrichtungen 140.1. empfangen und darauf schreiben. Das Selbstheilungsmodul 332 kann in Verbindung mit dem Medienverwalter 324 arbeiten, um alle Daten zu lesen, die von dem fehlerhaften Speicherort wiederhergestellt werden können, um Wiederherstellungsdaten, die von Peer-Speichervorrichtungen empfangen werden, zu übertragen und um die wiederhergestellte Dateneinheit (die sowohl lokal wiederhergestellte Daten als auch übertragene Wiederherstellungsdaten einschließen kann) auf den neuen Speicherort in den Medienvorrichtungen 140.1 zu schreiben. In einigen Ausführungsformen kann der Medienverwalter 324 den neuen Speicherort auswählen und zugehörige Abbildungsinformationen als Teil der Vorrichtungs-FTL-Verwaltung aktualisieren.
  • In einigen Ausführungsformen kann eine fehlerhafte Dateneinheit einem RAID-Streifen oder einer anderen Speicherkonfiguration entsprechen, die eine paritätsbasierte Datenwiederherstellung (oder ein anderes Löschcodierungsverfahren) einschließt. Das Selbstheilungsmodul 332 kann eine Paritätsrekonstruktion zum Anfordern von Wiederherstellungsdaten basierend auf einer Paritätswiedererstellung einiger oder aller fehlerhaften Dateneinheiten einschließen. Beispielsweise kann die Paritätsrekonstruktion die Peer-RAID-Konfiguration 328.2 verwenden, um die Peer-Speichervorrichtungen zu identifizieren, die entsprechende Paritätsdaten und/oder den zweiten Satz von Host-Daten einschließen, die verwendet werden, um die fehlerhafte Dateneinheit zu löschen. In einigen Ausführungsformen kann die Paritätsrekonstruktion die wiederhergestellten Host-Daten von einer Peer-Speichervorrichtung anfordern, die mindestens eine der Paritätsdaten oder den zweiten Satz Host-Daten speichert, und die Peer-Speichervorrichtung führt den Löschcodierungsvorgang (XOR) aus, um die fehlenden Daten zu rekonstruieren. In einigen Ausführungsformen kann die Paritätsrekonstruktion die Paritätsdaten und den zweiten Satz Host-Daten als Wiederherstellungsdaten anfordern und die Rekonstruktion der Host-Daten lokal durchführen. In einigen Ausführungsformen kann eine fehlerhafte Dateneinheit einer gespiegelten Datenkonfiguration entsprechen, wobei eine oder mehrere redundante Kopien der Host-Daten auf andere Speichervorrichtungen beibehalten werden, sodass die Paritätsrekonstruktion nicht verwendet wird.
  • In einigen Ausführungsformen kann das Selbstheilungsmodul 332 die fehlerhaften Dateneinheiten auf eine Peer-Speichervorrichtung anstelle der Speichermedien 140.1 wiederherstellen. Beispielsweise kann das Selbstheilungsmodul 332 im Zusammenspiel mit dem Medienverwalter 324 identifizieren, dass keine geeigneten Speicherorte in den Medienvorrichtungen 140.1 verbleiben und die wiederhergestellten Host-Daten an eine andere Speichervorrichtung ausgelagert werden sollten. Das Selbstheilungsmodul 332 kann Datenauslagerung zum Kommunizieren mit einer oder mehreren Peer-Speichervorrichtungen einschließen, um einen neuen Speicherort für die wiederhergestellten Daten zu identifizieren. In einigen Ausführungsformen kann eine Peer-Datenübertragung verwendet werden, um die wiederhergestellten Daten an einen neuen Speicherort auszulagern und die Host-FTL-Informationen zu aktualisieren.
  • Wie in 4 dargestellt kann die Speichervorrichtung 120.1, die in dem Datenspeichersystem 100 betrieben wird, zwischen den Peer-Datenspeichervorrichtungen 120 betrieben werden, um eine Datenbereinigung auf einem Datensegment durchzuführen. Beispielsweise kann die Speichervorrichtung 120.1 Datenbereinigungsvorgänge mit einer oder mehreren Peer-Speichervorrichtungen (z. B. den Speichervorrichtungen 120) nach dem Verfahren 400, veranschaulicht durch die Blöcke 410 bis 490 in 4, initiieren.
  • Bei Block 410 greift eine Speichervorrichtung auf eine Datenbereinigungskonfiguration für einen Datenbereinigungsprozess zu. Beispielsweise kann eine Peer-Speichervorrichtung eine Datenbereinigungskonfiguration einschließen oder empfangen, die einen Plan und ein Muster von Datensegmenten für die Datenbereinigung einschließt. In einigen Ausführungsformen kann die Datenbereinigungskonfiguration, und/oder die Parameter in Bezug darauf, als ein Befehl von einer anderen Peer-Speichervorrichtung und/oder einem Speichersteuerungsebenensystem empfangen werden. Beispielsweise kann eine Peer-Speichervorrichtung einen Datenbereinigungsverwalter instantiieren, oder eine Speichersteuerung kann einen Datenbereinigungsverwalter instantiieren.
  • Bei Block 420 wird ein Datenbereinigungsprozess initiiert. Beispielsweise kann die Datenbereinigungskonfiguration einen Plan, einen Ereignisauslöser einschließen und/oder bei Empfang durch die Speichervorrichtung initiiert werden.
  • Bei Block 430 wird ein Datensegment für die Datenbereinigung ausgewählt. Beispielsweise kann das Muster in der Datenbereinigungskonfiguration eine Reihe von Datensegmenten für die Datenbereinigung identifizieren, und die Reihe von Datensegmenten kann in einer Warteschlange zur Verarbeitung angeordnet sein. Das nächste Datensegment in der Warteschlange kann zur Verarbeitung als Reaktion auf das Muster in der Datenbereinigungskonfiguration ausgewählt werden.
  • Bei Block 440 wird auf eine Peer-Datenkonfiguration zugegriffen. Beispielsweise kann die Speichervorrichtung ein Peer-Vorrichtungsregister einschließen, das eine oder mehrere Peer-Speichervorrichtungen identifiziert, die Dateneinheiten mit einer Datenintegritätsbeziehung mit dem Datensegment enthalten können, das für die Datenbereinigung ausgewählt wurde. In einigen Ausführungsformen kann die Peer-Datenkonfiguration mit Speichervorrichtungsidentifikatoren und entsprechenden Peer-Dateneinheitsorten in der Speichervorrichtung gespeichert werden. In einigen Ausführungsformen kann die Speichervorrichtung eine oder mehrere Peer-Speichervorrichtungen durch Peer-Kommunikationskanäle abfragen, um entsprechende Peer-Dateneinheiten zu lokalisieren.
  • Bei Block 450 werden Peer-Dateneinheiten mit einer Integritätsbeziehung mit dem Datensegment als entsprechende Dateneinheiten identifiziert. Beispielsweise kann das Datensegment einen lokalen Abschnitt oder Streifen von einem RAID-Streifen einschließen, und entsprechende Dateneinheiten können zusätzliche Abschnitte oder andere Streifen in dem RAID-Streifen sein, oder das Datensegment kann Dateneinheiten einschließen, die zu Peer-Speichereinheiten gespiegelt werden, und entsprechende Dateneinheiten können die gespiegelten Kopien auf den Peer-Speichervorrichtungen sein.
  • Bei Block 460 wird ein entsprechender Datensperrbefehl an die Peer-Speichervorrichtung oder Vorrichtungen gesendet, die entsprechende Dateneinheiten einschließen, die bei Block 450 identifiziert wurden. Beispielsweise können zwei andere Speichervorrichtungen mit Streifen, die dem Datenstreifen entsprechen, identifiziert werden, und die Speichervorrichtung kann einen Datensperrbefehl an jene Speichervorrichtungen senden, die die Dateneinheiten in den zu sperrenden Streifen identifizieren. In einigen Ausführungsformen kann der Datensperrbefehl die Host-LBAs der Dateneinheiten, die für Lese- und/oder Schreibvorgänge gesperrt werden sollen, identifizieren, um eine Gefährdung der redundanten Datenintegrität während der Datenbereinigung zu verhindern.
  • Bei Block 470 wird die Datenbereinigung auf dem Datensegment ausgeführt. Beispielsweise kann ein Lesevorgang mit ECC-Korrektur gefolgt von einem Schreibvorgang zurück zu dem Speichermedium für eine oder mehrere Dateneinheiten in dem Datensegment fertiggestellt werden. In einigen Ausführungsformen kann die Anzahl der vorgenommenen Fehlerkorrekturen und/oder ein fehlerhafter Lesevorgang (basierend auf Fehlern, die die Fehlerkorrekturfähigkeit der ECC überschreiten) für jede gelesene Dateneinheit (oder Leseversuch der Dateneinheit) aufgezeichnet werden. In einigen Ausführungsformen kann eine Datenbereinigung eine Reihe von Datenbereinigungsvorgängen für unterschiedliche Sätze von Segmenten einschließen, wobei ein erster Abschnitt des Datenbereinigungsprozesses ein Satz Datensegmente ist und ein weiterer Abschnitt ein weiterer Satz Datensegmente ist; für so viele unterschiedliche Segmente, wie der Datenbereinigungsprozess einschließt.
  • Bei Block 480 wird ein Fehlerbericht basierend auf den Fehlerkorrekturen und/oder Fehlern erzeugt, die in dem Datenbereinigungsvorgang bei Block 470 erfasst wurden. Beispielsweise kann ein Fehlerbericht erzeugt werden, wenn jeder Vorgang abgeschlossen ist und Fehler können für die bereinigten Dateneinheit berichtet werden und/oder ein Zusammenfassungsfehlerbericht kann mit dem Datensegment erzeugt werden und/oder der gesamte Datenbereinigungsprozess ist fertiggestellt. In einigen Ausführungsformen kann der Fehlerbericht an ein Modul oder System gesendet werden, das auf Fehler reagiert, wie ein Selbstheilungsmodul, um eine Datenwiederherstellung zu versuchen.
  • Bei Block 490 kann ein Datenfreigabebefehl an die Peer-Speichervorrichtungen gesendet werden, die die Datensperrbefehle empfangen haben. Beispielsweise kann bei Fertigstellung der Datenbereinigung aller Dateneinheiten oder Datensegmente, die zu einer entsprechenden Dateneinheit, die gesperrt ist, zugehören, ein Datenfreigabebefehl gesendet werden.
  • Wie in 5 dargestellt kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, gemäß einem Datenbereinigungsprozess in einer Peer-Speichervorrichtungskonfiguration betrieben werden, um eine Datenbereinigungskonfiguration zu analysieren. Beispielsweise kann die Speichervorrichtung 120.1 eine Datenbereinigungskonfiguration nach dem Verfahren 500 analysieren, veranschaulicht durch die Blöcke 510 bis 560 von 5.
  • Bei Block 510 wird auf eine Datenbereinigungskonfiguration zugegriffen. Beispielsweise können eine oder mehrere Datenbereinigungskonfigurationen in einer Speichervorrichtung gespeichert sein und/oder in einem Datenbereinigungsbefehl von einer Peer-Speichervorrichtung und/oder einem Speichersteuerungsebenensystem empfangen werden.
  • Bei Block 520 kann ein Datenbereinigungsprozess basierend auf einem Datenbereinigungsplan initiiert werden. Beispielsweise kann die Datenbereinigungskonfiguration einen Plan zum Initiieren des Datenbereinigungsprozesses bei Empfang oder basierend auf anderen Planungskriterien einschließen.
  • Bei Block 530 kann die Peer-Speichervorrichtung identifiziert werden, um den Datenbereinigungsprozess auszuführen. Beispielsweise kann die Datenspeichervorrichtung, die einen Datenbereinigungsbefehl empfängt, als die bereinigende Speichervorrichtung identifiziert werden. In einigen Ausführungsformen kann eine Speichervorrichtung, die als Datenbereinigungsverwalter fungiert, eine Konfiguration einschließen oder empfangen, die Peer-Speichervorrichtungen als die Bereinigungsspeichervorrichtung identifiziert, und Datenbereinigungsbefehle an diese Speichervorrichtungen als Teil des Datenbereinigungsprozesses ausgeben.
  • Bei Block 540 kann ein Datensegment von einem Datenbereinigungsmuster für einen oder mehrere Datenbereinigungsvorgänge ausgewählt werden. Beispielsweise kann ein Segment basierend auf dem Datenbereinigungsmuster in der Datenbereinigungskonfiguration und einer Datensegmentwarteschlange, die den Fortschritt des Datenbereinigungsprozesses darstellt, identifiziert werden.
  • Bei Block 550 kann eine Ziel-Peer-Speichervorrichtung identifiziert werden, die das bei Block 540 ausgewählte Datensegment einschließt. Beispielsweise kann die Ziel-Peer-Speichervorrichtung Medienvorrichtungen auf der Speichervorrichtung einschließen, die den Datenbereinigungsprozess ausführen, oder sie kann Medienvorrichtungen auf Peer-Speichervorrichtungen einschließen. Die Ziel-Peer-Speichervorrichtung kann direkt in der Datenbereinigungskonfiguration identifiziert werden oder sie kann aus einer Datenstruktur oder Abfrage abgerufen werden, die den Ort des Datensegments durch die Host-LBA oder ein anderes Adressierungsschema identifiziert.
  • Bei Block 560 können ein oder mehrere Empfänger zum Empfangen von Fehlerberichten in Bezug auf die Datenbereinigung identifiziert werden. Beispielsweise kann ein Speichersteuerungsebenensystem und/oder eine Peer-Speichervorrichtung den Datenbereinigungsprozess initiieren oder als Datenbereinigungsverwalter fungieren, um Fehlerberichte zu empfangen, wie es auch die bereinigende Vorrichtung und die Zielvorrichtung kann. In einigen Ausführungsformen können Fehlerberichten an eine Peer-Gruppe, RAID-Gruppe oder andere Systeme ausgestrahlt werden, die für die Verwaltung der Datenintegrität in Bezug auf das Peer-Speichersystem relevant sind.
  • Wie in 6 dargestellt, kann die Speichervorrichtung 120.1, die im Datenspeichersystem 100 betrieben wird, gemäß einem Datenselbstbereinigungsprozess in einer Peer-Speichervorrichtungskonfiguration betrieben werden. Beispielsweise kann die Speichervorrichtung 120.1 die Datenselbstbereinigung und die Datenwiederherstellung nach dem Verfahren 600 bereitstellen, veranschaulicht durch die Blöcke 610 bis 560 von 5.
  • Bei Block 610 überwacht eine Speichervorrichtung Rechenressourcen, um zu bestimmen, wann Ressourcen für Hintergrundaufgaben verfügbar sind, wie beispielsweise für Datenselbstbereinigung. Beispielsweise kann die Datenselbstbereinigung eine Priorität basierend auf einem Datenbereinigungsplan und/oder Ereignissen in Bezug auf Datenfehler oder Haltbarkeit innehaben, die es der Speichervorrichtung ermöglicht, Rechenressourcen für die Datenbereinigung zuzuordnen, wenn Lese-/Schreibanforderungen gering sind und/oder keine Aufgaben einer höheren Priorität die notwendigen Rechenressourcen benötigen. In einigen Ausführungsformen kann die Rechenressource durch eine oder mehrere Rechenressourcennutzungswerte, wie eine prozentuale Prozessorverwendung, prozentuale Arbeitsspeicherverwendung, prozentuale Pufferverwendung usw. dargestellt werden. Rechenressourcennutzungswerte können auch in anderen Einheiten als Prozentsätze gemessen werden, wie Vorgänge, Speicherkapazität usw., und die zusammengesetzten oder berechneten Werte basieren auf mehreren Rechenressourcen.
  • Bei Block 620 wird eine Datenbereinigung auf einem oder mehreren Datensegmenten in den Medienvorrichtungen der Speichervorrichtung initiiert. Wenn sich beispielsweise Priorität und Ressourcen bei Block 610 angleichen, wird der Datenbereinigungsprozess basierend auf seiner Datenbereinigungskonfiguration initiiert.
  • Bei Block 630 überwacht die Speichervorrichtung den Datenbereinigungsprozess, wenn Datenbereinigungsvorgänge von Datensegmenten durchgeführt werden. Beispielsweise kann eine Warteschlange von Datensegmenten, die ein Datenbereinigungsmuster bilden, in der Datenbereinigungskonfiguration identifiziert werden, und der Datenbereinigungsprozess kann mit den Datensegmenten in der Warteschlange mit einem oder mehreren Datenbereinigungsvorgängen fortfahren, um ECC-Korrekturen und Datenfehler zu identifizieren, die die ECC-Korrekturfähigkeiten überschreiten.
  • Bei Block 640 wird eine fehlerhafte Dateneinheit aus dem Datenbereinigungsprozess identifiziert. Beispielsweise wird ein oder mehrere Speicherorte aus Leseversuchen der Datensegmente identifiziert, die Fehler innehaben. In einigen Ausführungsformen können Speicherorte mit Fehlern eine oder mehrere fehlerhafte Dateneinheiten identifizieren.
  • Bei Block 650 können Wiederherstellungsdaten, die den fehlerhaften Dateneinheiten entsprechen, von Peer-Speichervorrichtungen übertragen werden. Beispielsweise kann die Speichervorrichtung an einer oder mehreren Datenspiegelungen und/oder RAID-Gruppen teilnehmen und Wiederherstellungsdaten für die fehlerhaften Dateneinheiten können aus einer Wiederherstellungs-Peer-Speichervorrichtungen mit einer Peer-Datenübertragung übertragen werden.
  • Bei Block 660 werden die fehlerhaften Dateneinheiten aus den Wiederherstellungsdaten wiederhergestellt und an einem neuen Speicherort gespeichert. Beispielsweise können die Host-Daten von der fehlerhaften Dateneinheit von einer Spiegelkopie empfangen werden und/oder von einem RAID-Streifen oder Paritätsdaten rekonstruiert werden. Die wiederhergestellten Daten können an einem anderen Speicherort auf der Speichervorrichtung gespeichert und/oder in eine andere Speichervorrichtung ausgelagert werden.
  • 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 detaillierte 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 Gesichtspunkte der vorliegenden Technologie als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Folglich können Gesichtspunkte der vorliegenden Offenlegung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, speicherresidente Software, Mikrocodes, oder dergleichen) oder Gesichtspunkte 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 Gesichtspunkte 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 (Random Access Memory, RAM), Festwertspeicher (Read-Only Memory, ROM), löschbaren programmierbaren Festwertspeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), einen Flash-Speicher, eine optische Faser, einen Compact Disk-Festwertspeicher (Compact Disk Read-Only Memory, 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 Gesichtspunkten der vorliegenden Technologie 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 Szenario 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 Gesichtspunkte der vorliegenden Technologie 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 einschließen, 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 obigen 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 Technologie abzuweichen, wie in den folgenden Ansprüchen dargelegt.

Claims (20)

  1. Speichervorrichtung, umfassend: einen Prozessor; einen Speicher; mindestens ein Speichermedium; eine Schnittstelle zum Kommunizieren mit einer Vielzahl von Peer-Vorrichtungen über einen Peer-Kommunikationskanal; und ein Datenbereinigungsmodul, das in dem Arbeitsspeicher gespeichert und durch den Prozessor ausführbar ist, um Vorgänge auszuführen, aufweisend: Auswählen eines ersten Datensegments auf dem mindestens einen Speichermedium für einen Datenbereinigungsprozess; Identifizieren mindestens einer Peer-Speichervorrichtung einschließlich mindestens eines entsprechenden Datensegments; Senden eines entsprechenden Datensperrbefehls über den Peer-Kommunikationskanal an die mindestens eine Peer-Speichervorrichtung; Durchführen eines Datenbereinigungsvorgangs auf dem ersten Datensegment; und Erzeugen eines Datenbereinigungsfehlerberichts für das erste Datensegment als Reaktion auf das Durchführen des Datenbereinigungsvorgangs.
  2. Speichervorrichtung gemäß Anspruch 1, wobei der Peer-Kommunikationskanal eine Speichersteuerungsebene zum Verwalten der Speichervorrichtung umgeht.
  3. Speichervorrichtung gemäß Anspruch 1, weiterhin aufweisend: Ein Peer-Vorrichtungsregister, das in dem Arbeitsspeicher gespeichert ist, aufweisend: einen Peer-Speichervorrichtungsidentifikator für jede der Vielzahl von Peer-Speichervorrichtungen, wobei der Peer-Speichervorrichtungsidentifikator verwendet wird, um über den Peer-Kommunikationskanal gesendete Daten zu adressieren; und eine Peer-Datenkonfiguration, die entsprechende Datensegmente in der Vielzahl von Peer-Vorrichtungen identifiziert, wobei das Identifizieren mindestens einer Peer-Speichervorrichtung, einschließlich mindestens eines entsprechenden Datensegments, das Zugreifen auf die Peer-Datenkonfiguration einschließt.
  4. Speichervorrichtung gemäß Anspruch 3, wobei: die Peer-Datenkonfiguration ein redundantes Array einer unabhängigen Laufwerkskonfiguration (RAID-Konfiguration) ist; das erste Datensegment ein lokaler Abschnitt eines RAID-Streifens ist; und das mindestens eine entsprechende Datensegment mindestens einen zusätzlichen Abschnitt des RAID-Streifens einschließt.
  5. Speichervorrichtung gemäß Anspruch 1, wobei das Datenbereinigungsmodul weiterhin durch den Prozessor ausführbar ist, um Vorgänge auszuführen, aufweisend: Speichern einer Datenbereinigungskonfiguration in dem Arbeitsspeicher, wobei die Datenbereinigungskonfiguration einen Datenbereinigungsplan und ein Datenbereinigungsmuster definiert; und Initiieren des Datenbereinigungsprozesses gemäß dem Datenbereinigungsplan, wobei das erste Datensegment als Reaktion auf das Datenbereinigungsmuster ausgewählt wird.
  6. Speichervorrichtung gemäß Anspruch 5, wobei das Datenbereinigungsmodul weiterhin durch den Prozessor ausführbar ist, um Vorgänge auszuführen, aufweisend: Empfangen der Datenbereinigungskonfiguration von einem Datenbereinigungsverwalter, wobei der Datenbereinigungsverwalter einen der folgenden einschließt: einen Peer-Datenbereinigungsverwalter, der in einer Verwaltungs-Peer-Speichervorrichtung instantiiert ist, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird und über den Peer-Kommunikationskanal kommuniziert; und einen Steuerungsdatenbereinigungsverwalter, der in einer Speichersteuerungsebene der Vielzahl von Peer-Speichervorrichtungen instanziiert wird.
  7. Speichervorrichtung gemäß Anspruch 6, wobei der Datenbereinigungsprozess Folgendes einschließt: einen ersten Bereinigungsabschnitt, der durch den Datenbereinigungsverwalter für eine erste Vielzahl von Datensegmenten auf dem mindestens einen Speichermedium ausgeführt wird; und einen zweiten Datenbereinigungsabschnitt, der durch das Datenbereinigungsmodul für eine zweite Vielzahl von Datensegmenten an dem mindestens einem Speichermedium ausgeführt wird, wobei: die zweite Vielzahl von Datensegmenten das erste Datensegment einschließt; und der zweite Datenbereinigungsabschnitt des Datenbereinigungsprozesses als Reaktion auf das Empfangen der Datenbereinigungskonfiguration von dem Datenbereinigungsverwalter initiiert wird.
  8. Speichervorrichtung gemäß Anspruch 1, wobei das Datenbereinigungsmodul weiterhin durch den Prozessor ausführbar ist, um Vorgänge auszuführen, aufweisend: Auswählen eines Peer-Datensegments auf mindestens einem Peer-Speichermedium für einen Peer-Datenbereinigungsprozess, wobei sich das Peer-Speichermedium in einer ausgewählten Peer-Speichervorrichtung aus der Vielzahl von Peer-Speichervorrichtungen befindet; Durchführen eines Peer-Datenbereinigungsvorgangs auf dem Peer-Datensegment über den Peer-Kommunikationskanal; und Erzeugen eines Peer-Datenbereinigungsfehlerberichts für das Peer-Datensegment als Reaktion auf die Durchführung des Peer-Datenbereinigungsvorgangs.
  9. Speichervorrichtung gemäß Anspruch 1, wobei das Datenbereinigungsmodul weiterhin durch den Prozessor ausführbar ist, um Vorgänge auszuführen, aufweisend: Überwachen eines Rechenressourcennutzungswerts, der sich auf den Prozessor und den Arbeitsspeicher bezieht; und Planen des Datenbereinigungsprozesses als Reaktion darauf, dass der Rechenressourcennutzungswert unter einem Rechenressourcenverfügbarkeitsschwellenwert liegt.
  10. Speichervorrichtung gemäß Anspruch 1, weiterhin aufweisend: ein Selbstheilungsmodul, das in dem Arbeitsspeicher gespeichert ist und durch den Prozessor ausführbar ist, um Vorgänge auszuführen, aufweisend: Identifizieren einer fehlerhaften Dateneinheit aus dem ersten Datensegment als Reaktion auf den Datenbereinigungsprozess; Empfangen von Wiederherstellungsdaten für die fehlerhafte Dateneinheit von einer Wiederherstellungs-Peer-Speichervorrichtung über den Peer-Kommunikationskanal; und Wiederherstellen der fehlerhaften Dateneinheit von einem ersten Speichermediumssegment von dem mindestens einen Speichermedium auf ein zweites Speichermediumssegment unter Verwendung der Wiederherstellungsdaten.
  11. Computerimplementiertes Verfahren, aufweisend: Speichern von Speichervorrichtungsidentifikatoren für eine Vielzahl von Peer-Speichervorrichtungen in einer ersten Speichervorrichtung; Herstellen eines Peer-Kommunikationskanals mit mindestens einer der Vielzahl von Peer-Speichervorrichtungen aus der ersten Speichervorrichtung, wobei der Peer-Kommunikationskanal eine Speichersteuerungsebene zum Verwalten der ersten Speichervorrichtung umgeht; und Ausführen eines Datenbereinigungsprozesses, aufweisend: Auswählen eines ersten Datensegments in der ersten Speichervorrichtung; Identifizieren von mindestens einem entsprechenden Datensegment in mindestens einer entsprechenden Peer-Speichervorrichtung; Senden eines entsprechenden Datensperrbefehls an die mindestens eine entsprechende Peer-Speichervorrichtung über den Peer-Kommunikationskanal; Durchführen eines Datenbereinigungsvorgangs auf dem ersten Datensegment; und Erzeugen eines Datenbereinigungsfehlerberichts für das erste Datensegment als Reaktion auf das Durchführen des Datenbereinigungsvorgangs.
  12. Computerimplementiertes Verfahren gemäß Anspruch 11, wobei das Identifizieren mindestens eines entsprechenden Datensegments einschließt: Zugreifen auf eine Datenkonfiguration eines redundanten Peer-Arrays unabhängiger Festplatten (RAID), die eingerichtet ist, um entsprechende Datensegmente für das erste Datensegment in der Vielzahl von Peer-Speichervorrichtungen zu identifizieren, wobei: das erste Datensegment ein lokaler Abschnitt eines RAID-Streifens ist, der in der ersten Speichervorrichtung gespeichert ist; und das mindestens eine entsprechende Datensegment mindestens einen zusätzlichen Abschnitt des RAID-Streifens einschließt.
  13. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Speichern einer Datenbereinigungskonfiguration, wobei die Datenbereinigungskonfiguration einen Datenbereinigungsplan und ein Datenbereinigungsmuster definiert; und Initiieren des Datenbereinigungsprozesses gemäß dem Datenbereinigungsplan, wobei das erste Datensegment als Reaktion auf das Datenbereinigungsmuster ausgewählt wird.
  14. Computerimplementiertes Verfahren gemäß Anspruch 13, weiterhin aufweisend: Empfangen der Datenbereinigungskonfiguration von einem Datenbereinigungsverwalter, wobei der Datenbereinigungsverwalter einen der folgenden einschließt: einen Peer-Datenbereinigungsverwalter, der in einer Verwaltungs-Peer-Speichervorrichtung instantiiert ist, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird und über den Peer-Kommunikationskanal kommuniziert; und einen Steuerungsdatenbereinigungsverwalter, der in einer Speichersteuerungsebene der Vielzahl von Peer-Speichervorrichtungen instanziiert wird.
  15. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Ausführen eines Peer-Datenbereinigungsprozesses unter Verwendung der ersten Speichervorrichtung, aufweisend: Auswählen eines Peer-Datensegments auf mindestens einem Peer-Speichermedium, wobei das Peer-Speichermedium sich in einer ausgewählten Peer-Speichervorrichtung aus der Vielzahl von Peer-Speichervorrichtungen befindet und nicht die erste Speichervorrichtung ist; Durchführen eines Peer-Datenbereinigungsvorgangs auf dem Peer-Datensegment über den Peer-Kommunikationskanal; und Erzeugen eines Peer-Datenbereinigungsfehlerberichts für das Peer-Datensegment als Reaktion auf die Durchführung des Peer-Datenbereinigungsvorgangs.
  16. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Überwachen eines Rechenressourcennutzungswerts, der sich auf mindestens eine Rechenressource der ersten Speichervorrichtung bezieht; und Planen des Datenbereinigungsprozesses als Reaktion darauf, dass der Rechenressourcennutzungswert unter einem Rechenressourcenverfügbarkeitsschwellenwert liegt.
  17. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Identifizieren einer fehlerhaften Dateneinheit aus dem ersten Datensegment als Reaktion auf den Datenbereinigungsprozess; Empfangen von Wiederherstellungsdaten für die fehlerhafte Dateneinheit von einer Wiederherstellungs-Peer-Speichervorrichtung über den Peer-Kommunikationskanal; und Wiederherstellen der fehlerhaften Dateneinheit von einem ersten Speichermediumssegment in der ersten Speichervorrichtung auf ein zweites Speichermediumssegment unter Verwendung der Wiederherstellungsdaten.
  18. Speichersystem, aufweisend: eine Vielzahl von Peer-Speichervorrichtungen, wobei jede der Vielzahl von Peer-Speichervorrichtungen Folgendes aufweist: mindestens ein Speichermedium; Mittel zum Speichern von Speichervorrichtungsidentifikatoren für die Vielzahl von Peer-Speichervorri chtu ngen; Mittel zum Herstellen eines Peer-Kommunikationskanals zwischen einer Bereinigungs-Peer-Speichervorrichtung, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird und einer Ziel-Peer-Speichervorrichtung, die aus der Vielzahl von Peer-Speichervorrichtungen ausgewählt wird, wobei der Peer-Kommunikationskanal eine Speichersteuerungsebene für die Verwaltung der Vielzahl von Peer-Speichervorrichtungen umgeht; Mittel für die Bereinigungs-Peer-Speichervorrichtung, um ein erstes Datensegment in der Zielspeichervorrichtung auszuwählen; Mittel zum Identifizieren mindestens eines entsprechenden Datensegments in mindestens einer entsprechenden Peer-Speichervorrichtung; Mittel zum Senden eines entsprechenden Datensperrbefehls an die mindestens eine entsprechende Peer-Speichervorrichtung über den Peer-Kommunikationskanal; Mittel für die Bereinigungs-Peer-Speichervorrichtung, um einen Datenbereinigungsvorgang auf dem ersten Datensegment über den Peer-Kommunikationskanal durchzuführen; und Mittel zur Erzeugung eines Datenbereinigungsfehlerberichts für das erste Datensegment als Reaktion auf die Durchführung des Datenbereinigungsvorgangs.
  19. Speichersystem gemäß Anspruch 18, weiterhin aufweisend: Mittel zum Verwalten einer Vielzahl von Datenbereinigungsvorgängen für die Vielzahl von Peer-Speichervorrichtungen, wobei: das Mittel zum Verwalten der Vielzahl von Datenbereinigungsvorgängen eingerichtet ist, um eine Datenbereinigungskonfiguration an die Vielzahl von Peer-Speichervorrichtungen zu senden; und die Datenbereinigungskonfiguration einen Datenbereinigungsplan, ein Datenbereinigungsmuster, die Datenbereinigungs-Peer-Speichervorrichtung, und die Ziel-Peer-Speichervorrichtung für jedes der Vielzahl von Datenbereinigungsvorgängen definiert.
  20. Speichersystem gemäß Anspruch 18, weiterhin aufweisend: Mittel zum Wiederherstellen von mindestens einer fehlerhaften Dateneinheit aus dem ersten Datensegment unter Verwendung von Wiederherstellungsdaten aus der Vielzahl von Peer-Speichervorrichtungen, wobei das Mittel zum Wiederherstellen der mindestens einen fehlerhaften Dateneinheit eingerichtet ist zum: automatischen Reagieren auf den Datenbereinigungsvorgang; und Übertragen der Wiederherstellungsdaten zwischen den Peer-Speichervorrichtungen über den Peer-Kommunikationskanal.
DE112019000201.5T 2018-08-03 2019-05-31 Speichersysteme mit peer-datenbereinigung Pending DE112019000201T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/054,940 2018-08-03
US16/054,940 US10649843B2 (en) 2018-08-03 2018-08-03 Storage systems with peer data scrub
PCT/US2019/035060 WO2020027910A1 (en) 2018-08-03 2019-05-31 Storage systems with peer data scrub

Publications (1)

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

Family

ID=69227462

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000201.5T Pending DE112019000201T5 (de) 2018-08-03 2019-05-31 Speichersysteme mit peer-datenbereinigung

Country Status (4)

Country Link
US (1) US10649843B2 (de)
CN (1) CN111465922B (de)
DE (1) DE112019000201T5 (de)
WO (1) WO2020027910A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
US10896088B2 (en) * 2018-11-15 2021-01-19 Seagate Technology Llc Metadata recovery mechanism for page storage
US11301324B2 (en) * 2019-02-15 2022-04-12 Sanmina Corporation Method and apparatus for consistent and highly available data storage using local and fabric attached non-volatile memory storage devices
KR102669545B1 (ko) * 2019-07-23 2024-05-27 삼성전자주식회사 휘발성 메모리 장치의 리페어 제어 방법 및 이를 수행하는 스토리지 장치
CN112506420A (zh) * 2019-09-16 2021-03-16 伊姆西Ip控股有限责任公司 在存储系统中管理擦洗操作的方法、设备和产品
US11544205B2 (en) 2020-11-20 2023-01-03 Western Digital Technologies, Inc. Peer storage devices sharing host control data
US11531498B2 (en) * 2020-11-20 2022-12-20 Western Digital Technologies, Inc. Peer storage device messaging over control bus
CN114070895B (zh) * 2021-11-15 2023-04-25 中国联合网络通信集团有限公司 数据传输方法、控制面网元和用户面网元
US11971771B2 (en) 2022-01-25 2024-04-30 Western Digital Technologies, Inc. Peer storage device messaging for power management
US12008251B2 (en) * 2022-06-22 2024-06-11 Western Digital Technologies, Inc. Rate levelling among peer data storage devices
CN116860186B (zh) * 2023-09-05 2023-11-10 上海凯翔信息科技有限公司 一种分布式集群的数据清理系统

Family Cites Families (87)

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

Also Published As

Publication number Publication date
US10649843B2 (en) 2020-05-12
WO2020027910A1 (en) 2020-02-06
CN111465922B (zh) 2023-09-19
CN111465922A (zh) 2020-07-28
US20200042380A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112018004275T5 (de) Raid-array-wiederherstellungsunterstützung anhand einer externen array-kopie
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
US9606883B1 (en) Storage system having cross node data redundancy and method and computer readable medium for same
DE112013006504B4 (de) Speichersystem und Datenverwaltungsverfahren
US9286002B1 (en) Dynamic restriping in nonvolatile memory systems
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
US10346245B2 (en) Data storage system and data storage method
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
US10817376B2 (en) RAID with heterogeneous combinations of segments
DE112014005570T5 (de) Deaktivieren von Seiten in einem Nand-Flash-Speicher-System
DE112019000215T5 (de) Wiederherstellungshilfe mit ausgefallener Speichervorrichtung
DE112020003277T5 (de) Erzeugen von tags für die datenzuweisung
DE112015000710T5 (de) Verteiltes Speichersystem
US10564865B2 (en) Lockless parity management in a distributed data storage system
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
DE112019005408B4 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
US20190243553A1 (en) Storage system, computer-readable recording medium, and control method for system
US20200210090A1 (en) Data Redundancy Reconfiguration Using Logical Subunits
EP3262500A1 (de) Stripping, zuweisung und rekonstruktion von daten
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112021000246T5 (de) Nachrichtenübermittlung von der peer-speicherungsvorrichtung über den steuerbus

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE