DE112018001561B4 - Verteiltes speichernetzwerk - Google Patents

Verteiltes speichernetzwerk Download PDF

Info

Publication number
DE112018001561B4
DE112018001561B4 DE112018001561.0T DE112018001561T DE112018001561B4 DE 112018001561 B4 DE112018001561 B4 DE 112018001561B4 DE 112018001561 T DE112018001561 T DE 112018001561T DE 112018001561 B4 DE112018001561 B4 DE 112018001561B4
Authority
DE
Germany
Prior art keywords
value
units
source name
suggestion
data
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
DE112018001561.0T
Other languages
English (en)
Other versions
DE112018001561T5 (de
Inventor
Ravi Khadiwala
Jason Resch
Gregory Dhuse
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018001561T5 publication Critical patent/DE112018001561T5/de
Application granted granted Critical
Publication of DE112018001561B4 publication Critical patent/DE112018001561B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems

Abstract

Datenverarbeitungseinheit, die aufweist:eine Schnittstelle, die so konfiguriert ist, dass sie die Schnittstelle zu einem gestreuten oder verteilten Speichernetzwerk (DSN) bildet und mit diesem Daten austauscht;Speicher, der ausführbare Anweisungen speichert;ein Verarbeitungsmodul, das mit der Schnittstelle und dem Speicher betriebsfähig verbunden ist, wobei das Verarbeitungsmodul, wenn es innerhalb der Datenverarbeitungseinheit beruhend auf den ausführbaren Anweisungen funktionsfähig ist, so konfiguriert ist, dass es:von einer anfordernden Datenverarbeitungseinheit und über das DSN eine Anforderung empfängt, ein Datenobjekt innerhalb einer Vielzahl von verteilten Speicher-(DS-)Einheiten zu speichern;eine Vorschlagsnachricht erzeugt, die einen zu dem Datenobjekt gehörenden Quellennamen, einen ersten Wert für den Quellennamen und eine Vorschlagsversuchskennung enthält;die Vorschlagsnachricht an die Vielzahl der DS-Einheiten überträgt;als Reaktion auf die Vorschlagsnachricht eine Schwellenwertanzahl von Vorschlagsnachricht-Antworten von der Vielzahl der DS-Einheiten empfängt, wobei eine Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten von einer DS-Einheit der Vielzahl der DS-Einheiten empfangen wird und einem zweiten Wert für den Quellennamen entspricht, der von der DS-Einheit zuletzt akzeptiert wurde und des Weiteren angibt, ob die DS-Einheit der Vielzahl der DS-Einheiten eine beliebige andere Vorschlagsnachricht empfangen hat;wenn die Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten, die von der DS-Einheit der Vielzahl der DS-Einheiten empfangen wird, angibt, dass von der DS-Einheit der Vielzahl der DS-Einheiten keine anderen Vorschlagsnachrichten empfangen wurden, den ersten Wert für den Quellennamen verwendet, der in der Vorschlagsnachricht als ein persistenter Wert für den Quellennamen enthalten ist, und die anfordernde Datenverarbeitungseinheit über den persistenten Wert für den Quellennamen benachrichtigt; undwenn die Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten, die von der DS-Einheit der Vielzahl der DS-Einheiten empfangen wird, angibt, dass von der DS-Einheit der Vielzahl der DS-Einheiten mindestens eine andere Vorschlagsnachricht empfangen wurde, einen dritten Wert für den Quellennamen beruhend auf der Schwellenwertanzahl der Vorschlagsnachricht-Antworten von der Vielzahl der DS-Einheiten als den persistenten Wert für den Quellennamen verwendet und die anfordernde Datenverarbeitungseinheit über den persistenten Wert für den Quellennamen benachrichtigt.

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft allgemein Computernetzwerke und insbesondere das Streuen von fehlercodierten Daten.
  • HINTERGRUND
  • Von Datenverarbeitungseinheiten ist bekannt, dass sie Daten übertragen, Daten verarbeiten und/oder Daten speichern. Solche Datenverarbeitungseinheiten reichen von drahtlosen Smartphones, Laptops, Tablet-Computern, Personal Computern (PC), Workstations und Videospielgeräten bis hin zu Rechenzentren, die jeden Tag Millionen von Websuchen, Aktiengeschäften oder Onlinekäufen unterstützen. Im Allgemeinen enthält eine Datenverarbeitungseinheit eine zentrale Verarbeitungseinheit (CPU, central processing unit), ein Speichersystem, Benutzerein-/-ausgabeschnittstellen, Peripheriegeräteschnittstellen und eine Verbindungsbusstruktur.
  • Wie weiter bekannt ist, kann ein Computer seine CPU durch Verwendung von „Cloud-Computing“ wirksam erweitern, um eine oder mehrere Datenverarbeitungsfunktionen (z.B. einen Dienst, eine Anwendung, einen Algorithmus, eine arithmetisch-logische Funktion usw.) für den Computer durchzuführen. Des Weiteren kann das Cloud-Computing für große Dienste, Anwendungen und/oder Funktionen durch mehrere Cloud-Computing-Ressourcen verteilt durchgeführt werden, um die Antwortzeit für den Abschluss des Dienstes, der Anwendung und/oder Funktion zu verbessern. Zum Beispiel ist Hadoop ein Open-Source-Software-Framework, das verteilte Anwendungen unterstützt, die eine Anwendungsausführung durch Tausende von Computern ermöglichen.
  • Zusätzlich zum Cloud-Computing kann ein Computer einen „Cloud-Speicher“ als Teil seines Speichersystems verwenden. Wie bekannt ist, ermöglicht ein Cloud-Speicher einem Benutzer, über seinen Computer Dateien, Anwendungen usw. in einem Internet-Speichersystem zu speichern. Das Internet-Speichersystem kann ein RAID-System (RAID = redundant array of independent disks bzw. redundante Anordnung unabhängiger Festplatten) und/oder ein gestreutes Speichersystem enthalten, das ein Fehlerkorrekturschema verwendet, um Daten zur Speicherung zu codieren.
  • Die US 2016 / 0 335 202 A1 betrifft ein Verfahren für die Ausführung durch eine DST-Verarbeitungseinheit (DST = Distributed Storage and Task). Das Verfahren umfasst: Empfangen einer Schreibschwellenwert-Anzahl von Datenausschnitten eines Datenobjekts und einer Zugriffsrichtlinie; Feststellen eines aktuellen Zeitstempels, der einen aktuellen Zeitwert angibt; und Speichern der Schreibschwellenwert-Anzahl von Datenausschnitten, der Zugriffsrichtlinie und des Zeitstempels in einer Vielzahl von Speichereinheiten eines DSN (DSN = Distributed Storage Network, bzw verteiltes Speichernetzwerk).
  • Die US 2011 / 0 161 681 A1 betrifft ein Verfahren, das umfasst: Fehlercodieren von Daten in einem gestreuten Speicher, um einen Satz codierter Datenausschnitte zu erzeugen; Erzeugen einer ersten Transaktionskennung bezüglich der Speicherung des Satzes codierter Datenausschnitte; Ausgeben einer Vielzahl von Schreibanforderungsnachrichten an eine Vielzahl von gestreuten Speichereinheiten (DS-Einheiten), wobei jede der Vielzahl von Schreibanforderungsnachrichten die erste Transaktionskennung und einen entsprechenden des Satzes codierter Datenausschnitten enthält; Empfangen von Schreibantwort-Nachrichten von mindestens einigen der DS-Einheiten, wobei jede der Schreibantwort-Nachrichten eine Referenz auf die erste Transaktionskennung umfasst; und wenn mindestens eine Schreibschwellenzahl der Schreibantwort-Nachrichten empfangen wurde, Aktualisieren der Verzeichnisinformationen bezüglich der Speicherung der Daten, um aktualisierte Verzeichnisinformationen zu erzeugen.
  • KURZE BESCHREIBUNG DER ZEICHNUNG(EN)
    • 1 ist ein schematisches Blockschaubild einer Ausführungsform eines gestreuten oder verteilten Speichernetzwerks (DSN, dispersed bzw. distributed storage network) gemäß der vorliegenden Erfindung;
    • 2 ist ein schematisches Blockschaubild einer Ausführungsform eines Datenverarbeitungskerns gemäß der vorliegenden Erfindung;
    • 3 ist ein schematisches Blockschaubild eines Beispiels einer Fehlercodierung von Daten in einem gestreuten Speicher gemäß der vorliegenden Erfindung;
    • 4 ist ein schematisches Blockschaubild eines generischen Beispiels einer Fehlercodierungsfunktion gemäß der vorliegenden Erfindung;
    • 5 ist ein schematisches Blockschaubild eines spezifischen Beispiels einer Fehlercodierungsfunktion gemäß der vorliegenden Erfindung;
    • 6 ist ein schematisches Blockschaubild eines Beispiels eines Ausschnittnamens eines codierten Datenausschnitts (EDS, encoded data slice) gemäß der vorliegenden Erfindung;
    • 7 ist ein schematisches Blockschaubild eines Beispiels einer Fehlercodierung von Daten in einem gestreuten Speicher gemäß der vorliegenden Erfindung;
    • 8 ist ein schematisches Blockschaubild eines generischen Beispiels einer Fehlercodierungsfunktion gemäß der vorliegenden Erfindung;
    • 9 ist ein schematisches Blockschaubild eines Beispiels von überlappenden Schreibanforderungen für einen Satz von codierten Datenausschnitten gemäß der vorliegenden Erfindung;
    • 10 ist ein schematisches Blockschaubild eines Beispiels einer Schreibanforderung für einen codierten Datenausschnitt gemäß der vorliegenden Erfindung;
    • 11 ist ein schematisches Blockschaubild eines Beispiels einer Leseanforderung für einen codierten Datenausschnitt gemäß der vorliegenden Erfindung;
    • 12 ist ein schematisches Blockschaubild eines weiteren Beispiels von überlappenden Schreibanforderungen und Leseanforderungen für einen Satz von codierten Datenausschnitten gemäß der vorliegenden Erfindung;
    • 13 ist ein schematisches Blockschaubild eines Beispiels von Vorschlagsdatensätzen für einen Satz von codierten Datenausschnitten, die von Speichereinheiten des DSN gemäß der vorliegenden Erfindung gespeichert werden;
    • 14 ist ein schematisches Blockschaubild eines Beispiels einer Vorschlagsnachricht für ein ... gemäß der vorliegenden Erfindung; und
    • 15 ist ein Ablaufdiagramm eines Beispiels eines Verfahrens zur Verwendung einer Vorschlagsnachricht, um einen Konflikt in dem DSN gemäß der vorliegenden Erfindung aufzulösen.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Der Erfindung liegt die Aufgabe zugrunde Verfahren und Systeme zum Auflösen eines Konflikts in einem DSN zu schaffen. Die der Erfindung zugrunde liegende Aufgabe wird durch die Merkmale der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
  • 1 ist ein schematisches Blockschaubild einer Ausführungsform eines gestreuten oder verteilten Speichernetzwerks (DSN) 10, das eine Vielzahl von Datenverarbeitungseinheiten 12 bis 16, eine Verwaltungseinheit 18, eine Integritätsverarbeitungseinheit 20 und einen DSN-Speicher 22 enthält. Die Komponenten des DSN 10 sind mit einem Netzwerk 24 verbunden, zu dem ein oder mehrere drahtlose und/oder drahtgebundene Übertragungssysteme; ein oder mehrere nicht öffentliche Intranet-Systeme und/oder öffentliche Internet-Systeme; und/oder ein oder mehrere lokale Netze (LAN) und/oder Weitverkehrsnetze (WAN) gehören können.
  • Der DSN-Speicher 22 enthält eine Vielzahl von Speichereinheiten 36, die sich an geografisch unterschiedlichen Orten (z.B. eine in Chicago, eine in Milwaukee usw.), an einem gemeinsamen Ort oder einer Kombination daraus befinden können. Wenn der DSN-Speicher 22 zum Beispiel acht Speichereinheiten 36 enthält, befindet sich jede Speichereinheit an einem anderen Ort. Wenn der DSN-Speicher 22 als ein weiteres Beispiel acht Speichereinheiten 36 enthält, befinden sich alle acht Speichereinheiten an demselben Ort. Wenn der DSN-Speicher 22 als noch ein weiteres Beispiel acht Speichereinheiten 36 enthält, befindet sich ein erstes Paar von Speichereinheiten an einem ersten gemeinsamen Ort, ein zweites Paar von Speichereinheiten befindet sich an einem zweiten gemeinsamen Ort, ein drittes Paar von Speichereinheiten befindet sich an einem dritten gemeinsamen Ort und ein viertes Paar von Speichereinheiten befindet sich an einem vierten gemeinsamen Ort. Man beachte, dass ein DSN-Speicher 22 mehr oder weniger als acht Speichereinheiten 36 enthalten kann. Man beachte ferner, dass jede Speichereinheit 36 einen Datenverarbeitungskern (wie in 2 gezeigt, oder Komponenten daraus) und eine Vielzahl von Speichereinheiten zur Speicherung von gestreuten fehlercodierten Daten enthält.
  • Die Datenverarbeitungseinheiten 12 bis 16, die Verwaltungseinheit 18 und die Integritätsverarbeitungseinheit 20 enthalten jeweils einen Datenverarbeitungskern 26, der die Netzschnittstellen 30 bis 33 enthält. Bei den Datenverarbeitungseinheiten 12 bis 16 kann es sich jeweils um eine tragbare Datenverarbeitungseinheit und/oder um eine feste Datenverarbeitungseinheit handeln. Eine tragbare Datenverarbeitungseinheit kann eine Social-Networking-Einheit, eine Spielekonsole, ein Mobiltelefon, ein Smartphone, ein elektronischer Assistent, ein Abspielgerät für digitale Musikdaten, ein Abspielgerät für digitale Videodaten, ein Laptop-Computer, ein Handheld-Computer, ein Tablet-Computer, ein Videospiel-Controller und/oder eine beliebige andere tragbare Einheit sein, die einen Datenverarbeitungskern enthält. Eine feste Datenverarbeitungseinheit kann ein Computer (PC), ein Computerserver, eine Kabel-Set-Top-Box, ein Satellitenempfänger, ein Fernsehgerät, ein Drucker, ein Faxgerät, Unterhaltungselektronik, eine Videospielekonsole und/oder eine beliebige Art von Home oder Office Computing Equipment sein. Man beachte, dass die Verwaltungseinheit 18 und die Integritätsverarbeitungseinheit 20 jeweils getrennte Datenverarbeitungseinheiten sein können, eine gemeinsame Datenverarbeitungseinheit sein können und/oder in eine oder mehrere der Datenverarbeitungseinheiten 12 bis 16 und/oder in eine oder mehrere der Speichereinheiten 36 integriert sein können.
  • Jede Schnittstelle 30, 32 und 33 enthält Software und Hardware, um eine oder mehrere Übertragungsverbindungen über das Netzwerk 24 indirekt und/oder direkt zu unterstützen. Zum Beispiel unterstützt die Schnittstelle 30 eine Übertragungsverbindung (z.B. drahtgebunden, drahtlos, direkt, über ein LAN, über ein Netzwerk 24 usw.) zwischen den Datenverarbeitungseinheiten 14 und 16. Als ein weiteres Beispiel unterstützt die Schnittstelle 32 Übertragungsverbindungen (z.B. eine drahtgebundene Verbindung, eine drahtlose Verbindung, eine LAN-Verbindung und/oder eine beliebige andere Art von Verbindung zu/aus dem Netzwerk 24) zwischen den Datenverarbeitungseinheiten 12 und 16 und dem DSN-Speicher 22. Als noch ein weiteres Beispiel unterstützt die Schnittstelle 33 eine Übertragungsverbindung jeweils für die Verwaltungseinheit 18 und die Integritätsverarbeitungseinheit 20 zum Netzwerk 24.
  • Die Datenverarbeitungseinheiten 12 und 16 enthalten ein Client-Modul 34 mit gestreutem Speicher (DS), das es der Datenverarbeitungseinheit ermöglicht, eine Fehlercodierung und - Decodierung von Daten (z.B. der Daten 40) im gestreuten Speicher durchzuführen, wie nachfolgend unter Bezugnahme auf eine oder mehrere der 3 bis 8 beschrieben wird. In dieser beispielhaften Ausführungsform hat die Datenverarbeitungseinheit 16 die Funktion eines Verarbeitungsagenten mit gestreutem Speicher für die Datenverarbeitungseinheit 14. In dieser Rolle führt die Datenverarbeitungseinheit 16 eine Fehlercodierung und - Decodierung von Daten im gestreuten Speicher für die Datenverarbeitungseinheit 14 durch. Mit der Verwendung der Fehlerdecodierung und -Decodierung im gestreuten Speicher toleriert das DSN 10 eine beträchtliche Anzahl von Speichereinheit-Ausfällen (die Anzahl der Ausfälle beruht auf Parametern der Fehlercodierungsfunktion im gestreuten Speicher) ohne Datenverlust und ohne die Notwendigkeit von redundanten oder Sicherungskopien der Daten. Des Weiteren speichert das DSN 10 Daten für einen unbegrenzten Zeitraum ohne Datenverlust und auf sichere Weise (z.B. ist das System sehr resistent gegen nicht berechtigte Versuche, auf die Daten zuzugreifen).
  • Im Betrieb führt die Verwaltungseinheit 18 DS-Verwaltungsdienste durch. Zum Beispiel legt die Verwaltungseinheit 18 Parameter eines verteilten Datenspeichers (z.B. Vaulterstellung, Parameter eines verteilten Speichers, Sicherheitsparameter, Abrechnungsinformationen, Benutzerprofilinformationen usw.) für die Datenverarbeitungseinheiten 12 bis 14 einzeln oder als Teil einer Gruppe von Benutzereinheiten fest. Als ein spezifisches Beispiel koordiniert die Verwaltungseinheit 18 die Erstellung eines Vaults (z.B. eines virtuellen Speicherblocks, der zu einem Teil eines Gesamtnamensbereiches des DSN gehört) innerhalb des DSN-Speichers 22 für eine Benutzereinheit, eine Gruppe von Einheiten oder für den öffentlichen Zugriff und legt je Vault Fehlercodierungsparameter für einen Vault im gestreuten Speicher (DS) fest. Die Verwaltungseinheit 18 vereinfacht die Speicherung von DS-Fehlercodierungsparametern für jeden Vault, indem sie Registry-Informationen des DSN 10 aktualisiert, wobei die Registry-Informationen in dem DSN-Speicher 22, einer Datenverarbeitungseinheit 12 bis 16, der Verwaltungseinheit 18 und/oder der Integritätsverarbeitungseinheit 20 gespeichert werden können.
  • Die Verwaltungseinheit 18 erzeugt und speichert Benutzerprofilinformationen (z.B. eine Zugriffssteuerungsliste (ACL, access control list)) im lokalen Speicher und/oder innerhalb des Speichers des DSN-Speichers 22. Zu den Benutzerprofilinformationen gehören Authentifizierungsinformationen, Berechtigungen und/oder Sicherheitsparameter. Zu den Sicherheitsparametern können ein Verschlüsselungs-/Entschlüsselungsschema, ein oder mehrere Verschlüsselungsschlüssel, ein Schlüsselerzeugungsschema und/oder ein Datencodier-/-decodierschema gehören.
  • Die Verwaltungseinheit 18 erstellt Abrechnungsinformationen für einen bestimmten Benutzer, eine Benutzergruppe, einen Vaultzugriff, einen Zugriff auf einen öffentlichen Vault usw. Zum Beispiel überwacht die Verwaltungseinheit 18 die Häufigkeit, mit der ein Benutzer auf einen nicht öffentlichen Vault und/oder auf öffentliche Vaults zugreift, die zur Erzeugung einer Abrechnungsinformation je Zugriff verwendet werden kann. In einem weiteren Beispiel überwacht die Verwaltungseinheit 18 die Datenmenge, die durch eine Benutzereinheit und/oder eine Benutzergruppe gespeichert und/oder abgerufen wird, welche verwendet werden kann, um eine Abrechnungsinformation je Datenmenge zu erzeugen.
  • Als ein weiteres Beispiel führt die Verwaltungseinheit 18 Netzwerkoperationen, Netzwerkadministration und/oder Netzwerkpflege durch. Zu Netzwerkoperationen gehören das Authentifizieren von Benutzerdaten-Zuordnungsanforderungen (z.B. Lese- und/oder Schreibanforderungen), das Verwalten der Erstellung von Vaults, das Festlegen von Authentifizierungsdaten für Benutzereinheiten, das Hinzufügen/Entfernen von Komponenten (z.B. Benutzereinheiten, Speichereinheiten und/oder Datenverarbeitungseinheiten mit einem DS-Client-Modul 34) zu/aus dem DSN 10 und/oder das Festlegen von Authentifizierungsdaten für die Speichereinheiten 36. Zur Netzwerkadministration gehört das Überwachen von Geräten und/oder Einheiten auf Ausfälle, das Verwalten von Vault-Informationen, das Ermitteln des Geräte- und/oder Einheitenaktivierungsstatus, das Ermitteln der Geräte- und/oder Einheitenauslastung und/oder das Ermitteln einer beliebigen anderen Operation auf Systemebene, die sich auf den Leistungsgrad des DSN 10 auswirkt. Zur Netzwerkpflege gehören das Vereinfachen des Austauschs, der Aktualisierung, der Reparatur und/oder der Erweiterung eines Geräts und/oder einer Einheit des DSN 10.
  • Die Integritätsverarbeitungseinheit 20 führt eine Neuerstellung von fehlerhaften oder fehlenden codierten Datenausschnitten durch. Auf einer höheren Ebene führt die Integritätsverarbeitungseinheit 20 eine Neuerstellung durch, indem sie in regelmäßigen Abständen versucht, codierte Datenausschnitte und/oder Ausschnittnamen der codierten Datenausschnitte aus dem DSN-Speicher 22 abzurufen/aufzulisten. Bei abgerufenen codierten Ausschnitten werden diese auf Fehler aufgrund von Datenverlust, einer veralteten Version usw. geprüft. Wenn ein Ausschnitt einen Fehler enthält, wird er als fehlerhafter Ausschnitt gekennzeichnet. Bei codierten Datenausschnitten, die nicht empfangen und/oder nicht aufgeführt wurden, werden diese als fehlende Datenausschnitte gekennzeichnet. Fehlerhafte und/oder fehlende Ausschnitte werden anschließend unter Verwendung von anderen abgerufenen codierten Datenausschnitten neu erstellt, die als fehlerfreie Ausschnitte erachtet werden, um neu erstellte Ausschnitte zu erzeugen. Die neu erstellten Ausschnitte werden im DSN-Speicher 22 gespeichert.
  • 2 ist ein schematisches Blockschaubild einer Ausführungsform eines Datenverarbeitungskerns 26, der ein Verarbeitungsmodul 50, einen Speichercontroller 52, einen Hauptspeicher 54, eine Videografik-Verarbeitungseinheit 55, einen Ein-/Ausgabe-(E/A-)Controller 56, eine Peripheral Component Interconnect-(PCI-)Schnittstelle 58, ein E/A-Schnittstellenmodul 60, mindestens ein E/A-Einheiten-Schnittstellenmodul 62, ein Nur-Lese-Speicher-(ROM-)Basic Input Output System (BIOS) 64 und ein oder mehrere Speicherschnittstellenmodule enthält. Zu dem einen oder den mehreren Speicherschnittstellenmodul(en) gehören ein oder mehrere eines Universal Serial Bus-(USB-)Schnittstellenmoduls 66, ein Hostbusadapter-(HBA-)Schnittstellenmodul 68, ein Netzwerkschnittstellenmodul 70, ein Flash-Schnittstellenmodul 72, ein Festplattenlaufwerk-Schnittstellenmodul 74 und ein DSN-Schnittstellenmodul 76.
  • Das DSN-Schnittstellenmodul 76 hat die Funktion, eine Dateisystemschnittstelle (z.B. Netzwerkdateisystem (NFS, network file system), ein Flash-Dateisystem (FFS, flash file system), Plattendateisystem (DFS, disk file system), Dateiübertragungsprotokoll (FTP, file transfer protocol), Web-based Distributed Authoring und Versioning (WebDAV) usw.) eines herkömmlichen Betriebssystems (OS, operating system) und/oder eine Blockspeicherschnittstelle (z.B. SCSI, Small Computer System Interface), Internet Small Computer System Interface (iSCSI) usw.) nachzubilden. Das DSN-Schnittstellenmodul 76 und/oder das Netzwerkschnittstellenmodul 70 können die Funktion von einer oder mehreren der Schnittstellen 30 bis 33 von 1 übernehmen. Man beachte, dass das E/A-Einheiten-Schnittstellenmodul 62 und/oder die Speicherschnittstellenmodule 66 bis 76 gemeinsam oder einzeln als E/A-Ports bezeichnet werden können.
  • 3 ist ein schematisches Blockschaubild eines Beispiels einer Fehlercodierung von Daten in einem gestreuten Speicher. Wenn eine Datenverarbeitungseinheit 12 oder 16 Daten zu speichern hat, fehlercodiert sie die Daten im gestreuten Speicher gemäß einem Fehlercodierungsprozess des gestreuten Speichers, welcher auf Fehlercodierungsparametern des gestreuten Speichers beruht. Zu den Fehlercodierungsparametern des gestreuten Speichers gehören eine Codierfunktion (z.B. Information-Dispersal-Algorithmus, Reed-Solomon, Cauchy Reed-Solomon, systematische Codierung, nicht systematische Codierung, Online-Codes usw.), ein Datensegmentierungsprotokoll (z.B. Datensegmentgröße, fest, variabel usw.) sowie Codierungswerte je Datensegment. Zu den Codierungswerten je Datensegment gehören eine Gesamt- oder Säulenbreitenanzahl (T) von codierten Datenausschnitten je Codierung eines Datensegments (d.h. in einem Satz von codierten Datenausschnitten); eine Decodierschwellenwertanzahl (D) von codierten Datenausschnitten eines Satzes von codierten Datenausschnitten, die zur Wiederherstellung des Datensegments benötigt werden; eine Leseschwellenwertanzahl (R) von codierten Datenausschnitten, um eine Anzahl von codierten Datenausschnitten je Satz anzugeben, die aus dem Speicher zur Decodierung des Datensegments gelesen werden sollen; und/oder eine Schreibschwellenwertanzahl (W), um eine Anzahl von codierten Datenausschnitten je Satz anzugeben, die richtig gespeichert werden muss, bevor das codierte Datensegment als ordnungsgemäß gespeichert erachtet wird. Zu den Fehlercodierungsparametern des gestreuten Speichers können des Weiteren Slicing-Informationen (z.B. die Anzahl der codierten Datenausschnitte, die für jedes Datensegment erzeugt werden) und/oder Ausschnittsicherheitsinformationen (z.B. je Verschlüsselung, Komprimierung, Integritätsprüfsumme eines codierten Datenausschnitts usw.) gehören.
  • In dem vorliegenden Beispiel wurde Cauchy Reed-Solomon als Codierfunktion ausgewählt (ein generisches Beispiel ist in 4 gezeigt und ein spezifisches Beispiel ist in 5 gezeigt); das Datensegmentierungsprotokoll soll das Datenobjekt in Datensegmente fester Größe aufteilen; und zu den Codierungswerten je Datensegment gehören: eine Säulenbreite von 5, ein Decodierschwellenwert von 3, ein Leseschwellenwert von 4 und ein Schreibschwellenwert von 4. Gemäß dem Datensegmentierungsprotokoll teilt die Datenverarbeitungseinheit 12 oder 16 die Daten (z.B. eine Datei (z.B. Text, Video, Audio usw.), ein Datenobjekt oder eine andere Datenanordnung) in eine Vielzahl von Datensegmenten fester Größe auf (z.B. 1 bis Y einer festen Größe im Bereich von Kilobytes bis Terabytes oder mehr). Die Anzahl der erzeugten Datensegmente hängt von der Größe der Daten und dem Datensegmentierungsprotokoll ab.
  • Die Datenverarbeitungseinheit 12 oder 16 fehlercodiert dann ein Datensegment im gestreuten Speicher unter Verwendung der ausgewählten Codierfunktion (z.B. Cauchy Reed-Solomon), um einen Satz von codierten Datenausschnitten zu erzeugen. 4 veranschaulicht eine generische Cauchy Reed-Solomon-Codierfunktion, die eine Codierungsmatrix (EM, encoding matrix), eine Datenmatrix (DM) und eine codierte Matrix (CM) enthält. Die Größe der Codierungsmatrix (EM) hängt von der Säulenbreitenanzahl (T) und der Decodierschwellenwertanzahl (D) von ausgewählten Codierungswerten je Datensegment ab. Um die Datenmatrix (DM) zu erzeugen, wird das Datensegment in eine Vielzahl von Datenblöcken aufgeteilt und die Datenblöcke werden in eine D Anzahl von Zeilen mit Z Datenblöcken je Zeile angeordnet. Man beachte, dass Z eine Funktion der aus dem Datensegment erzeugten Anzahl von Datenblöcken und der Decodierschwellenwertanzahl (D) ist. Die codierte Matrix wird durch Matrixmultiplikation der Datenmatrix mit der Codierungsmatrix erzeugt.
  • 5 veranschaulicht ein spezifisches Beispiel einer Cauchy Reed-Solomon-Codierung mit einer Säulenanzahl (T) von fünf und einer Decodierschwellenwertanzahl von drei. In diesem Beispiel wird ein erstes Datensegment in zwölf Datenblöcke (D1 bis D12) aufgeteilt. Die codierte Matrix enthält fünf Zeilen an codierten Datenblöcken, wobei die erste Zeile von X11 bis X14 einem ersten codierten Datenausschnitt (EDS 1_1) entspricht, die zweite Zeile von X21 bis X24 einem zweiten codierten Datenausschnitt (EDS 2_1) entspricht, die dritte Zeile von X31 bis X34 einem dritten codierten Datenausschnitt (EDS 3_1) entspricht, die vierte Zeile von X41 bis X44 einem vierten codierten Datenausschnitt (EDS 4_1) entspricht und die fünfte Zeile von X51 bis X54 einem fünften codierten Datenausschnitt (EDS 5_1) entspricht. Man beachte, dass die zweite Zahl der EDS-Bezeichnung der Datensegmentnummer entspricht.
  • Zur Erörterung von 3 zurückkehrend, erzeugt die Datenverarbeitungseinheit auch einen Ausschnittnamen (SN, slice name) für jeden codierten Datenausschnitt (EDS, encoded data slice) in dem Satz von codierten Datenausschnitten. Ein typisches Format für einen Ausschnittnamen 80 ist in 6 gezeigt. Wie gezeigt ist, enthält der Ausschnittname (SN) 80 eine Säulennummer des codierten Datenausschnitts (z.B. eine von 1 bis T), eine Datensegmentnummer (z.B. eine von 1 bis Y), eine Vaultkennung (ID), eine Datenobjektkennung (ID), und er kann des Weiteren Informationen über die Revisionsstufe der codierten Datenausschnitte enthalten. Der Ausschnittname hat die Funktion von mindestens einem Teil einer DSN-Adresse für den codierten Datenausschnitt zur Speicherung und zum Abruf aus dem DSN-Speicher 22.
  • Infolge des Codierens erzeugt die Datenverarbeitungseinheit 12 oder 16 eine Vielzahl von Sätzen von codierten Datenausschnitten, die mit ihren jeweiligen Ausschnittnamen den Speichereinheiten zur Speicherung bereitgestellt werden. Wie gezeigt ist, enthält der erste Satz der codierten Datenausschnitte EDS 1_1 bis EDS 5 1 und der erste Satz der Ausschnittnamen enthält SN 1_1 bis SN 5 1 und der letzte Satz der codierten Datenausschnitte enthält EDS 1_Y bis EDS 5_Y und der letzte Satz der Ausschnittnamen enthält SN 1_Y bis SN 5_Y.
  • 7 ist ein schematisches Blockschaubild eines Beispiels einer Fehlerdecodierung eines Datenobjekts im gestreuten Speicher, das im Beispiel von 4 im gestreuten Speicher fehlercodiert und gespeichert wurde. In diesem Beispiel ruft die Datenverarbeitungseinheit 12 oder 16 aus den Speichereinheiten mindestens die Decodierschwellenwertanzahl der codierten Datenausschnitte je Datensegment ab. Als ein spezifisches Beispiel ruft die Datenverarbeitungseinheit eine Leseschwellenwertanzahl von codierten Datenausschnitten ab.
  • Um ein Datensegment aus einer Decodierschwellenwertanzahl von codierten Datenausschnitten wiederherzustellen, verwendet die Datenverarbeitungseinheit eine Decodierfunktion, wie in 8 gezeigt ist. Wie gezeigt ist, ist die Decodierfunktion im Grunde eine Inverse der Codierfunktion von 4. Die codierte Matrix enthält eine Decodierschwellenwertanzahl von Zeilen (z.B. drei in diesem Beispiel) und die Decodiermatrix ist eine Inversion der Codiermatrix, die die entsprechenden Zeilen der codierten Matrix enthält. Wenn die codierte Matrix zum Beispiel die Zeilen 1, 2 und 4 enthält, wird die Codiermatrix auf die Zeilen 1, 2 und 4 verringert und dann invertiert, um die Decodiermatrix zu erzeugen.
  • 9 ist ein schematisches Blockschaubild eines Beispiels von überlappenden Schreibanforderungen für einen Satz von codierten Datenausschnitten, die denselben Satz von Ausschnittnamen haben. Überlappende Schreibanforderungen treten auf, wenn ein Satz von Schreibanforderungen anstehend ist (z.B. wurden noch keine Schreibabschlussbefehle ausgegeben) und ein weiterer Satz von Schreibanforderungen für einen Satz von codierten Datenausschnitten, die denselben Satz von Ausschnittnamen haben, von den Speichereinheiten empfangen wird. In diesem Beispiel senden die Datenverarbeitungseinheiten A und B überlappende Schreibanforderungen bezüglich eines Satzes von codierten Datenausschnitten mit demselben Satz von Ausschnittnamen.
  • Um überlappende Schreibanforderungen (und andere überlappende Datenzugriffsanforderungen) zu verarbeiten, speichert jede Speichereinheit 36 (SU#1 bis SU#5) ihren eigenen Vorschlagsdatensatz 90-1 bis 90-5 für einen Ausschnittnamen oder für eine Gruppe von Ausschnittnamen. Ein Vorschlagsdatensatz 90 enthält eine geordnete Liste von anstehenden Transaktionen 92 und eine geordnete Liste von sichtbaren und unterschiedlichen Versionen eines codierten Datenausschnitts (EDS) 94, der denselben Ausschnittnamen hat. Der Vorschlagsdatensatz 90 kann des Weiteren eine Angabe der aktuellen Revisionsstufe des codierten Datenausschnitts enthalten.
  • Die geordnete Liste der anstehenden Transaktionen 92 enthält eine zeitlich geordnete Liste von Transaktionsnummern oder eine andere Angabe, die zu Datenzugriffsanforderungen in Bezug auf den Ausschnittnamen gehört, welche empfangen wurden, während der Vorschlagsdatensatz geöffnet war (z.B. wurden noch keine Schreibabschlussbefehle für eine der anstehenden Schreibanforderungen ausgegeben). Zum Beispiel enthält der Vorschlagsdatensatz 90-1 der Speichereinheit #1 eine geordnete Liste von Transaktionsnummern für Datenzugriffsanforderungen in Bezug auf einen ersten Ausschnittnamen eines Satzes von Ausschnittnamen.
  • Als ein spezifisches Beispiel hat eine erste Schreibanforderung von der Datenverarbeitungseinheit A in Bezug auf eine Version eines codierten Datenausschnitts, der den ersten Ausschnittnamen hat, eine erste Transaktionsnummer (z.B. 0413), und eine zweite Schreibanforderung von der Datenverarbeitungseinheit B in Bezug auf eine weitere Version des codierten Datenausschnitts, der den ersten Ausschnittnamen hat, hat eine zweite Transaktionsnummer (z.B. 0279). Die Speichereinheit #1 empfing die erste Schreibanforderung vor dem Empfang der zweiten Schreibanforderung, folglich hat der Vorschlagsdatensatz 90-1 die erste Schreibanforderung (z.B. die erste Transaktionsnummer) an einer Position erster Priorität und die zweite Schreibanforderung an einer Position zweiter Priorität.
  • Als ein weiteres spezifisches Beispiel hat eine Schreibanforderung von der Datenverarbeitungseinheit A in Bezug auf eine Version eines codierten Datenausschnitts, der einen zweiten Ausschnittnamen hat, die erste Transaktionsnummer (z.B. 0413), und eine Schreibanforderung von der Datenverarbeitungseinheit B in Bezug auf eine weitere Version des codierten Datenausschnitts, der den zweiten Ausschnittnamen hat, hat die zweite Transaktionsnummer (z.B. 0279). Die Speichereinheit #2 empfing die Schreibanforderung von der Datenverarbeitungseinheit B vor dem Empfang der Schreibanforderung von der Datenverarbeitungseinheit A. Somit hat der Vorschlagsdatensatz 90-2 die Schreibanforderung der Datenverarbeitungseinheit B (z.B. die zweite Transaktionsnummer) an der Position erster Priorität und die Schreibanforderung von der Datenverarbeitungseinheit A an einer Position zweiter Priorität. Die verbleibenden Speichereinheiten erzeugen ihre jeweiligen Vorschlagsdatensätze auf ähnliche Weise.
  • Im Allgemeinen „öffnet“ eine Speichereinheit einen Vorschlagsdatensatz, wenn sie eine neue Schreibanforderung für eine Version eines codierten Datenausschnitts empfängt, der einen Ausschnittnamen hat (d.h. keine anderen Schreibanforderungen sind anstehend). Die Speichereinheit sendet den Vorschlagsdatensatz an die Datenverarbeitungseinheit, die die Schreibanforderung sendet. Wenn es keine überlappenden Schreibanforderungen für einen Satz von codierten Datenausschnitten gibt, die einen Satz von Ausschnittnamen haben, öffnen die anderen Speichereinheiten (SU #2 bis SU#5) Vorschlagsdatensätze und senden sie an die Datenverarbeitungseinheit.
  • Die Datenverarbeitungseinheit wertet die Vorschlagsdatensätze aus, um festzustellen, ob sich eine Schwellenwertanzahl oder mehrere (z.B. Decodierschwellenwertanzahl, Schreibschwellenwertanzahl usw.) ihrer Schreibanforderungen an der Position erster Priorität befindet. Wenn es keine überlappende Schreibanforderung gibt, befinden sich die Schreibanforderungen an der Position erster Priorität. Folglich sendet die Datenverarbeitungseinheit Abschlussanforderungen an die Speichereinheiten. Die Speichereinheiten verarbeiten die Abschlussanforderung, um die neue Version der codierten Datenausschnitte zum aktuellsten Satz von codierten Datenausschnitten zu machen, und schließen ihre jeweiligen Vorschlagsdatensätze.
  • Wenn es eine überlappende Schreibanforderung gibt (z.B. hat eine Speichereinheit einen offenen Vorschlagsdatensatz für den Ausschnittnamen), aktualisiert die Speichereinheit den Vorschlagsdatensatz mit der neuen Schreibanforderung, indem sie die neue Schreibanforderung an eine Position niedrigerer Priorität als zuvor empfangene und anstehende Schreibanforderungen stellt. Nach der Aktualisierung des Vorschlagsdatensatzes sendet die Speichereinheit den Vorschlagsdatensatz an die Datenverarbeitungseinheit, welche die neue Schreibanforderung gesendet hat.
  • Während die Datenverarbeitungseinheiten die Vorschlagsdatensätze empfangen, stellen sie fest, ob sich mindestens die Schwellenwertanzahl ihrer jeweiligen Schreibanforderungen an einer Position erster Priorität befinden. Wenn ja, gibt die Datenverarbeitungseinheit die Abschlussbefehle aus. Wenn nicht, zieht die Datenverarbeitungseinheit ihre Schreibanforderungen zurück oder führt eine andere Rücksetzposition aus.
  • Zusätzlich zu den beiden Schreibanforderungen sendet die Datenverarbeitungseinheit C Leseanforderungen an die Speichereinheiten für den Satz von codierten Datenausschnitten 98. Die Speichereinheiten fügen die Leseanforderungen zu ihren jeweiligen Vorschlagsdatensätzen hinzu und senden die aktualisierten Vorschlagsdatensätze an die Datenverarbeitungseinheit C. Nach dem Empfang der Vorschlagsdatensätze stellt die Datenverarbeitungseinheit C fest, ob sie mit der Leseanforderung fortfahren soll (z.B. die aktuelle Revisionsstufe des Satzes der codierten Datenausschnitte lesen soll) oder die Leseanforderung beenden soll. Als eine Alternative verarbeitet die Datenverarbeitungseinheit C die Vorschlagsdatensätze, um festzustellen, dass der neue Satz von codierten Datenausschnitten von der Datenverarbeitungseinheit A oder der Datenverarbeitungseinheit B die nächste aktuelle Version des Satzes von codierten Datenausschnitten sein wird. Nachdem sie diese Feststellung getroffen hat, ändert die Datenverarbeitungseinheit C ihre Leseanforderungen, um die nächste aktuelle Version des Satzes von codierten Datenausschnitten zu lesen.
  • 10 ist ein schematisches Blockschaubild eines Beispiels einer Leseanforderung 96 oder 100 von 9. Die Schreibanforderung enthält ein Transaktionsnummernfeld, ein Ausschnittnamen-(SN-)Feld, ein Codierter-Datenausschnitt-(EDS-)Feld, ein Aktuelle-Revisionsstufe-Feld und ein Neue-Revisionsstufe-Feld. Jede Schreibanforderung in dem Satz von Schreibanforderungen enthält die gleiche Transaktionsnummer, einen anderen Ausschnittnamen, einen anderen EDS, die gleiche aktuelle Revisionsstufe und die gleiche neue Revisionsstufe.
  • 11 ist ein schematisches Blockschaubild eines Beispiels einer Leseanforderung 102 von 9. Die Leseanforderung enthält ein Transaktionsnummernfeld, ein Ausschnittnamen-(SN-)Feld und ein Aktuelle-Revisionsstufe-Feld. Jede Leseanforderung in dem Satz von Leseanforderungen 102 enthält die gleiche Transaktionsnummer, einen anderen Ausschnittnamen und die gleiche aktuelle Revisionsstufe.
  • 12 ist ein schematisches Blockschaubild eines weiteren Beispiels von überlappenden Schreibanforderungen 96, 100 und Leseanforderungen 102 für einen Satz von codierten Datenausschnitten 98. In diesem Beispiel hat jede der Datenverarbeitungseinheiten A und B das Datensegment in einen Satz von fünf codierten Datenausschnitten codiert. Folglich erzeugt jede der Datenverarbeitungseinheiten A und B fünf Schreibanforderungen 96-1 bis 96-5 und 100-1 bis 100-5. Die Schreibanforderungen von der Datenverarbeitungseinheit A enthalten dieselbe Transaktionsnummer 0413 (die zufällig erzeugt werden kann, ein Zeitstempel sein kann usw.), unterschiedliche Ausschnittnamen (SN 1_1 bis SN 5_1), unterschiedliche codierte Datenausschnitte (EDS A_1_1 bis EDS A_5_1), dieselbe aktuelle Revisionsstufe 003 und die nächste Revisionsstufe 004.
  • Die Schreibanforderungen von der Datenverarbeitungseinheit B enthalten dieselbe Transaktionsnummer 0279, unterschiedliche Ausschnittnamen (SN 1_1 bis SN 5_1), unterschiedliche codierte Datenausschnitte (EDS B_1_1 bis EDS B_5_1), dieselbe aktuelle Revisionsstufe 003 und die nächste Revisionsstufe 004. Ein Vergleich der Schreibanforderungen von der Datenverarbeitungseinheit A mit den Schreibanforderungen von der Datenverarbeitungseinheit B ergibt, dass die Schreibanforderungen dieselben Ausschnittnamen, dieselben aktuellen Revisionsstufen und dieselben nächsten Revisionsstufen haben. Die Schreibanforderungen unterscheiden sich in den Transaktionsnummern und den codierten Datenausschnitten.
  • Die Datenverarbeitungseinheit C gibt fünf Leseanforderungen für den Satz der codierten Datenausschnitte 98 aus. Die Leseanforderungen 102-1 bis 102-5 enthalten dieselbe Transaktionsnummer 03338, unterschiedliche Ausschnittnamen (SN 1_1 bis SN 5_1) und die aktuelle Revisionsstufe 003. Die Schreibanforderungen und die Leseanforderungen werden an die Speichereinheiten SU1 bis SU5 gesendet, die die Anforderungen verarbeiten, wie unter Bezugnahme auf 13 erörtert wird.
  • 13 ist ein schematisches Blockschaubild eines Beispiels von Vorschlagsdatensätzen für einen Satz von codierten Datenausschnitten, die von Speichereinheiten des DSN gespeichert werden. Während die Schreibanforderungen 96 und 100 und die Leseanforderungen 102 in diesem Beispiel zu ähnlichen Zeiten ausgesendet werden, werden die Anforderungen aufgrund von unterschiedlichen Latenzzeiten und/oder Verarbeitungsmöglichkeiten zwischen den Datenverarbeitungseinheiten und den Speichereinheiten zu unterschiedlichen Zeitpunkten und möglicherweise in einer anderen Reihenfolge als derjenigen, in der sie übertragen wurden, von den Speichereinheiten empfangen.
  • Vor dem Empfang von beliebigen der Lese- oder Schreibanforderungen speichern die Speichereinheiten eine aktuelle Revisionsstufe des Satzes der codierten Datenausschnitte. Wie gezeigt ist, speichert die Speichereinheit SU#1 EDS 1_1, die Speichereinheit SU#2 speichert EDS 2_1 und so weiter. In diesem Beispiel ist die aktuelle Revisionsstufe der codierte Datenausschnitte 003. Ferner hat keine der Speichereinheiten einen geöffneten Vorschlagsdatensatz für ihren jeweiligen codierten Datenausschnitt.
  • Wenn eine Speichereinheit in diesem Beispiel eine Datenzugriffsanforderung empfängt, öffnet sie einen Vorschlagsdatensatz, der den Datenzugriff, den sie soeben empfangen hat, die aktuelle Revisionsstufe und einen Hinweis, dass die aktuelle Revisionsstufe des codierten Datenausschnitts sichtbar ist (z.B. von einer Datenverarbeitungseinheit des DSN darauf zugegriffen werden kann), angibt. Nach dem Öffnen eines Vorschlagsdatensatzes sendet die Speichereinheit ihn an die Datenverarbeitungseinheit, von der sie die Anforderung empfangen hat.
  • Zum Beispiel empfing jede der Speichereinheiten 1, 3, 4 und 5 die Schreibanforderung zuerst von der Datenverarbeitungseinheit A. Folglich erzeugt jede Speichereinheit einen Vorschlagsdatensatz, der die geordnete Liste der anstehenden Transaktionen 92 und die geordnete Liste der sichtbaren unterschiedlichen Versionen des EDS 94, die an die Datenverarbeitungseinheit A gesendet wird, enthält. Zum Beispiel enthält jede der geordneten Listen der anstehenden Transaktionen 92-1, 92-3, 92-4 und 92-5 die Transaktionsnummer 0413 (die Transaktionsnummer für die Schreibanforderungen der Datenverarbeitungseinheit A) an der Position erster Priorität. Des Weiteren enthält jede der geordneten Listen der sichtbaren unterschiedlichen Versionen der EDS 94-1, 94-3, 94-4 und 94-5 einen Hinweis, dass die aktuelle Revisionsstufe des codierten Datenausschnitts und der codierte Datenausschnitt von der Datenverarbeitungseinheit A sichtbar sind (z.B. sind für SU#1 EDS 1_1 und EDS A_1_1 sichtbar).
  • Mit dem Beispiel fortfahrend, empfängt die Speichereinheit #2 die Schreibanforderung zuerst von der Datenverarbeitungseinheit B. Folglich erzeugt die Speichereinheit #2 einen Vorschlagsdatensatz, der die geordnete Liste der anstehenden Transaktionen 92-2 und die geordnete Liste der sichtbaren unterschiedlichen Versionen des EDS 94-4, die an die Datenverarbeitungseinheit B gesendet wird, enthält. Zum Beispiel enthält die geordnete Liste der anstehenden Transaktionen 92-2 die Transaktionsnummer 0279 (die Transaktionsnummer für die Leseanforderungen der Datenverarbeitungseinheit B) an der Position erster Priorität. Des Weiteren enthält die geordnete Liste der sichtbaren unterschiedlichen Versionen des EDS 94-2 einen Hinweis, dass die aktuelle Revisionsstufe des codierten Datenausschnitts und der codierte Datenausschnitt von der Datenverarbeitungseinheit B sichtbar ist (z.B. sind EDS 2_1 und EDS B_2_1 sichtbar).
  • Nach dem Empfang der Schreibanforderungen von der Datenverarbeitungseinheit A empfangen die Speichereinheiten 1, 3, 4 und 5 die Schreibanforderung von der Datenverarbeitungseinheit B. Folglich aktualisiert jede Speichereinheit ihren Vorschlagsdatensatz, der an die Datenverarbeitungseinheit A gesendet wird. Zum Beispiel wird jede der geordneten Listen der anstehenden Transaktionen 92-1, 92-3, 92-4 und 92-5 so aktualisiert, dass sie die Transaktionsnummer 0279 (die Transaktionsnummer für die Schreibanforderungen der Datenverarbeitungseinheit B) an der Position zweiter Priorität enthält. Des Weiteren wird jede der geordneten Listen der sichtbaren unterschiedlichen Versionen der EDS 94-1, 94-3, 94-4 und 94-5 so aktualisiert, dass sie einen Hinweis enthält, dass die aktuelle Revisionsstufe des codierten Datenausschnitts und die codierten Datenausschnitte von den Datenverarbeitungseinheiten A und B sichtbar sind (z.B. sind für SU#1 EDS 1_1, EDS A_1_1 und EDS B_1_1 sichtbar).
  • Nach dem Empfang der Schreibanforderungen von der Datenverarbeitungseinheit B empfängt die Speichereinheit 2 die Schreibanforderung von der Datenverarbeitungseinheit A. Folglich aktualisiert die Speichereinheit #2 ihren Vorschlagsdatensatz, der an die Datenverarbeitungseinheit B gesendet wird. Zum Beispiel enthält die geordnete Liste der anstehenden Transaktionen 92-2 die Transaktionsnummer 0413 (die Transaktionsnummer für die Schreibanforderungen der Datenverarbeitungseinheit A) an der Position zweiter Priorität. Des Weiteren enthält die geordnete Liste der sichtbaren unterschiedlichen Versionen des EDS 94-2 einen Hinweis, dass die aktuelle Revisionsstufe des codierten Datenausschnitts und die codierten Datenausschnitte von den Datenverarbeitungseinheiten A und B sichtbar sind (z.B. sind EDS 2_1, EDS B_2_1 und EDS A_2_1 sichtbar).
  • Nach dem Empfang der Schreibanforderungen von beiden Datenverarbeitungseinheiten A und B und vor dem Schließen der Vorschlagsdatensätze empfangen die Speichereinheiten Leseanforderungen von der Datenverarbeitungseinheit C. Folglich aktualisiert jede der Speichereinheiten ihren Vorschlagsdatensatz, um die Leseanforderung aufzunehmen. Im Einzelnen aktualisiert jede Speichereinheit ihre geordnete Liste der anstehenden Transaktionen 92 so, dass sie die Transaktionsnummer 0279 der Leseanforderungen an der Position dritter Priorität enthält. Die Aktualisierungsvorschlagsdatensätze werden an die Datenverarbeitungseinheit C gesendet.
  • Aktualisierungen an einer Vielzahl von codierten Datenausschnitten können als Teil einer einzelnen Transaktion erreicht werden. Diese Operationen, die oftmals als „atomare Operationen“ beschrieben werden, können ausgeführt werden, ohne dass irgendein anderer Prozess in der Lage ist, den Zustand während der Operation zu lesen oder zu ändern (außer der Lesevorgang oder die Änderung wird aktualisiert). Atomare Operationen werden praktisch als ein einzelner Schritt ausgeführt und können ein wichtiges Attribut in Systemen sein, in denen sich eine Vielzahl von Algorithmen mit mehreren unabhängigen Prozessen befasst (für Algorithmen, die gemeinsam genutzte Daten aktualisieren, ohne eine Synchronisation erforderlich zu machen, und diejenigen, die keine Synchronisation benötigen). Eine normale atomare Schreiboperation kann wie folgt ausgeführt werden: 1) ein DS-Prozessor erwirbt eine Sperre für die zu einem Datenobjekt gehörenden Metadaten; 2) die DS-Verarbeitungseinheit schreibt das Objekt in den Speicher; 3) die DS-Verarbeitungseinheit aktualisiert die zu dem Datenobjekt gehörenden Metadaten mit einer Kontingentnutzung für den Container, in den das Datenobjekt geschrieben wird; 4) wenn die Kontingentaktualisierung der zu dem Datenobjekt gehörenden Metadaten erfolglos ist, wird das Datenobjekt aus dem Speicher gelöscht; und 5) die DS-Verarbeitungseinheit gibt die Sperre für die zu dem Datenobjekt gehörenden Metadaten frei.
  • In diesem Fall erzwingt die atomare Operation, dass alle in einer aktuellen Transaktion vorgenommenen Aktualisierungen sofort konsistent sind; falls während der Aktualisierung Ausfälle auftreten, wird die gesamte Transaktion abgebrochen und jedwede Objekte, die bereits geschrieben wurden, werden rückgängig gemacht. Atomare Operationen, wie beispielsweise die vorstehend beschriebene Operation, können neben Ineffizienz in Verbindung mit dem Löschen eines bereits geschriebenen Datenobjekts, weil die Aktualisierung der zugehörigen Metadaten erfolglos war, zu einem Konflikt bei zu einem Datenobjekt gehörenden Metadaten führen, wenn mehrere Schreiboperationen in denselben Container stattfinden.
  • Das DSN-Protokoll ermöglicht ein atomares „compare and swap of 1 element“ (CAS-1) für ein einzelnes Element, wobei eine Datenquelle in einer atomaren Transaktionsoperation atomar erhöht werden kann. Das Unterstützen von mehreren (willkürlichen N) atomaren Compare-and-swap-(CAS-N-)Transaktionen erfordert Erweiterungen des DSN-Protokolls, die durchgeführt werden, indem das Protokoll verwendet wird, um N-Element-Compare and swap (CAS-N) zu ermöglichen. CAS-N ermöglicht eine starke Konsistenz zwischen willkürlichen Elementen mit atomarer Lesesichtbarkeit. Eine CAS-N-Transaktion besteht aus einem Satz von „Vorschlägen“, die die Form (SOURCE, OLD REVISION, NEW REVISION) annehmen, wobei die Revisionsvergleiche eines jeden Vorschlags atomar erfüllt werden müssen, damit die Transaktion abschließen kann, und im Falle eines Scheiterns wird keine Aktualisierung einer Quelle vorgenommen. Dies wird durchgeführt, indem die vollständige „Transaktionsbeschreibung“ -- (der Satz aller Vorschläge) an jeder Datenposition (zum Beispiel auf jeder beteiligten ds-Einheit, die über einen Ausschnitt von mindestens einer der Quellen innerhalb der CAS-N-Operation verfügt) mindestens für die Dauer der Transaktion gespeichert wird. Jeder Leser oder Schreiber, der auf eine Quelle mit einer laufenden (offenen) Transaktion trifft, muss dann die Vorschläge der ganzen Transaktion validieren, bevor er entscheidet, ob die NEW REVISION oder die OLD REVISION für diese Quelle sichtbar ist. In manchen Fällen kann dies erfordern, dass ein Client zusätzliche Leseanforderungen für zuvor unbekannte Quellen ausgibt, die innerhalb der Transaktionsbeschreibung referenziert werden. Wenn eine CAS-N-Transaktion abgeschlossen ist, kann die Transaktionsbeschreibung aus allen beteiligten ds-Einheiten entfernt werden, und zu diesem Zeitpunkt ist die NEW REVISION einer jeden Quelle sichtbar.
  • Wenn mehr als ein Vorschlagender versucht, dieselbe Revision/Version einer Datenquelle gleichzeitig zu aktualisieren, kommt es zu einem Konflikt. Die Vorschlagenden in diesem Fall sind im Allgemeinen zwei oder mehr DS-Verarbeitungseinheiten, die versuchen, dieselbe Datenquelle (Segment oder Datenquelle, das bzw. die das Metadatenobjekt darstellt) gleichzeitig zu aktualisieren. Da eine starke Konsistenz eine wünschenswerte Eigenschaft für ein verteiltes Speichersystem ist, ist im Allgemeinen eine Form des Konsensprotokolls erforderlich. Wenn alle Akteure in dem System einem solchen Protokoll folgen, ist eine starke Konsistenz üblicherweise zusätzlich sichergestellt, auch ist es vorteilhaft, dass in dem konfliktbehafteten Fall ein Konsens in einem einzigen Umlauf erzielbar ist, während in dem Fall, in dem mehrere Schreiber versuchen, dasselbe Datenobjekt zu aktualisieren (d.h. „der konfliktbehaftete Fall“) eine akzeptable Performance erzielt wird.
  • Protokolle wie beispielsweise Paxos wurden entwickelt, um einen definierten Client festzulegen, der für den Umgang mit Konsensproblemen einen Out-of-band-Prozess verwendet. Ein Ziel von Paxos besteht darin, für eine Anzahl von Peers eine Einigung auf einen Wert zu erreichen; Paxos garantiert, dass, wenn ein Peer glaubt, dass sich eine Mehrheit auf einen Wert geeinigt hat, sich die Mehrheit nie auf einen anderen Wert einigen wird. Das Protokoll ist so ausgelegt, dass jede beliebige Einigung eine Mehrheit von Knoten durchlaufen muss. Der Out-of-band-Prozess von Paxos kann dem verteilten Speichersystem zusätzlichen Aufwand verursachen, da gegebenenfalls Umläufe erforderlich sind. Starke Konsistenz-Eigenschaften werden während eines Überschreibens einer spezifischen Revision oder des Anfangsrechts irgendeines Namens im DSN-Speicher (zuweilen auch als „Wettbewerb“ bezeichnet) erreicht. Mehrere DS-Verarbeitungseinheiten nehmen an demselben Wettbewerb teil, wenn sie versuchen, dieselbe Revision einer in demselben DSN-Speicher gespeicherten Datenquelle zu aktualisieren.
  • Eine Variante von Paxos mit der Bezeichnung „Fast Paxos“ wurde entwickelt, um das Herstellen eines Konsens in einer einzigen Netzwerk-Umlaufzeit (RTT, round trip time) in dem idealen Fall keines Konflikts zu ermöglichen. Fast Paxos hat im Allgemeinen getrennte einzelne Phasen für: 1) das Wählen eines Anführers; und 2) das Vorschlagen von neuen Werten für einen Konsens. Ein Vorschlag für eine Variante von Fast Paxos, die die Vorschlagsphase mit der Anführerwahlphase kombiniert, ist nachstehend gezeigt. Dazu werden Vorschlagsmetadaten als Stimmzettel in einer Anführerwahl verwendet. Diese Variante von Fast Paxos wird „Fast Paxos with Implicit Leader Election“ (FPILE) genannt. FPILE ermöglicht einzelne RTT-Schreiboperationen im besten Fall, zusammen mit einer garantierten starken Konsistenz und schneller Konfliktauflösung (üblicherweise 2 RTTs).
  • FPILE ist so ausgelegt, dass es die folgenden Ziele erreicht: 1) Sicherheit (Starke Konsistenz (Leser können nur akzeptierte Werte sehen); 2) Verfügbarkeit (Blockierungsfrei (Fortschritt kann immer gemacht werden)); und, 3) Performance (Schnelle Konfliktauflösung (in einem einzigen Umlauf im durchschnittlichen Fall)).
  • Typische Datenprotokolle unterliegen einer Vielzahl von Fehlerbedingungen. Während diese Protokolle eine starke Konsistenz bieten können, stellen sie keine Verfügbarkeit oder Performance bereit, wie hier beschrieben ist. Bei bisher vorhandenen Protokollen können Client-Crashs und Speicherausfälle das System in einem unbestimmten Zustand hinterlassen, in dem keine Fortschritte gemacht werden können, da die neueste wiederherstellbare Revision nicht ermittelt werden kann. Diese Protokolle können auch unter einer schlechten Konfliktauflösung leiden, da Clients ihre Anforderungen ohne einen koordinierten Backoff-Mechanismus außer dem exponentiellen Backoff gegebenenfalls immer wieder wiederholen. Dies führt zu langen Verzögerungen, falls ein Konflikt angetroffen wird.
  • Zu den Zielen von FPILE gehören (ohne darauf beschränkt zu sein) das Aufrechterhalten von Garantien einer starken Konsistenz von vorhandenen Protokollen bei gleichzeitiger Verbesserung der Performance und Verfügbarkeit. Diese Eigenschaften werden nachstehend ausführlicher erörtert.
  • Wie vorstehend erörtert wurde, gibt es mehrere positive Verbesserungen, die CAS-N dem verteilten Speichernetzwerk bereitstellen wird, doch beinhalten einige der Vorteile eine starke Garantie, dass entweder die alte oder die neue Revision eines Objekts sichtbar ist (wie beispielsweise im Falle eines Stromausfalls eines Slicestor (IBM-Servers) (wie etwa eines Stromausfalls über W-T SS hinaus)). Dies bedeutet, dass immer garantiert ist, dass gleichzeitige Strukturen wie der Index während eines Stromausfalls frei von Beschädigungen sind. Im Falle eines Stromausfalls gibt es keine „partiellen Schreiboperationen“ - alle Schreiboperationen sind atomar (wie in 13 zu sehen ist). Dies bedeutet, dass der Index, die Metadaten und die Nutzung selbst nach Client-Crashs immer synchron sind.
  • Schreiboperationen können einem Benutzer in einem einzigen Umlauf bestätigt werden, wenn es keinen Konflikt gibt. Dies verbessert die Performance in einer WAN-Umgebung, indem die Schreiblatenzzeit um einen Faktor 2 verringert wird. Der Konfliktaufwand wird im Falle von mehreren Schreiboperationen, die denselben Knoten aktualisieren, ebenfalls verringert, indem gestattet wird, dass stark konfliktbehaftete Objekte (wie sequenzielle Schreiboperationen in einen Index ohne Delegation) vorhersagbarer und mit geringerer Latenzzeit abgeschlossen werden können. Verwendung von Sperrmodi - der Index und andere „abgeleitete“ Strukturen können asynchron aktualisiert werden - dies verringert ebenfalls die Anzahl der Umläufe, um einen Schreiberfolg zu erzielen.
  • Sicherheit, Eigenschaften der vorhandenen und neu vorgeschlagenen Protokolle können als eine Form von „starker, unmittelbarer Konsistenz“ beschrieben werden, dies umfasst sehr viele Garantien: PFILE enthält mindestens diese Eigenschaften in seinem Sicherheitskonzept.
    • 1) Leser können nur Werte zurückgeben, die erfolgreich geschrieben wurden, d.h. von dem System „akzeptiert“ wurden (Nichttrivialität). Es kann höchstens einen akzeptierten Wert geben, wobei ein akzeptierter Wert ein vorgeschlagener Nachfolger für eine bestimmte Revision (Sicherheit) ist;
    • 2) alle Clients können eine definitive abschließende Einigung darüber erzielen, was der akzeptierte Wert ist (Konsistenz);
    • 3) eine nach einer erfolgreichen Schreiboperation eingeleitete Leseoperation sieht immer diese oder eine neuere Schreiboperation (Unmittelbarkeit auch bekannt als Linearisierbarkeit);
    • 4) Compare-and-Swap-Operationen schlagen entweder vollständig fehl oder sind vollständig erfolgreich (Atomizität).
  • Die folgenden Abschnitte legen kurz das Protokoll und den Algorithmus aus der Sicht von unabhängig arbeitenden Clients dar:
Compare and Swap-Algorithmus (Schreiben/Aktualisieren/Löschen)
      Schreiber:
      Ein Schreiber schreibt eine txid, Revision, Daten in jeden Speicher. Der Speicher
      respektiert denselben Vertrag und gibt denselben, in fast-casn kurz dargelegten
      Stimmzettel zurück, außer
      dass der Speicher auch enthält, welche Runden für jede Tabelle in dem Stimmzettel
      aktiv sind
      write(source_name, data, proposed_revision, txid, current_round, stores[],
      to_rebuild, current_revision): 

      für i in stores.size:
      // Optimierung: sende Ausschnittdaten nur, falls (current_round == 0) (oder wenn
      ein anderer neu erstellt wird)
      Ausschnitt = current_round == 0 | | i in to_rebuild ? get_slice(data, i) : null
      ballots[i] = schreibe(current_revision, current_round, store[i], (txid,
      proposed_revision, slice)) in alle W Speicher.
      // Stelle fest, wie viele Stimmzettel txid als erstplatziertes txid für die
      aktuelle Runde enthalten
      success_count = count_my_successes(ballots, current_round)
      falls success_count >= Threshold.WRITE:
      // Wir haben bei der Aktualisierung der current_revision gewonnen
      finalize()
      gib Operation.SUCCESS zurück;
      sonst, falls (count_max successes(ballots, current_round) >= Threshold.WRITE)
      oder finalized_slice(Stimmzettel)_enthält:
      // Jemand anderes hat uns bei dieser Aktualisierung geschlagen, sag den Speichern, es
      ist sicher,
      unsere Ausschnitte zu entfernen
      withdraw_writes()
      // Optimierung: Kann einen Hinweis darauf geben, was die neuen Daten oder die
      Revision ist, falls
      sie aus Stimmzetteln ermittelt werden können/kann
      gib Operation.RETRIABLE_FAILURE zurück
      sonst:
      // Weder wir noch irgendjemand anderes hat bei dieser Aktualisierung definitiv
      gewonnen
      (es gibt einen Konflikt)
      // Ermittle zuerst einen Satz von Transaktionen, der definitiv nicht
      als ein Satz mit mindestens Threshold.WRITE Erfolgen ausgeschlossen werden kann
      potential_winners = potentially_at_wt(ballots, current_round)
      falls potential_winners.size() == 0:
      // Keiner konnte den Schreibschwellenwert in dieser Runde erreicht haben, wir
      müssen
      einen Anführer ermitteln, um fortzufahren
      excluded_candidates = [] // Es wurde bisher gegen niemanden gegengestimmt
      Anführer = sloppy_leader election(ballots, current_round,
      excluded_candidates)
      während der Anführer komplett inaktiv ist und Threshold.IDA unterschreitet:
      excluded_leaders.append(leader)
      Anführer = sloppy_leader election(ballots, current_round,
      excluded_leaders) 



      // Wir haben einen aktiven Anführer, definitionsgemäß (wenn sonst niemand aktiv ist,
      wir sind immer noch aktiv)
      sonst, falls potential_winners.size() == 1:
      Anführer = potential_winner[0] // dieser mögliche Gewinner hätte
      die Anführerwahl auch gewonnen
      sonst, falls potential_winners.size() > 1:
      // Wir können keinen von diesen zum Gewinner machen, da sie möglicherweise wegen
      der
      ausgefallenen Speicher gewonnen haben
      // dies könnte nur passieren, falls f > min(W - WT, WT - T)
      gib Operation.FAILURE zurück;
      falls Anführer == txid:
      // Wir sind der Anführer, tritt in die nächste Runde ein
      write(data, proposed_revision, txid, (current_round + 1), stores[], {},
      current_revision)
      sonst:
      // Jemand anderes ist der Anführer
      leader_successes = count_leader_successes(ballots, current_round,
      leader)
      falls is_inactive(leader):
      falls (leader_successes < Threshold.IDA):
      withdraw_writes()
      // ein möglicher Gewinner unterschreitet T (nicht wieder erstellbar)
      // dies könnte nur passieren, falls f > min(W - WT, WT - T)
      gib Operation.FAILURE zurück;
      sonst:
      withdraw_writes()
      falls (leader_successes < Threshold.WRITE):
      // Erstelle die Daten des Anführers neu, sie überschreiten Threshold.IDA,
      unterschreiten aber
      Threshold.WRITE
      // rufe Speicher ab, die keinen Anführer haben
      to_rebuild = {i für i in ballots.size, falls nicht
      has_leader-revision(ballots[i])}
      sonst:
      // keine Notwendigkeit, irgendetwas neu zu erstellen
      to_rebuild = {}
      write(leader-data, leader-revision, leader-txid, leader_round + 1,
      stores[], to_rebuild, current_revision)
      sonst:
      // Anführer ist aktiv 



      withdraw_writes()
      write(data, proposed_revision, txid, current_round /* nicht current_round
      + 1 !!! */, stores[], {}, current_revision)
      potentially_at_wt(ballots, current_round):
      gib alle Kandidaten zurück, deren erstplatzierte Stimmen + num_failures >= WT
      /***
      * Gibt einen einzigen in Frage kommenden Anführer zurück, der zur nächsten Runde
      übergehen kann (falls es
      Partitionen gibt, sind sich einige Clients möglicherweise uneins, wer der Anführer ist)
      */
      sloppy_leader election(ballots, current_round, excluded_leaders):
      valid_candidates = remove_excluded_leaders(ballots, current_round,
      excluded_leaders)
      m = get_max first_places_in_round(ballots, current_round,
      valid_candidates)
      potential_leaders = {c in valid_candidates(ballots) | num_first_places(c)
      == m}
      gib potential_leader mit der höchsten txid zurück
  • Lies
  • Leser:
          Dem Schreiber sehr ähnlich:
          read():
          Stimmzettel = Leser kann anfangs nur T Slicestors lesen
          falls dies die T Ausschnitte einer Revision mit mindestens einem abgeschlossenen
          Ausschnitt sind:
          gib diese Revision zurück
          sonst:
          lies weiter, bis es eine Quelle gibt, die WT erreicht hat, oder es für
          eine beliebige Quelle unmöglich ist, WT zu erreichen, führe dann erneut aus
          falls es eine Revision gibt, die WT erreicht:
          gib sie zurück, falls sie mindestens WT inaktiv ist, andernfalls wiederhole einfach
          sonst:
          falls Ausfälle Platzhalter sind und es für eine beliebige Revision unmöglich ist,
          WT erreicht zu haben:
          kann auf vorherige Revision zurückgreifen
          sonst:
          Anführer = sloppy_leader election(ballots, current_round)
          falls all_inactive(leader) und der Anführer der einzig mögliche Erreicher von
          WT (mit Ausfällen) ist und der Anführer T überschreitet: 
    
    
    
          führe Neuerstellung auf WT durch
          sonst:
          wiederhole
  • Algorithmus-Eigenschaften
  • Es sei f die Anzahl der ausgefallenen Speicher
          Definiere Schreiber-Fortschritt als Erfolg, Scheitern, wobei ein Konkurrent gewinnt,
          oder Wiederholen, was erfolgreich wäre, wenn ein Konkurrent kooperieren würde
          Anspruch 1: Schreiber kann immer Fortschritt machen, solange f <= min(WT - T, W -
          WT)
          Ein Schreiber kann eindeutig nicht erfolgreich sein, wenn weniger als WT Speicher
          verfügbar sind, somit f <= W - WT.
          Es sei A ein konkurrierender Schreiber und a die Anzahl der erstplatzierten Stimmen,
          die A erzielt hat. Wenn a + f < WT, können wir eine neue Runde sicher beginnen, wie
          in dem Algorithmus beschrieben ist. Sonst a + f >= WT. Wenn a >= T, können wir diese
          Revision einfach wiederherstellen und unsere Schreiboperation fehlschlagen lassen.
          Nehmen wir dann a = T - 1 an. Es würde
          uns gefallen, so dass es für A unmöglich ist, WT zu erreichen. Das bedeutet, wir
          brauchen X „keine A's“, so dass:
          (W - (T -1)) - x < WT - (T - 1) (Die Speicher, die nicht bei A - X gewonnen haben, müssen
          weniger als die Menge der verbleibenden Gewinne sein, die A benötigt, um
          WT zu erreichen)
          =>
          x > W - WT
          Dann ist die kleinste Anzahl „keine A's“, die benötigt wird, x = W - WT + 1
          Dann ist das größte f
          f <= (W - (T - 1)) - X (Anzahl Speicher, die nicht bereits A - erforderliche Anzahl „keine
          A's“ akzeptiert haben)
          f <= (W - (T - 1)) - (W - WT + 1)
          f <= WT - T
          s>= 3f + 1 (or W >= 4f + 1)
  • 14 ist ein schematisches Blockschaubild eines Beispiels einer Vorschlagsnachricht aus einem Verarbeitungsmodul des DSN. Die Schreibanforderung enthält ein Transaktionsnummernfeld, ein Ausschnittnamen-(SN-)Feld, das sie gerne aktualisieren möchte, ein Codierter-Datenausschnitt-(EDS-)Feld, bei dem das Verarbeitungsmodul verlangt, dass es der persistente Wert ist, und eine Vorschlagskennung, die gemäß dem Vorschlagsversuch, der von dem Vorschlagsversuch dargestellt wird, erhöht werden kann.
  • Wie in dem Ablaufdiagramm von 15 gezeigt ist, empfängt ein Verarbeitungsmodul im Schritt 502 eine Anforderung für die Speicherung eines Datenobjekts und erzeugt im Schritt 504 eine Vorschlagsnachricht (Schreibanforderung) für mindestens eine Schwellenwertanzahl von verteilten Speicher-(DS-)Einheiten. Das Verfahren fährt im Schritt 504 mit der Übertragung der Vorschlagsnachricht durch das Verarbeitungsmodul an die Schwellenwertanzahl von DS-Einheiten fort. Wenn eine DS-Einheit (der Schwellenwertanzahl von DS-Einheiten) die Vorschlagsnachricht für einen Quellennamen empfängt, für den sie keinen weiteren Vorschlag empfangen hat, oder wenn alle vorherigen Anforderungen für den Quellennamen eine niedrigere Runde hatten, akzeptiert die DS-Einheit die Anforderung und gibt eine Antwort an das Verarbeitungsmodul zurück, die den Wert angibt, den sie zuletzt akzeptiert hat, sowie einen Hinweis auf etwaige andere Vorschläge, die sie gesehen hat. Wenn das ds-Verarbeitungsmodul feststellt, dass der von einem Schreibschwellenwert von ds-Einheiten akzeptierte Wert für die höchste Runde, die ausgeführt wird, gilt, ist gegebenenfalls aus dessen Sicht ein Konsens für diesen Wert erzielt und es kann von normalen Konsistenz-Garantien ausgehen. An diesem Punkt benachrichtigt die ds-Verarbeitungseinheit den Anforderer, dass der vorgeschlagene Wert von der Schwellenwertanzahl der DS-Speichereinheiten erfolgreich akzeptiert wurde, und dieser Wert wird der persistente Wert für den betreffenden Quellennamen.
  • Wenn eine Schreibschwellenwertanzahl von DS-Einheiten keinen Konsens erzielt hat (d.h., dieselbe vorgeschlagene Nachricht wurde akzeptiert und eine Antwort für eine Schreibschwellenwertanzahl von DS-Einheiten zurückgegeben), prüft das Verarbeitungsmodul sodann die Antworten auf die Vorschlagsnachricht, um festzustellen, ob irgendwelche anderen Vorschlagsnachrichten für den betreffenden Quellennamen empfangen und akzeptiert wurden. Wenn Vorschlagsnachrichten für den betreffenden Quellennamen von der Schwellenwertanzahl der DS-Einheiten empfangen und akzeptiert wurden, sind das Verarbeitungsmodul zusammen mit Verarbeitungsmodulen Dritter, die Vorschlagsnachrichten für den betreffenden Quellennamen übertragen haben, in der Lage festzustellen, ob beliebige von den DS-Einheiten akzeptierte Vorschlagsnachrichten in der Lage sein könnten, einen Konsens über den Wert des Quellennamens zu erzielen. Wenn festgestellt wird, dass ein Konsenswert zur Verfügung steht, kann dieser Wert dann erneut vorgeschlagen werden (d.h., die Vorschlagsnachricht für diesen Wert kann erneut an die Schwellenwertanzahl von DS-Einheiten übertragen werden) und das Verarbeitungsmodul, das diese Vorschlagsnachricht erzeugt hat, wird als Anführer bestimmt.
  • Nur der Anführer kann fortfahren, indem er den Wert mit einer höheren Runde erneut vorschlägt, alle anderen Verarbeitungseinheiten, die Vorschlagsnachrichten für den betreffenden Quellennamen übertragen haben, können an diesem Punkt wahlweise ihre Anforderer über einen Ausfall benachrichtigen (d.h., dass sie den Wettbewerb verloren haben). Alle anderen Verarbeitungseinheiten können, zusätzlich zur Benachrichtigung der Anforderer, den persistenten Wert in Abhängigkeit von der Effizienz/Auslastung des Netzwerks bereitstellen, um Umläufe zu verringern.
  • In einigen Fällen stellt das Verarbeitungsmodul (zusammen mit allen anderen Verarbeitungsmodulen) gegebenenfalls fest, dass es zwei Werte gibt, die möglicherweise als Konsenswerte zur Verfügung stehen, obgleich keiner ein klarer Anführer ist. In diesem Fall können die zu beiden der möglichen Konsenswerte gehörenden Verarbeitungsmodule mit ihren Vorschlagsnachrichten einen erneuten Vorschlag unterbreiten, um einen Konsenswert und Anführer zu ermitteln. Dieses Zwei-Runden-System (das auch als zweiter Stimmzettel, Runoff-Wahl oder Ballotage bezeichnet wird) wird verwendet, um einen Anführer auszuwählen, wenn kein Konsens erzielt wird, alle bis auf die beiden in Frage kommenden Werte mit den meisten Stimmen werden entfernt, und eine zweite Wahlrunde wird abgehalten.
  • Wie der Fachmann versteht, ist die DS-Verarbeitungseinheit nicht verpflichtet, irgendeinen spezifischen Wert aus Sicherheitsgründen vorzuschlagen, jedoch können, wie vorstehend gezeigt ist, bestimmte Schemata bei der Auswahl eines Werts die Anzahl der zur Auflösung eines konfliktbehafteten Wettbewerbs erforderlichen Umläufe erheblich verringern. Zum Beispiel kann die DS-Verarbeitungseinheit die Antworten auf Vorschläge als Stimmzettel in einer Wahl berücksichtigen. Zu einigen Beispielen von Schemata, um einen Wert aus diesen Stimmzetteln zu wählen, gehören: Wählen des Vorschlags mit dem ältesten Zeitstempel oder Verwenden einer deterministischen Funktion des Werts. Ferner können die DS-Einheiten die Vorschläge, die sie gesehen haben, wahlweise einstufen, und die DS-Verarbeitungseinheit kann ein gestuftes Wahlschema wie zum Beispiel Instant Runoff Voting (Wahl mit sofortiger Stichwahl) (siehe oben) verwenden. Sobald ein Wert gewählt wurde, wird der zugehörige Anführer bestimmt und fährt mit einer höheren Runde fort; Verarbeitungseinheiten Dritter in dem Wettbewerb können an diesem Punkt wahlweise ausfallen oder ihre Vorschlagsnachrichten selbst mit einiger Verzögerung wiederholen oder aktualisieren, indem sie den nun persistenten Wert und die Wiederholung ändern.
  • Verschiedene Algorithmen können verwendet werden, um diese Verzögerung zu ermitteln, darunter exponentielles Backoff und/oder das Verwenden von Informationen von den DS-Einheiten, um zu schätzen, ob der Anführer immer noch aktiv ist. Eine DS-Verarbeitungseinheit, die den aktuellen vereinbarten Wert für den betreffenden Quellennamen lesen möchte, muss sicherstellen, dass jeder beliebige Wert, den sie liest, dauerhaft als ein Schreibschwellenwert festgelegt wurde, bevor sie ihn an den Anforderer zurückgibt. Wenn festgestellt werden kann, dass es bei irgendeinem Wert nicht möglich war, einen Konsens in einer aktuellen konfliktbehafteten Aktualisierung zu erzielen, kann der Leser auf einen vorherigen Wert des Quellennamens zurückgreifen. Als eine zusätzliche Optimierung kann der Schreiber eine ‚Abschließen‘-Anforderung für einen Quellennamen und einen Wert senden, nachdem ein Konsens erzielt wurde, um die ds-Einheiten darüber zu informieren, dass ein Konsens für den Wert erzielt worden ist. Nachfolgende Verarbeitungsmodule, die Leseanforderungen für den betreffenden Quellennamen übertragen, brauchen keine zusätzliche Arbeit zu verrichten, um festzustellen, dass ein Schreibschwellenwert bei einem Wert erreicht wurde, bevor sie den Wert aufgrund dessen, dass die Quelle abgeschlossen wurde, an einen Anforderer zurückgeben.
  • Wie der Fachmann in der relevanten Technik des Weiteren verstehen würde, funktioniert Fast Paxos (und wie vorstehend beschrieben) gut mit Trimmed Writes. In Trimmed-Writes-Systemen ist es üblich, Width - WT = WT - Threshold zu konfigurieren, und die Abschlussphase stellt eine ideale Stelle für das Einfügen einer neuen Bereinigungsnachricht (z.B. eine ‚Abschließen‘-Nachricht mit einem Booleschen Flag) bereit, die nicht nur vorherige Ausschnitte, sondern auch den Ausschnittinhalt eines erfolgreich geschriebenen Ausschnitts bereinigt. Dieses Flag würde nur bei den meisten (W - WT) der an die Speicher gesendeten Abschlussnachrichten auf „ein“ gesetzt werden. Dies gibt überschüssigen Datenspeicher frei, der von den extra (W - WT) Ausschnitten möglicherweise genutzt worden ist.
  • Es sei angemerkt, dass Begriffe, wie sie hierin gegebenenfalls verwendet werden, wie beispielsweise Bitstrom, Strom, Signalfolge usw. (oder deren Äquivalente) austauschbar verwendet wurden, um digitale Informationen zu beschreiben, deren Inhalt beliebigen von mehreren gewünschten Arten (z.B. Daten, Video, Sprache, Audio usw., von denen beliebige allgemein als „Daten“ bezeichnet werden können) entspricht.
  • Wie hierin gegebenenfalls verwendet, sehen die Begriffe „im Wesentlichen“ und „ungefähr“ eine branchenübliche Toleranz für deren entsprechenden Begriff und/oder Relativität zwischen Teilen vor. Eine solche betriebsübliche Toleranz reicht von weniger als einem Prozent bis zu fünfzig Prozent und entspricht, ohne darauf beschränkt zu sein, Komponentenwerten, Prozessabweichungen bei integrierten Schaltungen, Temperaturabweichungen, Anstiegs- und Abfallzeiten und/oder thermischem Rauschen. Eine solche Relativität zwischen Teilen reicht von einer Differenz von ein paar Prozent bis zu Differenzen von mehreren Größenordnungen. Wie hierin gegebenenfalls ebenfalls verwendet, beinhaltet/beinhalten der/die Begriff(e) „so konfiguriert, dass“, „betriebsfähig verbunden mit“, „verbunden mit“ und/oder „Verbindung“ eine direkte Verbindung zwischen Teilen und/oder eine indirekte Verbindung zwischen Teilen über ein dazwischenliegendes Teil (z.B. enthält ein Teil, ohne darauf beschränkt zu sein, eine Komponente, ein Element, eine Schaltung und/oder ein Modul), wobei, für ein Beispiel einer indirekten Verbindung, das dazwischenliegende Teil die Information eines Signals nicht verändert, aber dessen Strompegel, Spannungspegel und/oder Leistungspegel anpassen kann. Wie hierin gegebenenfalls des Weiteren verwendet, beinhaltet eine geschlussfolgerte Verbindung (d.h., bei der ein Element mit einem weiteren Element durch Inferenz verbunden ist) eine direkte und indirekte Verbindung zwischen zwei Teilen auf die gleiche Weise wie bei „verbunden mit“. Wie hierin gegebenenfalls noch des Weiteren verwendet, gibt der Begriff „so konfiguriert, dass“, „funktionsfähig, um“, „verbunden mit“ oder „betriebsfähig verbunden mit“ an, dass ein Teil ein oder mehrere Netzanschlüsse, Eingang/Eingänge, Ausgang/Ausgänge usw. enthält, um, wenn aktiviert, eine oder mehrere seiner entsprechenden Funktionen auszuführen, und er kann des Weiteren eine geschlussfolgerte Verbindung mit einem oder mehreren anderen Teilen beinhalten. Wie hierin gegebenenfalls noch weiter verwendet, beinhaltet der Begriff „gehört zu“ eine direkte und/oder indirekte Verbindung von getrennten Teilen und/oder einem Teil, das in einem anderen Teil eingebettet ist.
  • Wie hierin gegebenenfalls verwendet, gibt der Begriff „durchaus vergleichbar mit“ an, dass ein Vergleich zwischen zwei oder mehr Teilen, Signalen usw. ein gewünschtes Verhältnis ergibt. Wenn das gewünschte Verhältnis zum Beispiel so ist, dass das Signal 1 eine größere Amplitude als das Signal 2 hat, kann ein wohlwollender Vergleich erzielt werden, wenn die Amplitude des Signals 1 größer als diejenige des Signals 2 ist oder wenn die Amplitude des Signals 2 kleiner als diejenige des Signals 1 ist. Wie hierin gegebenenfalls verwendet, gibt der Begriff „schneidet im Vergleich schlechter ab“ an, dass ein Vergleich zwischen zwei oder mehr Teilen, Signalen usw. das gewünschte Verhältnis nicht ergibt.
  • Wie hierin gegebenenfalls auch verwendet, kann es sich bei den Begriffen „Verarbeitungsmodul“, „Verarbeitungsschaltung“, „Prozessor“ und/oder „Verarbeitungseinheit“ um eine einzige Verarbeitungseinheit oder um eine Vielzahl von Verarbeitungseinheiten handeln. Eine solche Verarbeitungseinheit kann ein Mikroprozessor, ein Mikrocontroller, ein Digitalsignalprozessor, ein Mikrocomputer, eine zentrale Verarbeitungseinheit, eine im Feld programmierbare Gatter-Anordnung, eine programmierbare Logikeinheit, eine Zustandsmaschine, ein Logikschaltkreis, ein Analogschaltkreis, ein Digitalschaltkreis und/oder eine beliebige Einheit sein, die Signale (analoge und/oder digitale) beruhend auf einer festen Codierung der Schaltung und/oder ausführbaren Anweisungen verarbeitet. Das Verarbeitungsmodul, das Modul, die Verarbeitungsschaltung und/oder die Verarbeitungseinheit kann ein Speicher und/oder ein integriertes Speicherelement sein oder sie kann des Weiteren einen Speicher und/oder ein integriertes Speicherelement enthalten, bei dem es sich um eine einzige Speichereinheit, eine Vielzahl von Speichereinheiten und/oder eingebettete Schaltlogik eines/einer weiteren Verarbeitungsmoduls, Moduls, Verarbeitungsschaltung und/oder Verarbeitungseinheit handeln kann. Eine solche Speichereinheit kann ein Nur-Lese-Speicher, ein Direktzugriffsspeicher, ein flüchtiger Speicher, ein nicht flüchtiger Speicher, ein statischer Speicher, ein dynamischer Speicher, ein Flashspeicher, ein Cachespeicher und/oder eine beliebige Einheit sein, die digitale Informationen speichert. Man beachte, dass sich, wenn das Verarbeitungsmodul, das Modul, die Verarbeitungsschaltung und/oder die Verarbeitungseinheit mehr als eine Verarbeitungseinheit enthält, die Verarbeitungseinheiten an einer zentralen Stelle befinden können (z.B. über eine drahtgebundene und/oder drahtlose Busstruktur direkt miteinander verbunden sein können) oder verteilt angeordnet sein können (z.B. Cloud-Computing durch indirekte Verbindung über ein lokales Netz und/oder ein Weitverkehrsnetz). Man beachte des Weiteren, dass sich, wenn das Verarbeitungsmodul, das Modul, die Verarbeitungsschaltung und/oder die Verarbeitungseinheit eine oder mehrere seiner/ihrer Funktionen über eine Zustandsmaschine, einen Analogschaltkreis, Digitalschaltkreis und/oder Logikschaltkreis ausführt, der Speicher und/oder das Speicherelement, der bzw. das die entsprechenden ausführbaren Anweisungen speichert, in der Schaltlogik eingebettet sein oder sich außerhalb der Schaltlogik befinden kann, welche die Zustandsmaschine, den Analogschaltkreis, Digitalschaltkreis und/oder Logikschaltkreis aufweist. Man beachte des Weiteren noch, dass das Speicherelement fest codierte und/oder ausführbare Anweisungen speichern kann und das Verarbeitungsmodul, das Modul, die Verarbeitungsschaltung und/oder die Verarbeitungseinheit fest codierte und/oder ausführbare Anweisungen ausführt, die mindestens einigen der in einer oder mehreren der Figuren veranschaulichten Schritte und/oder Funktionen entsprechen. Ein(e) solche(s) Speichereinheit oder Speicherelement kann in einem Herstellungsprodukt enthalten sein.
  • Eine oder mehrere Ausführungsformen wurden vorstehend mit Hilfe von Verfahrensschritten beschrieben, die die Leistungsfähigkeit von angegebenen Funktionen und deren Beziehungen veranschaulichen. Die Grenzen und die Abfolge dieser Funktionsbausteine und Verfahrensschritte wurden hierin der Einfachheit der Beschreibung halber willkürlich definiert. Alternative Grenzen und Abfolgen können definiert werden, solange die angegebenen Funktionen und Beziehungen ordnungsgemäß ausgeführt werden. Beliebige solcher alternativen Grenzen bzw. Abfolgen fallen somit unter den Umfang und die Wesensart der Ansprüche. Des Weiteren wurden die Grenzen dieser Funktionsbausteine der Einfachheit der Beschreibung halber willkürlich definiert. Alternative Grenzen können definiert werden, solange die bestimmten wesentlichen Funktionen ordnungsgemäß ausgeführt werden. Ebenso wurden Blöcke der Ablaufpläne hierin gegebenenfalls ebenfalls willkürlich definiert, um eine bestimmte wesentliche Funktionalität zu veranschaulichen.
  • Soweit sie verwendet wurden, könnten die Grenzen und die Abfolge der Blöcke der Ablaufpläne in anderer Weise definiert worden sein und dennoch die bestimmte wesentliche Funktionalität ausführen. Solche alternativen Definitionen sowohl von Funktionsbausteinen als auch von Blöcken und Abfolgen der Ablaufpläne fallen somit unter den Umfang und die Wesensart der Ansprüche. Der Fachmann erkennt auch, dass die Funktionsbausteine und andere veranschaulichende Blöcke, Module und Komponenten hierin wie veranschaulicht ausgeführt sein können oder durch diskrete Komponenten, anwendungsspezifische integrierte Schaltungen, geeignete Software ausführende Prozessoren und dergleichen oder eine beliebige Kombination daraus ausgeführt werden können.
  • Ferner kann ein Ablaufplan eine Angabe „Start“ und/oder „fortfahren“ enthalten. Die „Start-‟ und „Fortfahren“-Angaben zeigen, dass die dargelegten Schritte optional in anderen Routinen enthalten sein oder andernfalls in Verbindung mit anderen Routinen verwendet werden können. In diesem Kontext gibt „Start“ den Beginn des ersten dargelegten Schrittes an und ihm können andere Aktivitäten, die nicht explizit gezeigt sind, vorausgehen. Des Weiteren zeigt die Angabe „fortfahren“ an, dass die dargelegten Schritte mehrfach durchgeführt werden können und/oder andere Aktivitäten, die nicht explizit gezeigt sind, auf sie folgen können. Während ein Ablaufplan eine bestimmte Reihenfolge von Schritten angibt, sind des Weiteren ebenso auch andere Reihenfolgen möglich, vorausgesetzt, die Prinzipien der Kausalität werden eingehalten.
  • Die eine oder die mehreren Ausführungsformen werden hierin verwendet, um einen oder mehrere Aspekte, ein oder mehrere Merkmale, ein oder mehrere Konzepte und/oder ein oder mehrere Beispiele zu veranschaulichen. Eine physische Ausführungsform einer Vorrichtung, eines Herstellungsprodukts, einer Maschine und/oder eines Prozesses kann einen/eines oder mehrere der Aspekte, Merkmale, Konzepte, Beispiele usw. enthalten, die unter Bezugnahme auf eine oder mehrere der hierin erörterten Ausführungsformen beschrieben wurden. Des Weiteren können die Ausführungsformen, von Figur zu Figur, dieselben oder ähnlich bezeichnete Funktionen, Schritte, Module usw. enthalten, die dieselben oder unterschiedliche Bezugszahlen verwenden können, und somit kann es sich bei den Funktionen, Schritten, Modulen usw. um dieselben oder ähnliche Funktionen, Schritte, Module usw. oder um unterschiedliche Funktionen, Schritte, Module handeln.
  • Sofern nicht ausdrücklich Gegenteiliges angegeben ist, können Signale an, von und/oder zwischen Elemente(n) in einer Figur von beliebigen der hierin vorgelegten Figuren analog oder digital, zeitkontinuierlich oder zeitdiskret und massebezogen oder differenziell sein. Wenn ein Signalpfad zum Beispiel als ein massebezogener Pfad gezeigt ist, stellt er auch einen differenziellen Signalpfad dar. Wenn ein Signalpfad als ein differenzieller Pfad gezeigt ist, stellt er ebenso auch einen massebezogenen Signalpfad dar. Während eine oder mehrere bestimmte Architekturen hierin beschrieben sind, können ebenso andere Architekturen ausgeführt werden, die einen oder mehrere Datenbusse, die nicht ausdrücklich gezeigt sind, eine direkte Anschlussmöglichkeit zwischen Elementen und/oder eine indirekte Verbindung zwischen anderen Elementen verwenden, wie der Fachmann erkennt.
  • Der Begriff „Modul“ wird in der Beschreibung von einer oder mehreren der Ausführungsformen verwendet. Ein Modul führt eine oder mehrere Funktionen über eine Einheit wie beispielsweise einen Prozessor oder eine andere Verarbeitungseinheit oder andere Hardware aus, die einen Speicher enthalten oder zusammen mit einem Speicher arbeiten kann, der ausführbare Anweisungen speichert. Ein Modul kann unabhängig und/oder in Verbindung mit Software und/oder Firmware arbeiten. Wie hierin ebenfalls verwendet, kann ein Modul ein oder mehrere Untermodule enthalten, die jeweils ein oder mehrere Module sein können.
  • Wie hierin gegebenenfalls des Weiteren verwendet, enthält ein durch einen Computer lesbarer Speicher ein oder mehrere Speicherelemente. Ein Speicherelement kann eine getrennte Speichereinheit, mehrere Speichereinheiten oder ein Satz von Speicherplätzen innerhalb einer Speichereinheit sein. Eine solche Speichereinheit kann ein Nur-Lese-Speicher, ein Direktzugriffsspeicher, ein flüchtiger Speicher, ein nicht flüchtiger Speicher, ein statischer Speicher, ein dynamischer Speicher, ein Flashspeicher, ein Cachespeicher und/oder eine beliebige Einheit sein, die digitale Informationen speichert. Die Speichereinheit kann in einer Form eines Solid-State-Speichers, eines Festplattenlaufwerksspeichers, eines Cloud-Speichers, eines Thumb-Drives, eines Serverspeichers, eines Datenverarbeitungseinheit-Speichers und/oder eines anderen physischen Mediums zur Speicherung von digitalen Informationen vorkommen.
  • Während bestimme Kombinationen von verschiedenen Funktionen und Merkmalen der einen oder der mehreren Ausführungsformen hierin ausdrücklich beschrieben wurden, sind andere Kombinationen dieser Merkmale und Funktionen ebenfalls möglich. Die vorliegende Offenbarung ist nicht durch die hierin offenbarten bestimmten Beispiele beschränkt und beinhaltet ausdrücklich diese anderen Kombinationen.
  • Claims (21)

    1. Datenverarbeitungseinheit, die aufweist: eine Schnittstelle, die so konfiguriert ist, dass sie die Schnittstelle zu einem gestreuten oder verteilten Speichernetzwerk (DSN) bildet und mit diesem Daten austauscht; Speicher, der ausführbare Anweisungen speichert; ein Verarbeitungsmodul, das mit der Schnittstelle und dem Speicher betriebsfähig verbunden ist, wobei das Verarbeitungsmodul, wenn es innerhalb der Datenverarbeitungseinheit beruhend auf den ausführbaren Anweisungen funktionsfähig ist, so konfiguriert ist, dass es: von einer anfordernden Datenverarbeitungseinheit und über das DSN eine Anforderung empfängt, ein Datenobjekt innerhalb einer Vielzahl von verteilten Speicher-(DS-)Einheiten zu speichern; eine Vorschlagsnachricht erzeugt, die einen zu dem Datenobjekt gehörenden Quellennamen, einen ersten Wert für den Quellennamen und eine Vorschlagsversuchskennung enthält; die Vorschlagsnachricht an die Vielzahl der DS-Einheiten überträgt; als Reaktion auf die Vorschlagsnachricht eine Schwellenwertanzahl von Vorschlagsnachricht-Antworten von der Vielzahl der DS-Einheiten empfängt, wobei eine Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten von einer DS-Einheit der Vielzahl der DS-Einheiten empfangen wird und einem zweiten Wert für den Quellennamen entspricht, der von der DS-Einheit zuletzt akzeptiert wurde und des Weiteren angibt, ob die DS-Einheit der Vielzahl der DS-Einheiten eine beliebige andere Vorschlagsnachricht empfangen hat; wenn die Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten, die von der DS-Einheit der Vielzahl der DS-Einheiten empfangen wird, angibt, dass von der DS-Einheit der Vielzahl der DS-Einheiten keine anderen Vorschlagsnachrichten empfangen wurden, den ersten Wert für den Quellennamen verwendet, der in der Vorschlagsnachricht als ein persistenter Wert für den Quellennamen enthalten ist, und die anfordernde Datenverarbeitungseinheit über den persistenten Wert für den Quellennamen benachrichtigt; und wenn die Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten, die von der DS-Einheit der Vielzahl der DS-Einheiten empfangen wird, angibt, dass von der DS-Einheit der Vielzahl der DS-Einheiten mindestens eine andere Vorschlagsnachricht empfangen wurde, einen dritten Wert für den Quellennamen beruhend auf der Schwellenwertanzahl der Vorschlagsnachricht-Antworten von der Vielzahl der DS-Einheiten als den persistenten Wert für den Quellennamen verwendet und die anfordernde Datenverarbeitungseinheit über den persistenten Wert für den Quellennamen benachrichtigt.
    2. Datenverarbeitungseinheit nach Anspruch 1, wobei der persistente Wert beruhend auf der Ausführung einer deterministischen Funktion durch das Verarbeitungsmodul ermittelt wird.
    3. Datenverarbeitungseinheit nach Anspruch 1, wobei der dritte Wert für den Quellennamen gleich dem zweiten Wert für den Quellennamen ist.
    4. Datenverarbeitungseinheit nach Anspruch 2, wobei die deterministische Funktion des Weiteren durch andere Verarbeitungseinheiten ausgeführt wird, die Vorschlagsnachricht-Antworten für den Quellennamen empfangen, und des Weiteren, wobei das Ausführen der deterministischen Funktion zu dem dritten Wert für den Quellennamen führt.
    5. Datenverarbeitungseinheit nach Anspruch 1, wobei der persistente Wert beruhend auf dem durch das Verarbeitungsmodul ausgeführten Abstimmungsprozess ermittelt wird.
    6. Datenverarbeitungseinheit nach Anspruch 5, wobei der Abstimmungsprozess das Wählen eines Stimmzettelwerts beruhend auf einem zu der Vorschlagsnachricht gehörenden Zeitstempel beinhaltet.
    7. Datenverarbeitungseinheit nach Anspruch 5, wobei der Abstimmungsprozess zu zwei möglichen persistenten Werten führt und der persistente Wert aus den beiden möglichen persistenten Werten gewählt wird, nachdem ein zweites Verarbeitungsmodul und ein drittes Verarbeitungsmodul, die jeweils zu den beiden möglichen persistenten Werten gehören, erneut Vorschlagsnachrichten übertragen haben, die übertragen wurden, nachdem das Verarbeitungsmodul die Schwellenwertanzahl der Vorschlagsnachrichten empfangen hat.
    8. Datenverarbeitungseinheit nach Anspruch 1, wobei ein ausgewähltes anderes Verarbeitungsmodul zu dem dritten Wert gehört und der dritte Wert ermittelt wird, nachdem das ausgewählte andere Verarbeitungsmodul eine zu dem dritten Wert gehörende Vorschlagsnachricht übertragen hat, nachdem das Verarbeitungsmodul die Schwellenwertanzahl der Vorschlagsnachrichten empfangen hat.
    9. Datenverarbeitungseinheit nach Anspruch 8, wobei das Übertragen einer zu dem dritten Wert gehörenden Vorschlagsnachricht, nachdem das Verarbeitungsmodul die Schwellenwertanzahl der Vorschlagsnachrichten von dem ausgewählten anderen Verarbeitungsmodul empfangen hat, darauf beruht, dass das ausgewählte andere Verarbeitungsmodul feststellt, dass die zu dem dritten Wert gehörende Vorschlagsnachricht einen bevorzugten in Frage kommenden Wert für den persistenten Wert enthält.
    10. Verfahren zur Ausführung durch ein oder mehrere Verarbeitungsmodule von einer oder mehreren Datenverarbeitungseinheiten eines gestreuten Speichernetzwerks (DSN), wobei das Verfahren aufweist: Empfangen, von einer anfordernden Datenverarbeitungseinheit und über das DSN, einer Anforderung, ein Datenobjekt innerhalb einer Vielzahl von verteilten Speicher-(DS-)Einheiten zu speichern; Erzeugen einer Vorschlagsnachricht, die einen zu dem Datenobjekt gehörenden Quellennamen, einen ersten Wert für den Quellennamen und eine Vorschlagsversuchskennung enthält; Übertragen der Vorschlagsnachricht an die Vielzahl der DS-Einheiten; als Reaktion auf die Vorschlagsnachricht Empfangen einer Schwellenwertanzahl von Vorschlagsnachricht-Antworten von der Vielzahl der DS-Einheiten, wobei eine Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten von einer DS-Einheit der Vielzahl der DS-Einheiten empfangen wird und einem zweiten Wert für den Quellennamen entspricht, der von der DS-Einheit zuletzt akzeptiert wurde und des Weiteren angibt, ob die DS-Einheit der Vielzahl der DS-Einheiten eine beliebige andere Vorschlagsnachricht empfangen hat; wenn die Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten, die von der DS-Einheit der Vielzahl der DS-Einheiten empfangen wird, angibt, dass von der DS-Einheit der Vielzahl der DS-Einheiten keine anderen Vorschlagsnachrichten empfangen wurden, Verwenden des ersten Werts für den Quellennamen, der in der Vorschlagsnachricht als ein persistenter Wert für den Quellennamen enthalten ist, und Benachrichtigen der anfordernden Datenverarbeitungseinheit über den persistenten Wert für den Quellennamen; und wenn die Vorschlagsnachricht-Antwort der Schwellenwertanzahl von Vorschlagsnachricht-Antworten, die von der DS-Einheit der Vielzahl der DS-Einheiten empfangen wird, angibt, dass von der DS-Einheit der Vielzahl der DS-Einheiten mindestens eine andere Vorschlagsnachricht empfangen wurde, Verwenden eines dritten Werts für den Quellennamen beruhend auf der Schwellenwertanzahl der Vorschlagsnachricht-Antworten von der Vielzahl der DS-Einheiten als den persistenten Wert für den Quellennamen und Benachrichtigen der anfordernden Datenverarbeitungseinheit über den persistenten Wert für den Quellennamen.
    11. Verfahren nach Anspruch 10, wobei der persistente Wert beruhend auf der Ausführung einer deterministischen Funktion durch das Verarbeitungsmodul ermittelt wird.
    12. Verfahren nach Anspruch 10, wobei der dritte Wert für den Quellennamen gleich dem zweiten Wert für den Quellennamen ist.
    13. Verfahren nach Anspruch 11, wobei die deterministische Funktion des Weiteren von anderen Verarbeitungseinheiten ausgeführt wird, die Vorschlagsnachricht-Antworten für den Quellennamen empfangen, und des Weiteren, wobei das Ausführen der deterministischen Funktion zu dem dritten Wert für den Quellennamen führt.
    14. Verfahren nach Anspruch 10, wobei der persistente Wert beruhend auf dem durch das Verarbeitungsmodul ausgeführten Abstimmungsprozess ermittelt wird.
    15. Verfahren nach Anspruch 14, wobei der Abstimmungsprozess das Wählen eines Stimmzettelwerts beruhend auf einem zu der Vorschlagsnachricht gehörenden Zeitstempel beinhaltet.
    16. Verfahren nach Anspruch 14, wobei der Abstimmungsprozess zu zwei möglichen persistenten Werten führt und der persistente Wert aus den beiden möglichen persistenten Werten gewählt wird, nachdem ein zweites Verarbeitungsmodul und ein drittes Verarbeitungsmodul, die jeweils zu den beiden möglichen persistenten Werten gehören, erneut Vorschlagsnachrichten übertragen, die übertragen werden, nachdem das Verarbeitungsmodul die Schwellenwertanzahl der Vorschlagsnachrichten empfangen hat.
    17. Verfahren nach Anspruch 10, wobei ein ausgewähltes anderes Verarbeitungsmodul zu dem dritten Wert gehört und der dritte Wert ermittelt wird, nachdem das ausgewählte andere Verarbeitungsmodul eine zu dem dritten Wert gehörende Vorschlagsnachricht übertragen hat, nachdem das Verarbeitungsmodul die Schwellenwertanzahl der Vorschlagsnachrichten empfangen hat.
    18. Verfahren nach Anspruch 17, wobei das Übertragen einer zu dem dritten Wert gehörenden Vorschlagsnachricht, nachdem das Verarbeitungsmodul die Schwellenwertanzahl der Vorschlagsnachrichten von dem ausgewählten anderen Verarbeitungsmodul empfangen hat, darauf beruht, dass das ausgewählte andere Verarbeitungsmodul feststellt, dass die zu dem dritten Wert gehörende Vorschlagsnachricht einen bevorzugten in Frage kommenden Wert für den persistenten Wert enthält.
    19. Verfahren zur Ausführung durch ein oder mehrere Verarbeitungsmodule von einer oder mehreren Datenverarbeitungseinheiten eines gestreuten Speichernetzwerks (DSN), wobei das Verfahren aufweist: Empfangen durch eine Datenverarbeitungseinheit einer Zugriffsanforderung, die für eine Schwellenwertanzahl von Speichereinheiten eines gestreuten Speichernetzwerks (DSN) vorgesehen ist, wobei die Zugriffsanforderung für einen zu einem Quellennamen gehörenden Wert ist, und des Weiteren wobei die Datenverarbeitungseinheit eine oder mehrere Vorschlagsnachricht-Antworten von mindestens einigen der Schwellenwertanzahl der Speichereinheiten empfangen hat; Feststellen, ob der zu dem Quellennamen gehörende Wert ein persistenter Wert für den Quellennamen ist, wobei die Feststellung darauf beruht, dass die Datenverarbeitungseinheit eine Schwellenwertanzahl von Vorschlagsnachricht-Antworten von der Schwellenwertanzahl der Speichereinheiten empfangen hat, und des Weiteren wobei die Feststellung ebenfalls darauf beruht, ob die Schwellenwert-Vorschlagsnachricht-Antworten angeben, dass ein Konsenswert für den zu dem Quellennamen gehörenden Wert ermittelt wurde; und wenn der zu dem Quellennamen gehörende Wert der persistente Wert für den Quellennamen ist, Übertragen des zu dem Quellennamen gehörenden Werts an die anfordernde Datenverarbeitungseinheit.
    20. Das Verfahren nach Anspruch 19 weist des Weiteren auf: wenn der zu dem Quellennamen gehörende Wert kein persistenter Wert für den Quellennamen ist, Feststellen, dass ein persistenter Wert nicht ermittelt werden kann, und Auswählen eines zuvor gespeicherten Werts für den zu dem Quellennamen gehörenden Wert und Übertragen des zuvor gespeicherten Werts an die anfordernde Datenverarbeitungseinheit.
    21. Datenverarbeitungseinheit, die aufweist: eine Schnittstelle, die so konfiguriert ist, dass sie die Schnittstelle zu einem gestreuten oder verteilten Speichernetzwerk (DSN) bildet und mit diesem Daten austauscht; Speicher, der ausführbare Anweisungen speichert; ein Verarbeitungsmodul, das mit der Schnittstelle und dem Speicher betriebsfähig verbunden ist, wobei das Verarbeitungsmodul, wenn es innerhalb der Datenverarbeitungseinheit beruhend auf den ausführbaren Anweisungen funktionsfähig ist, so konfiguriert ist, dass es ein Verfahren nach Anspruch 19 oder 20 ausführt.
    DE112018001561.0T 2017-06-05 2018-06-01 Verteiltes speichernetzwerk Active DE112018001561B4 (de)

    Applications Claiming Priority (3)

    Application Number Priority Date Filing Date Title
    US15/613,531 2017-06-05
    US15/613,531 US10372381B2 (en) 2017-06-05 2017-06-05 Implicit leader election in a distributed storage network
    PCT/IB2018/053932 WO2018224925A1 (en) 2017-06-05 2018-06-01 Distributed storage network

    Publications (2)

    Publication Number Publication Date
    DE112018001561T5 DE112018001561T5 (de) 2019-12-24
    DE112018001561B4 true DE112018001561B4 (de) 2021-04-08

    Family

    ID=64459663

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112018001561.0T Active DE112018001561B4 (de) 2017-06-05 2018-06-01 Verteiltes speichernetzwerk

    Country Status (6)

    Country Link
    US (3) US10372381B2 (de)
    JP (1) JP7015848B2 (de)
    CN (1) CN110663031B (de)
    DE (1) DE112018001561B4 (de)
    GB (1) GB2576468B (de)
    WO (1) WO2018224925A1 (de)

    Families Citing this family (4)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US10372381B2 (en) * 2017-06-05 2019-08-06 International Business Machines Corporation Implicit leader election in a distributed storage network
    US10671482B2 (en) * 2017-09-12 2020-06-02 Cohesity, Inc. Providing consistency in a distributed data store
    CN111488333B (zh) * 2020-05-18 2023-07-11 网易(杭州)网络有限公司 数据处理方法及装置、存储介质和电子设备
    CN114338695B (zh) * 2022-03-10 2022-05-24 深圳艾灵网络有限公司 基于多副本的领导者选举方法、装置、设备及存储介质

    Citations (2)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US20110161681A1 (en) * 2008-03-31 2011-06-30 Cleversafe, Inc. Directory synchronization of a dispersed storage network
    US20160335202A1 (en) * 2009-12-29 2016-11-17 International Business Machines Corporation Policy-based storage in a dispersed storage network

    Family Cites Families (80)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US4092732A (en) 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
    US5485474A (en) 1988-02-25 1996-01-16 The President And Fellows Of Harvard College Scheme for information dispersal and reconstruction
    US5454101A (en) 1992-09-15 1995-09-26 Universal Firmware Industries, Ltd. Data storage system with set lists which contain elements associated with parents for defining a logical hierarchy and general record pointers identifying specific data sets
    US5987622A (en) 1993-12-10 1999-11-16 Tm Patents, Lp Parallel computer system including parallel storage subsystem including facility for correction of data in the event of failure of a storage device in parallel storage subsystem
    US6175571B1 (en) 1994-07-22 2001-01-16 Network Peripherals, Inc. Distributed memory switching hub
    US5848230A (en) 1995-05-25 1998-12-08 Tandem Computers Incorporated Continuously available computer memory systems
    US5774643A (en) 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
    US5809285A (en) 1995-12-21 1998-09-15 Compaq Computer Corporation Computer system having a virtual drive array controller
    US6012159A (en) 1996-01-17 2000-01-04 Kencast, Inc. Method and system for error-free data transfer
    US5802364A (en) 1996-04-15 1998-09-01 Sun Microsystems, Inc. Metadevice driver rename/exchange technique for a computer system incorporating a plurality of independent device drivers
    US5890156A (en) 1996-05-02 1999-03-30 Alcatel Usa, Inc. Distributed redundant database
    US6058454A (en) 1997-06-09 2000-05-02 International Business Machines Corporation Method and system for automatically configuring redundant arrays of disk memory devices
    US6088330A (en) 1997-09-09 2000-07-11 Bruck; Joshua Reliable array of distributed computing nodes
    US5991414A (en) 1997-09-12 1999-11-23 International Business Machines Corporation Method and apparatus for the secure distributed storage and retrieval of information
    US6272658B1 (en) 1997-10-27 2001-08-07 Kencast, Inc. Method and system for reliable broadcasting of data files and streams
    JPH11161505A (ja) 1997-12-01 1999-06-18 Matsushita Electric Ind Co Ltd メディア送出装置
    JPH11167443A (ja) 1997-12-02 1999-06-22 Casio Comput Co Ltd インターフェイス装置
    US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
    US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
    WO2000011554A1 (en) 1998-08-19 2000-03-02 Boris Nikolaevich Vilkov A system and method for identification of transformation of memory device addresses
    US6356949B1 (en) 1999-01-29 2002-03-12 Intermec Ip Corp. Automatic data collection device that receives data output instruction from data consumer
    US6609223B1 (en) 1999-04-06 2003-08-19 Kencast, Inc. Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
    US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
    US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
    US6718361B1 (en) 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
    DE60131900T2 (de) 2000-10-26 2008-12-04 Flood, James C. jun., Portland Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten
    US7146644B2 (en) 2000-11-13 2006-12-05 Digital Doors, Inc. Data security system and method responsive to electronic attacks
    US7140044B2 (en) 2000-11-13 2006-11-21 Digital Doors, Inc. Data security system and method for separation of user communities
    US7103915B2 (en) 2000-11-13 2006-09-05 Digital Doors, Inc. Data security system and method
    US8176563B2 (en) 2000-11-13 2012-05-08 DigitalDoors, Inc. Data security system and method with editor
    GB2369206B (en) 2000-11-18 2004-11-03 Ibm Method for rebuilding meta-data in a data storage system and a data storage system
    US6785783B2 (en) 2000-11-30 2004-08-31 International Business Machines Corporation NUMA system with redundant main memory architecture
    US7080101B1 (en) 2000-12-01 2006-07-18 Ncr Corp. Method and apparatus for partitioning data for storage in a database
    US20030084020A1 (en) 2000-12-22 2003-05-01 Li Shu Distributed fault tolerant and secure storage
    US6857059B2 (en) 2001-01-11 2005-02-15 Yottayotta, Inc. Storage virtualization system and methods
    US20020161846A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
    US20030037261A1 (en) 2001-03-26 2003-02-20 Ilumin Corporation Secured content delivery system and method
    US6879596B1 (en) 2001-04-11 2005-04-12 Applied Micro Circuits Corporation System and method for systolic array sorting of information segments
    US7024609B2 (en) 2001-04-20 2006-04-04 Kencast, Inc. System for protecting the transmission of live data streams, and upon reception, for reconstructing the live data streams and recording them into files
    GB2377049A (en) 2001-06-30 2002-12-31 Hewlett Packard Co Billing for utilisation of a data storage array
    US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
    US7636724B2 (en) 2001-08-31 2009-12-22 Peerify Technologies LLC Data storage system and method by shredding and deshredding
    US7024451B2 (en) 2001-11-05 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for maintaining consistent independent server-side state among collaborating servers
    US7003688B1 (en) 2001-11-15 2006-02-21 Xiotech Corporation System and method for a reserved memory area shared by all redundant storage controllers
    US7171493B2 (en) 2001-12-19 2007-01-30 The Charles Stark Draper Laboratory Camouflage of network traffic to resist attack
    WO2004012337A2 (en) 2002-07-29 2004-02-05 Robert Halford Multi-dimensional data protection and mirroring method for micro level data
    US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
    US20040122917A1 (en) 2002-12-18 2004-06-24 Menon Jaishankar Moothedath Distributed storage system for data-sharing among client computers running defferent operating system types
    EP1618478A4 (de) 2003-03-13 2007-10-03 Drm Technologies L L C Sicherer strömungsbehälter
    US7185144B2 (en) 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
    GB0308262D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
    GB0308264D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
    US7415115B2 (en) 2003-05-14 2008-08-19 Broadcom Corporation Method and system for disaster recovery of data from a storage device
    US7613945B2 (en) 2003-08-14 2009-11-03 Compellent Technologies Virtual disk drive system and method
    US7899059B2 (en) 2003-11-12 2011-03-01 Agere Systems Inc. Media delivery using quality of service differentiation within a media stream
    US8332483B2 (en) 2003-12-15 2012-12-11 International Business Machines Corporation Apparatus, system, and method for autonomic control of grid system resources
    US7206899B2 (en) 2003-12-29 2007-04-17 Intel Corporation Method, system, and program for managing data transfer and construction
    US7222133B1 (en) 2004-02-05 2007-05-22 Unisys Corporation Method for reducing database recovery time
    US7240236B2 (en) 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
    US7231578B2 (en) 2004-04-02 2007-06-12 Hitachi Global Storage Technologies Netherlands B.V. Techniques for detecting and correcting errors using multiple interleave erasure pointers
    JP4446839B2 (ja) 2004-08-30 2010-04-07 株式会社日立製作所 ストレージ装置及びストレージ管理装置
    US7680771B2 (en) 2004-12-20 2010-03-16 International Business Machines Corporation Apparatus, system, and method for database provisioning
    US7386758B2 (en) 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
    US7672930B2 (en) 2005-04-05 2010-03-02 Wal-Mart Stores, Inc. System and methods for facilitating a linear grid database with data organization by dimension
    US7546427B2 (en) 2005-09-30 2009-06-09 Cleversafe, Inc. System for rebuilding dispersed data
    US7904475B2 (en) 2007-10-09 2011-03-08 Cleversafe, Inc. Virtualized data storage vaults on a dispersed data storage network
    US7574570B2 (en) 2005-09-30 2009-08-11 Cleversafe Inc Billing system for information dispersal system
    US8171101B2 (en) 2005-09-30 2012-05-01 Cleversafe, Inc. Smart access to a dispersed data storage network
    US8285878B2 (en) 2007-10-09 2012-10-09 Cleversafe, Inc. Block based access to a dispersed data storage network
    US7953937B2 (en) 2005-09-30 2011-05-31 Cleversafe, Inc. Systems, methods, and apparatus for subdividing data for storage in a dispersed data storage grid
    US7574579B2 (en) 2005-09-30 2009-08-11 Cleversafe, Inc. Metadata management system for an information dispersed storage system
    US20070214285A1 (en) 2006-03-08 2007-09-13 Omneon Video Networks Gateway server
    US8549351B2 (en) 2007-10-09 2013-10-01 Cleversafe, Inc. Pessimistic data reading in a dispersed storage network
    US10104168B2 (en) 2011-12-12 2018-10-16 International Business Machines Corporation Method for managing throughput in a distributed storage network
    JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
    CN105659213B (zh) * 2013-10-18 2018-12-14 株式会社日立制作所 无共享分布式存储系统中的目标驱动独立数据完整性和冗余恢复
    US10020826B2 (en) * 2014-04-02 2018-07-10 International Business Machines Corporation Generating molecular encoding information for data storage
    US9542239B2 (en) * 2014-04-30 2017-01-10 International Business Machines Corporation Resolving write request conflicts in a dispersed storage network
    US10069915B2 (en) * 2015-02-27 2018-09-04 International Business Machines Corporation Storing data in a dispersed storage network
    US10372381B2 (en) * 2017-06-05 2019-08-06 International Business Machines Corporation Implicit leader election in a distributed storage network

    Patent Citations (2)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US20110161681A1 (en) * 2008-03-31 2011-06-30 Cleversafe, Inc. Directory synchronization of a dispersed storage network
    US20160335202A1 (en) * 2009-12-29 2016-11-17 International Business Machines Corporation Policy-based storage in a dispersed storage network

    Also Published As

    Publication number Publication date
    JP7015848B2 (ja) 2022-02-03
    US20220066644A1 (en) 2022-03-03
    DE112018001561T5 (de) 2019-12-24
    GB201918307D0 (en) 2020-01-29
    US20180349039A1 (en) 2018-12-06
    CN110663031B (zh) 2022-12-30
    US20190332273A1 (en) 2019-10-31
    GB2576468A (en) 2020-02-19
    GB2576468B (en) 2020-07-08
    WO2018224925A1 (en) 2018-12-13
    US10372381B2 (en) 2019-08-06
    US11204723B2 (en) 2021-12-21
    US11620087B2 (en) 2023-04-04
    JP2020524324A (ja) 2020-08-13
    CN110663031A (zh) 2020-01-07

    Similar Documents

    Publication Publication Date Title
    DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
    DE112018001561B4 (de) Verteiltes speichernetzwerk
    DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
    DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
    DE112011100623B4 (de) Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz
    DE602005004166T2 (de) Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen
    DE112018005348T5 (de) Optimierung der durchführung einer hohen anzahl von transaktionen auf einer blockchain
    DE112014001873T5 (de) Replikation für Hot-Standby-Online-Datenbank
    DE112019000309B4 (de) Dynamisches batching von berechtigungen in einem verteilten speichernetzwerk
    DE112010004238T5 (de) Intelligente rollierende Aufrüstung für Datenspeichersysteme
    DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
    DE112005002481T5 (de) Rekonfigurierung einer redundanten Datenspeicherung
    DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
    DE112012001267T5 (de) Verfahren, Systeme und Computerprogrammprodukte zur abgestimmten Notfallwiederherstellung
    DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
    DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
    DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
    DE112017002940T5 (de) Standard- und Nicht-Standard-Datenzugriff auf verstreute Speichernetzwerke
    DE112011103367T5 (de) Replizieren von Daten
    DE112015000222T5 (de) Zusammenführen von mehreren Zeitpunktkopien zu einer zusammengeführten Zeitpunktkopie
    DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
    DE112018001290T5 (de) Verfahren zum Schätzen der Löschbarkeit von Datenobjekten
    DE112021003747T5 (de) Erkennen von anomalien in einer netzwerktopologie
    WO2006040139A1 (de) Serverlose replikation von datenbanken
    DE112017006889T5 (de) Monotone Transaktionen in einer Multimasterdatenbank mit lose verbundenen Knoten

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R016 Response to examination communication
    R018 Grant decision by examination section/examining division
    R084 Declaration of willingness to licence
    R020 Patent grant now final