DE112015005211T5 - Systeme und verfahren für die speicherfehler-verwaltung - Google Patents

Systeme und verfahren für die speicherfehler-verwaltung Download PDF

Info

Publication number
DE112015005211T5
DE112015005211T5 DE112015005211.9T DE112015005211T DE112015005211T5 DE 112015005211 T5 DE112015005211 T5 DE 112015005211T5 DE 112015005211 T DE112015005211 T DE 112015005211T DE 112015005211 T5 DE112015005211 T5 DE 112015005211T5
Authority
DE
Germany
Prior art keywords
data
storage
memory
stored
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112015005211.9T
Other languages
English (en)
Inventor
Swaminathan Sundararaman
Nisha Talagala
Eivind Sarto
Shaohua Li
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112015005211T5 publication Critical patent/DE112015005211T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Abstract

Eine Speicherschicht speichert Integritätsdaten, die Datengruppen entsprechen, die in eine Speicheranordnung geschrieben werden. Die Speicherschicht validiert gespeicherte Datengruppen unter Verwendung der Integritätsdaten unabhängig von Wiederherstellungsinformationen, die durch die Speicheranordnung verwaltet werden. Die Speicherschicht kommt Absturzwiederherstellungsoperationen der Speicheranordnung durch Validieren einer Teilmenge der Datengruppen zuvor. Die Speicherschicht identifiziert zu validierende Datengruppen auf der Basis einer Position eines Protokollanfügungspunktes innerhalb eines Speicheradressraums der Speicheranordnung. Die Speicherschicht kann ferner dazu konfiguriert sein, Schreiblochzustände durch u. a. Rekonstruieren ungültiger Daten einer Datengruppe und/oder Behalten von gültigen Teilen der Datengruppe abzuschwächen.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft Systeme und Verfahren zum Verwalten von Speichern und insbesondere Systeme, Verfahren, Vorrichtungen und Schnittstellen zum Verwalten von Speicherfehlerzuständen.
  • HINTERGRUND
  • Eine Speicheranordnung kann eine Menge von zwei oder mehr Speichereinrichtungen umfassen und kann verwendet werden, um die Kapazität, Leistung und Zuverlässigkeit von Speicherdiensten zu erhöhen. Eine Steuereinrichtung der Speicheranordnung kann dazu konfiguriert sein, Daten auf zwei oder mehr Speichereinrichtungen der Anordnung mit redundanten Rekonstruktionsmetadaten, wie etwa Paritätsinformationen, zu schreiben. Wenn eine oder mehrere der Schreiboperationen fehlschlagen, können die auf der Anordnung gespeicherten Daten unvollständig sein und/oder nicht den Rekonstruktionsmetadaten entsprechen (können z. B. ein „Schreibloch“ zur Folge haben). Die Speicheranordnungssteuereinrichtung ist möglicherweise nicht in der Lage, solche Fehler zu detektieren und/oder unter Verwendung der Rekonstruktionsmetadaten zu korrigieren. Außerdem kann die Verwendung der Rekonstruktionsmetadaten auf der Anordnung, um solche Fehler zu korrigieren, eine weitere Datenbeschädigung zur Folge haben. Deshalb besteht ein Bedarf an Systemen, Verfahren, Vorrichtungen und/oder Schnittstellen für die Speicherfehler-Verwaltung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1A ist ein schematisches Blockdiagramm einer Ausführungsform eines Systems, das dazu konfiguriert ist, Speicherfehler zu verwalten;
  • 1B ist ein schematisches Blockdiagramm einer Ausführungsform einer Operation, um eine Datengruppe auf eine Speicheranordnung zu schreiben;
  • 1C ist ein schematisches Blockdiagramm einer Ausführungsform einer Operation, um eine auf einer Speicheranordnung gespeicherte Datengruppe zu validieren;
  • 1D ist ein schematisches Blockdiagramm einer Ausführungsform einer Operation, um eine auf einer Speicheranordnung gespeicherte Datengruppe zu validieren;
  • 1E ist ein schematisches Blockdiagramm einer Ausführungsform einer Operation, um einen Teil einer auf einer Speicheranordnung gespeicherten Datengruppe wiederherzustellen;
  • 1F ist ein schematisches Blockdiagramm einer Ausführungsform eines Schreiblochs in einer Speicheranordnung;
  • 1G ist ein schematisches Blockdiagramm einer Ausführungsform einer Speicherschicht, die dazu konfiguriert ist, Datengruppen betreffende Integritätsdaten zu schreiben;
  • 1H ist ein schematisches Blockdiagramm einer Ausführungsform einer Speicherschicht, die dazu konfiguriert ist, gespeicherte Datengruppen unter Verwendung von Integritätsdaten zu validieren;
  • 1I ist ein schematisches Blockdiagramm einer weiteren Ausführungsform einer Speicherschicht, die dazu konfiguriert ist, gespeicherte Datengruppen unter Verwendung von Integritätsdaten zu validieren;
  • 1J ist ein schematisches Blockdiagramm einer Ausführungsform einer Speicherschicht, die dazu konfiguriert ist, Datengruppen in einem auf einer Speicheranordnung geführten Speicherprotokoll zu validieren;
  • 2 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zur Speicherfehler-Verwaltung;
  • 3 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zur Speicherfehler-Verwaltung;
  • 4 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zur Speicherfehler-Verwaltung;
  • 5A ist ein schematisches Blockdiagramm einer weiteren Ausführungsform eines Systems zur Verwaltung von Speicherfehlern;
  • 5B stellt Ausführungsformen von Virtualisierungsmetadaten, die durch eine Speicherdienstschicht verwaltet werden, dar;
  • 5C stellt Ausführungsformen eines Kontextdatenspeicherformats dar;
  • 5D stellt Ausführungsformen eines Datensatzes dar, der persistente Metadaten umfasst, die zur Speicherung als Datengruppe auf einer Speicheranordnung konfiguriert sind;
  • 5E stellt Ausführungsformen eines Datensatzes dar, der persistente Metadaten umfasst, die zur Speicherung als Datengruppe auf einer Speicheranordnung konfiguriert sind;
  • 5F stellt Ausführungsformen eines Datensatzes dar, der persistente Metadaten umfasst, die zur Speicherung als Datengruppe auf einer Speicheranordnung konfiguriert sind;
  • 5G stellt Ausführungsformen eines Datensatzes dar, der zur Speicherung auf einer Speicheranordnung konfiguriert ist und mit einem Eintrag persistenter Metadaten in einem Metadatenprotokoll assoziiert ist;
  • 5H stellt Ausführungsformen zum Invalidieren einer Datengruppe, die ein Schreibloch umfasst, dar;
  • 5I stellt Ausführungsformen zum Verwalten eines Schreiblochs in einer gespeicherten Datengruppe dar;
  • 5J stellt Ausführungsformen von iterativen Paritätssubstitutionsoperationen dar;
  • 6A stellt Ausführungsformen eines Speicherprotokolls einer Speicherdienstschicht dar;
  • 6B stellt weitere Ausführungsformen eines Speicherprotokolls einer Speicherdienstschicht dar;
  • 7 ist ein schematisches Blockdiagramm einer weiteren Ausführungsform eines Systems zur Verwaltung von Speicherfehlern;
  • 8A ist ein schematisches Blockdiagramm einer weiteren Ausführungsform eines Systems zur Verwaltung von Speicherfehlern, das Aufzeichnungsspeicher umfasst;
  • 8B ist ein schematisches Blockdiagramm einer weiteren Ausführungsform eines Systems zur Verwaltung von Speicherfehlern unter Verwendung des Aufzeichnungsspeichers;
  • 9 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zur Verwaltung von Speicherfehlern;
  • 10 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens zur Verwaltung von Speicherfehlern;
  • 11 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zur Wiederherstellung nach einem Speicherfehler;
  • 12 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zur Verwaltung von Speicherfehlern unter Verwendung eines Reihenfolgeprotokolls; und
  • 13 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens zur Verwaltung von Speicherfehlern unter Verwendung von Aufzeichnungsspeicherung.
  • DETAILLIERTE BESCHREIBUNG
  • Eine Datendienstschicht und/oder ein Datendienstmodul können zum Bereitstellen von Speicherdiensten für einen oder mehrere Clients unter Verwendung von einer oder mehreren untergeordneten Speicherressourcen konfiguriert sein. Die Datendienstschicht kann dazu konfiguriert sein, u. a. die Speicherung und den Abruf von Dateneinheiten auf den untergeordneten Speicherressourcen verwalten. Der hierin verwendete Begriff Speicherressource bezieht sich auf irgendein/e/n Einrichtung, Dienst, Modul und/oder Schicht, die/der/das dazu fähig ist, E/A- und/oder Speicheranforderungen zu bedienen. Dementsprechend kann eine Speicherressource Folgendes enthalten, ohne darauf beschränkt zu sein: eine Festplatte (z. B. Magnetspeichermedium), batteriegepufferter Direktzugriffsspeicher (RAM), Festkörper-Speichermedium, Speicherplatten-Anordnung (z. B. Redundant Array of Inexpensive Disks, RAID), Speichernetzwerk (Storage Area Network, SAN), logische Einheit(z. B. SCSI(Small Computer System Interface)-konforme Speicherressource), virtuelle logische Einheit, softwaredefinierte Speicherressourcen, und/oder dergleichen. Eine Speicherressource kann physische Speichermedien umfassen. Eine Dateneinheit bezieht sich auf irgendeine Menge an Daten. Dementsprechend kann eine Dateneinheit enthalten, ohne darauf beschränkt zu sein: einen Block, einen Sektor, ein Segment, eine Seite, ein Paket, eine Aufteilung und/oder dergleichen.
  • In einigen Ausführungsformen verwaltet die Datendienstschicht das Speichern und Abrufen von Dateneinheiten auf einer Speicheranordnung, die eine Vielzahl von Speicherelementen umfasst. Der hierin verwendete Begriff Speicheranordnung bezieht sich auf eine Speicherressource, die zwei oder mehr Speicherelemente umfasst. Eine Speicheranordnung kann enthalten, ohne darauf beschränkt zu sein: eine RAID, eine hybride RAID, eine verschachtelte RAID, ein JBOD(Just a Bunch of Disks)-Speichersystem, ein SPAN-Speichersystem, ein BIG-Speichersystem, ein MAID (Massive Array of Idle Drives) und/oder dergleichen. Der hierin verwendete Begriff Speicherelement einer Speicheranordnung kann irgendeine geeignete Speicherressource umfassen, ohne darauf beschränkt zu sein: ein Speichermedium, eine Ebene, einen Chip, einen Kanal, eine Bank, eine Speichereinrichtung, eine Speicherplatte und/oder dergleichen. Die Speicherelemente einer Speicheranordnung können durch eine Anordnungssteuereinrichtung verwaltet werden, die Folgendes enthalten kann, ohne darauf beschränkt zu sein: eine Steuereinrichtung, eine Speichersteuereinrichtung, eine Speicheranordnungssteuereinrichtung, eine Softwareanordnungssteuereinrichtung, eine Hardwareanordnungssteuereinrichtung, eine Speichermaschine, eine RAID-Steuereinrichtung, eine RAID-Speichermaschine, ein RAID-Speichersystem, eine Software-RAID-Steuereinrichtung, eine Hardware-RAID-Steuereinrichtung und/oder dergleichen. Die Anordnungssteuereinrichtung kann dazu konfiguriert sein, „Datengruppen“ auf Speicherelementen der Speicheranordnung zu speichern. Der hierin verwendete Begriff „Datengruppe“ bezieht sich auf eine Ansammlung von zwei oder mehr Dateneinheiten, die zur Speicherung auf unterschiedlichen jeweiligen Speicherelementen einer Speicheranordnung konfiguriert sind. In einigen Ausführungsformen können sich die Dateneinheiten einer Speicheranordnung von Dateneinheiten eines übergeordneten Speicherclients unterscheiden (z. B. können die Dateneinheiten der Speicheranordnung einer Speichergranularität der darunterliegenden Speicherelemente der Speicheranordnung entsprechen). Die Dateneinheiten einer Speicheranordnungsdatengruppe können deshalb Speicherelementblöcken, -seiten, -sektoren, -paketen, -segmenten und/oder anderen Speicherorten der Speicherelemente der Speicheranordnung entsprechen.
  • In einigen Ausführungsformen ist die Anordnungssteuereinrichtung dazu konfiguriert, Datengruppen auf zwei oder mehreren unterschiedlichen Speicherelementen der Speicheranordnung zu speichern. Die Steuereinrichtung kann ferner dazu konfiguriert sein, Datengruppen redundant zu speichern, indem u. a. Datengruppen auf zwei oder mehreren unterschiedlichen Speicherelementen gespiegelt werden. Alternativ oder zusätzlich kann die Anordnungssteuereinrichtung ferner dazu konfiguriert sein, Anordnungsmetadaten zu verwalten, die Datengruppen betreffen, die auf die Speicheranordnung geschrieben werden. Der hierin verwendete Begriff „Anordnungsmetadaten“ bezieht sich auf irgendwelche, eine Datengruppe betreffende Metadaten, die auf die Speicheranordnung geschrieben werden, und können, ohne darauf beschränkt zu sein, Folgendes enthalten: Daten, die zur Validierung der Integrität von Daten konfiguriert sind, die auf der Speicheranordnung gespeichert sind (und/oder aus den Speicherelementen gelesen werden), wie etwa ein Hash-Wert, Paritätsdaten, ein Digest, eine Signatur, eine Prüfsumme und/oder dergleichen; Fehlerdetektionsmetadaten zum Identifizieren von Fehler(n) in gespeicherten Datengruppen; Fehlerkorrekturmetadaten zum Korrigieren von Fehler(n) in gespeicherten Datengruppen (z. B. Fehlerkorrektur-Code(ECC, Error-Correcting Code)-Metadaten, wie etwa eine ECC-Verschlüsselung, ECC-Symboldaten, und/oder dergleichen); Rekonstruktionsdaten zum Rekonstruieren von Teilen von gespeicherten Datengruppen (z. B. Paritätsrekonstruktionsdaten); und/oder dergleichen. Dementsprechend kann das Schreiben einer Datengruppe auf die Speicheranordnung Folgendes umfassen: a) Erzeugen von Anordnungsmetadaten für die Datengruppe und b) Durchführen einer Vielzahl von Schreiboperationen auf unterschiedlichen Speicherelementen der Speicheranordnung. Ein Fehler in einer oder mehreren der Schreiboperationen kann das Speichern einer „unvollständigen“ oder „beschädigten“ Datengruppe auf der Speicheranordnung zur Folge haben. Der hierin verwendete Begriff „unvollständige Datengruppe“ bezieht sich auf eine Datengruppe, die teilweise, aber nicht vollständig, auf die Speicheranordnung geschrieben ist. Eine unvollständige Datengruppe kann sich auf das Schreiben nur eines Teils einer Datengruppe auf die Speicheranordnung beziehen, so dass andere Teile der Datengruppe nicht auf die Speicheranordnung geschrieben werden. Das Schreiben einer unvollständigen Datengruppe kann das Schreiben einer Teilmenge der Dateneinheiten einer Datengruppe auf die Speicheranordnung umfassen (z. B. das Schreiben einer oder mehrerer Dateneinheiten der Datengruppe, ohne eine oder mehrere andere Dateneinheiten der Datengruppe auf die Speicheranordnung zu schreiben). Alternativ oder zusätzlich kann sich eine unvollständige Datengruppe auf das Schreiben der Dateneinheiten einer Datengruppe, ohne dass die entsprechenden Anordnungsmetadaten geschrieben werden, beziehen. Dementsprechend kann eine „unvollständige“ Datengruppe als eine Datengruppe bezeichnet werden, die ein „Schreibloch“ umfasst. Wie oben offenbart, kann sich ein Schreibloch aus einem „ungültigen Abschaltungs“-Zustand ergeben. Der hierin verwendete Begriff “ungültiger Abschaltungs”-Zustand bezieht sich auf irgendein/e Fehlschlagen und/oder Unterbrechung einer Speicheroperation der Speicheranordnung und kann, ohne darauf beschränkt zu sein, enthalten: Stromverlust, Stromunterbrechung, Stromabweichung, einen Absturzzustand, einen Fehlerzustand, eine Unterbrechung, einen Absturz, einen Fehler, einen Hardwarefehler, einen Softwarefehler und/oder irgendeine andere Bedingung, außer einem sauberen Abschalten der Speicheranordnung und/oder einer ihrer Komponenten. Ein ungültiger Abschaltungszustand kann einem ungültigen Abschaltungszustand der Speicheranordnung (z. B. die Speicheranordnungssteuereinrichtung), einer ungültigen Abschaltung eines Speicherelements, einer ungültigen Abschaltung einer Kommunikationsinfrastruktur der Speicheranordnung, einer ungültigen Abschaltung eines übergeordneten Speicherclients, einer ungültigen Abschaltung eines Rechensystems, das die Speicheranordnung enthält, eines Speicherelements und/oder übergeordneten Speicherclients und/oder dergleichen entsprechen.
  • Eine Speicherdienstschicht kann dazu konfiguriert sein, Schreiblöcher zu identifizieren, indem sie u. a. Integritätsdaten speichert, die auf der Speicheranordnung durchgeführte Speicheroperationen betreffen. Die Integritätsdaten können von durch die Speicheranordnung verwalteten Anordnungsmetadaten separat und/oder unabhängig sein. Der hierin verwendete Begriff „Integritätsdaten“ kann sich auf irgendwelche Informationen, Daten und/oder Bezugsgrößen, die dazu konfiguriert sind, die Integrität von Daten, die in eine Speicheranordnung geschrieben sind (und/oder aus der Speicheranordnung gelesen werden), zu verifizieren, beziehen und kann, ohne darauf beschränkt zu sein, Folgendes enthalten: einen Hash-Wert, einen Digest-Wert, eine Signatur, eine Prüfsumme und/oder dergleichen. Die Integritätsdaten können dazu konfiguriert sein, die Integrität von einer Menge von Dateneinheiten und/oder Datensegmenten zu validieren, die in die Speicheranordnung als Datengruppe geschrieben werden. In einigen Ausführungsformen sind die Integritätsdaten dazu konfiguriert, für die Validierung von jeweiligen Dateneinheiten und/oder Datensegmenten der Datengruppe zu sorgen. Wie hierin noch näher offenbart, kann eine Speicherdienstschicht Integritätsdaten verwenden, die gespeicherten Datengruppen entsprechen, um Schreiblöcher innerhalb der Datengruppen zu identifizieren. Die Speicherdienstschicht kann dazu konfiguriert sein, vorhandene Wiederherstellungsoperationen der Speicheranordnung zu ersetzen, aufzuheben und/oder ihnen zuvorzukommen.
  • Hierin werden Ausführungsformen einer Vorrichtung zur Verwaltung von Speicherfehlern, wie etwa Schreiblöchern in auf einer Speicheranordnung gespeicherten Datengruppen, offenbart. Die Vorrichtung kann eine Speicherdienstschicht umfassen, die dazu konfiguriert ist, Integritätsmetadaten zu erzeugen, die Daten entsprechen, welche durch eine Speichermaschine innerhalb jeweiliger Datengruppen gespeichert werden. Die Speichermaschine kann dazu konfiguriert sein, die Datengruppen mit Rekonstruktionsmetadaten auf einer Speicheranordnung zu speichern. Die Vorrichtung kann ferner einen Validierungsverwalter der Speicherdienstschicht enthalten, der dazu konfiguriert ist, sich nach einer ungültigen Abschaltung der Speicheranordnung unter Verwendung der Integritätsmetadaten wiederherzustellen, wobei die Speicherdienstschicht dazu konfiguriert ist, eine Wiederherstellungsoperation der Speichermaschine unter Verwendung des Validierungsverwalters zu ersetzen. In einigen Ausführungsformen ist die Speichermaschine dazu konfiguriert, Datengruppen in eine Vielzahl von unterschiedlichen Speichereinrichtungen der Speicheranordnung zu schreiben, und die Wiederherstellungsoperation der Speichermaschine ist dazu konfiguriert, zu bestimmen, ob die ungültige Abschaltung eine teilweise Speicherung einer Datengruppe auf der Speicheranordnung zur Folge hat, und wobei der Validierungsverwalter dazu konfiguriert ist, die Wiederherstellungsoperation der Speichermaschine zu ersetzen, indem er feststellt, ob die ungültige Abschaltung eine unvollständige Speicherung einer Datengruppe auf der Speicheranordnung unter Verwendung der Integritätsmetadaten zur Folge hat. Der Validierungsverwalter kann dazu konfiguriert sein, eine auf der Speicheranordnung gespeicherte unvollständige Datengruppe zu identifizieren als Reaktion auf eine Diskrepanz zwischen Integritätsmetadaten, die für die Datengruppe erzeugt wurden, und Integritätsmetadaten, die von Daten, die aus der Speicheranordnung gelesen wurden, abgeleitet wurden.
  • Die Vorrichtung kann ferner ein Wiederherstellungsmodul umfassen, das dazu konfiguriert ist, mindestens einen Teil einer unvollständigen Datengruppe, die durch den Validierungsverwalter identifiziert wurde, zu invalidieren. Die Wiederherstellungsoperation der Speichermaschine kann das Validieren einer Menge von gespeicherten Datengruppen unter Verwendung der Rekonstruktionsmetadaten, die mit den jeweiligen Datengruppen auf der Speicheranordnung gespeichert sind, umfassen. Der Validierungsverwalter kann dazu konfiguriert sein, die Wiederherstellungsoperation der Speichermaschine durch Validieren einer Teilmenge der auf der Speicheranordnung gespeicherten Datengruppen zu ersetzen. In einigen Ausführungsformen umfasst die Vorrichtung ein Protokollspeichermodul, das dazu konfiguriert ist, Daten an einen Anfügungspunkt eines Speicherprotokolls auf der Speicheranordnung unter Verwendung der Speichermaschine zu schreiben. Das Verifizierungsmodul kann dazu konfiguriert sein, als Reaktion auf die ungültige Abschaltung eine dem Anfügungspunkt des Speicherprotokolls entsprechende Datengruppe zu validieren.
  • In einigen Ausführungsformen umfasst die Vorrichtung ein Koordinationsmodul, das dazu konfiguriert ist, die Speichermaschine anzuweisen, die Wiederherstellung nach der ungültigen Abschaltung der Speicheranordnung an die Speicherschicht zu delegieren. Das Koordinationsmodul kann dazu konfiguriert sein, die Speichermaschine davon abzuhalten, eine Resynchronisationsoperation als Reaktion auf die ungültige Abschaltung zu implementieren, wobei die Resynchronisationsoperation umfasst, dass die Speichermaschine Datengruppen, die auf der Speicheranordnung gespeichert sind, unter Verwendung der durch die Speichermaschine mit den Datengruppen gespeicherten Rekonstruktionsmetadaten validiert.
  • Offenbart werden hierin Ausführungsformen eines Systems zur Verwaltung von Speicherfehlern. Das offenbarte System kann eine Speicherschicht, die Integritätsdaten speichert, die Daten entsprechen, die innerhalb von jeweiligen Datenstreifen eines RAID-Speichersystems gespeichert werden, wobei die gespeicherten Datenstreifen durch das RAID-Speichersystem erzeugte Paritätsrekonstruktionsdaten umfassen; ein Absturzwiederherstellungsmodul der Speicherschicht, das Datenstreifen des RAID-Speichersystems unter Verwendung der gespeicherten Integritätsdaten als Reaktion auf eine ungültige Abschaltung des RAID-Speichersystems validiert; und ein Speicherkoordinationsmodul der Speicherschicht, das dazu konfiguriert ist, anstelle des RAID-Speichersystem eine die ungültige Abschaltung betreffende Absturzwiederherstellung durchzuführen, umfassen.
  • Das Speicherkoordinationsmodul kann dazu konfiguriert sein, die Durchführung einer Absturzwiederherstellungsoperation durch das RAID-Speichersystem als Reaktion auf die ungültige Abschaltung zu blockieren. In einigen Ausführungsformen ist das Speicherkoordinationsmodul dazu konfiguriert, das RAID-Speichersystem zu benachrichtigen, dass die Speicherschicht dazu konfiguriert ist, Datenstreifen-Schreibfehler zu identifizieren, wobei das Absturzwiederherstellungsmodul dazu konfiguriert ist, einen Datenstreifen-Schreibfehler zu identifizieren durch Vergleichen von gespeicherten Integritätsdaten des Datenstreifens mit Integritätsdaten, die aus den aus dem RAID-Speichersystem gelesenen gespeicherten Datenstreifen erzeugt werden. Das RAID-Speichersystem kann dazu konfiguriert sein, eine Resynchronisationsoperation als Reaktion auf die ungültige Abschaltung zu implementieren, und das Speicherkoordinationsmodul kann dazu konfiguriert sein, als Reaktion auf die ungültige Abschaltung eine Nachricht an das RAID-Speichersystem zu übertragen, um das RAID-Speichersystem davon abzuhalten, die Resynchronisationsoperation zu implementieren.
  • Die Integritätsdaten eines gespeicherten Datenstreifens können eine Integritätsbezugsgröße umfassen, die jeder aus einer Vielzahl von Dateneinheiten innerhalb des gespeicherten Datenstreifens entspricht. Das Absturzwiederherstellungsmodul kann dazu konfiguriert sein, eine jeweilige Dateneinheit der Dateneinheiten zu invalidieren als Reaktion auf eine Diskrepanz zwischen der gespeicherten Integritätsbezugsgröße der jeweiligen Dateneinheit und einer aus der jeweiligen Dateneinheit innerhalb des gespeicherten Datenstreifens abgeleiteten Integritätsbezugsgröße, und eine oder mehrere andere Dateneinheiten innerhalb des gespeicherten Datenstreifens erneut zu schreiben als Reaktion auf die Validierung der gespeicherten Integritätsdaten der einen oder mehreren anderen Dateneinheiten.
  • Offenbart werden hierin Ausführungsformen eines Verfahrens zur Verwaltung von Speicherfehlern. Das offenbarte Verfahren kann Folgendes umfassen: das Anfügen von Datengruppen an ein Speicherprotokoll, das auf einer Speicheranordnung unter Verwendung einer Speicheranordnungssteuereinrichtung geführt wird, wobei die Speicheranordnungssteuereinrichtung dazu konfiguriert ist, die Datengruppen innerhalb von jeweiligen Datenstreifen auf der Speicheranordnung zu speichern, wobei die Datenstreifen durch die Speicheranordnungssteuereinrichtung erzeugte Rekonstruktionsmetadaten umfassen, Speichern von Prüfsummenwerten, die den Datengruppen entsprechen, die innerhalb der jeweiligen Datenstreifen auf der Speicheranordnung gespeichert sind, und einer Absturzwiederherstellungsoperation der Speicheranordnungssteuereinrichtung zuvorkommen als Reaktion auf eine ungültige Abschaltung der Speicheranordnung, wobei das der Absturzwiederherstellungsoperation Zuvorkommen das Validieren eines Datenstreifens am Kopf des Speicherprotokolls auf der Speicheranordnung unter Verwendung der gespeicherten Prüfsummenwerte, die den innerhalb der jeweiligen Datenstreifen auf der Speicheranordnung gespeicherten Datengruppen entsprechen, umfasst.
  • Ausführungsformen des offenbarten Verfahrens können ferner das Identifizieren des Datenstreifens am Kopf des Speicherprotokolls als Reaktion auf die ungültige Abschaltung und das Vergleichen eines von dem identifizierten Datenstreifen abgeleiteten Prüfsummenwertes mit dem gespeicherten Prüfsummenwert, der dem identifizierten Datenstreifen entspricht, umfassen. In einigen Ausführungsformen enthält das Verfahren ferner das Invalidieren des gespeicherten Datenstreifens als Reaktion auf eine Diskrepanz zwischen dem Prüfsummenwert, der von dem identifizierten Datenstreifen abgeleitet wurde, und dem gespeicherten Prüfsummenwert. Der Datenstreifen am Kopf des Speicherprotokolls kann eine Vielzahl von auf jeweilige Adressen eines logischen Adressraums abgebildeten Datenblöcken umfassen. Das Verfahren kann ferner das Invalidieren von Assoziationen zwischen dem Datenstreifen und den jeweiligen Adressen als Reaktion auf eine Diskrepanz zwischen dem von dem identifizierten Datenstreifen abgeleiteten Prüfsummenwert und dem gespeicherten Prüfsummenwert umfassen.
  • Das Speichern der Prüfsummenwerte kann das Anfügen von die Prüfsummenwerte umfassenden Abbildungseinträgen an ein Metadatenprotokoll, das auf einer Speichereinrichtung geführt wird, die von der Speicheranordnung unabhängig ist, umfassen, wobei die Abbildungseinträge Datenblöcke innerhalb der jeweiligen Datenstreifen mit jeweiligen logischen Adressen eines logischen Adressraums assoziieren. Alternativ kann das Speichern des Prüfsummenwertes eines Datenstreifens das Einschließen des Prüfsummenwertes in die Datengruppe, die innerhalb des Datenstreifens auf der Speicheranordnung gespeichert ist, umfassen. Die gespeicherten Prüfsummenwerte der Datenstreifen können jeweilige Prüfsummenwerte für jedes aus einer Vielzahl von Datensegmenten innerhalb der jeweiligen Datenstreifen umfassen. Das Validieren des identifizierten Datenstreifens kann das Validieren der jeweiligen Prüfsummenwerte der Datensegmente innerhalb des identifizierten Datenstreifens umfassen. Das Verfahren kann ferner das Invalidieren eines ersten Datensegments innerhalb des identifizierten Datenstreifens als Reaktion auf eine das erste Datensegment betreffende Prüfsummendiskrepanz enthalten, und das erneute Schreiben eines zweiten Datensegments innerhalb des identifizierten Datenstreifens auf einen unterschiedlichen Datenstreifen auf der Speicheranordnung als Reaktion auf das Validieren des zweiten Datensegments unter Verwendung des gespeicherten Prüfsummenwertes des zweiten Datensegments.
  • 1A ist ein schematisches Blockdiagramm einer Ausführungsform eines Systems 100A, das eine Speicheranordnung 110 umfasst. Die Speicheranordnung 110 umfasst eine Vielzahl von Speicherelementen 112A–N. Die Anordnungssteuereinrichtung 120 kann dazu konfiguriert sein, die Speicheranordnung 110 betreffende Speicheroperationen zu verwalten, welche das Verwalten von Datenspeicherungs- und/oder Abrufoperationen auf den jeweiligen Speicherelementen 112A–N umfassen kann. In einer Ausführungsform umfasst die Speicheranordnung 110 ein RAID-Speichersystem. Die Anordnungssteuereinrichtung 120 kann deshalb eine Software-RAID-Steuereinrichtung, eine Hardware-RAID-Steuereinrichtung, eine RAID-Speichermaschine, einen RAID-Speichertreiber, einen RAID-Speicherdienst und/oder dergleichen umfassen.
  • Wie oben offenbart, können die Speicherelemente 112A–N jeweilige Speichereinrichtungen, Speicherplatten, Speicherkanäle, Speichermedien, jeweilige Speicherebenen und/oder einen Chip eines Speichermediums, von Speicherkanälen, Speicherbanken und/oder dergleichen enthalten. Die Speicherelemente 112A–N können jeweilige Speichermedien 114 umfassen, die Speicherorte 115 umfassen, welche in der Lage sind, jeweilige Dateneinheiten zu speichern, wie hierin offenbart. In einigen Ausführungsformen umfassen die Speicherelemente 112A–N jeweilige Speicherelementsteuereinrichtungen 113A–N, die u. a. dazu konfiguriert sind, Datenspeicherungs- und/oder Abrufoperationen auf den Speicherorten 115 zu verwalten.
  • In einigen Ausführungsformen ist die Speicheranordnung 110 dazu konfiguriert, Speicherdienste über u. a. eine Schnittstelle 111 bereitzustellen. Die Schnittstelle 111 der Speicheranordnung 110 kann Folgendes enthalten, ohne darauf beschränkt zu sein: eine Speicherschnittstelle, eine Blockspeicherschnittstelle, eine Blockspeichereinrichtungsschnittstelle, eine Speichersystemschnittstelle, eine RAID-Speicherschnittstelle, eine RAID-Speichermaschine, eine Objektspeicherschnittstelle, eine direkte Dateischnittstelle, eine Datenbankspeicherschnittstelle, eine Schlüsselwert-Speicherschnittstelle, eine Speichermaschine, eine Netzwerkspeicherprotokollschnittstelle, eine kundenspezifische Schnittstelle, einen Treiber, eine Bibliothek, eine Anwendungsprogrammierschnittstelle (API, Application Programming Interface) und/oder dergleichen. Die Speicheranordnung 110 kann einen Speicheradressraum 116 umfassen, der dazu konfiguriert ist, u. a. für eine Referenzierung von Speicherressourcen der Speicheranordnung 110 zu sorgen. Der Speicheradressraum 116 kann Speicheradressen umfassen, die jeweiligen Speicherorten 115 der jeweiligen Speicherelemente 112A–N entsprechen. Alternativ oder zusätzlich kann der Speicheradressraum 116 Speicheradressen umfassen, die dazu konfiguriert sind, Datengruppen 130 (und/oder Offsets innerhalb von Datengruppen 130) zu referenzieren, die auf der Speicheranordnung 110 gespeichert sind, wie hierin näher offenbart.
  • Das System 100A kann ferner eine Speicherdienstschicht 102 umfassen, die dazu konfiguriert ist, Datenspeicherungs- und/oder Abrufoperationen auf der Speicheranordnung 110 (unter Verwendung eines Koordinationsmoduls 101) durchzuführen. Die Speicherdienstschicht 102 (und/oder deren Komponenten) kann als Hardwarekomponente einer Recheneinrichtung, wie etwa eine Schaltung, eine integrierte Schaltung, eine anwendungsspezifische integrierte Schaltung (Application-Specific Integrated Circuit, ASIC), programmierbare Hardware, programmierbares logisches Array (Programmable Logic Array, PLA), feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), Steuereinrichtungshardware, Speichersteuereinrichtungshardware und/oder dergleichen ausgeführt sein. Dementsprechend kann in einigen Ausführungsformen die Speicheranordnung 102 als Speicherschaltung, Speicherdienstschaltung, Speicherhardware und/oder dergleichen bezeichnet werden. Alternativ oder zusätzlich können Teile der Speicherdienstschicht 102 (und/oder deren Komponenten) als Anweisungen ausgeführt sein, die auf einem maschinenlesbaren Speichermedium gespeichert sind, wie etwa eine magnetische Festplatte, Festkörper-Speichereinrichtung, nichtflüchtiges Speichermedium, flüchtiges Speichermedium, optische Speichereinrichtung und/oder dergleichen. In einigen Ausführungsformen sind Teile der Speicherdienstschicht 102 als Anweisungen verkörpert, die zur Ausführung durch spezifische Arten von Hardware, wie etwa Firmware, ein FPGA, ein FPGA-Bitstream, PLA-Konfigurationsdaten und/oder dergleichen konfiguriert sind. Dementsprechend umfassen in einigen Ausführungsformen Teile der Speicherdienstschicht 102 (und/oder deren Komponenten) Nur-Lese-Daten, die auf einer jeweiligen Hardwareeinrichtung (z. B. auf einem Nur-Lese-Speicher (ROM), löschbaren programmierbaren Nur-Lese-Speicher (Erasable Programmable Read Only Memory, EPROM) und/oder dergleichen) gespeichert sind. Die Anweisungen der Speicherdienstschicht 102 können durch eine Maschine ausgeführt und/oder interpretiert werden, um hierin offenbarte Funktionalität zu implementieren. Teile der Speicherdienstschicht 102 (und/oder deren Komponenten) können Folgendes umfassen: ein Kernelebenenmodul, ein Benutzerraummodul, ein Treiberebenenmodul, einen Treiber, eine E/A-Steuereinrichtung, einen E/A-Verwalter, eine E/A-Schicht, einen E/A-Dienst, einen Speichertreiber, einen Speicherverwalter, eine Speicherschicht, eine softwaredefinierte Speicherschicht, ein SCSI-Modul, eine Bibliothek, eine geteilte Bibliothek, eine ladbare Bibliothek, eine Dynamic-Link-Library(DLL)-Bibliothek, einen Gerätetreiber, ein Gerätetreiberschnittstellen(Device Driver Interface, DDI)-Modul, ein Logikgerät(Logical Device Driver, LDD)-Modul, ein Gerätetreiber(Physical Device Driver, PDD)-Modul, ein Windows-Treiber-Foundation(Windows Driver Foundation, WFD)-Modul, ein Benutzermodus-Treiberrahmen(User-Mode Driver Framework, UMDF)-Modul, ein Kernelmodus-Treiberrahmen(Kernel-Mode Driver Framework, KMDF)-Modul, ein E/A-Kit-Modul, ein Modul für vereinheitlichte Schnittstellen (Uniform Driver Interface, UDI), Speichereinrichtungsschnittstellen(Storage Device Interface, SDI)-Modul, ein Softwareentwicklungskit (Software Development Kit, SDK) und/oder dergleichen.
  • Die Speicherdienstschicht 102 kann einen logischen Adressraum 104 umfassen, der eine Vielzahl von logischen Adressen umfasst. Wie hierin näher offenbart, kann die Speicherdienstschicht 102 den logischen Adressraum 104 betreffende Speicheroperationen unter Verwendung einer oder mehrerer Speicherressourcen, wie etwa die Speicheranordnung 110, durchführen. Die Speicherdienstschicht 102 kann die Daten des logischen Adressraums betreffende Anforderungen über u. a. die Schnittstelle 111 der Speicheranordnung 110 ausgeben. Die Speicherdienstschicht 102 kann dazu konfiguriert sein, logische Adressen des logischen Adressraums 104 betreffende Speicheranforderungen unter Verwendung der Speicheranordnung 110 zu bedienen. Die Speicherdienstschicht 102 kann ferner eine Übersetzungsschicht 105 umfassen, die dazu konfiguriert ist, logische Adressen des logischen Adressraums 104 mit Speicherorten, wie etwa Speicheradressen des Speicheradressraums 116, zu assoziieren. Die Übersetzungsschicht 105 kann dazu konfiguriert sein, Daten einer jeweiligen logischen Adresse auf eine Speicheradresse der Speicheranordnung 110 abzubilden. Dementsprechend kann die Übersetzungsschicht 105 der Speicherdienstschicht 102 Kontextmetadaten führen, die Daten betreffen, die auf der Speicheranordnung 110 gespeichert sind.
  • Die Anordnungssteuereinrichtung 120 kann dazu konfiguriert sein, an die Speicheranordnung 110 gerichtete Schreibanforderungen zu bedienen, u. a. durch Schreiben von Daten der Anforderungen (Daten 140) auf die Speicherelemente 112A–N. Die Anordnungssteuereinrichtung 120 kann dazu konfiguriert sein, Daten in jeweiligen Datengruppen 130 auf der Speicheranordnung 110 zu speichern. Der hierin verwendete Begriff „Datengruppe“ 130 bezieht sich auf eine Ansammlung von zwei oder mehreren Dateneinheiten 132, die zur Speicherung auf unterschiedlichen jeweiligen Speicherelementen 112A–N konfiguriert sind. Die Dateneinheiten 132 können zur Speicherung innerhalb jeweiliger Speicherorte 115 der Speicherelemente 112A–N konfiguriert sein (z. B. können die Dateneinheiten 132 gemäß den darunterliegenden Speicherblöcken, Seiten und/oder Segmenten der Speicherelemente 112A–N dimensioniert sein). Dementsprechend kann das Schreiben einer Datengruppe 130 in die Speicheranordnung 110 eine Vielzahl von separaten Schreiboperationen auf unterschiedlichen jeweiligen Speicherelementen 112A–N umfassen. Wie in 1A veranschaulicht, kann die Anordnungssteuereinrichtung 120 dazu konfiguriert sein, Datengruppen 130 zu schreiben, die N Dateneinheiten 132 (z. B. Dateneinheiten 132A–N) umfassen, so dass jede Dateneinheit 132A–N in ein unterschiedliches jeweiliges Speicherelement 112A–N geschrieben wird. Die Anordnungssteuereinrichtung 120 kann die Dateneinheit 132A in das Speicherelement 112A schreiben, die Dateneinheit 132B in das Speicherelement 112B, und so weiter (z. B. Dateneinheit 132N in das Speicherelement 112N schreiben). Die Anordnungssteuereinrichtung 120 kann ferner dazu konfiguriert sein, die Datengruppen 130 redundant zu speichern, indem u. a. mehrere Kopien der Datengruppe 130 (und/oder eine jeweilige Dateneinheit 132 davon) in unterschiedliche Speicherelemente 112A–N und/oder unterschiedliche Speicherressourcen (nicht gezeigt) geschrieben werden. Obgleich jeweilige Ausführungsformen von Datengruppen 130 hierin beschrieben werden, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte zur Verwendung mit Datengruppen 130 eingerichtet werden, die irgendeine Anzahl von Dateneinheit(en) 132 umfassen, die zum Speichern in irgendeiner geeigneten Anordnung auf den Speicherelementen 112A–N der Speicheranordnung 110 konfiguriert sind.
  • In einigen Ausführungsformen ist die Anordnungssteuereinrichtung 120 dazu konfiguriert, Anordnungsmetadaten 134, welche die auf der Speicheranordnung 110 gespeicherten Datengruppen 130 betreffen, zu verwalten. Wie oben offenbart, beziehen sich Anordnungsmetadaten 134 auf irgendwelche eine Datengruppe 130 betreffenden Metadaten, die auf die Speicheranordnung 110 geschrieben werden, und können Folgendes enthalten, ohne darauf beschränkt zu sein: Daten, die zum Validieren der Integrität von auf der Speicheranordnung gespeicherten (und/oder aus den Speicherelementen gelesenen) Daten konfiguriert sind, wie etwa ein Hash-Wert, ein Digest, eine Signatur, eine Prüfsumme, und/oder dergleichen; Fehlerdetektionsmetadaten zum Identifizieren von Fehler(n) in gespeicherten Datengruppen 130; Fehlerkorrekturmetadaten zum Korrigieren von Fehler(n) in einer gespeicherten Datengruppe 130; Rekonstruktionsdaten zum Rekonstruieren von Teilen einer gespeicherten Datengruppe 130 (z. B. Paritätsrekonstruktionsdaten); und/oder dergleichen. Die Anordnungssteuereinrichtung 120 kann dazu konfiguriert sein, Anordnungsmetadaten 134 einer Datengruppe 130 innerhalb der Datengruppe 130 selbst (z. B. als Dateneinheit 132 der Datengruppe 130) zu speichern. Alternativ kann die Anordnungssteuereinrichtung 120 Anordnungsmetadaten 134 einer Datengruppe 130 an einen separaten Speicherort innerhalb der Speicheranordnung 110 und/oder in eine andere Speicherressource schreiben.
  • In der Ausführungsform der 1A ist die Anordnungssteuereinrichtung 120 zum Schreiben von Anordnungsmetadaten 134 als Dateneinheit 132N innerhalb der Datengruppe 130 konfiguriert. Dementsprechend kann eine Datengruppe 130 Dateneinheiten 132A–N – 1 umfassen, die zum Speichern von Daten einer Schreibanforderung (Daten 140) verwendet werden, und andere Dateneinheiten zum Speichern von Anordnungsmetadaten 134 (z. B. Dateneinheit 132N). In einigen Ausführungsformen umfassen die Anordnungsmetadaten 134 Paritätsrekonstruktionsdaten, die aus dem Inhalt der anderen N – 1 Dateneinheiten 132 der Datengruppe 130 abgeleitet wurden (z. B. können die Anordnungsmetadaten 134 Paritätsrekonstruktionsdaten umfassen, die aus dem Inhalt der Dateneinheiten 132A132N – 1 abgeleitet wurden). Die Anordnungsmetadaten 134 der Dateneinheit 132N können durch eine XOR-Operation auf den Inhalten der Dateneinheiten 132A–N – 1 berechnet werden (z. B. können die Anordnungsmetadaten 134 als das Produkt aus: Dateneinheit 132AXOR Dateneinheit 132BXOR Dateneinheit 132C ... XOR Dateneinheit 132N–1 erzeugt werden). Die Offenbarung ist in dieser Hinsicht jedoch nicht beschränkt, und kann für die Verwendung mit einer Speicheranordnung 110 eingerichtet werden, die dazu konfiguriert ist, Datengruppen 130 und/oder Anordnungsmetadaten 134 an/in irgendeinem/r geeigneten Speicherort und/oder Anordnung zu speichern. In einigen Ausführungsformen kann die Anordnungssteuereinrichtung 120 dazu konfiguriert sein, Anordnungsmetadaten 134 zur Speicherung in einer Vielzahl der Dateneinheiten 132 einer Datengruppe 130 zu erzeugen (z. B. zwei oder mehr Dateneinheiten 132 der Datengruppe 130 können verwendet werden, um SAI-Daten 134 der Datengruppe zu speichern). Alternativ oder zusätzlich kann die Anordnungssteuereinrichtung 120 dazu konfiguriert sein, SAI-Daten 134 in unterschiedlichen Dateneinheiten 132A–N einer Datengruppe 130 zu speichern (z. B. die Position der SAI-Daten 134 in jeweiligen Datengruppen 130 zu rotieren), SAI-Daten 134 an/in einem/r separaten Speicherort und/oder Speicherressource zu speichern und/oder dergleichen. Dementsprechend kann die Speicheranordnung 110 dazu konfiguriert sein, irgendeinen geeigneten RAID-Level zu implementieren, der irgendeine geeignete Art von Redundanz- und/oder Spiegelungs-Speicherkonfiguration umfasst. Dementsprechend können in einigen Ausführungsformen die Datengruppen 130 RAID-Datenstreifen umfassen und die Anordnungsmetadaten 134 der Datengruppen 130 können RAID-Rekonstruktionsdaten umfassen.
  • Die Anordnungssteuereinrichtung 120 kann Datengruppen 130 in die Speicheranordnung 110 schreiben durch u. a. Ausgeben einer Vielzahl von Schreibanforderungen an die jeweiligen Speicherelemente 112A–N. Wie im schematischen Blockdiagramm 100B der 1B veranschaulicht, schreibt die Speichersteuereinrichtung 120 eine Datengruppe 130, die die Dateneinheiten 132A–N umfasst, durch Ausgabe einer Schreibanforderung 133A an das Speicherelement 112A (um die Dateneinheit 132A in den Speicherort 115A zu schreiben); einer Schreibanforderung 133B an das Speicherelement 112B (um die Dateneinheit 132B an den Speicherort 115B zu schreiben); einer Schreibanforderung 133C an das Speicherelement 112C (um die Dateneinheit 132C an den Speicherort 115C zu schreiben) und so weiter (Schreibanforderung 133N an Speicherelement 112N, um die Anordnungsmetadaten 134 der Dateneinheit 132N an den Speicherort 115N zu schreiben).
  • Die Anordnungssteuereinrichtung 120 kann dazu konfiguriert sein, die Integrität von auf der Speicheranordnung 110 gespeicherten Datengruppen 130 unter Verwendung eines Wiederherstellungsmoduls 122 zu verwalten. Das Wiederherstellungsmodul 122 kann dazu konfiguriert sein, eine oder mehrere Absturzwiederherstellungs- und/oder Datenvalidierungsoperationen zu implementieren, die Folgendes enthalten können, ohne darauf beschränkt zu sein: Resynchronisationsoperationen, um Anordnungsmetadaten 134 von einer oder mehreren gespeicherten Datengruppen 130 zu resynchronisieren, Rettungsoperationen, um die Inhalte von einer oder mehreren Dateneinheiten 132 einer gespeicherten Datengruppe 130 unter Verwendung einer anderen Dateneinheit 132 der gespeicherten Datengruppe 130 und/oder der Anordnungsmetadaten 134 der gespeicherten Datengruppe 130 und dergleichen zu rekonstruieren.
  • Das Wiederherstellungsmodul 122 kann dazu konfiguriert sein, eine gespeicherte Datengruppe 130 zu validieren durch a) Zugreifen auf Daten der gespeicherten Datengruppe 130 (z. B. Dateneinheit 132A–N) und/oder gespeicherte Anordnungsmetadaten 134, und Vergleichen der Zugriffsdaten mit den Anordnungsmetadaten 134 der Datengruppe 130. In der Ausführungsform der 1C kann die Dateneinheit 132N der Datengruppe 130 Anordnungsmetadaten 134 umfassen, die aus den Inhalten anderer Dateneinheiten 132A–N – 1 abgeleitet wurden (z. B. unter Verwendung einer XOR-Operation auf den Dateneinheiten 132A–N – 1, wie hierin offenbart). Das Wiederherstellungsmodul 122 kann die gespeicherte Datengruppe 130 validieren durch a) Zugreifen auf die Dateneinheit 132A–N der Datengruppe 130 (einschließlich der Anordnungsmetadaten 134 der Datengruppe 130), b) Berechnen von Validierungsdaten 136 unter Verwendung der Dateneinheiten 132A–N – 1 (z. B. durch eine XOR-Rechnung auf die Zugriffsdateneinheiten 132A–N – 1, so dass Validierungsdaten 136 = Dateneinheit 132AXOR Dateneinheit 132BXOR Dateneinheit 132C ... XOR Dateneinheit 132N–1) und c) Vergleichen der Validierungsdaten 136 mit den Zugriffsanordnungsmetadaten 134. Das Fehlschlagen der Validierung gibt die Art des Fehlers möglicherweise nicht an, wie etwa welche Dateneinheit(en) 132 ungültige Daten 131 umfassen. Des Weiteren ist die Speicheranordnung 110 möglicherweise unfähig, das Schreibloch adäquat zu behandeln, da die Speicheranordnung 110 keinen Zugriff auf Kontextinformationen hat, die die Datengruppe 130 betreffen, wie etwa die logischen Adressen, die mit den Dateneinheiten 132 der Datengruppe 130 assoziiert sind.
  • Mit Bezug auf das schematische Blockdiagramm 100D der 1D kann die Anordnungssteuereinrichtung 120 dazu konfiguriert sein, eine gespeicherte Datengruppe 130 zu resynchronisieren (unter Verwendung des Wiederherstellungsmoduls 122) durch a) Zugreifen auf die Dateneinheit 132A–N – 1 der gespeicherten Datengruppe 130, b) Ableiten von Ersatzanordnungsmetadaten 138 aus den Inhalten der Zugriffsdaten und c) Schreiben der Ersatzanordnungsmetadaten 138 in die Speicheranordnung 110, was das Ausgeben einer Schreibanforderung 137 zum Schreiben der Ersatzanordnungsmetadaten 138 in ein oder mehrere Speicherelemente 112A–N umfassen kann. Die Schreibanforderung 137 kann dazu konfiguriert sein, die Anordnungsmetadaten 134, die ursprünglich mit der Datengruppe 130 gespeichert wurden, zu ersetzen und/oder zu überschreiben. Dementsprechend können in der Ausführungsform der 1D die Ersatzanordnungsmetadaten 138 dazu konfiguriert sein, die Inhalte des Speicherortes 115N zu überschreiben. Alternativ können die Ersatzanordnungsmetadaten 138 an einen anderen Speicherort geschrieben werden, und die Anordnungssteuereinrichtung 120 kann die Anordnungsmetadaten 134 der gespeicherten Datengruppe 130 auf den anderen Speicherort abbilden. Mit Bezug auf das schematische Blockdiagramm 100E der 1E kann die Anordnungssteuereinrichtung 120 dazu konfiguriert sein, die Inhalte einer der Dateneinheiten 132 einer gespeicherten Datengruppe 130 unter Verwendung einer anderen Dateneinheit 132 der gespeicherten Datengruppe 130 und/oder der Anordnungsmetadaten 134 zu rekonstruieren. In der Ausführungsform der 1E rekonstruiert das Wiederherstellungsmodul 122 die Inhalte einer Dateneinheit 132B durch a) Zugreifen auf andere Dateneinheiten 132A und 132C–N der gespeicherten Datengruppe 130 (einschließlich Anordnungsmetadaten 134 der Dateneinheit 132N) unter Verwendung von jeweiligen Leseanforderungen 135A, 135C–N, b) Erzeugen der Ersatzdaten 138 für die Dateneinheit 132B unter Verwendung der Zugriffsdaten (durch eine XOR-Rechnung, wobei Ersatzdaten 138 der Dateneinheit 132B = Dateneinheit 132AXOR Dateneinheit 132C ... XOR Dateneinheit 132N). Das Wiederherstellungsmodul 122 kann ferner dazu konfiguriert sein, die Ersatzdaten 138 in die Speicheranordnung 110 zu schreiben (durch Ausgabe einer Schreibanforderung 137, wie hierin offenbart). Die Schreibanforderung 137 kann dazu konfiguriert sein, die ursprünglichen Inhalte der Dateneinheit 132B (am Speicherort 115B) zu überschreiben. Alternativ kann die Schreibanforderung 137 dazu konfiguriert sein, die Ersatzdaten 138 an einen anderen Speicherort zu schreiben, wie hierin offenbart. Obgleich die 1C1D jeweilige Ausführungsformen von Wiederherstellungsoperationen der Speicheranordnung 110 darstellen, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte für die Verwendung in einer Speicheranordnung 110 ausgelegt sein, die dazu konfiguriert ist, irgendeine geeignete Art von Absturzwiederherstellungsoperation zu implementieren, die die Datengruppen 130 betrifft, welche in irgendeiner geeigneten Konfiguration gespeichert sind (und/oder mit irgendeiner Art und/oder Konfiguration von Anordnungsmetadaten 134).
  • Noch einmal mit Bezug zurück auf 1B kann das Schreiben einer Datengruppe 130 in die Speicheranordnung 110 das Ausgeben einer Vielzahl von Schreibanforderungen 133A–N an unterschiedliche jeweilige Speicherelemente 112A–N (durch jeweilige Speicherelementsteuereinrichtungen 113A–N) umfassen. Ein Fehler bei der Erledigung einer oder mehrerer Schreibanforderungen 133A–N kann eine Speicherung einer unvollständigen und/oder beschädigten Datengruppe 130 zur Folge haben. Der hierin verwendete Begriff unvollständige Datengruppe 130 bezieht sich auf eine Datengruppe 130, in der eine oder mehrere der Dateneinheiten 132A–N nicht korrekt in ein Speicherelement 112A–N geschrieben wurden (und/oder in der separate Anordnungsmetadaten 134 nicht richtig gespeichert wurden). Dementsprechend kann sich eine unvollständige Datengruppe 130 auf eine Datengruppe 130 beziehen, die ein „Schreibloch“ umfasst. Ein Schreibloch kann sich aus einem Fehler in einer niedrigeren Ebene der Speicheranordnung 110 ergeben, wie etwa ein „stiller“ Fehler, der in einem oder mehreren der Speicherelemente 112A–N vorkommt (und/oder nicht an die Anordnungssteuereinrichtung 120 gemeldet wird). Alternativ oder zusätzlich kann sich ein Schreibloch aus einem ungültigen Abschaltungszustand ergeben. Der hierin verwendete Begriff ungültige Abschaltung kann Folgendes enthalten, ohne darauf beschränkt zu sein: eine ungültige Abschaltung der Speicheranordnung 110, einen Absturz der Speicheranordnung 110, eine ungültige Abschaltung von einem oder mehreren der Speicherelemente 112A–N, ein Absturz von einem oder mehreren der Speicherelemente 112A–N, eine ungültige Abschaltung der Anordnungssteuereinrichtung 120, ein Absturz der Anordnungssteuereinrichtung 120 und/oder dergleichen.
  • In der Ausführungsform der 1B kann eine ungültige Abschaltung während der Ausführung der Schreiboperation 133B (und nach der Erledigung anderer Schreiboperationen 133A und 133C–N) ein Schreibloch in der gespeicherten Datengruppe 130 zur Folge haben. Die Anordnungssteuereinrichtung 120 ist möglicherweise nicht in der Lage, Schreiblochzustände zu detektieren und/oder zu korrigieren. Leseoperationen, die eine ein Schreibloch umfassende gespeicherte Datengruppe 130 betreffen, können eine Wiedergabe von ungültigen und/oder beschädigten Daten zur Folge haben. Des Weiteren können Anordnungswiederherstellungsoperationen 124, die durch die Anordnungssteuereinrichtung 120 implementiert werden, nicht nur bei der Identifizierung von Schreiblöchern versagen, sondern könnten auch beschädigte Daten innerhalb der Speicheranordnung 110 verbreiten. Das Resynchronisieren einer gespeicherten Datengruppe 130, die ein Schreibloch umfasst, kann das Schreiben ungültiger Ersatzanordnungsmetadaten 138 in die Datengruppe 130 zur Folge haben. In ähnlicher Weise kann das Rekonstruieren von Daten einer gespeicherten Datengruppe 130, die ein Schreibloch umfasst, eine zusätzliche Datenbeschädigung innerhalb der gespeicherten Datengruppe 130 zur Folge haben.
  • 1F ist ein schematisches Blockdiagramm einer Ausführungsform eines Systems 100F, das eine Speicherdienstschicht umfasst, die dazu konfiguriert ist, Speicheroperationen einer Speicheranordnung 110 zu verwalten. In der Ausführungsform der 1F tritt eine ungültige Abschaltung (oder ein anderer Fehlerzustand) auf, während die Dateneinheit 132B in das Speicherelement 112B geschrieben wird. Dementsprechend umfasst der Speicherort 115B ungültige Daten 131, und nicht die Inhalte der Dateneinheit 132B. Andere Schreibanforderungen 133A und 133C–N erledigen die Speicherung der Dateneinheit 132A und 132C–N in jeweilige Speicherelemente 112A und 112C–N erfolgreich.
  • Die Speicheranordnung 110 kann den ungültigen Abschaltungszustand detektieren, der das Schreibloch zur Folge hatte, und kann als Reaktion eine oder mehrere Anordnungswiederherstellungsoperationen 124 ausführen, die in nicht einschränkender Weise Folgendes enthalten können: das Resynchronisieren einer oder mehrerer gespeicherter Datengruppen 130, das Wiederherstellen von Daten einer oder mehrerer Datengruppen 130 und/oder dergleichen. Die Anordnungswiederherstellungsoperationen 124 können beträchtliche E/A-Ressourcen verbrauchen und können eine Ausbreitung der Datenbeschädigung innerhalb der Speicheranordnung 110 zur Folge haben. In einigen Ausführungsformen umfassen die Anordnungswiederherstellungsoperationen 124 das Resynchronisieren von allen gespeicherten Datengruppen 130 auf der Speicheranordnung 110. Speicherdienste der Speicheranordnung 110 sind möglicherweise nicht verfügbar, während die Anordnungswiederherstellungsoperationen 124 implementiert werden. In Ausführungsformen, die Speicherelemente 112A–N mit hoher Kapazität umfassen, kann das Resynchronisieren der Speicheranordnung 110 eine beträchtliche Zeitdauer einnehmen und/oder eine große Menge an E/A-Ressourcen verbrauchen. Wie oben offenbart, kann das Resynchronisieren einer gespeicherten Datengruppe 130 Folgendes umfassen: a) Zugreifen auf gespeicherte Daten der Datengruppe 130 einschließlich der ungültigen Daten 131 an dem Speicherort 115B, b) Berechnen von Ersatzanordnungsmetadaten 138 und c) Schreiben der Ersatzanordnungsmetadaten 138 in die Speicheranordnung 110. Dementsprechend können die Ersatzanordnungsmetadaten 138 die ungültigen Daten 131 der Dateneinheit 132B (das Ersetzen der gültigen Anordnungsmetadaten 134) einbringen. In ähnlicher Weise kann eine Operation zum Lesen und/oder Rekonstruieren einer der anderen Dateneinheiten 132A und/oder 132C–N – 1 aufgrund u. a. der Verwendung der beschädigten Daten 131 der Dateneinheit 132B zu einer Rekonstruierung ungültiger Daten führen.
  • Mit Bezug zurück auf 1A kann das System 100A ferner eine Speicherdienstschicht 102 umfassen, die dazu konfiguriert ist, auf die Speicheranordnung 110 über eine Schnittstelle 111 der Speicheranordnung 110 und unter Verwendung eines Koordinationsmoduls 101 zuzugreifen. Die Schnittstelle 111 der Speicheranordnung 110 kann Folgendes enthalten, ohne darauf beschränkt zu sein: eine Speicherschnittstelle, eine Blockspeicherschnittstelle, eine Blockspeichereinrichtungsschnittstelle, eine Speichersystemschnittstelle, eine RAID-Speicherschnittstelle, eine RAID-Speichermaschine, eine Objektspeicherschnittstelle, eine direkte Dateischnittstelle, eine Datenbankspeicherschnittstelle, eine Schlüsselwert-Speicherschnittstelle, eine Speichermaschine, eine Netzwerkspeicherprotokollschnittstelle, eine kundenspezifische Schnittstelle, einen Treiber, eine Bibliothek, eine Anwendungsprogrammierschnittstelle (API, Application Programming Interface) und/oder dergleichen. Die Speicherdienstschicht 102 kann dazu konfiguriert sein, Datenspeicherungs- und/oder Abrufoperationen auf der Speicheranordnung 110 über die Schnittstelle 111 durchzuführen durch u. a. das Ausgeben von Anforderungen, Daten in die Speicheranordnung 110, wie etwa die Daten 140, zu schreiben, das Ausgeben von Anforderungen, Daten aus der Speicheranordnung 110 zu lesen und so weiter.
  • Die Speicherschicht 102 kann ferner einen Validierungsverwalter 106 umfassen, der dazu konfiguriert ist, in die Speicheranordnung 110 geschriebene Daten 140 zu validieren (z. B. innerhalb einer Datengruppe 130 gespeicherte Dateneinheiten 132A–N – 1 zu validieren). Der Validierungsverwalter 106 kann dazu konfiguriert sein, gespeicherte Datengruppen 130 unabhängig von den Anordnungsmetadaten 134 (und/oder anderen Rekonstruktionsinformationen), die durch die Speicheranordnung 110 verwaltet werden, zu validieren. In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, Integritätsdaten 144 entsprechend den Daten 140 zu erzeugen, die in die Speicheranordnung 110 geschrieben werden. Die Speicherdienstschicht 102 kann die Integritätsdaten 144 in die Daten 140, die in die Speicheranordnung 110 geschrieben werden, einschließen, so dass die Integritätsdaten 144 mit den Daten 140 in einer Datengruppe 130 gespeichert sind. Alternativ kann die Speicherschicht 102 dazu konfiguriert sein, die Integritätsdaten 144 in eine separate Speicherressource (nicht gezeigt) zu schreiben. In einigen Ausführungsformen umfassen die Integritätsdaten 144 von den Daten 140 abgeleitete Validierungsinformationen, wie etwa einen Hash-Wert, eine Signatur, eine Prüfsumme und/oder dergleichen. Wie hierin näher offenbart, kann der Validierungsverwalter 106 die Integritätsdaten 144 verwenden, um Schreiblöcher aufgrund von u. a. ungültigen Abschaltungsbedingungen zu identifizieren, die Folgendes enthalten können, ohne darauf beschränkt zu sein: ungültige Abschaltung der Speicherdienstschicht 102, Absturz der Speicherdienstschicht 102, ungültige Abschaltung der Speicheranordnung 110, Absturz der Speicheranordnung 110, ungültige Abschaltung eines oder mehrerer der Speicherelemente 112A–N, Absturz von einem oder mehreren der Speicherelemente 112A–N, ungültige Abschaltung der Anordnungssteuereinrichtung 120, Absturz der Anordnungssteuereinrichtung 120 und/oder dergleichen wie hierin offenbart.
  • Als Reaktion auf das Detektieren einer ungültigen Abschaltung kann der Validierungsverwalter 106 dazu konfiguriert sein, eine oder mehrere die Speicheranordnung 110 betreffende Wiederherstellungsoperationen zu implementieren. Der Validierungsverwalter 106 kann dazu konfiguriert sein, Schreiblöcher in auf der Speicheranordnung 110 gespeicherten Datengruppen 130 effizienter zu identifizieren als die Anordnungssteuereinrichtung 120 und/oder kann beschädigte Daten davon abhalten, sich innerhalb der Speicheranordnung 110 auszubreiten. Die durch den Validierungsverwalter 106 implementierten Wiederherstellungsoperationen können dazu konfiguriert sein, eine oder mehrere Absturzwiederherstellungsoperationen der Speicheranordnung 110 zu ersetzen und/oder dieser/n zuvorzukommen (z. B. eine oder mehrere der Anordnungswiederherstellungsoperationen 124, hierin offenbart, und/oder andere Absturzwiederherstellungsoperationen der Speicheranordnung 110 zu ersetzen und/oder dieser/n zuvorzukommen). In einigen Ausführungsformen ist die Speicherdienstschicht 102 dazu konfiguriert, die Speicheranordnung 110 daran zu hindern, die Anordnungswiederherstellungsoperationen 124 zu implementieren und/oder die Speicheranordnung 110 zu konfigurieren, um eine Absturzwiederherstellung an die Speicherdienstschicht 102 (unter Verwendung eines Koordinationsmoduls 101) zu delegieren. Das Koordinationsmodul 101 kann dazu konfiguriert sein, die Speicheranordnung 110 daran zu hindern, nach der Detektion eines ungültigen Abschaltungszustands ausgewählte Anordnungswiederherstellungsoperationen 124 zu implementieren. Das Koordinationsmodul 101 kann die Speicheranordnung 110 zur Delegierung einer Absturzwiederherstellung an die Speicherdienstschicht 102 über die und/oder unter Verwendung der Schnittstelle 111 der Speicheranordnung 110 konfigurieren, was Folgendes umfassen kann, ohne darauf beschränkt zu sein: Konfigurieren der Speicheranordnung 110 zur Delegierung einer Absturzwiederherstellung an die Speicherdienstschicht 102 über die Schnittstelle 111, Ausgeben eines oder mehrerer Konfigurationsbefehle an die Speicheranordnung 110 über die Schnittstelle 111, Einstellen von Konfigurationsparametern der Speicheranordnung 110 über die Schnittstelle 111 (und/oder eine andere Konfigurationsschnittstelle der Speicheranordnung 110), Übertragen einer Nachricht an die Speicheranordnung 110 über die Schnittstelle 111 und/oder einen anderen Kommunikationskanal, Senden einer Weisung und/oder eines Befehls an die Speicheranordnung 110 über die Schnittstelle 111 und/oder einen weiteren Kommunikationskanal und/oder dergleichen.
  • Wie oben offenbart, kann der Validierungsverwalter 106 dazu konfiguriert sein, Schreiblochzustände auf der Speicheranordnung 110 unter Verwendung von den Datengruppen 130 entsprechenden Integritätsdaten 144 zu identifizieren und zu verwalten. Wie in 1G veranschaulicht, kann der Validierungsverwalter 106 dazu konfiguriert sein, den Daten 140 entsprechende Integritätsdaten 144 zu erzeugen, die in die Speicheranordnung 110 geschrieben werden. Die Integritätsdaten 144 können einen Hash-Code, eine Signatur, eine Prüfsumme, einen Digest und/oder andere Daten entsprechend den Inhalten der Daten 140 (z. B. Inhalten von Dateneinheiten 132A–N – 1) umfassen. In einigen Ausführungsformen sind die Integritätsdaten 144 in einem oder mehreren der Datenblöcke 132A–N – 1 enthalten. In der Ausführungsform der 1G speichert der Validierungsverwalter 106 die Integritätsdaten 144 in der Dateneinheit 132A. Die Integritätsdaten 144 können als separate Dateneinheit 132 gespeichert werden und/oder können in anderen Inhalten der Dateneinheit 132 enthalten sein (können z. B. in einer weiteren Dateneinheit eingebettet sein). Alternativ können die Integritätsdaten 144 an einem separaten Speicherort, wie etwa einem Metadatenprotokoll, gespeichert werden, wie hierin näher offenbart. In der Ausführungsform der 1G können die Integritätsdaten 144 in der Dateneinheit 132A enthalten sein. Die Daten 140, einschließlich der Integritätsdaten 144, können als eine Datengruppe 130 auf die Speicheranordnung 110 geschrieben werden, wie hierin offenbart (z. B. als Reaktion auf eine Schreibanforderung 141 von der Speicherdienstschicht 102).
  • In einigen Ausführungsformen entsprechen die Integritätsdaten 144 Inhalten der Dateneinheiten 132A–N – 1. Dementsprechend können die Integritätsdaten 144 angeben, ob irgendwelche der Dateneinheiten 132A–N – 1 ungültige Daten (z. B. ungültige Daten 131) umfassen. Alternativ können die Integritätsdaten 144 eine Vielzahl von Integritätsbezugsgrößen umfassen, die den jeweiligen Dateneinheiten 132A–N – 1 entsprechen. Die Integritätsdaten 144 können eine der Dateneinheit 132A entsprechende Integritätsbezugsgröße (z. B. eine Prüfsumme der Dateneinheit 132A), eine der Dateneinheit 132B entsprechende Integritätsbezugsgröße und so weiter enthalten. Wie ferner in Verbindung mit 1I offenbart, kann der Validierungsverwalter 106 die jeweilige Integritätsbezugsgröße verwenden, um zu bestimmen, ob gewisse Dateneinheiten 132A–N – 1 gültige Daten umfassen, um die spezifische Position eines Schreiblochs innerhalb einer Datengruppe 130 zu identifizieren und/oder um eine oder mehrere der Dateneinheiten 132A–N zu rekonstruieren.
  • Der Validierungsverwalter 106 kann dazu konfiguriert sein, die in die Speicheranordnung 110 geschriebenen Daten 140 als Reaktion auf das Detektieren eines die Speicheranordnung 110 betreffenden, ungültigen Abschaltungszustands zu validieren. Wie in 1H veranschaulicht, kann das Validieren einer gespeicherten Datengruppe 130 Folgendes umfassen: a) Zugreifen auf die Daten der gespeicherten Datengruppe 130 durch u. a. Ausgeben einer Leseanforderung 143 an die Speicheranordnung 110 (über die Schnittstelle 111 und unter Verwendung des Koordinationsmoduls 101) und b) Vergleichen der der gespeicherten Datengruppe 130 entsprechenden Integritätsdaten 144 mit den Zugriffsdaten (z. B. Inhalte der Dateneinheiten 132A132N – 1). Der ungültige Abschaltungszustand kann ein Schreibloch in der gespeicherten Datengruppe 130 zur Folge gehabt haben, so dass die Inhalte der Dateneinheit 132B nicht in die Speicheranordnung 110 geschrieben wurden (und/oder während der Schreiboperation beschädigt wurden). Dementsprechend kann die gespeicherte Datengruppe 130, auf die von der Speicheranordnung 110 zugegriffen wurde, anstelle der ursprünglichen Inhalte der Dateneinheit 132B ungültige Daten 131 umfassen. Deshalb werden die aus der Dateneinheit 132A extrahierten Integritätsdaten 144 nicht den Zugriffsdaten entsprechen, und der Validierungsverwalter 106 kann bestimmen, dass die gespeicherte Datengruppe 130 ein Schreibloch umfasst.
  • Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, eine oder mehrere Abschwächungsoperationen (Schreiblochwiederherstellungsoperationen) als Reaktion auf das Detektieren eines Schreiblochs zu implementieren, die folgende Operationen umfassen können, ohne darauf beschränkt zu sein: Benachrichtigen der Speicheranordnung 110 über das detektierte Schreibloch, Invalidieren der gespeicherten Datengruppe 130, Invalidieren von Teilen der gespeicherten Datengruppe 130, Wiederherstellen und/oder Rekonstruieren der gespeicherten Datengruppe 130, Anfordern von Ersatzdaten, die die gespeicherte Datengruppe 130 betreffen, und so weiter. Der Validierungsverwalter 106 kann dazu konfiguriert sein, die Speicheranordnung 110 über identifizierte Schreiblochzustände über die Schnittstelle 111 (und/oder unter Verwendung des Koordinationsmoduls 101) zu benachrichtigen. In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, die gespeicherte Datengruppe 130 durch u. a. Ausgeben einer TRIM-Nachricht, die die logischen Adressen betrifft, die auf die Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 abgebildet sind, zu invalidieren. Die TRIM-Nachricht kann innerhalb der Speicherdienstschicht 102 ausgegeben werden (z. B. an die Übersetzungsschicht 105 ausgegeben werden), kann an einen oder mehrere Clients ausgegeben werden, kann an die Speicheranordnung 110 ausgegeben werden, und so weiter. Der Validierungsverwalter 106 kann dazu konfiguriert sein, die Speicheranordnung 110 über Schreiblochzustände (über die Schnittstelle 111) zu benachrichtigen, und als Reaktion kann die Speicheranordnung 110 dazu konfiguriert sein, die gespeicherte Datengruppe 130 zu entfernen und/oder zu invalidieren. In einigen Ausführungsformen invalidiert der Validierungsverwalter 106 die gespeicherte Datengruppe 130 durch u. a. das Entfernen von Abbildungen, die die gespeicherte Datengruppe 130 betreffen, von der Übersetzungsschicht 105 (z. B. durch Invalidieren von Assoziationen zwischen logischen Adressen und Speicheradressen der Dateneinheiten 132A–N – 1 innerhalb der gespeicherten Datengruppe 130). In einigen Ausführungsformen identifiziert der Validierungsverwalter 106 die jeweiligen Dateneinheiten 132A–N – 1, die dem Schreibloch entsprechen, und invalidiert die identifizierten Dateneinheiten 132A–N – 1, während er andere Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 behält. Alternativ oder zusätzlich kann der Validierungsverwalter 106 eine oder mehrere Wiederherstellungsoperationen implementieren, um die Datengruppe 130 zu rekonstruieren (z. B. Teile der gespeicherten Datengruppe 130 wiederzubeschreiben), ungültige Daten unter Verwendung der Speicheranordnung 110 zu rekonstruieren, und/oder dergleichen. In einigen Ausführungsformen ist die Speicherdienstschicht 102 dazu konfiguriert, Ersatzdaten der gespeicherten Datengruppe 130 von einem oder mehreren Clients, alternative Speicherorte (z. B. Aufzeichnungsspeicher, wie hierin näher offenbart) und/oder dergleichen anzufordern.
  • In einigen Ausführungsformen kann der Validierungsverwalter 106 dazu konfiguriert sein, jeweilige ungültige Daten 131 umfassende Dateneinheiten 132 unter Verwendung der Integritätsdaten 144 zu identifizieren. Wie oben offenbart und in 1I veranschaulicht, können die Integritätsdaten 144 eine jeweilige, den Dateneinheiten 132A–N – 1 innerhalb der gespeicherten Datengruppe 130 entsprechende Integritätsbezugsgröße (Integritätsbezugsgröße 144A144N – 1) umfassen. Der Validierungsverwalter 106 kann die gespeicherte Datengruppe 130 validieren durch a) Zugreifen auf die Dateneinheiten 132A–N der Datengruppe 130 und b) Vergleichen der Dateneinheiten 132A–N mit der jeweiligen Integritätsbezugsgröße 144A–N – 1. In der Ausführungsform der 1I kann die Integritätsbezugsgröße 144A und 144C–N – 1 den jeweiligen Dateneinheiten 132A und 132C–N – 1 entsprechen. Die Integritätsbezugsgröße 144B kann den ungültigen Daten 131 der Dateneinheit 132B auch nicht entsprechen. Deshalb kann der Validierungsverwalter 106 bestimmen, dass die gespeicherte Datengruppe 130 ein Schreibloch umfasst. Der Validierungsverwalter 106 kann auch bestimmen, dass das Schreibloch die Dateneinheit 132B betrifft und dass die anderen Dateneinheiten 132A und 132C–N – 1 gültige Daten umfassen. Als Reaktion kann der Validierungsverwalter 106 Schreiblochwiederherstellungsoperationen implementieren, die folgende Operationen enthalten können, ohne darauf beschränkt zu sein: a) Benachrichtigen der Speicheranordnung 110 und/oder des/r Client(s) über das Schreibloch, b) Invalidieren der Dateneinheit 132B (z. B. Invalidieren der Abbildung(en) zwischen dem logischen Adressraum 104 und der Speicheradresse der Dateneinheit 132B) und/oder c) Behalten der anderen, gültigen Dateneinheiten 132A und 132C–N – 1 (z. B. Behalten der Abbildungen auf die gültigen Dateneinheiten 132A und 132C–N – 1 und/oder erneutes Schreiben der Inhalte der Dateneinheiten 132A und 132C–N – 1 in die Speicheranordnung 110 und/oder in eine andere Speicherressource); d) Wiederherstellen der Inhalte der Dateneinheit 132B; e) Zugreifen auf die Ersatzdaten für die Dateneinheit 132B und/oder dergleichen.
  • Wie oben offenbart, kann in der Ausführungsform der 1I der Validierungsverwalter 106 ferner dazu konfiguriert sein, das Schreibloch in der Dateneinheit 132B abzuschwächen durch u. a. Behalten von anderen gültigen Dateneinheiten 132A und 132C–N–1 der gespeicherten Datengruppe 130, Rekonstruieren der Dateneinheit 132B unter Verwendung der anderen Dateneinheiten 132A und 132C–N–1 (und die durch die Speicheranordnung 110 verwalteten Anordnungsmetadaten 134) und/oder dergleichen. Der Validierungsverwalter 106 kann dazu konfiguriert sein, die gültigen Dateneinheiten 132A und 132C–N – 1 zu behalten durch a) Behalten der die gespeicherten Dateneinheiten 132A und 132C–N – 1 betreffenden Abbildungen in der Übersetzungsschicht 105 (während die Dateneinheit 132B betreffende Abbildungen entfernt werden), b) das erneute Schreiben gültiger Daten der Dateneinheiten 132A und 132C–N 1 in andere Speicherressourcen und/oder innerhalb einer anderen Datengruppe 130 und/oder dergleichen. Alternativ oder zusätzlich kann der Validierungsverwalter 106 dazu konfiguriert sein, die Dateneinheit 132B unter Verwendung der Speicheranordnung 110 zu rekonstruieren. Wie hierin offenbart, kann die Speicheranordnung 110 dazu konfiguriert sein, Datengruppen 130 mit Anordnungsmetadaten 134 zu speichern, die u. a. Paritätsrekonstruktionsdaten enthalten können. Die Speicheranordnung 110 kann deshalb in der Lage sein, die Inhalte der Dateneinheit 132B unter Verwendung der Anordnungsmetadaten 134 der gespeicherten Datengruppe 130 und der Inhalte der anderen Dateneinheiten 132A und 132C–N – 1 zu rekonstruieren. In einer Ausführungsform gibt der Validierungsverwalter 106, als Reaktion auf die Bestimmung, dass die Dateneinheit 132B ungültige Daten 131 umfasst, eine Rekonstruktionsanforderung 147 an die Speicheranordnung 110 aus, die die ungültige Dateneinheit 132 in der gespeicherten Datengruppe 130 identifiziert (z. B. Dateneinheit 132 identifiziert) und fordert die Rekonstruktion der identifizierten Dateneinheit 132 durch die Speicheranordnung 110 an. Die Rekonstruktionsanforderung 147 kann eine ausführliche Anforderung umfassen, die Inhalte der Dateneinheit 132B innerhalb der gespeicherten Datengruppe 130 zu rekonstruieren. Alternativ kann die Rekonstruktionsanforderung 147 eine Fehlermeldung umfassen, die angibt, dass die Dateneinheit 132B ungültige Daten 131 (z. B. ein Lesefehlersignal) umfasst, und/oder ein/e andere/s Meldung, Signal und/oder Weisung. Als Reaktion kann die Speicheranordnung 110 die Dateneinheit 132B unter Verwendung von Rekonstruktionsdaten, die der gespeicherten Datengruppe 130 entsprechen (z. B. Anordnungsmetadaten 134, wie etwa Paritätsrekonstruktionsdaten), rekonstruieren. In einer Ausführungsform rekonstruiert die Speicheranordnung 110 die Dateneinheit 132B in einer XOR-Operation (unter Verwendung von Paritätsrekonstruktionsdaten), in der die Dateneinheit 132B rekonstruiert wird, so dass: Dateneinheit 132B = Dateneinheit 132AXOR Dateneinheit 132C ... XOR Dateneinheit 132N–1 XOR Dateneinheit 132N (Paritätsrekonstruktionsdaten). Die Speicheranordnung 110 kann ferner dazu konfiguriert sein, die rekonstruierte Dateneinheit 132B erneut in die Speicheranordnung 110 zu schreiben (z. B. die ungültigen Daten 131 auf dem Speicherort 115B mit der rekonstruierten Dateneinheit 132B zu überschreiben). Der Validierungsverwalter 106 kann die rekonstruierte Dateneinheit 132B unter Verwendung der Integritätsdaten 144 (z. B. Integritätsbezugsgröße 144B), wie hierin offenbart, validieren. Die rekonstruierte Dateneinheit 132B kann revalidiert werden, um sicherzustellen, dass die Paritätsrekonstruktionsdaten (z. B. Anordnungsmetadaten 134) der gespeicherten Datengruppe 130 gültig sind (z. B. nicht einem weiteren Schreibloch in der gespeicherten Datengruppe 130 entspricht). Wenn die Anordnungsmetadaten 134 ungültig sind (wegen u. a. dem ungültigen Abschaltungszustand nicht richtig geschrieben wurden), entspricht die rekonstruierte Dateneinheit 132B nicht der Integritätsbezugsgröße 144B.
  • Der Validierungsverwalter 106 kann dazu konfiguriert sein, irgendeine Anzahl von ungültigen Dateneinheiten 132 innerhalb einer gespeicherten Datengruppe 130 gemäß den Fähigkeiten der Speicheranordnung 110 (z. B. die „Stärke“ der Anordnungsmetadaten 134) zu rekonstruieren. Der hierin verwendete Begriff „Stärke“ der Rekonstruktionsinformation der Speicheranordnung 110 bezieht sich auf die Anzahl von Dateneinheitsfehlern, die die Rekonstruktionsinformationen in der Lage sind zu detektieren und/oder zu korrigieren. In Ausführungsformen, in denen eine einzige Dateneinheit 132 verwendet wird, um Anordnungsmetadaten 134 einer Datengruppe 130 zu speichern, kann die Speicheranordnung 110 möglicherweise nur in der Lage sein, eine einzige, ungültige Dateneinheit 132 zu rekonstruieren. Dementsprechend kann eine gespeicherte Datengruppe 130, die zwei oder mehrere ungültige Dateneinheiten 132 umfasst, möglicherweise nicht unter Verwendung der Anordnungsmetadaten 134 rekonstruiert werden. In einer weiteren Ausführungsform kann die Speicheranordnung 110 dazu konfiguriert sein, dem Speicher der Rekonstruktionsinformationen mehrere Dateneinheiten 132 zuzuweisen und kann insofern in der Lage sein, mehrere Dateneinheiten 132 einer gespeicherten Datengruppe 130 zu rekonstruieren. Die Speicheranordnung 110 kann zum Beispiel dazu konfiguriert sein, die Dateneinheiten mit einem Fehlerkorrektur-Code (ECC) und/oder einer anderen Technik zu verschlüsseln. In der Ausführungsform der 1I kann der Validierungsverwalter 106 die Anzahl von Dateneinheiten 132, die die Speicheranordnung 110 korrigieren kann, bestimmen (durch Abfragen der Schnittstelle 111 und/oder dergleichen), und kann die Korrektur von gespeicherten Datengruppen 130 anfordern, die unter Verwendung der von der Speicheranordnung 110 geführten Rekonstruktionsdaten korrigiert werden können.
  • In einigen Instanzen kann ein Schreibloch innerhalb der Dateneinheit 132 auftreten, die die Integritätsdaten 144 der gespeicherten Datengruppe 130 umfasst. In solchen Beispielen kann der Validierungsverwalter 106 bestimmen, dass Integritätsdaten 144 für die gespeicherte Datengruppe 130 ungültig sind und insofern umfasst die gespeicherte Datengruppe 130 ein Schreibloch. Der Validierungsverwalter 106 ist jedoch möglicherweise nicht in der Lage zu bestimmen, ob andere Dateneinheiten 132B–N – 1 der gespeicherten Datengruppe 130 ungültig sind. In solchen Ausführungsformen kann der Validierungsverwalter 106 dazu konfiguriert sein zu versuchen, sich von dem Schreiblochzustand unter Verwendung der durch die Speicheranordnung 110 geführten Rekonstruktionsdaten wiederherzustellen. Der Validierungsverwalter 106 kann die Rekonstruktion der Dateneinheit 132A, wie oben offenbart, anfordern. Der Validierungsverwalter 106 kann dann bestimmen, ob die rekonstruierte Dateneinheit 132A Integritätsdaten 144 (z. B. Integritätsbezugsgröße 144A–N – 1) umfasst und/oder ob die Integritätsdaten 144 den Dateneinheiten 132A–N – 1 entsprechen. Wenn, dann kann der Validierungsverwalter 106 den Schreiblochzustand bereinigen und die Inhalte der gespeicherten Datengruppe 130 (mit der rekonstruierten Dateneinheit 132A) behalten.
  • Unter Bezug zurück auf 1H kann der Validierungsverwalter 106 der 1H dazu konfiguriert sein, zu bestimmen, ob eine oder mehrere der Dateneinheiten 132 ein Schreibloch umfassen, kann aber auch unfähig sein, die jeweilige(n) Dateneinheit(en) 132A–N – 1, die ungültige Daten 131 umfassen, zu identifizieren. Der Validierungsverwalter 106 kann dazu konfiguriert sein, zu versuchen, ungültige Dateneinheiten 132 der gespeicherten Datengruppe 130 durch u. a. eine iterative Rekonstruktionsoperation zu rekonstruieren. In einer iterativen Rekonstruktionsoperation ist der Validierungsverwalter 106 dazu konfiguriert, eine Rekonstruktion einer jeweiligen Dateneinheit der Dateneinheiten 132A–N – 1 anzufordern. Der Validierungsverwalter 106 kann dann versuchen, die gespeicherte Datengruppe 130 (mit der rekonstruierten Dateneinheit 132A–N – 1) unter Verwendung der Integritätsdaten 144 zu validieren. Wenn eine gültige Dateneinheit 132 rekonstruiert wird (z. B. Dateneinheit 132A), wird die rekonstruierte Dateneinheit 132 durch die ungültigen Daten der anderen Dateneinheit(en) (z. B. ungültige Daten 131 der Dateneinheit 132B) beschädigt und insofern wird die resultierende Datengruppe 130 gegen die Integritätsdaten 144 nicht zu validieren sein. Das Rekonstruieren der Dateneinheit 132B kann ein Rekonstruieren von gültigen Inhalten der Dateneinheit 132B zur Folge haben (z. B. durch Paritätsrekonstruktion, wie hierin offenbart) und insofern wird die resultierende Datengruppe, einschließlich der rekonstruierten Dateneinheit 132B, gegen die Integritätsdaten 144 validiert. Als Reaktion kann das Verifizierungsmodul 106 den Schreiblochzustand bereinigen und mit dem Validieren anderer gespeicherter Datengruppen 130 fortfahren, wie hierin offenbart. Wenn eine gespeicherte Datengruppe 130 mehr ungültige Dateneinheiten 132 umfasst, als durch die Speicheranordnung 110 korrigiert werden können (und/oder in einer Kombination nicht durch den Validierungsverwalter 106 iteriert werden können), kann der Validierungsverwalter 106 bestimmen, dass die gespeicherte Datengruppe 130 ein Schreibloch umfasst, das nicht korrigiert werden kann, und kann eine oder mehrere Schreiblochwiederherstellungsoperationen, wie hierin offenbart, implementieren.
  • In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, die jeweiligen durch das Schreibloch in der Datengruppe 130 beeinträchtigten Dateneinheiten 132 zu identifizieren. Mit Bezug auf 1G kann der Validierungsverwalter 106 dazu konfiguriert sein, Integritätsdaten 144 zu erzeugen, die eine die jeweiligen Dateneinheiten 132A–N – 1 betreffende Integritätsbezugsgröße umfassen. Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, die Integritätsdaten 144 in einer oder mehreren der Dateneinheiten 132A–N – 1, die innerhalb einer Datengruppe 130 auf der Speicheranordnung 110 geschrieben werden, einzuschließen. Der Validierungsverwalter 106 kann dazu konfiguriert sein, m die Integritätsdaten 144 in eine oder mehrere der Dateneinheiten 132A–N – 1 einzubetten (als Header einer Dateneinheit 132A–N – 1 und/oder dergleichen). Alternativ oder zusätzlich können die Integritätsdaten 144 als Protokolleintrag und/oder Metadaten innerhalb einer oder mehrerer der Dateneinheiten 132A–N – 1 gespeichert werden. In einigen Ausführungsformen enthalten die Daten 140 persistente Abbildungsmetadaten (z. B. einen Abbildungprotokolleintrag), die die Dateneinheiten 132A–N – 1 mit jeweiligen logischen Adressen (und/oder anderen Kennungen) assoziieren, und die Integritätsdaten 144 sind in den persistenten Abbildungsmetadaten der Dateneinheiten 132A–N – 1 enthalten.
  • Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, die Speicheranordnung 110 über das detektierte Schreibloch zu informieren. Der Validierungsverwalter 106 kann eine Nachricht und/oder Weisung über die Schnittstelle 111 der Speicheranordnung 110 ausgeben (unter Verwendung des Koordinationsmoduls 101), die die gespeicherte Datengruppe 130 (durch eine Speicheradresse) identifiziert und angibt, dass die gespeicherte Datengruppe 130 ein Schreibloch umfasst. Alternativ oder zusätzlich kann der Validierungsverwalter 106 die Speicheranordnung 110 über den Schreiblochzustand informieren durch u. a. TRIM- und/oder Tilgungsmeldungen an die Speicheranordnung 110, die dazu konfiguriert sind, die gespeicherte Datengruppe 130 zu invalidieren und/oder von der Speicheranordnung 110 zu löschen.
  • Wie oben offenbart, kann die Speicherdienstschicht 102 dazu konfiguriert sein, die Speicheranordnung 110 daran zu hindern, Anordnungswiederherstellungsoperationen 124 als Reaktion auf ungültige Abschaltungszustände zu implementieren. In einigen Ausführungsformen ist die Speicherdienstschicht 102 dazu konfiguriert, eine oder mehrere Nachrichten und/oder Weisungen 145 an die Speicheranordnung 110 auszugeben, die dazu konfiguriert sind, die Speicheranordnung 110 daran zu hindern, jeweilige Absturzwiederherstellungsoperationen (z. B. Blockausführung gewisser Anordnungswiederherstellungsoperationen 124 der Anordnungssteuereinrichtung 120) auszuführen. Die Nachrichten und/oder Weisungen 145 können durch die Schnittstelle 111 der Speicheranordnung 110 ausgegeben werden. Alternativ können die Nachrichten und/oder Weisungen 145 über eine Konfigurationsschnittstelle der Speicheranordnung 110 übermittelt werden, können durch Modifizieren eines Konfigurationsparameters und/oder einer Datei der Speicheranordnung 110 übermittelt werden und/oder dergleichen. Die Offenbarung ist in dieser Hinsicht nicht beschränkt und könnte dazu eingerichtet werden, die Speicheranordnung 110 daran zu hindern, Anordnungswiederherstellungsoperationen 124 unter Verwendung irgendeines geeigneten Mechanismus zu implementieren, der Folgendes enthält, ohne darauf beschränkt zu sein: Einstellen von die Speicheranordnung 110 betreffenden Konfigurations-Flags, Einstellen von die Speicheranordnung 110 betreffenden Speicherparametern (z. B. IOCTRL-Parameter, Fadvise-Parameter, und/oder dergleichen) und so weiter.
  • Die Speicheranordnung 110 kann Speicherelemente 112A–N umfassen, die dazu fähig sind, eine große Anzahl von Datengruppen 130 zu speichern. Dementsprechend, und wie in 1I veranschaulicht, kann der Speicheradressraum 116 der Speicheranordnung 110 in der Lage sein, eine Vielzahl von Datengruppen 130 zu speichern. Zum Beispiel kann die Speicheranordnung 110 eine Speicherkapazität von 16 Terabytes (16 TB) umfassen und insofern in der Lage sein, 400.000.000 Datengruppen 130 zu speichern, wobei jede Datengruppe 130 fünf 4-KB-Dateneinheiten 132 umfasst. Das Validieren aller auf der Speicheranordnung 110 gespeicherter Datengruppen 130 kann eine beträchtliche Menge an Rechenressourcen verbrauchen und eine beträchtliche Zeitdauer benötigen, während Speicherdienste der Speicheranordnung 110 (und/oder Speicherdienstschicht 102) nicht verfügbar sein können.
  • In einigen Ausführungsformen umfasst die Speicherdienstschicht 102 ein Protokollmodul 108, das zum Führen eines geordneten Speicherprotokolls auf der Speicheranordnung 110 konfiguriert ist. Als Reaktion auf das Detektieren einer ungültigen Abschaltung kann der Validierungsverwalter 106 dazu konfiguriert sein, Datengruppen 130 am Kopf des Speicherprotokolls zu validieren, im Gegensatz zur Validierung aller gespeicherter Datengruppen 130 auf der Speicheranordnung 110. Dementsprechend kann der Validierungsverwalter 106 das von der Speicherdienstschicht 102 geführte Speicherprotokoll wirksam einsetzen, um die Anzahl von gespeicherten Datengruppen 130, die als Reaktion auf eine die Speicheranordnung 110 betreffende ungültige Abschaltung validiert werden müssen, zu reduzieren. Im Gegensatz dazu können Anordnungswiederherstellungsoperationen 124 der Speicheranordnung 110 notwendig sein, um auf im Wesentlichen allen gespeicherten Datengruppen 130 auf der Speicheranordnung 110 zu arbeiten.
  • Wie hierin näher offenbart, kann das Protokollmodul 108 dazu konfiguriert sein, Daten an das Speicherprotokoll an einem Anfügungspunkt 109 innerhalb des Speicheradressraums 116 der Speicheranordnung 110 anzufügen. Das Protokollmodul 108 kann ferner dazu konfiguriert sein, persistente Metadaten zu führen, die u. a. die Protokollreihenfolge von Daten (und/oder entsprechender Datengruppen 130), die in das Speicherprotokoll geschrieben werden, definieren. Das Protokollmodul 108 kann deshalb dazu konfiguriert sein, die zeitliche Reihenfolge von gewissen Speicheroperationen, die auf der Speicheranordnung 110 durchgeführt werden, zu bestimmen. Der Validierungsverwalter 106 kann den/die Speicherort(e) der Datengruppen 130, die zu der Zeit, zu der eine ungültige Abschaltung erfolgt, in die Speicheranordnung 110 geschrieben werden, bestimmen und kann Validierungsoperationen auf den/die bestimmten Speicherort(e) begrenzen.
  • In einigen Ausführungsformen bestimmt der Validierungsverwalter 106 die Speicheradresse des Protokollanfügungspunktes 109 unter Verwendung u. a. des Protokollmoduls 108. Der Validierungsverwalter 106 kann dazu konfiguriert sein, Datengruppen 130 am Kopf des Speicherprotokolls zu validieren (z. B. an den Anfügungspunkt 109 geschriebene Datengruppen 130), im Gegensatz zum Validieren von allen auf der Speicheranordnung 110 gespeicherten Datengruppen 130. In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, eine Datengruppe 130 am Kopf des Speicherprotokolls zu validieren (z. B. Datengruppe 130 am Protokollanfügungspunkt 109). Alternativ oder zusätzlich kann der Validierungsverwalter 106 dazu konfiguriert sein, Datengruppe(n) 130 innerhalb eines jeweiligen Bereiches des Speicheradressraums 116 (Validierungsbereich 118) zu validieren. Der Validierungsbereich 118 kann Datengruppen 130 umfassen, die in die Speicheranordnung 110 zur Zeit der ungültigen Abschaltung geschrieben wurden (basierend auf der bestimmten Speicheradresse des Protokollanfügungspunktes 109 und/oder Protokollreihenfolge von gespeicherten Datengruppen 130 auf der Speicheranordnung 110). Dementsprechend kann der Validierungsbereich 118 gespeicherte Datengruppen 130 umfassen, die durch die ungültige Abschaltung beeinträchtigt worden sein könnten (z. B. gespeicherte Datengruppen, die ein Schreibloch umfassen können). Obgleich der Validierungsbereich 118 als ein durchgehender Bereich im Speicheradressraum 116 dargestellt wird, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte so eingerichtet werden, dass Datengruppen gemäß irgendeinem geeigneten Muster innerhalb des Speicheradressraums 116 angefügt werden.
  • Wie oben offenbart, ist die Speicheranordnung 110 möglicherweise nicht verfügbar, während Anordnungswiederherstellungsoperationen 124 implementiert werden. In der Ausführungsform der 1I kann die Speicherdienstschicht 102 dazu konfiguriert sein, die Speicheranordnung 110 anzuweisen, dass dafür vorgesehene Anordnungswiederherstellungsoperationen 124 nicht durchgeführt werden sollen. Die Speicherdienstschicht 102 kann ferner dazu konfiguriert sein, die Speicheranordnung 110 anzuweisen, nach der ungültigen Abschaltung einen Zugriff zu Speicherdiensten bereitzustellen (und ohne die Erledigung der dafür vorgesehenen Anordnungswiederherstellungsoperationen 124). Die Speicherdienstschicht 102 kann den Zugriff auf die Speicheranordnung 110 (durch andere Clients) verhindern, während der Validierungsverwalter 106 gespeicherte Datengruppen 130 validiert, wie hierin offenbart.
  • In einigen Ausführungsformen kann die Speicherdienstschicht 102 den Zugriff auf einzelne Bereiche der Speicheranordnung 110 verhindern und Zugriff auf andere Bereiche gestatten. Wie oben offenbart, kann der Validierungsverwalter 106 dazu konfiguriert sein, die Speicheradresse(n) entsprechend dem Kopf des Speicherprotokolls zur Zeit einer ungültigen Abschaltung (z. B. Validierungsbereich 118) zu bestimmen. Der Validierungsverwalter 106 kann den Zugriff auf bestimmte Speicheradresse(n) verhindern und kann den Zugriff auf andere Bereiche des Speicheradressraums 116 der Speicheranordnung 110 gestatten. Dementsprechend können Speicheranforderungen, die Bereiche des Speicheradressraums 116 betreffen, die nicht durch einen Schreiblochzustand beeinträchtigt waren, nach der ungültigen Abschaltung bedient werden, während der Validierungsverwalter 106 Datengruppen 130, die innerhalb anderer Bereiche des Speicheradressraums 116 gespeichert sind, validiert (z. B. den Validierungsbereich 118).
  • 2 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens 200 zur Speicherfehler-Verwaltung. Schritt 210 umfasst das Erzeugen von Integritätsmetadaten 144, die durch eine Speichermaschine, wie etwa die Speicheranordnung 110, gespeicherten Daten entsprechen. Die Speichermaschine kann dazu konfiguriert sein, die Daten innerhalb jeweiliger Datengruppen 130 und mit Rekonstruktionsdaten (z. B. Anordnungsmetadaten 134) zu speichern, wie hierin offenbart.
  • Schritt 220 umfasst das Wiederherstellen nach einer die Speichermaschine betreffenden ungültigen Abschaltung. Schritt 220 kann das Detektieren eines ungültigen Abschaltungszustands umfassen, der einem oder mehreren aus Folgendem entspricht: Stromverlust, Stromunterbrechung, Stromabweichung, einem Absturzzustand, einem Fehlerzustand, einer Unterbrechung, einem Absturz, einem Fehler, einem Hardwarefehler, einem Softwarefehler und/oder irgendeinem anderen Zustand, außer dem einer sauberen Abschaltung der Speicheranordnung und/oder einer Komponente davon. Ein ungültiger Abschaltungszustand kann einem ungültigen Abschaltungszustand der Speicheranordnung (z. B. die Speicheranordnungssteuereinrichtung), einer ungültigen Abschaltung eines Speicherelements, einer ungültigen Abschaltung einer Kommunikationsinfrastruktur der Speicheranordnung, einer ungültigen Abschaltung eines übergeordneten Speicherclients, einer ungültigen Abschaltung eines Rechensystems, das die Speicheranordnung enthält, eines Speicherelements und/oder übergeordneten Speicherclients und/oder dergleichen entsprechen. Der ungültige Abschaltungszustand kann durch eine Speicherschicht 102, ein Koordinationsmodul 101 und/oder einen Validierungsverwalter 106 detektiert werden, wie hierin offenbart.
  • Schritt 220 kann ferner das Wiederherstellen nach der ungültigen Abschaltung unter Verwendung der Integritätsmetadaten des Schrittes 210 umfassen. Schritt 220 kann das Validieren von auf der Speicheranordnung 110 gespeicherten Datengruppen 130 unter Verwendung der Integritätsmetadaten 144 des Schrittes 210 umfassen. Schritt 220 kann deshalb das Zugreifen auf Daten der gespeicherten Datengruppen 130 und das Vergleichen der Zugriffsdaten mit entsprechenden Integritätsdaten 144 umfassen. Schritt 220 kann ferner das Extrahieren der Integritätsdaten 144 einer gespeicherten Datengruppe 130 aus einer oder mehreren Dateneinheiten 132 der gespeicherten Datengruppe 130 umfassen. Alternativ oder zusätzlich kann Schritt 220 das Zugreifen auf Integritätsdaten 144 der Datengruppe 130 von einem separaten Speicherelement 112A–N und/oder einer Speicherressource umfassen. In einigen Ausführungsformen umfasst Schritt 220 das Bestimmen, dass eine gespeicherte Datengruppe ein Schreibloch umfasst, als Reaktion auf das Bestimmen, dass die Integritätsdaten nicht den Zugriffsdaten der gespeicherten Datengruppe 130 entsprechen. Schritt 220 kann ferner das Abschwächen des Schreiblochs durch u. a. Invalidieren der gespeicherten Datengruppe 130, das erneute Schreiben von Teilen der gespeicherten Datengruppe 130, das Benachrichtigen der Speichermaschine über das Schreibloch (über die Schnittstelle 111 der Speicheranordnung 110) und/oder dergleichen, wie hierin offenbart, umfassen.
  • In einigen Ausführungsformen umfassen die Integritätsdaten 144 einer gespeicherten Datengruppe 130 eine Integritätsbezugsgröße, die jeder aus einer Vielzahl von Dateneinheiten 132 innerhalb der Datengruppe 130 entspricht. Schritt 220 kann deshalb das Validieren von einzelnen Dateneinheiten 132 der gespeicherten Datengruppe 130 unter Verwendung einer jeweiligen Integritätsbezugsgröße umfassen. Schritt 220 kann ferner das Bestimmen, ob irgendwelche der Dateneinheiten 132 ungültige Daten umfassen, umfassen (z. B. ob die gespeicherte Datengruppe 130 unvollständig ist und/oder ein Schreibloch umfasst). Schritt 220 kann ferner das Bestimmen der jeweiligen Dateneinheit(en) 132 innerhalb der gespeicherten Datengruppe 130, die das Schreibloch umfasst, umfassen. Schritt 220 kann ferner das Abschwächen von detektierten Schreiblöchern enthalten, wie hierin offenbart, und/oder das Wiederherstellen von Daten eines Schreiblochs unter Verwendung von anderen, gültigen Daten der gespeicherten Datengruppe 130, wie hierin offenbart.
  • Schritt 220 kann ferner das Validieren einer Teilmenge der auf der Speicheranordnung 110 gespeicherten Datengruppen 130 (im Gegensatz zu allen auf der Speicheranordnung 110 gespeicherten Datengruppen 130) umfassen. Die Teilmenge kann basierend auf einer zeitlichen Reihenfolge der Datengruppen 130, wie durch u. a. ein Speicherprotokoll definiert, identifiziert werden. Schritt 220 kann das Identifizieren eines Anfügungspunktes 109 innerhalb eines Speicheradressraums 116 der Speicheranordnung 110 und/oder das Bestimmen eines Validierungsbereichs 118 innerhalb des Speicheradressraums 116, der dem Anfügungspunkt 109 und/oder Kopf des Speicherprotokolls entsprich, umfassen. Schritt 220 kann das Validieren von gespeicherten Datengruppen 130 am Kopf des Speicherprotokolls und/oder innerhalb eines dafür vorgesehenen Validierungsbereichs 118 umfassen. Schritt 220 kann ferner das Verhindern des Zugriffs auf gespeicherte Datengruppen im Validierungsbereich 118 umfassen, bis die gespeicherten Datengruppen 130 darin validiert worden sind. Schritt 220 kann ferner das Gestatten des Zugriffs auf in anderen Bereich(en) des Speicheradressraums 116 gespeicherte Datengruppen 130 umfassen.
  • Schritt 230 umfasst das Ersetzen einer Wiederherstellungsoperation der Speichermaschine. Schritt 230 kann das Verhindern, dass die Speichermaschine eine oder mehrere Anordnungswiederherstellungsoperationen 124 implementiert, wie hierin offenbart, umfassen. Schritt 230 kann ferner das Konfigurieren der Speichermaschine zum Gestatten eines Zugriffs auf die Speicheranordnung 110 nach der ungültigen Abschaltung ohne die Implementierung der einen oder mehreren Anordnungswiederherstellungsoperationen 124 umfassen.
  • 3 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 300 für die Speicherfehler-Verwaltung. Schritt 310 kann Speicherungsprüfsummendaten umfassen, die Daten entsprechen, die innerhalb jeweiliger Datenstreifen eines RAID-Speichersystems, wie etwa die hierin offenbarte Speicheranordnung 110, geschrieben werden. Die Prüfsummendaten des Schrittes 310 können durch den Validierungsverwalter 106 der Speicherdienstschicht 102 erzeugte Integritätsdaten 144 umfassen. Die in das RAID-Speichersystem geschriebenen Datenstreifen können Paritätsrekonstruktionsdaten (Anordnungsmetadaten 134) umfassen.
  • Schritt 320 umfasst das Validieren von Datenstreifen, die in das RAID-Speichersystem geschrieben sind, als Reaktion auf eine ungültige Abschaltung. Schritt 320 kann das Validieren der Datenstreifen unter Verwendung der Prüfsummendaten des Schrittes 310 (z. B. Integritätsdaten 144), unabhängig von den Paritätsrekonstruktionsdaten (z. B. Anordnungsmetadaten 134) des RAID-Speichersystems, umfassen. Schritt 320 kann das Validieren von Datenstreifen durch a) Lesen von Dateneinheiten 132 der Datenstreifen, b) Berechnen einer Prüfsumme der gelesenen Dateneinheiten 132, und c) Vergleichen der berechneten Prüfsumme mit der (mit den Datenstreifen und/oder an einem separaten Speicherort gespeicherten) Prüfsumme des Schrittes 310 umfassen. Schritt 320 kann ferner das Abschwächen von detektierten Schreiblochzuständen, wie hierin offenbart, umfassen. In einigen Ausführungsformen umfasst Schritt 320 ferner das Bestimmen, ob jeweilige Dateneinheiten 132 eines Datenstreifens ungültige Daten umfassen (unter Verwendung einer Prüfsummenbezugsgröße, die zu den jeweiligen Dateneinheiten 132 gehört), Rekonstruieren der jeweiligen Dateneinheiten (wenn möglich), und so weiter. Schritt 320 kann ferner das Validieren einer Teilmenge der gespeicherten Datenstreifen basierend auf u. a. einer Protokollreihenfolge der Datenstreifen innerhalb eines Speicheradressraums 116 des RAID-Speichersystems umfassen.
  • Schritt 330 kann das Validieren der Datenstreifen an einer Speicherschicht 102 anstelle einer Absturzwiederherstellungsoperation des RAID-Speichersystems (z. B. anstelle von einer oder mehreren Anordnungswiederherstellungsoperationen 124) umfassen. Schritt 330 kann das Konfigurieren des RAID-Speichersystems zum Delegieren der Absturzwiederherstellungsoperationen, wie hierin offenbart, umfassen. Schritt 330 kann ferner das Konfigurieren des RAID-Speichersystems zum Gestatten eines Zugriffs auf die Speicheranordnung 110 nach der ungültigen Abschaltung ohne die Implementierung der Absturzwiederherstellungsoperationen des RAID-Speichersystems umfassen.
  • 4 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens 400 zur Speicherfehler-Verwaltung. Schritt 410 umfasst das Anfügen von Datengruppen 130 an ein Speicherprotokoll, das auf einer Speicheranordnung 110 geführt wird, unter Verwendung einer Speicheranordnungssteuereinrichtung 120, wobei die Speicheranordnungssteuereinrichtung 120 dazu konfiguriert ist, die Datengruppen 130 innerhalb jeweiliger Datenstreifen auf der Speicheranordnung 110 mit entsprechenden Anordnungsmetadaten 134 zu speichern, wie etwa RAID-Paritätsrekonstruktionsdaten.
  • Schritt 420 umfasst Speicherungsintegritätsdaten 144, die der innerhalb der jeweiligen Datenstreifen auf der Speicheranordnung 110 gespeicherten Datengruppe 130 entsprechen. Die Integritätsdaten 144 können eine Prüfsumme der Dateneinheiten 132 der Datengruppe 130 umfassen. Alternativ oder zusätzlich können die Integritätsdaten 144 eine Prüfsummenbezugsgröße von jeder aus einer Vielzahl von Dateneinheiten 132 der Datengruppe 130 umfassen. Die Integritätsdaten 144 können innerhalb der Datengruppe 130 auf der Speicheranordnung 110 gespeichert werden und/oder können an/in einem/r separaten Speicherort und/oder Speicherressource gespeichert werden.
  • Schritt 430 umfasst, dass einer Absturzwiederherstellungsoperation der Speicheranordnungssteuereinrichtung 120 als Reaktion auf eine ungültige Abschaltung der Speicheranordnung 110 zuvorgekommen wird. Schritt 430 kann das Verhindern, dass die Anordnungssteuereinrichtung 120 eine oder mehrere Anordnungswiederherstellungsoperationen 124 ausführt, wie hierin offenbart, umfassen. Schritt 430 kann ferner das Validieren eines oder mehrerer gespeicherter Datenstreifen auf der Speicheranordnung 110 umfassen. In einigen Ausführungsformen umfasst Schritt 430 das Validieren eines Datenstreifens am Kopf des Speicherprotokolls auf der Speicheranordnung 110 unter Verwendung von Integritätsdaten 144, die mit dem Datenstreifen gespeichert sind. Schritt 430 kann das Bestimmen eines Anfügungspunktes 109 des Speicherprotokolls innerhalb eines Speicheradressraums 116 der Speicheranordnung 110 und das Identifizieren eines Datenstreifens, der an und/oder vor dem bestimmten Anfügungspunkt 109 im Speicherprotokoll gespeichert ist, umfassen.
  • 5A ist ein Blockdiagramm einer Ausführungsform eines Systems 500A, das eine Speicherdienstschicht 102 umfasst, die dazu konfiguriert ist, Speicherdienste für einen oder mehrere Clients 502 bereitzustellen. Das System 500A kann ein Rechensystem 501 umfassen. Das Rechensystem 501 kann irgendeine geeignete Recheneinrichtung umfassen, die Folgendes enthält, ohne darauf beschränkt zu sein: Server, Desktop, Laptop, eingebettetes System, mobile Einrichtung, und/oder dergleichen. In einigen Ausführungsformen enthält das Rechensystem 501 mehrere Recheneinrichtungen, wie etwa ein Cluster von Server-Recheneinrichtungen. Das Rechensystem 501 kann verarbeitende Ressourcen, flüchtige Speicherressourcen (z. B. Direktzugriffsspeicher (RAM)), nichtflüchtige Speicherressourcen, eine Kommunikationsschnittstelle, und so weiter umfassen. Die verarbeitenden Ressourcen des Rechensystems 501 können in nicht einschränkender Weise eine Allzweck-Zentraleinheit, wie etwa eine Zentraleinheit (Central Processing Unit, CPU), eine ASIC, ein programmierbares Logikelement, ein FPGA, ein PLA, virtuelle verarbeitende Rechenressourcen, und/oder dergleichen enthalten. Die nichtflüchtigen Speicherressourcen des Rechensystems 501 können eine nicht vergängliche, maschinenlesbare Speichereinrichtung, wie etwa eine magnetische Festplatte, Festkörper-Speichereinrichtung, optische Speichereinrichtung, und/oder dergleichen umfassen. Die Kommunikationsschnittstelle des Rechensystems 501 kann dazu konfiguriert sein, das Rechensystem 501 kommunikativ an ein Netzwerk zu koppeln. Das Netzwerk kann irgendein geeignetes Kommunikationsnetzwerk umfassen, einschließlich u. a. ein TCP/IP(Transmission Control Protocol/Internet Protocol)-Netzwerk, ein Local Area Network (LAN), ein Wide Area Network (WAN), ein Virtual Private Network (VPN), Storage Area Network (SAN), ein Public Switched Telephone Network (PSTN), das Internet, und/oder dergleichen umfassen.
  • Die Speicherdienstschicht 102 kann dazu konfiguriert sein, Speicherdienste an Clients 502 unter Verwendung eines oder mehrerer Speicherressourcen 510, einschließlich einer Speicheranordnung 110 wie hierin offenbart, bereitzustellen. Die Clients 502 können in nicht einschränkender Weise enthalten: Betriebssysteme (einschließlich Bare-Metal-Betriebssysteme, Gastbetriebssysteme, virtuelle Maschinen, und dergleichen), Virtualisierungssysteme (Virtualisierungs-Kernels, Hypervisoren, virtuelle Maschinen, und/oder dergleichen), Dateisysteme, Datenbanksysteme, entfernte E/A-Clients (z. B. kommunikativ mit dem Rechensystem 501 und/oder Speichermodul 130 über das Netzwerk 115 gekoppelte E/A-Clients 502), und/oder dergleichen. Die Speicherdienstschicht 102 kann eine Schnittstelle 511 umfassen, die zum Freilegen von Speicherdiensten an Clients 502 konfiguriert ist. Die Schnittstelle 511 kann eine oder mehrere aus Folgenden enthalten: eine Speicherschnittstelle, eine Blockspeicherschnittstelle, eine Blockeinrichtungsschnittstelle, eine Objektspeicherschnittstelle, eine Dateispeicherschnittstelle, eine Schlüsselwert-Speicherschnittstelle, eine virtualisierte Speicherschnittstelle, eine virtuelle Speichereinheit (VSU), eine Datenbankspeicherschnittstelle, und/oder dergleichen. Die Speicherdienstschicht 102 (und/oder Schnittstelle 511) kann implementiert werden und/oder den Clients 502 präsentiert werden unter Verwendung verschiedener Komponenten, Module, Schaltungen, und/oder dergleichen einschließlich u. a.: ein Kernelebenenmodul, ein Benutzerraummodul, ein Treiberebenenmodul, einen Treiber, eine E/A-Steuereinrichtung, einen E/A-Verwalter, eine E/A-Schicht, einen E/A-Dienst, ein Speichersteuereinrichtung, einen Speicherverwalter, eine Speicherschicht, einen Speicherdienst, ein SCSI-Modul, eine Bibliothek, eine geteilte Bibliothek, eine ladbare Bibliothek, eine DLL, einen Gerätetreiber, ein DDI-Modul, ein LDD-Modul, ein PDD-Modul, ein WFD-Modul, ein UMDF-Modul, ein KMDF-Modul, ein E/A-Kit-Modul, ein UDI-Modul, ein SDI-Modul, ein SDK, und/oder dergleichen.
  • Wie oben offenbart, kann die Speicherdienstschicht 102 (und/oder deren Komponenten, wie etwa der Validierungsverwalter 106, das Absturzwiederherstellungsmodul 516, und so weiter) als Hardwarekomponenten verkörpert sein, die in nicht einschränkender Weise Folgendes enthalten können: Schaltungen, integrierte Schaltungen, ASICs, programmierbare Hardwarekomponenten, PLAs, FPGAs, Steuereinrichtungshardware, Speichersteuereinrichtungshardware. Alternativ oder zusätzlich können Teile der Speicherdienstschicht 102 (und/oder deren Komponenten, wie etwa der Validierungsverwalter 106, das Absturzwiederherstellungsmodul 516, und so weiter) als Anweisungen verkörpert sein, die auf einem maschinenlesbaren Speichermedium, wie etwa eine magnetische Festplatte, Festkörper-Speichereinrichtung, optische Speichereinrichtung, und/oder dergleichen gespeichert sind. In einigen Ausführungsformen sind die Anweisungen zur Ausführung durch eine spezifische Art von Hardware konfiguriert und können in nicht einschränkender Weise enthalten: Firmware, einen FPGA-Bitstream, PLA-Konfigurationsdaten, und/oder dergleichen. Dementsprechend umfassen in einigen Ausführungsformen Teile der Speicherdienstschicht 102 (und/oder Komponenten davon, wie etwa der Validierungsverwalter 106, das Absturzwiederherstellungsmodul 516, und so weiter) Nur-Lese-Daten, die auf einer jeweiligen Hardwareeinrichtung gespeichert sind (z. B. auf einem ROM, EPROM, und/oder dergleichen gespeichert). Alternativ oder zusätzlich können die Anweisungen zur Ausführung und/oder Interpretation durch das Rechensystem 501 konfiguriert sein. Teile der Speicherdienstschicht 102 (und/oder deren Komponenten, wie etwa der Validierungsverwalter 106, das Absturzwiederherstellungsmodul 516, und so weiter) können Folgendes umfassen: ein Kernelebenenmodul, ein Benutzerraummodul, ein Treiberebenenmodul, einen Treiber, eine E/A-Steuereinrichtung, einen E/A-Verwalter, eine E/A-Schicht, einen E/A-Dienst, einen Speichertreiber, einen Speicherverwalter, eine Speicherschicht, eine softwaredefinierte Speicherschicht, ein SCSI-Modul, eine Bibliothek, eine geteilte Bibliothek, eine ladbare Bibliothek, eine DLL-Bibliothek, einen Gerätetreiber, ein DDI-Modul, ein LDD-Modul, ein PDD-Modul, ein WFD-Modul, ein UMDF-Modul, ein KMDF-Modul, ein E/A-Kit-Modul, ein UDI-Modul, ein SDI-Modul, ein SDK, und/oder dergleichen.
  • Die Speicherdienstschicht 102 kann einen Speicherressourcenverwalter 521 umfassen, der dazu konfiguriert ist, u. a. Datenspeicherungs- und/oder Abrufoperationen auf den Speicherressourcen 510 zu verwalten. Der Speicherressourcenverwalter 521 kann ein Koordinationsmodul 101 umfassen, das dazu konfiguriert ist, die Speicheranordnung 110, wie hierin offenbart, zu verwalten. Die Speicherdienstschicht 102 kann dazu konfiguriert sein, Datenspeicherungs- und Abrufoperationen, die einen logischen Adressraum 104 betreffen, zu verwalten. Die Speicheroperationen können auf Speicherressourcen 510, die eine Speicheranordnung 110 enthalten, implementiert sein. Wie hierin offenbart, kann die Speicheranordnung 110 eine Vielzahl von Speicherelementen 112A–N umfassen, die jeweilige Speicherorte 115 umfassen. Die Anordnungssteuereinrichtung 120 kann dazu konfiguriert sein, Daten in Datengruppen 130 zur Speicherung innerhalb der Speicheranordnung 110 einzurichten. Wie hierin offenbart, kann eine Datengruppe 130 eine Vielzahl von Dateneinheiten 132 umfassen, die zur Speicherung auf jeweiligen Speicherelementen 112A–N der Speicheranordnung 110 konfiguriert sind. Die Anordnungssteuereinrichtung 120 kann ferner dazu konfiguriert sein, die Datengruppen 130 betreffende Anordnungsmetadaten 134 zu erzeugen und zu speichern. In einigen Ausführungsformen umfasst die Speicheranordnung 110 ein RAID-Speichersystem, eine RAID-Speichermaschine, einen RAID-Speicherdienst, und/oder dergleichen.
  • Die Speicheranordnung 110 kann über eine Zwischenverbindung 515 kommunikativ an die Speicherdienstschicht 102 gekoppelt sein, wobei die Zwischenverbindung Folgendes enthalten kann, ohne darauf beschränkt zu sein: eine Peripheral Component Interconnect (PCI), PCI-Express (PCI-e), Serial ATA oder SATA, Parallel ATA (PATA), Small Computer System Interface (SCSI), IEEE 1394 (FireWire), Fibre Channel, Universal Serial Bus (USB), und/oder dergleichen. In einigen Ausführungsformen kann die Speicheranordnung 110 eine oder mehrere entfernte Speichereinrichtungen umfassen, die an die Speicherdienstschicht 102 über ein Netzwerk (und/oder andere Kommunikationsschnittstelle, wie etwa Storage Area Network (SAN), Virtual Storage Area Network (VSAN), und/oder dergleichen) kommunikativ gekoppelt sind. Die Zwischenverbindung 115 kann deshalb einen entfernten Bus, wie etwa einen PCI-E-Bus, eine Netzwerkverbindung (z. B. Infiniband), RDMA-Verbindung, ein Speichernetzwerk, ein Fibre-Channel-Protocol(FCP)-Netzwerk, HyperSCSI, und/oder dergleichen umfassen.
  • Die Schnittstelle 511 der Speicherdienstschicht 102 kann den Clients 502 über u. a. einen logischen Adressraum 104 Speicherdienste anbieten. Der logische Adressraum 104 kann eine Gruppe, eine Menge, eine Ansammlung, einen Bereich und/oder einen Umfang von logischen Kennungen (LIDs, Logical Identifiers) umfassen. Der hierin verwendete Begriff LIDs bezieht sich auf irgendeinen Mechanismus zum Referenzieren von Daten und kann in nicht einschränkender Weise enthalten: Namen (z. B. Dateinamen, ausgezeichnete Namen, und/oder dergleichen), Datenkennungen, Referenzen, Links, Frontend-Kennungen, logische Adressen, logische Blockadressen (LBAs), Speichereinheitsadressen, Virtuelle-Speichereinheits(VSU)-Adressen, Logical-Unit-Number(LUN)-Adressen, Virtual-Unit-Number(VUN)-Adressen, Virtual-Logical-Unit-Number(vLUN)-Adressen, virtuelle Speicheradressen, eindeutige Kennungen, Globally Unique Identifiers (GUIDs), und/oder dergleichen.
  • Die Übersetzungsschicht 105 kann dazu konfiguriert sein, LIDs mit jeweiligen Speicherressourcen (z. B. Daten, die innerhalb eines Speicheradressraums 116 der Speicheranordnung 110 gespeichert sind) zu assoziieren. Der logische Adressraum 104 kann vom Speicheradressraum 116 unabhängig sein, so dass dort Abbildungen zwischen dem logischen Adressraum 104 und dem Speicheradressenadressraum 116 der Speicheranordnung 110 (und/oder anderen Speicherressourcen 510) eingestellt oder vorbestimmt werden. In einigen Ausführungsformen wird der logische Adressraum 104 spärlich, schlank und/oder übermäßig vorgehalten, so dass sich die Größe des logischen Adressraums 104 vom Speicheradressraum 116 der Speicheranordnung 110 und/oder anderen Speicherressourcen 510 unterscheidet. In einigen Ausführungsformen überspannt der logische Adressraum 104 mehrere Speicherressourcen 510.
  • Die Speicherdienstschicht 102 kann dazu konfiguriert sein, den logischen Adressraum 104 betreffende Virtualisierungsmetadaten 505 zu führen. Die Virtualisierungsmetadaten 505 können Folgendes enthalten, ohne darauf beschränkt zu sein: ein Vorwärts-Abbild 525, das Any-to-Any-Abbildungen zwischen LIDs des logischen Adressraums 104 und Speicheradressen innerhalb des Speicheradressraums 116 umfasst, ein Rückwärts-Abbild, das die Inhalte von jeweiligen Speicherorten 115 auf der Speicheranordnung 110, Validitäts-Bitmaps, Zuverlässigkeitstest und/oder Statusmetadaten, Statusinformationen (z. B. Fehlerhäufigkeit, Rückordnungsstatus, und so weiter), Cachespeicher-Metadaten, und so weiter betrifft. Teile der Virtualisierungsmetadaten 505 können innerhalb der flüchtigen Speicherressourcen des Rechensystems 501 geführt werden. Alternativ oder zusätzlich können Teile der Virtualisierungsmetadaten 505 auf nichtflüchtigen Speicherressourcen des Rechensystems 501 und/oder auf einer oder mehreren Speicherressourcen 510 gespeichert werden.
  • 5B stellt Ausführungsformen von Virtualisierungsmetadaten 505 und insbesondere Ausführungsformen eines Vorwärts-Abbilds 525, das Any-to-Any-Abbildungen zwischen dem logischen Adressraum 104 und dem Speicheradressraum 116 der Speicheranordnung 110 umfasst, dar. Wie in 5B veranschaulicht, kann der logische Adressraum 104 anders dimensioniert sein als der darunterliegende Speicheradressraum 116 der Speicheranordnung 110. In der Ausführungsform der 5B kann der logische Adressraum 104 schlank vorgehalten werden und kann als solcher einen größeren Bereich von LIDs umfassen als der Bereich von Speicheradressen im Speicheradressraum 116. Alternativ oder zusätzlich kann der logische Adressraum 104 mehrere Speicherressourcen 510 überspannen.
  • Die Übersetzungsschicht 105 kann dazu konfiguriert sein, irgendeine LID des logischen Adressraums 104 mit irgendeiner Speicheradresse innerhalb des Speicheradressraums 116 unter Verwendung von Einträgen 526 des Vorwärts-Abbilds 525 zu assoziieren. Dementsprechend kann die Übersetzungsschicht 105 eine Any-to-Any- und/oder Many-to-Any-Übersetzungsschicht zwischen dem logischen Adressraum 104 und den Speicherressourcen (z. B. eine zum Speicher logische Übersetzungsschicht) umfassen. Das Vorwärts-Abbild 525 kann jede geeignete Datenstruktur, einschließlich unter anderem eine Abbildung, eine Hash-Abbildung, eine Baumdatenstruktur, einen binären Baum (B-Tree), eine n-stufige Baumdatenstruktur (B+ Tree), einen bereichscodierten Baum, einen Radix-Baum und/oder dergleichen umfassen. Das Vorwärts-Abbild 525 kann Einträge 526 umfassen, die LIDs darstellen, die zur Verwendung bei der Referenzierung von auf der Speicheranordnung 110 gespeicherten Daten zugeteilt worden sind. Die Einträge 526 können LIDs mit jeweiligen Speicheradressen assoziieren. Das Vorwärts-Abbild 525 kann spärlich besetzt sein und als solches Einträge weglassen, die LIDs entsprechen, die aktuell keinem Client 502 zugeteilt sind und/oder aktuell nicht bei der Referenzierung von auf der Speicheranordnung 110 gespeicherten, gültigen Daten in Gebrauch sind. Das Vorwärts-Abbild 525 kann eine bereichsverschlüsselte Datenstruktur umfassen, wobei ein oder mehrere der Einträge 526 einer Vielzahl von LIDs (z. B. ein Bereich, Umfang und/oder Menge an LIDs) entsprechen. In einigen Ausführungsformen können die Einträge 526 einer Speichergranularität von einer der Speicherressourcen 510 entsprechen. Ein oder mehrere der Einträge 526 können von der Speicheranordnung 110 geschriebenen Datengruppen 130 entsprechen (z. B. Datengruppen, die N – 1 Dateneinheiten 132 umfassen). In der Ausführungsform der 5B enthält das Vorwärts-Abbild 525 einen Eintrag 526, der die LIDs 34 und 35 mit den Speicheradressen 16987 und 16988 assoziiert, einen Eintrag 526, der LID 42439 mit der Speicheradresse 842 assoziiert, und einen Eintrag 526, der einen Umfang von N – 1 LIDs (beginnend bei LID 92680) mit N – 1 Dateneinheiten 132 einer Datengruppe 130 (beginnend bei Speicheradresse 988) assoziiert. Die Einträge 526 können durch die LID in einer Baumdatenstruktur indiziert werden. Die Offenbarung ist in dieser Hinsicht jedoch nicht beschränkt und könnte dazu ausgelegt sein, irgendeine/n geeignete/n Datenstruktur und/oder Indizierungsmechanismus zu verwenden.
  • Mit Bezug zurück auf 5A kann die Speicherdienstschicht 102 ferner ein Protokollmodul 108 umfassen, das dazu konfiguriert ist, Daten auf den Speicherressourcen 510 in einer protokollstrukturierten Speicherkonfiguration (z. B. in einem Speicherprotokoll) zu speichern. Die hierin verwendeten Begriffe „Speicherprotokoll“ oder “Protokollstruktur” beziehen sich auf eine geordnete Anordnung von Daten innerhalb des Speicheradressraums einer Speicherressource 510 (z. B. innerhalb des Speicheradressraums 116 der Speicheranordnung 110). Daten im Speicherprotokoll können persistente Metadaten umfassen oder damit assoziiert sein, die die Daten betreffende Kontextinformationen definieren, wie etwa eine Protokollreihenfolge der Daten und/oder die „logische Schnittstelle“ der Daten (z. B. die mit den Daten assoziierte LID). Dementsprechend kann die Speicherdienstschicht 102 dazu konfiguriert sein, Daten in einem selbstbeschreibenden Kontextformat zu speichern. Die hierin verwendeten Begriffe Kontext- oder selbstbeschreibendes Format beziehen sich auf ein Datenformat, in dem Daten in Assoziation mit persistenten Metadaten gespeichert werden. In einigen Ausführungsformen können die persistenten Metadaten dazu konfiguriert sein, die Daten zu identifizieren, und können als solche die logische Schnittstelle der Daten umfassen und/oder referenzieren (z. B. können die LID(s) umfassen, die mit den Daten assoziiert ist/sind). Die persistenten Metadaten können andere Informationen enthalten, einschließlich u. a. Informationen, die den Eigentümer der Daten, die Zugriffssteuerung, den Datentyp, die relative Position oder Offset der Daten betreffen, Informationen, die mit den Daten assoziierte Speicheroperation(en) (z. B. atomare Speicheroperationen, Transaktionen und/oder dergleichen), Protokollsequenzinformationen, Datenspeicherparameter (z. B. Komprimierungsalgorithmus, Verschlüsselung, usw.), und/oder dergleichen betreffen. Die Speicherdienstschicht 102 kann ferner einen Protokollverwalter 508 umfassen, der zum Verwalten von Teilen des Protokolls (Protokollsegmente) konfiguriert ist. Der Protokollverwalter 508 kann dazu konfiguriert sein, Protokollspeicherressourcen zurückzufordern und/oder zu reinitialisieren, wie etwa Protokollsegmente, Mediaspeichereinheiten, Mediaspeicherabteilungen (z. B. Blöcke löschen), virtuelle Speichereinheiten, virtuelle Speicherteilungen (z. B. Gruppen von Löschblöcken), und/oder dergleichen.
  • Mit Bezug auf 5C ist in einigen Ausführungsformen das Protokollmodul 108 dazu konfiguriert, Daten in einem Kontextdatenformat (Datenpaket 532) zu speichern. In einigen Ausführungsformen ist das Protokollmodul 108 dazu konfiguriert, Datenpakete 532 als Dateneinheiten 132 in die Speicherressourcen zu schreiben. Das Datenpaket 532 der 5C umfasst ein Datensegment 534 und persistente Metadaten 535. Das Datensegment 534 kann jede beliebige Länge und/oder Größe aufweisen. Die persistenten Metadaten 535 können als ein oder mehrere Header-Felder des Datenpakets 532 verkörpert sein. Die persistenten Metadaten 535 können dazu konfiguriert sein, die logische Schnittstelle des Datensegments 534 zu definieren und können als solche die mit dem Datensegment 534 assoziierte/n LID(s) enthalten und/oder diese referenzieren. Die persistenten Metadaten 535 können ferner dazu konfiguriert sein, das Datensegment 534 mit einer/m jeweiligen Anwendung, Benutzer, Client 502, Protokollsegment, und/oder dergleichen zu assoziieren. In einigen Ausführungsformen definieren die persistenten Metadaten 535 eine Protokollreihenfolge des Datenpakets 532 innerhalb eines Speicherprotokolls. Alternativ oder zusätzlich kann das Datenpaket 532 mit persistenten Sequenzmetadaten 537 assoziiert sein, die dazu konfiguriert sind, u. a. eine Protokollreihenfolge des Datenpakets 532 zu definieren. Wie hierin näher offenbart, können die persistenten Sequenzmetadaten 537 eine Sequenzkennung eines Protokollsegments umfassen, welches das Datenpaket 532 umfasst, so dass die Protokollreihenfolge des Datenpakets 532 a) der Sequenzkennung, die mit dem Protokollsegment assoziiert ist, welches das Datenpaket 532 umfasst, und b) der sequenziellen Reihenfolge des Datenpakets 532 innerhalb des Protokollsegments entspricht. Obgleich 5C eine Ausführungsform eines Datenpakets 532 darstellt, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte Daten (z. B. Datensegment 534) mit persistenten Metadaten auf andere Arten assoziieren, einschließlich, ohne darauf beschränkt zu sein, separater Metadatenprotokolleinträge (z. B. Metadatenzeichen), separater Metadatenspeicher, eines separaten Metadatenprotokolls, und/oder dergleichen.
  • Mit Bezug auf 5A kann die Speicherdienstschicht 102 dazu konfiguriert sein, Daten zur Speicherung gemäß Charakteristiken der jeweiligen Speicherressourcen 510 einzurichten. Wie hierin offenbart, kann die Speicheranordnung 110 dazu konfiguriert sein, Daten in jeweilige Datengruppen 130 zu schreiben, die N – 1 Dateneinheiten 132 umfassen. Die Speicherdienstschicht 102 kann dazu konfiguriert sein, Daten, die in die Speicheranordnung 110 gemäß den Datengruppen 130 geschrieben werden, zu gruppieren (z. B. Verschmelzen von Daten in Datensätze 530, die N – 1 Dateneinheiten 132 umfassen). Der Validierungsverwalter 106 kann dazu konfiguriert sein, die Datensätze 530 betreffende Integritätsdaten 144 zu erzeugen, wie hierin offenbart. Der Speicherressourcenverwalter 521 kann Anforderungen ausgeben, die Datensätze 530 in die Speicheranordnung 110 (über die Zwischenverbindung 515 und unter Verwendung des Koordinationsmoduls 101) zu schreiben. Als Reaktion kann die Speicheranordnung 110 die Datensätze 530 innerhalb jeweiliger Datengruppen 130 schreiben, wie hierin offenbart.
  • 5D stellt eine Ausführungsform eines Datensatzes 530D dar, der dazu konfiguriert ist, durch die Speicheranordnung 110 als eine Datengruppe 130 geschrieben zu werden. Wie in 5D veranschaulicht, umfasst der Datensatz 530 N – 1 Dateneinheiten 132A–N – 1. Die Dateneinheiten 132A–N – 1 können jeweilige Datenpakete 532 umfassen, die persistente Metadaten 535 und Datensegment 534 umfassen. Wie hierin offenbart, können die persistenten Metadaten 535 dazu konfiguriert sein, u. a. die mit dem Datensegment 534 assoziierte/n LID(s) zu definieren. Die persistenten Metadaten 535 enthalten Zusatzinformationen, die das Datensegment 534 betreffen, wie etwa eine Protokollreihenfolge des Datensegments 534, und so weiter, wie hierin offenbart. In einigen Ausführungsformen enthalten die persistenten Metadaten 535 ferner Integritätsdaten 144, die den Datensatz 530D betreffen. Wie in 5D veranschaulicht, können die persistenten Metadaten 535A der Dateneinheit 132A Integritätsdaten 144, die den Datensatz 530D betreffen, umfassen. Die Integritätsdaten 144 können Informationen umfassen, um die Inhalte der Dateneinheiten 132A–N – 1 des Datensatzes 530D zu validieren. Die Integritätsdaten 144 können durch den Validierungsverwalter 106 erzeugt werden. Der Validierungsverwalter 106 kann die Integritätsdaten 144 von den Inhalten der Dateneinheiten 132A–N – 1 des Datensatzes 530D (z. B. den Datenpaketen 532A–N – 1) ableiten. Die Integritätsdaten 144 können einen Hash-Wert, eine Prüfsumme, eine Signatur, einen Digest und/oder dergleichen, wie hierin offenbart, umfassen. In einigen Ausführungsformen umfassen die Integritätsdaten 144 eine Vielzahl von den jeweiligen Dateneinheiten 132A–N – 1 entsprechenden Integritätsbezugsgrößen (z. B. Integritätsbezugsgröße 144A–N – 1, die den jeweiligen Datenpaketen 532A–N – 1 entspricht). In der Ausführungsform der 5D sind die Integritätsdaten 144 in den persistenten Metadaten 535A des Datenpakets 532A (Dateneinheit 132A) enthalten. Die Integritätsdaten 144 können in den anderen Dateneinheiten 132B–N – 1 weggelassen werden. Alternativ können die Integritätsdaten 144 in zwei oder mehr von den Dateneinheiten 132A–N – 1 und/oder in jeder der Dateneinheiten 132A–N – 1 enthalten sein.
  • Mit Bezug auf 5E ist in einigen Ausführungsformen das Protokollmodul 108 dazu konfiguriert, Daten mit persistenten Metadaten unter Verwendung von u. a. persistenten Metadateneinträgen 539 zu assoziieren (z. B. ohne die Daten in einem Paket-Format zu schreiben, wie etwa die hierin offenbarten Datenpakete 532). Das Protokollmodul 108 kann dazu konfiguriert sein, die Datensegmente 534 eines Datensatzes 530E mit einem oder mehreren persistenten Metadateneinträgen 539 zu assoziieren, der zusammen mit dem Datensatz 530E in die Speicheranordnung 110 und/oder eine andere Speicherressource 510 geschrieben wird (z. B. an einem separaten Metadatenprotokoll angefügt). Wie in 5E veranschaulicht, kann ein persistenter Metadateneintrag 538 die Inhalte der Dateneinheiten 132A–N – 1 betreffende Kontextmetadaten umfassen (z. B. Datensegmente 534A–N – 1), die Folgendes enthalten können, ohne darauf beschränkt zu sein: die mit den jeweiligen Datensegmenten 534A–N – 1 der Dateneinheiten 132A–N – 1 assoziierten LID(s), Protokollsequenzinformationen, die den Datensatz 530E betreffen, und so weiter. Der Eintrag persistenter Metadaten 539 kann ferner den Datensatz 530E betreffende Integritätsdaten 144 umfassen. Die Integritätsdaten 144 können aus den Inhalten der Dateneinheiten 132A–N – 1 (z. B. Datensegmente 534A–N – 1) abgeleitet werden. In einigen Ausführungsformen umfassen die Integritätsdaten 144 eine jeweilige Integritätsbezugsgröße 144A–N – 1, die den jeweiligen Dateneinheiten 132A–N – 1 (z. B. Datensegmente 534A–N – 1) entspricht. Die Integritätsdaten 144 können durch den Validierungsverwalter 106 erzeugt werden und im Datensatz 530E enthalten sein, wie hierin offenbart. Obgleich 5E einen persistenten Metadateneintrag 539 innerhalb der Dateneinheit 132A darstellt (mit dem Datensegment 534A), ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte auch so ausgelegt sein, dass der persistente Metadateneintrag 539 in irgendeiner der Dateneinheiten 132A–N – 1 des Datensatzes 530D, in einer Vielzahl von Dateneinheiten 132A–N – 1, und/oder in einer separaten Dateneinheit 132A–N – 1 (separat von einem Datensegment 534A–N – 1, wie in 5F veranschaulicht) enthalten ist.
  • 5F veranschaulicht eine andere Ausführungsform eines Datensatzes 530F, der dazu konfiguriert ist, Daten mit persistenten Metadaten, einschließlich Integritätsdaten 144, zu assoziieren. In der Ausführungsform der 5F können die Dateneinheiten 132A–N und/oder Datensegmente 534 eine feste Größe aufweisen, so dass die Dateneinheit 132A–N – 1 nicht sowohl, ein Datensegment 534A–N – 1 als auch einen persistenten Metadateneintrag 539 aufnehmen kann. Dementsprechend ist in der Ausführungsform der 5F die Speicherdienstschicht 102 dazu konfiguriert, Daten in Datensätze 530F anzuordnen, die N – 2 Dateneinheiten 132 umfassen, und den persistenten Metadateneintrag 539 entsprechend den Dateneinheiten 132A–N – 2 in einer separaten Dateneinheit 132 innerhalb des Datensatzes 530F (z. B. Dateneinheit 132A) zu speichern.
  • 5G ist ein Blockdiagramm, das weitere Ausführungsformen eines Datensatzes 530G darstellt, die zum Assoziieren von Daten mit persistenten Metadaten, einschließlich Integritätsmetadaten 144, konfiguriert sind. In der Ausführungsform der 5G ist das Protokollmodul 108 dazu konfiguriert, einen Speicher für persistente Metadaten zu führen, der Daten betrifft, die in die Speicheranordnung 110 und/oder andere Speicherressourcen 510 (z. B. ein Metadatenprotokoll 560) geschrieben werden. Das Protokollmodul 108 kann persistente Metadateneinträge 539, die den Datensätzen 530G entsprechen, die in die Speicheranordnung 110 geschrieben werden, anfügen. In der Ausführungsform der 5G ist die Speicherdienstschicht 102 dazu konfiguriert, Daten in Datensätze 530G zu gruppieren, die N – 1 Datensegmente 534A–N – 1 umfassen, so dass jedes Datensegment 534A–N einer jeweiligen Dateneinheit 132A–N der Speicheranordnung 110 entspricht. Das Protokollmodul 108 kann dazu konfiguriert sein, persistente, absturzsichere, den Datensatz 530G betreffende Metadaten zu führen, indem u. a. ein persistenter Metadateneintrag 539, der dem Datensatz 530G entspricht, an ein Metadatenprotokoll 560 angefügt wird. Der Eintrag persistenter Metadaten 539 kann die Datensegmente 534A–N – 1 betreffende Kontextmetadaten umfassen, die Folgendes enthalten können, ohne darauf beschränkt zu sein: mit den Datensegmenten 534A–N – 1 assoziierte LID(s), Speicheradressen der Datensegmente 534A–N – 1 (auf der Speicheranordnung 110), Integritätsdaten 144, und so weiter. Die Integritätsdaten 144 können aus den Inhalten der Dateneinheiten 132A–N – 1 (Datensegmente 534A–N – 1) abgeleitet werden, wie hierin offenbart. Die Protokollreihenfolge der Datensegmente 534A–N – 1 kann u. a. basierend auf der Protokollreihenfolge des persistenten Metadateneintrages 539 innerhalb der Metadaten 560 bestimmt werden.
  • Obgleich Ausführungsformen der hierin beschriebenen Datensätze 530D–G eine bestimmte Anzahl von Dateneinheiten 132 umfassen, die bestimmte Arten von Daten (z. B. Datenpakete 532, Datensegmente 534, und so weiter) umfassen, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte so ausgelegt werden, dass die Speicherung von Daten in Datengruppen 130 auf der Speicheranordnung 110 in irgendeiner geeigneten Konfiguration verwaltet wird (z. B. irgendwelche Datengruppen 130 und/oder Datensätze 530, die irgendeine Anzahl und/oder Anordnung von Dateneinheiten 132 umfassen). In ähnlicher Weise ist die Offenbarung, obwohl bestimmte Mechanismen zum Assoziieren von Daten mit persistenten Metadaten hierin beschrieben werden, in dieser Hinsicht nicht beschränkt und könnte so ausgelegt sein, dass Daten, die in einer Datengruppe 130 auf der Speicheranordnung 110 gespeichert sind, unter Verwendung irgendeines geeigneten Mechanismus mit persistenten Metadaten assoziiert werden. Weitere Ausführungsformen zum Verwalten der Speicherung von zugehörigen persistenten Metadaten werden in der US-amerikanischen Anmeldung mit der Seriennr. 14/569,382 mit dem Titel „Generalized Storage Virtualization Interface“, angemeldet am 12. Dezember 2014 für Swaminathan Sundararaman u. a., offenbart, die hiermit durch Verweis aufgenommen wird.
  • Unter Bezug zurück auf 5A kann der Validierungsverwalter 106 dazu konfiguriert sein, auf der Speicheranordnung 110 gespeicherte Datengruppen 130 unter Verwendung gespeicherter Integritätsmetadaten 144, die mit der Datengruppe 130 assoziiert sind, zu validieren. Der Validierungsverwalter 106 kann dazu konfiguriert sein, Datengruppen 130 als Reaktion auf einen die Speicheranordnung 110 betreffenden, ungültigen Abschaltungszustand zu validieren. In der Ausführungsform der 5A umfasst der Validierungsverwalter 106 eine Überwachungseinrichtung 506, die zum Identifizieren von ungültigen Abschaltungszuständen konfiguriert ist. Die Überwachungseinrichtung 506 kann dazu konfiguriert sein, auf die Speicheranordnung 110 (über die Schnittstelle 111) zuzugreifen, um u. a. den Status der Speicheranordnung 110 zu bestimmen, die Speicheranordnung 110 betreffende, ungültige Abschaltungszustände zu detektieren, und/oder dergleichen. Die Überwachungseinrichtung 506 kann ferner dazu konfiguriert sein, ungültige Abschaltungszustände zu identifizieren, die die Speicherdienstschicht 102 und/oder das Rechensystem 501 betreffen.
  • Als Reaktion auf das Detektieren eines ungültigen Abschaltungszustands, der die Speicheranordnung 110 betrifft, kann der Validierungsverwalter 106 dazu konfiguriert sein, eine oder mehrere Wiederherstellungsoperationen (unter Verwendung eines Absturzwiederherstellungsmoduls 516, wie hierin näher offenbart) zu implementieren. Die Wiederherstellungsoperationen des Validierungsverwalters 106 können Anordnungswiederherstellungsoperationen 124 der Speicheranordnung 110 ersetzen. Dementsprechend ist in einigen Ausführungsformen der Validierungsverwalter 106 dazu konfiguriert, Wiederherstellungsoperationen der Speicheranordnung 110 als Reaktion auf die Detektion eines ungültigen Abschaltungszustands zuvorzukommen. Der Validierungsverwalter 106 kann dazu konfiguriert sein, die Speicheranordnung 110 anzuweisen, Wiederherstellungsoperationen an die Speicherdienstschicht 102 durch eine oder mehrere von den folgenden Handlungen zu delegieren: Ausgeben einer Nachricht, von Weisungen, Befehlen, und/oder dergleichen an die Speicheranordnung 110 über die Schnittstelle 111 und/oder unter Verwendung des Koordinationsmoduls 101. In einigen Ausführungsformen ist die Speicheranordnung 110 dazu konfiguriert, einen ungültigen Abschaltungszustand unter Verwendung eines Indikators für die ungültige Abschaltung (z. B. eine Indikatormarke für die ungültige Abschaltung, die durch die Speicheranordnung 110 und/oder andere Entität gesetzt wird) zu detektieren. Dementsprechend ist in einigen Ausführungsformen der Validierungsverwalter 106 dazu konfiguriert, die Speicheranordnung 110 daran zu hindern, vorgesehene Anordnungswiederherstellungsoperationen 124 zu implementieren, durch eine oder mehrere der folgenden Handlungen: Aufheben einer Angabe bezüglich ungültigen Abschaltens der Speicheranordnung 110, Aufheben einer Angabe bezüglich ungültigen Abschaltens eines oder mehrerer der Speicherelemente 112A–N der Speicheranordnung 110, Aufheben einer Angabe bezüglich ungültigen Abschaltens des Rechensystems 501 und/oder dergleichen. In einigen Ausführungsformen konfiguriert die Speicherdienstschicht 102 die Speicheranordnung 110 zur Delegierung von Wiederherstellungsoperationen an die Speicherdienstschicht 102 durch u. a. Einstellen eines Konfigurationsparameters der Speicheranordnung 110, Modifizieren einer Konfigurationsdatei der Speicheranordnung 110 und/oder dergleichen. Die Speicherdienstschicht 102 kann die Speicheranordnung 110 dazu konfigurieren, jeweilige Anordnungswiederherstellungsoperationen 124 durch Übertragen einer Nachricht 566 an die Speicheranordnung 110 über die Zwischenverbindung 515 (und/oder einen anderen Kommunikationskanal) zu blockieren und/oder diesen zuvorzukommen. Die Nachricht 566 kann einen Befehl, eine Weisung, einen Bibliotheksaufruf, einen API-Aufruf, einen RPC-Aufruf, einen Konfigurationsparameter, eine Unterbrechung, ein Signal und/oder eine andere Meldung umfassen. Die Nachricht 566 kann dazu konfiguriert sein, die Speicheranordnung 110 zu veranlassen, jeweilige Absturzwiederherstellungsfunktionalitäten an die Speicherdienstschicht 102 zu delegieren und/oder die Speicheranordnung 110 daran zu hindern, vorgesehene Anordnungswiederherstellungsoperationen 124 auszuführen, wie hierin offenbart. Obgleich bestimmte Mechanismen und/oder Techniken zum Aufheben von Anordnungswiederherstellungsoperationen 124 der Speicheranordnung 110 hierin beschrieben werden, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte dazu ausgelegt sein, eine Ausführung von bestimmten Anordnungswiederherstellungsoperationen 124 unter Verwendung irgendeines/r geeigneten Mechanismus und/oder Technik zu identifizieren und/oder zu blockieren.
  • Der Validierungsverwalter 106 kann dazu konfiguriert sein, die Inhalte von auf der Speicheranordnung 110 gespeicherten Datengruppen 130 zu validieren (z. B. Datensätze 530, die Datenpakete 532, Datensegmente 534 und/oder dergleichen umfassen, zu validieren). Das Validieren einer gespeicherten Datengruppe 130 kann Folgendes umfassen: a) Zugreifen auf die gespeicherte Datengruppe 130 von der Speicheranordnung 110 durch u. a. Ausgeben einer oder mehrerer Leseanforderungen an die Speicheranordnung 110, b) Extrahieren von Integritätsdaten 144 der Zugriffsdaten und c) Vergleichen der Integritätsdaten 144 mit den Zugriffsdaten. Das Zugreifen auf eine gespeicherte Datengruppe 130 kann das Bestimmen von gültige Daten umfassenden Speicheradresse(n) umfassen, unter Verwendung von u. a. der Virtualisierungsmetadaten 505, die durch die Speicherdienstschicht 102 geführt werden (z. B. Vorwärts-Abbild 525). Das Zugreifen auf eine gespeicherte Datengruppe 130 kann das Lesen eines Datensatzes 530, der eine Vielzahl von Dateneinheiten 132 umfasst, von der Speicheranordnung 110 umfassen. Das Extrahieren der Integritätsdaten 144 kann das Extrahieren von Integritätsdaten 144 von einer oder mehreren Dateneinheiten 132A–N 1 des Datensatzes 530 umfassen (basierend auf einer Speicherkonfiguration des Datensatzes 530, wie oben in Verbindung mit 5C5F veranschaulicht). Alternativ, und wie in 5G veranschaulicht, kann das Extrahieren der Integritätsdaten 144 das Zugreifen auf einen den Datensatz 530G betreffenden persistenten Metadateneintrag 539 in einem Metadatenprotokoll 560 umfassen.
  • Der Validierungsverwalter 106 kann bestimmen, dass ein Schreibloch in einer gespeicherten Datengruppe 130 vorhanden ist, als Reaktion auf das Bestimmen, dass der Datensatz 530 nicht den Integritätsdaten 144 entspricht. Der Validierungsverwalter 106 kann einen Hash-Wert entsprechend den Zugriffsdaten (z. B. Inhalte von Dateneinheiten 132A–N – 1) berechnen und den berechneten Hash-Wert mit den entsprechenden Integritätsdaten 144 vergleichen. Als Reaktion auf die Identifizierung eines Schreiblochs kann der Validierungsverwalter 106 eine oder mehrere Wiederherstellungsoperationen 517 unter Verwendung des Absturzwiederherstellungsmoduls 516 ausführen, die folgende Operationen in nicht einschränkender Weise umfassen können: a) Benachrichtigen der Speicheranordnung 110 über das identifizierte Schreibloch; b) Invalidieren der Datengruppe 130; c) Invalidieren von Teil(en) der Datengruppe 130; d) Wiederherstellen beschädigter Daten der Datengruppe 130; e) Anfordern von Ersatzdaten für die Datengruppe 130 und/oder dergleichen. Dementsprechend können die Wiederherstellungsoperationen 517 als „Schreiblochwiederherstellungsoperationen“ und/oder „Absturzwiederherstellungsoperationen“ der Speicherdienstschicht 102 bezeichnet werden.
  • Der Validierungsverwalter 106 kann die Speicheranordnung 110 über ein Schreibloch durch u. a. Übertragen einer Nachricht an die Speicheranordnung 110, die den detektierten Schreiblochzustand betrifft, benachrichtigen. Die Nachricht kann an die Speicheranordnung 110 über die Schnittstelle 111 via Koordinationsmodul 101 (und/oder via einen anderen Kommunikationskanal) übertragen werden. Die Nachricht kann Teile der gespeicherten Datengruppe 130 identifizieren, die ungültige Daten umfassen. Alternativ oder zusätzlich kann die Nachricht gültige Teile der ein Schreibloch enthaltenden, gespeicherten Datengruppe 130 identifizieren. Das Invalidieren einer gespeicherten Datengruppe 130 kann das Ausgeben einer Lösch-, Tilgungs- und/oder TRIM-Nachricht entsprechend der gespeicherten Datengruppe 130 umfassen. Die TRIM-Nachricht kann innerhalb der Speicherdienstschicht 102 ausgegeben werden (z. B. an die Übersetzungsschicht 105), kann an einen oder mehrere Clients 502 ausgegeben werden, kann an die Speicheranordnung 110 ausgegeben werden, und/oder dergleichen. Das Invalidieren einer gespeicherten Datengruppe 130 kann ferner das Entfernen und/oder Invalidieren von die gespeicherte Datengruppe 130 betreffenden Logisch-zu-Speicher-Assoziationen in den Virtualisierungsmetadaten 505 umfassen (z. B. Vorwärts-Abbild 525). Die Wiederherstellungsoperationen 517 können das Invalidieren von Teil(en) einer gespeicherten Datengruppe 130 und/oder das Behalten anderer Teile der gespeicherten Datengruppe 130 umfassen. In einigen Ausführungsformen enthalten die Wiederherstellungsoperationen 517 ferner das Wiederherstellen und/oder das Rekonstruieren von Daten der gespeicherten Datengruppe 130 unter Verwendung von u. a. Metadaten 134, die durch die Speicheranordnung 110 verwaltet werden (z. B. durch Paritätsrekonstruktion). Alternativ oder zusätzlich können die Wiederherstellungsoperationen 517 das Zugreifen auf die gespeicherte Datengruppe 130 betreffende Ersatzdaten von einem Client 502, einem gespiegelten Speicherort (z. B. eine andere Speicherressource 510 und/oder Aufzeichnungsspeicher, weiter unten im Detail offenbart) und/oder dergleichen umfassen. Das Anfordern von Ersatzdaten kann das Ausgeben einer oder mehrerer Anforderungen für Ersatzdaten an einen Client 502, eine Speicheranordnung 110, eine Speicherressource(n) 510, und/oder dergleichen umfassen.
  • Wie in 5B veranschaulicht, kann das Vorwärts-Abbild 525 einen Umfang von N – 1 LIDs (beginnend bei LID 92680) mit einer gespeicherten Datengruppe bei Speicheradresse 988 assoziieren. Als Reaktion auf einen ungültigen Abschaltungszustand kann der Validierungsverwalter 106 bestimmen, dass die gespeicherte Datengruppe 130 bei Speicheradresse 988 ein Schreibloch umfasst. Als Reaktion, und wie in 5H veranschaulicht, kann der Validierungsverwalter 106 die ungültige Datengruppe 130 betreffende LID-Assoziationen entfernen, was das Entfernen des Eintrags 526, der die N – 1 LIDs bei 92680 betrifft, aus dem Vorwärts-Abbild 525 umfassen kann. Dementsprechend können nachfolgende Anforderungen für Daten der N – 1 LIDs bei 92680 eine „leere“ oder „nicht zugeteilte“ Antwort von der Speicherschicht zur Folge haben. Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, die Speicheranordnung 110 des Schreiblochs zu benachrichtigen und/oder die Speicheranordnung 110 anzuweisen, die gespeicherte Datengruppe bei Speicheradresse 988 zu invalidieren.
  • In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, zu identifizieren, welche Dateneinheit(en) 132 einer gespeicherten Datengruppe 130 ungültige Daten 131 umfassen. Der Validierungsverwalter 106 kann dazu konfiguriert sein, gültige Dateneinheiten 132 von ungültigen Dateneinheiten unter Verwendung der jeweiligen Integritätsbezugsgröße 144A–N – 1 zu unterscheiden, wie hierin offenbart. Als Reaktion auf das Identifizieren von ungültigen Daten in der gespeicherten Datengruppe 130 und das Bestimmen, dass die gespeicherte Datengruppe 130 andere, gültige Dateneinheiten umfasst, kann der Validierungsverwalter 106 dazu konfiguriert sein, a) die ungültigen Teile der gespeicherten Datengruppe 130 zu invalidieren, und b) die gültigen Teile der gespeicherten Datengruppe 130 zu behalten. Das Invalidieren eines Abschnittes einer gespeicherten Datengruppe 130 kann das Entfernen von ausgewählten LIDs aus dem Vorwärts-Abbild 525 umfassen. Wie in 5I veranschaulicht, kann der Validierungsverwalter 106 bestimmen, dass eine mit LID 92680 assoziierte Dateneinheit 132 ungültige Daten umfasst, aber dass andere Dateneinheiten 132, abgebildete N – 2 LIDs beginnend bei 92681, gültig sind. Als Reaktion kann der Validierungsverwalter 106 die LID 92680 betreffenden Logisch-zu-Physisch-Assoziationen invalidieren und/oder entfernen und kann Assoziationen behalten, die die anderen N – 2 LIDs betreffen, durch u. a. Modifizieren des Eintrags 526, der die N – 1 LIDs betrifft, wie in 5H veranschaulicht. Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, gültige Daten der gespeicherten Datengruppe 130 auf der Speicheranordnung 110 erneut zu schreiben, was das Aktualisieren des Eintrags 526 umfassen kann, um die Daten mit unterschiedlichen Speicheradressen der Speicheranordnung 110 zu assoziieren.
  • Alternativ oder zusätzlich kann der Validierungsverwalter 106 dazu konfiguriert sein, die Inhalte von einer oder mehreren Dateneinheiten 132 unter Verwendung von u. a. der Speicheranordnung 110 zu rekonstruieren. Wie oben offenbart, kann der Validierungsverwalter 106 dazu konfiguriert sein, Speichereinheit(en) 132, die ungültige Daten umfassen, unter Verwendung von Integritätsdaten 144 zu identifizieren. Der Validierungsverwalter 106 kann basierend auf u. a. der Anzahl von ungültigen Dateneinheiten 132, die in der gespeicherten Datengruppe 130 identifiziert wurden, und/oder den Datenwiederherstellungskapazitäten der Speicheranordnung 110 bestimmen, ob die Dateneinheiten 132 durch die Speicheranordnung 110 rekonstruiert werden können. Wie hierin offenbart, können die durch die Speicheranordnung 110 geführten Anordnungsmetadaten 134 dazu konfiguriert sein, Fehler in einer oder mehreren Dateneinheiten 132 einer Datengruppe 130 zu korrigieren. Der Validierungsverwalter 106 kann basierend darauf, wie viele Dateneinheiten 132 die Anordnungsmetadaten 134 der Speicheranordnung 110 in der Lage sind zu rekonstruieren, bestimmen, ob die Speicheranordnung 110 in der Lage ist, die Inhalte einer jeweiligen Anzahl von Dateneinheiten 132 einer gespeicherten Datengruppe 130 wiederherzustellen. Die Speicheranordnung 110 ist jedoch möglicherweise nicht in der Lage, solche Fehler ohne Informationen, die die Position der Fehler innerhalb der Datengruppe 130 identifizieren, zu korrigieren (z. B. ohne Kenntnis darüber, welche Dateneinheit(en) 132A–N ungültige Daten umfassen).
  • Als Reaktion auf das Bestimmen, dass eine gespeicherte Datengruppe 130 ein Schreibloch umfasst, das durch die Speicheranordnung 110 korrigiert werden kann, kann der Validierungsverwalter 106 eine Anforderung an die Speicheranordnung 110 ausgeben, Teile der gespeicherten Datengruppe 130 wiederherzustellen (über die Anordnungsschnittstelle 111 und/oder unter Verwendung des Koordinationsmoduls 101). Wie oben offenbart, kann die Anforderung Dateneinheiten 132A–N der gespeicherten Datengruppe 130 identifizieren, die ungültige Daten umfassen. Als Reaktion kann die Speicheranordnung 110 die identifizierten Dateneinheiten 132A–N unter Verwendung der Anordnungsmetadaten 134, die der gespeicherten Datengruppe 130 entsprechen, rekonstruieren. Die Speicheranordnung 110 kann ferner dazu konfiguriert sein, die korrigierten Daten in die Speicheranordnung 110 zu schreiben. Alternativ kann die Speicheranordnung 110 die Datengruppe 130 auf eine andere Speicheradresse(n) der Speicheranordnung 110 erneut schreiben. Als Reaktion auf das Bestimmen, dass ein durch den Validierungsverwalter 106 detektiertes Schreibloch korrigiert wurde, kann der Validierungsverwalter 106 die gespeicherte Datengruppe 130 betreffende Logisch-zu-Speicher-Assoziationen behalten und/oder die Logisch-zu-Speicher-Assoziationen aktualisieren, um die erneut geschriebene Datengruppe 130 zu referenzieren. Wenn das Schreibloch unter Verwendung der Speicheranordnung 110 nicht korrigiert werden kann, kann der Validierungsverwalter 106 andere Wiederherstellungsoperationen 517, wie hierin offenbart, implementieren (z. B. die gespeicherte Datengruppe 130 invalidieren, Teile der gespeicherten Datengruppe 130 invalidieren, Ersatzdaten anfordern, und/oder dergleichen).
  • Wie oben offenbart, ist in einigen Ausführungsformen der Validierungsverwalter 106 dazu konfiguriert, jeweilige, ungültige Daten umfassende Dateneinheiten 132 unter Verwendung der jeweiligen Integritätsbezugsgröße 144A–N – 1 zu identifizieren. In einigen Ausführungsformen können die Integritätsdaten 144 einen einzigen Wert, der den Dateneinheiten 132A–N – 1 entspricht, umfassen. Alternativ oder zusätzlich können die Integritätsdaten 144 nicht verfügbar sein (aufgrund eines Schreibfehlers, der die Integritätsdaten 144 umfassende Dateneinheit 132 betrifft). Als Reaktion kann der Validierungsverwalter 106 dazu konfiguriert sein, die gesamte gespeicherte Datengruppe 130 zu invalidieren, wie hierin offenbart.
  • Obgleich die jeweilige Position des Schreiblochs nicht bekannt ist, kann das Schreibloch durch die Speicheranordnung 110 korrigierbar sein. Es ist auch möglich, dass Speicheranordnung 110 nicht in der Lage ist, den Fehler ohne zusätzliche Verifikationsinformationen zu korrigieren. Zum Beispiel können die Inhalte einer gespeicherten Datengruppe 130, die eine jeweilige, ungültige Daten 131 umfassende Dateneinheit 132 enthalten, unter Verwendung von Anordnungsmetadaten 134 rekonstruiert werden. Die Speicheranordnung 110 kann jedoch auch keine Möglichkeit haben zu identifizieren, welche Dateneinheit 132 ungültige Daten 131 aufweist, und/oder keine Möglichkeit zur Validierung einer Rekonstruktion der jeweiligen Dateneinheit 132 haben.
  • Der Validierungsverwalter 106 kann jedoch in der Lage sein, die Position von Schreiblöchern innerhalb einer gespeicherten Datengruppe 130 zu identifizieren und eine korrekte Rekonstruktion der gespeicherten Datengruppe 130 unter Verwendung von u. a. Integritätsdaten 144 zu verifizieren, wie hierin offenbart. In einigen Ausführungsformen kann der Validierungsverwalter 106 versuchen, eine ein Schreibloch umfassende gespeicherte Datengruppe 130 unter Verwendung u. a. einer iterativen Paritätssubstitutionsoperation zu identifizieren und/oder zu korrigieren. Wie oben offenbart, kann eine iterative Paritätssubstitution das Anweisen der Speicheranordnung 110 umfassen, um unterschiedliche Teile einer gespeicherten Datengruppe 130 (unter Verwendung von Anordnungsmetadaten 134) zu rekonstruieren. Der Validierungsverwalter 106 kann versuchen, die rekonstruierten Daten zu validieren, wie hierin offenbart.
  • 5J stellt eine Ausführungsform einer iterativen Paritätssubstitutionsoperation, die durch den Validierungsverwalter 106 implementiert wird, dar. In der Ausführungsform der 5J kann der Validierungsverwalter 106 ein Schreibloch in einer gespeicherten Datengruppe 130 detektieren, ist aber möglicherweise nicht im Stande, die Dateneinheiten 132, die ungültige Daten 131 umfassen, innerhalb der gespeicherten Datengruppe 130 zu identifizieren. Als Reaktion kann der Validierungsverwalter 106 dazu konfiguriert sein, unterschiedliche Teile der gespeicherten Datengruppe 130 iterativ zu rekonstruieren. Der Validierungsverwalter 106 kann dazu konfiguriert sein, unterschiedliche Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 iterativ als ungültig zu bezeichnen, und eine Rekonstruktion der bezeichneten Dateneinheit 132A–N – 1 durch die Speicheranordnung 110 anzufordern (z. B. unter Verwendung von Anordnungsmetadaten 134 der entsprechenden gespeicherten Datengruppe 130, wie hierin offenbart). Der Validierungsverwalter 106 kann versuchen, die rekonstruierten Daten zu validieren, wie hierin offenbart. Der Validierungsverwalter 106 kann bestimmen, dass die gespeicherte Datengruppe 130 richtig rekonstruiert wurde, als Reaktion auf das Validieren von rekonstruierten Daten der gespeicherten Datengruppe 130 unter Verwendung von entsprechenden Integritätsdaten 144. Andernfalls kann der Validierungsverwalter 106 bestimmen, dass die gespeicherte Datengruppe 130 nicht korrigiert werden kann, und kann die gespeicherte Datengruppe 130 invalidieren, wie hierin offenbart.
  • In der Ausführungsform der 5J fordert der Validierungsverwalter 106 iterativ rekonstruierte Datensätze 530J[1]530J[N – 1] von der Speicheranordnung 110 an. Die rekonstruierten Datensätze 530J[1]530J[N – 1] können durch die Speicheranordnung 110 u. a. dadurch erzeugt werden, dass eine andere der Dateneinheiten 132 bezeichnet wird, die unter Verwendung anderer Dateneinheiten 132 der gespeicherten Datengruppe 130 (und den entsprechenden Anordnungsmetadaten 134) zu rekonstruieren ist. In der Ausführungsform der 5J kann der rekonstruierte Datensatz 530J[1] durch die Speicheranordnung 110 als Reaktion auf eine Anforderung zur Rekonstruierung der Inhalte der Dateneinheit 132A erzeugt werden. Der rekonstruierte Datensatz 530J[1] kann deshalb rekonstruierte Daten 538A für die Dateneinheit 132A und Daten der gespeicherten Datengruppe 130 in Dateneinheiten 132B–N – 1 umfassen. Der rekonstruierte Datensatz 530J[2] kann rekonstruierte Daten 538B umfassen, die der Dateneinheit 132B entsprechen, der rekonstruierte Datensatz 530J[3] kann rekonstruierte Daten 538C umfassen, die der Dateneinheit 132C entsprechen, und so weiter (der rekonstruierte Datensatz 530J[N – 1] kann rekonstruierte Daten 538N–1 umfassen, die der Dateneinheit 132N–1 entsprechen). Der Validierungsverwalter 106 kann versuchen, die rekonstruierten Datensätze 530J[1]530J[N – 1] zu validieren durch a) Zugreifen auf Integritätsdaten 144 und b) Vergleichen der Integritätsdaten 144 mit dem rekonstruierten Datensatz 530J[1]530J[N – 1]. Der Validierungsverwalter 106 kann auf die Integritätsdaten 144 wie hierin offenbart zugreifen (z. B. durch Extrahieren der Integritätsdaten 144 aus dem jeweiligen rekonstruierten Datensatz 530J[1]530J[N – 1] und/oder von einem separaten Speicherort, wie etwa ein Metadatenprotokoll 560). Als Reaktion auf das Identifizieren eines rekonstruierten Datensatzes 530J[1]530J[N – 1], der durch die Integritätsdaten 144 validiert wird, bestimmt der Validierungsverwalter 106, dass das Schreibloch korrigiert wurde, und kann die Speicheranordnung 110 anweisen, den identifizierten rekonstruierten Datensatz 530J[1]530J[N – 1] zu behalten und/oder erneut zu schreiben. Der Validierungsverwalter 106 kann die iterative Rekonstruktionsoperation als Reaktion auf das Validieren eines rekonstruierten Datensatzes 530J[1]530J[N – 1] aussetzen (z. B. die Iteration als Reaktion auf die Validierung des ersten rekonstruierten Datensatzes 530J[1] aussetzen). Wenn keiner der rekonstruierten Datensätze 530J[1]530J[N – 1] validiert wird, kann der Validierungsverwalter 106 die gespeicherte Datengruppe 130 invalidieren, wie hierin offenbart.
  • Wie oben offenbart, ist in einigen Ausführungsformen der Validierungsverwalter 106 dazu konfiguriert, eine Teilmenge der auf der Speicheranordnung 110 gespeicherten Datengruppen 130 als Reaktion auf einen ungültigen Abschaltungszustand zu validieren. In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, gespeicherte Datengruppen 130 für die Validierung als Reaktion auf die Detektion einer ungültigen Abschaltung auszuwählen. Der Validierungsverwalter 106 kann gespeicherte Datengruppen 130 auswählen, um auf der Basis irgendeines geeigneten Kriteriums zu validieren. Wie hierin offenbart, ist in einigen Ausführungsformen die Speicherdienstschicht 102 dazu konfiguriert, Daten in die Speicheranordnung 110 mit persistenten Metadaten zu schreiben. In einigen Ausführungsformen wählt der Validierungsverwalter 106 Datengruppen 130 für die Validierung basierend auf u. a. den den gespeicherten Datengruppen 130 entsprechenden persistenten Metadaten aus. Die mit einer gespeicherten Datengruppe 130 assoziierten, persistenten Metadaten können eines oder mehrere aus der Gruppe von: persistente Metadaten 535 eines Datenpakets 532 innerhalb der gespeicherten Datengruppe 130, persistente Sequenzmetadaten 537, ein persistenter Metadateneintrag 539 und/oder dergleichen umfassen.
  • In einigen Ausführungsformen ist der Validierungsverwalter 106 dazu konfiguriert, gespeicherte Datengruppen 130 auszuwählen, die zu der Zeit geschrieben wurden, zu der eine ungültige Abschaltung erfolgte. Die gespeicherten Datengruppen 130, die zur Zeit der ungültigen Abschaltung geschrieben wurden, können unter Verwendung der persistenten Metadaten, die mit den gespeicherten Datengruppen 130 assoziiert sind, identifiziert werden. Wie hierin offenbart, können die mit einer gespeicherten Datengruppe 130 assoziierten persistenten Metadaten Sequenzinformationen umfassen, die den Zeitpunkt angeben können, an dem die gespeicherte Datengruppe 130 in die Speicheranordnung 110 geschrieben wurde. Alternativ oder zusätzlich kann der Validierungsverwalter 106 gespeicherte Datengruppen 130 zur Validierung auf der Basis von Metadaten auswählen, die das Speicherprotokoll betreffen, wie etwa die Speicheradresse eines Protokollanfügungspunktes 109 zum Zeitpunkt der ungültigen Abschaltung, wie hierin offenbart.
  • 6A stellt eine Ausführungsform 600A eines Speicherprotokolls 650 dar, das Daten umfasst, die sequenziell innerhalb eines Speicheradressraums 116 der Speicheranordnung 110 gespeichert wurden. In der Ausführungsform der 6A kann das Protokollmodul 108 den Speicheradressraum 116 in eine Vielzahl von Protokollsegmenten 670 (z. B. Protokollsegmente 670[1]670[N]) partitionieren. Die Protokollsegmente 670 können einen jeweiligen Bereich von Speicheradressen umfassen. Die Protokollsegmente 670 können einer Ansammlung von Protokollspeichereinheiten 671 entsprechen, die als eine Gruppe wiederverwendet werden. Das Protokollmodul 108 kann einen Protokollverwalter 508 umfassen, der dazu konfiguriert ist, die jeweiligen Protokollsegmente 670 zu initialisieren. Das Initialisieren eines Protokollsegments 670 kann das Verschieben von gültigen Daten aus dem Protokollsegment 670 umfassen (sofern vorhanden), so dass vorhandene Daten auf dem Protokollsegment 670 wiederverwendet werden können (z. B. gelöscht und/oder überschrieben). Die Offenbarung ist in dieser Hinsicht jedoch nicht beschränkt und kann so ausgelegt sein, dass der gesamte Speicheradressraum 116 der Speicheranordnung 110 als ein einziges Protokollsegment 670 zu behandeln ist und/oder jede Protokollspeichereinheit 671A–N als ein jeweiliges Protokollsegment 670 zu verwalten ist.
  • In der Ausführungsform der 6A umfassen die Protokollsegmente 670 eine Vielzahl von Protokollspeichereinheiten 671A–N, die zum Speichern von Daten (z. B. Dateneinheiten 132, Datengruppen 130, und/oder dergleichen) in der Lage sind. Die Protokollspeichereinheiten 671A–N können Speicherort(en) auf einer Speicherressource 510, wie etwa der Speicheranordnung 110 entsprechen. Dementsprechend umfassen in der Ausführungsform der 6A die Protokollspeichereinheiten 671A–N jeweilige Datengruppen 130, die in der Lage sind, N – 1 Dateneinheiten 132 auf jeweiligen Speicherelementen 112A–N der Speicheranordnung 110 zu speichern, wie hierin offenbart.
  • Das Protokollmodul 108 kann dazu konfiguriert sein, Daten sequenziell innerhalb der Protokollsegmente 670 anzufügen. Das Protokollmodul 108 kann ferner dazu konfiguriert sein, Daten zu assoziieren, die an das Speicherprotokoll 650 mit persistenten Metadaten angefügt werden. Wie hierin offenbart, können die persistenten Metadaten eines oder mehrere aus der folgenden Gruppe umfassen: persistente Metadaten 535 eines Datenpakets 532 (innerhalb einer Dateneinheit 132 einer Datengruppe 130), persistente Sequenzmetadaten 537, die mit einem oder mehreren Datenpaketen 532 assoziiert sind, und/oder ein persistenter Metadateneintrag 539, der mit den Daten gespeichert wurde (und/oder ein separates Metadatenprotokoll 560), wie hierin offenbart. Die persistenten Metadaten, die innerhalb der jeweiligen Protokollspeichereinheiten 671 gespeichert sind, können verwendet werden, um die Protokollspeicherungsreihenfolge der Protokollsegmente 670 und/oder Protokollspeichereinheiten 671 darin zu bestimmen. In der Ausführungsform der 6A umfassen die Protokollsegmente 670 jeweilige Sequenzmetadaten 673, die dazu konfiguriert sind, eine relative Protokollreihenfolge der Protokollsegmente 670 zu bestimmen. Die Sequenzmetadaten 673 können innerhalb einer ersten Protokollspeichereinheit 671 der jeweiligen Protokollsegmente 670 geschrieben werden (z. B. können in die Dateneinheit 132A der ersten Datengruppe 130 innerhalb jedes Protokollsegments 670 geschrieben werden).
  • Das Protokollmodul 108 kann dazu konfiguriert sein, Datengruppen 130 sequenziell innerhalb des Speicheradressraums 116 anzufügen (z. B. innerhalb von jeweiligen Protokollsegmenten 670[1]670[N]). Die Reihenfolge, in der Datengruppen 130 innerhalb der jeweiligen Protokollsegmente 670[1]670[N] geschrieben werden, kann gemäß der Verfügbarkeit von Protokollsegmenten 670[1]670[N] bestimmt werden. Das Protokollmodul 108 kann dazu konfiguriert sein, die jeweiligen Protokollsegmente 670[1]670[N] zu füllen, bevor Daten an andere Protokollsegmente 670[1]670[N] angefügt werden. Die Protokollsegmente 670[1]670[N] können gemäß irgendeinem geeigneten Füllmuster gefüllt werden.
  • In der Ausführungsform der 6A kann das Protokollmodul 108 die Datengruppen 130[1][A]130[1][P] sequenziell innerhalb des Protokollsegments 670[1] geschrieben haben (durch Ausgabe von Anforderungen, jeweilige Datensätze 530 in die Speicheranordnung 110 zu schreiben), so dass die gespeicherte Datengruppe 130[1][P] später im Speicherprotokoll 650 vorkommt (vor kürzerer Zeit gespeichert) relativ zu der gespeicherten Datengruppe 130[1][A]. 6A veranschaulicht ferner Datengruppen 130, die sequenziell innerhalb der Protokollspeichereinheiten 671 anderer Protokollsegmente 670[2]670[N] gespeichert sind: die Datengruppen 130[2][A]130[2][P] werden sequenziell innerhalb der Protokollspeichereinheiten 671[2][A]671[2][N] des Protokollsegments 670[2] gespeichert, die Datengruppen 130[3][A]130[3][P] werden sequenziell innerhalb der Protokollspeichereinheiten 671[3][A]671[3][N] des Protokollspeichersegments 670[3] gespeichert, die Datengruppen 130[N][A]130[N][P] werden sequenziell innerhalb der Protokollspeichereinheiten 671[N][A]671[N][N] des Protokollsegments 670[N] gespeichert, und so weiter.
  • Das Speichermodul 130 kann Protokollsegmente 670[1]670[N] mit jeweiligen Sequenzmetadaten 673 kennzeichnen, wie oben offenbart. Die Sequenzmetadaten 673 können dazu konfiguriert sein, die Reihenfolge zu definieren, in der die Protokollsegmente 670[1]670[N] gefüllt wurden. Dementsprechend kann die Reihenfolge, in der die Datengruppen 130[1][A]130[N][P] in die Speicheranordnung 110 geschrieben wurden, definiert werden durch u. a. die Sequenzinformationen 673[1]673[Y] der Protokollsegmente 670[1]670[N]. In einigen Ausführungsformen werden die Sequenzinformationen 673[1]673[Y] an vorbestimmten Positionen innerhalb der Protokollsegmente 670[1]670[N] gespeichert (z. B. in einer ersten Dateneinheit 132 einer ersten Datengruppe 130 innerhalb eines Protokollsegments 670, und/oder dergleichen).
  • In der Ausführungsform der 6A können die Sequenzinformationen 673[Y] dem Kopf 654 des Speicherprotokolls 650 entsprechen (vor kürzester Zeit gespeichert), und die Sequenzinformationen 673[1] können dem Ende 655 des Speicherprotokolls 650 (am ältesten) entsprechen. Wie in 6A veranschaulicht, kann die Protokollreihenfolge 652 der Protokollsegmente 670[1]670[N] wie folgt sein: 670[N] am Kopf 654 des Speicherprotokolls 650 (vor kürzester Zeit geschrieben), gefolgt von 670[1], 670[3] und 670[2] am Ende 655 des Speicherprotokolls 650 (das älteste Protokollsegment 670). Die Protokollreihenfolge 652 der jeweiligen gespeicherten Datengruppen 130[1][A]130[N][P] kann auf der Basis der Sequenzinformationen 673 der jeweiligen Protokollsegmente 670 und der relativen Reihenfolge der gespeicherten Datengruppen 130[1][A]130[N][P] innerhalb der jeweiligen Protokollsegmente 670 bestimmt werden. In der Ausführungsform der 6A ist die Protokollreihenfolge 652 vom Kopf 654 des Speicherprotokolls 650 (vor kürzester Zeit gespeichert) bis zum Ende 655 des Speicherprotokolls 650 (am ältesten): 130[N][P]130[N][A], 130[1][P]130[1][A], 130[3][P]130[3][A] und 130[2][P]130[2][A].
  • Wie oben offenbart, kann der Validierungsverwalter 106 dazu konfiguriert sein, Datengruppen 130 auszuwählen, um diese basierend auf der Protokollreihenfolge 652 der gespeicherten Datengruppen 130 zu validieren. Der Validierungsverwalter 106 kann dazu konfiguriert sein, gespeicherte Dateneinheiten 132 für die Validierung am Kopf 654 des Speicherprotokolls 650 auszuwählen (z. B. vor kürzester Zeit gespeichert), da solche Datengruppen 130 mit größerer Wahrscheinlichkeit durch den ungültigen Abschaltungszustand beeinträchtigt wurden. Im Vergleich dazu kann bei Datengruppen 130 am Ende 655 des Speicherprotokolls 650 bestimmt werden, dass sie vor der ungültigen Abschaltung geschrieben worden sind und insofern keine Validierung benötigen. In der Ausführungsform der 6A kann der Validierungsverwalter 106 die Dateneinheiten am Kopf 654 des Speicherprotokolls 650 für die Validierung auswählen (z. B. die gespeicherte Datengruppe 130[N][P]). Der Validierungsverwalter 106 kann dazu konfiguriert sein, gespeicherte Datengruppen 130 am und/oder nahe des Kopfes 654 des Speicherprotokolls 650 (z. B. innerhalb des Protokollsegments 670[N] und/oder des Protokollsegments 670[1]) zu validieren. In einigen Ausführungsformen validiert der Validierungsverwalter 106 gespeicherte Datengruppen 130 innerhalb eines Validierungsbereichs 118. Der Validierungsbereich 118 kann einen Bereich innerhalb des Speicheradressraums 116 umfassen. In der Ausführungsform der 6A enthält der Validierungsbereich 118 das Protokollsegment 670[N] und einen Teil des Protokollsegments 670[1]. Dementsprechend kann der Validierungsbereich 118 getrennte und/oder nicht durchgehende Speicheradresssätze innerhalb des Speicheradressraums 116 der Speicheranordnung 110 umfassen (z. B. und/oder innerhalb anderer Speicherressourcen). Der Validierungsverwalter 106 kann die Größe des Validierungsbereichs 118 so auswählen, dass gespeicherte Datengruppen 130 enthalten sind, die durch den ungültigen Abschaltungszustand beeinträchtigt worden sein könnten (z. B. Datengruppen 130, die zum Zeitpunkt der ungültigen Abschaltung oder nahe an diesem Zeitpunkt geschrieben wurden). Dementsprechend kann der Validierungsbereich 118 gemäß einer Geschwindigkeit der Schreiboperationen, die durch die Speicherdienstschicht 102 zum Zeitpunkt der ungültigen Abschaltung ausgeführt werden, dimensioniert sein. Der Validierungsverwalter 106 kann dazu konfiguriert sein, den Validierungsbereich 118 zu erweitern als Reaktion auf das Bestimmen, dass die Speicherdienstschicht 102 Schreiboperationen mit einer relativ hohen Geschwindigkeit ausgegeben hat, und den Validierungsbereich 118 zu verkleinern als Reaktion auf das Bestimmen, dass die Speicherdienstschicht 102 Schreiboperationen mit geringerer Geschwindigkeit ausgegeben hat. Der Validierungsverwalter 106 kann die Geschwindigkeit der Schreiboperationen, die auf der Speicheranordnung 110 durchgeführt werden, unter Verwendung von Virtualisierungsmetadaten 505, die durch die Speicherschicht 102 geführt werden, unter Verwendung von Metadaten, die durch die Speicheranordnung 102 geführt werden, und/oder dergleichen bestimmen und/oder schätzen. Der Validierungsverwalter 106 kann dazu konfiguriert sein, gespeicherte Datengruppen 130 innerhalb des Validierungsbereichs 118 zu validieren, wie hierin offenbart. Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, einen Zugriff auf Daten zu verhindern, die innerhalb des Validierungsbereichs 118 gespeichert sind (z. B. Daten, die in Datengruppen 130 auf Speicheradressen innerhalb des Validierungsbereichs 118 gespeichert sind), bis die Validierungsoperationen abgeschlossen sind. Der Validierungsverwalter 106 kann den Zugriff auf andere Teile des Speicheradressraums 116 gestatten (z. B. kann den Zugriff auf Daten gestatten, die innerhalb von gespeicherten Datengruppen 130 auf Speicheradressen außerhalb des Validierungsbereichs 118 gespeichert sind).
  • 6B stellt Ausführungsformen von Protokollspeicheroperationen dar, die durch das Protokollmodul 108 der Speicherdienstschicht 102 durchgeführt werden. Das Protokollmodul 108 kann dazu konfiguriert sein, Daten an einem Anfügungspunkt 109 innerhalb des Speicheradressraums 116 der Speicheranordnung 110 anzufügen (z. B. innerhalb von jeweiligen Protokollsegmenten 670). Dementsprechend kann der Anfügungspunkt 109 einem Kopf 654 des Speicherprotokolls 650 entsprechen. In der Ausführungsform der 6B entspricht der aktuelle Anfügungspunkt 109 der Speicheradresse 682 innerhalb des Protokollsegments 670[1]. Als Reaktion darauf, dass Daten in die Datengruppe 130 an der Speicheradresse 682 geschrieben werden, kann das Protokollmodul 108 den Anfügungspunkt 109 zu einer nächsten Speicheradresse innerhalb des Protokollsegments 670[1] (sofern vorhanden) vorschieben 681. Wenn das Protokollsegment 670[1] gefüllt ist, kann das Protokollmodul 108 den Anfügungspunkt 109 zu einem nächsten verfügbaren Protokollsegment 670 hochzählen. Der hierin verwendete Begriff „verfügbares“ Protokollsegment 670 bezieht sich auf ein Protokollsegment 670, das durch das Protokollmodul 108 gelöscht und/oder überschrieben werden kann (z. B. ein Protokollsegment 670, das keine gültigen Daten umfasst, die behalten werden müssen).
  • Protokollsegmente 671, die gültige Daten umfassen, können „nicht verfügbar“, „unbeschreibbar“ und/oder in einem „unbeschreibbaren“ Zustand sein. In der Ausführungsform der 6B kann das Protokollsegment 670[2] für die Verwendung durch das Protokollmodul 108 nicht verfügbar sein (z. B. kann das Protokollsegment 670[2] gültige Daten umfassen, die mit einer oder mehreren LIDs des logischen Adressraums 104 assoziiert sind). Wie oben offenbart, kann das Protokollmodul 108 einen Protokollverwalter 508 umfassen, der dazu konfiguriert ist, Protokollsegmente 670 für die Wiederverwendung zurückzufordern. Das Zurückfordern eines Protokollsegments 670 kann das Verschieben von gültigen Daten, die innerhalb des Protokollsegments 670 gespeichert sind, (sofern vorhanden) durch u. a. das erneute Schreiben der Daten in ein anderes Protokollsegment 670 umfassen. Das Zurückfordern eines Protokollsegments 670 kann ferner das Löschen der Inhalte des Protokollsegments 670, das Aufzeichnen, dass das Protokollsegment 670 für die Verwendung verfügbar ist, und/oder dergleichen umfassen.
  • Nach dem Füllen des Protokollspeichersegments 670[1] kann das Protokollmodul 108 den Anfügungspunkt 109 zu einer nächsten verfügbaren Speicherabteilung 670[3] (Speicheradresse 683) vorschieben 681. Das Protokollmodul 108 kann Daten an den Anfügungspunkt 109 durch u. a. das Schreiben von Daten an jeweilige Speicheradressen innerhalb des Protokollsegments 670[3] anfügen (z. B. Datensätze 530 als jeweilige Datengruppen 130 auf die Speicheranordnung 110 schreiben). Das Protokollmodul 108 kann ferner dazu konfiguriert sein, Sequenzmetadaten 673 in die Protokollsegmente 670 zu schreiben, wie hierin offenbart (z. B. Sequenzmetadaten 673 in die Datengruppe 130 an einer ersten Speicheradresse innerhalb der jeweiligen Protokollsegmente 670 zu schreiben).
  • Das Protokollmodul 108 kann dazu konfiguriert sein, Daten an die Speicheradresse 682 anzufügen, was Folgendes umfassen kann: a) Verschmelzen von Dateneinheiten 132A–N – 1 zur Speicherung als eine Datengruppe 130 wie hierin offenbart (z. B. Gruppieren von Dateneinheiten 132A–N – 1 in einen Datensatz 530) und b) Erzeugen von Integritätsdaten 144, die dem Datensatz 530 entsprechen (unter Verwendung des Validierungsverwalters 106). Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, die Integritätsdaten 144 innerhalb des Datensatzes 530 einzuschließen (z. B. die Integritätsdaten 144 innerhalb eines oder mehrerer der Dateneinheiten 132A–N einzuschließen). Alternativ oder zusätzlich kann der Validierungsverwalter 106 dazu konfiguriert sein, die Integritätsdaten 544 in eine separate Speicherressource, wie etwa ein Metadatenprotokoll 560, zu schreiben. Die Daten, die in die Datengruppe 130 an der Speicheradresse 682 geschrieben wurden, können mit jeweiligen LIDs 104A–N – 1 assoziiert werden. Das Anfügen der Daten an die Speicheradresse 682 kann ferner das Aufzeichnen von persistenten Metadaten enthalten, um die Dateneinheiten 132A–N – 1 mit jeweiligen LIDs zu assoziieren. Die persistenten Metadaten können persistente Metadaten 535 eines Datenpakets 532, einen persistenten Metadateneintrag 539 innerhalb einer oder mehrerer der Dateneinheiten 132A–N, einen persistenten Metadateneintrag 539, der an ein separates Metadatenprotokoll 560 angefügt ist, und/oder dergleichen umfassen. In einigen Ausführungsformen sind die Integritätsdaten 144 mit anderen persistenten Metadaten eingeschlossen, wie etwa ein dem Datensatz 530 entsprechender persistenter Metadateneintrag 539. Das Anfügen von Daten an die Speicheradresse 682 kann ferner das Aktualisieren der Virtualisierungsmetadaten 505 durch u. a. Aufzeichnen eines Eintrags 526 im Vorwärts-Abbild 525 zum Assoziieren der LIDs 104A–N – 1 mit der gespeicherten Datengruppe 130 an der Speicheradresse 682 umfassen.
  • Das Protokollmodul 108 kann dazu konfiguriert sein, den Datensatz 530 an das Speicherprotokoll 650 durch Ausgabe einer Schreibanforderung an die Speicheranordnung 110 (unter Verwendung des Koordinationsmoduls 101) anzufügen. Als Reaktion kann die Speicheranordnung 110 die Dateneinheiten 132A–N – 1 innerhalb einer Datengruppe 130 an der Speicheradresse 683 (z. B. auf jeweiligen Speicherelementen 112A–N der Speicheranordnung 110) schreiben. Die Speicheranordnung 110 kann ferner dazu konfiguriert sein, der Datengruppe 130 entsprechende Anordnungsmetadaten 134 zu erzeugen und/oder zu speichern.
  • Wie oben offenbart, kann der Validierungsverwalter 106 dazu konfiguriert sein, als Antwort auf eine ungültige Abschaltung gespeicherte Datengruppen 130 zur Validierung auf der Basis von u. a. der Speicheradresse des Anfügungspunktes 109 auszuwählen. In der Ausführungsform der 6B kann eine ungültige Abschaltung auftreten, wenn der Datensatz 530 in eine Datengruppe 130 an der Speicheradresse 682 durch die Speicheranordnung 110 geschrieben wird. Als Reaktion auf die ungültige Abschaltung kann der Validierungsverwalter 106 eine oder mehrere Wiederherstellungsoperationen implementieren. Wie hierin offenbart, können die Wiederherstellungsoperationen des Validierungsverwalters 106 anstelle von einer oder mehreren Anordnungswiederherstellungsoperationen 124 der Speicheranordnung 110 ausgeführt werden.
  • Der Validierungsverwalter 106 kann dazu konfiguriert sein, gespeicherte Datengruppen 130 zur Validierung auf der Basis von u. a. der Speicheradresse des Anfügungspunktes 109 auszuwählen. Der Validierungsverwalter 106 kann die Speicheradresse des Anfügungspunktes 109 unter Verwendung des Protokollmoduls 108 bestimmen (z. B. basierend auf Sequenzmetadaten 673, die auf den Protokollsegmenten 670 gespeichert sind, und/oder dergleichen). In einigen Ausführungsformen ist das Protokollmodul 108 dazu konfiguriert, die Speicheradresse des Anfügungspunktes 109 im persistenten Speicher zu führen. Das Protokollmodul 108 kann die Speicheradresse des Anfügungspunktes 109 durch u. a. Zugreifen auf den persistenten Speicher bestimmen. In einer weiteren Ausführungsform bestimmt das Protokollmodul 108 die Speicheradresse des Anfügungspunktes 109 durch u. a. Zugreifen auf die Inhalte des Speicherprotokolls 650, Zugreifen auf ein separates Metadatenprotokoll 560 und/oder dergleichen. Obgleich bestimmte Techniken zum Bestimmen einer Speicheradresse eines Protokollanfügungspunktes 109 hierin beschrieben werden, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte ausgelegt sein, die Speicheradresse des Anfügungspunktes 109 nach einer ungültigen Abschaltung unter Verwendung irgendeiner/s geeigneten Technik oder Mechanismus zu speichern und/oder zu bestimmen.
  • In einer Ausführungsform ist der Validierungsverwalter 106 dazu konfiguriert, eine oder mehrere gespeicherte Datengruppen 130 am Kopf 654 des Speicherprotokolls 650 (z. B. an dem bestimmten Anfügungspunkt 109) zu validieren. Speicheroperationen, die am Kopf 654 des Speicherprotokolls 650 gespeicherte Datengruppen 130 betreffen, können durch die ungültige Abschaltung unterbrochen worden sein, was ein Schreibloch (und/oder andere Schreibfehler) zur Folge hat. Der Validierungsverwalter 106 kann die zu validierenden, gespeicherten Datengruppen 130 auf der Basis der bestimmten Speicheradresse des Anfügungspunktes 109 auswählen. In der Ausführungsform der 6B kann der Validierungsverwalter 106 die an der Speicheradresse 682 gespeicherte Datengruppe 130 für die Validierung (auf der Basis der Speicheradresse des Anfügungspunktes 109) auswählen. Der Validierungsverwalter 106 kann die gespeicherte Datengruppe 130 validieren, wie hierin offenbart (z. B. durch Zugreifen auf die Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 und Vergleichen der Inhalte der Dateneinheiten 132A–N – 1 mit Integritätsdaten 144 der gespeicherten Datengruppe 130). Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, ein Schreibloch in der gespeicherten Datengruppe 130 als Reaktion auf die Bestimmung, dass gespeicherte Daten der Datengruppe 130 nicht den Integritätsdaten 144 entsprechen, detektieren. Als Reaktion auf die Bestimmung, dass die gespeicherte Datengruppe 130 unvollständig ist, kann der Validierungsverwalter 106 a) die gespeicherte Datengruppe 130 invalidieren (z. B. den Eintrag, der die LIDs 104A–N – 1 mit der an der Speicheradresse 682 gespeicherten Datengruppe 130 assoziiert, entfernen), b) die Speicheranordnung 110 benachrichtigen und/oder dergleichen. Der Validierungsverwalter 106 kann ferner dazu konfiguriert sein, a) die gespeicherte Datengruppe 130 zu reparieren, b) gültige Teile der gespeicherten Datengruppe 130 zu identifizieren und zu behalten, und so weiter, wie hierin offenbart.
  • In einigen Ausführungsformen validiert der Validierungsverwalter 106 gespeicherte Datengruppen innerhalb eines Validierungsbereichs 118. Der Validierungsbereich 118 kann der bestimmten Speicheradresse des Anfügungspunktes 109 entsprechen. In der Ausführungsform der 6B enthält der Validierungsbereich 118 die Speicheradresse 682, die dem Anfügungspunkt 109 entspricht, und eine oder mehrere Speicheradressen am Kopf 654 des Speicherprotokolls 650. Der Validierungsbereich 118 kann Datengruppen 130, die am Ende 655 des Speicherprotokolls 650 gespeichert sind, ausschließen. Die Größe und/oder Konfiguration des Validierungsbereichs 118 kann auf der Protokollreihenfolge 652 des Speicherprotokolls 650 (z. B. Sequenzmetadaten 673 der jeweiligen Protokollsegmente 670), der Geschwindigkeit von Schreiboperationen, die auf der Speicheranordnung 110 zum Zeitpunkt der ungültigen Abschaltung durchgeführt werden, und/oder dergleichen basieren, wie hierin offenbart.
  • 7 ist ein schematisches Blockdiagramm einer weiteren Ausführungsform eines Systems 700 zur Verwaltung von Speicherfehlern. In der Ausführungsform der 7 umfasst die Speicherdienstschicht 102 ein Metadatenprotokollmodul 708, das zum Führen eines Metadatenprotokolls 560 auf einer Speichereinrichtung 710 konfiguriert ist. Das Metadatenprotokoll 560 kann eine geordnete Sequenz von Metadatenprotokolleinträgen 759 umfassen, die Speicheroperationen entsprechen, die auf der Speicheranordnung 110 (und/oder anderen Speicherressourcen 510) implementiert sind. Die Speichereinrichtung 710 kann von anderen Speicherressourcen 510 der Speicherdienstschicht 102, einschließlich der Speicheranordnung 110, getrennt sein. In einigen Ausführungsformen umfasst die Speichereinrichtung 710 eine byteadressierbare Speichereinrichtung, wie etwa eine Speichereinrichtung mit persistentem Speicher (z. B. batteriegepufferter RAM), Autocommit-Speicher, eine Festkörper-Speichereinrichtung, und/oder dergleichen. Die Speichereinrichtung 710 kann an die Speicherdienstschicht 102 über u. a. eine Zwischenverbindung 715 kommunikativ gekoppelt sein. Die Zwischenverbindung 715 kann der Zwischenverbindung 515 der Speicheranordnung 110 entsprechen. Alternativ kann die Zwischenverbindung 715 separat und/oder von der Zwischenverbindung 515 unabhängig sein. In einigen Ausführungsformen umfasst die Zwischenverbindung 715 einen Hochleistungskommunikationsbus, der dazu konfiguriert ist, byteadressierbare Speicheroperationen zu implementieren. Die Zwischenverbindung 715 kann einen Internspeicherbus des Rechensystems 501 umfassen.
  • Wie hierin offenbart, kann die Speicherschicht 102 Hardwarekomponenten, wie etwa Schaltungen, programmierbare Logik, und/oder dergleichen umfassen. In der Ausführungsform der 7 umfassen Teile der Speicherschicht 102, wie etwa der Validierungsverwalter 106 und/oder das Protokollmodul 108, Hardwarekomponenten 702. Teile der Speicherschicht 102 können als auf einem nicht vergänglichen Speichermedium gespeicherte maschinenlesbare Anweisungen verkörpert sein. In der Ausführungsform der 7 kann die Speicherdienstschicht 102 einen nichtflüchtigen Speicher 704 umfassen, der Anweisungen umfasst, die dazu konfiguriert sind, die Hardwarekomponenten 702 zu veranlassen, Funktionalität der Übersetzungsschicht 105, des Validierungsmoduls 106, des Protokollmoduls 108, und so weiter zu implementieren. Der nichtflüchtige Speicher 704 kann Firmware der Hardwarekomponenten 702, ein FPGA, einen FPGA Bitstream, programmierbare Logikkonfigurationsdaten, und/oder dergleichen umfassen. In einigen Ausführungsformen umfasst der nichtflüchtige Speicher 704 einen ROM, EPROM, und/oder dergleichen.
  • In der Ausführungsform der 7 kann das Protokollmodul 108 dazu konfiguriert sein, Daten an ein Speicherprotokoll 650 auf der Speicheranordnung 110 an einem Anfügungspunkt 109 innerhalb eines Speicheradressraums 116 der Speicheranordnung 110 anzufügen, wie hierin offenbart. Das Protokollmodul 108 der 7 kann dazu konfiguriert sein, die Daten in die Speicheranordnung 110 ohne persistente Metadaten zu schreiben (z. B. ohne persistente Metadaten 535 umfassende Datenpakete 532 und/oder ohne persistente Metadateneinträge 539 in die Speicheranordnung 110 zu schreiben). Das Protokollmodul 108 kann dazu konfiguriert sein, persistente, absturzsichere Metadaten zu speichern, die Daten betreffen, die auf der Speicheranordnung 110 (und/oder anderen Speicherressourcen 510) in ein Metadatenprotokoll 560 gespeichert werden. Das Metadatenprotokoll 560 kann durch ein Metadatenprotokollmodul 708 der Speicherdienstschicht 102 geführt werden. Das Metadatenprotokollmodul 708 kann dazu konfiguriert sein, persistente, absturzsichere Metadatenprotokolleinträge 759 anzufügen. Das Metadatenprotokollmodul 708 kann die Metadatenprotokolleinträge 759 an ein geordnetes Metadatenprotokoll 560 innerhalb des Speicheradressraums 716 der Speichereinrichtung 710 anfügen.
  • Die Metadatenprotokolleinträge 759 können Kontextmetadaten umfassen, die Dateneinheiten 132A–N – 1 betreffen, welche in die Speicheranordnung 110 innerhalb der jeweiligen Speichergruppen 130 geschrieben werden. Wie hierin offenbart, kann das Schreiben von Daten in die Speicheranordnung 110 Folgendes umfassen: a) Sammeln eines Datensatzes 530, der eine Vielzahl von Dateneinheiten 132A–N – 1 umfasst, b) Erzeugen von Integritätsdaten 144, die die Dateneinheiten 132A–N – 1 betreffen, und c) Ausgeben einer Schreibanforderung, um die Menge von N – 1 Dateneinheiten 132 als eine Datengruppe 130 auf der Speicheranordnung 110 zu speichern. Als Reaktion kann die Speicheranordnung 110 die Dateneinheiten 132A–N – 1 als eine Datengruppe 130 mit entsprechenden Anordnungsmetadaten 134 auf jeweiligen Speicherelementen 112A–N schreiben. In der Ausführungsform der 7 umfasst das Schreiben von Daten in die Speicheranordnung 110 ferner das Anfügen eines persistenten Metadatenprotokolleintrags 759 in das Metadatenprotokoll 560. Der persistente Metadatenprotokolleintrag 759 kann persistente, absturzsichere Metadaten enthalten, die die Dateneinheiten 132A–N – 1 betreffen, welche in die Speicheranordnung 110 geschrieben werden. Wie in 7 veranschaulicht, kann ein persistenter Metadatenprotokolleintrag 759, der einer gespeicherten Datengruppe 130 entspricht, Folgendes umfassen: LID-Assoziationen, die die Dateneinheiten 132A–N – 1 betreffen, Speicheradressen der Dateneinheiten 132A–N – 1, und so weiter. Der persistente Metadatenprotokolleintrag 759 kann ferner die Dateneinheiten 132A–N – 1 betreffende Integritätsdaten 144 umfassen. In der Ausführungsform der 7 umfasst der persistente Metadatenprotokolleintrag 759 eine Vielzahl von Integritätsbezugsgrößen 144A–N – 1, die den jeweiligen Dateneinheiten 132A–N – 1 entsprechen. In einigen Ausführungsformen umfasst der persistente Metadatenprotokolleintrag 759 ferner Sequenzmetadaten 773, um u. a. eine Protokollreihenfolge des persistenten Metadatenprotokolleintrags 759 innerhalb des Metadatenprotokolls 560 zu definieren. Alternativ kann die Protokollreihenfolge des persistenten Metadatenprotokolleintrags 759 durch einen Speicherort des persistenten Metadatenprotokolleintrags 759 innerhalb des Speicheradressraums 716 der Speichereinrichtung 710 (z. B. innerhalb eines bestimmten Protokollsegments), durch separate Sequenzmetadaten, und/oder dergleichen definiert werden. In einigen Ausführungsformen wird die relative Protokollreihenfolge von gespeicherten Datengruppen 130 durch die Protokollreihenfolge der entsprechenden Metadatenprotokolleinträge 759 definiert. Da die Protokollreihenfolge der gespeicherten Datengruppen innerhalb des Metadatenprotokolls 560 definiert ist, können die Speicheroperationen zum Schreiben der Daten in die Speicheranordnung 110 (und/oder andere Speicherressourcen 510) nicht in Reihenfolge implementiert werden und/oder müssen in Bezug auf die Zeit nicht strikt geordnet werden. Dementsprechend kann in einigen Ausführungsformen das Protokollmodul 108 Daten an der Speicheranordnung 110 und/oder anderen Speicherressourcen 510 in einer anderen Reihenfolge anfügen als die Reihenfolge, in der die entsprechenden Anforderungen empfangen wurden. Das Protokollmodul 108 kann Daten aufgrund irgendeiner Anzahl von Zuständen nicht in Reihenfolge anfügen, einschließlich unter anderem: Leistungsüberlegungen, eine Dienstgüte(Quality of Service, QoS)-Richtlinie, Verfügbarkeit der Daten (z. B. Datenquellenbandbreite, direkter Speicherzugriff (Direct Memory Access, DMA) und/oder Latenz aufgrund Fern-DMA, und/oder dergleichen), Verfügbarkeit der Speicherressourcen 510, und/oder dergleichen.
  • Der Validierungsverwalter 106 kann dazu konfiguriert sein, Wiederherstellungsoperationen 517 für die Speicherdienstschicht 102 als Reaktion auf die Detektion einer ungültigen Abschaltung (durch die Überwachungseinrichtung 506) zu implementieren. Wie hierin offenbart, kann der Validierungsverwalter 106 gespeicherte Datengruppen 130 für die Validierung basierend auf einer Protokollreihenfolge der gespeicherten Datengruppen 130 auswählen. Der Validierungsverwalter 106 kann die Protokollreihenfolge der gespeicherten Datengruppen 130 unter Verwendung des Metadatenprotokollmoduls 708 bestimmen, das die Speicheradresse(n) der Datengruppen 130, die zum Zeitpunkt der ungültigen Abschaltung in die Speicheranordnung 110 geschrieben wurden, identifizieren kann. Das Metadatenprotokollmodul 708 kann die Speicheradresse(n) auf der Basis der Protokollreihenfolge der Metadatenprotokolleinträge 759 innerhalb des Metadatenprotokolls 560 identifizieren (z. B. die Speicheradressen, die den Metadatenprotokolleinträgen 759 am Kopf des Metadatenprotokolls 560 entsprechen).
  • 8A ist ein schematisches Blockdiagramm einer weiteren Ausführungsform eines Systems 800A zur Verwaltung von Speicherfehlern. In der Ausführungsform der 8A umfasst die Speicherdienstschicht 102 ein Aufzeichnungsmodul 808, das dazu konfiguriert ist, u. a. den Aufzeichnungsspeicher 810 zu verwalten. Der Aufzeichnungsspeicher 810 kann Hochleistungsspeicherressourcen, wie etwa persistentes RAM, batteriegepuffertes RAM, Autocommit-Speicher, Festkörper-Speicherressourcen, und/oder dergleichen umfassen. Der Aufzeichnungsspeicher 810 kann an die Speicherdienstschicht 102 über eine Zwischenverbindung 815 kommunikativ gekoppelt sein, die in einigen Ausführungsformen einen Internspeicherbus des Rechensystems 501 umfasst. Das Aufzeichnungsmodul 808 kann dazu konfiguriert sein, Datensätze 530 zur Speicherung auf der Speicheranordnung 110 als jeweilige Datengruppen 130 zu verschmelzen, wie hierin offenbart. Das Aufzeichnungsmodul 808 kann dazu konfiguriert sein, eingehende Schreibanforderungen zu puffern und/oder in eine Warteschlange einzureihen, um N – 1 Dateneinheiten 132 zur Speicherung als eine Datengruppe 130 auf der Speicheranordnung 110 zu sammeln (z. B. N – 1 Dateneinheiten 132 in einem Datensatz 530 sammeln). Der Validierungsverwalter 106 kann dazu konfiguriert sein, für die Datensätze 530 Integritätsdaten 144 zu erzeugen, wie hierin offenbart.
  • Das Aufzeichnungsmodul 808 kann dazu konfiguriert sein, Datensätze 530, die in die Speicheranordnung 110 geschrieben werden, in den Aufzeichnungsspeicher 810 als einen Aufzeichnungseintrag 830 (z. B. als einen Aufzeichnungseintrag 830A) zu schreiben. Der Aufzeichnungseintrag 830A kann die Inhalte der Dateneinheiten 132A–N – 1, die Dateneinheiten 132A–N – 1 betreffende Metadaten (z. B. mit den Dateneinheiten 132A–N – 1 assoziierte LID(s)), und/oder den Dateneinheiten 132A–N – 1 entsprechende Integritätsdaten 144 umfassen. In einigen Ausführungsformen enthält der Aufzeichnungseintrag 830A ferner Speicheradressen, auf die der Datensatz 530 auf der Speicheranordnung 110 gespeichert wird. In einigen Ausführungsformen umfasst der Aufzeichnungseintrag 830A Statusmetadaten 833, um anzugeben, ob die Dateneinheiten 132A und/oder 132B in die Speicheranordnung 110 geschrieben wurden, und/oder ob der Aufzeichnungseintrag 830A zur Speicherung auf der Speicheranordnung 110 bereit ist (z. B. ob der Aufzeichnungseintrag 830A N – 1 Dateneinheiten 132 umfasst).
  • In einigen Ausführungsformen puffert das Aufzeichnungsmodul 808 eingehende Daten im Aufzeichnungsspeicher 810 und/oder reiht sie dort in Warteschlangen ein. Das Aufzeichnungsmodul 808 kann dazu konfiguriert sein, Dateneinheiten 132 in jeweiligen Datensätzen 530 innerhalb des Aufzeichnungsspeichers 808 zu sammeln (und/oder durch Schreiben der Dateneinheiten 132 in den Aufzeichnungsspeicher 810). Der Aufzeichnungsspeicher 810 kann eine persistente, absturzsichere Speicherressource umfassen. Dementsprechend kann die Speicherdienstschicht 102 die Erledigung von eingehenden Schreibanforderungen, die sich auf jeweilige Dateneinheiten 132 beziehen, bestätigen, wenn die Dateneinheiten 132 in den Aufzeichnungsspeicher 810 geschrieben werden und bevor die Dateneinheiten 132 in einem Datensatz 530 eingeschlossen und/oder in die Speicheranordnung 110 als Datengruppe 130 geschrieben werden.
  • Die Speicherdienstschicht 102 kann ferner ein Absturzwiederherstellungsmodul 516 umfassen, das dazu konfiguriert ist, sich nach ungültigen Abschaltungszuständen, die das Rechensystem 501, die Speicheranordnung 110 und/oder dergleichen betreffen, wiederherzustellen, wie hierin offenbart. Das Wiederherstellungsmodul 516 kann dazu konfiguriert sein, sich nach einer ungültigen Abschaltung der Speicherdienstschicht 102, die nach dem Schreiben von Daten von einer oder mehreren Schreibanforderungen in den Aufzeichnungsspeicher 810 und vor dem Schreiben der Daten in die Speicheranordnung 110 als eine Datengruppe 130 aufgetreten ist, wiederherzustellen. In der Ausführungsform der 8A kann das Aufzeichnungsmodul 808 Anforderungen zum Schreiben von Dateneinheiten 132A und 132B in die Speicheranordnung 110 empfangen haben. Die Speicherdienstschicht 102 kann die Erledigung der jeweiligen Schreibanforderungen als Reaktion auf die Speicherung der Dateneinheiten 132A und 132B im Aufzeichnungsspeicher 810 bestätigen, vor dem Formen eines vollen Datensatzes 530 aus N – 1 Dateneinheiten 132 und/oder vor dem Schreiben der Dateneinheiten 132A und/oder 132B in die Speicheranordnung 110.
  • Die Speicherschicht 102 kann eine ungültige Abschaltung erleiden, die die Speicherdienstschicht 102 beeinträchtigen kann. Die ungültige Abschaltung kann auftreten, bevor die Dateneinheiten 132A und/oder 132B in die Speicheranordnung 110 geschrieben werden. Da der Aufzeichnungsspeicher 810 persistente, absturzsichere Speicherressourcen umfasst, kann der Aufzeichnungseintrag 830A, der die Dateneinheiten 132A und 132B umfasst, nach der ungültigen Abschaltung der Speicherdienstschicht 102 und/oder der Speicherressourcen 510 (einschließlich Aufzeichnungsspeicher 810) zugänglich sein. Das Wiederherstellungsmodul 516 kann die ungültige Abschaltung detektieren und kann als Reaktion das Aufzeichnungsmodul 808 dazu konfigurieren, das Puffern eines die Dateneinheiten 132A und/oder 132B umfassenden Datensatzes 530 und/oder Einreihen desselben in eine Warteschlange zur Speicherung als eine Datengruppe 130 auf der Speicheranordnung 110 wiederaufzunehmen.
  • 8B ist ein schematisches Blockdiagramm eines Systems 800B zur Verwaltung von Speicherfehlern, das Ausführungsformen von Wiederherstellungsoperationen 517, die den Aufzeichnungsspeicher 810 betreffen, umfasst. In der Ausführungsform der 8B kann das Wiederherstellungsmodul 516 eine ungültige Abschaltung der Speicherdienstschicht 102 detektieren und als Antwort auf den Aufzeichnungsspeicher 810 zugreifen, um zu bestimmen, dass der Aufzeichnungsspeicher 810 eine oder mehrere ungeschriebene Dateneinheiten 132 (wie in einem Aufzeichnungseintrag 830A aufgezeichnet) umfasst. Das Wiederherstellungsmodul 516 kann das Aufzeichnungsmodul 808 dazu konfigurieren, das Puffern und/oder Einreihen von eingehenden Daten in eine Warteschlange im Aufzeichnungseintrag 830A wiederaufzunehmen. Das Aufzeichnungsmodul 808 kann den Aufzeichnungseintrag 830B modifizieren (z. B. Daten an den Aufzeichnungsspeicher 810 anfügen), was einen vollen Datensatz 530 des Aufzeichnungseintrags 830B zur Folge hat. Wie in 8B veranschaulicht, umfasst der Aufzeichnungseintrag 830B N – 1 Dateneinheiten 132A–N – 1 mit entsprechenden Metadaten und/oder Integritätsbezugsgröße 144A–N – 1. Als Reaktion kann das Aufzeichnungsmodul 808 die Statusmetadaten 833 des Aufzeichnungseintrags 830B aktualisieren, um anzugeben, dass der Datensatz 530 zur Speicherung als eine Datengruppe 130 auf der Speicheranordnung 110 bereit ist. Das Aufzeichnungsmodul 808 kann ferner dazu konfiguriert sein, eine Anforderung auszugeben, den Datensatz 530 unter Verwendung des Koordinationsmoduls 101 zu schreiben, wie hierin offenbart. Als Reaktion auf die Ausgabe der Schreibanforderung und/oder den Empfang einer Antwort von der Speicheranordnung 110 kann das Aufzeichnungsmodul 808 die Statusmetadaten 833 des Aufzeichnungseintrags 830B aktualisieren, um anzugeben, dass der Aufzeichnungseintrag 830B in die Speicheranordnung 110 geschrieben wurde.
  • Das Aufzeichnungsmodul 808 kann ferner dazu konfiguriert sein, Aufzeichnungseinträge 830 zu entfernen, die in die Speicheranordnung 110 geschrieben wurden und/oder durch den Validierungsverwalter 106 validiert wurden. In einigen Ausführungsformen behält das Aufzeichnungsmodul 808 Aufzeichnungseinträge 830 gemäß einer verfügbaren Kapazität des Aufzeichnungsspeichers 810. Das Aufzeichnungsmodul 808 kann Aufzeichnungseinträge 830 zur Verwendung u. a. beim Wiederherstellen nach ungültigen Abschaltungszuständen, wie oben offenbart, und/oder die Speicheranordnung 110 betreffenden ungültigen Abschaltungszuständen behalten. In der Ausführungsform der 8B kann die den Aufzeichnungseintrag 830B betreffende Schreibanforderung aufgrund einer ungültigen Abschaltung der Speicheranordnung 110 fehlschlagen.
  • Als Reaktion auf die ungültige Abschaltung kann der Validierungsverwalter 106 dazu konfiguriert sein, eine oder mehrere Wiederherstellungsoperationen 517 zu implementieren, die Anordnungswiederherstellungsoperationen 124 der Speicheranordnung 110 zuvorkommen können, wie hierin offenbart. In der Ausführungsform der 8B kann der Validierungsverwalter 106 bestimmen, dass die gespeicherte Datengruppe 130, die die Daten des Aufzeichnungseintrags 830B umfasst, ein Schreibloch umfasst. Als Reaktion kann der Validierungsverwalter 106 dazu konfiguriert sein, die Datensegmente 132A–N – 1 unter Verwendung der Inhalte des Aufzeichnungseintrags 830B erneut zu schreiben, anstatt die gespeicherte Datengruppe 130 zu invalidieren und/oder zu versuchen, Teile der gespeicherten Datengruppe 130 wiederherzustellen.
  • 9 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens 900 zur Verwaltung von Speicherfehlern. Schritt 910 kann das Speichern von Integritätsdaten 144, die Datengruppen 130 entsprechen, die in eine Speicheranordnung 110 geschrieben werden, umfassen. Schritt 910 kann das Puffern und/oder Einreihen in eine Warteschlage von Datensätzen 530, die zur Speicherung innerhalb jeweiliger Datengruppen durch die Speicheranordnung 110 konfiguriert sind, und das Erzeugen von Integritätsdaten 144, die den Datensätzen 530 entsprechen, umfassen. Schritt 910 kann ferner das Einschließen der Integritätsdaten 144 in eine oder mehrere Dateneinheiten 132A–N – 1 des Datensatzes 530 umfassen. Die Integritätsdaten 144 können als persistente Metadaten 535 eines Datenpakets 532 einer oder mehrerer der Dateneinheiten 132A–N – 1 eingeschlossen werden, können als ein persistenter Metadateneintrag 539 innerhalb eines oder mehrerer der Dateneinheiten 132A–N – 1, innerhalb eines persistenten Metadatenprotokolleintrags 759, der an ein separates Metadatenprotokoll 560 angefügt ist, und/oder dergleichen eingeschlossen werden, wie hierin offenbart. In einigen Ausführungsformen umfassen die Integritätsdaten des Schrittes 910 eine Vielzahl von Integritätsbezugsgrößen 144A–N – 1, die den jeweiligen Dateneinheiten 132A–N – 1 der Datengruppe 130 entsprechen. Schritt 910 kann ferner das Detektieren von ungültigen Abschaltungszuständen, die die Speicheranordnung 110 betreffen, und/oder das Implementieren von Wiederherstellungsoperationen 517 zum Identifizieren oder Abschwächen von Schreiblochzuständen unter Verwendung der gespeicherten Integritätsdaten 144, wie hierin offenbart, umfassen.
  • Schritt 920 kann das Konfigurieren der Speicheranordnung 110 zum Delegieren von Absturzwiederherstellungsoperationen, wie hierin offenbart, umfassen. In einigen Ausführungsformen umfasst Schritt 920 das Einstellen eines Konfigurationsparameters der Speicheranordnung 110, das Modifizieren einer Konfigurationsdatei der Speicheranordnung 110, das Signalisieren an die Speicheranordnung 110 und/oder dergleichen. Schritt 920 kann das Übertragen einer Nachricht 566 an die Speicheranordnung 110, die dazu konfiguriert ist, die Speicheranordnung 110 daran zu hindern, eine oder mehrere Anordnungswiederherstellungsoperationen 124 durchzuführen, umfassen. Die Nachricht 566 kann über eine Schnittstelle 111 der Speicheranordnung 110 (über eine Zwischenverbindung 515) unter Verwendung eines Koordinationsmoduls 101 übertragen werden. Das Koordinationsmodul 101 kann dazu konfiguriert sein, die Speicheranordnung 110 zu verwalten. In einigen Ausführungsformen ist das Koordinationsmodul 101 dazu konfiguriert, Nachrichten und/oder Weisungen an die Speicheranordnung 110 über eine kundenspezifische Schnittstelle der Speicheranordnung 110 auszugeben. In einigen Ausführungsformen kann die Nachricht 566 einen Befehl, einen Bibliotheksaufruf, einen Funktionsaufruf, einen API-Aufruf, einen RPC-Aufruf, ein Signal, eine Unterbrechung, und/oder dergleichen umfassen. Schritt 920 kann das Senden der Nachricht 566 an die Speicheranordnung 110 als Reaktion auf die Detektion einer die Speicheranordnung 110 betreffenden ungültigen Abschaltung umfassen. Die Nachricht 566 kann dazu konfiguriert sein, die Speicheranordnung 110 zu blockieren, damit sie nicht versucht, gespeicherte Dateneinheiten 130 zu validieren, die Speicheranordnung 110 zu blockieren, damit sie keine gespeicherten Dateneinheiten 130 resynchronisiert, die Speicheranordnung 110 zu blockieren, damit sie nicht versucht, eine oder mehrere gespeicherte Dateneinheiten 130 zu rekonstruieren und/oder dergleichen. Dementsprechend kann/können die Nachricht(en) des Schrittes 920 einem bestimmten ungültigen Abschaltungszustand entsprechen. Alternativ kann Schritt 920 das Übertragen von Nachricht(en) 566 an die Speicheranordnung 110 umfassen, die dazu konfiguriert sind, die Speicheranordnung 110 daran zu hindern, gewisse Anordnungsrekonstruktionsoperationen 124 als Reaktion auf alle ungültigen Abschaltungszustände zu implementieren.
  • In einigen Ausführungsformen umfasst Schritt 920 ferner das Benachrichtigen der Speicheranordnung 110 über unvollständige gespeicherte Datengruppen 130, das Invalidieren von gespeicherten Datengruppen 130 in der Speicheranordnung 130, das Anfordern einer Rekonstruktion von Teilen von jeweiligen gespeicherten Datengruppen 130 (z. B. unter Verwendung von Anordnungsmetadaten 134, die durch die Speicheranordnung 110 geführt werden), und so weiter, wie hierin offenbart. Schritt 920 kann das Konfigurieren der Speicheranordnung 110 zum Delegieren einer Teilmenge einer Vielzahl von Anordnungswiederherstellungsoperationen 124 an die Speicherdienstschicht 102 umfassen, wobei einer solchen ersten Menge an Anordnungswiederherstellungsoperationen 124 durch die Speicherdienstschicht 102 zuvorgekommen wird und andere Anordnungswiederherstellungsoperationen 124 einer zweiten Menge als Reaktion auf eine ungültige Abschaltung durchgeführt werden. Die Speicheranordnung 110 kann dazu konfiguriert sein, die Durchführung der Anordnungswiederherstellungsoperationen 124 fortzusetzen, um a) eine Funktionalität von jeweiligen Speicherelementen 112A–N zu validieren (z. B. verifizieren, dass die Speicherelemente 112A–N verwendbar sind); b) Kommunikationszwischenverbindungen der Speicheranordnung 110 zu validieren (z. B. Zwischenverbindung 515); c) interne Firmware und/oder durch die Speicheranordnung 110 geführte Metadaten zu verifizieren, und so weiter. Die in Schritt 920 blockierten Anordnungsrekonstruktionsoperationen 124 können Operationen zum Validieren von auf der Speicheranordnung 110 gespeicherten Datengruppen 130 enthalten, wie hierin offenbart, wie etwa Operationen zum Validieren gespeicherter Datengruppen 130 (unter Verwendung von Anordnungsmetadaten 134), Operationen zum Resynchronisieren von gespeicherten Datengruppen 130, Operationen zum Rekonstruieren gespeicherter Datengruppen 130, und so weiter.
  • 10 ist ein Ablaufdiagramm einer weiteren Ausführungsform zur Verwaltung von Speicherfehlern. Schritt 1010 umfasst das Identifizieren eines Schreiblochs in einer gespeicherten Datengruppe 130 unter Verwendung gespeicherter Integritätsdaten 144, die den Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 entsprechen. Schritt 1010 kann Folgendes umfassen: a) Erzeugen von Integritätsdaten 144, die Datensätzen 530 entsprechen, die in Speicheranordnung 110 innerhalb von jeweiligen Datengruppen 130 geschrieben werden, b) Speicherung der Integritätsdaten innerhalb der jeweiligen Datengruppen 130 (und/oder an einem anderen Speicherort, wie etwa ein Metadatenprotokoll 560), und c) Implementieren der Wiederherstellungsoperationen 517, um gespeicherte Datengruppen 130 anstelle von einer oder mehreren Anordnungswiederherstellungsoperationen 124 der Speicheranordnung 110, wie hierin offenbart, zu validieren. Schritt 1010 kann das Identifizieren des Schreiblochs als Reaktion auf das Bestimmen, dass Daten einer gespeicherten Datengruppe 130 nicht den Integritätsdaten 144 der gespeicherten Datengruppe 130 entsprechen, umfassen.
  • Schritt 1010 kann ferner das Identifizieren von ungültigen Teil(en) der gespeicherten Datengruppe 130 umfassen (z. B. Identifizieren von Dateneinheit(en) 132A–N – 1, die ungültige Daten 131 enthalten). Schritt 1010 kann das Vergleichen von jeweiligen Integritätsbezugsgrößen 144A–N mit Daten von entsprechenden Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130, wie hierin offenbart, umfassen. Schritt 1010 kann ferner das Bestimmen, dass eine oder mehrere der Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 gültige Daten umfassen, wie hierin offenbart, umfassen.
  • Schritt 1020 umfasst das Implementieren einer oder mehrerer Wiederherstellungsoperationen 517, die in nicht einschränkender Weise enthalten können: a) Benachrichtigen von einem oder mehreren aus der Übersetzungsschicht 105, der Speicheranordnung 110, eines Client 502 und/oder dergleichen über das Schreibloch; b) Invalidieren der gespeicherten Datengruppe 130; c) Invalidieren eines Teils der gespeicherten Datengruppe 130; d) Rekonstruieren von Teil(en) der gespeicherten Datengruppe 130; e) Anfordern von Ersatzdaten, die die gespeicherte Datengruppe 130 betreffen; und/oder dergleichen, wie hierin offenbart. In einigen Ausführungsformen umfasst Schritt 1020 das Invalidieren von Dateneinheiten 132A–N – 1, bei denen in Schritt 1010 bestimmt wurde, dass sie ungültige Daten 131 umfassen. Schritt 1020 kann das Invalidieren und/oder TRIMing von LIDs, die mit den ungültigen Dateneinheiten 132A–N – 1 assoziiert sind, umfassen. Schritt 1020 kann das Entfernen von Logisch-zu-Speicher-Abbildungen, die LIDs betreffen, die mit ungültigen Dateneinheiten 132A–N – 1 assoziiert sind, enthalten (z. B. das Entfernen und/oder Modifizieren von einem oder mehreren Einträgen 526 eines Vorwärts-Abbilds 525). Schritt 1020 kann ferner das Benachrichtigen der Speicheranordnung 110, dass die gespeicherte Datengruppe 130 ein Schreibloch umfasst, und/oder das Identifizieren des ungültigen Teil(s) der gespeicherten Datengruppe 130 umfassen.
  • In einigen Ausführungsformen umfasst Schritt 1020 das Behalten eines/von gültigen Teil(s/en) der gespeicherten Datengruppe 130 durch u. a. das Behalten von Logisch-zu-Speicher-Abbildungen, die gültige Dateneinheiten 132A–N – 1 der gespeicherten Datengruppe 130 betreffen, das erneute Schreiben von gültigen Daten der gespeicherten Datengruppe 130, und so weiter, wie hierin offenbart. Alternativ oder zusätzlich kann Schritt 1020 das Rekonstruieren der Inhalte von Dateneinheiten 132A–N – 1, bei denen bestimmt wurde, dass sie ungültige Daten umfassen, unter Verwendung der Speicheranordnung 110 umfassen (z. B. durch Paritätsrekonstruktion), kann das Zugreifen auf Ersatzdaten für eine oder mehrere Dateneinheiten 132A–N – 1, und/oder dergleichen, umfassen.
  • 11 ist ein Ablaufdiagramm einer weiteren Ausführungsform 1100 eines Verfahrens zur Verwaltung von Speicherfehlern. Schritt 1110 kann das Identifizieren eines Schreiblochs in einer gespeicherten Datengruppe als Reaktion auf eine ungültige Abschaltung, wie hierin offenbart, umfassen.
  • Schritt 1120 kann das Rekonstruieren von Teilen der gespeicherten Datengruppe 130 umfassen. Schritt 1120 kann das Identifizieren von ungültigen Teilen der gespeicherten Datengruppe 130 unter Verwendung der jeweiligen Integritätsbezugsgröße 144A–N – 1 umfassen. Schritt 1120 kann ferner das Ausgeben einer Anforderung an die Speicheranordnung 110 zur Rekonstruierung der ungültigen Teil(e) der gespeicherten Datengruppe 130 unter Verwendung von der gespeicherten Datengruppe 130 entsprechenden Anordnungsmetadaten 134 umfassen. Alternativ oder zusätzlich kann Schritt 1120 eine iterative Paritätsoperation umfassen, um Teile einer gespeicherten Datenanordnung 130 iterativ zu rekonstruieren, zu versuchen, die rekonstruierten Daten zu validieren, und eine gültige Rekonstruktion unter Verwendung der der gespeicherten Datengruppe 130 entsprechenden Integritätsdaten 144 zu validieren, wie hierin offenbart.
  • 12 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 1200 zur Verwaltung von Speicherfehlern. Schritt 1210 kann das Führen eines Speicherprotokolls umfassen, das einen logischen Adressraum 104 betrifft. Alternativ oder zusätzlich kann Schritt 1210 ein Speicherprotokoll umfassen, das Speicheroperationen entspricht, die auf einer Speicheranordnung 110 durchgeführt werden (z. B. Operationen zum Speichern von Datengruppen 130, die Daten umfassen, die mit LIDs des logischen Adressraums 1040 assoziiert sind). Schritt 1210 kann das Anfügen von Daten an ein geordnetes Speicherprotokoll 650 auf der Speicheranordnung 110 umfassen. Alternativ oder zusätzlich kann Schritt 1210 das Führen eines Metadatenprotokolls 560 auf einer separaten Speichereinrichtung 710, wie hierin offenbart, umfassen. Schritt 1210 kann das sequenzielle Anfügen von Datengruppen 130 innerhalb eines Speicheradressraums 116 der Speicheranordnung 110 (z. B. an einem Anfügungspunkt 109), wie hierin offenbart, umfassen.
  • Schritt 1220 kann das Auswählen von gespeicherten Datengruppen 130 zum Validieren in einer Absturzwiederherstellungsoperation umfassen. Schritt 1220 kann als Reaktion auf eine ungültige Abschaltung durchgeführt werden. Schritt 1220 kann ferner das Konfigurieren der Speicheranordnung 110 zum Delegieren und/oder Aufschieben der Absturzwiederherstellungsoperationen an die Speicherdienstschicht 102 umfassen.
  • Schritt 1220 kann das Auswählen von gespeicherten Datengruppen 130 zur Validierung auf der Basis des geordneten Protokolls des Schrittes 1210 umfassen. Schritt 1220 kann das Auswählen von gespeicherten Datengruppen 130 am Kopf 654 des Speicherprotokolls 650 umfassen. Dementsprechend umfasst in einigen Ausführungsformen der Schritt 1220 das Identifizieren einer Speicheradresse, die dem Kopf 654 des Speicherprotokolls 650 entspricht, und das Auswählen von der identifizierten Speicheradresse entsprechenden gespeicherten Datengruppen 130 zur Validierung. Alternativ oder zusätzlich kann Schritt 1220 das Bestimmen einer Speicheradresse des Anfügungspunktes 109 zum Zeitpunkt der ungültigen Abschaltung (unter Verwendung des Protokollmoduls 108 und/oder Metadatenprotokollmoduls 708) umfassen. Schritt 1220 kann das Auswählen von gespeicherten Datengruppen 130 an dem bestimmten Anfügungspunkt 109 umfassen.
  • In einigen Ausführungsformen umfasst Schritt 1220 ferner das Validieren von gespeicherten Datengruppen 130, die innerhalb eines Validierungsbereichs 118 innerhalb des Speicheradressraums 116 der Speicheranordnung 110 gespeichert sind. Der Validierungsbereich 118 kann Speicheradressen am Kopf 654 des Speicherprotokolls 650 umfassen. Die Größe und/oder Konfiguration des Validierungsbereichs 118 kann auf der Protokollreihenfolge 652 des Speicherprotokolls 650 (z. B. relative Protokollreihenfolge von Segmenten 670 des Speicherprotokolls 650), der Geschwindigkeit von Schreiboperationen, die auf der Speicheranordnung 110 zum Zeitpunkt der ungültigen Abschaltung durchgeführt werden, und/oder dergleichen basieren, wie hierin offenbart. In einigen Ausführungsformen enthält Schritt 1220 ferner das Blockieren des Zugriffs auf gespeicherte Datengruppen 130 innerhalb des Validierungsbereichs 118, während die gespeicherten Datengruppen 130 darin durch den Validierungsverwalter 106 validiert werden. Schritt 1220 kann ferner das Bereitstellen eines Zugriffs auf andere Bereich(e) des Speicheradressraums 116 außerhalb des Validierungsbereichs 118 enthalten.
  • Schritt 1230 kann das Validieren der ausgewählten gespeicherten Datengruppen 130 unter Verwendung von Integritätsdaten 144, die in Assoziation mit den gespeicherten Datengruppen 130 gespeichert sind, umfassen, wie hierin offenbart. Schritt 1230 kann das Identifizieren von unvollständigen gespeicherten Datengruppen 130, das Invalidieren der unvollständigen gespeicherten Datengruppen 130, das Benachrichtigen der Speicheranordnung 110 über die unvollständigen gespeicherten Datengruppen 130, die Rettung der unvollständigen gespeicherten Datengruppen 130, und so weiter, wie hierin offenbart, umfassen.
  • 13 ist ein Ablaufdiagramm einer weiteren Ausführungsform eines Verfahrens 1300 zur Verwaltung von Speicherfehlern. Schritt 1310 kann Aufzeichnungsdateneinheiten 132 zur Speicherung auf einer Speicheranordnung 110 umfassen. Schritt 1310 kann das Schreiben von Aufzeichnungseinträgen 830 in den Aufzeichnungsspeicher 810, wie hierin offenbart, umfassen. Schritt 1310 kann ferner das Puffern und/oder in eine Warteschlange Einreihen von Datensätzen 530, die zur Speicherung innerhalb jeweiliger Datengruppen 130 auf der Speicheranordnung 130 konfiguriert sind, das Erzeugen von Integritätsdaten 144, die den Inhalten der Datensätze 530 entsprechen, das Einfügen der Integritätsdaten 144 in die Datensätze 530 (und/oder Speichern der Integritätsdaten 544 an einem separaten Speicherort) und das Ausgeben von Anforderungen zum Schreiben der Datensätze 530 als jeweilige Datengruppen 130 auf der Speicheranordnung 130 umfassen. Schritt 1310 kann das Aufzeichnen der Dateneinheiten 132 als Reaktion auf Schreibanforderungen von Clients 502 umfassen. Schritt 1310 kann ferner das Bestätigen der Erledigung der Schreibanforderungen als Reaktion auf das Aufzeichnen der Dateneinheiten 132 in dem Aufzeichnungsspeicher 810 umfassen. Die Schreibanforderungen können bestätigt werden, bevor die Dateneinheiten 132 in die Speicheranordnung 110 geschrieben werden (und/oder bevor die Dateneinheiten 132 in einem kompletten Datensatz 530, der N – 1 Dateneinheiten 132 enthält, eingeschlossen werden).
  • Schritt 1320 umfasst das Identifizieren eines Speicherfehlers als Reaktion auf eine ungültige Abschaltung. Schritt 1320 kann das Identifizieren von Dateneinheiten 132 im Aufzeichnungsspeicher 810, die nicht in die Speicheranordnung 110 geschrieben wurden, umfassen. Schritt 1320 kann das Zugreifen auf den Aufzeichnungsspeicher 810 zum Identifizieren von einem oder mehreren Aufzeichnungseinträgen 830, die Dateneinheiten 132 umfassen, die nicht in die Speicheranordnung 110 geschrieben wurden, umfassen. Alternativ oder zusätzlich kann Schritt 1320 das Identifizieren einer ein Schreibloch umfassenden gespeicherten Datengruppe 130 unter Verwendung der Integritätsdaten 144, die für die Datengruppe 130 in Schritt 1310 gespeichert wurden, umfassen.
  • Schritt 1320 kann das Wiederherstellen nach der ungültigen Abschaltung unter Verwendung der Inhalte der Aufzeichnungsspeicher 810 umfassen. Schritt 1330 kann das Schreiben ungeschriebener Dateneinheiten 132 in den Aufzeichnungsspeicher 810 als eine gespeicherte Datengruppe 130 auf der Speicheranordnung 110 umfassen. Alternativ oder zusätzlich kann Schritt 1330 das erneute Schreiben einer ein Schreibloch umfassenden gespeicherten Datengruppe 130 unter Verwendung eines in dem Aufzeichnungsspeicher 810 (z. B. in einem oder mehreren Aufzeichnungseinträgen 830) gespeicherten Datensatzes 530, wie hierin offenbart, umfassen.
  • Diese Offenbarung erfolgt anhand verschiedener beispielhafter Ausführungsformen. Der Fachmann wird jedoch erkennen, dass Änderungen und Modifizierungen an den beispielhaften Ausführungsformen vorgenommen werden können, ohne dass vom Schutzbereich der vorliegenden Offenbarung abgewichen wird. Zum Beispiel können verschiedene Arbeitsschritte sowie Komponenten zum Durchführen von Arbeitsschritten auf alternative Art und Weise abhängig von der jeweiligen Anwendung oder in Anbetracht irgendeiner Anzahl von Kostenfunktionen, die mit dem Betrieb des Systems verbunden sind, implementiert werden (z. B. ein oder mehrere der Schritte können gelöscht, modifiziert oder mit anderen Schritten kombiniert werden). Deshalb ist diese Offenbarung in einem veranschaulichenden Sinn und nicht in einem einschränkenden Sinn zu betrachten, und alle solchen Modifikationen sollen innerhalb des Schutzbereichs dieser Offenbarung enthalten sein. Ebenso wurden Nutzen, andere Vorteile und Lösungen von Problemen oben im Hinblick auf verschiedene Ausführungsformen beschrieben. Jedoch sollen Nutzen, Vorteile, Lösungen von Problemen und irgendein/irgendwelche Element(e), durch die ein Nutzen, Vorteil oder eine Lösung auftreten oder ausgeprägter werden kann, nicht als ein entscheidendes, ein erforderliches oder ein wesentliches Merkmal oder Element ausgelegt sein. Der hierin verwendete Begriff „umfassen“, „umfassend“ und jegliche anderen Variationen davon sollen eine nichtexklusive Einbeziehung abdecken, so dass ein Prozess, ein Verfahren, ein Gegenstand oder eine Vorrichtung, die eine Liste von Elementen umfassen, nicht nur diese Elemente enthalten, sondern auch andere Elemente enthalten können, die nicht ausdrücklich aufgelistet sind oder einem solchen Prozess, Verfahren, System, Gegenstand oder einer solchen Vorrichtung innewohnend sind. Auch sollen die hierin verwendeten Begriffe „gekoppelt“ „Kopplung“ und jegliche anderen Variationen davon eine physische Verbindung, eine elektrische Verbindung, eine magnetische Verbindung, eine optische Verbindung, eine kommunikative Verbindung, eine funktionale Verbindung und/oder jegliche andere Verbindung abdecken.
  • Zusätzlich können Grundsätze der vorliegenden Offenbarung, wie es sich für den Durchschnittsfachmann verstehen wird, in einem Computerprogrammprodukt auf einem maschinenlesbaren Speichermedium, das maschinenlesbare, in dem Speichermedium verkörperte Programmcodemittel aufweist, wiedergegeben werden. Jedes greifbare, nicht vergängliche maschinenlesbare Speichermedium kann benutzt werden, einschließlich Magnetspeichereinrichtungen (Festplatten, Floppy-Disks, und dergleichen), optische Speichereinrichtungen (CD-ROMs, DVDs, Blu-Ray-Disks, und dergleichen), Flash-Speicher, und/oder dergleichen. Diese Computerprogrammanweisungen können auf einen Allzweckcomputer, Spezialzweckcomputer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um eine Maschine herzustellen, so dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der spezifizierten Funktionen schaffen. Diese Computerprogrammanweisungen können auch in einem maschinenlesbaren Speicher gespeichert werden, der einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die im maschinenlesbaren Speicher gespeicherten Anweisungen ein Fabrikat herstellen, das Implementierungsmittel enthält, die die spezifizierte Funktion implementieren. Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, damit die Durchführung einer Serie von Arbeitsschritten auf dem Computer oder der anderen programmierbaren Vorrichtung veranlasst wird, um einen computerimplementierten Prozess herzustellen, so dass die Anweisungen, die auf dem Computer oder anderen programmierbaren Vorrichtung abgearbeitet werden, Schritte zur Implementierung der spezifizierten Funktionen bereitstellen.
  • Während die Grundsätze dieser Offenbarung in verschiedenen Ausführungsformen gezeigt wurden, können viele Modifizierungen von Struktur, Anordnungen, Verhältnissen, Elementen, Materialien und Komponenten, die jeweils für eine spezifische Umgebung und spezifische Betriebserfordernisse ausgelegt sind, verwendet werden, ohne dass von den Grundsätzen und dem Schutzbereich dieser Offenbarung abgewichen wird. Diese und andere Änderungen oder Modifizierungen sollen im Schutzbereich der vorliegenden Offenbarung enthalten sein.

