DE102004056701A1 - Verfahren und Einrichtung zur Erzeugung einer inhaltsbezogenen Adresse zum zeitnahen Hinweis auf in ein Speichersystem eingeschriebene Dateneinheiten - Google Patents

Verfahren und Einrichtung zur Erzeugung einer inhaltsbezogenen Adresse zum zeitnahen Hinweis auf in ein Speichersystem eingeschriebene Dateneinheiten Download PDF

Info

Publication number
DE102004056701A1
DE102004056701A1 DE102004056701A DE102004056701A DE102004056701A1 DE 102004056701 A1 DE102004056701 A1 DE 102004056701A1 DE 102004056701 A DE102004056701 A DE 102004056701A DE 102004056701 A DE102004056701 A DE 102004056701A DE 102004056701 A1 DE102004056701 A1 DE 102004056701A1
Authority
DE
Germany
Prior art keywords
data
storage system
units
content
host
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.)
Ceased
Application number
DE102004056701A
Other languages
English (en)
Inventor
Michael Harvard Kilian
Stephen Shrewsbury Todd
Tom Teugels
Jan Van Riel
Carl D'halluin
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.)
EMC Corp
Original Assignee
EMC 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 EMC Corp filed Critical EMC Corp
Publication of DE102004056701A1 publication Critical patent/DE102004056701A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Eine Ausführungsform betrifft ein System zum Lokalisieren des Inhaltes eines Speichersystems, in welchem das Speichersystem einen Ortshinweis an einen Host liefert, wo Daten physikalisch gespeichert sind, welche der Host für zukünfige Zugriffsanfragen rückübermitteln kann. Bei einer anderen Ausführungsform wird ein Index, der die Inhaltsadressen hinsichtlich physikalischer Speicherstellen auflistet, an der Speicherstelle gecacht. Bei einer noch anderen Ausführungsform werden innere oder wahre Stellen dazu verwendet, um eine Speicherstelle für neu zu schreibende Daten auszuwählen, und zwar basierend auf einer Adresse der Daten. Bei einer noch anderen Ausführungsform werden Einheiten der Daten, die angenähert zeitgleich gespeichert werden, mit Ortsindexeinträgen versehen, die hinsichtlich des Index angenähert sind.

