-
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.