Claims (21)

  1. Vorrichtung, umfassend: eine Speicherdienstschicht, die dazu konfiguriert ist, Integritätsmetadaten zu erzeugen, die Daten entsprechen, die innerhalb jeweiliger Datengruppen durch eine Speichermaschine gespeichert werden, wobei die Speichermaschine die Datengruppen mit Rekonstruktionsmetadaten auf einer Speicheranordnung speichert; und einen Validierungsverwalter der Speicherdienstschicht, wobei der Validierungsverwalter dazu konfiguriert ist, sich von einer ungültigen Abschaltung der Speicheranordnung unter Verwendung der Integritätsmetadaten wiederherzustellen; wobei die Speicherdienstschicht dazu konfiguriert ist, eine Wiederherstellungsoperation der Speichermaschine unter Verwendung des Validierungsverwalters zu ersetzen.
  2. Vorrichtung gemäß Anspruch 1, wobei die Wiederherstellungsoperation der Speichermaschine, die durch die Speicherdienstschicht ersetzt wird, das Bestimmen, ob die ungültige Abschaltung eine Speicherung einer unvollständigen Datengruppe auf der Speicheranordnung zur Folge gehabt hat, umfasst, und wobei der Validierungsverwalter dazu konfiguriert ist, unter Verwendung der Integritätsmetadaten zu bestimmen, ob die ungültige Abschaltung eine Speicherung einer unvollständigen Datengruppe auf der Speicheranordnung zur Folge gehabt hat.
  3. Vorrichtung gemäß Anspruch 2, wobei der Validierungsverwalter dazu konfiguriert ist, eine auf der Speicheranordnung gespeicherte unvollständige Datengruppe zu identifizieren als Reaktion auf eine Diskrepanz zwischen Integritätsmetadaten, die für die Datengruppe erzeugt wurden, und Integritätsmetadaten, die von Daten, die aus der Speicheranordnung gelesen wurden, abgeleitet wurden.
  4. Vorrichtung gemäß Anspruch 2, die ferner ein Wiederherstellungsmodul umfasst, das dazu konfiguriert ist, mindestens einen Teil einer unvollständigen Datengruppe, die durch den Validierungsverwalter identifiziert wurde, zu invalidieren.
  5. Vorrichtung gemäß Anspruch 1, wobei die Wiederherstellungsoperation der Speichermaschine das Validieren einer Menge von gespeicherten Datengruppen unter Verwendung der mit den jeweiligen Datengruppen auf der Speicheranordnung gespeicherten Rekonstruktionsmetadaten umfasst und wobei der Validierungsverwalter dazu konfiguriert ist, die Wiederherstellungsoperation der Speichermaschine durch Validieren einer Teilmenge der auf der Speicheranordnung gespeicherten Datengruppen zu ersetzen.
  6. Vorrichtung gemäß Anspruch 1, die ferner ein Protokollspeichermodul umfasst, das dazu konfiguriert ist, Daten an einen Anfügungspunkt eines Speicherprotokolls auf der Speicheranordnung unter Verwendung der Speichermaschine zu schreiben, wobei das Verifizierungsmodul dazu konfiguriert ist, als Reaktion auf die ungültige Abschaltung eine Datengruppe, die dem Anfügungspunkt des Speicherprotokolls entspricht, zu validieren.
  7. Vorrichtung gemäß Anspruch 1, die ferner ein Koordinationsmodul umfasst, das dazu konfiguriert ist, die Speichermaschine anzuweisen, eine Wiederherstellung nach der ungültigen Abschaltung an die Speicherschicht zu delegieren.
  8. Vorrichtung gemäß Anspruch 1, die ferner ein Speicheranordnungs-Koordinationsmodul umfasst, das dazu konfiguriert ist, die Speichermaschine davon abzuhalten, eine Resynchronisationsoperation als Reaktion auf die ungültige Abschaltung zu implementieren, wobei die Resynchronisationsoperation umfasst, dass die Speichermaschine Datengruppen, die auf der Speicheranordnung gespeichert sind, unter Verwendung der durch die Speichermaschine mit den Datengruppen gespeicherten Rekonstruktionsmetadaten validiert.
  9. System, umfassend: eine Speicherschicht, die Integritätsdaten speichert, die Daten entsprechen, die innerhalb jeweiliger Datenstreifen eines RAID-Speichersystems gespeichert werden, wobei die gespeicherten Datenstreifen Paritätsrekonstruktionsdaten umfassen, die durch das RAID-Speichersystem erzeugt werden; ein Absturzwiederherstellungsmodul, das Datenstreifen des RAID-Speichersystems unter Verwendung der gespeicherten Integritätsdaten als Reaktion auf eine ungültige Abschaltung des RAID-Speichersystems validiert; und ein Speicherkoordinationsmodul der Speicherschicht, das dazu konfiguriert ist, anstelle des RAID-Speichersystems eine die ungültige Abschaltung betreffende Absturzwiederherstellung durchzuführen.
  10. System gemäß Anspruch 9, wobei das Speicherkoordinationsmodul dazu konfiguriert ist, die Durchführung einer Absturzwiederherstellungsoperation durch das RAID-Speichersystem als Reaktion auf die ungültige Abschaltung zu blockieren.
  11. System gemäß Anspruch 9, wobei das Speicherkoordinationsmodul das RAID-Speichersystem dazu konfiguriert, eine Absturzwiederherstellung an die Speicherschicht zu delegieren.
  12. System gemäß Anspruch 9, wobei das Speicherkoordinationsmodul dazu konfiguriert ist, das RAID-Speichersystem zu benachrichtigen, dass die Speicherschicht dazu konfiguriert ist, Datenstreifen-Schreibfehler zu identifizieren, wobei das Absturzwiederherstellungsmodul dazu konfiguriert ist, einen Datenstreifen-Schreibfehler zu identifizieren durch Vergleichen von gespeicherten Integritätsdaten des Datenstreifens mit Integritätsdaten, die aus den aus dem RAID-Speichersystem gelesenen gespeicherten Datenstreifen erzeugt werden.
  13. System gemäß Anspruch 9, wobei das RAID-Speichersystem dazu konfiguriert ist, eine Resynchronisationsoperation als Reaktion auf die ungültige Abschaltung zu implementieren, und wobei das Speicherkoordinationsmodul dazu konfiguriert ist, als Reaktion auf die ungültige Abschaltung eine Nachricht an das RAID-Speichersystem zu übertragen, wobei die Nachricht dazu konfiguriert ist, das RAID-Speichersystem davon abzuhalten, die Resynchronisationsoperation zu implementieren.
  14. System gemäß Anspruch 9, wobei die Integritätsdaten eines gespeicherten Datenstreifens eine Integritätsbezugsgröße umfassen, die jeder aus einer Vielzahl von Dateneinheiten innerhalb des gespeicherten Datenstreifens entspricht, und wobei das Absturzwiederherstellungsmodul dazu konfiguriert ist, eine jeweilige Dateneinheit der Dateneinheiten als Reaktion auf eine Diskrepanz zwischen der gespeicherten Integritätsbezugsgröße der jeweiligen Dateneinheit und einer Integritätsbezugsgröße, die aus der jeweiligen Dateneinheit innerhalb des gespeicherten Datenstreifens abgeleitet wurde, zu invalidieren und wobei das Absturzwiederherstellungsmodul ferner dazu konfiguriert ist, eine oder mehrere andere Dateneinheiten innerhalb des gespeicherten Datenstreifens erneut zu schreiben als Reaktion auf die Validierung der gespeicherten Integritätsdaten der einen oder mehreren anderen Dateneinheiten.
  15. Nicht vergängliches computerlesbares Speichermedium, das Programmcode speichert, der eine Recheneinrichtung veranlasst, Operationen auszuführen, wobei die Operationen Folgendes umfassen: Anfügen von Datengruppen an ein Speicherprotokoll, das unter Verwendung einer Speicheranordnungssteuereinrichtung auf einer Speicheranordnung geführt wird, wobei die Speicheranordnungssteuereinrichtung dazu konfiguriert ist, die Datengruppen innerhalb von jeweiligen Datenstreifen auf der Speicheranordnung zu speichern, wobei die Datenstreifen durch die Speicheranordnungssteuereinrichtung erzeugte Rekonstruktionsmetadaten umfassen; Speichern von Prüfsummenwerten, die den Datengruppen entsprechen, die innerhalb der jeweiligen Datenstreifen auf der Speicheranordnung gespeichert sind; und einer Absturzwiederherstellungsoperation der Speicheranordnungssteuereinrichtung zuvorkommen als Reaktion auf eine ungültige Abschaltung der Speicheranordnung, wobei das der Absturzwiederherstellungsoperation Zuvorkommen das Validieren eines Datenstreifens am Kopf des Speicherprotokolls auf der Speicheranordnung unter Verwendung der gespeicherten Prüfsummenwerte, die den innerhalb der jeweiligen Datenstreifen auf der Speicheranordnung gespeicherten Datengruppen entsprechen, umfasst.
  16. Nicht vergängliches computerlesbares Speichermedium gemäß Anspruch 15, das ferner das Identifizieren des Datenstreifens am Kopf des Speicherprotokolls als Reaktion auf die ungültige Abschaltung und das Vergleichen eines von dem identifizierten Datenstreifen abgeleiteten Prüfsummenwertes mit dem gespeicherten Prüfsummenwert, der dem identifizierten Datenstreifen entspricht, umfasst.
  17. Nicht vergänglicher computerlesbarer Speicher gemäß Anspruch 16, der ferner das Invalidieren des gespeicherten Datenstreifens als Reaktion auf eine Diskrepanz zwischen dem von dem identifizierten Datenstreifen abgeleiteten Prüfsummenwert und dem gespeicherten Prüfsummenwert umfasst.
  18. Verfahren gemäß Anspruch 16, wobei der Datenstreifen am Kopf des Speicherprotokolls eine Vielzahl von Datenblöcken umfasst, die auf jeweilige Adressen eines logischen Adressraums abgebildet sind, wobei das Verfahren ferner das Invalidieren von Assoziationen zwischen dem Datenstreifen und den jeweiligen Adressen als Reaktion auf eine Diskrepanz zwischen dem von dem identifizierten Datenstreifen abgeleiteten Prüfsummenwert und dem gespeicherten Prüfsummenwert umfasst.
  19. Nicht vergänglicher computerlesbarer Speicher gemäß Anspruch 15, wobei das Speichern der Prüfsummenwerte das Anfügen von die Prüfsummenwerte umfassenden Abbildungseinträgen an ein Metadatenprotokoll, das auf einer Speichereinrichtung geführt wird, die von der Speicheranordnung unabhängig ist, umfasst, wobei die Abbildungseinträge Datenblöcke innerhalb der jeweiligen Datenstreifen mit jeweiligen logischen Adressen eines logischen Adressraums assoziieren.
  20. Nicht vergänglicher computerlesbarer Speicher gemäß Anspruch 15, wobei das Speichern des Prüfsummenwertes eines Datenstreifens das Einschließen des Prüfsummenwerts in die Datengruppe, die innerhalb des Datenstreifens auf der Speicheranordnung gespeichert ist, umfasst.
  21. Nicht vergänglicher computerlesbarer Speicher gemäß Anspruch 15, wobei die gespeicherten Prüfsummenwerte der Datenstreifen jeweilige Prüfsummenwerte für jedes aus einer Vielzahl von Datensegmenten innerhalb der jeweiligen Datenstreifen umfassen und wobei das Validieren des identifizierten Datenstreifens das Validieren der jeweiligen Prüfsummenwerte der Datensegmente innerhalb des identifizierten Datenstreifens umfasst, wobei das Verfahren ferner Folgendes umfasst: Invalidieren eines ersten Datensegments innerhalb des identifizierten Datenstreifens als Reaktion auf eine Prüfsummendiskrepanz, die das erste Datensegment betrifft; und erneutes Schreiben eines zweiten Datensegments innerhalb des identifizierten Datenstreifens auf einen unterschiedlichen Datenstreifen auf der Speicheranordnung als Reaktion auf das Validieren des zweiten Datensegments unter Verwendung des gespeicherten Prüfsummenwertes des zweiten Datensegments.