Description

  • HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Verfahren und ein Gerät zum Zugreifen auf den Inhalt in einem Speichersystem.
  • 2. Beschreibung des Standes der Technik
  • Das inhaltsmäßig adressierte Speichern (CAS) bildet eine Technik, bei der eine Einheit von Daten, die in einem Speichersystem gespeichert ist, unter Verwendung einer Adresse zugegriffen werden, die von dem Inhalt der Einheit der Daten abgeleitet wird. Beispielsweise kann eine Einheit von Daten als eine Eingangsgröße für eine Hashing-Funktion vorgesehen werden, die einen Hash-Wert erzeugt, der als die Inhaltsadresse für die Einheit der Daten verwendet wird. Ein Beispiel einer Hashing-Funktion, die zum Erzeugen von Inhaltsadressen geeignet ist, ist der Message Digest 5 (MD5) Hashing Algorithmus. Wenn ein Hostcomputer eine Anfrage zu einem inhaltsmäßig adressierbaren Speichersystem sendet, um eine Einheit von Daten aufzusuchen, liefert der Host die Inhaltsadresse (z.B. den Hash-Wert) der Einheit der Daten. Das Speichersystem bestimmt dann basierend auf der Inhaltsadresse, wo sich die physikalische Stelle der Einheit der Daten in dem Speichersystem befindet, sucht die Einheit der Daten von dieser Stelle auf bzw. liest diese und leitet die Einheit der Daten zu dem Hostcomputer zurück.
  • Die Aufgabe, die physikalische Stelle der Einheit der Daten zu bestimmen, kann mehrere Aspekte involvieren, beispielsweise dann, wenn das Speichersystem aus einem verteilten Speichersystem besteht. Ein verteiltes Speichersystem ist ein solches, welches aus einer Anzahl von getrennten Knotenpunkten besteht, wobei jeder Knotenpunkt eine getrennte Einheit oder Maschine mit getrennten Ressourcen darstellen kann (z.B. Prozessor, Speicher, Platte). Die Knotenpunkte kommunizieren miteinander (z.B. über ein Netzwerk), um Datenzugriffsanfragen von einem oder von mehreren Hostcomputern zu handhaben. Zum Bestimmen der physikalischen Örtlichkeit einer Einheit von Daten in dem Speichersystem basierend auf der Inhaltsadresse der Einheit der Daten, bestimmt das Speichersystem zuerst, in welchem Knotenpunkt die Einheit der Daten gespeichert ist. Dann bestimmt das Speichersystem, welche Platte an dem Knotenpunkt die Daten gespeichert hält (wenn der Knotenpunkt Vielfachplatten enthält), und bestimmt auch die physikalische Örtlichkeit auf der Platte, wo die Einheit der Daten abgespeichert ist (z.B. den Zylinder, Kopf, Sektor).
  • 1 zeigt ein Beispiel eines verteilten Speichersystems. Das verteilte Speichersystem enthält eine Vielzahl von Zugriffsknotenpunkten (AN) 101a, 101b,..., 101n, eine Vielzahl von Speicherknotenpunkten (SN) 105a, 105b, 105c,..., 105n und ein Netzwerk 103, welches diese miteinander koppelt. Die Zugriffsknotenpunkte 101 können dafür verwendet werden, um Zugriffsanfragen zu verarbeiten (z.B. Lese-/Schreibanfragen) von einem Hostcomputer (nicht gezeigt), während die Speicherknotenpunkte 105 dazu verwendet werden können, um Daten zu speichern. Wenn ein Zugriffsknotenpunkt eine Anfrage von einem Host empfängt, um eine Einheit der Daten zu lesen, bestimmt der Zugriffsknotenpunkt, in welchem Speicherknotenpunkt oder -knotenpunkten die Einheit der Daten gespeichert ist, und fragt dann die Einheit der Daten von dem geeigneten Speicherknotenpunkt oder -knotenpunkten an.
  • Ein bekanntes Verfahren zum Bestimmen, welcher Speicherknotenpunkt eine bestimmte Einheit der Daten gespeichert enthält, wird hier als ein Multicast Location Query (MLQ) (Rundsende-Ortsanfrage) bezeichnet. Bei einem Multicast-Location-Query-Verfahren empfängt ein Zugriffsknotenpunkt 101 eine Anfrage, um auf eine Ein heit von Daten zuzugreifen, und zwar von einem Host. Der Zugriffsknotenpunkt sendet dann eine Netzwerknachricht zu jedem Speicherknotenpunkt 105 aus, mit der Frage, ob der Speicherknotenpunkt die bestimmte Einheit der Daten gespeichert enthält. Jeder Speicherknotenpunkt 105 bestimmt dann, ob die angefragte Einheit der Daten in ihm gespeichert ist. Jeder Speicherknotenpunkt 105 kann einen Datensatz (z.B. eine Datenbank oder Tabelle) enthalten, in welcher Inhaltsadressen der Einheiten der Daten aufgelistet sind, die in diesem Speicherknotenpunkt gespeichert sind, und zwar zusammen mit der Platte in dem Speicherknotenpunkt, auf welcher die Einheit der Daten gespeichert ist. Das heißt, wenn der Speicherknotenpunkt z.B. vier Platten umfasst, kann die Tabelle angeben, auf welcher der vier Platte jede Einheit der Daten gespeichert ist. Wenn somit ein Speicherknotenpunkt 105 die MLQ-Netzwerknachricht von einem Zugriffsknotenpunkt 101 empfängt, kann der Speicherknotenpunkt seinen Datensatz abscannen, um zu bestimmen, ob die angefragte Einheit der Daten darin gespeichert ist.
  • Wenn ein Speicherknotenpunkt 105 einmal bestimmt hat, dass er die angefragte Einheit der Daten gespeichert hält, kann der Speicherknotenpunkt unter Verwendung des gleichen Datensatzes bestimmen, auf welcher physikalischen Platte die Einheit der Daten gespeichert ist. Dann kann der Speicherknotenpunkt die physikalische Stelle bestimmen, und zwar auf der richtigen Platte, auf der die Einheit der Daten gespeichert ist. Die Einheiten der Daten können als Dateien in einem Dateisystem bei dem Speicherknotenpunkt gespeichert sein. Um somit die physikalische Platten-Örtlichkeit einer Einheit von Daten zu bestimmen, kann der Speicherknotenpunkt die entsprechende Datei in dem Dateisystem lokalisieren, welche die Dateneinheit enthält, und kann sich auf das Betriebssystem des Speicherknotenpunkts verlassen, um die Dateisystemstelle als physikalische Plattenspeicherstelle zu registrieren. Wenn beispielsweise eine Einheit von Daten gespeichert wird, kann der Speicherknotenpunkt eine Datei erzeugen, welche die Inhaltsadresse der Einheit der Daten enthält, und zwar als deren Dateiname, und kann dann die Einheit der Daten in dieser Datei speichern.
  • 2 zeigt ein beispielhaftes Dateisystem zum Speichern von Einheiten von Daten in einem verteilten inhaltsadressierbaren Speichersystem. Das Dateisystem von 2 enthält eine Anzahl von hierarchischen Directorys. Der Directory am oberen Ende der Hierarchie wird als Root-Directory bezeichnet. Auf der zweiten Ebene der Hierarchie gibt es eine Anzahl von Sub-Directorys. Jeder dieser Sub-Directorys repräsentiert das erste Zeichen in der Inhaltsadresse einer Einheit der Daten. Das heißt, eine Einheit der Daten mit einer Inhaltsadresse, die mit dem Buchstaben 'A' beginnt, wird in einem der Sub-Directorys des Directory 'A' gespeichert. Der Sub-Directory, in welchem die Einheit der Daten gespeichert wird, hängt von dem zweiten Zeichen oder Buchstaben der Inhaltsadresse ab. Wenn das Speichersystem später versucht, auf die Einheit der Daten zuzugreifen (z.B. im Ansprechen auf eine Leseanfrage), kann das Speichersystem die Einheit der Daten lokalisieren, indem das Speichersystem die Dateisystemhierarchie durchgeht, um den Sub-Directory zu lokalisieren, dessen Name mit den ersten zwei Zeichen oder Buchstaben der Inhaltsadresse der Einheit der Daten übereinstimmt. Wenn das Speichersystem die Einheit der Daten in seinem Dateisystem lokalisiert, kann es die Datei öffnen, welche die Einheit der Daten enthält, um zu verifizieren, dass der Speicherknotenpunkt tatsächlich die Einheit der Daten gespeichert hält. Dann kann der Speicherknotenpunkt die Einheit der Daten zu dem Zugriffsknotenpunkt zurückleiten, welcher die Rundsendeanfrage ausgegeben hat. Der Zugriffsknotenpunkt kann die Einheit der Daten zu dem Host zurückleiten, der nach der Einheit der Daten angefragt hat.
  • Ein MLQ bildet einen rechenmäßig kostspieligen Prozess, da es dabei erforderlich ist, jeden Speicherknotenpunkt zu veranlassen, eine umfassende Datenbankdurchsuchung für jeden Einheit der angefragten Daten durchzuführen. Ferner schlagen die meisten dieser umfangreichen Suchvorgänge fehl, da eine Einheit von Daten in typischer Weise lediglich in einem oder einer kleinen Zahl von Speicherknotenpunkten vorhanden ist (unter der Annahme, dass die Einheit der Daten in einem oder mehreren Speicherknotenpunkten doppelt vorhanden ist).
  • Um den rechenmäßigen Aufwand der Verwendung einer MLQ zum Lokalisieren von Einheiten der Daten in dem Speichersystem zu reduzieren, wurde eine andere Technik entwickelt, die einen Index verwendet, um Einheiten der Daten zu lokalisieren. Der Index wird hier im Folgenden als ein Blob-Ortsindex (BLI) bezeichnet, wobei die Be zeichnung "Blob" eine Einheit von Daten betrifft. Der BLI bildet eine Datenbank, in der Inhaltsadressen der Einheiten der Daten ("Blobs") für den Speicherknotenpunkt oder -knotenpunkte aufgelistet sind, in welchem oder in welchen der Inhalt gespeichert ist. In nahezu der gleichen Weise wie bei dem MLQ-Schema werden Einheiten der Daten an einer Stelle in dem Dateisystem gespeichert, welches basierend auf der Inhaltsadresse der Einheit der Daten ausgewählt wird. Jedoch wird die Administration der BLI unter den Speicherknotenpunkten aufgespalten, so dass jeder Speicherknotenpunkt einen Abschnitt der BLI administriert. Daher brauchen Zugriffsanfragen für eine Einheit von Daten nicht zu allen Speicherknotenpunkten rund gesendet werden, sondern lediglich zu dem einen, der den Abschnitt der BLI verwaltet, welcher die angefragte Einheit der Daten enthält.
  • Eine Konfiguration von BLI ist in 3 gezeigt. Die Ansprechfähigkeit beim Administrieren von BLI wird gleichmäßig aufgeteilt, und zwar über den Speicherknotenpunkten 301, 303, 305 und 307. Der Speicherknotenpunkt 301 verwaltet den Abschnitt von BLI, der die Inhaltsadressen enthält, die mit dem Zeichen oder Buchstaben 'A' – 'F' beginnen, der Speicherknotenpunkt 303 verwaltet den Abschnitt von BLI, der die Inhaltsadressen enthält, die mit den Zeichen oder Buchstaben 'G' – 'L' beginnen, der Speicherknotenpunkt 305 verwaltet den Abschnitt von BLI, der die Inhaltsadressen enthält, die mit den Buchstaben 'M' – 'R' beginnen, und der Speicherknotenpunkt 307 verwaltet den Abschnitt von BLI, welcher die Inhaltsadressen enthält, die mit dem Buchstaben 'S' – 'Z' beginnen. Jeder Abschnitt von BLI enthält eine Eintrittstelle (entry) für jede Inhaltsadresse innerhalb des spezifizierten Bereiches, der in dem Speichersystem gespeichert ist, und zeigt an, bei welchem Speicherknotenpunkt die entsprechende Einheit der Daten gespeichert ist. Die Speicherknotenpunkte enthalten auch örtliche Datenbanken 309, 311, 313 und 315, welche die Inhaltsadressen der Einheiten der Daten speichern, die in deren jeweiligen Speicherknotenpunkten gespeichert sind, und geben auch an, auf welcher physikalischen Platte dieses Speicherknotenpunktes diese Inhaltsadressen gespeichert sind.
  • Die Zugriffsknotenpunkte halten eine Aufzeichnung, und zwar dahingehend, welche Abschnitte von BLI durch jeden Speicherknotenpunkt verwaltet werden. Wenn somit ein Zugriffsknotenpunkt eine Anfrage von einem Host zur Wiederauffindung einer bestimmten Einheit von Daten empfängt, bestimmt der Zugriffsknotenpunkt, welcher Speicherknotenpunkt den Abschnitt von BLI verwaltet, der die Inhaltsadresse der angefragten Einheit der Daten enthält. Wenn beispielsweise ein Host eine Anfrage zu einem Zugriffsknotenpunkt nach einer Einheit von Daten sendet, die eine Inhaltsadresse enthält, die mit 'S' beginnt, sucht der Zugriffsknotenpunkt den Speicherknotenpunkt 307 auf bzw. fragt bei diesem an, um zu bestimmen, welcher Speicherknotenpunkt die angefragte Einheit der Daten speichert. Der Speicherknotenpunkt 307 sucht dann die BLI ab, um zu bestimmen, welcher Speicherknotenpunkt oder Speicherknotenpunkte die angefragte Einheit der Daten gespeichert enthält oder enthalten, und leitet dann diese Informationen zu dem anfragenden Zugriffsknotenpunkt zurück. Der Zugriffsknotenpunkt kann nach der Einheit der Daten direkt von dem geeigneten Speicherknotenpunkt aus anfragen. Auf diese Weise erfolgt bei anderen Speicherknotenpunkten, welche die Einheit der Daten nicht gespeichert enthalten, keine Anfrage. Somit erfordert im Gegensatz zu einer MLQ die Verwendung der BLI nicht, dass jeder Speicherknotenpunkt eine umfassende Datenbanksuche durchführt. Statt dessen fragt nur ein Speicherknotenpunkt bei BLI nach und ein Speicherknotenpunkt fragt seine lokale Datenbank ab, wodurch der Gesamtberechnungsaufwand in dem Speichersystem reduziert wird.
  • Im Falle eines Ausfalls in dem BLI, um zu dem Speicherknotenpunkt eine angefragte Einheit der Daten zurückzuleiten (das heißt, wenn eine Inhaltsadresse, die von einem Host angefragt wurde, in der BLI nicht gefunden wird), kann das Speichersystem auf das MLQ-Schema zurück fallen und kann eine MLQ ausgeben, um zu bestimmen, in welchem Speicherknotenpunkt die Einheit von Daten entsprechend der angefragten Inhaltsadresse vorhanden ist.
  • Durch Verteilen der BLI-Verwaltungsverantwortlichkeiten in gleichmäßiger Form unter den Speicherknotenpunkten, wird die Berechnungslast zur Lokalisierung einer speziellen Einheit von Daten in dem Speichersystem unter dem Speicherknotenpunkt gleichmäßig verteilt. Die Zufälligkeit der Hashing-Funktion, die zum Generieren der Inhaltsadressen verwendet wird, basiert auf der Verteilung einer in geeigneter Weise gleichen Anzahl von Inhaltsadressen auf jeden Speicherknotenpunkt. Wenn neue Speicherknotenpunkte zu dem Speichersystem hinzu addiert werden oder wenn Speicherknotenpunkte von dem Speichersystem entfernt werden, werden die Verwaltungsverantwortlichkeiten der BLI erneut unter den Speicherknotenpunkten verteilt, so dass die Verwaltungsverantwortlichkeiten gleichmäßig unter allen Speicherknotenpunkten aufgeteilt werden. Wenn ferner neue Dateneinheiten in dem Speichersystem gespeichert werden, bringt der Speicherknotenpunkt die BLI auf den neuesten Stand, es wird die örtliche Datenbank des Speicherknotenpunktes, in welcher die Einheit der Daten gespeichert ist, auf den neuesten Stand gebracht und es wird der Inhalt selbst in das Speichersystem geschrieben. Dieser dreifach gestützte Schreibvorgang fördert die Performance des Speichersystems bei der Verarbeitung von Schreibvorgängen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Eine veranschaulichende Ausführungsform betrifft ein Verfahren zur Verarbeitung von Daten in einem Computersystem mit wenigstens einem Host und wenigstens einem Speichersystem, welches Daten für den wenigstens einen Host speichert. Das Verfahren umfasst die folgenden Aktionen: (a) Empfangen am Speichersystem einer Anfrage von dem wenigstens einen Host auf eine Einheit von Daten zuzugreifen, die in dem wenigstens einen Speichersystem gespeichert ist; und (b) im Ansprechen auf die Anfrage, Rückleiten von Informationen zu dem wenigstens einen Host, die darauf bezogen sind, wo die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert sind. Eine andere veranschaulichende Ausführungsform ist auf wenigstens ein computerlesbares Medium gerichtet, welches mit Instruktionen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor erläuterte Verfahren ausführen.
  • Eine weitere veranschaulichende Ausführungsform ist auf ein Speichersystem für die Verwendung in einem Computersystem gerichtet, welches wenigstens einen Host enthält, wobei das Speichersystem Daten für den wenigstens einen Host speichert. Das Speichersystem umfasst folgendes: wenigstens eine Speichervorrichtung zum Speichern von Daten, die von dem wenigstens einen Host empfangen werden; und wenigstens einen Controller, der: eine Anfrage von dem wenigstens einen Host empfängt, um auf eine Einheit von Daten zuzugreifen, die in dem inhaltsmäßig adressierbaren Speichersystem gespeichert sind, wobei die Anfrage die Einheit der Daten identifiziert, und zwar unter Verwendung einer Inhaltsadresse, und wobei im Ansprechen auf die Anfrage dieser Informationen zu dem wenigstens einen Host zurück leitet, die darauf bezogen sind, wo die Einheit der Daten physikalisch in dem Speichersystem, welches inhaltsmäßig adressierbar ist, gespeichert ist.
  • Eine andere veranschaulichende Ausführungsform der Erfindung ist auf ein Verfahren zum Verarbeiten von Daten in einem Computersystem gerichtet, mit wenigstens einem Host und wenigstens einem Speichersystem, welches Daten für den wenigstens einen Host speichert. Das Verfahren umfasst die folgenden Aktionen: (a) Aussenden einer Anfrage zu dem wenigstens einen Speichersystem, um auf eine Einheit von Daten zuzugreifen, die in dem Speichersystem abgespeichert ist; und (b) Empfangen von Informationen von dem wenigstens einen Speichersystem, welche die Einheit der Daten betreffen, und zwar, wo die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert ist. Eine andere veranschaulichende Ausführungsform ist auf wenigstens ein computerlesbares Medium gerichtet, welches mit Instruktionen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor erläuterte Verfahren ausführen.
  • Eine noch weitere veranschaulichende Ausführungsform betrifft einen Hostcomputer für die Verwendung in einem Computersystem, welches den Hostcomputer und wenigstens ein Speichersystem enthält, wobei der Hostcomputer auf Daten zugreift, die in dem wenigstens einen Speichersystem gespeichert sind. Der Hostcomputer umfasst folgendes: wenigstens eine Speichervorrichtung; und wenigstens einen Controller, der: zu dem wenigstens einen Speichersystem eine Anfrage sendet, um auf eine Einheit von Daten zuzugreifen, die in dem wenigstens einen Speichersystem gespeichert sind; und welcher im Ansprechen auf die Anfrage von dem wenigstens einen Speichersystem Informationen erhält, die den Ort betreffen, wo die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert sind und welche die Informationen in der wenigstens einen Speichervorrichtung speichert.
  • Eine andere veranschaulichende Ausführungsform ist auf ein Verfahren zur Verarbeitung von Daten in einem Computersystem gerichtet, welches wenigstens einen Host und wenigstens ein Speichersystem enthält. Das Verfahren umfasst die folgenden Aktionen: (a) Empfangen einer Anfrage an dem wenigstens einen Speichersystem, und zwar von dem wenigstens einen Host, um auf eine Einheit von Daten zuzugreifen, wobei die Anfrage einen Identifizierer aufweist, der zum Zugreifen auf die Einheit der Daten verwendet werden kann; und (b) Rückleiten eines Identifizierers zu dem wenigstens einen Host als Antwort auf die Anfrage, welcher Identifizierung dazu verwendet werden kann, um auf die Einheit der Daten zuzugreifen, und mit zusätzlichen Informationen, die von dem Identifizierer getrennt sind, welche sich darauf beziehen, wo die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert ist. Eine andere veranschaulichende Ausführungsform ist auf wenigstens ein computerlesbares Medium gerichtet, welches mit Instruktionen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das oben erläuterte Verfahren ausführen.
  • Eine weitere veranschaulichende Ausführungsform ist auf ein Speichersystem für die Verwendung in einem Computersystem gerichtet, welches das Speichersystem und wenigstens einen Host enthält. Das Speichersystem enthält folgendes: wenigstens eine Speichervorrichtung zum Speichern von Daten, die von dem wenigstens einen Host empfangen werden; und wenigstens einen Controller, der: an dem wenigstens einen Speichersystem eine Anfrage von dem wenigstens einen Host hinsichtlich eines Zugriffs auf eine Einheit von Daten empfängt, wobei die Anfrage einen Identifizierer enthält, der für den Zugriff auf die Einheit der Daten verwendet werden kann; und welcher im Ansprechen auf die Anfrage zu dem wenigstens einen Host einen Identifizierer zurück sendet, der für das Zugreifen auf die Einheit der Daten verwendet werden kann, und zusätzliche Informationen zurück sendet, die von dem Identifizierer getrennt sind und die sich auf den Ort beziehen, an welchem die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert ist.
  • Eine andere als Beispiel gewählte Ausführungsform betrifft ein Verfahren zum Verarbeiten von Daten in einem Computersystem mit wenigstens einem Host und wenigstens einem Speichersystem. Das Verfahren umfasst die folgenden Aktionen: (a) Senden einer Anfrage von dem wenigstens einen Host zu dem wenigstens einen Speichersystem, um Zugriff auf eine Einheit von Daten zu erlangen, wobei die Anfrage einen Identifizierer enthält, der dazu verwendet, werden kann, um auf die Einheit der Daten zuzugreifen; und (b) Empfangen eines Identifizierers von dem wenigstens einen Speichersystem, der zum Zugreifen auf die Einheit der Daten verwendet werden kann, und zusätzlicher Informationen, die von dem Identifizierer getrennt sind, die sich darauf beziehen, wo die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert ist. Eine andere veranschaulichende Ausführungsform betrifft wenigstens ein computerlesbares Medium, welches mit Instruktionen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor beschriebene Verfahren durchführen.
  • Ein weiteres veranschaulichendes Ausführungsbeispiel betrifft einen Hostcomputer für die Verwendung in einem Computersystem, welches den Hostcomputer und wenigstens ein Speichersystem enthält. Der Hostcomputer umfasst folgendes: wenigstens eine Speichervorrichtung; und wenigstens einen Controller, der: zu dem wenigstens einen Speichersystem eine Anfrage von dem wenigstens einen Host sendet, um Zugriff zu einer Einheit von Daten zu erlangen, wobei die Anfrage einen Identifizierer enthält, der zum Zugreifen auf die Einheit der Daten verwendet werden kann; und welcher im Ansprechen auf die Anfrage von dem wenigstens einen Speichersystem einen Identifizierer empfängt, der zum Zugreifen auf die Einheit der Daten verwendet werden kann, und zusätzliche Informationen empfängt, die von dem Identifizierer getrennt sind und die sich darauf beziehen, wo die Einheit der Daten physikalisch in dem wenigstens einen Speichersystem gespeichert ist und welcher die zusätzlichen Informationen in der wenigstens einen Speichervorrichtung speichert.
  • Eine andere veranschaulichende Ausführungsform betrifft ein Verfahren zum Verarbeiten von Daten in einem Computersystem mit wenigstens einem Host und wenigstens einem inhaltsmäßig adressierbaren Speichersystem, welches Daten für den wenigstens einen Host speichert, wobei der wenigstens eine Host auf Dateneinheiten zugreift, die in dem wenigstens einen Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten erzeugt werden. Das Verfahren umfasst die folgenden Schritte: (a) Beibehalten oder Aufrechterhalten von wenigstens einem Index, der eine Inhaltsadresse von wenigstens einer Dateneinheit auflistet, und zwar in einer Speicherstelle innerhalb des wenigstens einen Speichersystems, in welchem die Dateneinheit gespeichert ist; und (b) Aufrechterhalten oder Beibehalten eines Cache des Ortsindex. Eine andere veranschaulichende Ausführungsform betrifft wenigstens ein computerlesbares Medium, welches mit Instruktionen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor beschriebene Verfahren ausführen.
  • Ein weiteres veranschaulichendes Ausführungsbeispiel betrifft ein inhaltsmäßig adressierbares Speichersystem für die Verwendung in einem Computersystem, welches ein inhaltsmäßig adressierbares Speichersystem und wenigstens einen Host enthält, wobei der wenigstens eine Host auf Dateneinheiten zugreift, die in dem inhaltsmäßig adressierbaren Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheit erzeugt werden. Das inhaltsmäßig adressierbare Speichersystem umfasst folgendes: wenigstens eine Speichervorrichtung zum Speichern von Daten, die von wenigstens einem Host empfangen werden; und wenigstens einem Controller, der: wenigstens einen Index hält, der eine Inhaltsadresse von wenigstens einer Dateneinheit auflistet, und zwar an einer Speicherstelle innerhalb des inhaltsmäßig adressierbaren Speichersystems, an welcher die Dateneinheit gespeichert ist; und welcher einen Cache des Ortsindex hält.
  • Eine andere veranschaulichende Ausführungsform betrifft ein Verfahren zum Verarbeiten von Daten in einem Computersystem mit wenigstens einem Host und we nigstens einem inhaltsmäßig adressierbaren Speichersystem, welches Daten für den wenigstens einen Host speichert, wobei der wenigstens eine Host auf Dateneinheiten zugreift, die in dem wenigstens einen Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten erzeugt werden. Das Verfahren umfasst die folgenden Aktionen: (a) im Ansprechen auf eine Zugriffsanfrage von wenigstens einem Hostcomputer auf eine Einheit von Daten, die durch eine Inhaltsadresse identifiziert ist, Parsen der Inhaltsadresse, um wenigstens einen Aspekt einer physikalischen Speicherstelle für die Einheit der Daten in dem wenigstens einen Speichersystem zu bestimmen. Eine andere veranschaulichende Ausführungsform betrifft wenigstens eine computerlesbares Medium, welches mit Instruktionen oder Anweisungen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor beschriebene Verfahren durchführen.
  • Eine andere veranschaulichende Ausführungsform betrifft ein inhaltsmäßig adressierbares Speichersystem für die Verwendung in einem Computersystem, mit einem inhaltsmäßig adressierbaren Speichersystem und wenigstens einem Host, wobei der wenigstens eine Host auf Dateneinheiten zugreifen kann, die in dem inhaltsmäßig adressierbaren Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten generiert werden. Das inhaltsmäßig adressierbare Speichersystem enthält folgendes: wenigstens eine Speichervorrichtung zum Speichern der Daten, die von dem wenigstens einen Host empfangen werden; und wenigstens einem Controller, der im Ansprechen auf eine Zugriffsanfrage von dem wenigstens einen Hostcomputer zum Zugreifen auf eine Einheit von Daten, die durch eine Inhaltsadresse identifiziert ist, die Inhaltsadresse parst, um wenigstens einen Aspekt einer physikalischen Speicherstelle für die Einheit der Daten in dem wenigstens einen Speichersystem zu bestimmen.
  • Eine andere veranschaulichende Ausführungsform betrifft ein Verfahren zum Verarbeiten von Daten in einem Computersystem, mit wenigstens einem Host und wenigstens einem inhaltsmäßig adressierbaren Speichersystem, welches Daten für den wenigstens einen Host speichert, wobei der wenigstens eine Host auf Dateneinheiten zu greifen kann, die in dem wenigstens einen Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten generiert werden. Das Verfahren umfasst die folgenden Aktionen: (a) Empfangen einer Anfrage von dem Host, um eine Einheit von Daten in dem Speichersystem zu speichern, wobei die Einheit der Daten eine Inhaltsadresse enthält, und zwar basierend auf dem Inhalt der Einheit der Daten; (b) Bestimmen basierend auf der Inhaltsadresse einer ersten Speicherstelle in dem Speichersystem, an welcher die Inhaltsadresse aufgelistet ist; (c) Speichern eines Zeigers für die erste Einheit der Daten an der ersten Speicherstelle, wobei der Zeiger auf eine zweite Speicherstelle zeigt; und (d) Speichern der Einheit der Daten an der zweiten Speicherstelle des Speichersystems. Eine andere veranschaulichende Ausführungsform betrifft wenigstens ein computerlesbares Medium, welches mit Anweisungen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor beschriebene Verfahren durchführen.
  • Eine andere veranschaulichende Ausführungsform betrifft ein inhaltsmäßig adressierbares Speichersystem für die Verwendung in einem Computersystem, welches wenigstens einen Host enthält, wobei der wenigstens eine Host auf Dateneinheiten zugreift, die in dem inhaltsmäßig adressierbaren Speichersystem gespeichert sind, unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten generiert werden. Das inhaltsmäßig adressierbare Speichersystem umfasst folgendes: wenigstens eine Speichervorrichtung zum Speichern von Daten, die von dem wenigstens einen Host empfangen werden; und wenigstens einen Controller, der: von dem Host eine Anfrage zum Speichern einer Einheit von Daten in dem Speichersystem empfängt, wobei die Einheit der Daten eine Inhaltsadresse aufweist, basierend auf dem Inhalt der Einheit der Daten, basierend auf der Inhaltsadresse eine erste Speicherstelle in dem Speichersystem bestimmt, an welcher die Inhaltsadresse aufgelistet wird; einen Zeiger für die erste Einheit der Daten an der ersten Speicherstelle speichert, wobei der Zeiger auf eine zweite Speicherstelle zeigt; und die Einheit der Daten an der zweiten Speicherstelle in dem Speichersystem speichert.
  • Eine andere veranschaulichende Ausführungsform betrifft ein Verfahren zum Verarbeiten von Daten in einem Computersystem mit wenigstens einem Host und wenigstens einem inhaltsmäßig adressierbaren Speichersystem, welches Einheiten der Daten für den wenigstens einen Host speichert, wobei der wenigstens eine Host auf eine Einheit von Daten zugreift, und zwar unter Verwendung einer Inhaltsadresse, basierend zumindest teilweise auf dem Inhalt der Einheit der Daten. Das Verfahren umfasst die folgenden Aktionen: (a) Erzeugen von Inhaltsadressen für Einheiten der Daten, um erste Informationen zu erhalten, die eine Anzeige liefern, über die Einheiten der Daten, die angenähert zeitgleich in das Speichersystem eingeschrieben werden oder wurden. Eine andere veranschaulichende Ausführungsform betrifft wenigstens ein computerlesbares Medium, welches mit Anweisungen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor beschriebene Verfahren durchführen.
  • Eine weitere veranschaulichende Ausführungsform betrifft einen Hostcomputer für die Verwendung in einem Computersystem mit einem Hostcomputer und einem inhaltsmäßig adressierbaren Speichersystem, wobei der Hostcomputer auf Daten in dem inhaltsmäßig adressierbaren Speichersystem zugreift, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten generiert werden. Der Hostcomputer umfasst folgendes: wenigstens einen Prozessor, der die Einheiten der Daten erzeugt; und wenigstens einen Controller, der die Inhaltsadressen für die Einheiten der Daten erzeugt, so dass diese erste Informationen enthalten, die eine Angabe darüber liefern, welche der Einheiten der Daten in das inhaltsmäßig adressierbare Speichersystem angenähert zeitgleich eingeschrieben werden.
  • Eine andere veranschaulichende Ausführungsform betrifft ein Verfahren zum Verarbeiten von Daten in einem Computersystem mit wenigstens einem Host und wenigstens einem inhaltsmäßig adressierbaren Speichersystem, welches Einheiten der Daten für den wenigstens einen Host speichert, wobei der wenigstens eine Host auf eine Einheit von Daten zugreift, und zwar unter Verwendung einer Inhaltsadresse, zumindest teilweise auf dem Inhalt der Einheit der Daten basierend, wobei das wenigstens eine Speichersystem einen Index aufweist, der die Inhaltsadressen für die Einheiten der Da ten in Bezug auf Speicherstellen innerhalb des wenigstens einen Speichersystems auflistet, wo die Einheiten der Daten gespeichert sind. Das Verfahren umfasst die folgenden Aktionen: (a) Empfangen einer Anfrage von dem wenigstens einen Host, um eine der Einheiten der Daten zu speichern, wobei die Anfrage die eine der Einheiten der Daten identifiziert, und zwar mit Hilfe von deren zugeordneter Inhaltsadresse; und (b) Speichern der einen der Einheiten der Daten an einer Speicherstelle, die so ausgewählt wird, dass ein Eintrag in dem Index für die Speicherstelle angenähert bei den Einträgen des Index für andere Einheiten der Daten liegt, die in das wenigstens eine Speichersystem eingeschrieben wurden, und zwar nahezu zeitgleich mit der einen der Einheiten der Daten. Eine andere veranschaulichende Ausführungsform betrifft wenigstens ein computerlesbares Medium, welches mit Anweisungen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, das zuvor beschriebene Verfahren ausführen.
  • Eine weitere veranschaulichende Ausführungsform betrifft ein inhaltsmäßig adressierbares Speichersystem für die Verwendung in einem Computersystem, welches ein inhaltsmäßig adressierbares Speichersystem und wenigstens einen Host enthält, wobei der wenigstens eine Host auf Dateneinheiten zugreift, die in dem inhaltsmäßig adressierbaren Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten generiert werden. Das inhaltsmäßig adressierbare Speichersystem umfasst folgendes: wenigstens eine Speichervorrichtung zum Speichern der Daten, die von dem wenigstens einen Host empfangen werden; und wenigstens einen Controller, der einen Index hält, der Inhaltsadressen für Einheiten der Daten auflistet, und zwar in Verbindung mit Speicherstellen innerhalb des wenigstens einen Speichersystems, wo die Einheiten der Daten gespeichert sind, so dass die Einheiten der Daten, die in das wenigstens eine Speichersystem angenähert zeitgleich eingeschrieben wurden, angenäherte Einträge in dem Index aufweisen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In den Zeichnungen zeigen:
  • 1 ein Blockschaltbild eines veranschaulichenden, herkömmlichen verteilten Speichersystems;
  • 2 ein Diagramm einer Dateisystemhierarchie, in welcher Einheiten von Daten in einem herkömmlichen, inhaltsmäßig adressierbaren Speichersystem gespeichert sind;
  • 3 ein Blockschaltbild, welches einen Blob-Ortsindex veranschaulicht, der unter vielen Speicherknotenpunkten bei einem herkömmlichen, inhaltsmäßig adressierbaren Speichersystem gemeinsam verwendet wird;
  • 4 ein Blockschaltbild, welches ein Speichersystem und eine Hostkonfiguration veranschaulicht, bei dem Aspekte der Erfindung implementiert sind;
  • 5 ein Blockschaltbild, welches inhärente Stellen oder Orte veranschaulicht, die einer Vielzahl von Speicherknotenpunkten gemäß einer Ausführungsform der Erfindung zugeordnet sind;
  • 6 ein Blockschaltbild, welches inhärente Stellen veranschaulicht, die einer Vielzahl von Speichervorrichtungen innerhalb eines Speicherknotenpunktes zugeordnet sind, entsprechend einer Ausführungsform der Erfindung; und
  • 7 Ortsinformationen, die zu einer Inhaltsadresse hinzu addiert werden, und zwar für eine Einheit von Daten in Einklang mit einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • Aspekte der vorliegenden Erfindung betreffen verbesserte Techniken zum Zugreifen auf den Inhalt in einem Speichersystem.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung kann das Speichersystem Hinweise zu einem Host hinsichtlich einer Speicherstelle liefern, wo eine Einheit von Daten innerhalb des Speichersystems gespeichert ist. Bei nachfolgenden Zugriffsanfragen auf die Einheit der Daten kann der Host den Ortshinweis zurück zu dem Speichersystem senden, es für das Speichersystem einfacher zu machen, die Einheit der Daten zu lokalisieren, wobei auch der Wirkungsgrad des Speichersystems bei der Lokalisierung der Einheit der Daten erhöht wird.
  • Bei einer alternativen Ausführungsform der vorliegenden Erfindung ist ein inhaltsmäßig adressierbares Speichersystem mit einem Index ausgestattet, welcher eine Inhaltsadresse von wenigstens einer Einheit der Daten auflistet, und zwar an einer Speicherstelle, an welcher die Einheit der Daten gespeichert ist. Das Speichersystem hält einen Cache für den Ortsindex, um Performance-Verbesserungen beim Zugreifen auf Informationen zu erreichen, die innerhalb des Index enthalten sind.
  • Bei einer weiteren Ausführungsform der vorliegenden Erfindung wird eine Technik angewendet, um die Verarbeitung einer Anfrage von einem Host zu vereinfachen, der auf eine Einheit von Daten in einem inhaltsmäßig adressierbaren Speichersystem zugreifen möchte. Die Technik umfasst das Parsen der Inhaltsadresse, um wenigstens einen Aspekt einer physikalischen Speicherstelle zu bestimmen, an welcher die Einheit der Daten gespeichert ist. Durch die Verwendung von wenigstens einem Aspekt der Inhaltsadresse zum Bestimmen von wenigstens einem Aspekt der physikalischen Spei cherstelle, wo die Einheit der Daten gespeichert ist, lokalisieren eine Einheit der Daten im Ansprechen auf eine Zugriffsanfrage, können effizient erreicht werden, wie dies weiter unten noch erläutert wird.
  • Bei einer anderen Ausführungsform der vorliegenden Erfindung wird eine Technik angewendet, um Inhaltsadressen für Einheiten der Daten zu erzeugen, derart, dass die Inhaltsadressen Informationen enthalten, die eine Angabe darüber liefern, welche Einheiten der Daten in das Speichersystem angenähert zeitgleich eingeschrieben wurden. Wie sich noch aus der weiteren Erläuterung weiter unten ergibt, kann das Vorsehen von Inhaltsadressen, die eine gewisse Ähnlichkeit zumindest in einem Abschnitt derselben für die Einheiten der Daten aufweisen, die angenähert zeitgleich geschrieben wurden, die Wirkungsgrade in einem Speichersystem erhöhen, welches Einheiten der Daten im Ansprechen auf eine Zugriffsanfrage von einem Host lokalisiert.
  • Wie sich aus der vorangegangenen Beschreibung ergibt, richten sich mehrere der Aspekte der vorliegenden Erfindung spezifisch auf inhaltsmäßig adressierbare Speichersysteme. Dies betrifft jedoch nicht andere Aspekte der Erfindung, die breitere Anwendungen ermöglichen. Obwohl daher spezifische Implementationen weiter unten beschrieben werden, die speziell ein inhaltsmäßig adressierbares Speichersystem betreffen, sei darauf hingewiesen, dass alle Aspekte der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt sind, da sie auch bei anderen Typen von Speichersystemen angewendet werden können.
  • Ein veranschaulichendes Computersystem bzw. Konfiguration desselben, bei welcher die Aspekte der vorliegenden Erfindung verwendet werden können, ist in 4 gezeigt, die einen Hostcomputer 401 veranschaulicht, der an ein Speichersystem 407 gekoppelt ist.
  • Der Hostcomputer 401 führt ein Anwendungsprogramm 403 aus, welches Einheiten von Daten liest und schreibt, und es ist ein Anwendungsprogrammierinterface (API) 405 vorgesehen, welches dafür ausgelegt ist, um eine Kopplung mit dem Spei chersystem 405 vorzusehen. Der Host 401 kann beispielsweise aus einem Server bestehen, der Ressourcen liefert (z. B. Datenspeicher-, E-Mail- und andere Dienste), einem Client (z. B. einem Computersystem für allgemeine Zwecke, welches von einem Anwender betrieben wird), einer Netzwerkkomponente (z. B. einem Schalter) oder irgendeinem anderen Typ eines Computers. Der Host 401 ist über ein Kommunikationsglied 404 mit dem Speichersystem 407 gekoppelt, so dass der Host 401 das Speichersystem 407 verwenden kann, um Daten zu speichern und wieder aufzufinden. Das Verbindungsglied 404 kann aus irgendeinem Typ eines Kommunikationsverbindungsgliedes bestehen, inklusive irgendeinem Typ eines Netzwerks oder einer direkten Verbindung.
  • Die Anwendung 403 kann aus irgendeinem Computeranwendungsprogramm bestehen, welches ein Anwender oder Administrator des Hosts 401 verwendet und welches Daten in das Speichersystem 407 einspeichert und/oder die Daten wieder aufsucht. Das Anwendungsprogramm 403 ist mit dem API 405 verkettet, so dass das Anwendungsprogramm 403 das API 405 verwenden kann, um mit dem Speichersystem 407 zu kommunizieren.
  • Das API 405 kann beispielsweise einen Computerobjektkode enthalten, der an einen Programmierer des Anwendungsprogramms 403 gerichtet ist. Der Computerobjektkode enthält Routinen, die dazu verwendet werden können, um mit dem Speichersystem zu kommunizieren. Wenn eine Verkettung mit dem API 405 vorhanden ist, kann ein Anwendungsprogramm diese Routinen aufrufen, um mit dem Speichersystem 407 zu kommunizieren. Das API 405 kann mit irgendeiner Anzahl von Anwendungen verkettet sein und schirmt den Programmierer des Anwendungsprogramms 403 von dem internen Protokoll ab, über das das Speichersystem 407 kommuniziert. Es sei darauf hingewiesen, dass die Aspekte der vorliegenden Erfindung, die hier beschrieben werden, nicht auf die Verwendung in einem System beschränkt sind, welches ein API an dem Host verwendet, welches speziell dafür ausgelegt ist, um die Kommunikation zwischen dem Host 401 und dem Speichersystem 407 zu vereinfachen, da die Natur des Host/Speichersystem-Interfaces auch in irgendwelchen zahlreichen Wegen oder Weisen implementiert werden kann, so dass die vorliegende Erfindung nicht auf irgendeine spe zielle Implementierungstechnik beschränkt ist. Als ein Beispiel einer alternativen Implementierung kann die Anwendung 403 kundenspezifisch ausgelegt sein, um direkt mit dem Speichersystem 407 zu kommunizieren.
  • Bei einer Ausführungsform der Erfindung kann das Speichersystem 407 aus einem inhaltsmäßig adressierbaren Speichersystem (CAS) des Typs bestehen, den allgemein gleich zugeordneten, gleich laufenden Anmeldungen mit den Seriennummern 09/236,366, mit dem Titel "Content Addressable Information Encapuslation, Representation, and Transfer", eingereicht am 21. Januar 1999; 09/235,146 mit dem Titel "Access to Content Addressable Data Over a Network", eingereicht am 21. Januar 1999; 09/391,360 mit dem Titel System und Verfahren für eine sichere Speicherung, Transfer und Wiederauffindung von inhaltsmäßig adressierbaren Informationen, eingereicht am 7. September 1999, beschrieben ist; und auch in der Anmeldung beschrieben ist, welche den Titel trägt "Method and Apparatus for Data Retention in a Storage System", eingereicht am gleichen Datum mit der vorliegenden Anmeldung, die noch keine Seriennummer erhalten hat, wobei jede dieser Anmeldungen hier unter Bezugnahme mit einbezogen wird. Diese Anmeldungen betreffen einen inhaltsmäßig adressierbaren Speicher (CAS) und werden kollektiv als "die CAS-Anwendungen" benannt.
  • Wie oben erläutert ist, werden in einem inhaltsmäßig adressierbaren System Daten unter Verwendung einer Inhaltsadresse gespeichert, die basierend auf dem Inhalt der Daten selbst erzeugt wird. Die Inhaltsadresse kann dadurch generiert werden, indem eine Hash-Funktion bei den Daten, die gespeichert werden sollen, angewendet wird. Die Ausgangsgröße der Hash-Funktion kann wenigstens zum Teil als Inhaltsadresse verwendet werden, die für die Kommunikation zwischen dem Host und dem Speichersystem, um die Daten zu zeichnen, verwendet wird. Die Inhaltsadresse kann aufgelistet werden (z.B. innerhalb des Speichersystems 407), und zwar bei einer oder bei mehreren physikalischen Speicherstellen innerhalb des Speichersystems.
  • Ein Beispiel einer Hash-Funktion, die dazu verwendet werden kann, um die Inhaltsadresse zu generieren, ist das Message Digest 5 (MD5). Die Inhaltsadresse kann direkt dem Ergebnis des Hashs des Inhaltes entsprechen oder es können auch zusätzliche Informationen zu dem Hash-Ergebnis hinzu addiert werden, um die Adresse zu generieren. Es sei darauf hingewiesen, dass irgendein Typ einer Hash-Funktion verwendet werden kann und dass die Aspekte der Erfindung, wie sie hier beschrieben werden, nicht auf die Verwendung von irgendeinem speziellen Typ einer Hash-Funktion beschränkt sind, und dass einige Aspekte sogar selbst nicht auf die Verwendung eines inhaltsmäßig adressierbaren Systems beschränkt sind.
  • Bei einer Ausführungsform der Erfindung kann ein garantiert einzigartiger Identifizierer (GUID) zu einem oder mehreren der Hash-Ergebnisse hinzu addiert werden, um sicherzustellen, dass die Inhaltsadressen für die Einheiten der Daten einzigartig sind. Der GUID kann beispielsweise basierend auf der MAC-Adresse des Hostcomputers erzeugt werden, welcher die Inhaltsadresse erzeugt, basierend auf einem Zeitstempel und basierend auf einer Zufallszahl erzeugt werden, oder auch auf irgendeine andere geeignete Weise. Ein Beispiel zum Erzeugen der GUIDs kann in den Ausführungsformen der vorliegenden Erfindung verwendet werden und wird in der International Standard Organization (ISO) Spezifikation ISO/IEC 11578:1996 beschrieben.
  • Wenn ein Host Daten zu dem Speichersystem sendet, die darin abgespeichert werden sollen, können sowohl der Host als auch das Speichersystem unabhängig die Inhaltsadresse der Daten berechnen. Der Host kann die Inhaltsadresse für die Zukunft aufbewahren, um die Daten aus dem Speichersystem wieder zu erlangen. Alternativ kann lediglich das Speichersystem die Inhaltsadresse berechnen und kann die berechnete Inhaltsadresse zu dem Host zurückleiten, und zwar für eine spätere Verwendung beim Zugreifen auf die Daten. Als noch weitere Alternative können sowohl das Speichersystem als auch der Host die Inhaltsadresse berechnen und das Speichersystem kann ihre erzeugte Inhaltsadresse zu dem Host zurückleiten. Der Host kann dann seine unabhängig berechnete Inhaltsadresse mit der einen vergleichen, die er von dem Speichersystem empfangen hat, um deren Übereinstimmung zu verifizieren.
  • Bei der veranschaulichenden Konfiguration von 4 ist das Speichersystem 407 durch ein verteiltes Speichersystem gebildet, mit einer Vielzahl an Zugriffsknotenpunkten 409a, 409b, 409c und 409d und mit einer Vielzahl von Speicherknotenpunkten 411a, 411b, 411c und 411d. Die Zugriffsknotenpunkte 409 und die Speicherknotenpunkte 407 können in irgendeiner geeigneten Weise gekoppelt sein, wie beispielsweise durch eine Kommunikationsnetzwerk (nicht gezeigt), welches das TCP/IP-Netzwerkprotokoll verwendet. Jeder Zugriffsknotenpunkt 409 und jeder Speicherknotenpunkt 411 können beispielsweise aus einem getrennten Computer bestehen, mit einer unabhängigen Hardware und mit Softwareressourcen (das heißt einem Prozessor oder Prozessoren, einem Speicher, Plattenressourcen, Betriebssystem, Speichersystemsoftware), obwohl die Aspekte der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt sind.
  • Wie oben dargelegt ist, gibt der Hostcomputer 401 Anfragen aus (z. B. liest, schreibt dieser oder gibt andere Anfragen aus), und zwar zu einem der Zugriffsknotenpunkte 409. Im Fall von Schreibanfragen können die Zugriffsknotenpunkte 409 die Schreibanfrage (und die zu schreibenden Daten) von dem Hostcomputer empfangen, einen Speicherknotenpunkt 411 zum Speichern der Daten auswählen und dann die Daten zu diesem Speicherknotenpunkt zum Zwecke der Speicherung senden. Bei einigen Ausführungsformen können die Zugriffsknotenpunkte 409 einen Speicherknotenpunkt 411 auswählen, und zwar auf irgendeine geeignete Weise. Beispielsweise können die Zugriffsknotenpunkte 409 ein Lastabgleichsschema verwenden, um Daten gleichmäßig über die Speicherknotenpunkte zu verteilen, oder es können die Zugriffsknotenpunkte 409 auch eine unterschiedliche Auswahltechnik verwenden. Wie oben in Verbindung mit 2 erwähnt worden ist, kann dann, wenn eine Einheit der Daten gespeichert wird, ein Speicherknotenpunkt eine Datei erzeugen, mit einer Inhaltsadresse der Einheit der Daten als deren Dateiname, und kann die Einheit der Daten in dieser Datei speichern.
  • Im Falle von Leseanfragen können die Zugriffsknotenpunkte 409 die Anfrage von dem Hostcomputer empfangen, können bestimmen, bei welchem Speicherknotenpunkt 411 die angefragten Daten gespeichert sind, können die angefragten Daten von dem geeigneten Speicherknotenpunkt 411 anfordern bzw. erlangen und können die angefragten Daten zu dem Hostcomputer zurückleiten. Die Aspekte der vorliegenden Erfindung, die hier beschrieben werden, sind nicht darauf beschränkt oder auch nicht auf eine andere spezielle Konfiguration beschränkt, da irgendeine geeignete Konfiguration des Speichersystems verwendet werden kann. Beispielsweise kann das Speichersystem im Gegensatz dazu, dass die Zugriffsknotenpunkte die angefragten Daten von dem Speicherknotenpunkt erlangen und diese Daten zu dem Host 401 liefern, das Speichersystem alternativ so konfiguriert sein, dass der Zugriffsknotenpunkt einfach den Speicherknotenpunkt instruiert, die Daten direkt an den Host 401 zu übermitteln.
  • Die Speicherknotenpunkte 411 können Lese- und Schreibanfragen von den Zugriffsknotenpunkten 409 empfangen und können im Ansprechen darauf Daten herausfinden und Daten speichern. Als solches können die Speicherknotenpunkte 411 eine oder mehrere Speichervorrichtungen enthalten (z. B. Plattenlaufwerke oder irgendeinen anderen Typ einer Speichervorrichtung), auf denen Einheiten der Daten gespeichert sind. Es sei darauf hingewiesen, dass die Zugriffsknotenpunkte 409 ebenfalls eine oder mehrere Speichervorrichtungen enthalten können, so dass die Zugriffsknotenpunkte 409 und die Speicherknotenpunkte 411 die gleiche (oder angenähert die gleiche) oder unterschiedliche Hardwarekonfigurationen aufweisen können.
  • 4 veranschaulicht ein Speichersystem mit vier Zugriffsknotenpunkten und vier Speicherknotenpunkten. Es sei jedoch darauf hingewiesen, dass diese Konfiguration lediglich zur Veranschaulichung dient, da das Speichersystem auch irgendeine geeignete Anzahl von Zugriffsknotenpunkten und irgendeine geeignete Zahl (die sich von der Zahl der Zugriffsknotenpunkte unterscheiden kann) an Speicherknotenpunkten aufweisen kann, so dass die Erfindung nicht auf die Verwendung eines Speichersystems beschränkt ist, welches in irgendeiner speziellen Weise in dieser Hinsicht konfiguriert ist.
  • Es sei ferner darauf hingewiesen, dass, obwohl das Beispiel nach 4 Zugriffsknotenpunkte enthält, mit denen Hostcomputer kommunizieren, um auf das Speichersystem zuzugreifen, und Speicherknotenpunkte enthält, welche die Einheit der Daten spei chert, die Erfindung nicht auf diesen Aspekt beschränkt ist. Beispielsweise kann das Speichersystem Knotenpunkte enthalten, die beide mit Hostcomputern kommunizieren und Einheiten der Daten speichern. Das heißt, ein oder mehrere Knotenpunkte können (zumindest zum Teil) sowohl als Speicherknotenpunkt als auch als Zugriffsknotenpunkt dienen.
  • Ortshinweise
  • Bei einer Ausführungsform der Erfindung kann das Speichersystem Ortshinweise an den Host liefern, um die Effizienz der Zugriffe auf das Speichersystem zu erhöhen. Ein Ortshinweis besteht aus einer Information, die von dem Speichersystem an den Host geliefert wird und sich darauf bezieht, wo eine spezielle Einheit der Daten in dem Speichersystem gespeichert ist. Die Information, die in dem Ortshinweis geliefert wird, kann dann von dem Host zu dem Speichersystem zurück geleitet werden, und zwar in Verbindung mit zukünftigen Zugriffsanfragen nach der Einheit der Daten, und die Information kann durch das Speichersystem dazu verwendet werden, um effizient auf die Einheit der Daten zuzugreifen. Der Ortshinweis für eine spezielle Einheit der Daten kann eine Information in Bezug auf den Speicherknotenpunkt enthalten, an welchem die Einheit der Daten gespeichert ist, eine Information hinsichtlich der physikalischen Speichervorrichtung, in der dieser Speicherknotenpunkt die Einheit der Daten speichert, eine Information über das Dateisystem bzw. die Dateisystemstelle der Datei, welche diese Einheit der Daten enthält, und zwar auf dem physikalischen Speichersystem, die Information hinsichtlich der Stelle in der physikalischen Vorrichtung, an der die Einheit der Daten gespeichert ist, oder auch irgendeine Kombination derselben. Zusätzlich kann, im Gegensatz zu der Information, die direkt einen oder mehrere Aspekte der physikalischen Speicherstelle der Einheit der Daten identifiziert, die Information, die in einem Ortshinweis geliefert wird, sich darauf beziehen, wo die Einheit der Daten physikalisch auf irgendeine andere Weise gespeichert ist. Beispielsweise kann das Speichersystem einen Index der physikalischen Speicherstelle für die Einheiten der Daten enthalten und der Ortshinweis kann an den Host geliefert werden und kann für diesen einen Schlüssel darstellen, um in den Index zu gelangen. Somit kann die Information, die durch den Orts hinweis geliefert wird, sich darauf beziehen, wo die Einheit der Daten physikalisch auf irgendeine geeignete Weise gespeichert ist.
  • Das Speichersystem kann den Ortshinweis an den Host auf irgendeinen von vielfältigen Wegen liefern, so dass die Erfindung nicht in dieser Hinsicht eingeschränkt ist. Beispielsweise kann das Speichersystem im Ansprechen auf eine Schreibanfrage von dem Hostcomputer, um eine Einheit der Daten zu schreiben, die Ortshinweis-Information (als einen Token oder in irgendeiner Form) für die Einheit der Daten zurückleiten. Der Ortshinweis kann auch lediglich eine Information enthalten, die rückgeleitet wird, oder kann zu dem Host mit anderen Informationen zurückgeleitet werden, und zwar im Ansprechen auf eine Schreibanfrage. Beispielsweise spricht bei einer Ausführungsform das Speichersystem auf eine Schreibanfrage dadurch an, indem es die Inhaltsadresse (z. B. den MD5-Hashwert) entsprechend der Einheit der Daten zurückleitet, so dass der Host verifizieren kann, dass das Speichersystem die Inhaltsadresse korrekt berechnet hat. Wenn bei einer Ausführungsform die Inhaltsadresse zu dem Host im Ansprechen auf die Schreibanfrage zurückgeleitet wird, kann das Speichersystem den Ortshinweis ebenfalls senden, wie dies konzeptmäßig bei 406 in 4 veranschaulicht ist.
  • Das Speichersystem kann auch eine Ortshinweis-Information an den Host im Ansprechen auf eine Leseanfrage senden. Wenn beispielsweise das Speichersystem die angefragte Einheit der Daten zu dem Host zurückleitet, kann das Speichersystem auch eine Ortshinweis-Information für die angefragte Einheit der Daten senden.
  • Das Speichersystem kann auch eine Ortshinweis-Information zu dem Host als Antwort auf Abfrageanfragen oder irgendeinen anderen Typ einer Anfrage senden. Die Abfrageanfrage besteht aus einer Anfrage bei dem Speichersystem, in welchem ein Host Einheiten der Daten anfragen kann, und zwar basierend auf Informationen über die Einheiten der Daten. Solche Informationen können beispielsweise aus dem Zeitpunkt bestehen, zu welchem die Einheiten der Daten gespeichert wurden, und zwar in dem Speichersystem, teilweise aus Metadaten bestehen, die in einer CDF gespeichert sind, eine Teil-Inhaltsadresse oder irgendwelchen anderen geeigneten Informationen bestehen.
  • Anstatt beispielsweise eine Inhaltsadresse an das Speichersystem zu liefern (wie bei einer typischen Leseanfrage), kann der Host einen Zeitbereich liefern (z. B. eine Startzeit und eine Endzeit bzw. Zeitpunkt), und zwar zu dem Speichersystem. Im Ansprechen sendet dann das Speichersystem an den Host eine Liste von Inhaltsadressen zurück, entsprechend den Einheiten der Daten, die in dem Speichersystem während der Zeitperiode gespeichert wurden, die durch den Zeitbereich angezeigt wird. Das Speichersystem kann die Ortshinweis-Information zu dem Host für jede der Einheiten senden, die im Ansprechen auf die Abfrageanfrage identifiziert wurde. Das Übertragen der Ortshinweise im Ansprechen auf eine Abfrageanfrage kann nützlich sein, da es wahrscheinlich ist, dass der Host Leseanfragen für wenigstens einige der Inhaltsadressen ausgibt, die durch das Speichersystem im Ansprechen auf die Abfrageanfrage zurückgeleitet werden. Wenn der Host das Speichersystem über die Örtlichkeit der Einheiten der Daten unterrichten kann, und zwar entsprechend diesen Inhaltsadressen (das heißt aus dem Ortshinweis), können Rechenressourcen (und Zeit) bei dem Speichersystem, die beim Lokalisieren der Einheiten der Daten in dem Speichersystem verbraucht werden, reduziert werden.
  • Wie oben dargelegt wurde, können die Informationen an das Speichersystem in einer Abfrageanfrage geliefert werden, wobei keine Einschränkung auf einen Zeitbereich vorliegt. Die Informationen können zusätzlich oder alternativ einen Teil der Metadaten enthalten, die in einer CDF gespeichert sind, eine Teil-Inhaltsadresse enthalten, oder irgendwelche anderen geeigneten Informationen. Wenn beispielsweise die Abfrageanfrage Metadaten enthält, die in einer CDF oder einer speziellen Inhaltsadresse gespeichert sind, kann das Speichersystem die Inhaltsadressen von jeglichen CDFs zurückleiten, welche die spezifizierten Metadaten oder Teil-Inhaltsadresse enthalten.
  • Der Host kann die Ortshinweis-Information, die er von dem Speichersystem empfängt, auf irgendeinem einer Vielzahl von Wegen verwenden, so dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist. Wie oben dargelegt wurde, kann ein Anwendungsprogramm 403 (4), welches auf dem Host ausgeführt wird, mit dem Speicher system über ein API 405 kommunizieren. Wenn das API einen Ortshinweis von dem Speichersystem empfängt (z. B. im Ansprechen auf eine Lese-, Schreib-, Abfrageanfrage oder einer anderen Zugriffsanfrage), kann das API den Ortshinweis zu dem Anwendungsprogramm übertragen. Das Anwendungsprogramm kann dann die Ortshinweis-Information in einer Weise speichern, die der entsprechenden Inhaltsadresse zugeordnet ist. Wenn somit das Anwendungsprogramm beim nächsten Mal Zugriff auf die Einheit der Daten anfragt, entsprechend dieser Inhaltsadresse (das heißt über das API), kann das Anwendungsprogramm die Ortshinweis-Information zusammen mit der Inhaltsadresse übermitteln.
  • Alternativ kann, anstatt die Ortshinweis-Information zu dem Anwendungsprogramm zu leiten, das API die Ortshinweis-Information selbst speichern. Solch ein API kann von dem Anwendungsprogramm eine Anfrage empfangen, um auf eine Einheit der Daten in dem Speichersystem zuzugreifen, wobei die Anfrage die Inhaltsadresse für die gewünschte Einheit der Daten enthält. Das API kann bestimmen, ob es einen Ortshinweis entsprechend dieser Inhaltsadresse gespeichert hält. Wenn dies der Fall ist, kann das API den Ortshinweis an das Speichersystem zusammen mit der Zugriffsanfrage übermitteln.
  • Der Host (z.B. das API oder das Anwendungsprogramm) kann die Ortshinweis-Information in irgendeiner geeigneten Weise speichern. Bei einer Ausführungsform hält der Host (z.B. das API) einen Cache aufrecht, um Ortshinweise gespeichert zu halten und auch deren entsprechende Inhaltsadressen, was aus Performance-Gründen geschieht. Wenn der Cachespeicher voll ist, kann das API oder das Anwendungsprogramm Posten in dem Cache ersetzen, und zwar unter Verwendung eines kürzlich verwendeten Ersetzungsschemas, eines unmittelbar zuvor verwendeten Ersetzungsschemas oder anhand irgendeines geeigneten Cache-Ersetzungsschemas.
  • Es sei darauf hingewiesen, dass die Verwendung der Ortshinweise einen Teil der Berechnungslast bei der Lokalisierung der Daten in dem Speichersystem von dem Speichersystem nimmt, und zwar auf den Host überträgt, da der Hostcomputer Aufzeich nungen der Ortsinformationen hält und auf diese zugreift. Wenn eine Zugriffsanfrage an das Speichersystem ausgegeben wird, kann der Hostcomputer diese Aufzeichnungen durchsuchen und kann Ortsinformationen, wenn sie verfügbar sind, an das Speichersystem liefern. Dies ermöglicht es dem Speichersystem, zumindest in gewissem Ausmaß eine Suchfunktion nach Aufzeichnungen in dem Speichersystem durchzuführen, um die physikalische Stelle für gespeicherte Dateneinheiten zu bestimmen.
  • Bei einer anderen Ausführungsform kann der Host einfach irgendwelche Ortshinweise ignorieren, die er von dem Speichersystem empfängt. Das heißt, der Host kann sich entscheiden, keinerlei Berechnungslast in Verbindung mit der Lokalisierung von Daten zu übernehmen, und kann sich rein auf das Speichersystem verlassen, um den Inhalt zu lokalisieren.
  • Bei einer anderen Ausführungsform wird die Verwendung von Ortshinweisen als optionales Merkmal an dem Host vorgesehen, so dass dieses Merkmal eingeschaltet oder ausgeschaltet werden kann.
  • Es sei darauf hingewiesen, dass die Ortshinweis-Information durch das Speichersystem auf irgendeine von zahlreichen Möglichkeiten bestimmt werden kann, so dass die vorliegende Erfindung nicht auf eine spezielle Implementierungstechnik eingeschränkt ist. Gemäß einer Ausführungsform der vorliegenden Erfindung kann für die Verwendung mit einem Speichersystem mit der Konfiguration, die in 4 gezeigt ist, die Ortsinformation durch die Zugriffsknotenpunkte 409 generiert werden und möglicherweise auch durch die Speicherknotenpunkte 411, abhängig von der Körnigkeit oder Strukturiertheit der Ortsinformation, die vorgesehen wird. In dieser Hinsicht kann, wie auch oben erläutert ist, die Ortsinformation mit irgendwelchen zahlreichen Werten der Auflösung (granularity) vorgesehen werden, so dass die vorliegende Erfindung in dieser Hinsicht nicht eingeschränkt ist. Beispielsweise kann die Ortsinformation einen Hinweis lediglich darüber vorsehen, welcher Zugriffsknotenpunkt den Zugriff auf die physikalische Speicherstelle kontrolliert, oder kann auch zusätzliche Informationen vorsehen, welche einen spezifischen Speicherknotenpunkt betreffen, welcher die Einheit der Daten speichert. In ähnlicher Weise kann auch die Information, die den bestimmten Speicherknotenpunkt betrifft, welcher die Einheit der Daten speichert, ebenso auf zahlreiche Werte der Auflösung geliefert werden, da diese Informationen lediglich den Speicherknotenpunkt identifizieren, oder sie können alternativ auch mehr beschreibend sein und können ein Dateisystem bzw. Dateisystemstelle und optional auch eine bestimmte Speichervorrichtung (z.B. Plattenlaufwerk) identifizieren, auf welchem die Einheit der Daten gespeichert ist. Es sei darauf hingewiesen, dass im Ansprechen auf eine Zugriffsanfrage es für das Speichersystem ein ziemlich einfacher Prozess ist, die Ortsinformation zu generieren, da das Speichersystem als ein Ergebnis des Zugriffs auf die Einheit der Daten durch den Prozess hindurch verläuft, um die physikalische Speicherstelle zu bestimmen, und dann diese Information zur Verfügung hat, um einen Hinweis für den Host zu liefern. Wenn beispielsweise bei einer Ausführungsform der vorliegenden Erfindung eine Einheit von Daten zugegriffen wird, so identifiziert der Speicherknotenpunkt, an welchem die Daten gespeichert sind, für den geeigneten Zugriffsknotenpunkt das Dateisystem und das Plattenlaufwerk, auf welchem die Daten gespeichert sind, und der Zugriffsknotenpunkt leitet dann diese Informationen weiter zu dem Host, und zwar in Form des oben beschriebenen Ortshinweises. Es sei darauf hingewiesen, dass die Werte der Auflösung und die An, in welcher die Ortsinformationen erzeugt werden, nicht auf die hier beschriebenen Beispiele beschränkt sind, noch auf ein Speichersystem eines Typs der Konfiguration, die in 4 gezeigt ist, so dass dieser Aspekt der Erfindung in Verbindung mit zahlreichen anderen Typen an Speichersystemkonfigurationen verwendet werden kann, inklusive solcher, die keinen Zugriffsknotenpunkt bzw. keine Speicherknotenpunktstruktur verwenden.
  • Wenn Ortshinweise nicht verwendet werden (das heißt dieses Merkmal ist ausgeschaltet) oder wenn der Host keine Ortsinformationen für eine bestimmte Einheit von Daten besitzt, kann das Speichersystem eine Multicast-Ortsanfrage, BLI-Nachsehoperation, oder irgendeine andere geeignete Technik verwenden, um die Daten zu lokalisieren. Ferner kann bei einigen Umständen ein Ortshinweis nicht in korrekter Weise die Örtlichkeit des Inhaltes an dem Speichersystem identifizieren. Solch eine Situation kann beispielsweise dann auftreten, wenn das Speichersystem den Inhalt zu einer neuen Stelle bewegt, nachdem der Host den Ortshinweis empfangen hat. Wenn ein Ortshinweis fehlschlägt, um die korrekte Stelle des Inhaltes des Speichersystems zu identifizieren, kann das Speichersystem ein anderes Verfahren zum Lokalisieren des Inhaltes verwenden, wie beispielsweise MLQ, BLI-Nachschlagverfahren, oder irgendeine andere geeignete Technik.
  • BLI-Caching
  • Bei einer Ausführungsform der Erfindung hält das Speichersystem einen Datensatz (z.B. eine Datenbank), die als ein Blob-Ortsindex (BLI) bezeichnet wird, der in einer Weise des BLI arbeitet, wie oben in Verbindung mit einem bekannten System beschrieben wurde. Bei einer Ausführungsform wird die Verantwortlichkeit der Verwaltung des BLI unter den Speicherknotenpunkten 411 verteilt (4), wobei jeder einen bezeichneten Bereich von Adressen aufweist (z.B. Inhaltsadressen), der für die Adressen verantwortlich ist und für einen Index für die Adressen verantwortlich ist, und zwar in diesem Bereich, um eine Identifizierung durchzuführen, wo die entsprechenden Dateneinheiten gespeichert sind. Der BLI selbst (zusätzlich zu den Verwaltungsverantwortlichkeiten) kann auch über vielfältige Knotenpunkte des Speichersystems verteilt sein. Um den Wirkungsgrad beim Zugreifen auf den BLI zu erhöhen, werden Abschnitte des BLI gecacht, und zwar in Einklang mit einer Ausführungsform der Erfindung.
  • Der Blob-Ortsindex kann aus einer Datenbank (oder einem anderen Datensatz) bestehen, der für Einheiten der Daten, welche in dem Speichersystem gespeichert sind, die Inhaltsadresse entsprechend der Einheit der Daten für den Knotenpunkt auflistet, an welchem die Einheit der Daten gespeichert ist. Der BLI kann in seiner Gesamtheit an einem Speicherknotenpunkt gespeichert sein (und optional an einer oder an mehreren anderen Speicherknotenpunkten gespiegelt sein) oder kann unter zwei oder mehreren Speicherknotenpunkten verteilt sein, wie oben erläutert wurde. Im Ansprechen auf eine Zugriffsanfrage auf eine bestimmte Adresse, leitet der Zugriffsknotenpunkt 409, welcher die Anfrage empfängt, diese zu einem Speicherknotenpunkt 411 weiter, der den Abschnitt des BLI verwaltet, welcher diese Adresse enthält, und es wird der BLI durch den geeigneten Speicherknotenpunkt gelesen, um den Ort der angefragten Einheit der Daten an dem Speichersystem zu bestimmen.
  • Es sei darauf hingewiesen, dass die Verwaltung eines einzelnen Abschnitts des BLI durch mehr als einen Speicherknotenpunkt vorgenommen werden kann, in welchem Fall der Zugriffsknotenpunkt 409 solche Anfragen zu einem oder zu allen Speicherknotenpunkten weiterleiten kann, welche diesen Abschnitt des BLI verwalten.
  • Es sei auch darauf hingewiesen, dass bei einigen Ausführungsformen der Erfindung die Speicherung des BLI oder die Verwaltung des BLI durch sowohl die Zugriffsknotenpunkte als auch die Speicherknotenpunkte ausgeführt werden kann oder auch alleine durch die Zugriffsknotenpunkte, so dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist. Es sei ferner darauf hingewiesen, dass die weiter unten erläuterten Techniken zum Cachen von Abschnitten des BLI auch in gleicher Weise bei sowohl den Zugriffsknotenpunkten als auch den Speicherknotenpunkten angewendet werden können.
  • Bei dem System nach dem Stand der Technik wird der BLI in einem Sekundärspeicher (z. B. Magnetplatte) gespeichert, die für den Zugriff langsamer ist als der primäre Speicher. Wenn die Zugriffsanfrage aus einer Schreibanfrage für eine neue Einheit der Daten besteht, und zwar ohne Eintrag in den BLI, wird der BLI auf den neuesten Stand gebracht, so dass er die Inhaltsadresse und die Speicherknotenpunktstelle der neuerlich gespeicherten Daten enthält. Das Speichersystem wartet darauf, dass der BLI auf den neuesten Stand gebracht wird, bevor dem Host angezeigt wird, dass der Schreibvorgang in erfolgreicher Weise vervollständigt worden ist. Wenn der Abschnitt des BLI, der auf den neuesten Stand zu bringen ist, nicht bereits in dem primären Speicher des Speicherknotenpunktes vorhanden ist, führt der Speicherknotenpunkt, der den BLI auf den neuesten Stand bringt, einen Plattenlesevorgang durch, um den BLI in den primären Speicher zu lesen (das heißt einen RAM), er erneuert den BLI in dem primären Speicher und führt dann einen Plattenschreibvorgang durch, um den erneuerten BLI zurück in die Platte zu schreiben. Es ergibt sich somit vom Standpunkt eines Anwendungsprogramms aus eine gewisse Latenz von dem Zeitpunkt an, wenn die Schreibanfrage ausgegeben wird, bis zu dem Zeitpunkt, bei dem das Speichersystem das erfolgreiche Schreiben bestätigt und die Inhaltsadresse der geschriebenen Daten zurückleitet, und diese Latenz erhöht sich, wenn die Bestätigung nicht zurückgeleitet wird, bis der BLI auf den neuesten Stand gebracht ist.
  • Gemäß einer Ausführungsform der Erfindung hält das Speichersystem einen BLI-Cache in dem primären Speicher (z. B. RAM), um eine verbesserte Zugriffsperformance zu erreichen. Beispielsweise kann das Speichersystem im Ansprechen auf eine Schreibanfrage den neuen Eintrag in den BLI-Cachespeicher in den primären Speicher einschreiben und kann dem anfragenden Host antworten, dass der Schreibvorgang erfolgreich vervollständigt worden ist. Die Inhalte des BLI-Cachespeichers können zu dem BLI auf der Platte zu einem späteren Zeitpunkt ausgelesen werden. Als ein Ergebnis wird die Latenz, die durch das Erneuern des BLI verursacht wird, reduziert.
  • Der BLI-Cache erhöht auch den Wirkungsgrad der Lesezugriffe auf das Speichersystem. Wenn eine Leseanfrage empfangen wird, kann das Speichersystem den BLI-Cache absuchen, um zu bestimmen, ob der Ort der angefragten Einheit der Daten in dem BLI-Cache gespeichert ist. Wenn dies der Fall ist, entfällt der Zwang nach einem Plattenlesevorgang zu dem BLI.
  • Der BLI-Cache kann auf irgendeine geeignete Weise ausgelegt und gespeichert sein, so dass die vorliegende Erfindung nicht auf eine spezielle Implementierungstechnik beschränkt ist. Wenn beispielsweise der BLI als Gesamtheit an einem einzelnen Speicherknotenpunkt gespeichert ist, kann der BLI-Cache insgesamt an dem gleichen Speicherknotenpunkt gehalten werden oder kann unter vielen Speicherknotenpunkten verteilt sein. In ähnlicher Weise, wenn der BLI über viele Knotenpunkte verteilt ist, kann ein Speicherknotenpunkt dazu verwendet werden, um den BLI-Cache zu speichern oder auch jeder Speicherknotenpunkt kann den Abschnitt des BLI-Cache (412a-d in 4) speichern, entsprechend dem Abschnitt des BLI, der durch diesen Speicherknotenpunkt gespeichert ist.
  • Es sei darauf hingewiesen, dass die oben beschriebenen Orte des BLI-Cachespeichers lediglich als Beispiele dienen, da nämlich der BLI-Cachespeicher irgendwo in dem Speichersystem gelegen sein kann und/oder über das Speichersystem in irgendeiner Weise verteilt sein kann, wobei die Einträge eines verteilten BLI-Cache nicht notwendigerweise auf die gleiche Maschine begrenzt sind, und zwar als entsprechende Einträge für den BLI. Es sei ferner darauf hingewiesen, dass der BLI-Cache zu dem BLI in irgendeiner geeigneten Weise ausgelesen werden kann, so dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist. Beispielsweise können Einträge in den BLI-Cache zu dem BLI ausgelesen werden (destaged), und zwar immer dann, wenn der BLI-Cache voll ist, entsprechend irgendeinem geeigneten Ersetzungsalgorithmus. Alternativ können die BLI-Cacheeinträge zu dem BLI während Perioden einer leichten Prozessorverwendung ausgelesen werden, und zwar innerhalb des Speichersystems. Als eine noch andere Alternative können die BLI-Cacheeinträge zu dem BLI ausgelesen werden, und zwar nachdem eine festgelegte Zeitperiode verstrichen ist.
  • Bei einer Ausführungsform können die Zugriffsknotenpunkte auch BLI-Einträge cachen, entweder anstelle von oder zusätzlich zur Speicherung der BLI-Cacheeinträge an den Speicherknotenpunkten. Wenn ein Zugriffsknotenpunkt eine Schreibanfrage von einem Host verarbeitet, führt der Zugriffsknotenpunkt eine Auswahl durch, auf welchem Speicherknotenpunkt die Daten geschrieben sind, so dass der Zugriffsknotenpunkt die Information zusammen mit der Inhaltsadresse der neu geschriebenen Daten besitzt und diese in seinen BLI-Cachespeicher hinzufügen kann. Bei einer Ausführungsform kann dieser, nachdem der Speicherknotenpunkt die neu geschriebenen Daten gespeichert hat, die Informationen zu dem Zugriffsknotenpunkt in Bezug auf das Dateisystem und die Platte an dem Speicherknotenpunkt, wo die Daten gespeichert sind, zurückleiten, so dass diese Informationen auch zu dem Cacheeintrag an dem Zugriffsknotenpunkt hinzu addiert werden können. Es sei darauf hingewiesen, dass die vorliegende Erfindung nicht in dieser Hinsicht eingeschränkt ist, da die BLI-Cacheeinträge alternativ auch lediglich den Speicherknotenpunkt identifizieren können, an welchem die Dateneinheiten gespeichert sind.
  • Wenn der Zugriffsknotenpunkt eine Leseanfrage empfängt, kann er in seinem BLI-Cachespeicher nach der angefragten Inhaltsadresse suchen. Wenn ein Cachetreffer auftritt (das heißt, es wird die Inhaltsadresse in dem Cachespeicher gefunden), braucht der Zugriffsknotenpunkt den BLI an dem Speichersystem nicht zu belästigen oder abfragen, da der Zugriffsknotenpunkt die Speicherstelle für die angefragte Einheit an Daten aus seinem eigenen BLI-Cachespeicher bestimmen kann. Somit wird die Ansprechzeit zum Zurückleiten der angefragten Einheit der Daten weiter reduziert.
  • Es sei darauf hingewiesen, dass der BLI-Cachespeicher in den Zugriffsknotenpunkten mit oder ohne eine andere Schicht des BLI-Caching an den Speicherknotenpunkten verwendet werden kann. Es sei auch erwähnt, dass der BLI, wie er oben beschrieben wurde, die Inhaltsadressen für die Speicherknotenpunkte auflistet, welche die Einheit der Daten speichern, und zwar entsprechend solche Inhaltsadressen. Jedoch kann der Belichtung auch Informationen über eine bestimmte physikalische Plattenvorrichtung enthalten und/oder über eine Dateisystemstelle der Einheit der Daten, so dass die Erfindung hierauf nicht beschränkt ist.
  • Bei einer Ausführungsform wird der BLI-Cachingvorgang als ein optionales Merkmal dem Anwender des Speichersystems angeboten, so dass dieses Merkmal eingeschaltet oder ausgeschaltet werden kann.
  • Wie oben erläutert wurde, kann bei einer Ausführungsform, wenn eine neue Einheit der Daten in das Speichersystem geschrieben wird, zusätzlich zum Schreiben der Daten zu einem Speicherknotenpunkt, und die Erneuerung der Metadaten in dem Speichersystem, die sich darauf beziehen, wo die Einheit der Daten gespeichert sind, welche Ausführungsform einen BLI-Cachespeicher verwendet, der BLI-Cache ebenfalls auf den neuesten Stand gebracht werden. Wie oben dargelegt wurde, kann die Erneuerung zahlreicher Bereiche in dem Speichersystem zu einer gewissen Latenz führen, und zwar bis zum Aussenden einer Bestätigung von dem Speichersystem zu dem Host, dass eine Schreibanfrage verarbeitet worden ist. Gemäß einer Ausführungsform der vorliegenden Erfindung kann das Schreiben in den BLI-Cachespeicher dann durchgeführt werden, nachdem die Bestätigung an den Host geliefert worden ist, da ein Fehler oder Ausfall einen Eintrag in den BLI-Cache für eine Einheit der Daten lediglich die Performance eines zukünftigen Zugriffs auf die Einheit der Daten beeinflusst, jedoch nicht ausschließt, dass die Einheit der Daten durch das Speichersystem zugegriffen werden kann. Bei einer weiteren Ausführungsform der vorliegenden Erfindung kann die Bestätigung auch selbst dann geliefert werden, bevor geeignete Einträge in den BLI geschrieben worden sind, um dadurch die Schreib-Performance weiter zu verbessern. Es sei in dieser Beziehung darauf hingewiesen, dass gemäß einer Ausführungsform der vorliegenden Erfindung das Speichersystem, wenn eine Zugriffsanfrage empfangen wird, um Daten zu lesen, und es keinen entsprechenden Eintrag in dem BLI gibt, eine Multicast-Ortsabfrage für die Einheit der Daten ausgeben kann, um festzustellen, ob diese an irgendeinem der Speicherknotenpunkte gespeichert ist. Gemäß dieser Ausführungsform der vorliegenden Erfindung ist das Speichersystem daher in der Lage, Einheiten von Daten selbst dann zu lokalisieren, wenn sie keinen entsprechenden Eintrag in der BLI haben.
  • Es sei darauf hingewiesen, dass die obigen Erläuterungen, welche die Implementierung eines Cachespeichers für einen Ortsindex in einem inhaltsmäßig adressierbaren Speichersystem betreffen, welches die in 4 gezeigte Konfiguration aufweist, lediglich der Veranschaulichung dienen soll und dass die vorliegende Erfindung in dieser Hinsicht nicht eingeschränkt ist. Der Aspekt der vorliegenden Erfindung, der die Verwendung eines Cachespeichers für einen Ortsindex in einem inhaltsmäßig adressierbaren Speichersystem betrifft, kann mit Speichersystemen mit Konfigurationen angewendet werden, die verschieden sind von dem Zugriffsknotenpunkt/Speicherknotenpunkt bzw. deren Konfiguration, die in 4 gezeigt ist.
  • Es sei ferner darauf hingewiesen, dass die Aspekte der vorliegenden Erfindung, welche das Caching eines Ortsindex und die Verwendung eines Ortshinweises betreffen, die zu dem Hostcomputer geleitet werden können, sich nicht gegenseitig ausschließen und dass diese zwei Merkmale entweder zusammen oder auch getrennt verwendet werden können.
  • Interne Orte
  • Eine alternative Ausführungsform verwendet eine Technik (im Folgenden als innere Orte bezeichnet), die wenigstens einen Abschnitt der Inhaltsadresse verwendet, um wenigstens einen Aspekt der Speicherstelle für Einheiten von Daten in dem Speichersystem zu bestimmen. 5 zeigt ein veranschaulichendes Speichersystem 507, welches innere Orte (intrinsic locations) verwendet. Das Speichersystem 507 enthält eine Vielzahl von Zugriffsknotenpunkten 503a, 503b und 503c und eine Vielzahl an Speicherknotenpunkten 505a, 505b, 505c, 505d, 505e und 505f. Die Speicherknotenpunkte können in Gruppen aufgeteilt sein, derart, dass jede Gruppe der Speicherknotenpunkte einem Bereich einer Inhaltsadresse zugeordnet ist. Bei dem Beispiel von 5 sind die Speicherknotenpunkte 505a und 505b den Inhaltsadressen zugeordnet, die mit den Buchstaben 'A' – 'I' beginnen, die Speicherknotenpunkte 505c und 505d sind Inhaltsadressen zugeordnet, die mit den Buchstaben 'J' – 'R' beginnen, und die Speicherknotenpunkte 505e und 505f sind Inhaltsadressen zugeordnet, die mit den Buchstaben 'S' – 'Z' beginnen. In 5 enthält jede Gruppe der Speicherknotenpunkte zwei Speicherknotenpunkte. Es sei jedoch darauf hingewiesen, dass eine Speicherknotenpunktgruppe auch lediglich einen Speicherknotenpunkt enthalten kann oder auch drei oder mehrere Speicherknotenpunkte enthalten kann. Ferner ist es nicht erforderlich, dass jede Gruppe der Speicherknotenpunkte eine gleich große Anzahl von Speicherknotenpunkten umfasst.
  • Bei einer Ausführungsform speichert jede Gruppe der Speicherknotenpunkte die Dateneinheiten, die dem zugeordneten Bereich der Inhaltsadressen entsprechen. Die Zugriffsknotenpunkte 503 halten Informationen, welcher Bereich der Inhaltsadressen jeder Gruppe der Speicherknotenpunkte zugeordnet ist, und können als solche einen geeigneten Speicherknotenpunkt auswählen, um auf Einheiten der Daten im Ansprechen auf eine Zugriffsanfrage zuzugreifen.
  • Wenn beispielsweise der Zugriffsknotenpunkt 503a von dem Host 501a eine Anfrage empfängt, um eine Einheit an Daten zu schreiben, dessen Inhaltsadresse mit dem Buchstaben 'J' beginnt, wählt der Zugriffsknotenpunkt entweder den Speicherknotenpunkt 505c oder 505d zum Speichern der Daten aus. Bei einer Ausführungsform wählt der Zugriffsknotenpunkt 503a eine von diesen zwei Speicherknotenpunkten aus, und zwar basierend auf einem anderen Teil der Inhaltsadresse. Beispielsweise kann der Zugriffsknotenpunkt 503a den zweiten Buchstaben der Inhaltsadresse prüfen, um einen geeigneten Speicherknotenpunkt innerhalb der ausgewählten Gruppe auszuwählen. Beispielsweise kann der Speicherknotenpunkt 505c Dateneinheiten speichern, der Inhaltsadressen einen zweiten Buchstaben gemäß 'A' – 'M' aufweisen, und der Speicherknotenpunkt 505d kann Dateneinheiten speichern, deren Inhaltsadressen einen zweiten Buchstaben gemäß N' – 'Z' aufweisen. Es sei darauf hingewiesen, dass irgendein Zeichen oder Zeichen in der Inhaltsadresse dafür ausgewählt werden kann, um den geeigneten oder richtigen Speicherknotenpunkt innerhalb einer Gruppe der vielen Speicherknotenpunkte auszuwählen, so dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • Wenn der Zugriffsknotenpunkt 503a einmal als Speicherknotenpunkt zum Speichern der Einheit der Daten ausgewählt worden ist, kann der ausgewählte Speicherknotenpunkt eine physikalische Speichervorrichtung (z. B. eine Platte) auswählen, auf der dieser die Einheit der Daten speichert. 6 zeigt konzeptmäßig einen Speicherknotenpunkt 601 mit vier physikalischen Speichervorrichtungen 603a, 603b, 603c und 603d. Der Speicherknotenpunkt 601 kann eine der Speichervorrichtungen auswählen, um eine Einheit der Daten basierend auf einem oder mehreren Zeichen oder Buchstaben in der Inhaltsadresse zu speichern. Beispielsweise kann der Speicherknotenpunkt 601 eine der Speichervorrichtungen 603 basierend auf dem dritten Zeichen oder Buchstaben der Inhaltsadresse auswählen. Wenn das dritte Zeichen oder der dritte Buchstabe der Inhaltsadresse lautet 'A' – 'F', kann die Speichervorrichtung 603a die Daten speichern. Wenn der dritte Buchstabe 'G' – 'L' ist, kann die Speichervorrichtung 603b die Daten speichern. Wenn der dritte Buchstabe 'M' – 'R' lautet, kann die Speichervorrichtung 603c die Daten speichern. Wenn das dritte Zeichen oder der dritte Buchstabe 'S' – 'Z' lautet, kann die Speichervorrichtung 603d die Daten speichern.
  • Durch Auswählen der physikalischen Speicherstelle (z. B. dem Knotenpunkt und der Speichervorrichtung) für eine Einheit der Daten basierend auf der Inhaltsadresse der Einheit der Daten, kann ein Zugriffsknotenpunkt später den physikalischen Ort bestimmen, ohne Einblick in eine Datenbank zu nehmen oder eine Multicast-Ortsabfrage vorzunehmen. Das heißt, der Zugriffsknotenpunkt kann einfach die Inhaltsadresse prüfen und kann den Ort der Einheit der Daten basierend auf der Inhaltsadresse bestimmen.
  • Obwohl das oben beschriebene veranschaulichende Beispiel eine innere Ortsbestimmungstechnik verwendet, um nicht nur den Speicherknotenpunkt zu bestimmen, an welchem eine Einheit von Daten gespeichert ist, basierend auf deren Inhaltsadresse, sondern auch das Dateisystem und die Speichervorrichtung innerhalb des Knotenpunktes, sei darauf hingewiesen, dass der Aspekt der vorliegenden Erfindung, der sich auf die Verwendung der inneren Ortsangaben bezieht, in dieser Hinsicht nicht eingeschränkt ist und dazu verwendet werden kann, um lediglich andere Aspekte der physikalischen Speicherstelle einer Einheit von Daten, jedoch nicht andere, zu bestimmen. Beispielsweise kann die innere Ortsbestimmungstechnik alternativ dazu verwendet werden, um lediglich einen Speicherknotenpunkt auszuwählen, an welchem eine Einheit von Daten gespeichert ist, so dass dadurch der Bedarf beseitigt wird, Nachschlagoperationen durchzuführen oder Abfragen auszusenden, um den Speicherknotenpunkt zu bestimmen, wobei jedoch die Bestimmung des Dateisystems und/oder der physikalischen Speichervorrichtung, auf welcher die Einheit der Daten gespeichert ist, auch auf andere Weise erfolgen kann, inklusive der Verwendung von Indextechniken, wie sie oben angesprochen wurden.
  • Die Anmelder haben erkannt, dass für einige Einheiten der Daten es wünschenswert sein kann, diese nicht in der bestimmten physikalischen Speicherstelle zu speichern, die für die Einheit der Daten durch die innere Ortsbestimmungstechnik spezifiziert wurde, und zwar basierend auf deren Inhaltsadresse, und die Anmelder haben eine Technik zum Adressieren solcher Einheiten von Daten entwickelt. Dies kann sich anhand zahlreicher Gründe ergeben, wobei ein Beispiel dafür eine besonders große Einheit von Daten sein kann. Für eine große Einheit von Daten kann z. B. kein Raum in der physikalischen Speicherstelle vorhanden sein, die durch Auflistung spezifiziert ist, welche mit Hilfe der inneren Ortsbestimmungstechnik zum Speichern der Daten durchgeführt wird, oder es kann auch bevorzugt sein, einen Speichervorgang irgendwo für einen Belastungsabgleich vorzunehmen. Zusätzlich kann bei einigen Anwendungsprogrammen der Bedarf bestehen, eine spezielle große Einheit von Daten in einem Speichersystem zu speichern bzw. in dieses zu schreiben, wobei die Schreiboperation begonnen wird, bevor eine Inhaltsadresse generiert wird, und zwar basierend auf der gesamten Einheit der Daten, derart, dass die Schreiboperation für eine Einheit von Daten beginnen kann, bevor die Inhaltsadresse bestimmt worden ist. Wenn somit die innere Ortsbestimmungstechnik angewendet wird, kann keine Inhaltsadresse vorliegen, um zu bestimmen, wo die Einheit der Daten gespeichert werden soll, wenn die Einheit der Daten zu dem Speichersystem übertragen wird. Gemäß einer Ausführungsform der vorliegenden Erfindung kann eine Gegenmaßnahme für die oben beschriebenen Situationen dadurch realisiert werden, indem die innere Ortsbestimmungstechnik und Zeiger verwendet werden. Wenn es beispielsweise gewünscht wird, eine Einheit von Daten (z. B. eine relativ große Einheit) an einer Stelle zu speichern, die verschieden ist von der durch die innere Ortsbestimmungs-Registrierungstechnik spezifizierte Stelle, die oben beschrieben wurde, kann ein Zeiger in der Speicherstelle gespeichert werden, der durch die Inhaltsadresse für die Einheit der Daten spezifiziert ist, wobei der Zeiger zu einer anderen physikalischen Speicherstelle zeigt, an der es wünschenswerter ist, die Einheit der Daten zu speichern. Wenn somit zukünftige Zugriffsanfragen für die Einheit der Daten empfangen werden, greift die innere Ortsbestimmungs-Registrierungstechnik auf den Zeiger für die Einheit der Daten zurück, der dann gelesen werden kann, um die Daten wieder aufzufinden.
  • Die Zeigertechnik kann auch angewendet werden, wenn eine Schreibanfrage für eine Einheit von Daten gehandhabt werden soll, für die keine Inhaltsadresse erzeugt worden ist. Wenn in dieser Hinsicht die Einheit der Daten empfangen wird, kann die Speicherstelle diese an irgendeiner geeigneten Speicherstelle platzieren und es kann dann, wenn die Inhaltsadresse für die Einheit der Daten bestimmt wird und/oder geliefert wird, ein Zeiger an der geeigneten Stelle platziert werden, der durch die innere Ortsregistrierungstechnik bestimmt wird, und zwar für die neu vorgesehene Inhaltsadresse, wobei der Zeiger auf die Speicherstelle zeigt, die für die Einheit der Daten gewählt worden ist. Es sei natürlich auch darauf hingewiesen, dass die Daten auch alternativ zu der Speicherstelle bewegt werden können, die mit Hilfe der inneren Ortsregistrierungstechnik spezifiziert wurde, nachdem die Inhaltsadresse einmal geliefert worden ist.
  • Ferner kann bei einer Ausführungsform, bei der die Zeigertechnik zum Speichern von Daten verwendet wird, das Speichersystem einen Hintergrundprozess ausführen, gemäß welchem periodisch das Speichersystem nach Zeigern abgesucht wird, die auf andere Speicherstellen zeigen, an denen Einheiten der Daten gespeichert sind. Wenn irgend solch ein Zeiger gefunden wird, kann der Prozess die Einheit der Daten von der Speicherstelle, auf die durch den Zeiger gezeigt wird, zu der Speicherstelle bewegen, die durch die innere Ortsbestimmungsregistrierung (das heißt den Ort des Zeigers) spezifiziert wurde, so dass dann der Zeiger mit den entsprechenden Einheiten der Daten ersetzt wird. Es kann somit die Effizienz des Speichersystems beim Zugreifen auf Einheiten von Daten (z. B. im Ansprechen auf eine Leseanfrage von einem Hostcomputer) erhöht werden, da das Speichersystem nicht mehr sowohl auf die Speicherstelle des Zeigers als auch die Speicherstelle der Einheit der Daten zugreifen muss.
  • Es sei darauf hingewiesen, dass der Hintergrundprozess zum Ersetzen der Zeiger mit deren entsprechenden Einheiten der Daten lediglich auf irgendeinem Speichersystem ausgeführt werden kann, und zwar auf irgendeine geeignete Weise. Beispielsweise kann der Prozess lediglich an den Speicherknotenpunkten ausgeführt werden, die leer laufen. Alternativ kann der Prozess an jedem Speicherknotenpunkt durchgeführt werden, nachdem eine vorbestimmte Zeitperiode verstrichen ist. Viele andere Alternativen sind verfügbar und die Erfindung ist in dieser Hinsicht nicht eingeschränkt.
  • Wenn gemäß einer Ausführungsform der vorliegenden Erfindung eine Einheit der Daten nicht gefunden werden kann, und zwar unter Verwendung der internen Ortsbestimmungstechnik, können alternative Nachschlagetechniken angewendet werden, wie beispielsweise kann die Multicast-Ortsabfrage durchgeführt werden.
  • Zeitweilige Referenzortsangabe
  • Wie oben dargelegt wurde, werden bei einer Ausführungsform Einheiten der Daten in Dateien in einem Dateisystem des entsprechenden Speicherknotenpunktes gespeichert. Solche Dateien können einen Dateinamen haben, der zumindest zum Teil der Inhaltsadresse der Einheit der Daten entspricht, die darin gespeichert sind, und das Dateisystem kann in Directorys und Sub-Directorys organisiert sein, wobei der Name des Sub-Directory, in welchem eine spezielle Einheit an Daten gespeichert ist, zumindest zum Teil wenigstens einem Abschnitt des Dateinamens der Einheit der Daten entspricht. Wie oben dargelegt wurde, kann das Dateisystem basierend auf den ersten Zeichen oder Buchstaben der Inhaltsadressen der Einheiten der Daten, die in dem Dateisystem gespeichert sind, organisiert sein. Es sei jedoch darauf hingewiesen, dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist, da das Dateisystem auch unter Verwendung irgendeines Abschnitts der Inhaltsadresse organisiert werden kann, inklusive, jedoch nicht beschränkt auf erste Zeichen oder Buchstaben oder Bits, dem mittleren Abschnitt oder dem Endabschnitt. Der Hashing-Algorithmus, der zum Generieren der Inhaltsadressen verwendet wird, kann auch Zufallswerte liefern (wie im Fall mit dem MDS-Hashing-Algorithmus). Als Ergebnis haben die Anmelder in Betracht gezogen, dass die Einheit der Daten, die zum im Wesentlichen gleichen Zeitpunkt geschrieben werden, an unterschiedlichen Stellen in der Dateisystemhierarchie gespeichert werden können. Das heißt, trotz der Tatsache, dass die Einheit der Daten in zeitmäßig enger Nachbarschaft geschrieben werden, können diese Einheiten der Daten über das Dateisystem zerstreut werden. Daher schließt die Zufälligkeit des Hashing-Algorithmus irgendeine Ortsangabe als Bezug in dem Dateisystem aus.
  • Betriebssysteme halten in typischer Weise einen Dateisystemplan, in welchem Dateisystemorte entsprechend physikalischen Plattenorten aufgelistet sind. Wenn das Dateisystem groß ist (das heißt eine große Hierarchie von Directorys und Sub-Directorys) und viele Dateien in dem Dateisystem gespeichert sind, kann der Dateisystemplan (map), der von dem Betriebssystem geführt wird, auch ziemlich groß werden. Als ein Ergebnis kann das Betriebssystem lediglich einen kleinen Abschnitt des Dateisystemplans in dem primären Speicher (z.B. RAM) des Speicherknotenpunktes zu einem Zeitpunkt halten. Der Rest des Dateisystemplans kann in dem sekundären Speicher (z. B. der Platte) verbleiben. Da vielfältige Abschnitte des Dateisystemplans benötigt werden (das heißt, wenn auf die Datei zugegriffen wird), können diese in den primären Speicher verbracht werden, wobei andere Abschnitte zurück zur Platte ausgelagert werden. Es sei darauf hingewiesen, dass die Zugriffs-Performance besser ist, wenn auf Abschnitte des Dateisystems in dem Speicher zugegriffen wird, anstatt auf die Platte.
  • Wenn zwei Einheiten an Daten in den Speicherknotenpunkt geschrieben werden, und zwar nahezu zur gleichen Zeit, jedoch an unterschiedlichen Abschnitten des Dateisystemplans, muss das Betriebssystem zuerst einen Ladevorgang von der Platte vornehmen, und zwar in Verbindung mit dem Abschnitt des Dateisystemplans, welcher die Dateisystemstelle der ersten Einheit der Daten aufweist (das heißt zum Bestimmen der physikalischen Plattenörtlichkeit von dieser Einheit der Daten) und muss dann zur Platte zurückkehren, um den Abschnitt des Dateisystemplans zu laden, welcher den Dateisystemort der zweiten Einheit der Daten enthält. Dieser wiederholte Plattenzugriff verlangsamt die Schreibansprechzeit des Speichersystems. Da zusätzlich Einheiten der Daten, die nahezu gleichzeitig geschrieben werden, häufig zeitgleich gelesen werden, kann sich eine ähnliche Zugriffsverzögerung einstellen, wenn die Dateneinheiten gelesen werden.
  • Die Anmelder haben erkannt, dass in einem Speichersystem, welches eine Dateisystemstruktur verwendet, es wünschenswert ist, Einheiten der Daten so zu speichern, welche angenähert zur gleichen Zeit gespeichert werden, da sie in angenähert der gleichen Dateisystemstelle auftreten, um die Wahrscheinlichkeit für das Betriebssystem zu minimieren, dass dieses auf die Platte zurückgreifen muss, um unterschiedliche Abschnitte des Dateisystems für einen sequenziellen Zugriff auf Dateneinheit zu laden. Wie oben erläutert ist, wird bei einer Ausführungsform der Erfindung die Dateisystemstelle einer Datei basierend auf dem Dateinamen der Datei bestimmt. Demzufolge werden gemäß einer Ausführungsform der Erfindung Informationen zu dem Dateinamen der Datei hinzu addiert, die ähnlich für Dateien sind, die angenähert zur gleichen Zeit geschrieben werden. Dies schafft eine zeitweilige Ortsbezugsangabe für Dateien, die nahezu zur gleichen Zeit geschrieben werden, und führt zu dem Ergebnis, dass solche Daten in benachbarten Dateisystemstellen gespeichert werden.
  • Es sei darauf hingewiesen, dass bei den Ausführungsformen der Erfindung, welche den inhaltsmäßig adressierbaren Speicher verwenden, die Informationen, die zu dem Dateinamen der Datei hinzu addiert werden, auch zu der Inhaltsadresse der Daten hinzu addiert werden können, die in der Datei gespeichert werden. Beispielsweise können Informationen zu dem Hash des Inhalts der Datei hinzu addiert werden, um eine Inhaltsadresse basierend auf dem Hash und basierend auf zusätzlichen Informationen zu erstellen. Die Informationen können an irgendeiner geeigneten Position in dem Hash hinzu addiert werden. Beispielsweise können die Informationen am Anfang hinzu addiert werden, am Ende oder auch an irgendeiner anderen Position in dem Hash. Der Hostcomputer kann die Inhaltsadresse dazu verwenden, um auf die Datei in der oben beschriebenen Weise zuzugreifen.
  • Bei einer Ausführungsform der Erfindung können Informationen, die zum Erstellen einer zeitweiligen Ortsbezugsgröße hinzu addiert werden, zu der Inhaltsadresse an dem Speichersystem hinzu addiert werden. Das heißt, wenn beispielsweise eine Einheit von Daten in dem Speichersystem gespeichert wird, kann das Speichersystem zeitweilige Ortsbezugsinformationen generieren, inklusive Informationen in dem Hash, und kann die resultierende Inhaltsadresse zu dem Hostcomputer zurückleiten, der die Speicheranfrage übermittelt hat.
  • Bei einer alternativen Ausführungsform erzeugt der Hostcomputer die zeitweiligen Ortsbezugsinformationen und addiert die Informationen zu dem Hash, um die Inhaltsadresse zu generieren. Der Hostcomputer kann die Inhaltsadresse zu dem Speichersystem senden oder kann die zeitweiligen Ortsbezugsinformationen unmittelbar zu dem Speichersystem übertragen und kann es dem Speichersystem erlauben, die Informationen zu dem Hash hinzu zu addieren, um die Inhaltsadresse zu bestimmen. Durch Berechnen der zeitweiligen Ortsbestimmungsinformationen an dem Hostcomputer bleibt dann, wenn der Hostcomputer die Einheit der Daten in vielen Speichersystemen zur gleichen Zeit speichert (oder nahezu zur gleichen Zeit), z.B. für ein Backup oder für Duplizierungszwecke, die Inhaltsadresse für die Einheit der Daten die gleiche, und zwar in jedem der Speichersysteme.
  • Bei einer anderen Ausführungsform können die zeitweiligen Ortsbezugsinformationen in dem Speichersystem und dem Hostcomputer generiert werden und beide Sätze an Informationen können zu dem Hash addiert werden, und zwar an irgendeiner geeigneten Position in dem Hash, um die Inhaltsadresse der Einheit der Daten zu generieren.
  • Das oben dargelegte Beispiel wurde so beschrieben, dass es eine zeitweilige Ortsbezugsangabe in Bezug auf Dateien liefert, die in einem Dateisystem gespeichert sind. Es sei jedoch darauf hingewiesen, dass solch eine Technik auch bei anderen logischen Datenspeicherkonstruktionen anwendbar ist. Beispielsweise kann das Hinzufügen von zeitweiligen Ortsbezugsinformationen zu Inhaltsadressen (oder andere Informationen, die in einer Datenbank gespeichert sind) den Zugriffswirkungsgrad von Datenbanktabellen erhöhen, auf die unter Verwendung einer Inhaltsadresse (oder anderer Informationen) als ein Schlüssel zugegriffen wird, und kann auch mit anderen logischen Konstruktionen verwendet werden.
  • Die Informationen, die zu dem Dateinamen hinzu addiert werden, können aus irgendwelchen Informationen bestehen, die ähnlich für Dateieinheiten sind, die nahezu zur gleichen Zeit geschrieben werden. Beispielsweise kann ein Zeitstempel dem Dateinamen hinzu addiert werden und der Zeitstempel kann durch das Dateisystem geprüft werden, und zwar bei der Bestimmung, wo die Dateneinheiten zu speichern sind. Alternativ kann ein Zählerwert zu dem Dateinamen hinzu addiert werden, wobei der Zählerwert jedes Mal inkrementiert wird, wenn eine neue Dateneinheit in das Speichersystem geschrieben wird. Um nochmals zu wiederholen, können irgendwelche geeigneten Informationen verwendet werden, so dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • Es sei darauf hingewiesen, dass der Aspekt der vorliegenden Erfindung, der sich auf das Hinzufügen von Informationen zu einer Inhaltsadresse bezieht, die angeben, welche Einheiten an Daten in das Speichersystem nahezu zur gleichen Zeit eingeschrieben werden, nicht auf ein Speichersystem beschränkt ist, welches einen bestimmten Zugriffsknotenpunkt und eine bestimmte Speicherknotenpunktkonfiguration aufweist, wie dies beschrieben wurde, oder auf die Verwendung eines Dateisystems bei einem Speicherknotenpunkt, wie oben beschrieben wurde, da dieser Aspekt der Erfindung in Verbindung mit Speichersystemen verwendet werden kann, die zahlreiche unterschiedliche Konfigurationen aufweisen.
  • 7 veranschaulicht konzeptmäßig den zeitweiligen Ortsbezugsaspekt der vorliegenden Erfindung und veranschaulicht Ortsinformationen 703, die zu einer Inhaltsadresse 701 hinzu addiert werden. Es sei darauf hingewiesen, dass dieser Aspekt der vorliegenden Erfindung nicht auf das Vorsehen von Ortsinformation beschränkt ist, und zwar am Beginn der Inhaltsadresse, wie in 7 gezeigt ist, da die Ortsinformationen auch zu der Inhaltsadresse auf irgendeine andere geeignete Weise hinzu addiert werden können, inklusive Vorsehen derselben am Ende der Inhaltsadresse oder innerhalb des Bereiches der Inhaltsadresse, und wobei Ortsinformationen als durchgehender Block vorgesehen werden können, wie in 7 gezeigt ist, oder auch zerstreut über die Inhaltsadresseninformation 701 hinweg.
  • Die oben beschriebenen Ausführungsformen der vorliegenden Erfindung können auf vielfältige Weise implementiert werden. Beispielsweise können die Ausführungsformen unter Verwendung einer Hardware, Software oder einer Kombination aus diesen implementiert werden. Wenn sie als Software implementiert werden, kann der Softwarekode auf irgendeinem geeigneten Prozessor oder Ansammlung von Prozessoren ausgeführt werden, ob es sich nun dabei um einen einzelnen Computer oder um verteilte vielfache Computer handelt. Es sei darauf hingewiesen, dass irgendeine Komponente oder Ansammlung von Komponenten, welche die oben beschriebenen Funktionen ausführen, gattungsmäßig als ein oder mehrere Controller betrachtet werden können, welcher bzw. welche die oben erläuterten Funktionen steuert bzw. steuern. Der eine oder die mehreren Controller können auf vielfältige Weise implementiert werden, wie beispielsweise mit Hilfe einer speziell ausgelegten Hardware oder für eine Hardware für allgemeine Zwecke (z.B. einem oder mehreren Prozessoren), die unter Verwendung eines Mikrokodes oder einer Software programmiert ist, um die oben angegebenen Funktionen auszuführen.
  • Es sei darauf hingewiesen, dass in dieser Hinsicht eine Implementierung der Ausführungsformen der vorliegenden Erfindung wenigstens ein computerlesbares Medium umfasst (z.B. einen Computerspeicher, eine Diskette, eine Kompaktplatte, ein Band usw.), welches mit einem Computerprogramm kodiert ist (z.B. einer Vielzahl von Instruktionen), die dann, wenn sie auf einem Prozessor ausgeführt werden, die oben erläuterten Funktionen der Ausführungsformen der vorliegenden Erfindung durchführen. Das computerlesbare Medium kann transportabel sein, so dass das darauf gespeicherte Programm in irgendein Computersystem bzw. Computersystemressource geladen werden kann, um die Aspekte der vorliegenden Erfindung, wie sie hier erläutert wurden, zu implementieren. Es sei darüber hinaus darauf hingewiesen, dass der Hinweis auf ein Computerprogramm, welches dann, wenn es ausgeführt wird, die oben erläuterten Funktionen durchführt, nicht auf ein Anwendungsprogramm beschränkt ist, welches auf einem Hostcomputer läuft. Vielmehr wird der Ausdruck Computerprogramm hier in einem gattungsmäßigen Sinn verwendet, um jeglichen Typ eines Computerkodes mit einzuschließen (z.B. Software oder Mikrokode), der dazu verwendet werden kann, um einen Prozessor so zu programmieren, dass er die oben beschriebenen Aspekte der vorliegenden Erfindung implementiert.
  • Es sei auch darauf hingewiesen, dass gemäß den mehreren Ausführungsformen der vorliegenden Erfindung, bei denen Prozesse in einem computerlesbaren Medium implementiert sind, die computer-implementierten Prozesse im Laufe von deren Ausführung auch Handeingaben empfangen können (z.B. von einem Anwender).
  • Bei den oben beschriebenen vielfältigen Beispielen wurden Inhaltsadressen so beschrieben, dass sie alphabetische Zeichen 'A' – 'Z' enthalten. Es sei darauf hingewiesen, dass diese Inhaltsadressen lediglich als Beispiel dienen sollen und dass Inhaltsadressen auch alphanumerische Zeichen, Serien von Bits oder andere geeignete Zeichen enthalten können, so dass die Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • Die hier verwendeten Phrasen und Terminologie dient dem Zwecke der Beschreibung und soll nicht als einschränkend interpretiert werden. Die Verwendung der Bezeichnung "enthaltend", "umfassend" oder "aufweisend", "beinhaltend", "involvierend" und Variationen derselben sollen alle im Folgenden aufgelisteten Punkte und zusätzliche Punkte oder Posten mit bedeuten.
  • Obwohl verschiedene Ausführungsformen der vorliegenden Erfindung in Einzelheiten beschrieben wurden, sind vielfältige Abwandlungen und Verbesserungen für Fachleute unmittelbar realisierbar. Solche Abwandlungen und Verbesserungen fallen jedoch in den Rahmen der vorliegenden Erfindung. Daher dient die vorangegangene Beschreibung lediglich als Beispiel und ist nicht in einem einschränkenden Sinn zu interpretieren. Die Erfindung wird lediglich durch die nachfolgenden Ansprüche und Äquivalente derselben eingeschränkt.

