DE202012013432U1 - Speichern von Daten auf Speicherknoten - Google Patents

Speichern von Daten auf Speicherknoten Download PDF

Info

Publication number
DE202012013432U1
DE202012013432U1 DE202012013432.9U DE202012013432U DE202012013432U1 DE 202012013432 U1 DE202012013432 U1 DE 202012013432U1 DE 202012013432 U DE202012013432 U DE 202012013432U DE 202012013432 U1 DE202012013432 U1 DE 202012013432U1
Authority
DE
Germany
Prior art keywords
storage node
storage
cache
file
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.)
Expired - Lifetime
Application number
DE202012013432.9U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202012013432U1 publication Critical patent/DE202012013432U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity

Abstract

System, umfassend ein oder mehrere Datenverarbeitungsgeräten, die konfiguriert sind, um Vorgänge auszuführen, Folgendes umfassend: das Empfangen der Datei zum Speichern auf einer Vielzahl von Speicherknoten, von denen jeder einen Zwischenspeicher hat; das Speichern der Datei durch Speichern einer Vielzahl von Dateianteilen auf einem anderen Speicherknoten, einschließlich des Schreibens eines ersten Anteils auf den Zwischenspeicher eines ersten Speicherknotens, bis festgelegt wird, dass der Zwischenspeicher des ersten Speicherknotens voll ist, und das Auswählen eines anderen zweiten Speicherknotens in Folge des Festlegens, dass der Zwischenspeicher des ersten Speicherknotens voll ist; und das Aufzeichnen des Speicherorts des Anteils für jeden Dateianteil, wobei der Speicherort mindestens einen Speicherknoten angibt, der den Anteil speichert.

