DE202015009267U1 - Priorisierung von Datenrekonstruktion in verteilten Speichersystemen - Google Patents

Priorisierung von Datenrekonstruktion in verteilten Speichersystemen Download PDF

Info

Publication number
DE202015009267U1
DE202015009267U1 DE202015009267.5U DE202015009267U DE202015009267U1 DE 202015009267 U1 DE202015009267 U1 DE 202015009267U1 DE 202015009267 U DE202015009267 U DE 202015009267U DE 202015009267 U1 DE202015009267 U1 DE 202015009267U1
Authority
DE
Germany
Prior art keywords
blocks
data
strip
effective redundancy
level
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.)
Active
Application number
DE202015009267.5U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google 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 Google LLC filed Critical Google LLC
Publication of DE202015009267U1 publication Critical patent/DE202015009267U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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
    • G06F11/1461Backup scheduling policy
    • 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
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Abstract

System zur Priorisierung von Daten zum Wiederherstelen in einem verteilten Speichersystem (100), wobei das System Folgendes umfasst: Speicherhosts (110), wobei jeder Speicherhost (110) nichtflüchtigen Speicher (114) hat; einen Computerprozessor (202), der mit den Speicherhosts (110) kommuniziert, wobei der Computerprozessor (202) Instruktionen ausführt, um Folgendes zu bewerkstelligen: das Verwalten der Aufteilung von Dateien (310), verteilt über die Speicherhosts (110), wobei jede Datei (310) Streifen (320) umfasst, die Blöcke (330) enthalten; das Ermitteln mithilfe eines Datenverarbeitungsgeräts (202) für jeden Streifen (320) einer Datei (310), die eine Vielzahl von Streifen (320) umfasst, die jeweils Blöcke (330) beinhalten, ob der Streifen (320) hochverfügbare Blöcke (330a) oder niedrigverfügbare Blöcke (330b) umfasst; das Ermitteln eines effektiven Redundanzwertes (ER) für jeden Streifen (320) der Datei (310), wobei der effektive Redundanzwert (ER) auf den Blöcken (330) und jeder dem entsprechenden Streifen (320) zugewiesenen Systemdomäne (402) basiert, das verteilte Speichersystem (100) eine Systemhierarchie (400) hat, die Systemdomänen (402) umfasst, jede Systemdomäne (402) einen aktiven oder inaktiven Status besitzt, worin einer sich im aktiven Status befindlichen Systemdomäne (402) zugewiesene Blöcke (330) eines Streifens (320) zugänglich sind und einer sich im inaktiven Status befindlichen Systemdomäne (402) zugewiesene Blöcke (330) eines Streifens (320) unzugänglich sind; und wenn Blöcke (330) eines Streifens (320) unzugänglich werden: das Rekonstruieren von unzugänglichen, hochverfügbaren Blöcken (330a) mit einem effektiven Redundanzwert (ER) kleiner als ein effektiver Redundanzgrenzwert (ERT), wesentlich und unverzüglich; und das Rekonstruieren nach einer Zeitgrenzwertperiode: unzugänglicher, niedrigverfügbarer Blöcke (330b); und unzugänglicher, hochverfügbarer Blöcke (330a), die einen effektiven Redundanzwert (ER) größer oder gleich eines effektiven Redundanzgrenzwertes (ERT) haben.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung behandelt die Priorisierung von Datenrekonstruktionen in verteilten Speichersystemen. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahen. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • HINTERGRUND
  • Ein verteiltes System besteht im Allgemeinen aus vielen lose gekoppelten Computer, die jeweils üblicherweise eine Rechenressource (z. B. einen oder mehrere Prozessoren) und/oder Speicherressourcen (z. B. Speicher, Flash-Speicher und/oder Datenträger) beinhalten. Ein verteiltes Speichersystem überlagert auf den Speicherressourcen des verteilten Systems eine Speicherabstraktion (z. B. einen Schlüssel/Wert-Speicher oder ein Dateisystem). Im verteilten Speichersystem kann ein Server-Prozess, der auf einem Computer ausgeführt wird, die Speicherressourcen dieses Computers an Client-Prozesse exportieren, die auf anderen Computer ausgeführt werden. RPCs (Remote Procedure Calls, entfernte Prozeduraufrufe) können Daten von Server-Prozessen an Client-Prozesse übertragen. Alternativ kann Remote Direct Memory Access (RDMA, Speicherfernzugriff) verwendet werden, um Daten von der Server-Hardware an Client-Prozesse zu übertragen.
  • ZUSAMMENFASSUNG
  • Ein Aspekt der Offenbarung stellt ein Verfahren zur Priorisierung von Daten zur Wiederherstellung in einem verteilten Speichersystem zur Verfügung. Dieses Verfahren enthält, für jeden Streifen einer Datei, die eine Vielzahl von Streifen beinhaltet, die aus Blöcken bestehen, unter Verwendung eines Datenverarbeitungsgeräts die Ermittlung, ob der Streifen hochverfügbare Blöcke oder niedrigverfügbare Blöcke enthält, sowie unter Verwendung des Datenverarbeitungsgeräts die Ermittlung eines effektiven Redundanzwerts für jeden Streifen der Datei. Der effektive Redundanzwert basiert auf den Blöcken und allen dem entsprechenden Streifen zugewiesenen Systemdomänen. Das verteilte Speichersystem besitzt eine Systemhierarchie, die Systemdomänen enthält. Zudem besitzt jede Systemdomäne einen aktiven Status oder einen inaktiven Status. Blöcke eines Streifens, der einer Systemdomäne im aktiven Status zugewiesen ist, sind zugänglich, während Blöcke eines Streifens, der einer Systemdomäne im inaktiven Status zugewiesen ist, nicht zugänglich sind. Die Systemdomäne kann während geplanter Wartungsarbeiten, aufgrund ungeplanter Fehler oder aus anderen Gründen in den inaktiven Status übertreten. Wenn Blöcke eines Streifens unzugänglich werden, enthält das Verfahren optional unter Verwendung des Datenverarbeitungsgeräts die wesentliche, sofortige Rekonstruktion von nicht zugänglichen, hochverfügbaren Blöcken, die einen effektiven Redundanzwert kleiner eines effektiven Redundanzgrenzwerts besitzen. Wenn des Weiteren Blöcke eines Streifens unzugänglich werden, enthält das Verfahren optional die Rekonstruktion nach einem Zeitgrenzwert: 1) von nicht zugänglichen, niedrigverfügbaren Blöcken; und 2) von nicht zugänglichen, hochverfügbaren Blöcken, die einen effektiven Redundanzwert größer oder gleich des effektiven Redundanzgrenzwerts besitzen. Daher werden bestimmte hochverfügbare Blöcke, die ein hohes Risiko des Verlusts in sich tragen (basierend auf dem effektiven Redundanzwert), relativ schneller als niedrigverfügbare Blöcke oder andere hochverfügbare Blöcke ohne hohes Verlustrisiko rekonstruiert.
  • Implementierungen der Offenbarung können eine oder mehrere der folgenden optionalen Eigenschaften enthalten. In manchen Implementationen enthält das Verfahren weiterhin die Aktualisierung des effektiven Redundanzwerts für jeden Streifen einer Datei, die einer Systemdomäne zugewiesen ist, wenn sich die Systemdomäne im inaktiven Status befindet. Der Zeitgrenzwert kann zwischen ca. 15 und ca. 30 Minuten liegen. Andere Grenzwert-Perioden sind ebenfalls möglich.
  • Die Systemhierarchie kann Systemstufen enthalten, wie etwa eine erste, zweite, dritte und vierte Systemstufe. Die erste Systemstufe entspricht dem Hostgerät der Datenverarbeitungsgeräte, nichtflüchtigen Speichergeräten oder Netzwerkschnittstellen. Jedes Hostgerät enthält eine Systemdomäne. Die zweite Systemstufe entspricht der Stromzufuhr, den Kommunikationseinheiten oder Kühleinheiten von Racks, in denen das Hostgerät aufbewahrt wird. Jede Stromzufuhr, Kommunikationseinheit oder Kühleinheit des Racks besitzt eine Systemdomäne. Die dritte Systemstufe entspricht der Stromzufuhr, Kommunikationseinheiten oder Kühleinheiten von Zellen mit ihnen zugewiesenen Racks. Jede Stromzufuhr, Kommunikationseinheit oder Kühleinheit der Zelle besitzt eine Systemdomäne. Die vierte Systemstufe entspricht einem Verteilungszentrums-Moduls der Zellen, wobei jedes Verteilungszentrums-Modul eine Systemdomäne besitzt.
  • In manchen Beispielen enthält das Verfahren für jeden Streifen die Ermittlung des effektiven Redundanzwerts für jede Systemstufe. Die Ermittlung eines effektiven Redundanzwerts für einen replizierten Streifen, der replizierte Blöcke beinhaltet, enthält die Identifizierung einer Anzahl an eindeutigen Systemdomänen, die mindestens einen verfügbaren replizierten Block in der entsprechenden Systemstufe bereitstellen können. Die Ermittlung eines effektiven Redundanzwerts in der zweiten Systemstufe für einen kodierten Streifen, der Datenblöcke und Codeblöcke enthält, enthält die Identifizierung einer Anzahl an eindeutigen Systemdomänen innerhalb der zweiten Systemstufe, die in der Lage sind, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen. Zudem enthält die Ermittlung des effektiven Redundanzwerts in der dritten oder vierten Systemstufe für einen kodierten Streifen, der Datenblöcke und Codeblöcke enthält, die Identifizierung einer Systemdomäne innerhalb der dritten oder vierten Stufe, die in der Lage ist, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen, und gleichzeitig die größte Anzahl an Blöcken im Vergleich mit den übrigen Systemdomänen enthält. Falls mehr als eine Systemdomäne die größte Anzahl an Blöcken besitzt, enthält das Verfahren außerdem die zufällige Auswahl einer der Systemdomänen.
  • In manchen Implementationen enthält die Ermittlung des effektiven Redundanzwerts für einen verschachtelten Streifen, der Datenblöcke, Codeprüfungsblöcke und Wortprüfungsblöcke enthält, außerdem weiterhin die Ermittlung einer der effektiven Spaltenredundanzen oder effektiven Streifenredundanzen. Die Ermittlung einer effektiven Spaltenredundanz enthält die Identifizierung einer Anzahl an eindeutigen Blöcken innerhalb eine Spalte, die aus anderen Blöcken innerhalb der Spalte rekonstruiert werden können; und die Ermittlung einer effektiven Streifenredundanz enthält die Identifizierung einer Anzahl an eindeutigen Blöcken innerhalb eines Streifens, die aus anderen Blöcken innerhalb des Streifens rekonstruiert werden können.
  • Ein anderer Aspekt der Offenbarung stellt ein Verfahren zur Priorisierung von Daten zur Wiederherstellung in einem verteilten Speichersystem zur Verfügung. Dieses Verfahren enthält unter Verwendung eines Computerprozessors die Ermittlung eines effektiven Redundanzwerts für jeden Streifen einer Datei, wobei die Datei Streifen mit Blöcken enthält, der effektive Redundanzwert auf den Blöcken und allen dem entsprechenden Streifen zugewiesenen Systemdomänen basiert, das verteilte Speichersystem eine Systemhierarchie mit Systemdomänen enthält und jede Systemdomäne einen aktiven Status oder einen inaktiven Status besitzt. Wenn sich eine Systemdomäne im inaktiven Status befindet, enthält das Verfahren die Aktualisierung des effektiven Redundanzwerts für jeden Streifen einer Datei, die der Systemdomäne zugewiesen ist. Zusätzlich enthält das Verfahren die Rekonstruktion eines Streifens, wenn sein effektiver Redundanzwert kleiner einem effektiven Redundanzgrenzwert ist.
  • Implementierungen dieses Aspektes der Offenbarung können eine oder mehrere der folgenden optionalen Eigenschaften beinhalten. In manchen Implementationen enthält die Systemhierarchie eine erste, eine zweite, eine dritte und eine vierte Stufe. Die erste Systemstufe entspricht dem Hostgerät der Datenverarbeitungsgeräte, nichtflüchtigen Speichergeräten oder Netzwerkschnittstellen. Jedes Hostgerät enthält eine Systemdomäne. Die zweite Systemstufe entspricht der Stromzufuhr, den Kommunikationseinheiten oder Kühleinheiten von Racks, in denen das Hostgerät aufbewahrt wird. Jede Stromzufuhr, Kommunikationseinheit oder Kühleinheit des Racks besitzt eine Systemdomäne. Die dritte Systemstufe entspricht der Stromzufuhr, Kommunikationseinheiten oder Küleinheiten von Zellen mit ihnen zugewiesenen Racks. Jede Stromzufuhr, Kommunikationseinheit oder Kühleinheit der Zelle besitzt eine Systemdomäne. Die vierte Systemstufe entspricht einem Verteilungszentrums-Moduls der Zellen, wobei jedes Verteilungszentrums-Modul eine Systemdomäne besitzt. In manchen Beispielen enthält das Verfahren weiterhin für jeden Streifen die Ermittlung des effektiven Redundanzwerts für jede Systemstufe.
  • In manchen Beispielen enthält die Ermittlung eines effektiven Redundanzwerts für einen replizierten Streifen, der replizierte Blöcke beinhaltet, die Identifizierung einer Anzahl an eindeutigen Systemdomänen, die mindestens einen verfügbaren replizierten Block in der entsprechenden Systemstufe bereitstellen können. Die Ermittlung eines effektiven Redundanzwerts in der zweiten Systemstufe für einen kodierten Streifen, der Datenblöcke und Codeblöcke enthält, enthält die Identifizierung einer Anzahl an eindeutigen Systemdomänen innerhalb der zweiten Systemstufe, die in der Lage sind, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen. In manchen Beispielen enthält die Ermittlung des effektiven Redundanzwerts in der dritten oder vierten Systemstufe für einen kodierten Streifen, der Datenblöcke und Codeblöcke enthält, die Identifizierung einer Systemdomäne innerhalb der dritten oder vierten Stufe, die in der Lage ist, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen, und gleichzeitig die größte Anzahl an Blöcken im Vergleich mit den übrigen Systemdomänen enthält. Falls mehr als eine Systemdomäne die größte Anzahl an Blöcken besitzt, enthält das Verfahren die zufällige Auswahl einer der Systemdomänen.
  • In manchen Implementationen enthält die Ermittlung des effektiven Redundanzwerts für einen verschachtelten Streifen, der Datenblöcke, Codeprüfungsblöcke und Wortprüfungsblöcke enthält, die Ermittlung einer der effektiven Spaltenredundanzen oder effektiven Streifenredundanzen. Die Ermittlung einer effektiven Spaltenredundanz enthält die Identifizierung einer Anzahl an eindeutigen Blöcken innerhalb eine Spalte, die aus anderen Blöcken innerhalb der Spalte rekonstruiert werden können, und die Ermittlung einer effektiven Streifenredundanz enthält die Identifizierung einer Anzahl an eindeutigen Blöcken innerhalb eines Streifens, die aus anderen Blöcken innerhalb des Streifens rekonstruiert werden können.
  • In manchen Implementationen enthält das Verfahren die Ermittlung, ob ein Streifen hochverfügbare oder niedrigverfügbare Blöcke beinhaltet. Wenn Blöcke des Streifens unzugänglich werden, enthält das Verfahren unter Verwendung des Datenverarbeitungsgeräts die wesentliche, sofortige Rekonstruktion von nicht zugänglichen, hochverfügbaren Blöcken, die einen effektiven Redundanzwert kleiner eines effektiven Redundanzgrenzwerts besitzen. Wenn des Weiteren Blöcke eines Streifens unzugänglich werden, enthält das Verfahren die Rekonstruktion eines Zeitgrenzwerts: 1) von nicht zugänglichen, niedrigverfügbaren Blöcken; und 2) von nicht zugänglichen, hochverfügbaren Blöcken, die einen effektiven Redundanzwert größer oder gleich des effektiven Redundanzgrenzwerts besitzen. Der Zeitgrenzwert kann zwischen ca. 15 und ca. 30 Minuten liegen. Andere Grenzwert-Perioden sind ebenfalls möglich.
  • Ein weiterer Aspekt der Offenbarung stellt ein System für die Priorisierung von Daten zur Wiederherstellung in einem verteilten Speichersystem bereit. Das System enthält Speicherhosts, wobei jeder Speicherhost nichtflüchtigen Speicher und einen Computerprozessor, der in Verbindung mit dem Speicherhost steht, enthält. Der Computerprozessor führt Instruktionen aus, um das Aufteilen von Dateien in Streifen über die Speicherhosts zu verwalten, wobei jede Datei Streifen mit Blöcken enthält. Für jeden Streifen einer Datei, die mehrere Streifen mit Blöcken enthält, ermittelt der Computerprozessor mithilfe eines Datenverarbeitungsgeräts, ob der Streifen hochverfügbare Blöcke oder niedrigverfügbare Blöcke enthält. Zusätzlich ermittelt der Computerprozessor einen effektiven Redundanzwert für jeden Streifen der Datei. Der effektive Redundanzwert basiert auf den Blöcken und allen dem entsprechenden Streifen zugewiesenen Systemdomänen. Das verteilte Dateisystem enthält eine Systemhierarchie, die Systemdomänen enthält, wobei jede Systemdomäne einen aktiven Status oder einen inaktiven Status besitzt. Blöcke eines Streifens, der einer Systemdomäne im aktiven Status zugewiesen ist, sind zugänglich, und Blöcke eines Streifens, der einer Systemdomäne im inaktiven Status zugewiesen ist, nicht zugänglich sind.
  • Implementierungen dieses Aspektes der Offenbarung können eine oder mehrere der folgenden optionalen Eigenschaften beinhalten. Wenn Blöcke eines Streifens unzugänglich werden, bewirkt der Computerprozessor die wesentliche, sofortige Rekonstruktion von nicht zugänglichen, hochverfügbaren Blöcken, die einen effektiven Redundanzwert kleiner eines effektiven Redundanzgrenzwerts besitzen. Wenn des Weiteren Blöcke eines Streifens unzugänglich werden, bewirkt der Computerprozessor die Rekonstruktion nach einem Zeitgrenzwert: 1) von nicht zugänglichen, niedrigverfügbaren Blöcken; und 2) von nicht zugänglichen, hochverfügbaren Blöcken, die einen effektiven Redundanzwert größer oder gleich des effektiven Redundanzgrenzwerts besitzen.
  • Der Computerprozessor bewirkt die Rekonstruktion von nicht zugänglichen hochverfügbaren Blöcken, die einen effektiven Redundanzwert kleiner eines effektiven Redundanzgrenzwerts haben, und bewirkt die Rekonstruktion der verbleibenden nicht zugänglichen Blöcke mithilfe des Datenverarbeitungsgeräts nach einem Zeitgrenzwert, folgend auf den Zeitpunkt der Nichtzugänglichkeit der nicht zugänglichen Blöcke. Die übrigen nicht zugänglichen Blöcke können hochverfügbare und/oder niedrigverfügbare Blöcke sein.
  • In manchen Implementationen bewirkt der Computerprozessor die Aktualisierung des effektiven Redundanzwerts für jeden Streifen einer Datei, die einer Systemdomäne zugewiesen ist, wenn sich die Systemdomäne im inaktiven Status befindet. Der Zeitgrenzwert kann zwischen ca. 15 und ca. 30 Minuten liegen.
  • In manchen Beispielen enthält die Systemhierarchie eine erste bis vierte Systemstufe. Die erste Systemstufe entspricht dem Hostgerät der Datenverarbeitungsgeräte, nichtflüchtigen Speichergeräten oder Netzwerkschnittstellen. Jedes Hostgerät enthält eine Systemdomäne. Die zweite Systemstufe entspricht der Stromzufuhr, den Kommunikationseinheiten oder Kühleinheiten von Racks, in denen das Hostgerät aufbewahrt wird. Jede Stromzufuhr, Kommunikationseinheit oder Kühleinheit des Racks besitzt eine Systemdomäne. Die dritte Systemstufe entspricht der Stromzufuhr, Kommunikationseinheiten oder Kühleinheiten von Zellen mit ihnen zugewiesenen Racks. Jede Stromzufuhr, Kommunikationseinheit oder Kühleinheit der Zelle besitzt eine Systemdomäne. Die vierte Systemstufe entspricht einem Verteilungszentrums-Moduls der Zellen, wobei jedes Verteilungszentrums-Modul eine Systemdomäne besitzt. Der Computerprozessor ermittelt für jeden Streifen den effektiven Redundanzwert für jede Systemstufe.
  • Der Computerprozessor kann die Ermittlung eines effektiven Redundanzwerts für einen replizierten Streifen bewirken, der replizierte Blöcke beinhaltet, indem er die Identifizierung einer Anzahl an eindeutigen Systemdomänen, die mindestens einen verfügbaren replizierten Block in der entsprechenden Systemstufe bereitstellen können, bewirkt. In manchen Beispielen ermittelt der Computerprozessor den effektiven Redundanzwert in der zweiten Systemstufe für einen kodierten Streifen, der Datenblöcke und Codeblöcke enthält, indem er die Identifizierung einer Anzahl an eindeutigen Systemdomänen innerhalb der zweiten Systemstufe bewirkt, die in der Lage sind, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen. Der Computerprozessor ermittelt den effektiven Redundanzwert in der dritten oder vierten Systemstufe für einen kodierten Streifen, der Datenblöcke und Codeblöcke enthält, indem er die Identifizierung einer Systemdomäne innerhalb der dritten oder vierten Stufe bewirkt, die in der Lage ist, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen, und gleichzeitig die größte Anzahl an Blöcken im Vergleich mit den übrigen Systemdomänen enthält. Falls mehr als eine Systemdomäne die größte Anzahl an Blöcken besitzt, wählt der Computerprozessor zufällig eine der Systemdomänen aus.
  • In manchen Implementationen ermittelt der Computerprozessor den effektiven Redundanzwert für einen verschachtelten Streifen, der Datenblöcke, Codeprüfungsblöcke und Wortprüfungsblöcke enthält, indem er eine der effektiven Spaltenredundanzen oder effektiven Streifenredundanzen ermittelt. Der Computerprozessor ermittelt eine effektive Spaltenredundanz, indem er die Anzahl an eindeutigen Blöcken innerhalb eine Spalte identifiziert, die aus anderen Blöcken innerhalb der Spalte rekonstruiert werden können, und ermittelt eine effektive Streifenredundanz, indem er die Anzahl an eindeutigen Blöcken innerhalb eines Streifens identifiziert, die aus anderen Blöcken innerhalb des Streifens rekonstruiert werden können.
  • Die Details einer oder mehrerer Ausführungsformen der Offenlegung sind in den begleitenden Zeichnungen und der nachfolgenden Beschreibung dargelegt. Andere Merkmale, Objekte und Vorteile sind aus der Beschreibung und den Zeichnungen sowie aus den Patentansprüchen ersichtlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1A ist eine schematische Ansicht eines exemplarischen verteilten Speichersystems.
  • 1B ist eine schematische Ansicht eines exemplarischen Speichersystems mit einer Zelle von Speicherressourcen, die von einem Verwalter verwaltet werden.
  • 2 ist eine schematische Ansicht eines exemplarischen Verwalters für ein verteiltes Speichersystem.
  • 3A ist eine schematische Ansicht einer exemplarischen Datei, die in replizierte Streifen unterteilt ist.
  • 3B ist eine schematische Ansicht einer beispielhaften Datei, die in Datenblöcke und Nicht-Datenblöcke unterteilt ist.
  • 3C ist eine schematische Ansicht einer exemplarischen Reed-Solomon-Kodierungstechnik.
  • 3D3G sind schematische Ansichten von exemplarischen verschachtelten Kodierungstechniken.
  • 3H ist eine exemplarische Zusammenstellung von Operationen zur Datenspeicherung mithilfe verschachtelter Kodierungstechniken.
  • 4A4E sind schematische Ansichten von exemplarischen Systemhierarchien.
  • 57 sind schematische Ansichten von exemplarischen Zusammenstellungen von Operationen zur Priorisierung der Datenwiederherstellung in einem verteilten Speichersystem.
  • Gleiche Verweissymbole in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Unter Bezugnahme auf 1A1B enthält in manchen Implementationen ein verteiltes Speichersystem 100 lose verbundene Ressourcenhosts 110, 110a–n (z. B. Computer oder Server), von denen jeder eine Berechnungsressource 112 (z. B. einen oder mehrere Prozessoren oder Central Processing Units (CPUs)) enthält, die mit den Speicherressourcen 114 (z. B. Speicher, Flash-Speicher, Dynamic Random Access Memory (DRAM), Phase Change Memory (PCM) und/oder Laufwerke) verbunden sind, die zum Zwischenspeichern von Daten genutzt werden können. Eine Speicherabstraktion (z. B. Schlüssel/Wert-Speicher oder Dateisystem), die die Speicherressourcen 114 überlagert, gestattet die skalierbare Nutzung der Speicherressourcen 114 durch einen oder mehrere Clients 120, 120a–n. Die Clients 120 können mit den Ressourcenhosts 110 über ein Netzwerk 130 (z. B. über RPC) kommunizieren.
  • Die verteilten Speichersysteme 100 können mehrere Redundanzschichten beinhalten, in denen Daten 312 repliziert und/oder kodiert und in mehreren Rechenzentren gespeichert werden. Rechenzentren beinhalten Computersysteme und ihre zugehörigen Komponenten, wie beispielsweise Telekommunikation- und Speichersysteme 100. Rechenzentren beinhalten normalerweise Backup-Stromversorgungen, redundante Kommunikationsanschlüsse, Umgebungskontrollen (um eine konstante Temperatur zu bewahren) sowie Sicherheitsgeräte. Rechenzentren können große Betriebe in einer industriellen Größenordnung sein, die sehr viel Strom verbrauchen (z. B. so viel wie eine kleine Stadt). Rechenzentren können sich an verschiedenen geographischen Standorten befinden (z. B. in unterschiedlichen Städten, in unterschiedlichen Ländern und auf unterschiedlichen Kontinenten). In manchen Beispielen bedingen die Rechenzentren oder Teile davon: Wartung (z. B. aufgrund eines Stromausfalls oder der Trennung eines Teils des Speichersystems 100 für den Austausch von Teilen oder aufgrund eines Systemausfalls oder einer Kombination daraus). Die in diesen Rechenzentren und im speziellen die im verteilten Speichersystem 100 gespeicherten Daten 312 können den Benutzern/Clients 120 während des Wartungszeitraums möglicherweise nicht zur Verfügung stehen, sodass die Operationen des Benutzers behindert oder unterbrochen werden. Während der Wartungsarbeiten (oder ungeplanten Fehlern) des verteilten Speichersystems 100 haben manche Daten 312 ein höheres Risiko, vollständig unzugänglich zu werden, als andere Daten 312. Es ist erstrebenswert, die Datenpopulation in hochverfügbare Daten 312 und niedrigverfügbare Daten 312 aufzuteilen und zu ermitteln, welche Daten 312 während der Wartung ein höheres Verlustrisiko aufweisen, und dann diese Daten 312 wiederherzustellen bzw. zu duplizieren, ohne alle oder die Meisten der verbleibenden Daten 312 wiederherzustellen, was zu Ineffizienz führen würde.
  • In einigen Implementierungen ist das verteilte Speichersystem 100 „einseitig”, sodass keine Server-Jobs erforderlich sind, um auf RPCs (Remote Procedure Calls) von Clients 120 zu antworten, um Daten 312 auf ihren jeweiligen Ressourcenhosts 110 zu speichern und von diesen abzurufen, und sie können stattdessen auf spezielle Hardware für die Verarbeitung entfernter Anfragen 122 zurückgreifen. „Einseitig” verweist auf das Verfahren, wobei die meiste Verarbeitung von Anfragen an den Ressourcenhost 110 innerhalb der Hardware ausgeführt werden kann, statt durch Software, die von den CPUs 112 der Ressourcenhosts 110 ausgeführt wird. Statt einen Prozessor 112 eines Ressourcenhosts 110 (z. B. eines Servers) einen Serverprozess 118 ausführen zu lassen, der den Zugriff auf die entsprechende Speicherressource 114 (z. B. nicht flüchtigen Speicher) an Client-Prozesse 128 exportiert, die auf den Clients 120 ausgeführt werden, können die Clients 120 direkt über eine Netzwerkschnittstelle (NIC) 116 des Ressourcenhosts 110 auf die Speicherressource 114 zugreifen. Mit anderen Worten, ein Client-Prozess 128, der auf einem Client 120 ausgeführt wird, kann direkt mit einer oder mehreren Speicherressourcen 114 zusammenarbeiten, ohne dass eine Routine eines Server-Prozesses 118 ausgeführt werden muss, die auf den Rechenressourcen 112 ausgeführt wird. Diese einseitige verteilte Speicherarchitektur ermöglicht einen relativ hohen Durchlauf und kurze Latenzen, wobei einzelne Clients 120 auf die Speicherressourcen 114 ohne die Nutzung der Berechnungsressourcen 112 des Ressourcenhosts 110 zugreifen können. Dies hat die Wirkung, dass die Anforderungen von Speicher 114 und die CPU-Zyklen entkoppelt werden, die in zweiseitigen verteilten Speichersystemen 100 typischerweise auftreten. Das einseitige verteilte Speichersystem 100 kann entfernte Speicherressourcen 114 nutzen, egal, ob es auf diesem Ressourcenhost 110 freie CPU-Zyklen gibt; des Weiteren, da einseitige Operationen nicht um die Ressourcen der CPU 112 wetteifern, kann ein einseitiges System Zwischenspeicherzugriffe 122 mit sehr genau vorhersehbarer, geringer Latenz bedienen, auch wenn die Ressourcenhosts 110 mit hoher CPU-Nutzung laufen. Das einseitige verteilte Speichersystem 100 gestattet somit eine höhere Nutzung von Cluster-Speicher 114 und Ressourcen der CPU 112 als herkömmliche zweiseitige Systeme, während es eine vorhersehbare, geringe Latenz liefert.
  • In einigen Implementierungen enthält das verteilte Speichersystem 100 einen Speicherlogik-Abschnitt 102, einen Datensteuerungs-Abschnitt 104 und einen Datenspeicherungs-Abschnitt 106. Der Speicherlogik-Abschnitt 102 kann eine Transaktion-API (Application Programming Interface) 350 beinhalten (z. B. eine einseitige transaktionale System-Client-Bibliothek), die verantwortlich ist für den Zugriff auf zugrundeliegende Daten, z. B. per RPC oder einseitigen Operationen. Der Datensteuerungs-Abschnitt 104 kann die Zuordnung und den Zugriff auf Speicherressourcen 114 verwalten, mit Aufgaben wie beispielsweise die Zuordnung von Speicherressourcen 114, die Registrierung von Speicherressourcen 114 bei dem entsprechenden Netzwerkschnittstellen-Controller 116, die Einrichtung von Verbindungen zwischen dem/den Client(s) 120 und den Ressourcenhosts 110, die Verarbeitung von Fehlern bei Maschinenausfällen usw. Der Datenspeicherungs-Abschnitt 106 kann die lose verbundenen Ressourcenhosts 110, 110a–n beinhalten.
  • Das verteilte Speichersystem 100 kann Daten 312 im DRAM (Dynamic Random Access Memory) 114 speichern und die Daten 312 von den externen Hosts 110 über RDMA-fähige (Remote Direct Memory Access) Netzwerkschnittstellen-Controller 116 bereitstellen. Eine Netzwerkschnittstelle 116 (auch bekannt als Netzwerkkarte, Netzwerkadapter oder LAN-Adapter) kann eine Hardwarekomponente eines Computers sein, die eine Berechnungsressource 112 mit dem Netzwerk 130 verbindet. Sowohl die Ressourcenhosts 110a–n als auch der Client 120 können einen Netzwerkschnittstellen-Controller 116 für die Netzwerkkommunikation haben. Ein Host-Prozess 118, der auf dem rechnenden Prozessor 112 des Ressourcenhosts 110 ausgeführt wird, registriert ein Set entfernter Speicherbereiche mit Direktzugriff 115a–n des Speichers 114 mit dem Netzwerkschnittstellen-Controller 116. Der Host-Prozess 118 kann die entfernten Speicherbereiche mit Direktzugriff 115a–n des Speichers 114 mit einer Berechtigung nur zum Lesen oder zum Lesen/Schreiben registrieren. Der Netzwerkschnittstellen-Controller 116 des Ressourcenhosts 110 erzeugt einen Client-Schlüssel 302 für jeden registrierten Speicherbereich 115a–n.
  • Die von Netzwerkschnittstellen-Controllern 116 ausgeführten einseitigen Operationen können auf einfache Leseoperationen, Schreiboperationen und Vergleichs-und-Austausch-Operationen beschränkt werden, die möglicherweise nicht alle hochentwickelt genug sind, um als einfacher Ersatz für die von einem traditionellen Cache-Server-Job implementierte Software-Logik zu dienen, um Cache-Anforderungen auszuführen und Cache-Strategien zu verwalten. Das Transaktion-API 350 übersetzt Befehle, wie beispielsweise zum Suchen oder Einfügen von Daten, in Folgen grundlegender Operationen des Netzwerkschnittstellen-Controllers. Die Transaktions-API 350 arbeitet mit den Datensteuerungs- und Datenspeicherungs-Einheiten 104, 106 des verteilten Speichersystems 100 zusammen.
  • Das verteilte Speichersystem 100 kann einen am gleichen Ort befindlichen Software-Prozess beinhalten, um Speicher 114 für entfernten Zugriff bei den Netzwerkschnittstellen-Controllern 116 zu registrieren und Verbindungen mit Client-Prozessen 128 einzurichten. Sobald die Verbindungen eingerichtet wurden, können Client-Prozesse 128 auf den registrierten Speicher 114 per Hardware-Engines des Netzwerkschnittstellen-Controllers 116 zugreifen, ohne jegliche Beteiligung der Software auf den lokalen CPUs 112 des entsprechenden Ressourcenhosts 110.
  • Unter Bezugnahme auf 1B beinhaltet das verteilte Speichersystem 100 bei einigen Implementierungen mehrere Zellen 200, und jede Zelle 200 beinhaltet Ressourcenhosts 110 und einen Verwalter 210, der mit den Ressourcenhosts 110 kommuniziert. Der Verwalter 210 (z. B. ein Prozess) kann auf einem rechnenden Prozessor 202 ausgeführt werden (z. B. auf einem Server mit nichtflüchtigem Speicher 204), der an das Netzwerk 130 angeschlossen ist, und die Datenspeicherung (z. B. Verwaltung eines auf den Ressourcenhosts 110 gespeicherten Dateisystems) verwalten, die Datenplatzierungen kontrollieren und/oder eine Datenwiederherstellung veranlassen. Darüber hinaus kann der Verwalter 210 das Vorhandensein und den Speicherort von Daten 312 auf den Ressourcenhosts 110 nachverfolgen. Redundante Verwalter 210 sind möglich. In einigen Implementierungen verfolgen der/die Verwalter 210 das Striping von Daten 312 über mehrere Ressourcenhosts 110 und das Vorhandensein und/oder den Speicherort mehrerer Kopien eines bestimmten Streifens im Hinblick auf Redundanz und/oder Leistung. Im Computer-Datenspeicher ist das Daten-Striping die Technik, logisch sequentielle Daten 312, wie beispielsweise eine Datei 310 (2), so zu segmentieren, dass Zugriffe auf sequentielle Segmente auf unterschiedlichen physischen Speichergeräten 114 (z. B. Zellen 200 und/oder Ressourcenhosts 110) erfolgen. Striping ist sinnvoll, wenn ein Verarbeitungsgerät Zugriff auf Daten 312 schneller anfordert, als ein Speichergerät 114 den Zugriff bereitstellen kann. Durch die Durchführung von Segmentzugriffen auf mehreren Geräten kann der Zugriff auf mehrere Segmente nebenläufig stattfinden. Damit entsteht mehr Durchsatz beim Datenzugriff, womit vermieden wird, den Prozessor im Leerlauf auf Datenzugriffe warten zu lassen.
  • In einigen Implementierungen bildet die Transaktion-API 350 eine Schnittstelle zwischen einem Client 120 (z. B. mit dem Client-Prozess 128) und dem Verwalter 210. Bei einigen Beispielen kommuniziert der Client 120 über einen oder mehrere RPCs (Remote Procedure Calls) mit dem Verwalter 210. In Reaktion auf eine Client-Anforderung 122 kann die Transaktions-API 350 den Speicherort bestimmter Daten 312 auf einem/mehreren Ressourcenhost(s) 110 finden und einen Schlüssel 302 erhalten, der Zugriff auf die Daten 312 erlaubt. Die Transaktions-API 350 kommuniziert direkt mit den entsprechenden Ressourcenhosts 110 (über die Netzwerkschnittstellen-Controller 116), um die Daten 312 zu lesen oder zu schreiben (z. B. unter Verwendung von RDMA (Remote Direct Memory Access)). Falls ein Ressourcenhost 110 nicht in Betrieb ist, oder die Daten 312 auf einen anderen Ressourcenhost 110 verschoben wurden, schlägt die Client-Anforderung 122 fehl, sodass der Client 120 aufgefordert wird, den Verwalter 210 erneut abzufragen.
  • Unter Bezugnahme auf 2 speichert und verwaltet der Verwalter 210 in manchen Implementationen die Dateisystem-Metadaten 212. Die Metadaten 212 können eine Datei-Map 214 enthalten, die Dateien 3101-n auf Dateideskriptoren 3001-n zuweist. Der Verwalter 210 kann die Darstellung seiner persistenten Metadaten 212 überprüfen und abändern. Der Verwalter 210 kann drei verschiedene Zugriffsmuster für die Metadaten 212 verwenden: nur Lesen; Datei-Transaktionen; und Stripe-Transaktionen. Bezugnehmend auf 2 und 3A3C beinhalten bei einigen Implementierungen die vom Verwalter 210 gespeicherten Dateideskriptoren 3001-n Metadaten 212, wie beispielsweise die Datei-Map 214, die die Streifen 320a–n auf Datenblöcke 330nD und Codeblöcke 330nC auf den Speicherhosts 110 abbildet. Um eine Datei 310 zu öffnen, sendet ein Client 120 eine Anfrage 122 an den Verwalter 210, der einen Dateideskriptor 300 zurückgibt. Der Client 120 verwendet den Dateideskriptor 300, um Dateisegment-Offsets in entfernte Speicherorte 115a–n zu übersetzen. Der Dateideskriptor 300 kann einen Client-Schlüssel 302 beinhalten (z. B. einen 32-bit-Schlüssel), der eindeutig für einen Block 330 auf einem Speicherhost 110 ist, und der zum RDMA-Lesen dieses Blocks 330 verwendet wird. Nachdem der Client 120 den Dateideskriptor 300 geladen hat, kann der Client 120 auf die Daten 312 einer Datei 310 über RDMA oder ein anderes Verfahren zum Abrufen von Daten zugreifen.
  • Der Verwalter 210 kann Statusinformationen für alle Speicherhosts 110 vorhalten, die Teil der Zelle 200 sind. Die Statusinformation kann Informationen über Kapazität, freien Speicher, Last auf dem Speicher-Host 110, Latenz des Speicher-Hosts 110 aus Perspektive eines Clients und einen aktuellen Status enthalten. Der Verwalter 210 kann diese Information erhalten, indem er die Speicherhosts 110 in der Zelle 200 direkt abfragt, und/oder indem er einen Client 120 abfragt, um eine Latenzstatistik aus Sicht eines Clients zu erhalten. Bei einigen Beispielen verwendet der Verwalter 210 die Statusinformationen des Speicher-Hosts, um Entscheidungen über einen Neuausgleich, eine Leerung oder eine Wiederherstellung zu treffen und Entscheidungen zuzuordnen.
  • Der/Die Verwalter 210 können Blöcke 330 zuordnen, um Client-Anforderungen 122 nach mehr Speicherplatz in einer Datei 310 zu erfüllen, ebenso wie für einen Neuausgleich und eine Wiederherstellung. In manchen Beispielen repliziert der Prozessor 202 die Blöcke 330 über die Speichergeräte 114 anders als die Verteilung der Datenblöcke 330nD und der Codeblöcke 330nC über die Speichergeräte 114. Der Verwalter 210 kann eine Last-Map 216 der Last und Agilität des Speicher-Hosts verwalten. In einigen Implementierungen weist der Verwalter 210 einen Block 330 zu, indem er eine Liste von Kandidaten-Speicherhosts 110 erzeugt und eine Anforderung zur Zuordnung eines Blocks an alle Kandidaten-Speicherhosts 110 sendet. Wenn der Speicherhost 110 überladen ist oder keinen verfügbaren Speicherplatz hat, kann der Speicherhost 110 die Anfrage 122 ablehnen. In diesem Fall wählt der Verwalter 210 einen anderen Speicher-Host 110 aus. Jeder Verwalter 210 kann seinen spezifischen Anteil des Dateinamensraums fortlaufend durchsuchen und alle Metadaten 212 etwa jede Minute überprüfen. Der Verwalter 210 kann das Dateiscanning nutzen, um die Integrität der Metadaten 212 zu prüfen, auszuführende Arbeiten zu ermitteln und/oder Statistiken zu generieren. Der Datei-Scan kann nebenläufig zu anderen Operationen des Verwalters 210 ausgeführt werden. Der eigentliche Scan kann die Metadaten 212 nicht verändern, aber plant Arbeit ein, die von anderen Komponenten des Systems zu erledigen ist, und berechnet Statistiken.
  • Unter Bezugnahme auf 3A3H können die Daten 312 aus einer oder mehreren Dateien 310 bestehen, wobei jede Datei 310 eine spezifische Replikationsstufe 311 und/oder einen Fehlerkorrekturcode 313 besitzt. Der Verwalter 210 kann jede Datei 310 in eine Sammlung von Streifen 320 unterteilen, wobei jeder Streifen 320 unabhängig von den restlichen Streifen 320 kodiert wird. Für eine replizierte Datei 310 (3A) ist jeder Streifen 320 ein einziger logischer Block, den der Verwalter 210 als Streifenreplik 330n repliziert und auf mehreren Speicherressourcen 114 speichert. In diesem Szenario wird eine Streifen-Replik 330n auch als Block 330n bezeichnet. Für eine löschkodierte Datei 310 (3B) besteht jeder Streifen 320 aus mehreren Datenblöcken 330nD und Nicht-Datenblöcken 330nC (z. B. Codeblöcken), die der Verwalter 210 auf mehreren Speicherressourcen 114 ablegt, wobei die Sammlung der Datenblöcke 330nD und Nicht-Datenblöcke 330nC ein einzelnes Codewort bildet. Im Allgemeinen kann der Verwalter 210 jeden Streifen 320 auf Speicherressourcen 114 speichern, unabhängig davon, wie die anderen Streifen 320 in der Datei 310 in den Speicherressourcen 114 gespeichert sind. Der Fehlerkorrekturcode 313 fügt der Datei 310 redundante Daten oder Paritätsdaten hinzu, sodass die Datei 310 später von einem Empfänger wiederhergestellt werden kann, auch wenn mehrere Fehler (abhängig von der Kapazität des verwendeten Codes) eingeführt wurden. Der Fehlerkorrekturcode 313 wird verwendet, um die Integrität der Daten 312 in Speichergeräten aufrechtzuerhalten, um Daten 312 für die Leistung (Latenz) zu rekonstruieren, oder um Maschinen schneller zu leeren.
  • Unter Bezugnahme auf 3B ist jeder Streifen 320 in Datenblöcke 330nD und Nicht-Datenblöcke 330nC aufgeteilt, basierend auf einem Kodierungsgrad, z. B. der Reed-Solomon-Kodierung (3C), verschachtelten Codes (3D3H) oder anderen Löschkodierungen. Die Nicht-Datenblöcke 330nC können Codeblöcke 330nC sein (z. B. Reed-Solomon-Codes). In anderen Beispielen können die Nicht-Datenblöcke 330nC Codeprüfungsblöcke 330nCC, Wortprüfungsblöcke 330nWC und Code-Wort-Prüfungsblöcke 330nCCWC (verschachtelte Kodierung) sein.
  • Ein Datenblock 330nD entspricht einer definierten Menge von Daten 312. In manchen Implementationen ist ein Datenblock 330nD ein angrenzender Teil der Daten 312 aus der Datei 310. In anderen Implementationen ist ein Datenblock 330nD einer oder mehrere nicht angrenzende Teile der Daten 312 aus der Datei 310. Ein Datenblock 330nD kann z. B. 256 Bytes oder andere Einheiten der Daten 312 sein.
  • Ein beschädigter Block 330 (z. B. ein Datenblock 330nD oder ein Nicht-Datenblock 330nC) ist ein Block 330, der einen oder mehrere Fehler enthält. Typischerweise wird ein beschädigter Block 330 mithilfe eines Fehlererkennungscodes 313 identifiziert. Ein beschädigter Block 330 kann z. B. vollständig gelöscht (beispielsweise war der Block 330 auf einer Festplatte gespeichert, die vom einem Hurrikan zerstört wurde) sein oder ein einzelnes Bit im beschädigten Block 330 kann vertauscht sein. Ein gesunder Block 330 ist ein Block 330, der nicht beschädigt ist. Ein beschädigter Block 330 kann vorsätzlich beschädigt sein, z. B., wenn ein bestimmter Ressourcenhost 110 zur Wartung abgeschaltet wird. Ein beschädigter Block kann ein fehlender oder nicht verfügbarer Block sein. In diesem Fall können beschädigte Blöcke 330 identifiziert werden, indem Blöcke 330 identifiziert werden, die auf Ressourcenhosts 110 gespeichert sind, die abgeschaltet werden. In manchen Implementationen können beschädigte Blöcke 330 mithilfe gesunder Blöcke 330 wiederhergestellt werden. Beschädigte Blöcke (z. B. Datenblöcke 330nD oder Nicht-Datenblöcke 330nC) können aus verschiedenen Gründen beschädigt sein. Beschädigte Blöcke 330 innerhalb eines Streifens 320 können aus den gesunden Blöcken 330 wiederhergestellt werden. Die Nicht-Datenblöcke 330nC einer Datei 310 enthalten einen fehlerkorrigierenden Codeblock 313. Der fehlerkorrigierende Codeblock 313 enthält einen Block 330 mit Daten 312, basierend auf einem oder mehreren Datenblöcken 330nD. In manchen Implementationen hat jeder Codeblock 330nC dieselbe spezifische Größe (z. B. 256 Bytes) wie der Datenblock 330nD. Die Codeblöcke 330nC werden mithilfe eines Fehlerkorrekturcodes 313 generiert, z. B. mit einem Maximal Distance Separable(MDS)-Code. Beispiele von MDS-Codes enthalten die Reed-Solomon-Codes. Verschiedene Techniken können genutzt werden, um Codeblöcke 330nC zu generieren. Im Allgemeinen kann jeder Fehlerkorrekturcode 313 genutzt werden, der d Datenblöcke 330nD aus einem beliebigen Set von d einzigartigen, gesunden Blöcken 330 (entweder Datenblöcke 330nD oder Codeblöcke 330nC) wiederherstellen kann.
  • Ein Codewort ist ein Set von Datenblöcken 330nD und Codeblöcken 330nC, basierend auf diesen Datenblöcken 330nD. Wenn ein MDS-Code zur Generierung eines Codewortes, das d Datenblöcke 330nD und c Codeblöcke 330nC enthält, genutzt wird, dann können alle der Blöcke 330 (Daten oder Code) wiederhergestellt werden, solange jegliche gesunde Blöcke 330 (Daten oder Code) des Codewortes verfügbar sind.
  • 3C zeigt eine Reed-Solomon-Kodierung 313a als die fehlerkorrigierenden Codeblöcke 313. Jeder Streifen 320 ist in Blöcke 330 aufgeteilt, die in mehreren Speicherressourcen 114 gespeichert sind. Die Blöcke 330 können Datenblöcke 330nD oder Codeblöcke 330nC sein, die zusammen ein einzelnes Codewort bilden. Die Datenblöcke 330nD enthalten die tatsächlichen Daten 312; während die Codeblöcke 330nC zur Parität genutzt werden, um zu ermitteln, ob die Datei 310 intakt ist. Die Reed-Solomon-Kodierung 313a erlaubt den Verlust von bis zu allen Codeblöcken 330nC, wobei der Streifen 310 weiterhin aus den Datenblöcken 330nD rekonstruiert werden kann. Daher besteht jeder Streifen 320 einer Datei 310 aus mehreren Datenblöcken 330nD und Codeblöcken 330nC, die der Verwalter 210 auf mehreren Speicherressourcen 114 ablegt, wobei die Sammlung der Datenblöcke 330nD und Codeblöcke 330nC ein einzelnes Codewort bildet. Im Allgemeinen kann der Verwalter 210 jeden Streifen 320 auf Speicherressourcen 114 platzieren, unabhängig davon, wie die anderen Streifen 320 der Datei 310 auf den Speicherressourcen 114 platziert sind. Die Reed-Solomon-Kodierung 313a füngt der Datei 310 redundante Daten 312 oder Paritätsdaten 312 hinzu, sodass die Datei 310 später von einem Empfänger wiederhergestellt werden kann, auch wenn mehrere Fehler (abhängig von der Kapazität des verwendeten Codes) eingeführt wurden. Die Reed-Solomon-Kodierung 313a wird genutzt, um Datenintegrität in Ressourcenhosts 110 sicherzustellen, um Daten 312 für Leistung (Latenz) zu rekonstruieren oder um Maschinen schneller zu leeren.
  • Unter Bezugnahme auf 3D3H enthält in Techniken der verschachtelten Kodierung 313b eine kodierte Dateneinheit 316 eine Dateneinheit 316 mit Datenblöcken 330nD und fehlerkorrigierenden Codeblöcken (also Nicht-Datenblöcken 330nC), die gespeichert und als einen zweidimensionalen R×C-Array bildend angesehen wird. Es existieren X Codeblöcke 330nC für jede Spalte C (genannt „Codeprüfungsblöcke 330nCC”), die zur Rekonstruktion von X oder weniger beschädigten Blöcken 330 pro Spalte genutzt werden können. Es existieren Y Codeblöcke 330nC (genannt „Wortprüfungsblöcke 330nWC”) für den gesamten 2D-Array. Wenn mehr als X beschädigte Blöcke 330 in einer oder mehrerer Spalten C existieren, werden die Wortprüfungsblöcke 330nWC zusammen mit anderen gesunden Blöcken 330 genutzt, um beschädigte Blöcke 330 zu rekonstruieren. Obwohl manche in dieser Spezifikation beschriebene Beispiele kodierte Dateneinheiten 314 (also Dateneinheiten 316 und Codeblöcke 330nC (also Nicht-Datenblöcke 330nC)) zur Bildung eines zweidimensionalen Arrays darstellen, ist es möglich, mit Kodierungstechniken anders konfigurierte kodierte Dateneinheiten 314 zu erzeugen. Verschiedene Spalten können z. B. verschiedene Anzahlen von Codeprüfungsblöcken 330nCC (also der Codeprüfungsblock 330nCC) enthalten und Spalten C, die Wortprüfungsblöcke 330nWC enthalten, können Anzahlen von Zeilen, verschieden von der Anzahl der Spalten, enthalten, die Datenblöcke 330nD und Codeprüfungsblöcke 330nC enthalten.
  • Die Codes 330nC können genutzt werden, um Daten 312 über Ressourcenhosts 110 hinweg zu speichern, indem jeder Spalte C der Datenblöcke 330nD einem Rechenzentrum zugeteilt wird. Jeder Block 330 innerhalb der Spalten C kann einem Ressourcenhost 110 in einem Rechenzentrum zugeteilt werden. Falls dann X oder weniger Blöcke 330 in einem Rechenzentrum verlorengehen, können die Blöcke 330 unter Verwendung von rein intra-Rechenzentrums-Kommunikation wiederhergestellt werden (es müssen also keine anderen Rechenzentren Daten 312 bereitstellen, um die Rekonstruktion durchzuführen). Falls mehr als X Blöcke 330 in einem oder mehreren Rechenzentren verlorengehen, dann werden die Y Wortprüfungsblöcke 330nWC verwendet, um eine Rekonstruktion zu versuchen. Daher wird die Kommunikation zwischen verschiedenen Rechenzentren (die kostenintensiver sein kann, z. B. langsamer als intra-Kommunikation) nur benötigt, wenn mehr als X Blöcke 330 innerhalb eines einzelnen Rechenzentrums beschädigt sind.
  • Die Codes können auch innerhalb eines einzelnen Rechenzentrums genutzt werden. Statt verschiedene Spalten C verschiedenen Rechenzentren zuzuweisen, speichert das kodierende System 102 alle Spalten in einem einzelnen Rechenzentrum. Die Datenblöcke 330nD und die Codeblöcke 330nC können in individuellen Ressourcenhosts 110 innerhalb des Rechenzentrums gespeichert werden. Dies ist z. B. nützlich, wenn das Lesen von Daten 312 von den Ressourcenhosts 110 während der Rekonstruktion kostenintensiv (z. B. langsam) ist, sodass das kodierende System 102 während der Rekonstruktion weniger Blöcke 330 lesen kann, als mit konventionellen Kodierungstechniken möglich wäre. Kleine Mengen von beschädigten Blocks 330 können rekonstruiert werden, indem kleine Mengen von anderen Blöcken 330 (Codeprüfungsblöcke 330nCC und andere Datenblöcke 330nD in der Spalte C) gelesen werden und große Mengen von beschädigten Blöcken 330 können mithilfe der Wortprüfungsblöcke 330nWC rekonstruiert werden, falls nötig.
  • Unter Bezugnahme auf 3D3H zeigt in manchen Implementationen die Technik einer verschachtelten Kodierung 313b Datenblöcke 330nD und Codeblöcke 330nC, die ein Codewort bilden. Wie dargestellt ist die Technik der verschachtelten Kodierung 313b eine zweidimensionale (2D)-Technik zur verschachtelten Kodierung 313b, es kann aber auch eine dreidimensionale (3D)-Technik zur verschachtelten Kodierung 313b angewandt werden. Ein verschachtelter 2D-Code 313b wird auf systematische Weise aus einem beliebigen linearen MDS-Code gebildet. Wortprüfungsblöcke 330nWC, die auf einer Dateneinheit 316 basieren, sind in zwei Gruppen aufgeteilt, wobei die erste Gruppe X Codeblöcke 330nC und die zweite Gruppe N Codeblöcke 330nC enthält. Die Dateneinheit 312 wird als Array von Spalten C dargestellt und X Codeblöcke 330nC in der ersten Gruppe werden genutzt, um X Spaltenblöcke 330 pro Spalte zu erzeugen, indem die in separate Komponenten pro Spalte aufgesplittet werden („Split”-Codeprüfungsblöcke 330nCC). Die N Codeblöcke 330nC in der zweiten Gruppe bilden Wortprüfungsblöcke 330nWC.
  • 3E zeigt z. B. Dateneinheiten (D0–D41) 316, wobei D0–D41 Datenblöcke 330nC und Codeblöcke (C0–C7) 330nC sind, die auf der Dateneinheit (D0–D41) 316 basieren. Die Datenblöcke (D0–D41) 330nD und die Codeblöcke (C0–C7) 330nC bilden ein Codewort. Die Codeblöcke 330nC sind aufgeteilt in eine erste Gruppe, die C0–C1 enthält, und in eine zweite Gruppe, die C2–C7 enthält. C0–C1 werden aufgesplittet, um Split-Codeprüfungsblöcke 330nCC zu bilden. C2–C7 werden als Wortprüfungsblöcke 330nWC genutzt.
  • In 3F wird ein resultierender kodierter Datenblock 314, der die Dateneinheit (D0–D41) 316 und zusätzliche Codeblöcke 330nC (Split-Codeprüfungsblöcke 330nCC und Wortprüfungsblöcke 330nWC) enthält, gezeigt. Um einen Split-Codeprüfungsblock 330nCC entsprechend als C0 der Spalte j (bezeichnet als C0,j) zu bilden, wird C0 generiert, als ob alle Datenblöcke 330nD außerhalb der Spalte j den Wert Null besitzen. Das bedeutet, C0,j hat den Wert, der aus der Ausführung der Operationen zur Generierung von C0 unter Nutzung der gesamten Dateneinheit 316 von Datenblöcken 330nD entstehen würden, aber statt nur unter Nutzung der Spalte j, mit allen anderen Spalten ausgeblendet. Wenn zum Beispiel eine Generatormatrix zur Generierung von C0 für die gesamte Dateneinheit 316 genutzt werden würde, dann kann die Generatormatrix so modifiziert werden, C0,j so zu generieren, dass es den Wert hat, der aus der Nutzung der originalen Generatormatrix und der Anwendung dieser originalen Generatormatrix auf die Dateneinheit 316 mit den Datenblöcken 330nD in den Spalten und anderen Spalten als j ausgeblendet entstehen würde.
  • Die Split-Codeprüfungsblöcke 330nCC für C1, j für jede Spalte C werden gleichermaßen erzeugt, aber unter Nutzung von C1 statt C0. Als Ergebnis hiervon ist C0 eine lineare Kombination von C0,0–C0,6 und C1 ist eine lineare Kombination von 0,0–0,6. Das heißt
    Figure DE202015009267U1_0002
  • Die mit „?” bezeichneten Blöcke 330 in 3F können auf verschiedene Arten erzeugt werden, z. B. wie weiter unten beschrieben mit Referenz auf 3G.
  • Im Beispiel dargestellt in 3E und 3F enthält die resultierende Dateneinheit 316 42 Datenblöcke 330nD und 8 Codeblöcke 330nC. Bezugnehmend auf den Originalcode, der zur Nutzung der kodierten Einheiten 314 verwendet wurde, gehören die Codeblöcke 330nC wie oben beschrieben einer von zwei Gruppen an, wobei X = 2 der ersten und N = 6 der zweiten Gruppe angehören. Wann immer es zwei oder weniger (X oder weniger) beschädigte Blöcke 330 innerhalb einer der ersten sieben Spalten gibt, können die beschädigten Blöcke 330 repariert werden, indem die gesunden Blöcke 330 der Spalten C und die Split-Codeprüfungsblöcke 330nCC der Spalte C genutzt werden. Um dies darzustellen, sei j die Bezeichnung der Spalte C unter Einschluss der zwei oder weniger beschädigten Blöcke 330 und der Erwägung des aus der Ausblendung aller Datenblöcke 330nD aus den Spalten C, außer j, erhaltenen Codeworts. In diesem Codewort sei C0 = C0,j und C1 = C1,j. Als Resultat daraus seien die zwei oder weniger beschädigten Blöcke 330 in anderen Spalten als denen, die nur Null-Datenblöcke 330nD enthalten, und durch Ansicht der Wortprüfungscodes 330nWC als beschädigt.
  • Im Beispiel dargestellt in 3F füllen die Wortprüfungscodes 330nWC eine gesamte Spalte C (die rechte Spalte). 2D-verschachtelte Codes 313b können mit einer beliebigen Anzahl an Spalten C aus Wortprüfungsblöcken 330nWC gebildet werden. Die Spalten C aus Wortprüfungsblöcken 330nWC können dieselbe Anzahl an Zeilen R wie die Spalten aus Datenblöcken 330nD oder eine andere Anzahl an Zeilen R haben und die Spalten C aus Wortprüfungsblöcken 330nWC können untereinander verschiedene Anzahlen von Zeilen R haben. Die Spalten C aus Wortprüfungsblöcken 330nWC können, müssen aber nicht, Codeprüfungsblöcke 330nCC besitzen, d. h. Code-Wort-Prüfungsblöcke 330nCCWC. Die Erhöhung der Anzahl an Wortprüfungsblöcken 330nWC erhöht die Verlässlichkeit der gespeicherten Daten 312, benötigt aber mehr Speicherplatz auf den Ressourcenhosts 110. Im Allgemeinen enthalten die Spalten C für verschachtelte Codes 313b entweder Datenblöcke 330nD oder Wortprüfungsblöcke 330nWC, aber nicht beide.
  • Im Allgemeinen kann ein 2D-verschachtelter Code 313b mit X Split-Codeprüfungsblöcken 330nCC pro Spalte C und N Wortprüfungsblöcken 330nWC zur Rekonstruktion von X beschädigten Blöcken 330 pro Spalte C (in den Spalten, die Datenblöcke 330nC enthalten) während der Durchführung von intra-Spalten-Kommunikation (welche typischerweise z. B. intra-Rechenzentrums-Kommunikation bedeutet) genutzt werden. Bei der Rekonstruktion mehrerer beschädigter Blöcke 330 innerhalb der Einheit werden diese beschädigten Blöcke 330 typischerweise zuerst rekonstruiert, da eine intra-Spalten-Kommunikation weniger kostenintensiv ist als eine inter-Spalten-Kommunikation, es können allerdings beschädigte Blöcke 330 zurückbleiben. Falls nach der Rekonstruktion von beschädigten Blöcken 330 innerhalb von Spalten (N + X) oder weniger andere Blöcke 330 immer noch beschädigt sind (da sie nicht durch intra-Spalten-Kommunikation rekonstruiert werden konnten), können diese anderen beschädigten Blöcke 330 mithilfe der Wortprüfungsblöcke 330nWC und der Split-Codeprüfungsblöcke 330nCC rekonstruiert werden. Die Wortprüfungsblöcke 330nWC in der ersten Gruppe (C0 und C1) können aus den Split-Codeprüfungsblöcken 330nCC ermittelt werden, z. B. mithilfe der Formel Ci = Σ 6 / j=0 C i, j, obwohl diese Wortprüfungsblöcke 330nWC nicht ausdrücklich gespeichert sind.
  • Um dies darzustellen, sei Z die Bezeichnung der Anzahl an beschädigten Wortprüfungsblöcken 330nWC, und sei Y die Bezeichnung der Anzahl an Wortprüfungsblöcken 330nWC in der ersten Gruppe, die nicht aus ihren zugehörigen Split-Codeprüfungsblöcken 330nCC rekonstruiert werden können, entsprechend der Formel Ci = Σ 6 / j=0 C 0, j zu beschädigten Split-Codeprüfungsblöcken 330nCC. Unter Verwendung dieser Formel können X–Y Wortprüfungsblöcke 330nWC aus der ersten Gruppe bestimmt werden, die ein Codewort (z. B. das in 3E dargestellte) mit Y beschädigten Wortprüfungsblöcken 330nWC in der ersten Gruppe und Z beschädigten Wortprüfungsblöcken 330nWC in der zweiten Gruppe gebildet werden. Da es maximal N + X beschädigte Blöcke 330 gibt, existieren maximal N + X – Y – Z beschädigte Datenblöcke 330nD.
  • Daher ist es möglich, das resultierende Codewort zu nutzen, um alle beschädigten Blöcke 330 zu rekonstruieren, da es maximal N + X – Y – Z + Y + Z beschädigte Blöcke 330 gibt.
  • Unter Bezugnahme auf 3G enthält in manchen Implementationen die resultierende kodierte Einheit 314 Codeprüfungsblöcke 330nCC für die Wortprüfungsblöcke 330nWC (also Code-Wort-Prüfungsblöcke 330nCCWC). Im Vergleich zur kodierten Einheit 314 in 3F enthält die Einheit in 3G die Codeprüfungsblöcke C0,7 und C1,7 330nCC in den mit „?” markierten Orten in 3F. Dies ist ein Weg, die Rekonstruktion von beschädigten Wortprüfungsblöcken 330nWC zu ermöglichen, ohne auf inter-Spalten-Kommunikation angewiesen zu sein. Die Codeprüfungsblöcke C0,7 und C1,7 330nCC können aus verschiedene Arten erzeugt werden. Zum Beispiel können diese Codeprüfungsblöcke 330nCC basierend auf C2–C7 erzeugt werden, auf dieselbe Art, wie C0,0 und C1,0 basierend auf D0–D5 erzeugt werden. Die resultierende kodierte Einheit in 3G kann (mithilfe des Beispiels verschalteten Codes 313b) genutzt werden, um bis zu acht beschädigte Blöcke 330 nach der Durchführung von intra-Spalten-Kommunikation zu rekonstruieren. Codeprüfungsblöcke 330nC können jeder Anzahl an Spalten hinzugefügt werden, die Wortprüfungsblöcke 330nWC enthalten.
  • Unter Bezugnahme auf 3H verteilt der Verwalter 210 in manchen Implementationen Daten 312 mithilfe verschachtelter Codes 313b. Das System 100 erhält eine Dateneinheit 316 (Schritt 372). Die Dateneinheit 316 kann md*nd Datenblöcke 330nC enthalten, wobei md eine Anzahl an Datenzeilen und nd eine Anzahl an Datenspalten ist und md und nd größer oder gleich eins sind. Die kodierte Einheit 314 enthält m*n Blöcke 330, die md*nd enthalten, wobei m die gesamte Anzahl an Zeilen R aus Datenblöcken 330nD und nicht-Datenblöcken 330nC und n die Anzahl der Spalten C aus Datenblöcken 330nD und Nicht-Datenblöcken 330nC ist; m und n sind größer oder gleich eins. Das System 100 erzeugt eine oder mehrere Spalten C mit Wortprüfungsblöcken 330nWC mithilfe eines ersten linearen Fehlerkorrekturcodes 313 in systematischer Form sowie die Datenblöcke 330nD (Schritt 374). Die Wortprüfungsböcke 330nWC und die Datenblöcke 330nD aus derselben Spalte R bilden ein Codewort. Für jede md Spalte mit Datenblöcken 330nC erzeugt das System 100 einen oder mehrere Split-Codeprüfungsblöcke 330nCC für die Spalte C (Schritt 376). Die Split-Codeprüfungsblöcke 330nCC werden so erzeugt, dass eine lineare Kombination von n Split-Codeprüfungsblöcken 330nCC aus verschiedenen Spalten C einen ersten Wortprüfungsblock 330nWC eines ersten Codeworts inklusive der Datenblöcke 330nD und der m Wortprüfungsblöcke 330nWC bildet. Der erste Wortprüfungsblock 330nWC (und alle anderen aus einer linearen Kombination von Split-Codeprüfungsblöcken 330nCC aus verschiedenen Spalten C resultierenden Wortprüfungsblöcke 330nWC) bildet ein Codewort mit den Datenblöcken 330nD und den in Schritt 374 erzeugten Wortprüfungsblöcken 330nWC. Die Split-Codeprüfungsblöcke 330nCC können z. B. für jede Spalte C mithilfe eines aufsplittenden Fehlerkorrekturcodes 313 und den md Datenblöcken 330nD oder den Wortprüfungsblöcken 330nWC erzeugt werden, worin der aufsplittende Fehlerkorrekturcode 313 eine Split-Generatormatrix enthält, die auf dieselbe Weise kodiert wie eine Generatormatrix für den ersten Fehlerkorrekturcode 313, angewendet auf die Datenblöcke 330nD, wobei die Datenblöcke 330nD der Spalten C außer der Spalte C auf Null gesetzt werden.
  • Das System 100 speichert die Spalte C mit Datenblöcken 330nD und den Split-Codeprüfungsblöcken 330nCC sowie den Wortprüfungsblöcken 330nWC (Schritt 378). In manchen Implementationen speichert das System 100 alle Blöcke 330 in einer einzelnen Gruppe von Ressourcenhosts 110. In manchen anderen Implementationen weist das System 100 jede Spalte C einer bestimmten Gruppe von Ressourcenhosts 110 zu. Wenn das System 100 eine oder mehrere beschädigte Blöcke 330 erkennt, kann das System 100 die beschädigten Blöcke 330 mithilfe der Split-Codeprüfungsblöcke 330nCC und der Wortprüfungsblöcke 330nWC rekonstruieren. Typischerweise versucht das System 100, die beschädigten Blöcke 330 mithilfe der Split-Codeprüfungsblöcke 330nCC und anderer Datenblöcke in derselben Spalte C zu rekonstruieren. Falls nach der Rekonstruktion beschädigter Blöcke 330 mithilfe nur der Split-Codeprüfungsblöcke 330nCC einige beschädigte Blöcke 330 verbleiben, nutzt das System 100 die Wortprüfungsblöcke 330nWC für die Rekonstruktion, inklusive der Wortprüfungsblöcke 330nWC, die ermittelt werden können, indem eine lineare Kombination der Split-Codeprüfungsblöcke 330nCC ermittelt wird. In manchen Beispielen, falls es mehrere Verluste gibt, nutzt das System 100 alle der Blöcke 330 inklusive der Datenblöcke 330nD.
  • Das Speichersystem 100 oder Teile davon können eine Zeitlang einem Systemfehler ausgesetzt sein. Die auf den Ressourcenhosts 110 verteilten Daten 312 des Speichersystems 100 können für den Benutzer nicht verfügbar sein. Unter erneuter Bezugnahme auf 1 B kann ein Ressourcenhost 110a z. B. Wartungsarbeiten unterzogen werden oder einen Systemfehler haben; daher können Daten 312 (z. B. Streifenrepliken 330n, Datenblöcke 330nD und Nicht-Datenblöcke 330nC), die auf dem Ressourcenhost 110a gespeichert sind, nicht erreichbar sein (d. h. auf die Daten 312 kann nicht zugegriffen werden). Zusätzlich kann der Ressourcenhost 110a eine längere Zeitspanne (z. B. eine Woche) brauchen, um wieder zu funktionieren oder bis die Wartungsarbeiten beendet sind. Während des Zeitraums, in dem der Ressourcenhost 110a nicht verfügbar ist, stellt das System 100 die verlorenen Daten 312 wieder her, so dass die Daten 312 verfügbar sind, wenn ein Benutzer eine Dateianfrage 122 stellt.
  • In manchen Implementationen trennt das System 100 die Daten 312 in hochverfügbare Daten 312 und niedrigverfügbare Daten 312 und ermittelt, welche Daten 312 einem höheren Verlustrisiko durch die Wartungsarbeiten ausgesetzt sind. Das System 100 kann die hochverfügbaren Daten 312 wiederherstellen oder replizieren, ohne alle oder die meisten der übrigen Daten 312 wiederherzustellen. Da manche der Daten 312 kurz nach einer Wartung oder einem Fehler wieder verfügbar sein können, verzögert das System 100 die Wiederherstellung der Daten 312 und ersetzt stattdessen die hochverfügbaren Daten 312.
  • Unter Bezugnahme auf 4A4C kann der Verwalter 210 eine Systemhierarchie 400 des verteilten Speichersystems 100 ermitteln oder erhalten, um die Stufen (z. B. Stufen 1–4) zu bestimmen, auf denen Wartungsarbeiten auftreten können, ohne den Benutzerzugriff auf die gespeicherten Daten 312 zu beeinflussen. Wartungen oder Fehler (strikte Hierarchie 400a (4A), nicht-strikte Hierarchie 400b (4B)) können Wartungen/Fehler des Stromversorgungssystems, Wartungen/Fehler des Kühlsystems (4C), Wartungen/Fehler des Netzwerks, die Aktualisierung oder den Austausch von Teilen oder andere Wartungen oder Stromausfälle beinhalten, die sich auf das verteilte Speichersystem 100 auswirken. Wartungsarbeiten können geplant sein und in manchen Beispielen kann ein ungeplanter Systemfehler auftreten.
  • Die Systemhierarchie 400 enthält Systemstufen (z. B. Stufen 1–4), wobei Wartungseinheiten/Systemdomänen 402 eine oder mehrere Systemstufen 1–5 umfassen. Jede Systemdomäne 402 besitzt einen aktiven Status oder einen inaktiven Status. Ein Verteilungszentrums-Modul 410 enthält eine oder mehrere Zellen 420, 420a–n und jede Zelle 420 enthält ein oder mehrere Racks 430 mit Ressourcenhosts 110. Jede Zelle 420 enthält auch eine Zellenkühlung 422, eine Zellenstromversorgung 424 (z. B. Bus-Leitungen) und eine zellenbasierte Netzwerkverbindung 426 (z. B. Netzwerkswitch(e)). Gleichermaßen enthält jedes Rack 430 eine Rack-Kühlungseinheit 432, eine Rack-Stromversorgung 434 (z. B. Bus-Leitungen) und eine rackbasierte Netzwerkverbindung 436 (z. B. Netzwerkswitch(e)).
  • Die Systemstufen können eine erste, zweite, dritte und vierte Systemstufen 1–4 enthalten. Die erste Systemstufe 1 entspricht den Ressourcenhosts oder Hostgeräten 110, 110a–n aus Datenverarbeitungsmaschinen 112, nichtflüchtigem Speicher 114 und Netzwerkgeräten 116 (z. B. NICs). Jedes Hostgerät bzw. jeder Ressourcenhost 110 besitzt eine Systemdomäne 402. Die zweite Systemstufe 2 entspricht den Racks 430, 430a–n und den Kühleinheiten 432, der Stromzufuhr 434 (z. B. Bus-Leitungen) und Kommunikationsmitteln 436 (z. B. Netzwerkswitchen und Kabeln) der Hostgeräte 110 auf der Rackstufe. Jedes Rack 430 und jede rackbasierte Kühleinheit 432, Stromzufuhr 434 und Kommunikationseinheit 436 besitzt eine Systemdomäne 402. Die dritte Systemstufe 3 entspricht allen Zellen 420, 420a–n des Verteilungszentrum-Moduls 410 und der Zellenkühlung 422, der Zellenstromversorgung 424 und der zellenbasierten Netzwerkverbindung 426, die den ihr zugewiesenen Racks 430 zur Verfügung gestellt wird. Jede Zelle 420, Zellenkühlung 422, Zellenstromversorgung 424 und zellenbasierte Netzwerkverbindung 426 besitzt eine Systemdomäne 402. Die vierte Systemstufe 4 entspricht dem Verteilungszentrums-Modul 410. Jedes Verteilungszentrums-Modul 410 besitzt eine Systemdomäne 402.
  • 4A zeigt eine strikte Systemhierarchie 400a, wobei jede Hierarchiekomponente (z. B. ein Ressourcenhost 110, ein Rack 430, eine Zelle 420 oder ein Verteilungszentrums-Modul 410) der Systemhierarchie 400 von einer anderen Hierarchiekomponente 110, 410, 420, 430 abhängig ist. 4B zeigt eine nicht-strikte Hierarchie 400b, wobei eine Hierarchiekomponente 110, 410, 420, 430 mehr als einen Eingangs-Feed hat. In manchen Beispielen speichert der Verwalter 210 die Systemhierarchie 400 im nichtflüchtigen Speicher 204 des Prozessors 202. Der Verwalter 210 bildet z. B. einen ersten Ressourcenhost 110 (und seine entsprechenden Prozessorressourcen 112a sowie Speicherressourcen 114a) auf ein erstes Rack 430a ab, das erste Rack 430a auf eine erste Bus-Leistung 420a und die erste Bus-Leitung 420a auf ein erstes Verteilungszentrums-Modul 410a.
  • Der Verwalter 210 ermittelt, basierend auf den Abbildungen der Hierarchiekomponenten 110, 410, 420, 430, welche Ressourcenhosts 110 inaktiv sind, wenn eine Hierarchiekomponente 110, 410, 420, 430 einer Wartungsarbeit unterzogen wird. Sobald der Verwalter 210 die Systemdomänen 402 auf die Ressourcenhosts 110 (und damit auf ihre entsprechenden Prozessorressourcen 112a sowie Speicherressourcen 114a) abbildet, ermittelt der Verwalter 210 eine höchste Stufe (z. B. Stufen 1–4), auf der die Wartungsarbeit durchgeführt werden kann, während Prozessor oder Daten verfügbar bleiben.
  • Eine Systemdomäne 402 enthält eine Hierarchiekomponente 110, 410, 420, 430, die einer Wartungsarbeit unterzogen wird, und alle Hierarchiekomponenten 110, 410, 420, 430, die von ihr abhängig sind. Daher ist, wenn eine Hierarchiekomponente 110, 410, 420, 430 einer Wartungsarbeit unterzogen wird, diese Hierarchiekomponente 110, 410, 420, 430 inaktiv und alle anderen Hierarchiekomponenten 110, 410, 420, 430 in der Systemdomäne 402 der Hierarchiekomponente 110, 410, 420, 430 sind ebenfalls inaktiv. Wenn ein Ressourcenhost 110 z. B. einer Wartungsarbeit unterzogen wird, befindet sich eine Stufe-1-Systemdomäne 402a, die das Speichergerät 114, den Datenprozessor 112 und den NIC 116 enthält, im inaktiven Status. Wenn ein Rack 430 einer Wartungsarbeit unterzogen wird, befindet sich eine Stufe-2-Systemdomäne 402b, die das Rack 430 und alle Ressourcenhosts 110, die vom Rack 430 abhängen, enthält, im inaktiven Status. Wenn eine Zelle 420 (z. B. mit dem Ziel der Zellenkühlkomponente 422, der Bus-Leitung 424 und/oder des Netzwerkswitches 426 der Zelle 420a) einer Wartungsarbeit unterzogen wird, befindet sich eine Stufe-3-Systemdomäne 402c, die die Zelle 420 und alle Hierarchiekomponenten 110, 410, 420, 430 in den Stufen 3 und 4, die von der Zelle 420 abhängig sind, enthält, im inaktiven Status. Wenn letztendlich ein Verteilungszentrums-Modul 410 einer Wartungsarbeit unterzogen wird, befindet sich eine Stufe-4-Systemdomäne 402, 402d, die das Verteilungszentrums-Modul 410a und alle Hierarchiekomponenten 110, 410, 420, 430 in den Stufen 2 bis 4, die vom Verteilungszentrums-Modul 410 abhängig sind, enthält, im inaktiven Status.
  • In manchen Beispielen, wie in 4B dargestellt, kann eine nicht-strikte Hierarchiekomponente 410, 420, 430, 114 mehrere Eingangs-Feeds besitzen, d. h. die Hierarchiekomponenten 110, 410, 420, 430 sind abhängig von zwei oder mehr anderen Hierarchiekomponenten 110, 410, 420, 430. Eine Zelle 420 kann beispielsweise einen Feed von zwei Verteilungszentrums-Modulen 410 besitzen; und/oder ein Rack 430 kann einen dualen Feed von zwei Zellen 420 besitzen. Wie dargestellt kann eine Stufe-2-Systemdomäne 402b zwei Racks 430a, 430n enthalten, wobei das zweite Rack 430n zwei Feeds von zwei Zellen 420a, 420n enthält. Daher ist das zweite Rack 430n Teil von zwei Systemdomänen 402ca und 402cb. Daher werden die niedrigeren Stufen der Systemhierarchie 400 gewartet, ohne den Verlust der höheren Stufen der Systemhierarchie 400 zu verursachen. Dies bewirkt eine Redundanz im System 100, was eine Datenverfügbarkeit möglich macht. Insbesondere kann das Verteilungszentrums-Modul 410 gewartet werden, ohne dass eine der Zellen 420 verloren geht, die von ihm abhängig ist. In manchen Beispielen beinhalten die Racks 430 ein dual versorgtes Rack, das die Wartung der Bus-Leitung 424 gestattet, ohne dass die Versorgung der dual versorgten Racks 430 verloren geht, die von ihr abhängig sind. In manchen Beispielen werden Systemdomänen 402, die gewartet werden können, ohne Ausfälle zu verursachen, bei der Verteilung von Blöcken 330 ignoriert, um Wartungsarbeiten zu erlauben; dennoch können die ignorierten Systemdomänen 402 bei der Verteilung von Blöcken 330 enthalten sein, da ein ungeplanter Ausfall weiterhin den Verlust von Blöcken 330 verursachen kann.
  • In manchen Beispielen wird ein Kühlgerät, wie etwa das Zellenkühlgerät 422 oder das Rack-Kühlgerät 432, genutzt, um jeweils die Zelle 420 und das Rack 430 zu kühlen. Die Zellkühlungskomponente 422 kann eine oder mehrere Zellen 420 kühlen. Gleichermaßen kann eine Rack-Kühlungskomponente 432 ein oder mehrere Racks 430 kühlen. Der Verwalter 210 speichert die Zuweisung der Kühlgeräte (d. h. die Zellenkühlungskomponente 422 und die Rack-Kühlungskomponente 432) an die Ressourcenhosts 110. In manchen Implementierungen berücksichtigt der Verwalter 210 alle möglichen Kombinationen der Wartung, die innerhalb des Speichersystems 100 auftreten können, um eine Systemhierarchie 400 oder eine Kombination von Wartungshierarchien 400 zu ermitteln. Beispielsweise eine Systemhierarchie 400, in der ein oder mehrere Kühlgeräte 422, 432 ausfallen, oder eine Systemhierarchie 400, in der die Netzwerkgeräte 116, 426, 436 ausfallen, oder eine Systemhierarchie 400, in der die Stromversorgung 424, 434 ausfällt.
  • Wenn daher eine Hierarchiekomponente 110, 410, 420, 430 im Speichersystem 100 gewartet wird, sind diese Hierarchiekomponenten 110, 410, 420, 430 sowie alle Hierarchiekomponenten 110, 410, 420, 430, die dieser Hierarchiekomponente 110, 410, 420, 430 zugewiesen oder von ihr abhängig sind, in einem inaktiven Status. Eine Hierarchiekomponente 110, 410, 420, 430 in einem inaktiven Status ist für einen Benutzer 120 nicht verfügbar, während eine Hierarchiekomponente 110, 410, 420, 430 in einem aktiven Status für den Benutzer 120 verfügbar ist und es dem Benutzer 120 erlaubt, auf Daten 312, die von dieser Hierarchiekomponente 110, 410, 420, 430 gespeichert/unterstützt/verwaltet werden, zuzugreifen bzw. sie zu verarbeiten. Wie zuvor erwähnt, ist es einem Benutzer 120 während eines inaktiven Status nicht möglich, auf den der Systemdomäne 402, die einer Wartung unterzogen wird, zugewiesenen Ressourcenhost 110 zuzugreifen; und daher ist es dem Benutzer 120 nicht möglich, auf Dateien 310 (also Blöcke 330, die Streifenrepliken 330n beinhalten, Datenblöcke 330nD und Nicht-Datenblöcke 330nC) zuzugreifen.
  • In manchen Implementationen beschränkt der Verwalter 210 die Anzahl an Blöcken 330, die an Speichergeräte 114 irgendeiner Systemdomäne 402 verteilt werden, z. B. basierend auf der Zuteilung der Hierarchiekomponenten 110, 410, 420, 430. Wenn also eine Stufe-1-Systemdomäne 402 inaktiv ist, behält der Verwalter 210 den Zugriff auf die Datei 310 (oder den Streifen 320), obwohl einige Blöcke 330 möglicherweise nicht zur Verfügung stehen. In manchen Beispielen ermittelt der Verwalter 210 für jede Datei 310 (oder Streifen 320) eine maximale Anzahl an Blöcken 330, die in irgendeinem Speichergerät 114 innerhalb einer einzelnen Systemdomäne 402 platziert werden können, sodass der Verwalter 210 auch dann auf die Datei 310 zugreifen kann, wenn eine dem Speichergerät 114, das Blöcke 330 einer Datei 310 speichert, zugewiesene Systemdomäne 402 einer Wartung unterzogen wird. Die maximale Anzahl an Blöcken 330 stellt sicher, dass der Verwalter 210 in der Lage ist, die Datei 310 zu rekonstruieren, obwohl einige Blöcke 330 möglicherweise nicht zur Verfügung stehen. In manchen Beispielen wird die maximale Anzahl an Blöcken 330 auf einen kleineren Grenzwert gesetzt, um Systemfehler zu kompensieren, während es weiterhin möglich ist, die Datei 310 aus den Blöcken 330 zu rekonstruieren. Wenn der Verwalter 210 Blöcke 330 auf den Speichergeräten 114 ablegt, stellt der Verwalter 210 sicher, dass innerhalb eines Streifens 320 nicht mehr als die maximale Anzahl an Blöcken 330 inaktiv ist, wenn eine einzelne Systemdomäne 402 einer Wartung unterzogen wird. Des Weiteren kann der Verwalter 210 auch die Anzahl an Verarbeitungsvorgänge auf einem Datenprozessor 112 eines Ressourcenhosts 110 in einer Systemdomäne 402 begrenzen, z. B. basierend auf der Zuteilung der Hierarchiekomponenten 110, 410, 420, 430. Falls also eine Stufe-1-Systemdomäne 402 inaktiv ist, behält der Verwalter 210 den Zugriff auf alle Vorgänge, obwohl manche der Prozessoren 112 des Ressourcenhosts 110 inaktiv sind.
  • In manchen Implementationen und wie bereits dargelegt, kann das System 100 Wartungsarbeiten oder ungeplanten Fehlern ausgesetzt sein. Einige auf den Speichergeräten 114 gespeicherten Daten 312 können ein höheres Risiko des Totalverlusts aufweisen, wenn das Speichergerät 114, auf dem sie gespeichert sind, in einem inaktiven Status ist. Der Verwalter 210 kann Daten 312 aufteilen, so dass Daten 312 mit einem höheren Verlustrisiko aufgrund der Wartungsarbeiten wiederhergestellt oder dupliziert werden können, ohne dass der Verwalter 210 den Rest der Daten 312 (die ein geringeres Verlustrisiko aufweisen) duplizieren oder wiederherstellen muss.
  • In manchen Implementationen identifiziert der Verwalter 210 Blöcke 330 als hochverfügbare Blöcke 330a oder niedrigverfügbare Blöcke 330b. Die hochverfügbaren Blöcke 330a besitzen eine höhere Priorität und haben den Vorzug vor niedrigverfügbaren Blöcken 330b. In manchen Beispielen ermittelt der Verwalter 210 die Verfügbarkeit der Blöcke 330 basierend auf den Daten 312 oder basierend auf dem Besitzer oder Benutzer der Daten 312.
  • Der Verwalter 210 kann einen effektiven Redundanzwert für jeden Streifen 320 einer Datei 310 ermitteln, um zu bestimmen, ob das System 100 den Streifen 320 für die Wiederherstellung priorisieren soll (d. h. das Hinzufügen von Repliken 330n oder das Speichern rekonstruierter Blöcke/Teile der Datei 310, um die Haltbarkeit und die Verfügbarkeit der Datei 310 zu verbessern). Der effektive Redundanzwert basiert auf den Blöcken 330 und allen dem entsprechenden Streifen 320 zugewiesenen Systemdomänen 402. In manchen Implementationen basiert die effektive Redundanz auf einer Anzahl an Systemdomänen 402, die verlorengehen können, sodass die Daten 312 im Streifen 320 nicht mehr verfügbar bzw. zugänglich (z. B. nicht wiederherstellbar) sind. Alternativ ist die effektive Redundanz die Anzahl der Blöcke 330 in einem Streifen 320, die verlorengehen muss, so dass die Daten 312 im Streifen 320 nicht mehr verfügbar bzw. zugänglich (z. B. nicht wiederherstellbar) sind. Dies kann vorkommen, wenn alle der Blöcke 330 eines Streifens 320 auf verschiedenen Speichergeräten 114 abgelegt sind und der Verwalter 210 den effektiven Redundanzwert auf Laufwerksbasis, Systemstufe 1, ermittelt. Wenn die Anzahl der verlorenen Systemdomänen 402 (oder alternativ der Blöcke 330) gleich oder größer der effektiven Redundanz ist, wäre das System 100 nicht in der Lage, den Streifen 320 zu rekonstruieren (d. h. das System 100 kann die Daten des Streifens 312 nicht lesen). Eine effektive Redundanz von eins bedeutet z. B., dass es mindestens einen Block 330 im Streifen 320 gibt, sodass, falls er nicht mehr verfügbar ist, das System 100 nicht in der Lage wäre, die Daten 312 vom Streifen 320 zu lesen. Eine effektive Redundanz von zwei bedeutet, dass eine minimale Anzahl an zwei Blöcken 330 nicht mehr verfügbar sein muss, damit das System 100 die Daten des Streifens 320 nicht mehr lesen kann.
  • In manchen Implementationen ermittelt der Verwalter 210 den effektiven Redundanzwert in verschiedenen Hierarchiestufen (z. B. Stufe 1–4). Der Verwalter 210 prüft einen bestimmten Streifen 320 und die Stufe, in der er den effektiven Redundanzwert ermitteln kann. Der Verwalter 210 simuliert die Entfernung von Blöcken 330 vom Streifen 320, um den effektiven Redundanzwert zu ermitteln. Der Verwalter 210 entfernt hypothetisch Blöcke 330 vom Streifen 320, indem er diese Blöcke 330 entfernt, für die die größte Anzahl an Blöcken 330 von einem einzelnen Knoten in der gewählten Stufe der Systemhierarchie 400 abhängig sind. Der Verwalter 210 entfernt weiterhin hypothetisch Blöcke 330, bis eine verbleibende Anzahl an Blöcken 330 nicht mehr in der Lage ist, die Daten 312 innerhalb des spezifischen Streifens 320 zu rekonstruieren. Die Anzahl der Entfernungsdurchgänge ist die effektive Redundanz.
  • Bei replizierenden Kodierungen (besprochen in 3A) ist der effektive Redundanzwert die Anzahl der einzigartigen Systemdomänen 402 in der gewählten Stufe der Systemhierarchie 400, die mindestens einen gesunden (z. B. zugänglichen) Block 300 enthält, denn solange das System 100 einen gesunden Block 330 (z. B. ein replizierter Block 330n) in einer Systemdomäne 402 vorhält, sind die Daten 312 redundant. Falls der Streifen 320z. B. einen oder mehrere Blockrepliken 330n in einer einzelnen Systemdomäne 402 besitzt, beträgt die effektive Redundanz 1. Falls der Streifen 320 mindestens einen verfügbaren Block 330 in einer Systemdomäne 402 und einen anderen verfügbaren Block 330 in einer anderen Systemdomäne 402 besitzt, beträgt die effektive Redundanz 2. Unter Bezugnahme auf das Beispiel, das in 4C gezeigt wird, angenommen, ein Streifen 320 hat drei Blockrepliken 330n auf einem ersten Speichergerät 114a, einem zweiten Speichergerät 114b und einem dritten Speichergerät 114c. Jedes Speichergerät 114a–c befindet sich in einem anderen Rack 430. Das erste Speichergerät 114a befindet sich in einem ersten Rack 430a, das zweite Speichergerät 114b befindet sich in einem zweiten Rack 430b und das dritte Speichergerät 114c befindet sich in einem dritten Rack 430c. Wie dargestellt, teilen sich das erste und das zweite Rack 430a, 430b dieselbe erste Zelle 420a (z. B. eine Bus-Leitung 424) und das dritte Rack 430c hängt von einer zweiten Zelle 420b ab. Daher befinden sich die Blockrepliken 330n in zwei Stufe-3-Systemdomänen 402ca, 402cb. Die Blockrepliken 330n befinden sich außerdem in drei Stufe-2-Systemdomänen 402ba, 402bb, 402bc und in drei Stufe-4-Systemdomänen 402aa, 402ab, 402ac. Zusätzlich sind die erste Zelle 420a und die zweite Zelle 420b beide von einem Verteilungszentrums-Modul 410, 410a abhängig. Die effektive Redundanz des Streifens 320 auf der Stufe der Speichergeräte 114 (auf Stufe 1) beträgt 3, da Blockrepliken 330n sich auf drei verschiedenen Speichergeräten 114 befinden. Die effektive Redundanz des Streifens 320 auf der Stufe der Racks 430 (auf Stufe 2) beträgt ebenfalls 3, da Blockrepliken 330n sich auf Speichergeräten 114 in drei verschiedenen Racks 430a-c befinden. Die effektive Redundanz des Streifens 320 auf der Stufe der Zellen (Stufe 3) beträgt 2, da die Daten 312 auf Speichergeräten 114 platziert sind, die von zwei Bus-Leitungen abhängig sind, die die erste und die zweite Zelle 420a, 420b versorgen. Die effektive Redundanz des Streifens 320 auf der Stufe des Verteilungszentrums-Moduls 410 (Stufe 4) beträgt 1. Daher kann der effektive Redundanzwert als Anzahl der einzigartigen Systemdomänen 402 in der gewählten Stufe der Systemhierarchie 400 angesehen, werden, die mindestens einen gesunden (z. B. verfügbaren) Block 300 beinhalten (da, solange das System 100 einen Block 330 vorhält, die Daten 312 für die Replikation redundant sind).
  • Unter Bezugnahme auf 4D und 4E ist die effektive Redundanz für löschkodierte Dateien komplizierter, da das System 100 nicht einfach die Blöcke 330 reduzieren und die Anzahl der einzigartigen Systemdomänen im Streifen 320 zählen kann.
  • 4D illustriert eine beispielhafte Systemhierarchie 400d für eine Reed-Solomon-löschkodierte Datei 310. Es sei ein Streifen 320 mit zwei Codeblöcken 330nC und vier Datenblöcken 330nD, insgesamt also sechs Blöcken 330, gegeben. Die Reed-Solomon-Kodierung 313a erlaubt den Verlust bis hin zur Gesamtzahl an Codeblöcken 330nC oder irgendeiner Kombination von Codeblöcken 330nC oder Datenblöcken 330nD, wobei die Datei 310 weiterhin aus den übrigen Datenblöcken 330nD und/oder Codeblöcken 330nC rekonstruiert werden kann. In diesem Fall kann das System 100 bis zu zwei Blöcke 330 verlieren und weiterhin voll rekonstruierbar sein. Die Blöcke 330 sind verteilt auf sechs Racks R1–R6, 430a430f (in Stufe 2), die wiederum auf vier Zellen 420a–d (z. B. in Stufe 3) verteilt sind. Wie dargestellt, sind das erste Rack 430a und das zweite Rack 430b von der ersten Zelle 420a abhängig. Das dritte Rack 430c ist von der zweiten Zelle 420b abhängig und das vierte Rack 430d sowie das fünfte Rack 430e sind von der dritten Zelle 420c abhängig. Letztendlich ist das sechste Rack 430f von der vierten Zelle 420d abhängig. Zusätzlich enthält dieses Beispiel drei Verteilungszentrums-Module 410a–c. Die erste Zelle 420a und die zweite Zelle 420b sind beide von einem ersten Verteilungszentrums-Modul 410a abhängig. Die dritte Zelle 420c ist von einem zweiten Verteilungszentrums-Modul P2, 410b abhängig und die vierte Zelle 420d ist von einem dritten Verteilungszentrums-Modul 410c abhängig. Wenn der Verwalter 210 daher die effektive Redundanz für Stufe 2 (also für die Rack-Stufe) ermittelt, prüft der Verwalter 210, wie viele Systemdomänen 402 entfernt werden können, so dass das System 100 immer noch in der Lage wäre, die Daten 312 vom Streifen 320 zu lesen. In diesem Beispiel kann das System 100 zwei beliebige Racks 430a–f entfernen und weiterhin in der Lage sein, die Daten 312 zu lesen. Falls das System 100 aber ein drittes Rack 430a–f entfernt, dann ist das System 100 nicht in der Lage, die Daten 312 zur Rekonstruktion des Streifens 320 zu lesen. Daher beträgt die effektive Redundanz in der Rack-Stufe (Stufe 2) 3; denn der Streifen 320 ist unlesbar, wenn das System 100 drei Racks 430a–f verliert. Wie bereits erwähnt, kann das System 100 bis zu zwei Blöcke 330 verlieren und immer noch in der Lage sein, den Streifen 320 zu rekonstruieren.
  • Der Verwalter 210 kann die effektive Redundanz in der Zellen-Stufe (d. h. Bus-Leistungs-Stufe oder Stufe 3) ermitteln, indem er hypothetisch die Zelle 420 entfernt, die die größte Anzahl an Blöcken 330 des Streifens 320 (um den schlimmsten Fall anzunehmen) enthält im Vergleich zu den anderen Zellen 420, die die übrigen Blöcke 330 des Streifens 320 enthalten. Unter Bezugnahme auf das Beispiel, das in 4D, entfernt der Verwalter 210 hypothetisch die Zelle 420, die die größte Anzahl an Blöcken 330 im Vergleich zu den anderen Zellen 420 enthält. In diesem Fall besitzen die erste Zelle 420a (Systemdomäne 402ca) und die dritte Zelle 420c (Systemdomäne 402cc) die größte Anzahl an Blöcken 330, so dass der Verwalter 210 (z. B. zufällig oder deterministisch) auswählt, welche Zelle 420 entfernt wird, um die effektive Redundanz in dieser Stufe zu ermitteln. Sobald der Verwalter 210 eine der Zellen 420 oder Stufe-3-Systemdomänen 402c entfernt, behält das System 100 nur entweder die erste Zelle 420a oder die dritte Zelle 420c und ist weiterhin in der Lage, den Streifen 320 zu rekonstruieren. Das System 100 überprüft dann die Entfernung der anderen der ersten Zelle 420a oder der dritten Zelle 420c, was in vier nicht verfügbaren Blöcken 330 resultiert (d. h. 4 > 3, wobei 3 die Anzahl der nicht verfügbaren Blöcke 330 ist, bei der das System 100 nicht mehr in der Lage ist, den Streifen 320 zu lesen), was bedeutet, dass der Streifen 320 nach dem Verlust zweier Zellen 420 oder zweier Systemdomänen 402, 402c nicht mehr lesbar ist. Daher beträgt die effektive Redundanz in der Zellenstufe (Stufe 3) 2, da das System 100 unfähig ist, den Streifen 320 zu rekonstruieren, falls zwei Zellen 420 oder Stufe-3-Systemdomänen 402c inaktiv sind.
  • Als nächstes prüft der Verwalter 210 die effektive Redundanz des Verteilungszentrum-Moduls (Stufe 4). Dieselben Überlegungen wie in Stufe 3 gelten auch für Stufe 4. Daher entfernt das System 100 die Verteilungszentrums-Module 410, die die größte Anzahl an Blöcken 330 enthalten, im Vergleich zu den übrigen Verteilungszentrums-Modulen 410, die die übrigen Blöcke 330 des Streifens 310 enthalten. Bezugnehmend zurück auf das Beispiel in 4D, wenn das System 100 das erste Verteilungszentrums-Modul 410a entfernt, dann sind drei Blöcke 330 des Streifens 320 nicht mehr für die Rekonstruktion des Streifens 320 verfügbar, was es dem System 100 unmöglich macht, den Streifen 320 zu lesen. Daher beträgt die effektive Redundanz in der Stufe der Verteilungszentrums-Module 1, da nach dem Verlust eines Verteilungszentrum-Moduls 410 der Streifen 320 unlesbar ist.
  • 4E illustriert eine beispielhafte Systemhierarchie 400e für eine verschachtelt kodierte Datei 310. Wie bereits mit Bezug auf 3E und 3F beschrieben, enthalten verschachtelt kodierte Dateien 310 Datenblöcke 330nD, Codeprüfungsblöcke 330nCC, Wortprüfungsblöcke 330nWCC und Code-Wort-Prüfungsblöcke 330nCCWC. In manchen Beispielen enthält ein Streifen 320 vier Datenblöcke 330nD, die in zwei Spalten von zwei Blöcken 330 aufgeteilt sind, wobei jede Spalte von einem Codeprüfungsblock 330nCC (also insgesamt zwei Codeprüfungen) geschützt wird und die Datenblöcke 330nD von drei Wortprüfungsblöcken 330nWC geschützt werden. Bezugnehmend auch auf das Beispiel in 4E, enthalten das erste bis vierte Rack 430a–d die Datenblöcke 330nD, das fünfte und das sechste Rack 430e, 430f enthalten die Codeprüfungsblöcke 330nCC und das siebte bis neunte Rack 430g430i enthalten die Wortprüfungsblöcke 330nWCC (der Verwalter 210 beachtet die Code-Wort-Prüfungsblöcke 330nCCWC zur Prüfung der effektiven Redundanz von verschachtelt kodierten Dateien 310 nicht).
  • In jeder Systemstufe kann der Verwalter 210 für die verschachtelt kodierte Datei 310 die effektive Redundanz für spaltenbasierte Rekonstruktion oder für die streifenbasierte Rekonstruktion oder für beide ermitteln. Für die spaltenbasierte Rekonstruktion beachtet der Verwalter 210 nur die Datenblöcke 330nD und die Codeprüfungsblöcke 330nCC. In manchen Beispielen kann der Verwalter 210 die Codeprüfungsblöcke 330nCC bei der Ermittlung der effektiven Redundanz des gesamten Streifens 320 ignorieren. In manchen Implementationen prüft der Verwalter 210, welche Codeprüfungsblöcke 330nCC welchen Spalten C angehören, wenn er die effektive Redundanz des gesamten Streifens 320 ermittelt. Falls das System 100 z. B. einen Datenblock 330nD in einer ersten Spalte C1 und einen Codeprüfungsblock 330nCC in einer zweiten Spalte C2 verliert, ist der Streifen 320 gesund und rekonstruierbar. Dementsprechend kann der Verwalter 210 die „Geometrie” der Blöcke 330 im verschachtelten Streifen 320 prüfen, wenn er den effektiven Redundanzwert ER ermittelt.
  • In der Stufe 2, also in der Rack-Stufe, ermittelt der Verwalter 210 die effektive Redundanz einer Spalte C, indem er die Datenblöcke 330nD, die auf den dem ersten bis vierten Rack 430a–d zugewiesenen Speichergeräten gespeichert sind, und die Codeprüfungsblöcke 330nCC, die auf den dem fünften und sechsten Rack 430e, 430f zugewiesenen Speichergeräten gespeichert sind, prüft. Wie im Beispiel dargestellt, enthält jede Spalte C zwei Datenblöcke 330nD und einen Codeprüfungsblock 330nCC, also insgesamt drei Blöcke 330. Daher benötigt das System 100 zur Rekonstruierung der Spalte C zwei verfügbare Blöcke 330 (also Blöcke 330, die auf Geräten im aktiven Status gespeichert sind). Das System 100 ist unfähig, die Spalte C zu rekonstruieren, wenn zwei oder mehr Blöcke 330 nicht verfügbar sind. Daher ermittelt der Verwalter 210, dass die effektive Redundanz für spaltenbasierte Rekonstruktion in Stufe-2-Systemdomänen 402 2 beträgt, da das System 100 unfähig ist, die Spalte zu rekonstruieren, falls 2 Racks inaktiv sind. Gleichermaßen führt der Verwalter 210 dieselben Überlegungen zur Ermittlung der spaltenbasierten Rekonstruktion in Stufe-3- und Stufe-4-Systemdomänen 402 durch. Eine effektive Redundanz für die spaltenbasierte Wiederherstellung in Stufe-3-Systemdomänen 402 beträgt 2, angenommen, die Datenblöcke 330 jeder Spalte C befinden sich in verschiedenen Zellen 420, und eine effektive Redundanz für die spaltenbasierte Rekonstruktion in Stufe-4-Systemdomänen 402 beträgt 1.
  • Des Weiteren ermittelt der Verwalter 210 die effektive Redundanz des Streifens 320, indem er die auf den dem ersten bis vierten Rack 430a–d zugewiesenen Speichergeräten 114 gespeicherten Datenblöcke 330nD und die auf den dem siebten bis neunten Rack 430g–i zugewiesenen Speichergeräten 114 gespeicherten Wortprüfungsblöcke 330nWCC prüft. In manchen Beispielen ignoriert der Verwalter 210 die Codeprüfungsblöcke 330nC bei der Ermittlung des effektiven Redundanzwertes ER generell; während in anderen Beispielen der Verwalter 210 die Codeprüfungsblöcke 330nC bei der Ermittlung eines spaltenbasierten effektiven Redundanzwertes ER beachtet. Daher benötigt das System 100 zur Rekonstruierung des Streifens 320 mindestens vier verfügbare Blöcke 330 (also Blöcke 330, die auf Geräten im aktiven Status gespeichert sind). Das System 100 ist unfähig, den Streifen 320 zu rekonstruieren, wenn vier oder mehr Blöcke 330 nicht verfügbar sind. Daher ermittelt das System 100, dass die effektive Redundanz für streifenbasierte Rekonstruktion in Stufe-2-Systemdomänen 402 4 beträgt, da das System 100 unfähig ist, den Streifen 320 zu rekonstruieren, falls vier Racks 430a–d inaktiv sind. Der Verwalter 210 kann die Codeprüfungsblöcke 330nC auch dann beachten, wenn er die effektive Redundanz des Streifens 320 ermittelt. Des Weiteren kann der Verwalter 210 die Geometrie der Blöcke 330 (z. B., in welcher Spalte C sich die Blöcke 330 befinden) beachten, wenn er den effektiven Redundanzwert ER ermittelt, da der Verlust eines Datenblocks 330nD in der ersten Spalte C1 und eines Codeprüfungsblocks 330nCC in der zweiten Spalte C2, weitere Verluste ausgeschlossen, weiterhin die Rekonstruktion des Streifens 320 basierend allein auf der Spalte C erlaubt, wogegen der Verlust eines Datenblocks 330nD und eines Codeprüfungscodes 330nCC in derselben Spalte C die Rekonstruktion des Streifens 320 verhindern können. Einige Verlustgeometrien (d. h. Verluste von Blöcken 330 in verschiedenen Spalten C) können spaltenbasierte Rekonstruktionen verhindern, die schneller als andere Arten der Rekonstruktion sind.
  • Gleichermaßen führt der Verwalter 210 dieselben Überlegungen zur Ermittlung der streifenbasierten Rekonstruktion in Stufe-3- und Stufe-4-Systemdomänen 402 durch. In dem dargestellten Beispiel beträgt eine effektive Redundanz für streifenbasierte Rekonstruktion in Stufe-3-Systemdomänen 402 2 und eine effektive Redundanz für streifenbasierte Rekonstruktion in Stufe-4-Systemdomänen 402 beträgt 1.
  • Unter Bezugnahme auf 5 priorisiert das System 100 (z. B. der Verwalter 210) in manchen Implementationen Daten 312 für die Wiederherstellung. Die in den Speichergeräten 114 gespeicherten Daten 312 können einen von drei Zuständen innehaben, einen verfügbaren Status, einen nicht verfügbaren Status und einen fehlenden Status. Wenn die Daten 312 anfangs auf den Speichergeräten 114 gespeichert werden, sind sie im verfügbaren Status, wie in Block 502 dargestellt. Wenn Daten 312 im verfügbaren Status sind, kann ein Benutzer/Client 120 auf die Daten 312 zugreifen. Wenn die Daten 312 aber im nicht verfügbaren oder fehlenden Status sind, kann der Benutzer/Client 120 nicht auf die Daten 312 zugreifen, und das System 100 kann die Daten 312 rekonstruieren, um sie dem Benutzer/Client 120 zugänglich zu machen. Der nicht verfügbare bzw. der fehlende Status der Daten 312 kann durch den inaktiven Status der Systemdomäne 402 bedingt sein. Falls daher Daten 312 einer Systemdomäne 402 zugewiesen sind, die sich im inaktiven Status befindet, können die Daten 312 sich im nicht verfügbaren oder fehlenden Status befinden. Daten 312 können auch aus anderen Gründen nicht verfügbar sein oder fehlen. Bezugnehmend auf den Entscheidungs-Block 504 kann der Verwalter 210 ermitteln, ob die Daten 312 nicht verfügbar sein werden. Nicht verfügbare Daten 312 sind alle Daten 312, die für einen Zeitraum größer Null nicht verfügbar sind. Der nicht verfügbare Status bei Block 506 ist ein Übergangsstatus zwischen dem verfügbaren Status (Block 502) und dem fehlenden Status (Block 512). Daten 312, die für einen Zeitgrenzwert Tm nicht verfügbar sind, sind nicht verfügbare Daten 312 (z. B. 0 < t < Tm, wobei t die Zeit ist, in der die Daten 312 nicht verfügbar sind, und Tm der Zeitgrenzwert ist). In manchen Beispielen ist Tm gleich 15 bis 30 Minuten. Am Entscheidungsblock 508, wenn t ≥ Tm, werden die Daten 312 als fehlend angesehen und gehen über in den fehlenden Status (Block 512). Die nicht verfügbaren Daten 312 sind Daten 312, die als nicht verfügbar angesehen werden, weil sie während der Zeitgrenzwertperiode wieder verfügbar sein könnten (0 < t < Tm), aufgrund eines kurzen Systemfehlers oder einer kurzen Wartungsarbeit. Falls der Systemfehler oder die Wartungsarbeit aber länger als die Grenzwertzeitperiode Tm andauert, dann werden die Daten 312 als fehlend angesehen und das System 100 kann die fehlenden Daten 312 bei Block 514 rekonstruieren (und sie erneut verfügbar machen). Der Verwalter 210 kann den Status der Daten 312 inklusive der aktuellen effektiven Redundanzen ERC der Streifen 320 periodisch aktualisieren.
  • n manchen Implementationen identifiziert der Verwalter 210 Daten 312 als entweder hochverfügbare Daten 312a oder niedrigverfügbare Daten 312b und rekonstruiert hochverfügbare Daten 312a, die einen aktuellen effektiven Redundanzwert ERC kleiner eines effektiven Redundanzgrenzwertes ERT haben (d. h. effektiver Redundanzwert), ohne den Zeitgrenzwert Tm zu beachten, bevor die Daten 312 als fehlend angesehen werden. Effektiv beschleunigt dies die Rekonstruktion bestimmter hochverfügbarer Daten 312a, die ein Verlustrisiko aufweisen können. Daher, unter Beachtung von Block 508, wenn t ≥ Tm nicht zutrifft, die Daten 312 also immer noch im nicht verfügbaren Status sind, ermittelt der Verwalter 210, ob die Daten 312 hochverfügbare Daten 312a sind und ob die effektive Redundanz ER der Daten 312 (d. h. des Streifens 320) kleiner als der effektive Redundanzgrenzwert ER (ERC ≤ ERT?) ist, siehe Block 510. Wenn die Daten 312 hochverfügbare Daten 312a sind und ERC ≤ ERT, dann initiiert der Verwalter 210 die Rekonstruktion der Daten 312a unter Umgehung der Bedingung bei Block 508 (t ≥ Tm). In manchen Beispielen aktualisiert der Verwalter 210 den Status der Daten 312 nicht, bevor er die Daten 312 rekonstruiert, während in anderen Beispielen der Verwalter 210 die Daten 312 aus dem nicht verfügbaren Status in den fehlenden Status überführen kann, siehe Block 512, wodurch die Daten 312 für eine Rekonstruktion markiert werden. Falls die Daten 312 aber nicht hochverfügbare Daten 312a sind und der aktuelle effektive Redundanzwert ERC der Daten 312 nicht kleiner oder gleich dem effektiven Redundanzgrenzwert ERT ist, dann bleiben die Daten 312 im nicht verfügbaren Status bei Block 506. Das Übergehen der Bedingung t ≥ Tm von Block 508 erlaubt dem Verwalter 210, die Daten 312, die hochverfügbare Daten sind, zu priorisieren, indem dem System 100 erlaubt wird, hochverfügbare Daten 312a, die den effektiven Redundanzgrenzwert ERT erreicht haben, vor niedrigverfügbaren Daten 312b zu rekonstruieren, und bevor die hochverfügbaren Daten 312a verloren gehen, ohne rekonstruiert worden zu sein. Der effektive Redundanzgrenzwert ERT kann eine Konfigurationsoption des Systems 100 sein. Im Allgemeinen kann der effektive Redundanzwert ER basierend auf einer Systemstufe, ihrem Status, der Kodierungsart des Streifens 320 und dem Status der Blöcke 330 im Streifen 320 (z. B. verfügbar, nicht verfügbar oder fehlend) bestimmt werden. Der effektive Redundanzwert ER kann möglicherweise nicht anzeigen, wie viele Blöcke 330 eines Streifens 320 verlorengehen können, sondern eher, wie viele Systemdomänen 402 verlorengehen können, wobei weiterhin Redundanz des Streifens 320 gewährleistet (und Rekonstruktionen desselben ermöglicht) wird. Der Verlust eines einzelnen zusätzlichen Blocks 330 kann möglicherweise nicht den aktuellen effektiven Redundanzwert ERC beeinflussen.
  • In manchen Implementationen ist der effektive Redundanzwert ER für einen als hochverfügbar klassifizierten Streifen 320 immer kleiner oder gleich dem effektiven Redundanzwert ER für diesen Streifen 320, wenn er als niedrigverfügbar klassifiziert wird. Als Beispiel seien drei replizierte Blöcke 330 eines Streifens 320 in verschiedenen Systemdomänen 402 gegeben. Ein erster Block 330 ist nicht verfügbar für t ≥ Tm. Ein zweiter Block 330 ist nicht verfügbar für t < Tm; und ein dritter Block 330 ist verfügbar. Wenn die Blöcke 330 hochverfügbare Blöcke 330a sind, beträgt der aktuelle effektive Redundanzwert ERC 1, während, wenn die Blöcke 330 niedrigverfügbare Blöcke 330b sind, der aktuelle effektive Redundanzwert ERC 2 beträgt, weil der zweite fehlende Block 330 nicht für t ≥ Tm nicht verfügbar war. Wenn ein Streifen 320 (und seine Blöcke 330) als hochverfügbar klassifiziert ist, wird sein effektiver Redundanzwert ER aggressiver bestimmt, indem für t < Tm fehlende Blöcke 330 beachtet werden, was in schnellerer Rekonstruktion bei einem Verlustrisiko des Streifens 320 resultiert.
  • Unter Bezugnahme auf 6 enthält in manchen Implementationen ein Verfahren 600 der Priorisierung von Daten 312 für die Wiederherstellung in einem verteilten Speichersystem 100 für jeden Streifen 320 einer Datei 310, die eine Vielzahl von Streifen 320 mit Blöcken 330 enthält, die Ermittlung 602 mithilfe eines Datenverarbeitungsgeräts, ob der Streifen 320 hochverfügbare Blöcke 330a oder niedrigverfügbare Blöcke 330b enthält. Dateien 310 können als hochverfügbar oder als niedrigverfügbar klassifiziert werden. Die Streifen 320 einer Datei und die entsprechenden Blöcke 330 der Streifen 320 können entsprechend als hochverfügbar oder als niedrigverfügbar klassifiziert werden. Das Verfahren 600 enthält auch die Ermittlung 604 eines effektiven Redundanzwertes ER für jeden Streifen 320 der Datei 310 mithilfe eines Datenverarbeitungsgeräts. Der effektive Redundanzwert ER basiert auf den Blöcken 330 und allen dem entsprechenden Streifen 320 zugewiesenen Systemdomänen 402. Das verteilte Speichersystem 100 besitzt eine Systemhierarchie 400, die Systemdomänen 402 enthält. Zudem besitzt jede Systemdomäne 402 einen aktiven Status oder einen inaktiven Status. Blöcke 330 eines Streifens 320, der einer Systemdomäne 402 im aktiven Status zugewiesen ist, sind zugänglich, während Blöcke 330 eines Streifens 320, der einer Systemdomäne 402 im inaktiven Status zugewiesen ist, nicht zugänglich sind. Blöcke 330 können auch aus anderen Gründen unzugänglich werden und die Unzugänglichkeit kann möglicherweise nicht direkt mit dem aktiven/inaktiven Status einer Systemdomäne 402 korrelieren.
  • Wenn Blöcke 330 eines Streifens 320 unzugänglich werden, enthält das Verfahren 600 unter Verwendung des Datenverarbeitungsgeräts die wesentliche, sofortige Rekonstruktion 606 von nicht zugänglichen, hochverfügbaren Blöcken 330a, die einen effektiven Redundanzwert ER kleiner eines effektiven Redundanzgrenzwerts ERT besitzen. Wenn des Weiteren Blöcke 330 eines Streifens 320 unzugänglich werden, enthält das Verfahren die Rekonstruktion 608 nach einer Zeitgrenzwertperiode: 1) von nicht zugänglichen, niedrigverfügbaren Blöcken 330b; und 2) von nicht zugänglichen, hochverfügbaren Blöcken 330a, die einen effektiven Redundanzwert ER größer oder gleich des effektiven Redundanzgrenzwerts ERT besitzen. Daher werden bestimmte hochverfügbare Blöcke 330a, die ein hohes Risiko des Verlusts in sich tragen (basierend auf dem effektiven Redundanzwert ER), relativ schneller als niedrigverfügbare Blöcke 330b oder andere hochverfügbare Blöcke 330a ohne hohes Verlustrisiko rekonstruiert. Andere Parameter können zusätzlich oder alternativ zur Zeitgrenzwertperiode genutzt werden, um die Rekonstruktion eines nicht zugänglichen Blocks 330 auszulösen. Ein Client 120 kann z. B. Daten 312 (z. B. Blöcke 330) von einem Speichergerät 114 eines Hostgeräts 110 anfordern und die Daten 312 nicht auffinden. Als Reaktion auf das Nichtauffinden der Daten 312 kann der Client 120 den Verwalter 210 über die unzugänglichen Daten 312 benachrichtigen. Wenn der Verwalter 210 bestätigt, dass die Daten 312 unzugänglich sind (z. B. nicht verfügbar für t < Tm oder fehlend (nicht verfügbar für t ≥ Tm)), kann der Verwalter 210 die Rekonstruktion der Daten 312 ohne Verzögerung (z. B. ohne das Abwarten eines Zeitgrenzwertes, wie etwa 15 oder 30 Minuten) initiieren.
  • In manchen Implementationen enthält das Verfahren 600 weiterhin die Aktualisierung des effektiven Redundanzwerts ER für jeden Streifen 320 der Datei 310, die einer Systemdomäne 402 zugewiesen ist, wenn sich die Systemdomäne 402 im inaktiven Status befindet. Der Zeitgrenzwert kann zwischen ca. 15 und ca. 30 Minuten liegen.
  • Die Systemhierarchie 400 kann Systemstufen enthalten. Die Systemstufen enthalten eine erste, zweite, dritte und vierte Systemstufe. Die erste Systemstufe (Stufe 1) entspricht dem Hostgerät 110 der Datenverarbeitungsgeräte 112, nichtflüchtigen Speichergeräten 114 oder Netzwerkschnittstellen 116. Jedes Hostgerät 110 enthält eine Systemdomäne 402. Die zweite Systemstufe (Stufe 2) entspricht der Stromzufuhr 434, den Kommunikationseinheiten 436 oder Kühleinheiten 432 von Racks 430, in denen das Hostgerät 110 aufbewahrt wird. Jede Stromzufuhr 434, Kommunikationseinheit 436 oder Kühleinheit 432 des Racks 430 besitzt eine Systemdomäne 402. Die dritte Systemstufe (Stufe 3) entspricht der Stromzufuhr 424, Kommunikationseinheiten 426 oder Kühleinheiten 422 von Zellen 420 mit ihnen zugewiesenen Racks 430. Jede Stromzufuhr 424, Kommunikationseinheit 426 oder Kühleinheit 422 der Zelle 420 besitzt eine Systemdomäne 402. Die vierte Systemstufe (Stufe 4) entspricht einem Verteilungszentrums-Modul 410 der Zellen 420, wobei jedes Verteilungszentrums-Modul 410 eine Systemdomäne 402 besitzt.
  • In manchen Beispielen enthält das Verfahren 600 für jeden Streifen 320 die Ermittlung des effektiven Redundanzwerts ER für jede Systemstufe. Die Ermittlung eines effektiven Redundanzwerts für einen replizierten Streifen 330n, der replizierte Blöcke 330 beinhaltet, enthält die Identifizierung einer Anzahl an eindeutigen Systemdomänen 402, die mindestens einen verfügbaren replizierten Block 330 in der entsprechenden Systemstufe bereitstellen können. Die Ermittlung eines effektiven Redundanzwerts in der zweiten Systemstufe für einen kodierten Streifen 320, der Datenblöcke 330nD und Codeblöcke 330nC enthält, enthält die Identifizierung einer Anzahl an eindeutigen Systemdomänen 402 innerhalb der zweiten Systemstufe, die in der Lage sind, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen. Zudem enthält die Ermittlung des effektiven Redundanzwerts in der dritten oder vierten Systemstufe für einen kodierten Streifen 320, der Datenblöcke 330nC und Codeblöcke 330nC enthält, die Identifizierung einer Systemdomäne 402 innerhalb der dritten oder vierten Stufe, die in der Lage ist, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen, und gleichzeitig die größte Anzahl an Blöcken 330 im Vergleich mit den übrigen Systemdomänen 402 enthält. Falls mehr als eine Systemdomäne 402 die größte Anzahl an Blöcken 330 besitzt, enthält das Verfahren 600 außerdem die zufällige Auswahl einer der Systemdomänen 402.
  • In manchen Implementationen enthält die Ermittlung des effektiven Redundanzwerts für einen verschachtelten Streifen, der Datenblöcke 330nD, Codeprüfungsblöcke 330nCC und Wortprüfungsblöcke 330nWCC enthält, außerdem weiterhin die Ermittlung einer der effektiven Spaltenredundanzen oder effektiven Streifenredundanzen. Die Ermittlung einer effektiven Spaltenredundanz enthält die Identifizierung einer Anzahl an eindeutigen Blöcken 330 innerhalb eine Spalte C, die aus anderen Blöcken 330 innerhalb der Spalte C rekonstruiert werden können; und die Ermittlung einer effektiven Streifenredundanz enthält die Identifizierung einer Anzahl an eindeutigen Blöcken 330 innerhalb eines Streifens 320, die aus anderen Blöcken 330 innerhalb des Streifens 320 rekonstruiert werden können.
  • Unter Bezugnahme auf 7 enthält in manchen Implementationen ein Verfahren 700 zur Priorisierung von Daten 312 für die Wiederherstellung in einem verteilten Speichersystem 100 die Ermittlung 702 mithilfe eines Berechnungsprozessors eines effektiven Redundanzwertes für jeden Streifen 320 einer Datei 310, wobei die Datei 310 in Streifen 320 aufgeteilt ist, die Blöcke 330 enthalten. Der effektive Redundanzwert basiert auf den Blöcken 330 und allen dem entsprechenden Streifen 320 zugewiesenen Systemdomänen 402. Wenn sich eine Systemdomäne 402 im inaktiven Status befindet, enthält das Verfahren 700 die Aktualisierung 704 des effektiven Redundanzwerts für jeden Streifen 320 einer Datei 310, die der Systemdomäne 402 zugewiesen ist. Zusätzlich enthält das Verfahren 700 die Auslösung 706 der Rekonstruktion eines Streifens 320, wenn sein effektiver Redundanzwert kleiner einem effektiven Redundanzgrenzwert ERT ist. In manchen Beispielen enthält das Verfahren 700 weiterhin für jeden Streifen 320 die Ermittlung des effektiven Redundanzwerts für jede Systemstufe.
  • In manchen Implementationen enthält das Verfahren 700 weiterhin die Ermittlung, ob ein Streifen 320 hochverfügbare Blöcke 330 oder niedrigverfügbare Blöcke 330 enthält, sowie die Verzögerung der Rekonstruktion von niedrigverfügbaren Blöcken 330 (z. B. die Verzögerung der Rekonstruktion von niedrigverfügbaren Blöcken 330 für eine Zeitspanne zwischen etwa 15 und 30 Minuten).
  • Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltkreisen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsorientierten integrierten Schaltkreisen), Computerhardware, Firmware, Software und/oder Kombinationen davon realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller Prozessor oder ein Prozessor für allgemeine Zwecke sein kann, und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
  • Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierten Programmiersprache und/oder in Assembler-/Maschinensprache implementiert werden. Wie hier verwendet, bezeichnen die Begriffe „maschinenlesbares Medium”, „computerlesbares Medium” ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal” bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen.
  • Implementationen des behandelten Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Darüber hinaus kann der in dieser Spezifikation beschriebene Gegenstand als ein oder mehrere Computerprogrammprodukte implementiert werden, d. h. als ein oder mehrere Module von Computerprogrammanweisungen, die auf einem computerlesbaren Medium zur Ausführung kodiert sind, durch oder zur Kontrolle von datenverarbeitenden Apparaten. Das computerlesbare Speichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, ein Speichergerät, eine Stoffzusammensetzung, die ein maschinenlesbares verbreitetes Signal bewirkt, oder eine Kombination aus einem oder mehreren davon sein. Die Begriffe „datenverarbeitender Apparat”, „Berechnungsgerät” und „Berechnungsprozessor” umfassen jegliche Apparate, Vorrichtungen oder Maschinen zur Verarbeitung von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers bzw. mehrerer Prozessoren oder Computer. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Ausführungsumgebung für das betreffende Computerprogramm erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem oder eine Kombination einer oder mehrerer der genannten darstellt. Ein propagiertes Signal ist ein künstlich erzeugtes Signal, z. B. ein maschinell erzeugtes elektrisches, optisches oder elektromagnetisches Signal, das für das Verschlüsseln von Information für die Übertragung auf einen geeigneten Empfängerapparat erzeugt wird.
  • Ein Computerprogramm (auch bezeichnet als Anwendung, Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm entspricht nicht unbedingt einer Datei in einem Dateisystem. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computer eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
  • Die in dieser Beschreibung dargestellten Prozesse und Logik-Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch das Arbeiten mit Eingabedaten und das Erzeugen von Ausgaben auszuführen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Digitalrechner ein. Ganz allgemein nimmt ein Prozessor Anweisungen und Daten von einem Festwertspeicher oder einem Speicher mit wahlfreiem Zugriff oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Ausführen von Befehlen und ein oder mehrere Speichergeräte für das Speichern von Befehlen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in ein anderes Gerät eingebettet sein, z. B. in ein Mobiltelefon, einen Organizer (PDA), einen mobilen Audioplayer, einen GPS-Empfänger (Global Positioning System), um nur einige zu nennen. Computerlesbare Medien, die für das Speichern von Computerprogrammbefehlen und -daten geeignet sind, schließen alle Formen von Permanentspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und Flash-Speicher; Magnetdisketten, z. B. interne Festplatten oder Wechselplatten; magnetooptische Disketten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können ein oder mehrere Aspekte der Offenbarung auf einem Computer implementiert werden, der ein Anzeigegerät für die Anzeige von Informationen für den Benutzer hat, z. B. einen CRT-(Kathodenstrahlröhre) oder LCD-Bildschirm (Flüssigkristallanzeige) oder einen Touchscreen, und optional eine Tastatur und ein Zeigegerät, z. B. eine Maus oder einen Trackball, über die der Benutzer Eingaben an den Computer senden kann. Es können auch andere Arten von Geräte verwendet werden, um für eine Interaktion mit einem Benutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe vom Benutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren; beispielsweise über das Senden von Webpages an einen Webbrowser auf dem Clientgerät des Benutzers als Antwort auf die vom Webbrowser empfangenen Aufforderungen.
  • Ein oder mehrere Aspekte der Offenbarung können in einem Rechensystem implementiert werden, das eine Back-End-Komponente umfasst, wie beispielsweise einen Datenserver, oder das eine Middleware-Komponente umfasst, wie beispielsweise einen Anwendungsserver, oder das eine Front-End-Komponente beinhaltet, wie beispielsweise eine Client-Recheneinheit, die eine grafische Benutzeroberfläche oder einen Web-Browser besitzt, durch die ein Benutzer mit einer Implementierung des Technikthemas, das in der vorliegenden Spezifikation beschrieben ist, interagieren kann oder eine beliebige Kombination von einer oder mehreren solcher Back-End-, Middleware- oder Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Zu Beispielen für Kommunikationsnetze zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
  • Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computer laufen und die eine Client-Server-Beziehung zueinander haben. Bei einigen Implementierungen überträgt ein Server Daten (z. B. eine HTML-Seite) auf ein Client-Gerät (z. B. zum Anzeigen von Daten für einen Benutzer, der mit dem Client-Gerät interagiert, sowie zum Empfangen von Benutzereingaben von diesem Benutzer). Am Client-Gerät erzeugte Daten (z. B. infolge der Benutzerinteraktion) können vom Client-Gerät am Server empfangen werden.
  • Während diese Spezifikation viele Spezifika enthält, sollen diese nicht als Beschränkung des Umfangs der Offenbarung oder des Patentanspruchs verstanden werden, sondern vielmehr als Beschreibungen bestimmter Implementierungen der Offenbarung. Bestimmte Eigenschaften, die in dieser Spezifikation im Kontext gesonderter Implementierungen beschrieben sind, können auch in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzelnen Implementierung beschrieben sind, auch in mehreren Implementierungen separat oder in einer geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
  • Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
  • Eine Anzahl an Implementierungen wurde beschrieben. Trotzdem versteht sich, dass verschiedene Modifikationen durchgeführt werden können, ohne vom Geist und Umfang der Offenbarung abzuweichen. Dementsprechend liegen andere Implementierungen im Geltungsbereich der folgenden Ansprüche. Die in den Ansprüchen ausgeführten Vorgänge können beispielsweise in einer anderen Reihenfolge ausgeführt werden und erzielen dennoch gewünschte Ergebnisse.

Claims (10)

  1. System zur Priorisierung von Daten zum Wiederherstelen in einem verteilten Speichersystem (100), wobei das System Folgendes umfasst: Speicherhosts (110), wobei jeder Speicherhost (110) nichtflüchtigen Speicher (114) hat; einen Computerprozessor (202), der mit den Speicherhosts (110) kommuniziert, wobei der Computerprozessor (202) Instruktionen ausführt, um Folgendes zu bewerkstelligen: das Verwalten der Aufteilung von Dateien (310), verteilt über die Speicherhosts (110), wobei jede Datei (310) Streifen (320) umfasst, die Blöcke (330) enthalten; das Ermitteln mithilfe eines Datenverarbeitungsgeräts (202) für jeden Streifen (320) einer Datei (310), die eine Vielzahl von Streifen (320) umfasst, die jeweils Blöcke (330) beinhalten, ob der Streifen (320) hochverfügbare Blöcke (330a) oder niedrigverfügbare Blöcke (330b) umfasst; das Ermitteln eines effektiven Redundanzwertes (ER) für jeden Streifen (320) der Datei (310), wobei der effektive Redundanzwert (ER) auf den Blöcken (330) und jeder dem entsprechenden Streifen (320) zugewiesenen Systemdomäne (402) basiert, das verteilte Speichersystem (100) eine Systemhierarchie (400) hat, die Systemdomänen (402) umfasst, jede Systemdomäne (402) einen aktiven oder inaktiven Status besitzt, worin einer sich im aktiven Status befindlichen Systemdomäne (402) zugewiesene Blöcke (330) eines Streifens (320) zugänglich sind und einer sich im inaktiven Status befindlichen Systemdomäne (402) zugewiesene Blöcke (330) eines Streifens (320) unzugänglich sind; und wenn Blöcke (330) eines Streifens (320) unzugänglich werden: das Rekonstruieren von unzugänglichen, hochverfügbaren Blöcken (330a) mit einem effektiven Redundanzwert (ER) kleiner als ein effektiver Redundanzgrenzwert (ERT), wesentlich und unverzüglich; und das Rekonstruieren nach einer Zeitgrenzwertperiode: unzugänglicher, niedrigverfügbarer Blöcke (330b); und unzugänglicher, hochverfügbarer Blöcke (330a), die einen effektiven Redundanzwert (ER) größer oder gleich eines effektiven Redundanzgrenzwertes (ERT) haben.
  2. System nach Anspruch 1, worin der Computerprozessor (202) den effektiven Redundanzwert (ER) für jeden Streifen (320) der Datei (310) aktualisiert, die einer Systemdomäne (402) zugewiesen ist, wenn sich die Systemdomäne (402) im inaktiven Status befindet.
  3. System nach Anspruch 1, worin die Zeitgrenzwertperiode zwischen 15 Minuten und 30 Minuten umfasst.
  4. System nach Anspruch 1, worin die Systemhierarchie (400) Systemstufen (Stufen 1, 2, 3, 4) umfasst, Folgendes umfassend: eine erste Systemstufe (Stufe 1) entsprechend den Hostgeräten (110) der Datenverarbeitungsgeräte (112), dem nichtflüchtigen Speichergeräten (114) und den Netzwerkschnittstellencontrollern (116), wobei jedes Hostgerät (110) eine Systemdomäne (402) besitzt; eine zweite Systemstufe (Stufe 2), entsprechend der Stromzufuhr (434), den Kommunikationseinheiten (436) und den Kühleinheiten (432) der Racks (430), die das Hostgerät (110) beherbergt und wobei jede Stromzufuhr (434), Kommunikationseinheit (436) und Kühleinheit (432) eines Racks (430) eine Systemdomäne (402) besitzt; und eine dritte Systemstufe (Stufe 3), entsprechend der Stromzufuhr (424), den Kommunikationseinheiten (426) und den Kühleinheiten (422) von Zellen (420), denen Racks (430) zugewiesen sind, und wobei jede Stromzufuhr (424), Kommunikationseinheit (426) und Kühleinheit (422) der Zelle (420) eine Systemdomäne (402) besitzt; und eine vierte Systemstufe (Stufe 4), entsprechend einem Verteilungszentrums-Modul (410, 410a, 410b) der Zellen (420), wobei jedes Verteilungszentrums-Modul (410, 410a, 410b) eine Systemdomäne (402) besitzt.
  5. System nach Anspruch 4, worin der Computerprozessor (202) für jeden Streifen (320) den effektiven Redundanzwert (ER) für jede Systemstufe (Stufen 1, 2, 3, 4) ermittelt.
  6. System nach Anspruch 4, worin der Computerprozessor (202) den effektiven Redundanzwert (ER) für einen replizierten Streifen (320) ermittelt, der Blockrepliken (330, 330n) enthält, sowie eine Anzahl an eindeutigen Systemdomänen (402) identifiziert, die mindestens eine verfügbare Blockreplik (330, 330n) in einer entsprechenden Systemstufe (Stufe 1, 2, 3, 4) besitzen.
  7. System nach Anspruch 4, worin der Computerprozessor (202) den effektiven Redundanzwert (ER) in der zweiten Systemstufe (Stufe 2) für einen kodierten Streifen (320) ermittelt, der Datenblöcke (330nD) und Codeblöcke (330nC) enthält, sowie eine Anzahl an eindeutigen Systemdomänen (402) innerhalb der zweiten Systemstufe (Stufe 2) identifiziert, die in der Lage sind, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen.
  8. System nach Anspruch 4, worin der Computerprozessor (202) den effektiven Redundanzwert in der dritten oder vierten Systemstufe (Stufe 3 oder Stufe 4)für einen kodierten Streifen (320) ermittelt, der Datenblöcke (330nD) und Codeblöcke (330nC) enthält, sowie eine Anzahl an eindeutigen Systemdomänen (402) innerhalb der dritten oder vierten Systemstufe (Stufe 3 oder Stufe 4) identifiziert, die in der Lage sind, sich im inaktiven Status zu befinden und gleichzeitig den Zugriff auf Daten bereitzustellen und die größte Anzahl an Blöcken (330) im Vergleich mit den übrigen Systemdomänen (402) beinhalten.
  9. System nach Anspruch 8, worin, falls mehr als eine Systemdomäne (402) die größte Anzahl an Blöcken (330) besitzt, der Computerprozessor (202) zufällig eine der Systemdomänen (402) auswählt.
  10. System nach Anspruch 1, worin der Computerprozessor (202) den effektiven Redundanzwert (ER) für einen verschachtelt kodierten Streifen (320) ermittelt, der Datenblöcke (330nD), Codeprüfungsblöcke (330nCC) und Wortprüfungsblöcke (330nWCC) enthält, indem er Folgendes veranlasst: das Ermitteln entweder einer spalteneffektiven Redundanz oder einer streifeneffektiven Redundanz; worin das Ermitteln einer spalteneffektiven Redundanz das Identifizieren einer Anzahl an eindeutigen Blöcken (330) innerhalb einer Spalte (C) umfasst, die aus anderen Blöcken (330) innerhalb der Spalte (C) rekonstruiert werden kann; und worin das Ermitteln einer streifeneffektiven Redundanz das Identifizieren einer Anzahl an eindeutigen Blöcken (330) innerhalb eines Streifens (320) umfasst, der aus anderen Blöcken (330) innerhalb des Streifens (320) rekonstruiert werden kann.
DE202015009267.5U 2014-01-31 2015-01-23 Priorisierung von Datenrekonstruktion in verteilten Speichersystemen Active DE202015009267U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/169,274 US9292389B2 (en) 2014-01-31 2014-01-31 Prioritizing data reconstruction in distributed storage systems
US14/169,274 2014-01-31

Publications (1)

Publication Number Publication Date
DE202015009267U1 true DE202015009267U1 (de) 2017-01-27

Family

ID=53754913

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202015009267.5U Active DE202015009267U1 (de) 2014-01-31 2015-01-23 Priorisierung von Datenrekonstruktion in verteilten Speichersystemen

Country Status (8)

Country Link
US (3) US9292389B2 (de)
EP (2) EP3100184B1 (de)
KR (1) KR101677418B1 (de)
CN (1) CN105960639B (de)
AU (2) AU2015211305B2 (de)
DE (1) DE202015009267U1 (de)
GB (1) GB2538654B (de)
WO (1) WO2015116483A1 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6273970B2 (ja) * 2014-03-28 2018-02-07 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
US10298555B2 (en) * 2014-04-04 2019-05-21 Zettaset, Inc. Securing files under the semi-trusted user threat model using per-file key encryption
US20150331752A1 (en) * 2014-05-16 2015-11-19 Syed Ali Haider Method of data storage on cloud data center for reducing processing and storage requirements by engaging user equipment
US9734007B2 (en) 2014-07-09 2017-08-15 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9582355B2 (en) * 2014-07-09 2017-02-28 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9594632B2 (en) 2014-07-09 2017-03-14 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9823969B2 (en) 2014-09-02 2017-11-21 Netapp, Inc. Hierarchical wide spreading of distributed storage
US9767104B2 (en) 2014-09-02 2017-09-19 Netapp, Inc. File system for efficient object fragment access
US20160062832A1 (en) 2014-09-02 2016-03-03 Netapp. Inc. Wide spreading data storage architecture
US9817715B2 (en) 2015-04-24 2017-11-14 Netapp, Inc. Resiliency fragment tiering
US9431061B1 (en) 2015-04-24 2016-08-30 Netapp, Inc. Data write deferral during hostile events
US9965369B2 (en) 2015-04-28 2018-05-08 Viasat, Inc. Self-organized storage nodes for distributed delivery network
US10360119B2 (en) * 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
US9755979B2 (en) 2015-11-19 2017-09-05 Viasat, Inc. Enhancing capacity of a direct communication link
US10379742B2 (en) 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
WO2017113276A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10055317B2 (en) 2016-03-22 2018-08-21 Netapp, Inc. Deferred, bulk maintenance in a distributed storage system
US10157021B2 (en) * 2016-06-29 2018-12-18 International Business Machines Corporation Processing incomplete data access transactions
US10409682B1 (en) * 2017-02-24 2019-09-10 Seagate Technology Llc Distributed RAID system
JP6798007B2 (ja) * 2017-03-28 2020-12-09 株式会社日立製作所 ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法
US10474528B2 (en) * 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
US11385980B2 (en) 2017-11-13 2022-07-12 Weka.IO Ltd. Methods and systems for rapid failure recovery for a distributed storage system
US11561860B2 (en) 2017-11-13 2023-01-24 Weka.IO Ltd. Methods and systems for power failure resistance for a distributed storage system
US10691543B2 (en) * 2017-11-14 2020-06-23 International Business Machines Corporation Machine learning to enhance redundant array of independent disks rebuilds
CN108304214B (zh) * 2017-12-13 2022-05-13 超聚变数字技术有限公司 一种立即数的完整性的校验方法及装置
CN108170555B (zh) * 2017-12-21 2021-07-20 浙江大华技术股份有限公司 一种数据恢复方法及设备
CN110515761B (zh) * 2018-05-22 2022-06-03 杭州海康威视数字技术股份有限公司 一种数据获取方法及装置
CN108762983B (zh) * 2018-05-23 2020-09-01 Oppo广东移动通信有限公司 多媒体数据恢复方法及装置
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
US10929311B2 (en) 2019-06-26 2021-02-23 EMC IP Holding Company LLC Stream level uninterrupted backup operation using data probe
US11068359B2 (en) * 2019-06-26 2021-07-20 EMC IP Holding Company LLC Stream level uninterrupted restore operation using data probe
CN110442535B (zh) * 2019-07-19 2021-06-11 华中科技大学 提高分布式固态盘键值缓存系统可靠性的方法及系统
JP2021099624A (ja) * 2019-12-20 2021-07-01 株式会社日立製作所 ストレージシステム及びストレージシステムのリビルド処理方法
KR20220060155A (ko) 2020-11-04 2022-05-11 삼성전자주식회사 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터
US20230237020A1 (en) * 2022-01-24 2023-07-27 Cohesity, Inc. Container-based erasure coding

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516425B1 (en) 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US7865536B1 (en) 2003-02-14 2011-01-04 Google Inc. Garbage collecting systems and methods
US7065618B1 (en) * 2003-02-14 2006-06-20 Google Inc. Leasing scheme for data-modifying operations
US7107419B1 (en) * 2003-02-14 2006-09-12 Google Inc. Systems and methods for performing record append operations
US7222119B1 (en) * 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
US7237141B2 (en) * 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
US8064351B2 (en) 2005-10-20 2011-11-22 Schrader Electronics, Ltd. Method for detecting and correcting data errors in an RF data link
US7653668B1 (en) * 2005-11-23 2010-01-26 Symantec Operating Corporation Fault tolerant multi-stage data replication with relaxed coherency guarantees
US7885928B2 (en) * 2007-03-08 2011-02-08 Xerox Corporation Decentralized adaptive management of distributed resource replicas in a peer-to-peer network based on QoS
JP4757825B2 (ja) 2007-03-23 2011-08-24 中部日本電気ソフトウェア株式会社 ファイル管理装置、プログラム、コンピュータ読み取り可能な記録媒体
US8225006B1 (en) * 2007-08-30 2012-07-17 Virident Systems, Inc. Methods for data redundancy across three or more storage devices
CN101334797B (zh) * 2008-08-04 2010-06-02 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
US8225061B2 (en) * 2009-07-02 2012-07-17 Apple Inc. Method and apparatus for protected content data processing
US8285952B2 (en) 2009-09-17 2012-10-09 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
US8589535B2 (en) * 2009-10-26 2013-11-19 Microsoft Corporation Maintaining service performance during a cloud upgrade
US8341457B2 (en) 2010-03-11 2012-12-25 Lsi Corporation System and method for optimizing redundancy restoration in distributed data layout environments
US8484536B1 (en) * 2010-03-26 2013-07-09 Google Inc. Techniques for data storage, access, and maintenance
US10394757B2 (en) 2010-11-18 2019-08-27 Microsoft Technology Licensing, Llc Scalable chunk store for data deduplication
WO2012147087A1 (en) 2011-04-29 2012-11-01 Tata Consultancy Services Limited Archival storage and retrieval system
US9122535B2 (en) 2011-11-22 2015-09-01 Netapp, Inc. Optimizing distributed data analytics for shared storage

Also Published As

Publication number Publication date
US9823980B2 (en) 2017-11-21
US9292389B2 (en) 2016-03-22
WO2015116483A1 (en) 2015-08-06
AU2015211305A1 (en) 2016-06-09
CN105960639A (zh) 2016-09-21
EP3916559A1 (de) 2021-12-01
EP3100184A4 (de) 2017-11-29
KR101677418B1 (ko) 2016-11-17
AU2017201918B2 (en) 2018-06-28
US20160179621A1 (en) 2016-06-23
KR20160106187A (ko) 2016-09-09
GB201614047D0 (en) 2016-09-28
AU2015211305B2 (en) 2016-12-22
GB2538654A (en) 2016-11-23
US9535790B2 (en) 2017-01-03
US20150220398A1 (en) 2015-08-06
EP3100184A1 (de) 2016-12-07
US20170075741A1 (en) 2017-03-16
GB2538654B (en) 2017-06-14
EP3100184B1 (de) 2021-09-01
AU2017201918A1 (en) 2017-04-13
CN105960639B (zh) 2019-05-28

Similar Documents

Publication Publication Date Title
DE202015009267U1 (de) Priorisierung von Datenrekonstruktion in verteilten Speichersystemen
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE202015009260U1 (de) Effiziente Datenlesungen von verteilten Speichersystemen
DE102014117465B4 (de) Unterstützter kohärenter gemeinsamer Speicher
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE112011100534B4 (de) Mehrstufiger Sicherungsprozess
DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE102021113808A1 (de) Handhabung von Replikationen zwischen verschiedenen Netzwerken
DE102010044531B4 (de) Autonome Speicherarchitektur
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE202019005484U1 (de) Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen
DE112012000282B4 (de) Anwendungswiederherstellung in einem Dateisystem
DE112020003277T5 (de) Erzeugen von tags für die datenzuweisung
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE112011104419T5 (de) Bereichsmigration für gepaarte Speicherung
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
DE112014006605T5 (de) Speichersystem
DE112010004140B4 (de) Dynamischer Austausch von Replikat-Datenträgern in einem Verbund
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102014114108A1 (de) Prozessleitsysteme und -verfahren
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE202015009295U1 (de) Effiziente Ressourcennutzung in Datenzentren

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years