DE202014010909U1 - Verteilung von Daten in verteilten Speichersystemen - Google Patents

Verteilung von Daten in verteilten Speichersystemen Download PDF

Info

Publication number
DE202014010909U1
DE202014010909U1 DE202014010909.5U DE202014010909U DE202014010909U1 DE 202014010909 U1 DE202014010909 U1 DE 202014010909U1 DE 202014010909 U DE202014010909 U DE 202014010909U DE 202014010909 U1 DE202014010909 U1 DE 202014010909U1
Authority
DE
Germany
Prior art keywords
storage devices
maintenance
file
segments
computer processor
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
DE202014010909.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 DE202014010909U1 publication Critical patent/DE202014010909U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Ein System für die Verteilung von Daten in einem verteilten Speichersystem (100), das System umfassend: einen nicht flüchtigen Speicher (204), der eine Datei empfängt (310); einen Computerprozessor (202), der mit dem nicht flüchtigen Speicher (204) kommuniziert, wobei der Computerprozessor (202) die empfangene Datei (310) in Segmente (330) unterteilt; und Speichergeräten (114), die mit dem Computerprozessor (202) und dem nicht flüchtigen Speicher (204) kommunizieren, wobei der Computerprozessor (202) die Segmente (330) auf den Speichergeräten (114) speichert, basierend auf einer Wartungshierarchie (400) des verteilten Speichersystems (100), wobei die Wartungshierarchie (400) Wartungseinheiten (402) umfasst, die aktive und inaktive Status haben, und jedes Speichergerät (114) einer Wartungseinheit (402) zugeordnet ist, wobei der Computerprozessor (202) die Segmente (330) über mehrere Wartungseinheiten (402) verteilt, um den Zugriff auf die Datei (310) aufrechtzuerhalten, falls sich eine Wartungseinheit (402) in einem inaktiven Status befindet.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft die Verteilung von Daten in verteilten Speichersystemen.
  • 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 die Speicherressourcen eines verteilten Systems mit einer Speicherabstraktion (z. B. Schlüssel/Wert-Speicher oder 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 können RDMA-Funktionen (Remote Direct Memory Access, Speicherfernzugriff) verwendet werden, um Daten von der Server-Hardware an Client-Prozesse zu übertragen.
  • 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 Verfahren. 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.
  • ZUSAMMENFASSUNG
  • Ein Aspekt der Offenbarung beschreibt ein Verfahren zur Verteilung von Daten in einem erteilten Speichersystem. Das Verfahren beinhaltet das Empfangen einer Datei in einem nicht flüchtigen Speicher und das Unterteilen der empfangenen Datei in mehrere Segmente unter Verwendung eines Computerprozessors, der mit dem nicht flüchtigen Speicher kommuniziert. Das Verfahren beinhaltet außerdem die auf einer Wartungshierarchie des verteilten Speichersystems basierende Verteilung von Segmenten auf Speichergeräte des verteilten Speichersystems. Die Wartungshierarchie umfasst Wartungseinheiten mit jeweils aktiven und inaktiven Status. Darüber hinaus ist jedes Speichergerät einer Wartungseinheit zugeordnet. Die Segmente werden über mehrere Wartungseinheiten verteilt, um den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine Wartungseinheit in einem inaktiven Status befindet.
  • Implementierungen der Offenbarung können eines oder mehrere der folgenden Merkmale beinhalten. Bei einigen Implementierungen beinhaltet das Verfahren weiterhin eine Einschränkung der Anzahl der Segmente, die auf Speichergeräte jeder Wartungseinheit verteilt werden.
  • Bei einigen Implementierungen beinhaltet das Verfahren weiterhin die Bestimmung einer Verteilung der Segmente über die Speichergeräte, indem zunächst eine erste zufällige Auswahl an Speichergerägen festgelegt wird, die mit einer Anzahl an Segmenten der Datei übereinstimmt, und die Feststellung, ob die Auswahl der Speichergeräte in der Lage ist, den Zugriff auf die Datei aufrechtzuerhalten, wenn sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden. Wenn die erste zufällige Auswahl an Speichergeräten den Zugriff auf die Datei nicht aufrechterhalten kann, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden, beinhaltet das Verfahren weiterhin bei einigen Beispielen die Bestimmung einer zweiten zufälligen Auswahl an Speichergeräten, die mit der Anzahl der Segmente der Datei übereinstimmt, oder eine Abänderung der ersten zufälligen Auswahl an Speichergeräten, indem ein oder mehrere zufällig ausgewählte Speichergeräte hinzugefügt oder entfernt werden. Das Verfahren kann weiterhin eine Bestimmung der ersten zufälligen Auswahl an Speichergeräten unter Verwendung einer einfachen Stichprobe, einer Wahrscheinlichkeitsauswahl, einer Gruppenauswahl oder einer Klumpenauswahl beinhalten.
  • Bei einigen Implementierungen beinhaltet das Verfahren weiterhin die Bestimmung einer Verteilung der Segmente über die Speichergeräte, indem aus einer sortierten Ringliste der Speichergeräte des verteilten Speichers eine fortlaufende Anzahl an Speichergeräten ausgewählt wird, die gleich der Anzahl der Segmente der Datei ist. Wenn die ausgewählten Speichergeräte zusammen nicht in der Lage sind, den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden, beinhaltet das Verfahren weiterhin die Auswahl einer weiteren fortlaufenden Anzahl an Speichergeräten aus der sortierten Ringliste, die gleich der Anzahl der Segmente der Datei ist. Zusätzlich oder alternativ beinhaltet das Verfahren weiterhin die Bestimmung der sortierten Ringliste an Speichergeräten des verteilten Speichersystems. In der sortierten Ringliste nebeneinanderliegende Geräte werden unterschiedlichen Wartungseinheiten zugeordnet. Bei einigen Beispielen ist eine Schwellenanzahl von fortlaufenden Speichergeräten in der sortierten Ringliste jeweils unterschiedlichen Wartungseinheiten zugeordnet, oder sie befinden sich jeweils an unterschiedlichen geographischen Standorten.
  • Bei einigen Implementierungen beinhaltet das Verfahren weiterhin die Bestimmung der Wartungshierarchie der Wartungseinheiten (z. B. unter Verwendung des Computerprozessors), wobei die Wartungshierarchie Wartungsebenen hat, und jede Wartungsebene eine oder mehrere Wartungseinheiten beinhaltet. Das Verfahren beinhaltet auch die Zuweisung jeder Wartungseinheit auf mindestens ein Speichergerät. Bei einigen Beispielen beinhaltet jede Wartungseinheit Speichergeräte, die von einer einzigen Stromversorgungseinheit oder einer einzigen Stromschienenleitung versorgt werden. Zusätzlich oder alternativ können die Wartungseinheiten Speichergeräte enthalten, die einer Kühleinheit zugeordnet sind, oder einer anderen Ausrüstung, die gewartet werden muss (sporadisch oder planmäßig).
  • Das Verfahren kann weiterhin eine Unterteilung der empfangenen Datei in Streifen beinhalten. Jede Datei enthält einen Replikationscode oder einen Fehlerkorrekturcode. Wenn die Datei einen Fehlerkorrekturcode enthält, beinhaltet das Verfahren die Replikation von mindestens einem Streifen als Replikationssegmente. Wenn die Datei einen Fehlerkorrekturcode enthält, beinhaltet das Verfahren die Unterteilung mindestens eines Streifens in Datensegmente und Codesegmente. Das Verfahren kann auch eine Verteilung von Replikationssegmenten über die Speichergeräte beinhalten, die sich von der Verteilung der Datensegmente und der Codesegmente über die Speichergeräte unterscheidet.
  • Ein weiterer Aspekt der Offenbarung bietet ein System für die Verteilung von Daten in einem verteilten Speichersystem. Das System beinhaltet nicht flüchtigen Speicher, einen Computerprozessor und Speichergeräte. Der nicht flüchtige Speicher nimmt eine oder mehrere Dateien von Benutzern entgegen. Der Computerprozessor kommuniziert mit dem nicht flüchtigen Speicher und unterteilt die empfangenen Dateien in Segmente. Die Speichergeräte kommunizieren mit dem Computerprozessor und dem nicht flüchtigen Speicher. Der Computerprozessor speichert die Segmente basierend auf einer Wartungshierarchie des verteilten Speichersystems auf den Speichergeräten. Die Wartungshierarchie beinhaltet Wartungseinheiten mit aktiven und inaktiven Status. Jedes Speichergerät ist einer Wartungseinheit zugeordnet. Der Computerprozessor verteilt die Segmente über mehrere Wartungseinheiten, um den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine Wartungseinheit in einem inaktiven Status befindet.
  • Bei einigen Beispielen schränkt der Computerprozessor eine Anzahl an Segementen ein, die auf die Speichergeräte jeder Wartungseinheit verteilt werden. Der Computerprozessor kann eine Verteilung der Segmente über die Speichergeräte festlegen, indem er zuerst eine zufällige Auswahl an Speichergeräten festlegt, die mit einer Anzahl von Segmenten der Datei übereinstimmt, und indem er feststellt, ob die Auswahl der Speichergeräte in der Lage ist, den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden. Zusätzlich oder alternativ kann der Computerprozessor eine zweite zufällige Auswahl an Speichergeräten festlegen, die der Anzahl der Segmente der Datei entsprichtechen, wenn die erste zufällige Auswahl der Speichergeräte nicht in der Lage ist, den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden.
  • Bei einigen Implementierungen ändert der Computerprozessor die erste zufällige Auswahl der Speichergeräte ab, indem er ein oder mehrere zufällig ausgewählte Speichergeräte hinzufügt oder entfernt, wenn die erste zufällige Auswahl an Speichergeräten nicht in der Lage ist, den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden. Zusätzlich oder alternativ kann der Computerprozessor die erste zufällige Auswahl von Speichergeräten unter Verwendung einer einfachen Stichprobe, einer Wahrscheinlichkeitsauswahl, einer Gruppenauswahl oder einer Klumpenauswahl festlegen.
  • Bei einigen Beispielen legt der Computerprozessor eine Verteilung der Segmente über die Speichergeräte fest, indem er eine fortlaufende Anzahl an Speichergeräten gleich der Anzahl der Segmente der Datei aus einer sortierten Ringliste der Speichergeräte des verteilten Speichersystems auswählt. Zusätzlich oder alternativ kann der Computerprozessor eine andere fortlaufende Anzahl an Speichergeräten aus der sortierten Ringliste gleich der Anzahl der Segmente der Datei auswählen, wenn die ausgewählte Speichergeräte gemeinsam nicht in der Lage sind, den Zugriff auf die Datei aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten in einem inaktiven Status befinden.
  • Bei einigen Implementierungen bestimmt der Computerprozessor die sortierte Ringliste der Speichergeräte des verteilten Speichersystems, wobei die nebeneinanderliegenden Speichergeräte in der sortierten Ringliste unterschiedlichen Wartungseinheiten zugeordnet sind. Zusätzlich oder alternativ kann eine Schwellenanzahl fortlaufender Speichergeräte in der sortierten Ringliste jeweils unterschiedlichen Wartungseinheiten zugeordnet werden. Zusätzlich oder alternativ kann sich eine Schwellenanzahl fortlaufender Speichergeräte in der sortierten Ringliste an jeweils unterschiedlichen geographischen Standorten befinden.
  • Bei einigen Beispielen bestimmt der Computerprozessor eine Wartungshierarchie der Wartungseinheiten und bildet jede Wartungseinheit auf mindestens ein Speichergerät ab. Die Wartungshierarchie beinhaltet Wartungsebenen, und jede Wartungsebene beinhaltet eine oder mehrere Wartungseinheiten. Zusätzlich oder alternativ kann jede Wartungseinheit Speichergeräte beinhalten, die von einer einzigen Stromverteilereineit oder einer einzigen Stromschieneleitung versorgt werden.
  • Bei einigen Implementierungen unterteilt der Computerprozessor die erhaltene Datei in Streifen, wobei jede Datei einen Replikationscode und/oder einen Fehlerkorrekturcode enthält. Wenn die Datei einen Replikationscode enthält, repliziert der Computerprozessor mindestens einen Streifen als Replikationssegmente. Wenn die Datei einen Fehlerkorrekturcode enthält, unterteilt der Computerprozessor mindesens einen Streifen in Datensegmente und Codesegmente. Zusätzlich oder alternativ kann der Computerprozessor Segmente über die Speichergeräte anders replizieren als die Verteilung der Datensegmente und der Codesegmente über die Speichergeräte.
  • Die Details einer oder mehrerer Implementierungen der Offenbarung sind in den begleitenden Zeichnungen und der folgenden Beschreibungen dargelegt. Weitere Aspekte, Merkmale und Vorteile sind aus der Beschreibung und den Zeichnungen sowie aus den Ansprü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 Speicherhosts, die von einem Verwalter verwaltet werden.
  • 1C ist eine schematische Ansicht einer exemplarischen Zelle eines verteilten Speichersystems.
  • 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 Datensegmente und Codesegmente unterteilt ist.
  • 4A4C sind schematische Ansichten einer exemplarischen Wartungshierarchie.
  • 5A ist ein Flussdiagramm einer exemplarischen Anordnung von Operationen für die zufällige Auswahl einer Gruppe von Speicherressourcen.
  • 5B ist eine schematische Ansicht einer exemplarischen zufälligen Auswahl von Speichergeräten.
  • 6A ist ein Flussdiagramm einer beispielhaften Anordnung von Operationen für die zufällige Auswahl einer Gruppe von Speicherressourcen und eine anschließende zufällige Aktualisierung der Speichergeräte in der Gruppe.
  • 6B ist eine schematische Ansicht einer exemplarischen zufälligen Auswahl an Speichergeräten.
  • 7A ist ein Flussdiagramm für eine exemplarische Anordnung von Operationen für die Auswahl einer Gruppe an Speicherressourcen aus einer Ringliste.
  • 7B ist eine schematische Ansicht einer exemplarischen Auswahl an Speichergeräten aus einer sortierten Liste.
  • 8 ist eine schematische Ansicht einer exemplarischen Anordnung von Operationen für die Verteilung von Daten in einem Speichersystem.
  • Gleiche Bezugszeichen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Speichersysteme beinhalten mehrere Redundanzschichten, in denen Daten repliziert und in mehreren Rechenzentren repliziert werden. Rechenzentren beinhalten Computersysteme und ihre zugehörigen Komponenten, wie beispielsweise Telekommunikations- und Speichersysteme 100 (1A1C). 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). Daten können sich an verschiedenen geographischen Standorten befinden (z. B. in unterschiedlichen Städten, in unterschiedlichen Ländern und auf unterschiedlichen Kontinenten). Bei einigen Beispielen bedingen die Rechenzentren oder ein Teil davon: Wartung (z. B. aufgrund eines Stromausfall oder der Trennung eines Teils des Speichersystems für den Austausch von Teilen, oder aufgrund eines Stromausfalls, oder einer Kombination daraus). Die in diesen Rechenzentren gespeicherten Daten stehen den Benutzern während des Wartungszeitraums möglicherweise nicht zur Verfügung, sodass der Betrieb des Benutzers behindert oder unterbrochen wird. Aus diesem Grund ist es wünschenswert, ein verteiltes Speichersystem 100 bereitzustellen, in dem ein Benutzer gespeicherte Daten finden kann, auch wenn das Speichersystem 100 oder Teile davon gerade einer Wartung unterzogen werden.
  • Unter Bezugnahme auf 1A1C, beinhaltet bei einigen Implementierungen ein verteiltes Speichersystem 100 lose gekoppelte Speicher-Hosts 110, 110a–n (z. B. Computer oder Server), die jeweils eine Rechenressource 112 haben (z. B. einen oder mehrere Prozessoren oder zentrale Verarbeitungseinheiten (CPUs)), die mit Speicherressourcen 114 kommunizieren (z. B. Speicher, Flash-Speicher, DRAM (Dynamic Random Access Memory, Speicher mit dynamischem wahlfreiem Zugriff), PCM (Phase Change Memory) und/oder Datenträger), die für das Caching von Daten verwendet 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 Speicher-Hosts 110 über ein Netzwerk 130 (z. B. über RPC) kommunizieren.
  • Bei 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 Speicher-Hosts 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” bezieht sich auf das Verfahren, nach dem ein Großteil der angeforderten Verarbeitung auf den Speicher-Hosts 110 auf der Hardware erfolgen kann, statt durch die Software, die auf den CPUs 112 der Speicher-Hosts 110 ausgeführt wird. Statt einen Prozessor 112 eines Speicher-Hosts 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 auf die Speicherressoure 114 zugreifen über einen Netzwerk-Schnittstellencontroller (NIC) 116 des Speicher-Hosts 110. 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 unterstützt einen relativ hohen Durchsatz und eine niedrige Latenz, weil die Clients 120 auf die Speicherressourcen 114 zugreifen können, ohne mit den Rechenressourcen 112 der Speicher-Hosts 110 zusammenarbeiten zu müssen. 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 benutzen, unabhängig davon, ob es übrige CPU-Zyklen auf diesem Speicher-Host 110 gibt; darüber hinaus kann, weil einseitige Operationen nicht um feste Server-CPU 112 Ressourcen konkurrieren, ein einseitiges System Cache-Anforderungen 122 mit einer sehr vorhersehbaren, geringen Latenz bedienen, selbst wenn Speicher-Hosts 110 mit einer hohen CPU-Nutzung laufen. Das einseitige verteilte Speichersystem 100 gestattet somit eine höhere Nutzung von Cluster-Speicher 114 und CPU-Ressourcen 112, als herkömmliche zweiseitige Systeme, während es eine vorhersehbare, geringe Latenz bietet.
  • Bei 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 ein Transaktions-API (Application Programming Interface) 350 beinhalten (z. B. eine einseitige transaktionale System-Client-Bibliothek), das verantwortlich ist für den Zugriff auf die zugrundeliegenden Daten, z. B. per RPC oder einseitige 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 Speicher-Hosts 110, die Verarbeitung von Fehlern bei Maschinenausfällen usw. Der Datenspeicherungs-Abschnitt 106 kann die lose gekoppelten Speicher-Hosts 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. Ein Netzwerkschnittstellen-Controller 116 (auch als Netzwerkkarte, Netzwerkadapter oder LAN-Adapter bezeichnet) kann eine Computerhardware-Komponente sein, die eine entsprechende Ressource 112 mit dem Netzwerk 130 verbindet. Sowohl die Speicher-Hosts 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 Speicher-Hosts 110 ausgeführt wird, registriert eine Menge entfernter Speicherbereiche mit Direktzugriff 115a–n des Speichers 114 bei 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 Speicher-Hosts 110 erzeugt einen Client-Schlüssel 321 für jeden registrierten Speicherbereich 115a–n.
  • Die einseitigen Operationen, die von den Netzwerkschnittstellen-Controllern ausgeführt werden, 116 können auf einfache Leseoperationen, Schreiboperationen und Vergleich-und-Austausch-Operationen beschränkt werden, die möglicherweise nicht alle hochentwickelt genug sind, um als einfacher Ersatz für die von einem traditionellen Cach-Server-Job implementierte Software-Logik zu dienen, um Cache-Anforderungen auszuführen und Cache-Strategien zu verwalten. Das Transaktions-API 350 übersetzt Befehle, wie beispielsweise zum Suchen oder Einfügen von Daten, in Folgen grundlegender Operationen des Netzwerkschnittstellen-Controllers. Das Transaktions-API 350 arbeitet mit den Datensteuerungs- und Datenspeicherungs-Abschnitten 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. Nachdem die Verbindungen eingerichtet sind, können Client-Prozesse 128 auf den registrierten Speicher 114 über Engines in der Hardware des Netzwerkschnittstellen-Controllers 116 zugreifen, ohne dass dafür Software auf den lokalen CPUs 112 der entsprechenden Speicher-Hosts 110 beteiligt sein muss.
  • Unter Bezugnahme auf 1B und 1C beinhaltet das verteilte Speichersystem 100 bei einigen Implementierungen mehrere Zellen 200, und jede Zelle 200 beinhaltet Speicher-Hosts 110 und einen Verwalter 210, der mit den Speicher-Hosts 110 kommuniziert. Der Verwalter 210 (z. B. Prozess) kann auf einem rechnenden Prozessor 202 ausgeführt werden (z. B. auf einem Server mit nicht flüchtigem Speicher 204), der an das Netzwerk 130 angeschlossen ist, und die Datenspeicherung (z. B. Verwaltung eines auf den Speicher-Hosts 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 Speicher-Hosts 110 nachverfolgen. Redundante Verwalter 210 sind möglich. Bei einigen Implementierungen verfolgen der/die Verwalter 210 das Striping von Daten 312 über mehrere Speicher-Hosts 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 Speicher-Hosts 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.
  • Bei einigen Implementierungen bildet das Transaktions-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 das Transaktions-API 350 den Speicherort bestimmter Daten 312 auf einem/mehreren Speicher-Host(s) 110 finden und einen Schlüssel 302 erhalten, der Zugriff auf die Daten 312 ermöglicht. Das Transaktions-API 350 kommuniziert direkt mit den entsprechenden Speicher-Hosts 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 Speicher-Host 110 nicht in Betrieb ist, oder die Daten 312 auf einen anderen Speicher-Host 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 bei einigen Implementierungen 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.
  • Unter Bezugnahme auf 3A und 3B können Daten 312 eine oder mehrere Dateien 310 sein, wobei jede Datei 310 ein spezifisches Replikationsniveau 311 und/oder einen Fehlerkorrekturcode 313 hat. Der Verwalter 210 kann jede Datei 310 in eine Sammlung von Streifen 320a–n unterteilen, wobei jeder Streifen 320a–n repliziert oder unabhängig von den restlichen Streifen 320a–n codiert wird. Für eine replizierte Datei 310 ist jeder Streifen 320a–n ein einziges logisches Segment, den der Verwalter 210 als Streifenreplik 330nk repliziert und auf mehreren Speicherressourcen 114 speichert. In diesem Szenario wird eine Streifen-Replik 330nk auch als Segment 330nk bezeichnet. Für eine codierte Datei 310 besteht jeder Streifen 320a–n aus mehreren Datensegmenten 330ndk und Codesegmenten 330ncm, die der Verwalter 210 auf mehreren Speicherressourcen 114 ablegt, wobei die Sammlung der Datensegmente 330ndk und Codesegmente 330ncm ein einzelnes Codewort bildet. Ganz allgemein kann der Verwalter 210 jeden Streifen 320a–n auf Speicherressourcen 114 platzieren, unabhängig davon, wie die anderen Streifen 320a–n in der Datei 310 auf Speicherressourcen 114 platziert sind. Der Fehlerkorrekturcode 313 fügt der Datei redundante Daten oder Parity-Daten hinzu, sodass die Datei 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. Fehlerkorrekturcode wird verwendet, um die Datenintegrität in Speichergeräten aufrechtzuerhalten, um Daten für die Leistung (Latenz) zu rekonstruieren, oder um Maschinen schneller zu leeren.
  • Unter erneuter Bezugnahme auf 2 beinhalten bei einigen Implementierungen die vom Verwalter 210 gespeicherten Dateideskriptoren 3001–n Metadaten 212, wie beispielsweise die Datei-Map 214, die, falls zutreffend, die Streifen 320a–n auf Streifen-Replikas 320n k oder Datensegmente 320nd k und Codesegmente 320nc m zuweist, die auf den Speicher-Hosts 110 gespeichert sind. Um eine Datei 310 zu öffnen, sendet ein Client 120 eine Anforderung 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 ein Segment 320n k, 320nd k ist; 320nc m, auf einem Speicher-Host 110, und der zum RDMA-Lesen dieses Segments 320n k, 320nd k 320nc m, 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 Speicher-Hosts 110 verwalten, 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 Speicher-Hosts 110 in der Zelle 200 direkt abfragt, und/oder indem er einen Client 120 abfragt, um eine Latenz-Statistik aus Perspektive 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 Segmente 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. Bei einigen Beispielsweise repliziert der Prozessor 202 die Segmente 330n k über die Speichergeräte 114 anders als die Verteilung der Datensegmente 330nd k und der Codesegmente 330ncm über die Speichergeräte 114. Der Verwalter 210 kann eine Last-Map 216 der Last und Agilität des Speicher-Hosts verwalten. Bei einigen Implementierungen weist der Verwalter 210 ein Segment 330 zu, indem er eine Liste von Kandidaten-Speicher-Hosts 110 erzeugt und eine Anforderung zur Zuordnung eines Segments an jeden der Kandidaten-Speicher-Hosts 110 sendet. Wenn der Speicher-Host 110 überladen ist oder keinen verfügbaren Speicherplatz hat, kann der Speicher-Host 110 die Anfrage 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 den Datei-Scan verwenden, um die Integrität der Metadaten 212 zu überprüfen, die auszuführende Arbeit zu bestimmen und/oder die Statistik 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 4A4C kann der Verwalter 210 eine Wartungshierarchie 400 des verteilten Speichersystems 100 bestimmen, um die Ebenen 401 zu identifzieren (z. B. Ebenen 1–5, 401a-401e), auf denen eine Wartung stattfinden kann, ohne den Zugriff des Benutzers auf gespeicherte Daten zu beeinträchtigen. Bei der Wartung kann es sich um eine Wartung des Stromversorgungssystems, eine Wartung des Kühlsystems (4C), eine Wartung des Netzwerks, die Aktualisierung oder den Austausch von Teilen oder andere Wartungen oder Stromabschaltungen handeln, die sich auf das verteilte Speichersystem 100 auswirken.
  • Die Wartungshierarchie 400 identifiziert die Ebenen 401 (z. B. Ebenen 1–5, 401a401e) der Wartungseinheiten 402, wobei sich jede Wartungseinheit 402 in einem aktiven oder in einem inaktiven Status befinden kann. Jedes Speichergerät 114 des verteilten Speichersystems 100 ist einer oder mehreren Wartungseinheiten 402 zugeordnet. Darüber hinaus bildet der Prozessor 202 die Zuordnung der Speichergeräte 114 auf Wartungseinheiten 402 und ihre Komponenten 410, 420, 430, 440, 114 ab. 4A zeigt eine strenge Hierarchie 400a, wobei jede Komponente 410, 420, 430, 440, 114 von einer anderen Komponente 410, 420, 430, 440, 114 abhängig ist. 4B dagegen zeigt eine nicht strenge Hierarchie 400b, wobei eine Komponente 410, 420, 430, 440, 114 mehr als einen Eingangs-Feed hat. In einigen Beispielen speichert der Prozessor 202 die Wartungshierarchie 400 im nicht flüchtigen Speicher 204 des Prozessors 202. So wird Speicherressource 114a beispielsweise einem Rack 440a zugewiesen, das einer Schienenleitung 430a zugewiesen ist, die wiederum einem Leistungsmodul-Verteilzentrum 420a zugewiesen ist, das wiederum einem Kraftwerk 410a zugewiesen ist. Der Prozessor 202 bestimmt basierend auf den Zuweisungen der Komponenten 410, 420, 430, 440, 114, welche Speichergeräte 114 inaktiv sind, wenn eine Komponente 410, 420, 430, 440, 114 einer Wartung unterzogen wird. Nachdem das System 100 die Wartungseinheiten 402 den Speicherressourcen 114 zugewiesen hat, bestimmt das System 100 eine höchste Ebene 401 (z. B. Ebenen 1–5), auf der eine Wartung ausgeführt werden kann, während die Datenverfügbarkeit beibehalten wird.
  • Eine Wartungseinheit 402 beinhaltet eine Komponente 410, 420, 430, 440, 114, die einer Wartung unterzogen wird, und alle von dieser Komponente abhängigen Komponenten 410,420, 430, 440, 114. Wenn also eine Komponente 410, 420, 430, 440, 114 einer Wartung unterzogen wird, ist diese Komponente 410, 420, 430, 440, 114 inaktiv, und jede Komponente 410, 420, 430, 440, 114 in der Wartungseinheit 402 der Komponente 410, 420, 430, 440, 114 ist ebenfalls inaktiv. Wie in 4, Komponenten der Ebene 1 401a können die Kraftwerke 410 sein, die Strom für die Komponenten der Ebenen 2 bis 5 401b, 401c, 401d, 401e bereitstellen. Komponenten der Ebene 2 401b Komponenten können die Strommodul-Verteilzentren 420a420n beinhalten; Komponenten der Ebene 3 401c können die Schienenleitungen 430a–n beinhalten; Komponenten der Ebene 4 401d können die Racks 440a–n beinhalten; und Komponenten der Ebene 5 401e können die Speicherressource 114a–n beinhalten. Es kann auch eine weitere Komponentenverteilung verfügbar sein. Wenn das Kraftwerk 410 einer Wartung unterzogen wird, sind eine Wartungseinheit der Ebene 1 402 einschließlich aller Strommodul-Verteilungszentren 420, Schienenleitungen 430, Racks 440 und Speichergeräte 114, die vom Kraftwerk 410 abhängig sind, inaktiv, und deshalb kann ein Benutzer nicht auf Daten zugreifen, die sich in der Wartungseinheit auf Ebene 1 befinden. Wenn ein Strommodul-Verteilzentrum 420a einer Wartung unterzogen wird, sind eine Wartungseinheit der Ebene 2 402a, die das Strommodul-Verteilzentrum 420a beinhaltet, sowie alle Komponenten der Ebenen 3 bis 5, die vom Strommodul-Verteilzentrum 420a abhängig sind, in einem inaktiven Status. Wenn eine Schienenleitung 430a einer Wartung unterzogen wird, sind eine Wartungseinheit der Ebene 3 402b, die Schienenleitung 430a beinhaltet, und alle Komponenten in den Ebenen 4 und 5, die von der Schienenleitung 430a abhängig sind, in einem inaktiven Status. Wenn ein Rack 440a einer Wartung unterzogen wird, sind eine Wartungseinheit der Ebene 4 402, die das Rack 440a beinhaltet, und Speichergeräte 114, die von dem Rack 440a abhängig sind, in einem inaktiven Status. Und wenn schließlich ein Speichergerät 114a einer Wartung unterzogen wird, beinhaltet eine Wartungseinheit der Ebene 5 402d das Speichergerät 114, und dieses Speichergerät ist inaktiv.
  • Bei einigen Beispielen, wie in 4B gezeigt, kann eine Komponente 410, 420, 430, 440, 114 einer nicht strengen Hierarchie 400b duale Versorgungen haben, d. h. die Komponente 410, 420, 430, 440, 114 ist von zwei oder mehr anderen Komponenten 410, 420, 430, 440, 114 abhängig. Beispielsweise kann eine Schienenleitung 430n eine Versorgung von zwei Strommodulen 420 aufweisen, und/oder ein Rack 440 kann eine duale Versorgung von zwei Schienenleitungen 430 erhalten. Wie gezeigt, kann eine erste Wartungseinheit 402b zwei Racks 440a und 440n beinhalten, wobei das zweite Rack 440n zwei Versorgungen von zwei Schienenleitungen 430a, 430n hat. Aus diesem Grund ist das zweite Rack 440n Teil der zwei Wartungseinheiten 402ba und 402bb. Aus diesem Grund werden die höheren Ebenen 401 der Wartungshierarchie 400 gewartet, ohne den Verlust der unteren Ebenen 401 der Wartungshierarchie 400 zu verursachen. Dies bewirkt eine Redundanz im System, was eine Datenverfügbarkeit ermöglicht. Insbesondere kann das Strommodul-Verteilzentrum 420 gewartet werden, ohne dass eine der Schienenleitungen 430 verloren geht, die davon abhängig ist. Bei einigen Beispielen beinhalten die Racks 440 ein dual versorgtes Rack, das die Wartung der Schienenleitung 430 gestattet, ohne dass die Versorgung der dual versorgten Racks 440 verloren geht, die davon abhängig sind. Bei einigen Beispielen werden Wartungseinheiten 402, die gewartet werden können, ohne Ausfälle zu verursachen, ignoriert, wenn Segmente 330 verteilt werden, um eine Wartung zuzulassen; die ignorierten Wartungseinheiten 402 können jedoch einbezogen werden, wenn die Segmente 330 verteilt werden, weil ein ungeplanter Ausfall immer noch den Verlust der Segmente 330 verursachen kann.
  • Bei einigen Beispielen ist die Wartungshierarchie 400 eine Kühlhierarchie 400c (oder möglicherweise eine Kombination aus einer Stromversorgungshierarchie 400a, 400b) und einer Kühlhierarchie 400c. Die Kühlhierarchie 400c bildet ein Kühlgerät 442 auf die Racks 440 ab, die es kühlt. Wie gezeigt, kann ein Kühlgerät 442 ein oder mehrere Racks 440 kühlen. Der Prozessor 202 speichert die Zuordnung der Speichergeräte 114 zu den Kühlwartungseinheiten 402. Bei einigen Implementierungen berücksichtigt der Prozessor 202 alle möglichen Kombinationen der Wartung, die innerhalb des Speichersystems 100 auftreten können, um eine Hierarchie 400 zu bestimmen, oder eine Kombination aus Hierarchien 400a, 400b, 400c.
  • Wenn eine Komponente 410, 420, 430, 440, 114 im Speichersystem 100 gewartet wird, sind diese Komponenten 410, 420, 430, 440, 114, sowie alle Komponenten 410, 420, 430, 440, 114, die dieser Komponente 410, 420, 430, 440, 114 zugewiesen sind oder davon abhängig sind, deshalb in einem inaktiven Status. Eine Komponente 410, 420, 430, 440, 114 in einem inaktiven Status steht dem Benutzer zum Zugriff nicht zur Verfügung, während eine Komponente 410, 420, 430, 440, 114 in einem aktiven Status dem Benutzer zum Zugriff zur Verfügung steht, sodass ein Benutzer auf Daten zugreifen kann, die auf dieser Komponente 410, 420, 430, 440, 114 oder auf einem Speichergerät 114, das der Komponente 410, 420, 430, 440, 114 zugewiesen ist, gespeichert sind. Wie oben erwähnt, kann ein Benutzer während des inaktiven Status nicht auf die Speichergeräte 114 zugreifen, die den Wartungseinheiten 402 zugeordnet sind, die einer Wartung unterzogen werden; deshalb kann der Benutzer nicht auf die Dateien zugreifen (z. B. Segmente 330, die Streifen-Replikas 330n k und Datensegmente 330nd k und Codesegmente 330nc m beinhalten).
  • Bei einigen Implementierungen schränkt der Prozessor 202 eine Anzahl von Segmenten 330 ein, die auf Speichergeräte 114 einer Wartungseinheit 402 verteilt werden, z. B. basierend auf der Zuweisung der Komponenten 410, 420, 430, 440, 114. Wenn also eine Wartungseinheit der Ebene 1 402 inaktiv ist, behält der Prozessor 202 den Zugriff auf die Datei 310 (oder Streifen 320), obwohl einige Segmente 330 möglicherweise nicht zur Verfügung stehen. Bei einigen Beispielen bestimmt der Prozessor 202 für jede Datei 310 (oder jeden Streifen 320) eine maximale Anzahl an Segmenten 330, die innerhalb eines Speichergeräts 114 innerhalb einer einzigen Wartungseinheit 402 platziert werden kann, sodass, wenn eine Wartungseinheit 402, die dem Speichergerät 114 zugeordnet ist, das Segmente 330 für eine Datei 310 speichert, einer Wartung unterzogen werden muss, der Prozessor 202 weiterhin die Datei 310 abrufen kann. Die maximale Anzahl an Segmenten 330 stellt sicher, dass der Prozessor 202 in der Lage ist, die Datei 310 zu rekonstruieren, obwohl einige Segmente 330 möglicherweise nicht zur Verfügung stehen. Bei einigen Beispielen wird die maximale Anzahl an Segmenten 330 auf einen kleineren Schwellenwert gesetzt, um Systemfehler zu kompensieren, während es weiterhin möglich ist, die Datei 310 aus den Segmenten 330 zu rekonstruieren. Wenn der Prozessor 202 Segmente 330 auf den Speichergeräten 114 ablegt, stellt der Prozessor 202 sicher, dass innerhalb eines Streifens 320 nicht mehr als die maximale Anzahl an Segmenten 330 inaktiv ist, wenn eine einzelne Wartungseinheit 402 einer Wartung unterzogen wird.
  • Unter Bezugnahme auf 57B bestimmt bei einigen Implementierungen der Prozessor 202 eine Verteilung der Segmente 330 über die Speichergeräte 114. Bei einigen Beispielen nimmt der Prozessor 202 eine erste zufällige Auswahl 150 von Speichergeräten 114 aus einem Pool verfügbarer Speichergeräte 140 vor, um die Segmente 330 einer Datei 310 zu speichern. Der Prozessor 202 wählt eine Anzahl an Speichergeräten 114 aus (z. B. ausgewähltes Speichergerät 114S), die gleich der Anzahl der Segmente 330 in einem Streifen 320 ist. Anschließend stellt der Prozessor 202 fest, ob die Auswahl 150 der ausgewählten Speichergeräte 114S in der Lage ist, den Zugriff auf die Datei 310 aufrechtzuerhalten (d. h. die Segmente 330 der Datei 310 stehen zur Verfügung), falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten 402 in einem inaktiven Status befinden. Die zufällige Auswahl 150 hat das Ziel, eine Rekonstruktion des Streifens 320 zu gestatten, wenn eine Wartung an einer der Wartungskomponenten 410, 420, 430, 440, 114 ausgeführt wird.
  • Unter Bezugnahme auf 5A und 5B bestimmt bei einigen Beispielen, wenn der Prozessor 202 feststellt, dass die erste zufällige Auswahl 150a ausgewählter Speichergeräte 114S nicht in der Lage ist, den Zugriff auf die Datei 310 aufrechtzuerhalten, wenn eine oder mehrere (oder ein Schwellenwert von) Wartungseinheiten 402 in einem inaktiven Status sind, der Prozessor 202 eine zweite zufällige Auswahl 150b ausgewählter Speichergeräte 114S, die mit der Anzahl der Segmente 330 der Datei 310 übereinstimmt. Anschließend stellt der Prozessor 202 fest, ob die zweite zufällige Auswahl 150b ausgewählter Speichergeräte 114S in der Lage ist, den Zugriff auf die Datei 310 aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten 402 in einem inaktiven Status befinden. Stellt der Prozessor 202 fest, dass die zweite zufällige Auswahl 150b nicht in der Lage ist, den Zugriff auf die Datei 310 aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten 402 in einem inaktiven Status befinden, setzt der Prozessor 202 die zufällige Auswahl 150n ausgewählter Speichergeräte 1145 fort, bis der Prozessor 202 eine zufällige Auswahl 150n ausgewählter Speichergeräte 114S identifiziert, die in der Lage ist, den Zugriff auf die Datei 310 aufrechtzu erhalten.
  • Unter Bezugnahme auf 6A und 6B gilt bei einigen Implementierungen, wenn der Prozessor 202 feststellt, dass die erste zufällige 150a Auswahl der ausgewählten Speichergeräte 114S nicht in der Lage ist, den Zugriff auf die Datei 310 aufrechtzuerhalten, wenn eine oder mehrere (oder eine Schwellenanzahl an) Wartungseinheiten 402 in einem inaktiven Status sind, dass der Prozessor 202 die erste zufällige Auswahl 150a ausgewählter Speichergeräte 114S abändert, indem er ein oder mehrere zufällig ausgewählte Speichergeräte 114S hinnzufügt und eine entsprechende Anzahl anderer Speichergeräte 114S entfernt. Der Prozessor 202 bestimmt dann, ob die aktualisierte erste zufällige Auswahl 150a in der Lage ist, den Zugriff auf die Datei 310 aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl an) Wartungseinheiten 402 in einem inaktiven Status befinden. Wenn der Prozessor 202 feststellt, dass die aktualisierte erste zufällige Auswahl 150a nicht in der Lage ist, den Zugriff auf den Streifen 320 aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl an) Wartungseinheiten 402 in einem inaktiven Status befinden, aktualisiert der Prozessor 202 die Auswahl 150a der ausgewählten Speichergeräte 114S, indem er ein oder mehrere zufällig ausgewählte Speichergeräte 114S hinzufügt und entfernt. Der Prozessor 202 aktualisiert die zufällige Auswahl 150a an Speichergeräten 114 weiter, bis der Prozessor 202 feststellt, dass die ausgewählten Speichergeräte 114S in der Lage sind, den Zugriff auf den Streifen 320 während der Wartung des verteilten Speichersystems 100 aufrechtzuerhalten. Nachdem der Prozessor 202 die Feststellung gemacht hat, geht der Prozessor 202 zum nächsten Streifen 320 (oder zur nächsten Datei 310) weiter, um eine Verteilung des nächsten Streifens 320 zu bestimmen.
  • Bei einigen Implementierungen bestimmt der Prozessor 202 die zufällige Auswahl 150 ausgewählter Speichergeräte 114S unter Verwendung einer Wahrscheinlichkeitsauswahl, einer einfachen Stichprobe, einer einer Gruppenauswahl oder einer Klumpenauswahl. Bei der Wahrscheinlichkeitsauswahl hat jede Einheit in einer Populatoin eine Chance größer 0, in der Stichprobe ausgewählt zu werden, und diese Wahrscheinlichkeit kann präzise bestimmt werden. Eine Wahrscheinlichkeitsauswahl bietet eine unverzerrte Schätzung der Populationssummen, indem Stichprobeneinheiten im Hinblick auf ihre Wahrscheinlichkeitsauswahl gewichtet werden. Bei einer einfachen Stichprobe (SRS, Simple Random Sampling) einer bestimmten Anzahl an Stichproben erhalten alle Untermengen eines Stichprobenrahmens eine gleiche Wahrscheinlichkeit. Darüber hinaus hat jedes vorgegebene Paar an Komponenten dieselbe Chance einer Auswahl wie jedes andere solches Paar (und dasselbe gilt für Tripel, Quadrupel usw.). SRS minimiert die Verzerrung und vereinfacht die Analyse der Ergebnisse. Die Varianz zwischen den Ergebnissen innerhalb der Stichprobe ist ein guter Hinweis auf die Varianz in der Population, womit es einfacher wird, die Genauigkeit der Ergebnisse zu schätzen. Bei einer Gruppenauswahl beinhaltet die Population eine Anzahl unterschiedlicher Kategorien, wobei der Rahmen nach diesen Kategorien in separaten „Schichten” organisiert ist. Jede Schicht wird als unabhängige Unterpopulation betrachtet, von der einzelne Elemente zufällig ausgewählt werden. Gruppenstichproben haben mehrere Vorteile gegenüber anderen Stichprobenverfahren. Gruppenstichproben konzentrieren sich auf wichtige Unterpopulationen und ignorieren irrelevante, sie gestatten die Verwendung unterschiedlicher Stichprobentechniken für unterschiedliche Unterpopulationen, verbessern die Genauigkeit und Effizienz der Schätzung und ermöglichen einen besseren Ausgleich der statistischen Leistung bei Tests von Differenzen zwischen Schichten, indem gleiche Anzahlen an Schichten als Stichproben betrachtet werden, deren Größe stark variiert. Eine Klumpenstichprobe gestattet die Auswahl von Befragten in Klumpen, die nach der Geographie oder nach Zeitintervallen gruppiert sind. Für die Klumpenstichprobe ist kein Stichprobenrahmen erforderlich, der alle Elemente der Zielpopulation auflistet. Stattdessen können die Klumpen aus einem Rahmen auf Klumpenebene ausgewählt werden, mit einem Rahmen auf Elementebene, der nur für die ausgewählten Klumpen erstellt wurde.
  • Unter Bezugnahme auf 7A und 7B bestimmt bei einigen Implementierungen der Prozessor 202 eine Anzahl von Segmenten 330 in einem Streifen 320. Anschließend wählt der Prozessor 220 eine ausgewählte Liste 162 mit einer fortlaufenden Anzahl an Speichergeräten 114a–n gleich der Anzahl an Segmenten 330 der Datei aus einer sortierten Ringliste 160 mit Speichergeräten 114 des verteilten Speichersystems 100 aus, wobei die sortierte Ringliste 160 beim ersten Speichergerät 114a beginnt. Die Liste 160 kann im nicht flüchtigen Speicher 204 des Prozessors 202 gespeichert werden. Anschließend stellt der Prozessor 202 fest, ob die ausgewählten Speichergeräte 114a–n aus der ausgewählten Liste 162 gemeinsam nicht in der Lage sind, den Zugriff auf die Datei 310 (d. h. Streifen 320) aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten 402 in einem inaktiven Status befinden. Stellt der Prozessor 202 fest, dass die ausgewählten Speichergeräte 114a–n gemeinsam nicht in der Lage sind, den Zugriff auf die Datei 310 (oder den Streifen 320) aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl an) Wartungseinheiten 402 in einen inaktiven Status befinden, wählt der Prozessor 202 eine andere ausgewählte Liste 162 aus, die eine fortlaufende Anzahl an Speichergeräten 114a–n aus der sortierten Ringliste 160 enthält, die gleich der Anzahl der Segmente 330 des Streifens 320 oder der Datei 310 ist. Bei einigen Beispielen wechselt der Prozessor 202 auf ein zweites Speichergerät 114(n + 1) nach dem ersten Speichergerät 114n in der sortierten Ringliste 160, wenn der Prozessor 202 feststellt, dass die Speichergeräte 114a–n der ausgewählten Liste 162 gemeinsam nicht in der Lage sind, den Zugriff auf die Datei 310 (oder Streifen 320) aufrechtzuerhalten. Bei anderen Beispielen bewegt sich der Prozessor 202 um eine zuvor festgelegte Anzahl an Positionen in der sortierten Ringliste 160 nach unten. Bei einigen Implementierungen bestimmt der Prozessor 202 die sortierte Ringliste 160 der Speichergeräte 114 des Speichersystems 100, wobei die benachbarten Speichergeräte 114 oder eine Schwellenanzahl fortlaufender Speichergeräte 114 auf der sortierten Ringliste unterschiedlichen Wartungseinheiten 402 zugeordnet sind. Zusätzlich oder alternativ bestimmt der Prozessor 202 die sortierte Ringliste 160 der Speichergeräte 114 des Speichersystems 100, wobei benachbarte Speichergeräte 114 oder eine Schwellenanzahl fortlaufender Speichergeräte 114 in der sortierten Ringliste 160 sich an jeweils unterschiedlichen geographischen Standorten befinden. Bei einigen Beispielen sind die Speichergeräte 114 der sortierten Ringliste 160 so angeordnet, dass unterschiedliche Wartungseinheiten 402 eine sequentielle Verteilung der Daten über die sortierte Liste 160 veranlassen. Wie beispielsweise in 4A dargestellt, die Liste darf keine sequentiellen Speichergeräte 114 enthalten, die von derselben Schienenleitung 430a abhängig sind. Stattdessen stammen zwei sequentielle Speichergeräte 114 auf der Liste 160 von unterschiedlichen Wartungseinheiten 402, um sicherzustellen, dass der Datenzugriff aufrechterhalten wird.
  • Unter Bezugnahme auf 8 beinhaltet bei einigen Implementierungen ein Verfahren 800, Daten in einem verteilten Speichersystem zu verteilen, das Empfangen 802 einer Datei 310 im nicht flüchtigen Speicher 204 und das Unterteilen 804 der empfangenen Datei 310 in Segmente 330, wozu ein Computerprozessor 202 verwendet wird, der mit dem nicht flüchtigen Speicher 204 kommuniziert. Das Verfahren 800 beinhaltet auch die Verteilung von Segmenten 330 auf Speichergeräte 114 des verteilten Speichersystems 100 basierend auf einer Wartungshierarchie 400 des verteilten Speichersystems 100. Die Wartungshierarchie 400 beinhaltet Wartungseinheiten 402, die jeweils aktive und inaktive Status haben. Darüber hinaus ist jedes Speichergerät 114 einer Wartungseinheit 402 zugeordnet. Die Segmente 330 sind über mehrere Wartungseinheiten 402 verteilt, um den Zugriff auf die Datei 310 (oder Streifen 320) aufrechtzuerhalten, falls sich eine Wartungseinheit 402 in einem inaktiven Status befindet. Bei einigen Beispielen beinhaltet das Verfahren 800 die Einschränkung der Anzahl an Segmenten 330, die über Speichergeräte 114 einer Wartungseinheit 402 verteilt werden.
  • Bei einigen Implementierungen beinhaltet das Verfahren 800 weiterhin die Bestimmung einer Verteilung der Segmente 330 über die Speichergeräte 114, indem eine erste zufällige Auswahl 150a ausgewählter Speichergeräte 114S bestimmt wird, die mit einer Anzahl an Segmenten 330 der Datei 310 übereinstimmt, sowie die Feststellung, ob die Auswahl 150a ausgewählter Speichergeräte 114S in der Lage ist, den Zugriff auf die Datei 310 (oder Streifen 330) aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl an) Wartungseinheiten 402 in einem inaktiven Status befinden. Wenn bei einigen Beispielen die erste zufällige Auswahl 150a ausgewählter Speichergeräte 114S nicht in der Lage ist, den Zugriff auf die Datei 310 (oder Streifen 320) aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten 402 in einem inaktiven Status befinden, beinhaltet das Verfahren 800 weiterhin die Bestimmung einer zweiten zufälligen Auswahl 150b ausgewählter Speichergeräte 114S, die mit der Anzahl der Segmente 330 der Datei 310 (oder Streifen 320) übereinstimmt, oder die Abänderung der ersten zufälligen 150a Auswahl an Speichergeräten 114S, indem ein oder mehrere zufällig ausgewählte Speichergeräte 114 hinzugefügt und entfernt werden. Das Verfahren 800 kann weiterhin enthalten die Bestimmung einer zufälligen Auswahl 150 von Speichergeräten 114 unter Verwendung einer einfachen Stichprobe, einer Wahrscheinlichkeitsauswahl, einer Gruppenauswahl oder einer Klumpenauswahl (wie zuvor erklärt). Bei einigen Beispielen bestimmt das Verfahren 800 eine dritte, vierte, fünfte usw. zufällige Auswahl ausgewählter Speichergeräte 114S, bis die ausgewählte zufällige Auswahl 150 der Speichergeräte 114 in der Lage ist, den Zugriff auf die Datei 310 (oder Streifen 330) aufrechtzuerhalten, falls sich eine oder mehrere oder eine Schwellenanzahl von Wartungseinheiten 402 in einem inaktiven Status befinden.
  • Bei einigen Implementierungen beinhaltet das Verfahren 800 weiterhin die Bestimmung einer Verteilung der Segmente 330 über die Speichergeräte 114 durch die Auswahl einer Liste 162 mit einer fortlaufenden Anzahl an Speichergeräten 114a–n gleich einer Anzahl an Segmenten 330 der Datei 310 aus einer sortierten Ringliste 160 der Speichergeräte 114 des verteilten Speichersystems 100. Wenn die ausgewählten Speichergeräte 114 zusammen nicht in der Lage sind, den Zugriff auf die Datei 310 aufrechtzuerhalten, falls sich eine oder mehrere (oder eine Schwellenanzahl von) Wartungseinheiten 402 in einem inaktiven Status befinden, beinhaltet das Verfahren 800 weiterhin die Auswahl einer weiteren Liste 162, die eine fortlaufende Anzahl an Speichergeräten 114a–n aus der sortierten Ringliste 160 enthält, die gleich der Anzahl der Segmente 330 der Datei 310 (oder des Streifens 320) ist. Zusätzlich oder alternativ beinhaltet das Verfahren 800 weiterhin die Bestimmung der sortierten Ringliste 160 an Speichergeräten 114 des verteilten Speichersystems 100, wobei benachbarte Speichergeräte 114 in der sortierten Ringliste 160 unterschiedlichen Wartungseinheiten 402 zugeordnet sind. Bei einigen Beispielen ist eine Schwellenanzahl fortlaufender Speichergeräte 114 in einer sortierten Ringliste 160 jeweils unterschiedlichen Wartungseinheiten 402 zugeordnet befindet sich jeweils an unterschiedlichen geographischen Standorten.
  • Bei einigen Implementierungen beinhaltet das Verfahren 800 weiterhin die Bestimmung der Wartungshierarchie 400 der Wartungseinheiten 402 (z. B. unter Verwendung des Computerprozessors 202), wobei die Wartungshierarchie 400 Wartungsebenen 401 hat (z. B. Ebene 1–5, 401a401e), und jede Wartungsebene 401 eine oder mehrere Wartungseinheiten 402 beinhaltet. Das Verfahren 800 enthält auch eine Zuweisung jeder Wartungseinheit 402 auf mindestens ein Speichergerät 114. Jede Wartungseinheit 402 enthält Speichergeräte 114, die über eine einzelne Stromverteilungseinheit oder eine einzige Schienenleitung 430 versorgt werden.
  • Das Verfahren 800 kann weiterhin die Unterteilung der empfangenen Datei 310 in Streifen 320a–n beinhalten. Jede Datei 310 beinhaltet einen Replikationscode 311 oder einen Fehlerkorrekturcode 313. Wenn die Datei 310 einen Replikationscode 311 enthält, beinhaltet das Verfahren 800 die Replikation von mindestens einem Streifen 320a–n als Replikationssegmente 330. Wenn die Datei 310 einen Fehlerkorrekturcode 313 enthält, beinhaltet das Verfahren 800 die Unterteilung an mindestens einem Streifen 320a–n in Datensegmente 330nd k und Codesegmente 330nc m. Das Verfahren 800 kann auch die Verteilung von Replikationssegmenten 330 über die Speichergeräte 114 beinhalten, die sich unterscheidet von der Verteilung der Datensegmente 330ndk und der Codesegmente 330ncm über die Speichergeräte 114.
  • 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 oder 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, Software-Anwendungen oder Code) enthalten Maschinenbefehle für einen programmierbaren Prozessor und können in eine höhere verfahrens- und/oder objektorientierte Programmiersprache und/oder in eine Assembler-/Maschinensprache umgesetzt werden. Wie in diesem Dokument verwendet, bezeichnen die Begriffe „maschinenlesbares Medium” und „computerlesbares Medium” jedes Produkt eines Computerprogramms, jeden Apparat und/oder jedes Gerät (z. B. Magnetdatenträger, optische Datenträger, Speicher, programmierbare Logikgeräte (PLDs)), die verwendet werden, um Maschinenbefehle und/oder Daten für einen programmierbaren Prozessor bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinebefehle als maschinenlesbares Signal erhält. Der Begriff „maschinenlesbares Signal” bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenbefehle und/oder Daten bereitzustellen.
  • Implementierungen des Gegenstands und der funktionalen Operationen, die in dieser Spezifikation beschrieben sind, können in einem digitalen elektronsichen Schaltkreis implementiert werden, oder in Computer-Software, -Firmware oder -Hardware, einschließlich der in dieser Spezifikation offenbarten Strukturen und ihren strukturellen Äquivalenten oder in Kombinationen aus einem oder mehreren davon. 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 des datenverarbeitenden Apparats. 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”, „Rechengerät” und „Rechenprozessor” beinhalten alle Apparate, Geräte und Maschinen für die Verarbeitung von Daten, einschließlich unter Verwendung beispielsweise eines programmierbaren Prozessors, eines Computers oder mehrerer Prozessoren oder Computer. Der Apparat kann neben der Hardware auch einen Code enthalten, der eine Ausführungsumgebung für das betreffende Computerprogramm erzeugt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem oder eine Kombination aus einem oder mehreren davon darstellt. Das übertragene Signal ist ein künstlich generiertes Signal, z. B. ein maschinenerzeugtes elektrisches, optisches oder elektromagnetisches Signal, das generiert wird, um Informationen für die Übertragung an einen geeigenten Empfängerapparat zu codieren.
  • Ein Computerprogramm (auch als Applikation, Progamm, Software, Softwareanwendung, Skript oder Code bezeichnet) kann mit jeder Art Programmiersprache geschrieben sein, auch in kompilierten oder interpretierten Sprachen, und es kann in jeder Form bereitgestellt werden, unter anderem als eigenständiges Programm oder als Modul, Komponente, Subroutine oder andere Einheit, die für die Verwendung in einer Computerumgebung 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 Skripts, 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 Prozesse und logischen Abläufe, die in dieser Spezifikation beschrieben sind, können durch einen oder mehrere programmierbare Prozessoren ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen auszuführen, indem sie Eingabedaten verarbeiten und Ausgaben generieren. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen ausgeführt werden, und der Apparat kann als Sonderzweckschaltung implementiert werden, z. B. als FPGA (Field Programmable Gate Array) oder ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, beinhalten beispielsweise sowohl allgemeine und als auch spezielle Mikroprozessoren sowie einen oder mehrere Prozessoren jeglicher Arten von Digitalrechnern. 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 zum Speichern von Daten, z. B. Magnetdatenträger, magnetooptische Datenträger oder optische Datenträger, bzw. sind diese Massenspeichergeräte operativ mit dem Computer gekoppelt, damit dieser Daten von ihnen empfangen oder an sie übertragen kann. 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 Computerprogrammanweisungen und Daten geeignet sind, schließen alle Formen von nicht flüchtigen Speichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und Flash-Speichergeräte; Magnetdatenträger, z. B. interne Festplatten oder Wechseldatenträger, magnetooptische Datenträger und CD ROM- und DVD-ROM-Datenträger. 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 für den Computer bereitstellen kann. Es können auch andere Arten von Geräten verwendet werden, um eine Interaktion mit einem Benutzer zu ermöglichen; beispielsweise kann beliebiges Feedback für den Benutzer als beliebiges sensorisches Feedback bereitgestellt werden, z. B. als visuelles Feedback, akustisches Feedback oder taktiles Feedback; und Eingaben vom Benutzer können in jeder Form empfangen werden, unter anderem als akustische, sprachliche oder taktile Eingabe. Darüber hinaus kann ein Computer mit einem Benutzer interagieren, indem er Dokumente an ein Gerät sendet oder von diesem empfängt, das vom Benutzer verwendet wird; zum Beispiel durch das Senden von Webseiten an einen Webbrowser auf dem Client-Gerät des Benutzers in Reaktion auf Anforderungen, die vom Webbrowser empfangen wurden.
  • Ein oder mehrere Aspekte der Offenbarung können in einem Rechensystem implementiert werden, das eine Backend-Komponente enthält, z. B. als Datenserver, oder das eine Middleware-Komponente enthält, z. B. einen Anwendungsserver, oder das eine Frontend-Komponente enthält, z. B. einen Client-Computer mit einer graphischen Benutzeroberfläche, oder einen Webbrowser, über den ein Benutzer mit einer Implementierung des in dieser Spezifikation beschriebenen Gegenstands interagieren kann, oder eine Kopie einer oder mehrerer solcher Backend-, Middleware- oder Frontend-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 ein Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikations-netz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern 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). Daten, die auf dem Client-Gerät generiert werden (z. B. ein Ergebnis der Benutzerinteraktion) könen vom Client-Gerät auf dem Server empfangen werden.
  • Während diese Spezifikation viele Spezifika enthält, sollen diese nicht als Beschränkung des Umfangs der Offenbarung oder des Anspruchs verstanden werden, sondern vielmehr als Beschreibungen bestimmter Implementierungen der Offenbarung. Bestimmte Merkmale, die in dieser Spezifikation im Kontext separater Implementierungen beschrieben sind, können auch in Kombination in einer einzigen Implementierung implementert 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. Darüber hinaus können, obwohl Merkmale oben möglicherweise als in bestimmten Kombinationen einsetzbar beschrieben sind, und selbst wenn sie anfänglich als solche beansprucht werden, ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, und die beanspruchte Kombination zu einer Unterkombination oder Variante einer Unterkombination werden.
  • Ebenso sind Operationen in den Zeichnungen möglicherweise in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Anfordernis verstanden werden, dass solche Operationen in der speziellen gezeigten Reihenfolge oder in einer sequentiellen Reihenfolge ausgeführt werden müssen, oder dass alle dargestellten Operationen ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können ein Multitasking und eine parallele Verarbeitung von Vorteil 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.
  • Einige Implementierungen wurden beschrieben. Nichtsdestotrotz versteht sich, dass verschiedene Änderungen vorgenommen werden können, ohne vom Wesen und Umfang der Offenbarung abzuweichen. Demensprechend liegen auch andere Implementierungen innerhalb des Umfangs 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 (15)

  1. Ein System für die Verteilung von Daten in einem verteilten Speichersystem (100), das System umfassend: einen nicht flüchtigen Speicher (204), der eine Datei empfängt (310); einen Computerprozessor (202), der mit dem nicht flüchtigen Speicher (204) kommuniziert, wobei der Computerprozessor (202) die empfangene Datei (310) in Segmente (330) unterteilt; und Speichergeräten (114), die mit dem Computerprozessor (202) und dem nicht flüchtigen Speicher (204) kommunizieren, wobei der Computerprozessor (202) die Segmente (330) auf den Speichergeräten (114) speichert, basierend auf einer Wartungshierarchie (400) des verteilten Speichersystems (100), wobei die Wartungshierarchie (400) Wartungseinheiten (402) umfasst, die aktive und inaktive Status haben, und jedes Speichergerät (114) einer Wartungseinheit (402) zugeordnet ist, wobei der Computerprozessor (202) die Segmente (330) über mehrere Wartungseinheiten (402) verteilt, um den Zugriff auf die Datei (310) aufrechtzuerhalten, falls sich eine Wartungseinheit (402) in einem inaktiven Status befindet.
  2. System nach Anspruch 1, worin der Computerprozessor (202) eine Einschränkung für die Anzahl von Segmenten (330) vornimmt, die auf Speichergeräte (114) einer beliebigen Wartungseinheit (402) verteilt werden.
  3. System nach Anspruch 1, worin der Computerprozessor (202) eine Verteilung der Segmente (330) über die Speichergeräte (114) vornimmt, durch: das Bestimmen einer ersten zufälligen Auswahl (150a) an Speichergeräten (114), die mit einer Anzahl an Segmenten (330) der Datei (310) übereinstimmt; und das Bestimmen, ob die Auswahl der Speichergeräte (114) in der Lage ist, den Zugriff auf die Datei (310) aufrechtzuerhalten, falls sich eine oder mehrere Wartungseinheiten (402) in einem inaktiven Status befinden.
  4. System nach Anspruch 3, worin der Computerprozessor (202) eine zweite zufällige Auswahl (150b) an Speichergeräten (114) bestimmt, die übereinstimmt mit der Anzahl der Segmente (330) der Datei (310), wenn die erste zufällige Auswahl (150a) der Speichergeräte (114) nicht in der Lage ist, den Zugriff auf die Datei (310) aufrechtzuerhalten, falls sich eine oder mehrere der Wartungseinheiten (402) in einem inaktiven Status befinden.
  5. System nach Anspruch 4, worin der Computerprozessor (202) die erste zufällige Auswahl (150a) an Speichergeräten (114) ändert, indem ein oder mehrere zufällig ausgewählte Speichergeräte (114) hinzugefügt oder entfernt werden, wenn die erste zufällige Auswahl (150a) an Speichergeräten (114) nicht in der Lage ist, den Zugriff auf die Datei (310) aufrechtzuerhalten, falls sich eine oder mehrere Wartungseinheiten (402) in einem inaktiven Status befinden.
  6. System nach Anspruch 4, worin der Computerprozessor (202) die erste zufällige Auswahl (150a) an Speichergeräten (114) bestimmt unter Verwendung einer einfachen Stichprobe, einer Wahrscheinlichkeitsauswahl, einer Gruppenauswahl oder einer Klumpenauswahl.
  7. System nach Anspruch 1, worin der Computerprozessor (202) eine Verteilung der Segmente (330) über die Speichergeräte (114) bestimmt, durch Auswahl einer fortlaufenden Anzahl an Speichergeräten (114) gleich einer Anzahl an Segmenten (330) der Datei (310) aus einer sortierten Ringliste (160) der Speichergeräte (114) des verteilten Speichersystems (100).
  8. System nach Anspruch 7, worin der Computerprozessor (202) eine andere fortlaufende Anzahl an Speichergeräten (114) aus der sortierten Ringliste (160) auswählt, gleich der Anzahl der Segmente (330) der Datei (310), wenn die gewählten Speichergeräte (114) gemeinsam nicht in der Lage sind, den Zugriff auf die Datei (310) beizubehalten, falls sich eine oder mehrere Wartungseinheiten (402) in einem inaktiven Status befinden.
  9. System nach Anspruch 7, worin der Computerprozessor (202) die sortierte Ringliste (160) mit Speichergeräten (114) des verteilten Speichersystems bestimmt (100), und benachbarte Speichergeräte in der sortierten Ringliste (160) unterschiedlichen Wartungseinheiten zugeordnet werden (402).
  10. System nach Anspruch 9, worin eine Schwellenanzahl fortlaufender Speichergeräte in der sortierten Ringliste (160) jeweils unterschiedlichen Wartungseinheiten (402) zugeordnet ist.
  11. System nach Anspruch 9, worin sich eine Schwellenanzahl fortlaufender Speichergeräte in der sortierten Ringliste (160) jeweils an unterschiedlichen geographischen Standorten befindet.
  12. System nach Anspruch 1, worin der Computerprozessor (202): eine Wartungshierarchie (400) von Wartungseinheiten (402) bestimmt, und die Wartungshierarchie (400) Wartungsebenen (401) hat, und jede Wartungsebene (401) aus einer oder mehreren Wartungseinheiten (402) besteht; und jede Wartungseinheit (402) auf mindestens ein Speichergerät (114) zuweist.
  13. System nach Anspruch 12, worin jede Wartungseinheit (402) aus Speichergeräten (114) besteht, die durch eine einzige Stromverteilungseinheit oder eine einzelne Stromschienenleitung (430) versorgt werden.
  14. System nach Anspruch 1, worin der Computerprozessor (202): die empfangene Datei (310) in Streifen (320) unterteilt, wobei jede Datei (310) einen Replikationscode (311) und/oder einen Fehlerkorrekturcode (313) enthält; mindestens einen Streifen (320) als Replikationssegmente (330) repliziert, wenn die Datei (310) einen Replikationscode (311) enthält); und mindestens einen Streifen (320) in Datensegmente (330nd k) und Codesegmente (330nc m) unterteilt, wenn die Datei (310) einen Fehlerkorrekturcode (313) enthält.
  15. System nach Anspruch 14, worin der Computerprozessor (202) Segmente (330) über die Speichergeräte (114) anders verteilt als die Datensegmente (330nd k) und Codesegmente (330nc m) über die Speichergeräte (114).