Description

  • VERWEIS
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • HINTERGRUND
  • Diese Spezifizierung bezieht sich auf das Speichern von digitalen Daten auf physischen Speichergeräten.
  • Data-Striping beinhaltet das Speichern von Daten auf einer Reihe von Speichergeräten. Anstatt alle Daten auf ein einziges Gerät zu schreiben, werden die Daten parallel auf mehrere Geräte geschrieben, damit die allgemeine geschriebene Datenrate höher ist, als dies mit nur einem einzigen Gerät möglich wäre. Data-Striping kann mit anderen Techniken zur Datenspeicherung kombiniert werden, zum Beispiel dem Speichern von veralteten Daten, von Fehlererkennung oder Fehlerkorrektur-Codes mit den Daten, um einen schnellen, verlässlichen Speicher zu erstellen.
  • ZUSAMMENFASSUNG
  • Ein Computer-Speichersystem speichert eine Datei auf einer Anzahl von Speicherknoten. Jeder Speicherknoten beinhaltet ein oder mehrere Speichergeräte und jeder Speicherknoten beinhaltet einen Zwischenspeicher (z. B.: Arbeitsspeicher (RAM)) und einen langsameren Speicher (z. B.: eine Festplatte). Der Zwischenspeicher kann Daten schneller speichern, als der langsamere Speicher. Ein Speicherknoten kann zum Beispiel eine Festplatte mit den Fähigkeiten eines Zwischenspeichers sein. Das Computer-Speichersystem schreibt Daten von der Datei auf einen ersten Speicherknoten bis der Zwischenspeicher des ersten Speicherknoten voll ist und schreibt die Daten dann von der Datei auf einen zweiten Speicherknoten. Der erste Speicherknoten kopiert die Daten vom Zwischenspeicher des ersten Speicherknoten auf den langsameren Speicher des ersten Speicherknotens. Das Computer-Speichersystem schreibt Daten weiterhin auf verschiedene Speichergeräte, damit die Datei vollständig gespeichert wird. Daten, die auf Speicherknoten geschrieben sind, können in gleicher Weise geschrieben werden, ungeachtet dessen, ob die Speicherknoten zum Beispiel an einen einzelnen Computer oder mehrere Datenverarbeitungsgeräte angeschlossen sind.
  • Im allgemeinen kann ein innovativer Aspekt der in dieser Spezifizierung beschriebenen Thematik in Methoden ausgedrückt werden, die Aktionen zum Empfang einer Datei zur Speicherung auf einer Vielzahl von Speicherknoten beinhalten, wobei jeder Speicherknoten einen Zwischenspeicher beinhaltet; das Speichern der Datei durch Speichern einer Vielzahl von Dateianteilen, jedes auf einem unterschiedlichen Speicherknoten, einschließlich Schreiben eines ersten Teils auf dem Zwischenspeicher eines ersten Speicherknotens bis festgelegt wird, dass der Zwischenspeicher des ersten Speicherknotens voll ist und Auswählen eines anderen zweiten Speicherknotens als Folge der Festlegung, dass der Zwischenspeicher des ersten Speicherknotens voll ist, und der Aufzeichnung, für jeden Teil der Datei, des Orts, der mindestens einen Speicherknoten angibt, der den Teil speichert. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Systeme, Apparate und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierten Handlungen des Verfahrens ausführen.
  • Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Eigenschaften beinhalten. Festlegen, dass der Zwischenspeicher des ersten Speicherknotens voll ist besteht aus der Festlegung, dass eine Datenspeicherungsrate für das Schreiben des ersten Teils gesunken ist. Festlegen, dass der Zwischenspeicher des ersten Speicherknotens voll ist besteht aus dem Festlegen einer Menge des ersten Teils auf eine bekannte Größe des Zwischenspeichers des ersten Speicherknotens und Festlegen, dass die Menge mit der bekannten Größe übereinstimmt oder diese übersteigt. Auswählen des zweiten Speicherknotens umfasst die willkürliche Auswahl des zweiten Speicherknotens aus den Speicherknoten. Auswählen des zweiten Speicherknotens umfasst die Auswahl eines Speicherknotens mit einer Schreibzeit, die am weitesten zurück in der Vergangenheit liegt. Die Aktionen umfassen desweiteren die Zuteilung eines Stellenwerts für jeden der Speicherknoten, wobei die Auswahl des zweiten Speicherknotens die Verwendung der Stellenwerte beinhaltet. Jeder Stellenwert eines Speicherknotens basiert auf einem Leistungsmerkmal des Speicherknotens. Die Auswahl des zweiten Speicherknotens basiert auf einem oder mehrerer der: Leistungsmerkmale des zweiten Speicherknotens, Nutzungsgeschichte des zweiten Speicherknotens und vergangener Leistungsnachweis des zweiten Speicherknotens. Die Auswahl des zweiten Speicherknotens basiert auf einem oder mehrerer der: absoluten Mengen, die vom zweiten Speicherknoten gespeichert werden und eine Menge an Daten, die vom zweiten Speicherknoten relativ zur Kapazität des zweiten Speicherknotens gespeichert werden. Der erste Speicherknoten kopiert den ersten Teil vom Zwischenspeicher des ersten Speicherknotens auf den langsameren Speicher als Folge des Schreibens des ersten Teils aus dem Zwischenspeicher des ersten Speicherknotens. Das Speichern der Datei umfasst das Schreiben des zweiten Teils auf den zweiten Speicherknoten. Das Schreiben des zweiten Teils auf den zweiten Speicherknoten umfasst das Schreiben des zweiten Teils auf den Zwischenspeicher des zweiten Speicherknotens bis festgelegt wird, dass der Zwischenspeicher des zweiten Speicherknotens voll ist. Das Speichern der Datei umfasst das fortgeführte Schreiben der Teile auf die Datei auf verschiedene Speicherknoten bis die Datei vollständig auf den Speicherknoten gespeichert ist. Die Aktionen umfassen desweiteren den Empfang einer Anfrage für die Datei; Lesen des ersten Teils vom ersten Speicherknoten; und Lesen des zweiten Teils vom zweiten Speicherknoten.
  • Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Ein Computer-Speichersystem kann seine Speichergeschwindigkeit erhöhen, indem auf Speicherknoten mit Zwischenspeichern geschrieben wird.
  • Die Speicherknoten werden öfter in einem Zwischenspeicherungsmodus gelassen, um Wartezeiten zu verringern und den Datendurchlauf zu erhöhen. Das Computer-Speichersystem kann die gespeicherten Daten unter Verwendung des Speicherprotokolls wiederherstellen.
  • Die Details einer oder mehrerer Ausführungsformen des in dieser Spezifikation behandelten und beschriebenen Gegenstands sind in den begleitenden Bildern und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines beispielhaften Speichersystems.
  • 2 ist ein Flussdiagramm einer beispielhaften Technik zur Speicherung von Daten auf einer Reihe von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt.
  • 3 ist ein Flussdiagramm einer beispielhaften Technik zur Speicherung von Daten auf einer Reihe von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt.
  • 4 ist ein Flussdiagramm einer beispielhaften Technik zum Lesen von Daten aus einer Reihe von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt.
  • 5 ist eine schematische Darstellung eines beispielhaften Computersystems zur Datenspeicherung.
  • Entsprechende Referenznummern und Kennzeichnungen in den verschiedenen Zeichnungen zeigen entsprechende Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist ein Blockdiagramm eines exemplarischen Speichersystems 102. Das Speichersystem 102 beinhaltet eins oder mehrere Datenverarbeitungsgeräte, die geographisch verteilt werden können. Das Speichersystem 102 speichert Dateien von digitalen Daten auf einer Reihe von Speicherknoten 110a–d. Das Speichersystem 102 kann eine elektronische Datei (oder „Datei”) von einem Kundengerät 104 über ein Computernetzwerk 106 oder von einem anderen Sender empfangen. Eine Datei kann aus beliebigen Daten bestehen, zum Beispiel Text, ein Bild, Audio-Inhalte oder Kombinationen hiervon. Eine Datei kann von dem Speichersystem 102 empfangen werden wie durch ein Netzwerkdatei-Systemprotokoll zum Beispiel. Andere Protokolle sind möglich. Das Speichersystem 102 kann Daten zur Speicherung erstellen, zum Beispiel durch Erstellen von Serviceprotokollen während normalem Betrieb. Das Speichersystem 102 kann Daten zur Speicherung basierend auf anderen Daten erstellen, zum Beispiel durch Erstellen eines Miniaturbilds von einem Originalbild mit hoher Auflösung. Eine Speicher-Engine 108 legt fest, wie die Dateiinhalte zur Speicherung auf den Speicherknoten 110a–d aufgeteilt werden.
  • Jeder Speicherknoten 110 beinhaltet einen Zwischenspeicher 112 und ein oder mehrere langsamere Speicher- 114 Geräte. Der Zwischenspeicher 112 kann zum Beispiel ein RAM, Flashspeicher, eine Festplatte oder ähnliches sein. Der langsamere Speicher 114 kann auch ein RAM oder eine Festplatte sein, der langsame Speicher 114 benötigt jedoch mehr Zeit, um Daten zu speichern, als der Zwischenspeicher 112. Der langsamere Speicher 114 hat üblicherweise eine größere Speicherkapazität als der Zwischenspeicher 112. Daten, die auf einem Speicherknoten 110 geschrieben werden, werden zuerst auf den Zwischenspeicher 112 geschrieben, da Daten im Zwischenspeicher 112 schneller gespeichert werden können als im langsamen Speicher 114. Der Speicherknoten 110 kopiert dann die Daten vom Zwischenspeicher 112 zum langsameren Speicher 114.
  • Ein Speicherknoten 110 kann zum Beispiel eine Festplatte mit einem RAM-Zwischenspeicher sein. Daten, die auf den Speicherknoten 110 geschrieben werden, werden zuerst auf dem RAM-Zwischenspeicher geschrieben und dann auf die Diskette kopiert. In einem anderen Beispiel ist ein Speicherknoten 110 eine Anordnung von Festplatten mit einem gemeinsamen RAM-Zwischenspeicher, das heißt ein „Redundant Array of Inexpensive Disks” (RAID) (Redundante Anordnung kostengünstiger Festplatten)-Gerät.
  • Obwohl der Speicherknoten 110 mehrere Disketten beinhaltet, kann die Speicher-Engine 108 den Speicherknoten als einzelnes Gerät logisch anwählen.
  • Die Speicher-Engine 108 speichert eine Datei, durch Schreiben eines Teils der Daten von der Datei auf einen Speicherknoten. Die Speicher-Engine 108 schreibt Daten auf diesen Speicherknoten bis festgelegt wird, dass der Zwischenspeicher des Speicherknotens voll ist.
  • Ein Zwischenspeicher ist dann voll, wenn dieser eine Menge an Daten speichert, der seine Kapazität erreicht oder beinahe erreicht, so dass dieser keine neuen Daten zur Speicherung mehr annehmen kann. Techniken zum Festlegen, dass der Zwischenspeicher voll ist, werden im Folgenden beschrieben. Die Speicher-Engine 108 schreibt dann einen anderen Teil der Daten von der Datei auf einen anderen Speicherknoten, bis festgestellt wird, dass der Zwischenspeicher des anderen Speicherknotens voll ist. Die Teile, die von der Speicher-Engine 108 geschrieben wurden, liegen nicht unbedingt benachbart in der Datei und die Dateiinhalte müssen nicht in Reihenfolge geschrieben werden.
  • Die Speicher-Engine 108 schreibt weiterhin Daten von der Datei auf verschiedene Speicherknoten, bis die Dateiinhalte vollständig geschrieben sind. Anderenfalls wird nicht der gesamte Dateiinhalt geschrieben. Falls alle Speicherknoten volle Zwischenspeicher haben, kann die Speicher-Engine 108 warten, bis ein Zwischenspeicher freien Platz hat (nach Kopieren dessen Inhalte auf den langsameren Speicher) oder direct auf den langsameren Speicher schreiben. In einigen Implementierungen wählt die Speicher-Engine 108 weiterhin neue Speicherknoten zum Beschreiben aus, bis diese einen findet, der verfügbar ist, ungeachtet ob alle Speicherknoten volle Zwischenspeicher haben. Durch Schreiben auf die Speicherknoten mit verfügbarem Zwischenspeicher erhöht die Speicher-Engine 108 ihre Datenspeicherrate im Vergleich zum Schreiben einer einzelnen Datei auf ein einzelnes Gerät ungeachtet, ob der Zwischenspeicher voll ist oder nicht.
  • Die Speicher-Engine 108 verfolgt den Speicherort der geschriebenen Daten von der Datei in einem Speicherprotokoll 116 nach. Das Speicherprotokoll 116 beinhaltet Information, die notwendig ist, um die Datei von den Speicherknoten zurückzugewinnen. Das Speicherprotokoll 116 kann zum Beispiel den Speicherort der Daten auf dem ersten Speicherknoten beinhalten. Das Speicherprotokoll 116 beinhaltet auch eine Assoziation zwischen dem Speicherort und der Datei (z. B.: durch Einschließen des Orts und des Dateinamens in der gleichen Eintragung oder derselben Zeile einer Tabelle). Ein beispielhaftes Speicherprotokoll wird im Folgenden in Tabelle 1 dargestellt.
    Dateiname Speicherknoten Adressen Zeitstempel
    Datei 1 A 1–50 1
    B 200–300 2
    C 50–125 3
    Datei 2 A 150–250 4
    C 200–300 5
  • Betrachten Sie zum Beispiel ein beispielhaftes Szenario für das Speichern der „Datei 1”, wie in Tabelle 1 dargestellt. Die ersten drei Zeilen sind über die erste Spalte mit Datei 1 assoziiert. Die erste Zeile gibt an, dass zum vom Zeitstempel 1 angegebenen Zeitpunkt die Speicher-Engine 108 Daten von Datei 1 auf Adressen 1–50 des Speicherknotens A geschrieben hat. Die zweite Zeile gibt an, dass zum vom Zeitstempel 2 angegebenen Zeitpunkt die Speicher-Engine 108 Daten von Datei 1 auf Adressen 200–300 von Speicherknoten B geschrieben hat. Die Speicher-Engine 108 verwendete mehr Adressen auf Speicherknoten B als auf Speicherknoten A, da zum Beispiel Speicherknoten B einen größeren Zwischenspeicher hat als Speicherknoten A oder da der Zwischenspeicher von Speicherknoten A teilweise voll war, als die Speicher-Engine 108 begann die Daten zu schreiben. Die dritte Zeile gibt an, dass zum vom Zeitstempel 3 angegebenen Zeitpunkt die Speicher-Engine 108 Daten von Datei 1 auf Adressen 50–125 vom Speicherknoten C geschrieben hat.
  • Die von Tabelle 1 dargestellten Adressen sind beispielhafte Adressen. Im Allgemeinen beziehen sich die Adressen auf den Speicherorten der Daten auf einem langsameren Speicher an einem Speicherknoten. Obwohl Daten üblicherweise anfänglich auf einen Zwischenspeicher geschrieben werden, beziehen sich die Adressen auf Speicherorten auf einem langsameren Speicher, da die Speicherknoten Daten vom Zwischenspeicher auf den langsameren Speicher kopieren. Ein Speicherknoten kann zum Beispiel den Speicherort der Daten festlegen, die auf dessen Zwischenspeicher auf einem Zielort in einem langsameren Speicher geschrieben wurden.
  • Die Speicher-Engine 108 kann festlegen, dass der Zwischenspeicher eines Speicherknotens voll ist, indem verschiedenen Techniken verwendet werden. Die Speicher-Engine 108 kann zum Beispiel die Rate überwachen, zu welcher der Speicherknoten die Daten annimmt. Wenn die Rate sinkt, legt die Speicher-Engine 108 fest, dass der Zwischenspeicher des Speicherknotens voll ist. In einem anderen Beispiel kann die Speicher-Engine 108 die Menge der Daten festlegen, welche diese auf einen Speicherknoten in einer festgelegten Größe auf dem Zwischenspeicher des Speicherknotens geschrieben hat. Wenn die Menge der geschriebenen Daten die festgelegte Größe überschreitet, legt die Speicher-Engine 108 fest, dass der Zwischenspeicher des Speicherknotens voll ist. Die Speicher-Engine 108 kann bestimmte Größen für die Speicherknoten speichern oder die Speicher-Engine 108 kann einen Speicherknoten nach einer bestimmten Größe anfragen, bevor diese damit beginnt auf den Speicherknoten zu schreiben. In einigen Implementierungen wird keine Festlegung benötigt, da die Speicher-Engine 108 nur die Menge der festgelegten Größe auf einen Speicherknoten schreibt und dann einen anderen Speicherknoten auswählt. Diese Implementierungen sind zum Beispiel nützlich wo genug Zwischenspeicher ist, um anzunehmen, dass jeder Zwischenspeicher leer sein wird, wenn dieser erneut ausgewählt wird.
  • Wenn die Speicher-Engine 108 festlegt, dass der Zwischenspeicher eines Speicherknotens voll ist, kann es unter Verwendung verschiedener Techniken einen anderen Speicherknoten auswählen. Ziehen Sie die folgenden vier beispielhaften Techniken in Betracht.
  • Im ersten Beispiel kann die Speicher-Engine 108 willkürlich einen anderen Speicherknoten auswählen. Dies ist zum Beispiel nützlich, wenn mehrere Speicher-Engines auf verschiedene Speicherknoten schreiben und es schwierig ist, festzulegen, ob an einem beliebigen Speicherknoten genügend Zwischenspeicherplatz verfügbar ist.
  • In einem zweiten Beispiel kann die Speicher-Engine 108 das Speicherprotokoll 116 verwenden, um einen anderen Speicherknoten auszuwählen. Die Speicher-Engine 108 wählt üblicherweise einen Speicherknoten aus mit einer Schreibzeit, die sich am weitesten zurück in der Vergangenheit eines jedes Speicherknotens befindet. Ziehen Sie zum Beispiel das in Tabelle 1 dargestellte Speicherprotokoll in Betracht. Unter den Speicherknoten A, B und C hat Speicherknoten B eine Schreibzeit, die sich am weitesten zurück in der Vergangenheit befindet (bei Zeitstempel 2).
  • In einem dritten Beispiel kann der Speicherknoten 108 eine gewichtete Zufallszuteilung verwenden. Eine gewichtete Zufallszuteilung umfasst die Zuteilung von einem Stellenwert an Speicherknoten und das Auswählen von Speicherknoten basierend auf dem Stellenwert. Angenommen zum Beispiel alle Speicherknoten gehören zu einer der zwei Kategorien A und B. Die zu Kategorie B gehörenden Knoten sind im Durchschnitt zweimal so schnell wie die Knoten, die zu Kategorie A gehören (z. B.: da Knoten, die zu Kategorie B gehören neuere Hardware verwenden). Die Speicher-Engine 108 kann öfter Knoten aus Kategorie B auswählen als Knoten aus Kategorie A um die Systemleistung zu verbessern. In einigen Implementierungen werden Stellenwerte W [k] einem einzelnen Speicherknoten zugeteilt sind und die Speicher-Engine 108 Speicherknoten auswählt, damit die Wahrscheinlichkeit der Auswahl eines Knotens #k sich proportional verhält zu
    Figure DE202012013432U1_0002
  • In einem vierten Beispiel kann die Speicher-Engine 108 Knoten in einer pseudozufälligen Art auswählen. Die Wahrscheinlichkeit, dass ein Knoten ausgewählt wird, basiert auf verschiedenen Faktoren im Bezug auf den Knoten, z. B.: Leistungsmerkmale (z. B.: Zwischenspeichergeschwindigkeit), Nutzungsgeschichte (z. B.: Verwenden des Speicherprotokolls 116), vergangene Leistungsberichte (z. B.: Vermeiden eines Knotens, der ständig oder vorübergehend langsamer ist als andere Knoten).
  • Die Speicher-Engine 108 kann andere Informationen verwenden durch Verwenden eines anderen Speicherknotens. Die Speicher-Engine 108 kann Speicherknoten gemäß einem Plan oder Schema für die Speicherung auswählen. Die Speicher-Engine 108 kann zum Beispiel eine absolute Menge an Daten verwenden, die bereits von einem Speicherknoten gespeichert werden, die Menge an Daten, die von einem Speicherknoten relativ zu dessen Kapazität gespeichert wird (z. B. um einem Schreiben oder dem Versuch eines Schreibens auf einen Knoten zu vermeiden, der voll ist), das Datenalter (z. B.: wo auf neue Daten häufiger zugegriffen wird als auf alte Daten) und so weiter. Die Speicher-Engine 108 kann den Speicherplatz und die Kapazität des Knotens verwenden um zum Beispiel eine einheitliche Speichernutzung in allen verfügbaren Speichern zu ermöglichen und zu vermeiden, dass alle Daten auf wenigen Knoten gespeichert werden.
  • In einem anderen Beispiel kann die Speicher-Engine 108 die Geschwindigkeit und Wartezeit des Datenschreibens mit der Datenverarbeitungskapazität ausgleichen, z. B.: durch Überwachen aktueller oder projektierter Datenzugriffsmuster. Dies ist nützlich zum Beispiel um zu vermeiden, dass eine große Menge an Daten, für die eine hohe Nachfrage besteht, auf einem einzigen Speicherknoten oder nur wenigen Speicherknoten gespeichert wird. Die Speicher-Engine 108 kann Daten benennen, für die eine hohe Nachfrage besteht, zum Beispiel durch Verwendung von vergangenen Datenzugriffsmustern der spezifischen Daten oder durch Verwendung anderer Information über die Daten, z. B.: ob diese kürzlich erstellt wurden. 2 ist ein Flussdiagramm einer beispielhaften Technik 200 zum Speichern von Daten auf einer Reihe von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt. Die Technik 200 kann von einem Computersystem durchgeführt werden, z. B.: dem Computersystem 102 der 1. Zur Veranschaulichung wird die Technik 200 im Bezug auf ein System beschrieben, das die Technik ausführt.
  • Das System benennt eine Datei zum Speichern auf den Speicherknoten (Schritt 202). Das System kann zum Beispiel eine Datei von einem Kundengerät empfangen, z. B.: dem Kundengerät 104 der 1.
  • Das System wählt einen Speicherknoten aus (Schritt 204). Das System kann zum Beispiel willkürlich einen Speicherknoten auswählen oder das System kann einen Speicherknoten auswählen unter Verwendung eines Speicherprotokolls, z. B.: das Speicherprotokoll 116 der 1.
  • Das System speichert Daten von der Datei auf dem ausgewählten Speicherknoten (Schritt 206). Das System kann zum Beispiel eine festgelegte Menge an Daten an den ausgewählten Speicherknoten senden oder das System kann Daten über einen festgelegten Zeitraum streamen.
  • Das System zeichnet den Speicherort der gespeicherten Daten am ausgewählten Speicherknoten aus (Schritt 208). Das System kann zum Beispiel den Speicherort in einem Speicherprotokoll aufzeichnen, z. B.: im Speicherprotokoll 116 der 1. Das System assoziiert den Speicherort der gespeicherten Daten mit der Datei (z. B.: unter Verwendung des Dateinamens oder Dateideskriptors).
  • Das System legt fest, ob die Datei vollständig gespeichert ist (Schritt 210). Falls die Datei gespeichert ist, bezeichnet das System eine andere Datei (Rückkehr zu Schritt 202). Falls die Datei nicht gespeichert ist, legt das System fest, ob der Zwischenspeicher des ausgewählten Speicherknotens voll ist (Schritt 212). Das System kann zum Beispiel die Datenrate überwachen, bei welcher die Daten auf den Speicherknoten geschrieben werden oder eine bestimmte Größe des Speicherknotens mit der Menge der geschriebenen Daten vergleichen.
  • Falls der Zwischenspeicher des ausgewählten Speicherknotens voll ist, wählt das System einen anderen Speicherknoten aus (Rückkehr zu Schritt 204). Falls der Zwischenspeicher des ausgewählten Speicherknotens nicht voll ist, fährt das System fort, Daten von der Datei auf den ausgewählten Speicherknoten zu schreiben (Rückkehr zu Schritt 206).
  • 3 ist ein Flussdiagram einer beispielhaften Technik 300 zum Speichern von Daten auf einer Reihe von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt. Die Technik 300 kann vom einem Computersystem durchgeführt werden, z. B.: das Computersystem 102 der 1. Zur Veranschaulichung wird die Technik 300 im Bezug auf ein System beschrieben, das die Technik ausführt.
  • Das System empfängt eine Datei (Schritt 302). Das System schreibt einen Teil der Daten der Datei auf den Zwischenspeicher eines Speicherknotens bis festgelegt wird, dass der Zwischenspeicher des Speicherknotens voll ist (Schritt 304). In einigen Implementierungen kopiert der Speicherknoten den Teil der Daten vom Zwischenspeicher des Speicherknotens auf den langsameren Speicher in Folge des Beschreibens eines Teils der Daten auf den Zwischenspeicher des Speicherknotens. Nachdem die Daten auf einen langsameren Speicher kopiert worden sind, können die Speicherorte des Zwischenspeichers, welche diese Daten speichern zum Beispiel vollkommen geleert werden (z. B.: vollkommen gelöscht) oder zum Beschreiben verfügbar markiert werden.
  • In einigen Implementierungen umfasst das Festlegen, dass der Zwischenspeicher des Speicherknotens voll ist das Festlegen, dass eine Datenspeicherrate gesunken ist. In einigen Implementierungen umfasst das Festlegen, dass der Zwischenspeicher voll ist das Vergleichen einer Menge an Daten mit einer bekannte Größe des Zwischenspeichers des Speicherknotens und Festlegen, dass die Menge die bekannte Größe übersteigt. Das System zeichnet einen Speicherort des Teils der Daten auf dem Speicherknoten auf und assoziiert den Ort mit der Datei (Schritt 306).
  • Das System wählt einen anderen Speicherknoten aus in Folge der Festlegung, dass der Zwischenspeicher des Speicherknotens voll ist (Schritt 308). In einigen Implementierungen umfasst die Auswahl der verschiedenen Speicherknoten das willkürliche Auswählen des anderen Speicherknotens aus den Speicherknoten. In einigen Implementierungen umfasst die Auswahl des anderen Speicherknotens den Zugriff auf ein Protokoll mit Schreibzeiten und Speicherknoten und das Auswählen des Speicherknotens mit der am weitesten zurück in der Vergangenheit liegenden Schreibzeit. Das System schreibt einen anderen Teil der Daten von der Datei auf einen anderen Speicherknoten (Schritt 310). In einigen Implementierungen umfasst das Schreiben eines anderen Teils der Daten von der Datei auf den anderen Speicherknoten das Schreiben der Daten auf den Zwischenspeicher des Speicherknotens bis festgelegt wird, dass der Zwischenspeicher des anderen Speicherknotens voll ist. Das System zeichnet den Speicherort der Daten auf dem anderen Speicherknoten auf und assoziiert den Ort mit der Datei (Schritt 312).
  • 4 ist ein Flussdiagramm einer beispielhaften Technik 400 zum Lesen der Daten von einer Reihe von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt. Die Technik 400 kann von einem Computersystem ausgeführt werden, z. B.: dem Computersystem 102 der 1. Zur Veranschaulichung wird die Technik 400 im Bezug auf ein System beschrieben, welches die Technik ausführt.
  • Das System empfängt eine Anfrage für eine Datei (Schritt 402). Der Anforderer kann zum Beispiel ein Kundengerät sein, z. B.: das Kundengerät 104 der 1. Das System benennt einen Speicherknoten, der Daten von der Datei hat (Schritt 404). Das System kann zum Beispiel auf ein Speicherprotokoll zugreifen, das mehrere Speicherorte von Daten für verschiedene Dateien hat, z. B.: das Speicherprotokoll 116 der 1. Das System liest die Daten vom benannten Speicherknoten (Schritt 406). Üblicherweise liest das System die Daten vom langsameren Speicher des Speicherknotens, da der Speicherknoten Daten von dessen Zwischenspeicher auf dessen langsameren Speicher kopiert hat; in einigen Fällen kann das System jedoch die Daten vom Zwischenspeicher lesen, um die Leistung zu verbessern (z. B.: wo Daten kürzlich auf den Zwischenspeicher geschrieben wurden und noch nicht überschrieben oder vollständig gelöscht wurden).
  • Das System legt fest, ob alle Daten in der Datei gelesen wurden (Schritt 408). Das System kann zum Beispiel festlegen, ob zusätzliche Einträge für die Datei in einem Speicherprotokoll vorhanden sind oder die gelesene Datenmenge mit einer Dateigröße zu vergleichen (z. B.: mit der Anfrage empfangen oder in einem Speicherprotokoll gespeichert). Falls alle Daten für die Datei gelesen wurden, bietet das System die Daten von der Datei dem Anforderer an (Schritt 410). Falls nicht alle Daten für die Datei gelesen wurden, benennt das System einen anderen Speicherknoten, der Daten von der Datei hat (Rückkehr zu Schritt 404).
  • 5 ist ein schematisches Diagramm eines beispielhaften Computersystems 502 zum Speichern von Daten. Bei Betrieb kommuniziert das System 502 direkt oder über ein Netzwerk 580 mit einem oder mehreren Speicherknoten 590.
  • Das System 502 umfasst ein oder mehrere Datenverarbeitungsgeräte. Obwohl nur ein Datenverarbeitungsgerät in 5 angezeigt wird, können mehrere Datenverarbeitungsgeräte verwendet werden. Das System 502 kann geographisch verteilt werden. Das System 502 kann zum Beispiel mehrere Datenverarbeitungsgeräte an verschiedenen geographischen Speicherorten umfassen.
  • Das System 502 umfasst mehrere Module, z. B.: Module von Computerprogramm-Befehlen, einschließlich einer Writingmaschine 504 zum Schreiben von Daten auf den Speicherknoten (z. B.: Verwendung der Technik 200 der 2); eine Readingmaschine 506 zum Lesen von Daten von den Speicherknoten (z. B.: Verwenden der Technik 400 der 4); und einer Protokollmaschine, um Speicherprotokolle zu verwalten (z. B.: das Speicherprotokoll 116 der 1).
  • Jedes Modul ist konfiguriert, um auf dem System 502 zu funktionieren. Ein Modul kann zum Beispiel als Teil eines Betriebssystems auf dem System 502 als eine Anwendung auf dem System 502 oder als Teil des Betriebssystems und Teil einer Anwendung auf dem System 502 laufen. Obwohl mehrere Softwaremodule dargestellt werden, kann die Funktionalität des Servers in wenigeren oder mehreren Softwaremodulen implementiert werden. Außerdem können die Softwaremodule auf einem oder mehreren Datenverarbeitungsgeräten verteilt werden, die durch ein oder mehrere Netzwerke oder andere geeignete Kommunikationsmedien verbunden sind.
  • Das System 502 umfasst auch Hardware- oder Firmware-Geräte, einschließlich einem oder mehrerer Prozessoren 512, einem oder mehrerer zusätzlicher Geräte 514, einem computerlesbaren Medium 516, einer Kommunikationsschnittstelle 518 und einem oder mehreren Benutzeroberflächen-Geräten 520. Jeder Prozessor 512 ist in der Lage, Befehle für die Ausführung innerhalb des Systems 502 auszuführen. Jeder Prozessor 512 ist in der Lage, Befehle auszuführen, die auf einem computerlesbaren Medium 516 oder auf einem Speichergerät wie einem der zusätzlichen Geräte 514 gespeichert sind. Das System 502 verwendet dessen Kommunikationsschnittstelle 518, um mit einem oder mehreren Computer 590 zu kommunizieren, zum Beispiel über ein Netzwerk 580. Beispiele von Benutzeroberflächen-Geräten 520 beinhalten einen Bildschirm, eine Kamera, einen Lautsprecher, ein Mikrofon, ein taktiles Feedbackgerät, eine Tastatur und eine Maus. Das System 502 kann Befehle speichern, die andere Vorgänge implementieren, welche mit den oben beschriebenen Modulen assoziiert sind, zum Beispiel auf dem computerlesbaren Medium 516 oder auf einem oder mehreren zusätzlichen Geräten 514, zum Beispiel auf einem oder mehreren Diskettenlaufwerken, einem Festplattenlaufwerk, einem optischen Festplattenlaufwerk oder einem Bandgerät.
  • Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Ausführung durch oder die Steuerung des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Ausführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Plattenlaufwerke oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein.
  • Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden.
  • Der Begriff „datenverarbeitender Apparat” umfasst alle Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschließlich beispielsweise durch einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehreren Chips oder Kombinationen des Vorstehenden. Der Apparat kann logische Schaltungen mit einem Sonderzweck, z. B. ein FPGA („Field Programmable Gate Array”) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Ausführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
  • Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computer eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
  • Die Verfahren und Logikflüsse, die in dieser Spezifikation beschrieben sind, können durch Handlungen, wie dem Betreiben von Eingabedaten und dem Erzeugen von Ausgaben. durch einen oder mehrere programmierbare Prozessoren, die einen oder mehrere Computerprogramme ausführen, durchgeführt werden. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die für die Durchführung eines Computerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Digitalrechner ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Handlungen gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät (z. B. in einem USB-Stick), um nur einige zu nennen. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Dauerspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT (Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren; beispielsweise über das Senden von Webpages an einen Webbrowser auf dem Clientgerät des Benutzers als Antwort auf die vom Webbrowser empfangenen Aufforderungen.
  • Ausführungsformen des in dieser Spezifikation betrachteten Gegenstands können in ein Computersystem implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver), oder eine Middleware-Komponente (z. B. einen Anwendungsserver) oder eine Frontend-Komponente (z. B. einen Kundencomputer mit graphischer Benutzeroberfläche oder einem Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung des in dieser Spezifikation beschriebenen Gegenstands interagieren kann oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Zu Beispielen für Kommunikationsnetze zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
  • Das Informatiksystem kann Kunden und Server umfassen. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben. In einigen Ausführungsformen überträgt ein Server Daten (z. B. eine HTML-Seite) an ein Client-Gerät (z. B. zum Anzeigen von Daten auf und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Client-Gerät interagiert). Am Client-Gerät erzeugte Daten (z. B. infolge der Benutzerinteraktion) können vom Client-Gerät am Server empfangen werden.
  • Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
  • Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Anforderung verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können ein Mehrprogrammbetrieb und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
  • Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge durchgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Mehrprogrammbetrieb und eine Parallelbearbeitung vorteilhaft sein.

Claims (15)

  1. System, umfassend ein oder mehrere Datenverarbeitungsgeräten, die konfiguriert sind, um Vorgänge auszuführen, Folgendes umfassend: das Empfangen der Datei zum Speichern auf einer Vielzahl von Speicherknoten, von denen jeder einen Zwischenspeicher hat; das Speichern der Datei durch Speichern einer Vielzahl von Dateianteilen auf einem anderen Speicherknoten, einschließlich des Schreibens eines ersten Anteils auf den Zwischenspeicher eines ersten Speicherknotens, bis festgelegt wird, dass der Zwischenspeicher des ersten Speicherknotens voll ist, und das Auswählen eines anderen zweiten Speicherknotens in Folge des Festlegens, dass der Zwischenspeicher des ersten Speicherknotens voll ist; und das Aufzeichnen des Speicherorts des Anteils für jeden Dateianteil, wobei der Speicherort mindestens einen Speicherknoten angibt, der den Anteil speichert.
  2. System nach Anspruch 1, worin das Festlegen, dass der Zwischenspeicher des ersten Speicherknotens voll ist, das Festlegen umfasst, das seine Datenspeicherungsrate zum Schreiben des ersten Anteils gesunken ist.
  3. System nach Anspruch 1, worin das Festlegen, dass der Zwischenspeicher des ersten Speicherknotens voll ist, das Vergleichen einer Menge des ersten Anteils mit einer bekannten Größe des Zwischenspeichers des ersten Speicherknotens sowie das Festlegen, dass die Menge der bekannten Größe entspricht oder diese übersteigt, umfasst.
  4. System nach Anspruch 1, worin das Auswählen des zweiten Speicherknotens das willkürliche Auswählen des zweiten Speicherknotens aus den Speicherknoten umfasst.
  5. System nach Anspruch 1, worin das Auswählen des zweiten Speicherknotens das Auswählen eines Speicherknotens umfasst, dessen Schreibzeit am weitesten in der Vergangenheit liegt.
  6. System nach Anspruch 1, worin die Vorgänge des Weiteren das Zuteilen eines Stellenwerts zu jedem der Speicherknoten umfasst und worin das Auswählen des zweiten Speicherknotens die Verwendung der Stellenwerte beinhaltet.
  7. System nach Anspruch 6, worin der Stellenwert eines jeden Speicherknotens auf einem Leistungsmerkmal des Speicherknotens basiert.
  8. System nach Anspruch 1, worin das Auswählen des zweiten Speicherknotens auf einem oder mehreren der folgenden Aspekte basiert: ein Leistungsmerkmal des zweiten Speicherknotens, Nutzungsgeschichte des zweiten Speicherknotens und ein vergangener Speicherbericht für den zweiten Speicherknoten.
  9. System nach Anspruch 1, worin das Auswählen des zweiten Speicherknotens auf einem oder mehreren der folgenden Aspekte basiert: eine absolute Datenmenge, die vom zweiten Speicherknoten gespeichert wird und eine Datenmenge, die vom zweiten Speicherknoten relativ zur Kapazität des zweiten Speicherknotens gespeichert wird.
  10. System nach Anspruch 1, worin der erste Speicherknoten den ersten Anteil vom Zwischenspeicher des ersten Speicherknotens auf einen langsameren Speicher kopiert in Folge des Schreibens des ersten Anteils auf den Zwischenspeicher des ersten Speicherknotens.
  11. System nach Anspruch 1, worin das Speichern der Datei das Schreiben eines zweiten Anteils auf den zweiten Speicherknoten umfasst.
  12. System nach Anspruch 11, worin das Schreiben des zweiten Anteils des zweiten Speicherknotens das Schreiben des zweiten Anteils auf den Zwischenspeicher des zweiten Speicherknotens umfasst, bis festgelegt wird, dass der Zwischenspeicher des zweiten Speicherknotens voll ist.
  13. System nach Anspruch 1, worin das Speichern der Datei das fortgeführte Schreiben von Dateianteilen auf verschiedene Speicherknoten umfasst, bis die Datei vollständig auf den Speicherknoten gespeichert ist.
  14. System nach Anspruch 1, worin die Vorgänge desweiteren umfassen: Empfangen einer Anfrage für die Datei, Lesen des ersten Anteils vom ersten Speicherknoten; und Lesen des zweiten Anteils vom zweiten Speicherknoten.
  15. Computer-Speichermedium, das mit einem Computerprogramm kodiert ist, wobei das Programm Befehle beinhaltet, die bei Ausführung durch ein Datenverarbeitungsgerät dazu führen können, dass das Datenverarbeitungsgerät Vorgänge ausführt, die Folgendes umfassen: Empfangen einer Datei zur Speicherung auf einer Vielzahl von Speicherknoten, von denen jeder einen Zwischenspeicher besitzt; Speichern der Datei durch Speichern einer Vielzahl von Dateianteilen, jeder auf einem anderen Speicher knoten, einschließlich Schreiben eines ersten Anteils auf dem Zwischenspeicher eines ersten Speicherknotens bis festgelegt wird, dass der Zwischenspeicher des ersten Speicherknotens voll ist und Auswählen eines anderen zweiten Speicherknotens in Folge der Festlegung, dass der Zwischenspeicher des ersten Speicherknotens voll ist; und Aufzeichnung eines Speicherorts des Anteils für jeden Datenanteil, wobei der Speicherort mindestens einen Speicherknoten angibt, der den Anteil speichert.
DE202012013432.9U 2011-01-20 2012-01-19 Speichern von Daten auf Speicherknoten Expired - Lifetime DE202012013432U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201113010548 2011-01-20
US13/010,548 US8745329B2 (en) 2011-01-20 2011-01-20 Storing data across a plurality of storage nodes

Publications (1)

Publication Number Publication Date
DE202012013432U1 true DE202012013432U1 (de) 2017-01-13

Family

ID=46516075

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012013432.9U Expired - Lifetime DE202012013432U1 (de) 2011-01-20 2012-01-19 Speichern von Daten auf Speicherknoten

Country Status (6)

Country Link
US (3) US8745329B2 (de)
EP (1) EP2666111B1 (de)
CN (2) CN103597482B (de)
AU (3) AU2012207328B2 (de)
DE (1) DE202012013432U1 (de)
WO (1) WO2012100037A1 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533343B1 (en) 2011-01-13 2013-09-10 Google Inc. Virtual network pairs
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US8745329B2 (en) 2011-01-20 2014-06-03 Google Inc. Storing data across a plurality of storage nodes
US8812586B1 (en) 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US9237087B1 (en) 2011-03-16 2016-01-12 Google Inc. Virtual machine name resolution
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US9063818B1 (en) 2011-03-16 2015-06-23 Google Inc. Automated software updating based on prior activity
US8261295B1 (en) 2011-03-16 2012-09-04 Google Inc. High-level language for specifying configurations of cloud-based deployments
US9075979B1 (en) 2011-08-11 2015-07-07 Google Inc. Authentication based on proximity to mobile device
US8966198B1 (en) 2011-09-01 2015-02-24 Google Inc. Providing snapshots of virtual storage devices
US9069616B2 (en) 2011-09-23 2015-06-30 Google Inc. Bandwidth throttling of virtual disks
CN105897859B (zh) * 2016-03-25 2021-07-30 北京书生云科技有限公司 一种存储系统
US8958293B1 (en) 2011-12-06 2015-02-17 Google Inc. Transparent load-balancing for cloud computing services
US9178698B1 (en) 2011-12-21 2015-11-03 Google Inc. Dynamic key management
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US9847907B2 (en) 2012-11-26 2017-12-19 Amazon Technologies, Inc. Distributed caching cluster management
US9529772B1 (en) * 2012-11-26 2016-12-27 Amazon Technologies, Inc. Distributed caching cluster configuration
US9262323B1 (en) 2012-11-26 2016-02-16 Amazon Technologies, Inc. Replication in distributed caching cluster
US9602614B1 (en) 2012-11-26 2017-03-21 Amazon Technologies, Inc. Distributed caching cluster client configuration
US9430255B1 (en) 2013-03-15 2016-08-30 Google Inc. Updating virtual machine generated metadata to a distribution service for sharing and backup
CN106959822B (zh) * 2013-12-27 2020-02-07 威盛电子股份有限公司 数据储存装置及其数据写入方法
US20150271096A1 (en) * 2014-03-24 2015-09-24 Google Technology Holdings LLC Allocation of Client Device Memory for Content from Content Sources
CN106796491A (zh) * 2014-10-03 2017-05-31 新加坡科技研究局 优化混合对象存储装置的数据重建的方法
US10031679B2 (en) * 2014-11-21 2018-07-24 Security First Corp. Gateway for cloud-based secure storage
US10572443B2 (en) 2015-02-11 2020-02-25 Spectra Logic Corporation Automated backup of network attached storage
US20160349993A1 (en) * 2015-05-29 2016-12-01 Cisco Technology, Inc. Data-driven ceph performance optimizations
US20180095996A1 (en) * 2016-10-03 2018-04-05 Ocient Llc Database system utilizing forced memory aligned access
US11314648B2 (en) * 2017-02-08 2022-04-26 Arm Limited Data processing
CN110069210B (zh) * 2018-01-23 2021-09-28 杭州海康威视系统技术有限公司 一种存储系统、存储资源的分配方法及装置
JP7082373B2 (ja) * 2019-03-27 2022-06-08 日本電信電話株式会社 データ管理装置およびデータ管理方法
US11847333B2 (en) * 2019-07-31 2023-12-19 EMC IP Holding Company, LLC System and method for sub-block deduplication with search for identical sectors inside a candidate block
CN110989934B (zh) * 2019-12-05 2023-08-25 达闼机器人股份有限公司 区块链节点数据存储方法、区块链系统及区块链节点
US20210200717A1 (en) * 2019-12-26 2021-07-01 Oath Inc. Generating full metadata from partial distributed metadata
CN111427854B (zh) * 2020-03-23 2024-01-30 深圳震有科技股份有限公司 支持存储批量数据的栈结构实现方法及装置、设备、介质
JP7102460B2 (ja) * 2020-05-27 2022-07-19 株式会社日立製作所 分散ストレージ装置および分散ストレージ装置におけるデータ管理方法
US20220276800A1 (en) * 2021-02-26 2022-09-01 EMC IP Holding Company LLC Mapping Storage Volumes to Storage Processing Nodes Using Input/Output Operation Constraints and Cost Function

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463768A (en) 1994-03-17 1995-10-31 General Electric Company Method and system for analyzing error logs for diagnostics
US5778444A (en) 1996-05-06 1998-07-07 Motorola, Inc. Method and apparatus for reset-sensitive and controlled register write accesses in a data processing system with user and test modes
US6148368A (en) * 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
US6282607B1 (en) * 1997-09-18 2001-08-28 Lucent Technologies, Inc. Efficient scheduling of reading data from multiple storage mediums to satisfy multiple requests
US6178482B1 (en) 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
ID27991A (id) * 1999-03-03 2001-05-03 Sony Corp Aparatus pemproses data, metode pemprosesan data, unit terminal, dan metode transmisi dari aparatus pemproses data
US6449671B1 (en) * 1999-06-09 2002-09-10 Ati International Srl Method and apparatus for busing data elements
US6598179B1 (en) 2000-03-31 2003-07-22 International Business Machines Corporation Table-based error log analysis
US6829678B1 (en) * 2000-07-18 2004-12-07 International Business Machines Corporation System for determining the order and frequency in which space is allocated on individual storage devices
JP2002207620A (ja) 2001-01-10 2002-07-26 Toshiba Corp ファイルシステム及び該システムにおけるデータキャッシング方法
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US7367028B2 (en) 2001-08-14 2008-04-29 National Instruments Corporation Graphically deploying programs on devices in a system
US7117243B2 (en) 2001-10-02 2006-10-03 Citrix Systems, Inc. Methods for distributed program execution with file-type association in a client-server network
US7509645B2 (en) * 2002-10-17 2009-03-24 Intel Corporation Methods and apparatus for load balancing storage nodes in a distributed network attached storage system
US7660790B1 (en) * 2005-02-24 2010-02-09 Symantec Operating Corporation Method and apparatus for utilizing a file change log
WO2004061605A2 (en) * 2003-01-02 2004-07-22 Attune Systems, Inc. Medata based file switch and switched file system
US7055071B2 (en) 2003-01-09 2006-05-30 International Business Machines Corporation Method and apparatus for reporting error logs in a logical environment
US7127568B2 (en) * 2003-01-23 2006-10-24 Hitachi, Ltd. Throttling in storage systems
US7373451B2 (en) 2003-12-08 2008-05-13 The Board Of Trustees Of The Leland Stanford Junior University Cache-based system management architecture with virtual appliances, network repositories, and virtual appliance transceivers
US20050125456A1 (en) * 2003-12-09 2005-06-09 Junichi Hara File migration method based on access history
US7103740B1 (en) * 2003-12-31 2006-09-05 Veritas Operating Corporation Backup mechanism for a multi-class file system
US20050166011A1 (en) 2004-01-23 2005-07-28 Burnett Robert J. System for consolidating disk storage space of grid computers into a single virtual disk drive
US7610319B1 (en) * 2004-03-01 2009-10-27 Symantec Operating Corporation Efficient operations using assistance from secondary site
WO2005088504A1 (en) 2004-03-17 2005-09-22 Fidelitygenetic Limited Secure transaction of dna data
JP4147198B2 (ja) 2004-03-23 2008-09-10 株式会社日立製作所 ストレージシステム
JP4402997B2 (ja) * 2004-03-26 2010-01-20 株式会社日立製作所 ストレージ装置
US7512721B1 (en) 2004-05-25 2009-03-31 Qlogic, Corporation Method and apparatus for efficient determination of status from DMA lists
US7650331B1 (en) 2004-06-18 2010-01-19 Google Inc. System and method for efficient large-scale data processing
EP1622009A1 (de) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM-Architektur und Systeme
GB2418326B (en) 2004-09-17 2007-04-11 Hewlett Packard Development Co Network vitrualization
US7908302B1 (en) * 2004-09-17 2011-03-15 Symantec Operating Corporation In-place splitting and merging of files
GB2419697A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructures each having an infrastructure controller
GB2419701A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructure with dynamic control of mapping
GB2419702A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructures which can be suspended and later reactivated
US20060161753A1 (en) 2005-01-18 2006-07-20 Aschoff John G Method, apparatus and program storage device for providing automatic performance optimization of virtualized storage allocation within a virtualized storage subsystem
US7346734B2 (en) * 2005-05-25 2008-03-18 Microsoft Corporation Cluster storage collection based data management
JP4681374B2 (ja) * 2005-07-07 2011-05-11 株式会社日立製作所 ストレージ管理システム
US7761573B2 (en) 2005-12-07 2010-07-20 Avaya Inc. Seamless live migration of virtual machines across optical networks
EP1818844B1 (de) 2006-02-10 2013-03-13 Secunet Security Networks Aktiengesellschaft Verfahren zur Benutzung von Sicherheitstoken
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
US20070288921A1 (en) 2006-06-13 2007-12-13 King Steven R Emulating a network-like communication connection between virtual machines on a physical device
US8103870B2 (en) * 2006-09-12 2012-01-24 Foleeo, Inc. Hive-based peer-to-peer network
JP2008077290A (ja) * 2006-09-20 2008-04-03 Hitachi Ltd 情報処理装置及び情報処理方法並びにストレージシステム
US20080077635A1 (en) * 2006-09-22 2008-03-27 Digital Bazaar, Inc. Highly Available Clustered Storage Network
US20080086515A1 (en) 2006-10-06 2008-04-10 International Business Machines Corporation Method and System for a Soft Error Collection of Trace Files
US7653833B1 (en) 2006-10-31 2010-01-26 Hewlett-Packard Development Company, L.P. Terminating a non-clustered workload in response to a failure of a system with a clustered workload
US7953925B2 (en) * 2006-12-29 2011-05-31 Teradata Us, Inc. Transparent data temperature sensitive cluster duplication
US20080205415A1 (en) 2007-02-28 2008-08-28 Morales Henry N Jerez Access, Connectivity and Interoperability for Devices and Services
US7865575B2 (en) * 2007-03-30 2011-01-04 Sterling Commerce, Inc. Methods and apparatus to perform file transfers in distributed file systems
US20080270704A1 (en) 2007-04-30 2008-10-30 He Dingshan Cache arrangement for improving raid i/o operations
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
US8055864B2 (en) * 2007-08-06 2011-11-08 International Business Machines Corporation Efficient hierarchical storage management of a file system with snapshots
US20090097657A1 (en) 2007-10-05 2009-04-16 Scheidt Edward M Constructive Channel Key
JP4480756B2 (ja) 2007-12-05 2010-06-16 富士通株式会社 ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラム、データ記憶システムおよびデータ記憶方法
CN101470683B (zh) * 2007-12-26 2010-12-08 深圳市闪联信息技术有限公司 向多个存储介质复制数据的装置、系统及复制方法
JP2009205555A (ja) * 2008-02-28 2009-09-10 Toshiba Corp メモリシステム
US8156491B2 (en) 2008-02-29 2012-04-10 Red Hat, Inc. Fault tolerant virtual machine
US20090222509A1 (en) * 2008-02-29 2009-09-03 Chao King System and Method for Sharing Storage Devices over a Network
US8336094B2 (en) 2008-03-27 2012-12-18 Juniper Networks, Inc. Hierarchical firewalls
US8990911B2 (en) 2008-03-30 2015-03-24 Emc Corporation System and method for single sign-on to resources across a network
US8103776B2 (en) 2008-08-29 2012-01-24 Red Hat, Inc. Systems and methods for storage allocation in provisioning of virtual machines
US8315995B1 (en) * 2008-09-09 2012-11-20 Peer Fusion, Inc. Hybrid storage system
US8065714B2 (en) 2008-09-12 2011-11-22 Hytrust, Inc. Methods and systems for securely managing virtualization platform
US8086634B2 (en) * 2008-10-07 2011-12-27 Hitachi, Ltd. Method and apparatus for improving file access performance of distributed storage system
CN101408855B (zh) * 2008-11-07 2010-06-02 北京威视数据系统有限公司 连续数据保护系统在远程备份设备临时异常时的保护方法
JP5802137B2 (ja) 2009-02-05 2015-10-28 ダブリューダブリューパス コーポレイションWwpass Corporation 安全なプライベート・データ記憶装置を有する集中型の認証システム、および方法
JP5478107B2 (ja) * 2009-04-22 2014-04-23 株式会社日立製作所 仮想ストレージ装置を管理する管理サーバ装置及び仮想ストレージ装置の管理方法
CN102460393B (zh) 2009-05-01 2014-05-07 思杰系统有限公司 用于在虚拟存储资源之间建立云桥的系统和方法
US8429647B2 (en) 2009-05-06 2013-04-23 Vmware, Inc. Virtual machine migration across network by publishing routes to the associated virtual networks via virtual router after the start of migration of the virtual machine
CN101639848B (zh) * 2009-06-01 2011-06-01 北京四维图新科技股份有限公司 一种空间数据引擎及应用其管理空间数据的方法
US8463885B2 (en) 2009-08-31 2013-06-11 Red Hat, Inc. Systems and methods for generating management agent installations
US8693485B2 (en) 2009-10-14 2014-04-08 Dell Products, Lp Virtualization aware network switch
US8537860B2 (en) 2009-11-03 2013-09-17 International Business Machines Corporation Apparatus for switching traffic between virtual machines
US8949408B2 (en) 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US8429346B1 (en) * 2009-12-28 2013-04-23 Emc Corporation Automated data relocation among storage tiers based on storage load
US9953178B2 (en) 2010-02-03 2018-04-24 Os Nexus, Inc. Role based access control utilizing scoped permissions
CA2793401C (en) 2010-03-17 2019-05-07 Siamak Farah A cloud-based desktop and subscription application platform apparatuses, methods and systems
US9443078B2 (en) 2010-04-20 2016-09-13 International Business Machines Corporation Secure access to a virtual machine
US20120185688A1 (en) 2011-01-13 2012-07-19 Google Inc. Processor mode locking
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US8745329B2 (en) 2011-01-20 2014-06-03 Google Inc. Storing data across a plurality of storage nodes
US8812586B1 (en) 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US8261295B1 (en) 2011-03-16 2012-09-04 Google Inc. High-level language for specifying configurations of cloud-based deployments
US9069616B2 (en) 2011-09-23 2015-06-30 Google Inc. Bandwidth throttling of virtual disks
US8276140B1 (en) 2011-11-14 2012-09-25 Google Inc. Adjustable virtual network performance
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
US8909939B1 (en) 2012-04-04 2014-12-09 Google Inc. Distribution of cryptographic host keys in a cloud computing environment
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security

Also Published As

Publication number Publication date
EP2666111A1 (de) 2013-11-27
CN106909317B (zh) 2020-05-19
AU2016202362A1 (en) 2016-05-05
CN103597482B (zh) 2017-02-15
US20160132263A1 (en) 2016-05-12
US20120191912A1 (en) 2012-07-26
AU2016202362B2 (en) 2017-09-21
WO2012100037A1 (en) 2012-07-26
EP2666111A4 (de) 2017-12-06
AU2012207328B2 (en) 2015-09-10
CN103597482A (zh) 2014-02-19
CN106909317A (zh) 2017-06-30
US8745329B2 (en) 2014-06-03
EP2666111B1 (de) 2019-07-31
US9250830B2 (en) 2016-02-02
US20140281233A1 (en) 2014-09-18
AU2015268620B1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE60311116T2 (de) Verfahren, system und programm zur verwaltung von daten in verteilten cachespeichern
DE112010004931B4 (de) Mehrphasige Wiederherstellung von Dateisystemen mit Selektiver Bedarfsweiser Verfügbarkeit von Daten
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE102012215665A1 (de) Dynamische Änderung der TTL-Werte in einem Datencache
DE112011104787B4 (de) Nutzung von Inhalten über persönliche Clouds
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE112011100819T5 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112010003610T5 (de) Vorabfüllen eines Cachespeichers bei Threadmigration
DE112011103276T5 (de) Vorauslese-Verarbeitung in einer Client-Server-Netzwerkarchitektur
DE202010018490U1 (de) Architektonisches Muster für persistenten Webanwendungsentwurf
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE202020005693U1 (de) Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE202014010951U1 (de) Entfernungsabhängige Herabstufung von Suchrankings
DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
DE112013000650T5 (de) Datenzwischenspeicherungsbereich
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

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

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

R082 Change of representative

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

R081 Change of applicant/patentee

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

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

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

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right