DE112015005211.9T 2015-03-04 2015-11-24 Systeme und verfahren für die speicherfehler-verwaltung Pending DE112015005211T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562128456P 2015-03-04 2015-03-04
US62/128,456 2015-03-04
US14/878,635 US9946607B2 (en) 2015-03-04 2015-10-08 Systems and methods for storage error management
US14/878,635 2015-10-08
PCT/US2015/062473 WO2016140713A1 (en) 2015-03-04 2015-11-24 Systems and methods for storage error management

Publications (1)

Publication Number Publication Date
DE112015005211T5 true DE112015005211T5 (de) 2017-10-26

Family

ID=54834951

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015005211.9T Pending DE112015005211T5 (de) 2015-03-04 2015-11-24 Systeme und verfahren für die speicherfehler-verwaltung

Country Status (4)

Country Link
US (1) US9946607B2 (de)
CN (1) CN107111528B (de)
DE (1) DE112015005211T5 (de)
WO (1) WO2016140713A1 (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965412B2 (en) * 2015-10-08 2018-05-08 Samsung Electronics Co., Ltd. Method for application-aware interrupts management
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
US10528522B1 (en) 2016-03-17 2020-01-07 EMC IP Holding Company LLC Metadata-based data valuation
US10719480B1 (en) * 2016-11-17 2020-07-21 EMC IP Holding Company LLC Embedded data valuation and metadata binding
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10771550B2 (en) 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US10341847B2 (en) 2017-02-10 2019-07-02 International Business Machines Corporation Reactionary data transfer to cold storage
WO2018165958A1 (en) * 2017-03-16 2018-09-20 Microsoft Technology Licensing, Llc. Storage system control
US10848554B2 (en) * 2017-03-30 2020-11-24 Oracle International Corporation Memory efficient asynchronous high availability replication
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
US10402272B2 (en) * 2017-05-25 2019-09-03 Micron Technology, Inc. Memory device with dynamic programming calibration
US10140040B1 (en) 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
US11036438B2 (en) * 2017-05-31 2021-06-15 Fmad Engineering Kabushiki Gaisha Efficient storage architecture for high speed packet capture
US11128740B2 (en) 2017-05-31 2021-09-21 Fmad Engineering Kabushiki Gaisha High-speed data packet generator
US10423358B1 (en) 2017-05-31 2019-09-24 FMAD Engineering GK High-speed data packet capture and storage with playback capabilities
US10990326B2 (en) 2017-05-31 2021-04-27 Fmad Engineering Kabushiki Gaisha High-speed replay of captured data packets
US11392317B2 (en) 2017-05-31 2022-07-19 Fmad Engineering Kabushiki Gaisha High speed data packet flow processing
US10678636B2 (en) * 2018-02-28 2020-06-09 Intel Corporation Techniques for detecting and correcting errors in data
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
US10664346B2 (en) * 2018-05-18 2020-05-26 Microsoft Technology Licensing, Llc Parity log with by-pass
US10503620B1 (en) 2018-05-21 2019-12-10 Microsoft Technology Licensing, Llc Parity log with delta bitmap
US11216443B2 (en) * 2018-06-20 2022-01-04 EMC IP Holding Company LLC Processing device configured for data integrity testing utilizing signature-based multi-phase write operations
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
US11188416B2 (en) 2018-07-12 2021-11-30 Micron Technology, Inc. Enhanced block management for a memory sub-system
US11113129B2 (en) 2018-07-13 2021-09-07 Micron Technology, Inc. Real time block failure analysis for a memory sub-system
US11281545B2 (en) 2018-09-07 2022-03-22 University Of Central Florida Research Foundation, Inc. Methods of crash recovery for data stored in non-volatile main memory
KR20200035592A (ko) * 2018-09-27 2020-04-06 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
US10936246B2 (en) 2018-10-10 2021-03-02 Micron Technology, Inc. Dynamic background scan optimization in a memory sub-system
US11169723B2 (en) * 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US11030060B2 (en) 2019-08-22 2021-06-08 International Business Machines Corporation Data validation during data recovery in a log-structured array storage system
US10977136B2 (en) * 2019-08-28 2021-04-13 Dell Products L.P. Method and system for offloading a continuous health-check and reconstruction of data using compute acceleration devices on persistent storage devices
US11403182B2 (en) 2019-08-28 2022-08-02 Dell Products L.P. Method and system for any-point in time recovery within traditional storage system via a continuous data protection interceptor
US11372555B2 (en) 2020-01-23 2022-06-28 International Business Machines Corporation Reconstructing data in a smart storage array
CN111400306B (zh) * 2020-02-20 2023-03-28 上海交通大学 基于rdma与非易失性内存的基数树访问系统
US11334430B2 (en) * 2020-05-29 2022-05-17 Vmware, Inc. Virtual disk file resiliency for content based read cache (CBRC) enabled environment
US11636069B2 (en) * 2020-07-24 2023-04-25 Capital Thought Holdings L.L.C. Data storage system and method
KR20220107037A (ko) * 2020-09-14 2022-08-01 창신 메모리 테크놀로지즈 아이엔씨 반도체 메모리
TWI772926B (zh) * 2020-10-19 2022-08-01 財團法人資訊工業策進會 日誌處理裝置及其日誌處理方法
US11593309B2 (en) * 2020-11-05 2023-02-28 International Business Machines Corporation Reliable delivery of event notifications from a distributed file system
JP2023061253A (ja) * 2021-10-19 2023-05-01 株式会社日立製作所 ストレージシステム、データコピー制御方法、及びデータコピー制御プログラム
CN115016988B (zh) * 2022-08-08 2022-10-21 四川大学 基于二叉树日志的cdp备份恢复方法、系统及存储介质
CN115793985B (zh) * 2023-01-09 2023-04-21 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质

Family Cites Families (294)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
JP3227707B2 (ja) 1990-12-29 2001-11-12 日本電気株式会社 走行モード別キャッシュメモリ制御方式
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5819109A (en) * 1992-12-07 1998-10-06 Digital Equipment Corporation System for storing pending parity update log entries, calculating new parity, updating the parity block, and removing each entry from the log when update is complete
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
EP0747825B1 (de) 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM-Datenzuweisungsanordnung und -verfahren
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5794253A (en) 1996-07-12 1998-08-11 Microsoft Corporation Time based expiration of data objects in a store and forward replication enterprise
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US7119250B2 (en) 1997-06-03 2006-10-10 The University Of Chicago Plant centromere compositions
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
JP2000259525A (ja) 1999-03-10 2000-09-22 Nec Corp 通信プロトコルにおける応答返却方法および通信制御装置
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
GB2379538B (en) 2000-06-23 2005-01-12 Intel Corp Non-volatile cache
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6330642B1 (en) 2000-06-29 2001-12-11 Bull Hn Informatin Systems Inc. Three interconnected raid disk controller data processing system architecture
GB2364581B (en) 2000-07-08 2002-07-03 3Com Corp Application specific integrated circuit with dual-mode system for externally accessible data buses and visibility buses
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US7039121B2 (en) 2000-11-22 2006-05-02 Silicon Image Method and system for transition-controlled selective block inversion communications
US6745310B2 (en) 2000-12-01 2004-06-01 Yan Chiew Chow Real time local and remote management of data files and directories and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6523087B2 (en) 2001-03-06 2003-02-18 Chaparral Network Storage, Inc. Utilizing parity caching and parity logging while closing the RAID5 write hole
US7062704B2 (en) 2001-04-30 2006-06-13 Sun Microsystems, Inc. Storage array employing scrubbing operations using multiple levels of checksums
US7017107B2 (en) 2001-04-30 2006-03-21 Sun Microsystems, Inc. Storage array employing scrubbing operations at the disk-controller level
US6742081B2 (en) 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7055058B2 (en) 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
WO2003060722A1 (fr) 2002-01-09 2003-07-24 Renesas Technology Corp. Système de mémoire et carte mémoire
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US20050213761A1 (en) 2002-12-02 2005-09-29 Walmsley Simon R Storing number and a result of a function on an integrated circuit
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7069382B2 (en) * 2003-09-24 2006-06-27 Aristos Logic Corporation Method of RAID 5 write hole prevention
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
CN100543702C (zh) 2003-11-18 2009-09-23 松下电器产业株式会社 文件记录装置及其控制方法和执行方法
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
US8627005B1 (en) 2004-03-26 2014-01-07 Emc Corporation System and method for virtualization of networked storage resources
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
JP4755642B2 (ja) 2004-04-26 2011-08-24 ストアウィズ インク 記憶のためのファイル圧縮および圧縮ファイルの操作の方法およびシステム
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
CN101010950A (zh) 2004-08-30 2007-08-01 松下电器产业株式会社 记录装置
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US7085512B2 (en) 2004-11-04 2006-08-01 Xerox Corporation Compact contamination reducing multi-corona system and method for reducing contamination of surfaces being acted upon by corona generating devices
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
AU2004325580A1 (en) 2004-12-06 2006-06-15 Peter Jensen System and method of erasing non-volatile recording media
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7689877B2 (en) 2005-11-04 2010-03-30 Sun Microsystems, Inc. Method and system using checksums to repair data
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070143561A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
WO2007097026A1 (ja) 2006-02-27 2007-08-30 Fujitsu Limited キャッシュ制御装置およびキャッシュ制御プログラム
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US8082510B2 (en) 2006-04-26 2011-12-20 Cisco Technology, Inc. Method and system for inserting advertisements in unified messaging solutions
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US7606681B2 (en) 2006-11-03 2009-10-20 Air Products And Chemicals, Inc. System and method for process monitoring
US7908219B2 (en) 2006-11-03 2011-03-15 Microsoft Corporation Inbox management
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
WO2008070191A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US9098347B2 (en) 2006-12-21 2015-08-04 Vmware Implementation of virtual machine operations using storage system functionality
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
JP5026213B2 (ja) 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
CN104093211B (zh) 2007-11-05 2018-12-07 蜂窝通信设备有限责任公司 缓冲器状态报告系统和方法
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8074019B2 (en) 2007-11-13 2011-12-06 Network Appliance, Inc. Preventing data loss in a storage system
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8738841B2 (en) 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8074014B2 (en) 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US8127076B2 (en) 2008-06-06 2012-02-28 Pivot3 Method and system for placement of data on a storage device
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
EP2350837A4 (de) 2008-09-15 2012-10-17 Virsto Software Corp Speicherverwaltungssystem für virtuelle maschinen
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
US8639871B2 (en) 2009-04-08 2014-01-28 Google Inc. Partitioning a flash memory data storage device
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
DE102009002474A1 (de) 2009-04-20 2010-10-21 Hilti Aktiengesellschaft Pneumatisches Schlagwerk und Handwerkzeugmaschine
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8527698B2 (en) * 2010-06-22 2013-09-03 Lsi Corporation Parity-based raid system configured to protect against data corruption caused by the occurrence of write holes
CN102447723B (zh) 2010-10-12 2015-09-09 运软网络科技(上海)有限公司 客户端虚拟化架构
US9104342B2 (en) * 2010-10-21 2015-08-11 Oracle International Corporation Two stage checksummed raid storage model
US9003103B2 (en) * 2011-09-12 2015-04-07 Microsoft Technology Licensing, Llc Nonvolatile media dirty region tracking
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8392428B1 (en) 2012-09-12 2013-03-05 DSSD, Inc. Method and system for hash fragment representation
US8904244B2 (en) * 2012-10-17 2014-12-02 Lsi Corporation Heuristic approach for faster consistency check in a redundant storage system
US9471448B2 (en) * 2014-12-10 2016-10-18 Intel Corporation Performing an atomic write operation across multiple storage devices

Also Published As

Publication number Publication date
WO2016140713A1 (en) 2016-09-09
US9946607B2 (en) 2018-04-17
CN107111528A (zh) 2017-08-29
US20160259693A1 (en) 2016-09-08
CN107111528B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
DE112015005211T5 (de) Systeme und verfahren für die speicherfehler-verwaltung
JP6556911B2 (ja) 注釈付きアトミック書き込み操作を行う方法および装置
EP3519969B1 (de) Physische medien, die sich der räumlich gekoppelten historisierung und wiedergabe bewusst sind
KR101833114B1 (ko) 분산 데이터베이스 시스템들을 위한 고속 장애 복구
US9959059B2 (en) Storage error management
US9910777B2 (en) Enhanced integrity through atomic writes in cache
KR101827239B1 (ko) 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피
US10019320B2 (en) Systems and methods for distributed atomic storage operations
US10817421B2 (en) Persistent data structures
US10133662B2 (en) Systems, methods, and interfaces for managing persistent data of atomic storage operations
US9342256B2 (en) Epoch based storage management for a storage device
DE102019111132A1 (de) Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE112014003152T5 (de) Systeme und Verfahren für atomare Speicheroperationen
US20140351526A1 (en) Data storage controller with multiple pipelines
US20160224588A1 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
DE112006003260T5 (de) Verfahren zum dynamischen Freilegen von Sicherungs- und Wiederherstellungslaufwerken
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102013106242A1 (de) Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern
DE102013211071A1 (de) Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung
US10114576B2 (en) Storage device metadata synchronization
US20130326150A1 (en) Process for maintaining data write ordering through a cache
US9292213B2 (en) Maintaining at least one journal and/or at least one data structure by circuitry
DE102020121109A1 (de) Speicher-controller, speichervorrichtungen und betriebsverfahren der speichervorrichtungen
DE102021119267A1 (de) Verfahren zum Betreiben einer Speichervorrichtung und einer Host-Vorrichtung sowie Speichervorrichtung

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: KIPA AB, SE

R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES LLC, PLANO, TEX., US

R082 Change of representative

Representative=s name: KIPA AB, SE