DE202014010909.5U 2013-12-05 2014-09-24 Verteilung von Daten in verteilten Speichersystemen Active DE202014010909U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/097,380 US9367562B2 (en) 2013-12-05 2013-12-05 Distributing data on distributed storage systems
US14/097,380 2013-12-05

Publications (1)

Publication Number Publication Date
DE202014010909U1 true DE202014010909U1 (de) 2017-01-17

Family

ID=53271375

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014010909.5U Active DE202014010909U1 (de) 2013-12-05 2014-09-24 Verteilung von Daten in verteilten Speichersystemen

Country Status (8)

Country Link
US (6) US9367562B2 (de)
EP (1) EP3077917B1 (de)
JP (2) JP6507167B2 (de)
CN (1) CN105765554B (de)
AU (1) AU2014357640B2 (de)
CA (3) CA3014694C (de)
DE (1) DE202014010909U1 (de)
WO (1) WO2015084471A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10379742B2 (en) * 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
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
US10116745B2 (en) 2016-03-28 2018-10-30 Samsung Electronics Co., Ltd. Automatic client-server role detection among data storage systems in a distributed data store
CN105959350B (zh) * 2016-04-22 2018-11-23 深圳市永兴元科技股份有限公司 分布式数据存储方法及装置
CN105847279A (zh) * 2016-05-03 2016-08-10 深圳市永兴元科技有限公司 分布式数据处理方法及数据中心
US10691557B1 (en) * 2016-06-24 2020-06-23 EMC IP Holding Company LLC Backup file recovery from multiple data sources
CN107688493B (zh) * 2016-08-05 2021-06-18 阿里巴巴集团控股有限公司 训练深度神经网络的方法、装置及***
US9952798B2 (en) * 2016-08-12 2018-04-24 Google Inc. Repartitioning data in a distributed computing system
CN109564502B (zh) * 2016-08-19 2020-12-08 华为技术有限公司 应用于存储设备中的访问请求的处理方法和装置
US10509708B2 (en) * 2017-06-13 2019-12-17 Vmware, Inc. Code block resynchronization for distributed multi-mirror erasure coding system
CN107967211A (zh) * 2017-12-05 2018-04-27 郑州云海信息技术有限公司 一种存储设备代码分发方法、***、装置及可读存储介质
US11341138B2 (en) * 2017-12-06 2022-05-24 International Business Machines Corporation Method and system for query performance prediction
JP2019194780A (ja) 2018-05-01 2019-11-07 富士通株式会社 情報処理装置、データ管理プログラム及びデータ管理方法
US10719397B2 (en) * 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
CN109561153A (zh) * 2018-12-17 2019-04-02 郑州云海信息技术有限公司 分布式存储***及业务切换方法、装置、设备、存储介质
CN110109889A (zh) * 2019-05-09 2019-08-09 重庆大学 一种分布式内存文件管理***
US11740899B2 (en) * 2021-08-31 2023-08-29 Micron Technology, Inc. In-memory associative processing system

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405284B1 (en) * 1998-10-23 2002-06-11 Oracle Corporation Distributing data across multiple data storage devices in a data storage system
US6553389B1 (en) * 1999-09-13 2003-04-22 Hewlett-Packard Company Resource availability determination mechanism for distributed data storage system
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
TWI222020B (en) * 2000-10-19 2004-10-11 Wistron Corp Method for installing and pre-setup of software
US7418620B1 (en) * 2001-02-16 2008-08-26 Swsoft Holdings, Ltd. Fault tolerant distributed storage method and controller using (N,K) algorithms
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US20030187853A1 (en) * 2002-01-24 2003-10-02 Hensley Roy Austin Distributed data storage system and method
US20040088380A1 (en) * 2002-03-12 2004-05-06 Chung Randall M. Splitting and redundant storage on multiple servers
US7159150B2 (en) * 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
WO2004097624A1 (en) * 2003-04-24 2004-11-11 Neopath Networks, Inc. Large file support for a network file server
US7568034B1 (en) * 2003-07-03 2009-07-28 Google Inc. System and method for data distribution
US7188118B2 (en) * 2003-11-26 2007-03-06 Veritas Operating Corporation System and method for detecting file content similarity within a file system
US7165059B1 (en) * 2003-12-23 2007-01-16 Veritas Operating Corporation Partial file migration mechanism
US7269689B2 (en) * 2004-06-17 2007-09-11 Hewlett-Packard Development Company, L.P. System and method for sharing storage resources between multiple files
US7536693B1 (en) * 2004-06-30 2009-05-19 Sun Microsystems, Inc. Method for load spreading of requests in a distributed data storage system
US8266237B2 (en) 2005-04-20 2012-09-11 Microsoft Corporation Systems and methods for providing distributed, decentralized data storage and retrieval
WO2007014296A2 (en) * 2005-07-25 2007-02-01 Parascale, Inc. Scalable distributed file storage access and management
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7739239B1 (en) * 2005-12-29 2010-06-15 Amazon Technologies, Inc. Distributed storage system with support for distinct storage classes
US7840618B2 (en) * 2006-01-03 2010-11-23 Nec Laboratories America, Inc. Wide area networked file system
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US7711711B1 (en) * 2006-03-29 2010-05-04 Emc Corporation Networked storage system employing information lifecycle management in conjunction with a distributed global file system
GB2446199A (en) * 2006-12-01 2008-08-06 David Irvine Secure, decentralised and anonymous peer-to-peer network
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US7930611B2 (en) 2007-03-09 2011-04-19 Microsoft Corporation Erasure-resilient codes having multiple protection groups
US20080270436A1 (en) * 2007-04-27 2008-10-30 Fineberg Samuel A Storing chunks within a file system
US8046509B2 (en) * 2007-07-06 2011-10-25 Prostor Systems, Inc. Commonality factoring for removable media
US8140787B2 (en) * 2007-10-05 2012-03-20 Imation Corp. Methods for implementation of an active archive in an archiving system and managing the data in the active archive
US8930651B2 (en) * 2007-10-05 2015-01-06 Imation Corp. Archiving system with partitions of individual archives
US7962452B2 (en) * 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
JP5236352B2 (ja) 2008-05-15 2013-07-17 株式会社日立製作所 アプリケーション配信制御システム、アプリケーション配信制御方法、情報処理装置、およびクライアント端末
US8346824B1 (en) * 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US9098519B2 (en) * 2008-09-16 2015-08-04 File System Labs Llc Methods and apparatus for distributed data storage
US8161255B2 (en) * 2009-01-06 2012-04-17 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
US8682862B2 (en) * 2009-04-10 2014-03-25 Phd Virtual Technologies Inc. Virtual machine file-level restoration
US8560639B2 (en) * 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
US8578120B2 (en) * 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US20150006895A1 (en) * 2009-06-01 2015-01-01 Maidsafe Foundation Distributed network system
US20110029729A1 (en) * 2009-07-30 2011-02-03 Lsi Corporation Erasure coded data storage capacity and power management
KR100985169B1 (ko) * 2009-11-23 2010-10-05 (주)피스페이스 분산 저장 시스템에서 파일의 중복을 제거하는 장치 및 방법
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8341457B2 (en) 2010-03-11 2012-12-25 Lsi Corporation System and method for optimizing redundancy restoration in distributed data layout environments
US9811532B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Executing a cloud command for a distributed filesystem
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US8224935B1 (en) 2010-05-12 2012-07-17 Symantec Corporation Systems and methods for efficiently synchronizing configuration data within distributed computing systems
GB2483088B (en) * 2010-08-26 2012-07-18 Giraffic Technologies Ltd Asynchronous data streaming in a peer-to-peer network
US8521703B2 (en) 2010-11-05 2013-08-27 International Business Machines Corporation Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility
CN101996111A (zh) * 2010-11-30 2011-03-30 华为技术有限公司 一种倒换方法、装置及分布式刀片服务器***
US9823981B2 (en) * 2011-03-11 2017-11-21 Microsoft Technology Licensing, Llc Backup and restore strategies for data deduplication
US8452819B1 (en) * 2011-03-22 2013-05-28 Amazon Technologies, Inc. Methods and apparatus for optimizing resource utilization in distributed storage systems
EP2702502A4 (de) * 2011-04-29 2015-06-03 Tata Consultancy Services Ltd Archivspeicherungs- und abrufsystem
JP6082387B2 (ja) * 2011-05-14 2017-02-15 ビットカーサ インコーポレイテッド ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
CN103620591A (zh) * 2011-06-14 2014-03-05 惠普发展公司,有限责任合伙企业 分布式文件***中的去重复
JP2013025742A (ja) * 2011-07-26 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散ファイル管理装置、分散ファイル管理方法及びプログラム
US8615698B1 (en) 2011-09-28 2013-12-24 Google Inc. Skewed orthogonal coding techniques
US8868647B2 (en) * 2012-01-11 2014-10-21 Alcatel Lucent Reducing latency and cost in resilient cloud file systems
US20130254248A1 (en) * 2012-03-23 2013-09-26 Alcatel-Lucent Usa Inc. Method And Apparatus For A Distributed File System In A Cloud Network
EP2660723A1 (de) * 2012-05-03 2013-11-06 Thomson Licensing Verfahren zur Datenspeicherung sowie Wartung in einem verteilten Datenspeicherungssystem und zugehörige Vorrichtung
US9229657B1 (en) * 2012-11-01 2016-01-05 Quantcast Corporation Redistributing data in a distributed storage system based on attributes of the data
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US9697228B2 (en) * 2014-04-14 2017-07-04 Vembu Technologies Private Limited Secure relational file system with version control, deduplication, and error correction
US9939865B2 (en) * 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9417955B2 (en) * 2014-08-21 2016-08-16 Datrium, Inc. Data reconstruction in distributed data storage system with key-based addressing
US9684569B2 (en) * 2015-03-30 2017-06-20 Western Digital Technologies, Inc. Data deduplication using chunk files
US20180107455A1 (en) * 2015-12-29 2018-04-19 Eyelead Software SA Real-time collaborative development in a live programming system
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller

Also Published As

Publication number Publication date
US20190250992A1 (en) 2019-08-15
CA3014694C (en) 2020-09-29
WO2015084471A1 (en) 2015-06-11
CA3132946C (en) 2023-06-20
US9367562B2 (en) 2016-06-14
US10678647B2 (en) 2020-06-09
AU2014357640B2 (en) 2016-12-08
US20150161163A1 (en) 2015-06-11
US20200285541A1 (en) 2020-09-10
US10318384B2 (en) 2019-06-11
US11113150B2 (en) 2021-09-07
US11620187B2 (en) 2023-04-04
EP3077917A1 (de) 2016-10-12
US20210382790A1 (en) 2021-12-09
JP6507167B2 (ja) 2019-04-24
AU2014357640A1 (en) 2016-04-21
CA2931665C (en) 2022-10-18
EP3077917B1 (de) 2019-04-17
US12019519B2 (en) 2024-06-25
US20230236935A1 (en) 2023-07-27
EP3077917A4 (de) 2017-05-10
US20160299815A1 (en) 2016-10-13
CA3014694A1 (en) 2015-06-11
JP2016541068A (ja) 2016-12-28
CA2931665A1 (en) 2015-06-11
JP6778704B2 (ja) 2020-11-04
CA3132946A1 (en) 2015-06-11
CN105765554B (zh) 2019-01-08
JP2018110008A (ja) 2018-07-12
CN105765554A (zh) 2016-07-13

