-
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.