Claims (10)

  1. Wenigstens ein computerlesbares Medium, welches mit Anweisungen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, ein Verfahren zum Verarbeiten von Daten ausführen, wobei das Computersystem wenigstens einen Host und wenigstens ein inhaltsbezogen adressierbares Speichersystem umfasst, welches Einheiten von Daten für den wenigstens einen Host speichert, und wobei der wenigstens eine Host auf eine Einheit von Daten unter Verwendung einer Inhaltsadresse zugreift, basierend zumindest zum Teil auf dem Inhalt der Einheit der Daten, welches Verfahren die folgenden Aktionen umfasst: (a) Erzeugen von Inhaltsadressen für die Einheiten der Daten, um erste Informationen zu bilden, die eine Anzeige darüber liefern, welche der Einheiten der Daten in das Speichersystem angenähert zeitgleich eingeschrieben wurden.
  2. Wenigstens ein computerlesbares Medium nach Anspruch 1, bei dem das Verfahren die folgenden weiteren Aktionen umfasst: (b) Zugreifen auf eine der Einheiten der Daten durch Vorsehen der Inhaltsadresse für die eine der Einheiten der Daten zu dem Speichersystem; (c) Berücksichtigen der ersten Informationen der Inhaltsadresse für die eine der Einheiten der Daten bei der Bestimmung, wo innerhalb des Speichersystems die eine der Einheiten der Daten gespeichert ist.
  3. Wenigstens ein computerlesbares Medium nach Anspruch 1, bei dem die Aktion (a) für eine der Einheiten der Daten die folgenden Aktionen umfasst: Erzeugen eines Hash von wenigstens einem Abschnitt der Einheit der Daten; und Einfügen der ersten Informationen in den Hash, um die Inhaltsadresse für eine der Einheiten der Daten zu erzeugen.
  4. Wenigstens ein computerlesbares Medium nach Anspruch 3, bei dem die ersten Informationen wenigstens einen Abschnitt eines Zeitstempels enthalten, der sich darauf bezieht, wann die eine der Einheiten der Daten in das wenigstens eine Speichersystem eingeschrieben wurde.
  5. Wenigstens ein computerlesbares Medium nach Anspruch 2, bei dem die Aktion (b) eine Aktion gemäß einer Verwendung von wenigstens einem Abschnitt der ersten Informationen umfasst, um eine Speicherstelle innerhalb des wenigstens einen Speichersystems für die Speicherung der einen der Einheiten der Daten auszuwählen, und bei dem das Verfahren ferner eine Aktion gemäß Speichern der einen der Einheiten der Daten in der ausgewählten Speicherstelle umfasst.
  6. Wenigstens ein computerlesbares Medium, welches mit Anweisungen kodiert ist, die dann, wenn sie auf einem Computersystem ausgeführt werden, ein Verfahren zum Verarbeiten von Daten ausführen, wobei das Computersystem wenigstens einen Host und wenigstens ein inhaltsmäßig adressierbares Speichersystem umfasst, welches Einheiten von Daten für den wenigstens einen Host speichert, wobei der wenigstens eine Host auf eine Einheit von Daten unter Verwendung einer Inhaltsadresse zugreift, basierend auf wenigstens einem Teil des Inhaltes der Einheit der Daten, und bei dem das wenigstens eine Speichersystem einen Index um fasst, der die Inhaltsadressen für die Einheiten der Daten in Verbindung mit Speicherstellen innerhalb des wenigstens einen Speichersystems auflistet, wo die Einheiten der Daten gespeichert sind, wobei das Verfahren die folgenden Aktionen umfasst: (a) Empfangen einer Anfrage von dem wenigstens einen Host, um eine der Einheiten der Daten zu speichern, wobei die Anfrage die eine der Einheiten der Daten identifiziert, welche der Inhaltsadresse zugeordnet ist; und (b) Speichern der einen der Einheiten der Daten an einer Speicherstelle, die derart ausgewählt wird, dass ein Eintrag in dem Index für die Speicherstelle an Einträge in dem Index für andere Einheiten der Daten angenähert oder ähnlich ausgeführt ist, welche in das wenigstens eine Speichersystem nahezu zeitgleich mit der einen der Einheiten der Daten eingeschrieben wurden.
  7. Wenigstens ein computerlesbares Medium nach Anspruch 6, bei dem die Inhaltsadresse für die eine der Einheiten der Daten zumindest zum Teil durch eine Hash-Operation an wenigstens einem Abschnitt der Einheit der Daten erzeugt wird.
  8. Wenigstens ein computerlesbares Medium nach Anspruch 7, bei dem die Inhaltsadresse erste Informationen enthält, die dafür verwendet werden können, um zu bestimmen, welche Einheiten der Daten in das Speichersystem angenähert zeitgleich eingeschrieben wurden, und wobei das Verfahren ferner das Empfangen der ersten Informationen von dem wenigstens einen Host umfasst.
  9. Wenigstens ein computerlesbares Medium nach Anspruch 7, bei dem die Inhaltsadresse erste Informationen enthält, die dazu verwendet werden können, um zu bestimmen, welche Einheiten der Daten in das Speichersystem angenähert gleich eingeschrieben wurden, und wobei das Verfahren ferner die folgenden Aktionen umfasst: Erzeugen eines ersten Abschnitts der ersten Informationen an wenigstens einem Speichersystem; Empfangen eines zweiten Abschnitts der ersten Informationen von dem wenigstens einen Host; und Hinzuaddieren des ersten Abschnitts und des zweiten Abschnitts zu der Inhaltsadresse.
  10. Inhaltsmäßig adressierbares Speichersystem für die Verwendung in einem Computersystem, welches ein inhaltsmäßig adressierbares Speichersystem und wenigstens einen Host umfasst, wobei der wenigstens eine Host auf Dateneinheiten zugreift, die in dem inhaltsmäßig adressierbaren Speichersystem gespeichert sind, und zwar unter Verwendung von Inhaltsadressen, die basierend auf dem Inhalt der Dateneinheiten generiert werden, wobei das inhaltsmäßig adressierbare Speichersystem Folgendes aufweist: wenigstens eine Speichervorrichtung zum Speichern von Daten, die von dem wenigstens einen Host empfangen werden; und wenigstens einem Controller, der einen Index hält, welcher die Inhaltsadressen für die Einheiten der Daten in Verbindung mit Speicherstellen innerhalb des wenigstens einen Speichersystems auflistet, wo die Einheiten der Daten gespeichert sind, so dass die Einheiten der Daten, die in das wenigstens eine Speichersystem nahezu zeitgleich eingeschrieben wurden, angenäherte oder ähnliche Einträge in dem Index aufweisen.