Similar Documents

Publication Publication Date Title
DE202014010909U1 (de) Verteilung von Daten in verteilten Speichersystemen
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
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE202019005484U1 (de) Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen
DE112015005728B4 (de) Automatisches Auffinden von Konfigurationselementen
DE112012005275T5 (de) Datenauswahl zur Sicherung von Datenspeichern
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE102016105472A1 (de) Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen
DE112019002948T5 (de) Feststellen einer optimalen speicherumgebung für datensätze und für das migrieren von datensätzen
DE112012000282B4 (de) Anwendungswiederherstellung in einem Dateisystem
DE202013012477U1 (de) Organisieren von daten in einem verteilten speichersystem
DE112011100808T5 (de) System und Verfahren zum Unterstützen der Instanziierung und Migration virtueller Maschinen
DE112011104419T5 (de) Bereichsmigration für gepaarte Speicherung
DE112014004794T5 (de) Zuteilen von Kartenabgleichaufgaben durch Cluster-Server im Internet der Fahrzeuge
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE202015009295U1 (de) Effiziente Ressourcennutzung in Datenzentren
DE102014114108A1 (de) Prozessleitsysteme und -verfahren
DE112021005845T5 (de) Techniken zum lastausgleich
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112012004926T5 (de) Gemeinsame Speichernutzung durch Prozessoren

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
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

R151 Utility model maintained after payment of second maintenance fee after six years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016182000

R152 Utility model maintained after payment of third maintenance fee after eight years