DE102004056701A 2003-12-09 2004-11-24 Verfahren und Einrichtung zur Erzeugung einer inhaltsbezogenen Adresse zum zeitnahen Hinweis auf in ein Speichersystem eingeschriebene Dateneinheiten Ceased DE102004056701A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/731,845 US7444389B2 (en) 2003-12-09 2003-12-09 Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time
US10/731,845 2003-12-09

Publications (1)

Publication Number Publication Date
DE102004056701A1 true DE102004056701A1 (de) 2005-07-28

Family

ID=34063596

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004056701A Ceased DE102004056701A1 (de) 2003-12-09 2004-11-24 Verfahren und Einrichtung zur Erzeugung einer inhaltsbezogenen Adresse zum zeitnahen Hinweis auf in ein Speichersystem eingeschriebene Dateneinheiten

Country Status (5)

Country Link
US (1) US7444389B2 (de)
JP (2) JP4372671B2 (de)
CN (1) CN1311363C (de)
DE (1) DE102004056701A1 (de)
GB (1) GB2409071A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158808B2 (en) 2010-08-19 2015-10-13 Nec Corporation Object arrangement apparatus for determining object destination, object arranging method, and computer program thereof

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046061A1 (en) 2000-02-11 2002-04-18 Wright Kenneth L. Personal information system
US7904488B2 (en) * 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
JP2006195702A (ja) * 2005-01-13 2006-07-27 Hitachi Ltd データ処理システム及び方法
US8392400B1 (en) * 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
DE102006017076B4 (de) * 2006-04-10 2020-04-23 Lufthansa Systems Gmbh & Co. Kg Automatische Optimierung der Anfragebearbeitung in Datenbanksystemen
US20080040539A1 (en) * 2006-08-09 2008-02-14 International Business Machines Corporation Method and system for writing and reading application data
JP5020673B2 (ja) * 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US8612643B2 (en) 2007-06-30 2013-12-17 Microsoft Corporation Interfaces for digital media processing
US7921268B2 (en) * 2007-07-12 2011-04-05 Jakob Holger Method and system for function-specific time-configurable replication of data
US20090063587A1 (en) * 2007-07-12 2009-03-05 Jakob Holger Method and system for function-specific time-configurable replication of data manipulating functions
JP2009129164A (ja) * 2007-11-22 2009-06-11 Nec Corp 分散ストレージでのファイル配置およびアクセス方法、その装置及びそのプログラム
US7921179B1 (en) * 2008-01-15 2011-04-05 Net App, Inc. Reducing latency of access requests in distributed storage systems having a shared data set
EP2329424B1 (de) * 2008-08-22 2016-12-07 Datcard Systems, Inc. System und verfahren zur verschlüsselung für dicom-volumen
WO2010048531A1 (en) * 2008-10-24 2010-04-29 Datcard Systems, Inc. System and methods for metadata management in content addressable storage
JP5391705B2 (ja) 2009-01-27 2014-01-15 日本電気株式会社 ストレージシステム
JP5413948B2 (ja) 2009-01-27 2014-02-12 日本電気株式会社 ストレージシステム
JP5365236B2 (ja) 2009-02-16 2013-12-11 日本電気株式会社 ストレージシステム
JP5637552B2 (ja) 2009-02-17 2014-12-10 日本電気株式会社 ストレージシステム
JP5339432B2 (ja) 2009-02-25 2013-11-13 日本電気株式会社 ストレージシステム
JP5556025B2 (ja) 2009-02-27 2014-07-23 日本電気株式会社 ストレージシステム
JP5407430B2 (ja) 2009-03-04 2014-02-05 日本電気株式会社 ストレージシステム
JP5298982B2 (ja) * 2009-03-17 2013-09-25 日本電気株式会社 ストレージシステム
JP5369807B2 (ja) * 2009-03-24 2013-12-18 日本電気株式会社 ストレージ装置
US8713068B2 (en) * 2009-06-11 2014-04-29 Yahoo! Inc. Media identification system with fingerprint database balanced according to search loads
US8438342B1 (en) 2009-12-09 2013-05-07 Emc Corporation Automated application-based storage provisioning
CN102104526A (zh) * 2009-12-16 2011-06-22 华为技术有限公司 一种内容发布与获取的方法、装置和系统
JP5556192B2 (ja) 2010-01-26 2014-07-23 日本電気株式会社 ストレージシステム
WO2011099099A1 (ja) 2010-02-10 2011-08-18 日本電気株式会社 ストレージ装置
WO2011099098A1 (ja) * 2010-02-10 2011-08-18 日本電気株式会社 ストレージ装置
US9832104B2 (en) * 2010-02-11 2017-11-28 Microsoft Technology Licensing, Llc Reliable broadcast in a federation of nodes
JP5459388B2 (ja) * 2010-03-04 2014-04-02 日本電気株式会社 ストレージ装置
WO2011108048A1 (ja) 2010-03-04 2011-09-09 日本電気株式会社 ストレージ装置
US8930470B2 (en) 2010-04-23 2015-01-06 Datcard Systems, Inc. Event notification in interconnected content-addressable storage systems
WO2012078898A2 (en) 2010-12-10 2012-06-14 Datcard Systems, Inc. Secure portable medical information access systems and methods related thereto
JP5534043B2 (ja) * 2011-01-28 2014-06-25 日本電気株式会社 ストレージシステム
JP5673232B2 (ja) * 2011-03-09 2015-02-18 日本電気株式会社 ストレージシステム
JP5943430B2 (ja) * 2011-03-16 2016-07-05 日本電気株式会社 分散記憶システムおよび分散記憶方法
JP5725546B2 (ja) * 2011-03-23 2015-05-27 日本電気株式会社 ストレージシステム
CN102254013A (zh) * 2011-07-21 2011-11-23 深圳市华力特电气股份有限公司 一种数据处理方法及数据处理装置
US9665304B2 (en) 2011-09-07 2017-05-30 Nec Corporation Storage system with fast snapshot tree search
EP2756403B1 (de) 2011-09-16 2018-08-01 Nec Corporation Speichersystem
US9390055B2 (en) 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
KR102003739B1 (ko) * 2012-11-08 2019-07-25 삼성전자주식회사 액세스 노드에 의한 애플리케이션 호스팅 방법 및 장치
JP6094267B2 (ja) 2013-03-01 2017-03-15 日本電気株式会社 ストレージシステム
JP6171413B2 (ja) 2013-03-06 2017-08-02 日本電気株式会社 ストレージシステム
US9405643B2 (en) 2013-11-26 2016-08-02 Dropbox, Inc. Multi-level lookup architecture to facilitate failure recovery
US9547706B2 (en) * 2014-03-10 2017-01-17 Dropbox, Inc. Using colocation hints to facilitate accessing a distributed data storage system
WO2015178944A1 (en) * 2014-05-23 2015-11-26 Hewlett-Packard Development Company, L.P. Using location addressed storage as content addressed storage
JP6341307B1 (ja) 2017-03-03 2018-06-13 日本電気株式会社 情報処理装置
US10534708B1 (en) 2018-06-25 2020-01-14 Microsoft Technology Licensing, Llc Shallow cache for content replication

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US554875A (en) * 1896-02-18 hinman
US5347579A (en) * 1989-07-05 1994-09-13 Blandford Robert R Personal computer diary
US5202982A (en) * 1990-03-27 1993-04-13 Sun Microsystems, Inc. Method and apparatus for the naming of database component files to avoid duplication of files
JP3278721B2 (ja) 1990-08-02 2002-04-30 テルコーディア テクノロジーズ、インコーポレーテッド 数値文書にタイムスタンプを確実に押す方法
JPH04340156A (ja) * 1991-03-08 1992-11-26 Fuji Xerox Co Ltd 連想記憶方式
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
JPH0830497A (ja) 1994-07-15 1996-02-02 Matsushita Electric Ind Co Ltd デジタルデータ記録再生装置
JPH0887432A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 情報記録再生装置のデータ配置方法
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
JP3044005B2 (ja) 1997-05-29 2000-05-22 公一 柴山 データ格納制御方式
US6557102B1 (en) 1997-09-05 2003-04-29 Koninklijke Philips Electronics N.V. Digital trust center for medical image authentication
JPH11143605A (ja) 1997-11-05 1999-05-28 Hitachi Ltd 携帯端末
US6807632B1 (en) * 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
EP0940945A3 (de) 1998-03-06 2002-04-17 AT&T Corp. Verfahren und Vorrichtung zur Zertifizierung und sicheren Ablage elektronischer Dokumente
JPH11341442A (ja) * 1998-05-29 1999-12-10 Nikon Corp 動画像再生装置
US6601090B1 (en) * 1999-06-25 2003-07-29 Nortel Networks Limited System and method for servicing internet object accessess from a coupled intranet
JP2001067881A (ja) * 1999-08-30 2001-03-16 Toshiba Corp 連想記憶装置及び記憶媒体
US6976165B1 (en) * 1999-09-07 2005-12-13 Emc Corporation System and method for secure storage, transfer and retrieval of content addressable information
JP4146720B2 (ja) * 2000-08-04 2008-09-10 アバイア テクノロジー コーポレーション コネクションオリエンテッドトランザクションにおけるurlオブジェクトのインテリジェントな需要に基づく認識
GB2376323B (en) * 2001-06-09 2006-03-15 Hewlett Packard Co Trusted and verifiable data storage system
US6807611B2 (en) * 2002-04-05 2004-10-19 International Business Machine Corporation High speed selective mirroring of cached data
AU2003251492A1 (en) * 2002-06-11 2003-12-22 Ashish A. Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
US7096342B2 (en) * 2003-10-28 2006-08-22 International Business Machines Corporation Flexible LUN/LBA interface for content addressable reference storage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158808B2 (en) 2010-08-19 2015-10-13 Nec Corporation Object arrangement apparatus for determining object destination, object arranging method, and computer program thereof

Also Published As

Publication number Publication date
JP4372671B2 (ja) 2009-11-25
CN1311363C (zh) 2007-04-18
JP2009134733A (ja) 2009-06-18
GB0426365D0 (en) 2005-01-05
CN1629823A (zh) 2005-06-22
US20050144172A1 (en) 2005-06-30
US7444389B2 (en) 2008-10-28
JP5198294B2 (ja) 2013-05-15
JP2005235171A (ja) 2005-09-02
GB2409071A (en) 2005-06-15

Similar Documents

Publication Publication Date Title
DE102004056701A1 (de) Verfahren und Einrichtung zur Erzeugung einer inhaltsbezogenen Adresse zum zeitnahen Hinweis auf in ein Speichersystem eingeschriebene Dateneinheiten
DE69907631T2 (de) Netzzugang zu inhaltsadressierbaren daten
DE102008015662B4 (de) Beseitigung von Daten
DE10055603B4 (de) Verfahren zum Zugriff auf eine Datei in einer Vielzahl von Datenspeicherbibliotheken und Datenspeicherbibliothek-System
DE60204729T2 (de) Objektenlöschen von einem Vorrichtungspeicher
DE60113586T2 (de) Übertragen von miteinander verbundenen Datenobjekten in einer verteilten Datenspeicherumgebung
DE69728176T2 (de) Verfahren und gerät das verteilte steuerung von gemeinsamen betriebsmitteln erlaubt
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE69938077T2 (de) Verfahren, Vorrichtung und Programmspeichereinrichtung für einen Klienten und ein adaptiver Synchronisierungs- und Transformierungsserver
DE3743890C2 (de)
DE69719564T2 (de) Dynamischer dateiverzeichnisdienst
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE60019839T2 (de) Verfahren zum Austauch von Daten zwischen einer Javasystemdatenbank und einem LDAP Verzeichnis
DE19747583B4 (de) Kommunikationssystem und Verfahren
DE69913984T2 (de) Verteiltes transaktionales verarbeitungssystem und verfahren
DE60038364T2 (de) Computersystem und Speicherauszugsdatenverwaltungsverfahren
DE69910219T2 (de) Transformation der perspektive auf tabellen von relationalen datenbanken
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE602005002024T2 (de) Fernkopiersystem und Fernkopierverfahren
DE112018004178T5 (de) Mehrstufige speicherung in einem verteilten dateisystem
DE202019005483U1 (de) Datenreplikation und Datenausfallsicherung in Datenbanksystemen
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE112013001284T5 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R003 Refusal decision now final
R011 All appeals rejected, refused or otherwise settled
R130 Divisional application to

Ref document number: 102004064269

Country of ref document: DE

Effective date: 20131125

R003 Refusal decision now final

Effective date: 20131126