-
Die
vorliegende Anmeldung nimmt Bezug auf die und beansprucht die Priorität aus der
vorläufige(n)
US-Patentanmeldung mit der laufenden Eingangsnummer 60/648634 (Anwaltsregisternummer 15675US02),
mit dem Titel "METHOD
AND SYSTEM OF DATA STORAGE CAPACITY ALLOCATION AND MANAGEMENT USING
ONE OR MORE DATA STORAGE DRIVES",
eingereicht am 31. Januar 2005, Veröffentlichungsnummer 2005 0235
337, veröffentlicht
am 20. Oktober 2005.
-
BUNDESSTAATLICH GEFÖRDERTE FORSCHUNG
ODER ENTWICKLUNG
-
[Nicht zutreffend]
-
[MIKROFICHE-/URHEBERRECHTSHINWEIS]
-
[Nicht zutreffend]
-
HINTERGRUND DER ERFINDUNG
-
Da
die Datenspeicherungsanforderungen einer Datenverarbeitungs- oder
Datencomputervorrichtung immer weiter steigen, kann es sein, dass
ein Benutzer ein oder mehrere zusätzliche Datenspeicherlaufwerke
hinzufügen
möchte.
Unglücklicherweise
kann das Hinzufügen
solcher Datenspeicherlaufwerke eine schwierige Aufgabe sein. Es
kann sein, dass der Benutzer ein oder mehrere Datenspeicherlaufwerke
disassemblieren, konfigurieren und neu verbinden muss, um das bzw.
die zusätzliche(n)
Datenspeicherlaufwerk(e) unterbringen zu können. Ferner kann es sein,
dass die hinzugefügten
Datenspeicherlaufwerke mittels einer Anzahl von langwierigen Schritten
manuell konfiguriert werden müssen.
In einigen Fällen
müssen
eine oder mehrere Software-Anwendungen
ausgeführt
werden, um das bzw. die hinzugefügte(n)
Datenspeicherlaufwerk(e) adäquat
zu partitionieren. Darüber
hinaus kann es in vielen Fällen
sein, dass sich der Benutzer die zusätzliche Redundanz und den zusätzlichen
Durchsatz wünscht,
die durch eine Spiegelung (Mirroring) und Aufteilung (Striping)
der Datenspeicherlaufwerke bereitgestellt werden. Oftmals kann diese
Aufgabe aber eine Anzahl von komplexen Schritten einschließen und
kann schwierig in der Implementierung sein. Folglich wird es, da
die Datenspeicherungsanforderungen eines Benutzers immer weiter
ansteigen, immer wichtiger werden, in der Lage zu sein, eine Datenspeicherkapazität, die den
Bedürfnissen
des Benutzers entspricht, schnell und effizient hinzufügen zu können.
-
Die
Beschränkungen
und Nachteile herkömmlicher
und traditioneller Lösungswege
werden einem Fachmann auf dem Gebiet durch den Vergleich solcher
Systeme mit einigen Ausführungsformen
der vorliegenden Erfindung, wie sie in dem Rest der vorliegenden
Anmeldung unter Bezugnahme auf die Zeichnungen dargelegt sind, offensichtlich
werden.
-
Die
US 2003/0023811 betrifft
ein Verfahren zur Implementierung eines Datenpools in Übereinstimmung
mit der Präambel
des Patentanspruchs 1.
-
Die
US 2002/059539 betrifft
die Datenrekonstruktion für
ein Datenspeicherungsmedium, die möglicherweise eine Vielzahl
von Partitionen von Speicherraum in dem Speicherungsmedium einschließt.
-
Die
US 6 615 365 B beschreibt
allgemein ein Datensicherungs- und -wiederherstellungsverfahren von
partitionierten Plattendaten, das möglicherweise die Speicherung
von Sicherungskopien von partitionierten Tabelleninformationen in
einem Sicherungsmedium umfasst.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, die Fehlertoleranz
bei der Verwaltung einer Speicherung von partitionierten Daten zu
steigern, die über
ein oder mehrere Speichermedien verteilt sind.
-
Dieses
Problem wird von dem Verfahren von Anspruch 1 gelöst. Bevorzugte
Ausführungsbeispiele der
vorliegenden Erfindung sind in den Unteransprüchen festgelegt.
-
Ausführungsformen
der Erfindung umfassen wenigstens ein Verfahren und ein System für die Zuordnung
und das Management einer Festplattenlaufwerkskapazität. Verschiedene
Ausführungsformen der
vorliegenden Erfindung erlauben die Bildung eines oder mehrerer
Datenpools unter Verwendung von Abschnitten oder Sektoren eines
Festplattenlaufwerks oder mehrerer Festplattenlaufwerke. Die oben genannten
Ausführungsformen,
die in den Ansprüchen
noch vollständiger
dargelegt sind, werden im Wesentlichen in Verbindung mit wenigstens
einer der nachfolgenden Figuren gezeigt und beschrieben.
-
Gemäß einer
Ausführungsform
der Erfindung ist ein Verfahren zur Implementierung eines Datenpools
unter Verwendung eines oder mehrerer Datenspeicherlaufwerke bereitgestellt,
wobei das Verfahren Folgendes umfasst:
zuerst das Erzeugen
einer ersten Partitionstabelle und einer zweiten Partitionstabelle,
wobei die erste Partitionstabelle ein Spiegelbild der zweiten Partitionstabelle
ist, wobei die ersten und/oder die zweiten Partitionstabellen die
Position und die Größe einer oder
mehrerer Partitionen in einem Datenspeicherlaufwerk der einen oder
mehreren Datenspeicherlaufwerke einer Datenspeicherungsvorrichtung
bereitstellen; und
als nächstes
das Erzeugen eines ersten Poolinformationsblocks und eines zweiten
Poolinformationsblocks, wobei der erste Poolinformationsblock ein Spiegelbild
des zweiten Poolinformationsblocks ist, wobei die ersten oder die
zweiten Poolinformationsblöcke
zur Identifizierung und Verkettung von einer oder mehreren Partitionen
verwendet werden, wobei die ersten und/oder zweiten Poolinformationsblöcke innerhalb
jeder der einen oder mehreren Partitionen in dem einen oder den
mehreren Datenspeicherlaufwerken gespeichert werden.
-
Vorteilhafterweise
umfasst das Verfahren des Weiteren das Identifizieren wenigstens
eines oder mehrerer Chunks und Panes der einen oder mehreren Partitionen;
und
das Verketten der einen oder mehreren Chunks und Panes
zur Bildung des Datenpools.
-
Vorteilhafterweise
umfasst das Datenspeicherlaufwerk ein Festplattenlaufwerk.
-
Als
ein Beispiel ist ein Verfahren zur Änderung der Größe einer
Partition eines Datenpools unter Verwendung eines oder mehrerer
Datenspeicherlaufwerke bereitgestellt, wobei das Verfahren erstens das
Erzeugen eines ersten Poolinformationsblocks und eines zweiten Poolinformationsblocks
umfasst, wobei sich die ersten und die zweiten Poolinformationsblöcke an dem
Anfang jeder Partition befinden, wobei die ersten und zweiten Poolinformationsblöcke zur
Identifizierung der Partition verwendet werden.
-
Vorteilhafterweise
umfasst das Verfahren des Weiteren zweitens das Erzeugen eines ersten Feldes,
das einen ersten Wert speichert, in jedem der ersten und zweiten
Poolinformationsblöcke;
und
das Messen des Fortschritts der Änderung der Größe in einer
Rückwärtsrichtung
unter Verwendung des ersten Wertes, der sich in den ersten und den
zweiten Poolinformationsblöcken
befindet.
-
Vorteilhafterweise
umfasst das Verfahren ferner Folgendes:
drittens das Erzeugen
eines zweiten Feldes, das einen zweiten Wert enthält, in jedem
der ersten und der zweiten Poolinformationsblöcke;
das Messen des Fortschritts
der Änderung
der Größe in einer
Vorwärtsrichtung
unter Verwendung des zweiten Wertes, der sich in den ersten und
den zweiten Poolinformationsblöcken
befindet.
-
Vorteilhafterweise
umfasst das Verfahren ferner Folgendes:
viertens das Erzeugen
eines dritten Feldes, das in der Lage ist, einen dritten Wert zu
speichern, wobei der dritte Indikator die Größe der Partition vor der Änderung
der Größe anzeigt;
und
fünftens
das Erzeugen eines vierten Feldes, das in der Lage ist, einen vierten
Wert zu speichern, wobei der vierte Wert die Größe der Partition nach der Durchführung der Änderung
der Größe anzeigt.
-
Vorteilhafterweise
umfasst das Verfahren des Weiteren zweitens das Erzeugen eines ersten Feldes,
das einen ersten Indikator speichert, in jedem der ersten und der
zweiten Poolinformationsblöcke; und
das
Messen des Fortschritts der Änderung
der Größe in einer
Vorwärtsrichtung
unter Verwendung des ersten Indikators, der sich in den ersten und
den zweiten Poolinformationsblöcken
befindet.
-
Vorteilhafterweise
umfasst das Verfahren ferner Folgendes:
drittens das Erzeugen
eines zweiten Feldes, das in der Lage ist, einen zweiten Indikator
zu speichern, wobei der zweite Indikator die Größe der Partition vor der Änderung
der Größe anzeigt;
und
viertens das Erzeugen eines dritten Feldes, das in der
Lage ist, einen dritten Indikator zu speichern, wobei der dritte
Indikator die Größe der Partition
nach der Durchführung
der Änderung
der Größe anzeigt.
-
Als
ein weiteres Beispiel ist ein Verfahren zur Implementierung eines
Datenpools unter Verwendung eines Datenspeicherungssystems bereitgestellt,
wobei das Datenspeicherungssystem ein oder mehrere Datenspeicherlaufwerke
umfasst, wobei das Verfahren das Erzeugen einer ersten Partitionstabelle
und einer zweiten Partitionstabelle für jedes der einen oder mehreren
Datenspeicherlaufwerke umfasst, wobei die erste Partitionstabelle
und die zweite Partitionstabelle Spiegelbilder voneinander sind.
-
Vorteilhafterweise
stellt wenigstes eine der ersten oder der zweiten Partitionstabellen
die Position der nächsten
Partition des Datenpools in den einen oder mehreren Datenspeicherlaufwerken
bereit.
-
Vorteilhafterweise
werden Aktualisierungen dieser Partitionstabellen bei der inaktiven
Partitionstabelle entweder der ersten oder der zweiten Partitionstabellen
durchgeführt,
wenn eine der ersten oder der zweiten Partitionstabellen aktiv ist.
-
Als
ein Beispiel ist ein Verfahren zur Implementierung eines Datenpools
in einer Datenspeicherungsvorrichtung, die ein oder mehrere Datenspeicherlaufwerke
umfasst, bereitgestellt, wobei das Verfahren Folgendes umfasst:
Zuordnen
einer Kapazität
unter Verwendung der einen oder mehreren Datenspeicherlaufwerke;
Datenverteilung
(Data Striping) des Datenpools unter Verwendung der einen oder mehreren
Datenspeicherlaufwerke; und
Datenspiegelung (Data Mirroring)
des Datenpools unter Verwendung der einen oder mehreren Datenspeicherlaufwerke.
-
Vorteilhafterweise
umfassen die Datenspeicherlaufwerke Festplattenlaufwerke.
-
Als
ein weiteres Beispiel ist ein Verfahren zum Hinzufügen einer
Partition zu einem Datenpool unter Verwendung eines oder mehrerer
Datenspeicherlaufwerke bereitgestellt, das Folgendes umfasst:
erstens
das Erzeugen eines ersten Poolinformationsblocks und eines zweiten
Poolinformationsblocks, wobei sich die ersten und zweiten Poolinformationsblöcke an dem
Anfang jeder Partition befinden, wobei die ersten und die zweiten
Poolinformationsblöcke dazu
verwendet werden, diese Partition zu identifizieren;
zweites
das Erzeugen eines ersten Feldes, das einen ersten Wert speichert,
in jedem der ersten und der zweiten Poolinformationsblöcke;
drittens
das Erzeugen eines zweiten Feldes, das in der Lage ist, einen zweiten
Wert zu speichern, wobei der zweite Wert die Größe der Partition vor der Hinzufügung anzeigt;
und
viertens das Erzeugen eines dritten Feldes, das in der
Lage ist, einen dritten Wert zu speichern, wobei der dritte Wert
die Größe der Partition
anzeigt, nachdem das Hinzufügen
durchgeführt
worden ist.
-
Als
noch ein weiteres Beispiel ist ein System zur Implementierung eines
Datenpools unter Verwendung eines oder mehrerer Datenspeicherlaufwerke
bereitgestellt, wobei das System Folgendes umfasst:
einen Speicher;
eine
Software, die in dem Speicher resident ist; und
einen Prozessor,
der in der Lage ist, die Software auszuführen, wobei das Ausführen in
der Lage ist, eine erste Partitionstabelle und eine zweite Partitionstabelle
zu erzeugen, wobei die erste Partitionstabelle ein Spiegelbild der
zweiten Partitionstabelle ist, wobei die erste und/oder die zweite
Partitionstabelle die Position und die Größe einer oder mehrerer Partitionen
in den einen oder mehreren Datenspeicherlaufwerken bereitstellt/bereitstellen.
-
Vorteilhafterweise
ist das Ausführen
in der Lage, einen ersten Poolinformationsblock und einen zweiten
Poolinformationsblock zu erzeugen, wobei sich die ersten und zweiten
Poolinformationsblöcke an
dem Anfang jeder Partition der einen oder mehreren Partitionen befinden,
wobei die ersten und die zweiten Poolinformationsblöcke dazu
verwendet werden, die eine oder mehreren Partitionen der einen oder
mehreren Datenspeicherungsvorrichtungen zu identifizieren.
-
Vorteilhafterweise
umfassen die einen oder mehreren Datenspeicherlaufwerke Festplattenlaufwerke.
-
Diese
und weitere Vorteile, Ausführungsformen
und neuartigen Merkmale der vorliegenden Erfindung sowie auch Einzelheiten
von veranschaulichten Ausführungsbeispielen
davon werden aus der nachfolgenden Beschreibung und den nachfolgenden
Zeichnungen besser verständlich.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht
ein Blockdiagramm eines typischen Systems, das die Verwendung einer an
das Netzwerk angeschlossenen Speichervorrich tung (NAS; network attached
storage device) in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung umfasst.
-
2 ist
ein Blockdiagramm einer an einem Netzwerk angeschlossenen Speichervorrichtung (NAS)
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
3 ist
ein Blockdiagramm eines NAS-Chips (NASoC) in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung.
-
4 ist
ein Operationsablaufdiagramm, das die Zuordnung von Pools und das
Management eines oder mehrerer Festplattenlaufwerke innerhalb einer
NAS in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung veranschaulicht.
-
5 zeigt
zwei Plattenlaufwerke namens Surya und Manasi, die jeweils zur Verfügung stehende
Kapazitäten
von 13,5 GBytes aufweisen, in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
6 stellt
eine Bildschirmkopie (Screenshot) eines Browser wie zum Beispiel
Netscape bereit, der die Erstellung von Shares ermöglicht,
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
7 stellt
eine Bildschirmkopie eines Browser bereit, der einen oder mehrere
Shares anzeigt, die mit einem oder mehreren Datenpools assoziiert sind,
und die Erstellung oder Löschung
der einen oder mehreren Shares ermöglicht, die mit den einen oder
mehreren Pools assoziiert sind, in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung.
-
8 ist
ein relationales Blockdiagramm einer Struktur einer Platte oder
eines Datenspeicherlaufwerks, die bzw. das den Dateispeicherungsmechanismus
der vorliegenden Erfindung verwendet, in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung.
-
9 ist
ein relationales Blockdiagramm einer Partition einer Platte oder
eines Datenspeicherlaufwerks in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
10 ist
ein relationales Blockdiagramm, das die Struktur eines Plattenkopfes
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung veranschaulicht.
-
11 ist
ein relationales Blockdiagramm, das die Struktur eines Poolinformationsblocks
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung veranschaulicht.
-
12 ist
ein Operationsablaufdiagramm, das einen Startprozess veranschaulicht,
der es der NAS erlaubt, einen oder mehrere Datenpools unter Verwendung
eines oder mehrerer Datenspeicherlaufwerke in Übereinstimmung mit einem Ausführungsbeispiel
der vorliegenden Erfindung zu implementieren.
-
13 ist
ein Operationsablaufdiagramm, das eine Operation zur Änderung
der Größe einer Partition
in einem Datenspeicherlaufwerk eines oder mehrerer Datenspeicherlaufwerke
einer Datenspeicherungsvorrichtung in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Ausführungsformen
der Erfindung umfassen wenigstens ein Verfahren und ein System für die Zuordnung
und das Management einer Datenspeicherlaufwerkskapazität. Die verschiedenen
Ausführungsformen
der vorliegenden Erfindung erlauben es, dass ein oder mehrere Datenspeicherlaufwerke
zu einem System hinzugefügt
werden können,
das ein oder mehrere existierende Datenspeicherlaufwerke umfasst.
Nachdem die einen oder mehreren Datenspeicherlaufwerke hinzugefügt worden
sind, wird das System so konfiguriert, dass es zu den Datenspeicherungsbedürfnissen
eines oder mehrerer Benutzer passt. Nach der Integration der Datenspeicherlaufwerke
können
alle Datenspeicherlaufwerke kollektiv analysiert und neu konfiguriert
werden, um den Anforderungen des Benutzers zu entsprechen. in einem repräsentativen
Ausführungsbeispiel
kann jeder ungenutzte oder nicht zugeordnete Speicherraum in allen
Datenspeicherlaufwerken in einen oder mehrere Datenpools partitioniert
werden, so dass jeder zur Verfügung
stehende Speicherraum in jedem Datenspeicherlaufwerk genutzt wird.
-
Die
Datenspeicherungsvorrichtung kann ein oder mehrere Datenspeicherlaufwerke
wie zum Beispiel Festplattenlaufwerke oder jede andere Art von Laufwerk
umfassen. Die Datenspeicherungsvorrichtung kann eine Kombination
aus unterschiedlichen Arten von Datenspeicherlaufwerken umfassen.
Ein Datenspeicherlaufwerk kann jeglichen Typ von Medium umfassen,
das in der Lage ist, Daten zu speichern. Im Folgenden kann sich
der Begriff "Festplattenlaufwerk" alternativ auf ein
Datenspeicherlaufwerk oder auf irgendein Laufwerk oder irgendeine
Komponente beziehen, das bzw. die ein Medium umfasst, das zur Speicherung
von Daten verwendet wird. In einem repräsentativen Ausführungsbeispiel
können ein
oder mehrere Datenspeicherlaufwerke oder Festplattenlaufwerke in
einer Datenspeicherungsvorrichtung integriert sein. Die Datenspeicherungsvorrichtung
umfasst das eine oder die mehreren Datenspeicherlaufwerke oder Festplattenlaufwerke.
In einem repräsentativen
Ausführungsbeispiel
ermöglicht
die Datenspeicherungsvorrichtung das Integrieren der einen oder
mehreren zusätzlichen
Datenspeicherlaufwerke oder Festplattenlaufwerke.
-
Weitere
Ausführungsformen
der Erfindung stellen ein System und ein Verfahren bereit, die die automatische
Verknüpfung
(Pooling), Spiegelung (Mirroring) und Verteilung (Striping) von
Datenspeicherkapazität,
die von den einen oder mehreren Festplattenlaufwerken bereitgestellt
wird, ermöglichen.
Außerdem
erlauben Ausführungsformen
der Erfindung die Verwendung von Laufwerken unterschiedlicher Größen und
Geschwindigkeiten, wenn sie RAID-Funktionen
durchführen.
-
Verschiedene
Ausführungsformen
der vorliegenden Erfindung erlauben die Bildung einer oder mehrerer
Datenpools unter Verwendung von Abschnitten oder Sektoren eines
oder mehrerer Festplattenlaufwerke. Die Pools können als logische Laufwerke
betrachtet werden. Der nicht zugeordnete Speicherraum überall in
den einen oder mehreren Festplattenlaufwerken kann neu partitioniert
werden, und eine oder mehrere Partitionen können nachfolgend verkettet
werden, um einen Datenpool zu erzeugen. Die eine oder mehreren Partitionen
können unter
Verwendung der einen oder mehreren Festplattenlaufwerke gespiegelt
(mirrored) oder verteilt (striped) werden. Abschnitte von mehreren
Festplattenlaufwerken können
dazu verwendet werden, den Datenpool zu erstellen. Zum Beispiel
können
ein Abschnitt eines ersten Festplattenlaufwerks und ein Abschnitt
eines zweiten Festplattenlaufwerks dazu verwendet werden, einen
Datenpool zu bilden. In einem repräsentativen Ausführungsbeispiel
sind die Festplattenlaufwerke miteinander gruppiert, um eine gesteigerte
Datenspeicherkapazität
bereitzustellen und/oder um eine Datenspiegelung oder eine Datenverteilung
bereitzustellen. In einem repräsentativen Ausführungsbeispiel
sind die gruppierten oder verbundenen Festplattenlaufwerke physisch
in einer einzigen Datenspeicherungsvorrichtung enthalten. Die Datenspeicherungsvorrichtung
kann zum Beispiel in einem Lokalbereichsnetz vernetzt sein, um eine
Speicherungseinrichtung für
jegliche Anzahl von Datenverarbeitungs- oder Datencomputervorrichtungen
bereitzustellen. Die Datenverarbeitungs- oder Datencomputervorrichtungen
können
einen oder mehrere Computer umfassen. Weitere Ausführungsformen
der Erfindung stellen einen gemeinschaftlichen Zugriff (Shared Access)
auf die einen oder mehreren Datenpools, die in der Speicherungsvorrichtung
erzeugt worden sind, durch einen oder mehrere Benutzer bereit. Nachstehend
kann die Datenspeicherungsvorrichtung als eine an einem Netzwerk
angeschlossene Speichervorrichtung (NAS) bezeichnet werden. Auf
einen Datenpool kann von einem oder mehreren Benutzern mittels der
Erstellung eines oder mehrerer Shares zugriffen werden. In einem
repräsentativen
Ausführungsbeispiel
kann ein Datenpool eine oder mehrere Shares umfassen. Jede Share
der einen oder mehreren Shares kann einen Abschnitt eines Datenpools
zuordnen.
-
1 veranschaulicht
ein Blockdiagramm eines typischen Systems, das die Verwendung einer NAS 100 in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung umfasst. Die NAS 100 stellt eine Datenspeicherung
für eine
oder mehrere Datenverarbeitungsvorrichtungen bereit. Wie veranschaulicht
ist, stellt eine beispielhafte Vermittlungsvorrichtung eine Konnektivität der NAS 100 mit
der einen oder den mehreren Datenverarbeitungsvorrichtung(en) bereit.
Die Vermittlungsvorrichtung ist in der Lage, eine Konnektivität unter
Verwendung von drahtlosen sowie auch drahtgebundenen Kommunikationen
bereitzustellen. Zum Beispiel kann ein Drahtlos-Router jedes der
nachfolgenden Protokolle für
drahtlose oder drahtgebundene Datenkommunikationen benutzen: 10/100
Ethernet, Gigabit Ethernet, 802.11x, Bluetooth, und so weiter. Die
einen oder mehreren Datenverarbeitungsvorrichtungen umfassen Vorrichtungen
wie etwa eine digitale Cyber-Kamera, eine digitale Kamera, einen
MP3 Player, einen PDA und einen oder mehrere persönliche Videorekorder
(PVRs). Wie veranschaulicht ist, kann der PVR mit einem Festplattenlaufwerk
ausgerüstet
sein oder auch nicht. In einem repräsentativen Ausführungsbeispiel
kann der PVR als eine Set Top Box (STB) bezeichnet werden, die persönliche Videorekorder-Fähigkeiten
integriert. Als eine Folge davon kann der PVR als ein PVR-STB bezeichnet
werden. Wie gezeigt ist, sind die PVRs mit einem Fernseher oder
einem Monitor verbunden, der in der Lage ist, Multimedia-Inhalte
für einen
Benutzer anzuzeigen. Die Verwendung der NAS 100 stellt
eine zentralisierte Speichervorrichtung für Multimedia-Inhalte bereit, die
von dem einen oder den mehreren PVRs empfangen werden. Als eine
Konsequenz der Speicherung von Inhalten in einer NAS 100 können PVRs,
die keine Speicherungseinrichtung wie z. B. ein Festplattenlaufwerk
aufweisen, jegliche Daten, die sie empfangen, in der NAS 100 speichern.
Außerdem
kann auf alle Daten, die von anderen Datenverarbeitungsvorrichtungen
einschließlich
den PVRs gespeichert werden, von der einen oder den mehreren Datenverarbeitungsvorrichtung(en)
leichter zugegriffen werden und diese Daten können von diesen leichter betrachtet
werden. Zum Beispiel kann ein PVR ohne Festplattenlaufwerk auf Multimedia-Inhalte
zugreifen, die ursprünglich
in der NAS 100 von einem PVR mit Festplattenlaufwerk gespeichert
wurden, und umgekehrt. Als eine Folge davon ermöglicht die NAS 100 die
gemeinsame Nutzung von Daten quer durch die einen oder mehreren
Datenverarbeitungsvorrichtungen. Da sie einen Fernspeicherungsmechanismus bereitstellt,
kann die NAS 100 von den einen oder mehreren Datenverarbeitungsvorrichtungen
als eine "virtuelle
Speicherungsvorrichtung" betrachtet
werden. Die NAS 100 ist so konfiguriert, dass ihre Speicherkapazität auf einfache
Weise erweitert werden kann. Zum Beispiel kann die NAS 100 ein
oder mehrere zusätzliche
Festplattenlaufwerke annehmen. Eine NAS 100 kann so konfiguriert
sein, dass sie zusätzliche
Datenspeicherlaufwerke wie zum Beispiel Festplattenlaufwerke mühelos aufnehmen
kann. Ein zusätzliches
Festplattenlaufwerk kann mit der NAS 100 unter Verwendung
eines geeigneten Kabels und/oder eines geeigneten Konnektors verbunden werden.
Auf diese Weise stellt die NAS 100 einen leicht skalierbaren
und flexiblen Speichermechanismus bereit, der für ein zukünftiges Datenspeicherwachstum
angepasst werden kann. Außerdem
kann die NAS 100 Datenspiegelungs- und Datenverteilungsfähigkeiten
bereitstellen.
-
2 ist
ein Blockdiagramm einer am Netzwerk angeschlossenen Speichervorrichtung
(NAS) 200 in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung. Die NAS 200 umfasst eine gedruckte Leiterplatte
(NAS PCB) 202, die eine oder mehrere Komponenten enthält. Die
einen oder mehreren Komponenten sind mittels der gedruckten Leiterplatte
(PCB) 202 elektrisch angeschlossen. Die einen oder mehreren
Komponenten umfassen einen NAS-Chip
(NASoC) 204, einen Direktzugriffsspeicher 208,
einen Flash-Speicher 212, eine Wechselstrom-Schnittstelle 216,
eine Stromversorgung 220, einen Block von Schnittstellen 224,
ein Drahtlos-Transceiver-/Antennen-Modul 228, ein oder
mehrere Festplattenlaufwerke 232 und einen Controller 326.
Der Schnittstellenblock 224 kann eine oder mehrere der
folgenden Schnittstellen umfassen; IEEE 1394, USB, 10/100 Ethernet,
Gigabit Ethernet, PCI, SATA, ATA, IDE, SCSI, GPIO, usw.. Das Drahtlos-Transceiver-/Antennen-Modul 228 kann
ein anschließbares
Modul oder eine Mini-PCI-Karte umfassen, das bzw. die optional mit
der gedruckten Leiterplatte 202 der NAS verbunden werden
kann oder an diese angeschlossen werden kann. Die einen oder mehreren
Festplattenlaufwerke 232 können in Abhängigkeit von dem Design der
NAS 200 jegliche Anzahl von Festplatten umfassen. Die gedruckte
Leiterplatte 202 kann so konfiguriert sein, dass sie eine
geeignete Anzahl von Festplattenlaufwerken unterbringen kann. Die
Anzahl an verwendeten Festplattenlaufwerken kann von dem Typ der
Spiegelung oder der Datenverteilung (d. h., den RAID-Funktionen) abhängen, der
von der NAS 200 bereitgestellt wird. Ausführungsformen
der Erfindung stellen eine Einrichtung zum Zuordnen einer oder mehrerer
Abschnitte eines oder mehrerer Festplattenlaufwerke zu einem Datenpool
bereit. Zum Beispiel können
Abschnitte eines Laufwerks mit Abschnitten eines anderen Laufwerks
verkettet werden, um einen Datenpool zu erstellen. Weitere Ausführungsformen
der Erfindung stellen ein Verfahren zum Erweitern der Speicherkapazität durch
das Hinzufügen
zusätzlicher Festplattenlaufwerke
zu der NAS bereit. Zusätzliche Ausführungsformen
der vorliegenden Erfindung umfassen die Implementierung der Datenverteilung und/oder
der Datenspiegelung (d. h., die Implementierung verschiedener RAID-Level-Funktionalitäten) eines
oder mehrerer Datenpools unter Verwendung eines oder mehrerer Laufwerke
unterschiedlicher Größen und
Geschwindigkeiten. In einem Ausführungsbeispiel
stellt der Controller 236 eine Steuerung für jede von
mehreren Vorrichtungen (wie etwa Festplattenlaufwerken) bereit,
die mit dem NASoC 204 verbunden sind. Der Controller kann
zum Beispiel einen IDE- oder SATA-Controller umfassen. Der NASoC 204 kann
einen integrierten Schaltkreis-Chip umfassen, der einen Prozessor
oder eine Zentraleinheit (CPU) 240 enthält.
-
3 ist
ein Blockdiagramm eines NAS-Chips (NASoC) 300 in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung. Der NASoC 300 ist ein integrierter Schaltkreis,
der auf die vorher beschriebene NAS PCB aufgesetzt ist. Der NASoC 300 stellt
eine oder mehrere Funktionen bereit, die es der NAS erlauben, korrekt
zu arbeiten. Der NASoC 300 umfasst eine Zentraleinheit
(CPU) 304, einen chipinternen Direktzugriffsspeicher 308,
einen Ethernet-/MAC-Controller 312,
einen Verschlüsselungsbeschleuniger 316,
einen Si cherheits-/Authentifizierungs-, Schlüsselaustausch-DRM-(digital
rights management/Management digitaler Rechte)-Chip 320 und
eine Anzahl von Schnittstellen 324, 328, 332, 336, 340.
Die Schnittstellen 324, 328, 332, 336, 340 können zum
Beispiel die folgenden Arten von Schnittstellen umfassen: eine USB-Geräte-Schnittstelle 324,
eine PCI-Host-Schnittstelle 332, eine GPIO-/LCD-/Flash-Medien-Schnittstelle 328,
eine ATA-Schnittstelle 336 und eine USB-Host-Schnittstelle 340.
Der NAS-Chip 300 kann mit der einen oder den mehreren Komponente(n),
die unter Bezugnahme auf 2 beschrieben ist/sind, kommunizieren
und/oder mit diesen verbunden sein.
-
Unter
Bezugnahme auf 2 kann die NAS 200 variierende
Anzahlen von Festplattenlaufwerken enthalten, und zwar in Abhängigkeit
von ihren Speicherungs- und RAID-(Datenspiegelungs- und/oder Datenverteilungs-)-Anforderungen. Das NAS-200-Chassis
kann so konfiguriert sein, dass es in Abhängigkeit von der Verwendungsart
1, 2, 4 oder mehr Festplattenlaufwerke enthält. Zum Beispiel kann die NAS
4 Festplattenlaufwerke für
die Implementierung von RAID 0 + 1 (sowohl Datenspiegelung als auch
Datenverteilung) verwenden, was für die Verwendung in einer kleinen
Büroumgebung/in
einem kleinen Unternehmensumfeld geeignet ist. Ausführungsformen
der Erfindung stellen eine Verwendung von Festplattenlaufwerken
unterschiedlicher Kapazitäten,
Arten und/oder Geschwindigkeiten bereit, wenn RAID-Funktionen implementiert
werden. Die NAS 200 kann in einer häuslichen Umgebung (oder Privathaushaltsumgebung)
nur 1 oder 2 Festplattenlaufwerke verwenden, da die ausgenutzte Speicherkapazität typischerweise
geringer ist als diejenige, die in einer Büroumgebung oder in einem Unternehmensumfeld
genutzt wird. In ähnlicher
Weise können
die Speicherkomponenten, die in der NAS verwendet werden, in Abhängigkeit
von der Art der Verwendung variiert werden. Da die Datenspeicherungsanforderungen
ansteigen und da die Häufigkeit der
datenspeicherungsbezogenen Anfragen ansteigt, kann die Leistung
der NAS verbessert werden, um diese operativen Erfordernisse zu
erfüllen,
indem die Speichergröße der NAS
vergrößert wird.
Zum Beispiel können
die Flash- oder DRAM-Speicherkapazitäten vergrößert werden, um die Verarbeitungsleistung
der NAS zu verbessern. In ähnlicher
Weise können
die Chassis-Größe, die
Stromschaltungen und andere Komponenten so eingestellt werden, dass
sie die Verarbeitungsanforderungen ihrer Betriebsumgebung erfüllen.
-
In
einem Ausführungsbeispiel
führt der
Prozessor 240 in dem NASoC (204 bzw. 300)
eine Software oder Firmware aus, die in dem RAM 208 oder dem
Flash-Speicher 212 residiert, wenn die NAS gestartet oder
eingeschaltet wird. In einem Ausführungsbeispiel erzeugt die
Ausführung
der Software oder der Firmware eine oder mehrere Benutzerschnittstellen
(Mensch-Maschine-Schnittstellen),
die es einem Benutzer erlauben, einen oder mehrere Datenpools unter
Verwendung von Abschnitten eines oder mehrerer Festplattenlaufwerke
zu konfigurieren. Die Benutzerschnittstelle ermöglicht auch das Konfigurieren
eines oder mehrerer RAID-Levels, die mit den einen oder mehreren
Datenpools assoziiert sind.
-
In
einem Ausführungsbeispiel
bewirkt die Ausführung
der Software, dass der http-Server Seiten an einer Arbeitsstation
eines Benutzers (z. B. Client Workstation) bereitstellt, die die
Anzeige einer gewünschten
Benutzerschnittstelle ermöglicht.
In einem Ausführungsbeispiel
umfasst die Software, die von dem Prozessor 240 ausgeführt wird,
eine Konfigurationsdatei, auf die von einem Betriebssystem wie zum
Beispiel einem Microsoft Windows Betriebssystem zugegriffen wird
und die von diesem erkannt wird, so dass diese von der beispielhaften
Windows Explorer Anwendung betrachtet werden kann und von dieser
ausgeführt
werden kann. In einem Ausführungsbeispiel
kann auf die Konfigurationsdatei zugegriffen werden, bevor ein Benutzer
eine Initialisierungsprozedur in der NAS vollendet. Der Initialisierungsprozess
kann das Erstellen eines oder mehrerer Authentifizierungspasswörter umfassen,
die zukünftig
für den
Zugriff auf den Konfigurationsprozess verwendet werden. Das Microsoft
Windows Betriebssystem kann Windows XP, 2000, ME, 98, Pocket PC oder
dergleichen umfassen. Wenn die Konfigurationsdatei ausgeführt wird,
indem auf ihren Dateinamen, wie er von der Windows Explorer Anwendung angezeigt
wird, geklickt wird, wird einer Datenverarbeitungsvorrichtung eines
Benutzers eine Benutzerschnittstelle angezeigt. Danach kann ein
Benutzer eine oder mehrere Eingaben bereitstellen, um die NAS zu
initialisieren oder zu konfigurieren. Die Eingaben können Folgendes
umfassen: einen Namen für
die NAS, einen Administrations-Benutzernamen, ein Administrations-Passwort,
einen oder mehrere alternative Sicherheitsaktuatoren, die Zeit,
die Zeitzone, Netzwerkzeit-Server-Internet-Protokoll-Adressen, Laufwerk-Pool-Namen,
RAID-Indikatoren, Laufwerkpool-Share-Namen und Share-Zugriffs-Passwörter. Die
Laufwerk-Pool-Namen, die RAID-Indikatoren, die Laufwerkpool-Share- Namen und die Share-Access-Passwörter sind
beispielhafte Parameter, die bei dem Plattenlaufwerk-Management
der Festplattenlaufwerke in der NAS verwendet werden. In einem Ausführungsbeispiel
werden die vorher erwähnten
Plattenlaufwerk-Management-Parameter in dem Flash-Speicher der NAS
gespeichert, wie dies vorher unter Bezugnahme auf 2 erwähnt worden ist.
Der Flash-Speicher kann einen nichtflüchtigen Direktzugriffsspeicher
(NVRAM; non-volatile random access memory) umfassen.
-
4 ist
ein Operationsablaufdiagramm, das die Zuordnung von Pools und das
Management eines oder mehrerer Festplattenlaufwerke in einer NAS
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung veranschaulicht. Beim Schritt 404 greift
ein Benutzer auf die passende Platten-Management-Benutzerschnittstelle zu.
In einem Ausführungsbeispiel
wird die Platten-Management-Benutzerschnittstelle erzeugt, nachdem
ein Benutzer ein autorisiertes Passwort in die Benutzerschnittstelle eingibt.
In einem repräsentativen
Ausführungsbeispiel
wird eine Konfigurationsdatei ausgeführt, um eine oder mehrere Benutzerschnittstellen
zu erzeugen, von denen eine die Platten-Management-Benutzerschnittstelle umfasst. 5 veranschaulicht
eine Bildschirmkopie eines Browser, wie z. B. Windows Explorer oder
Netscape, der eine beispielhafte Platten-Management-Schnittstelle
bereitstellt, die es einem Benutzer erlaubt, einen oder mehrere
neue Plattenpoolparameter einzugeben. Beim Schritt 408 bestimmt
der Benutzer die Anzahl und den Typ von Pools, die erstellt werden
sollen. Nun wird nochmals Bezug auf 5 genommen.
Der Benutzer kann einen neuen Poolnamen eingeben und kann den bereitgestellten
einen oder mehreren Plattenlaufwerken einen Plattenlaufwerkspeicherplatz
zuweisen. 5 zeigt zwei Plattenlaufwerke
namens Surya und Manasi, die jeweils zur Verfügung stehende Kapazitäten von
13,5 GBytes aufweisen, in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung. Die beispielhafte Benutzerschnittstelle stellt Felder
bereit, in denen ein Benutzer die Zuteilungsgröße in jedem der beiden Plattenlaufwerke
einstellen kann. Die Benutzerschnittstelle erlaubt es einem Benutzer
auch, zu bestimmen, ob eine Spiegelung oder eine Verteilung des
Pools stattfinden soll. Beim Schritt 412 kann der Benutzer
die Zuordnungen der einen oder mehreren Laufwerke bestimmen, die
zu der Bildung eines Datenpools beitragen. Beim Schritt 416 kann
der Benutzer das RAID-Level für
den erstellten Datenpool anzeigen. In einem repräsentativen Ausführungsbeispiel
können
die folgenden RAID-Levels unter Verwen dung der Benutzerschnittstelle
angezeigt werden: RAID0, RAID1 und RAID0+1. Beim Schritt 420 können eine
oder mehrere Shares für
die einen oder mehreren Pools, die vorher erzeugt worden waren, erstellt
werden. 6 stellt eine Bildschirmkopie
eines Browser wie etwa des Netscape Navigator bereit, der die Erstellung
von Shares oder Share-Verzeichnissen ermöglicht, die für die gemeinsame
Nutzung von Daten verwendet werden, die in einem Datenpool gespeichert
sind, in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung. Ein Pool umfasst einen Plattenspeicherplatz, der
mit einer oder mehreren Shares assoziiert ist. In einem repräsentativen Ausführungsbeispiel
kann eine Share ein Unterverzeichnis umfassen, das eine oder mehrere
Datendateien enthalten kann. Eine Share erlaubt es einem oder mehreren
Benutzern, auf den Speicherraum in einem Datenpool zuzugreifen.
In einem repräsentativen
Ausführungsbeispiel
können
einem Benutzer "Share-Access"-Rechte verliehen
werden, wenn ein Administrator dem Benutzer ein Passwort bereitstellt. Der
Administrator kann ein Passwort einer Share konfigurieren, indem
er die graphische Benutzerschnittstelle verwendet, die in 6 gezeigt
ist. Wenn es mehr als eine Share für einen Pool gibt, wird der
Plattenspeicherplatz, der von jeder Share eingenommen wird, kumulativ
gegenüber
dem gesamten Platz angelegt, der von dem Pool bereitgestellt wird. In
einem repräsentativen
Ausführungsbeispiel
kann eine Share oder ihr Shared-Verzeichnis einen Abschnitt eines
Datenpools belegen. Eine oder mehrere Shares können zum Beispiel sich nicht überlappende Abschnitte
eines Datenpools besetzen. 7 stellt eine
Bildschirmkopie eines Browser bereit, der eine oder mehrere Shares
anzeigt, die mit einem oder mehreren Datenpools assoziiert sind,
und die Erstellung oder die Löschung
der einen oder mehreren Shares ermöglicht, die mit den einen oder
mehreren Pools assoziiert sind, und zwar in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung. Die einen oder mehreren Benutzerschnittstellen, die
vorher beschrieben worden sind, sind beispielhaft, und es wird in
Betracht gezogen, dass verschiedene anderen Ausführungsbeispiele von Benutzerschnittstellen in Übereinstimmung
mit der vorliegenden Erfindung angepasst werden können.
-
Verschiedene
Ausführungsformen
der Erfindung stellen einen Mechanismus zum Speichern eines Dateisystems
quer durch Teile eines oder mehrerer Datenspeicherlaufwerke bereit.
Dieser Mechanismus umfasst die Merkmale der dynamischen Änderung
der Größe und des
Layouts des Dateisystems quer durch die einen oder mehreren Datenspeicherlaufwerke
und des robusten Wiederherstellens nach Verlusten oder temporärer Nichtverfügbarkeit
eines oder mehrerer Datenspeicherlaufwerke während zum Beispiel einer Stromunterbrechung,
wenn Änderungen
bei einem Datenpool durchgeführt
werden. Die Änderungen
können
Modifikationen bezüglich der
Größe und des
Layouts des Dateisystems quer durch die einen oder mehreren Datenspeicherlaufwerke
umfassen.
-
Die
externe Schnittstelle zu dem Mechanismus kann eine einigermaßen herkömmliche
Dateisystem-Schnittstelle mit spezialisierten Steuerfunktionen für die Handhabung
von Änderungen
bezüglich der
Größe und des
Layouts des Dateisystems quer durch die Platten umfassen. Die Dateisystem-Schnittstelle
kann den Standard-Dateisystem-Schnittstellen sehr ähnlich sein,
die von verschiedenen Betriebssystemen verwendet werden. Diese umfassen
Linux-, Unix- und
Windows-Dateisysteme. In einem repräsentativen Ausführungsbeispiel
gibt es einen Baum von Verzeichnissen, die Dateien enthalten. Ferner
enthält
das Dateisystem Metadaten für
jede Datei oder für
jedes Verzeichnis. Die Metadaten umfassen den Namen der Datei oder
des Verzeichnisses, die letzte Zugriffszeit, den Besitzer, Lese-
und Schreiberlaubnisse. Die Dateisystem-Schnittstelle erlaubt das Erstellen,
das Löschen, das
Lesen und das Schreiben von Dateien in ein oder mehrere Verzeichnisse.
Ferner erlaubt das Dateisystem das Lesen und Modifizieren der Dateien
und der Metadaten. Der Dateispeicherungsmechanismus wird in zwei
Hauptteilen implementiert, die als ein Low-Level-Datenteil und ein
Dateisystem-Datenteil bezeichnet werden. Die beiden Datenteile kommunizieren
durch eine einfache Schnittstelle, die dem Dateisystem-Datenteil
einen Zugriff auf das bereitstellt, was diesem als ein flaches Array
von Datenbytes erscheint. Dieses flache Array wird ein Mid-Level-Daten-Array genannt.
In einem repräsentativen Ausführungsbeispiel
umfasst der Dateisystemteil ein herkömmliches Dateisystem. Jede
Anzahl von Standard-Dateisystemen wie etwa Reiser FS, JFS, ext3fs oder
NTFS kann für
den Dateisystem-Datenteil verwendet werden. Implementierungen dieser
Dateisysteme, die geschaffen wurden, um unter einer einfachen Platten-
oder Plattenpartitionsvorrichtung zu laufen, können unverändert oder beinahe unverändert mit
dem Mid-Level-Daten-Array verwendet werden.
-
Ein
integraler Teil des Dateispeicherungsmechanismus umfasst den Low-Level-Datenteil.
Der Low-Level-Datenteil kann Zugriff auf eine oder mehrere primäre Platten
haben, auf denen die Daten gespeichert werden sollen. Jede primäre Platte
kann ein Datenspeicherlaufwerk umfassen und muss vollständig für die Verwendung
durch den Low-Level-Datenteil des Dateispeicherungsmechanismus dediziert sein.
In einem repräsentativen
Ausführungsbeispiel soll
nur der Low-Level-Datenteil des Dateispeicherungsmechanismus in
jegliche der einen oder mehreren primären Platten lesen oder schreiben.
Jede der einen oder mehreren primären Platten oder jedes der primären einen
oder mehreren Datenspeicherlaufwerke kann dazu verwendet werden,
eine Speicherung für
einen oder mehrere Datenpools bereitzustellen. Als eine Folge davon
braucht keine einzelne Platte von nur einem einzigen Pool verwendet
werden. Zum Beispiel können
mehrere Pools die Platte gemeinsam nutzen, und zwar über den
Low-Level-Datenteil des Dateispeicherungsmechanismus.
-
Der
Low-Level-Datenteil ist durch zwei Hauptzustandstypen charakterisiert.
Der erste Zustand umfasst einen vorübergehenden Zustand, der in
einem Medium residieren kann, das einen flüchtigen Speicher wie zum Beispiel
DRAM einschließt. Aber
es kann sein, dass der vorübergehende
Zustand in den primären
Platten oder Datenspeicherlaufwerken nicht präsent ist. In einem repräsentativen
Ausführungsbeispiel
können
einer oder mehrere persistente Datenzustände in den einen oder mehreren
primären
Platten vorhanden sein. Vorübergehende
Datenzustände
werden zerstört,
wenn eine Datenverarbeitungsoder Datencomputervorrichtung, die den
Plattenpoolmechanismus betreibt, neu gestartet wird. Dies kann als
Folge eines schweren Fehlers passieren. Dies kann zum Beispiel stattfinden, wenn
die Datenverarbeitungs- oder Datencomputervorrichtung abgeschaltet
wird oder ihre Stromzufuhr unterbrochen wird. Die persistenten Daten
eines persistenten Datenzustands, der von dem Low-Level-Teil verwendet
wird, kann noch weiter in zwei Kategorien aufgeteilt werden: Chunks
von Rohdaten und Metadaten. Die Metadaten spezifizieren, wie die Rohdaten
miteinander verkettet werden, um das Mid-Level-Daten-Array zu bilden.
Jeder Chunk von Rohdaten sollte exakt mit einem benachbarten Abschnitt
des Mid-Level-Daten-Array zusammenpassen. In einem repräsentativen
Ausführungsbeispiel kann
ein Chunk von Rohdaten einen undefinierten Wert aufweisen, weil
er als ein "Stand-By"-Chunk verwendet
werden kann, der dazu verwendet werden kann, einen gespiegelten
Datenpool zu bilden. Die Metadaten beschreiben, wie all die Rohdaten-Chunks,
die über
irgendeine Anzahl von primären
Platten verstreut sind, in das Mid-Level-Daten-Array gemappt werden.
In einem repräsentativen
Ausführungsbeispiel
können
diese Metadaten Spiegelungs- und Verteilungsinformationen enthalten.
-
Es
ist zumindest bezüglich
einiger der Metadaten wünschenswert,
dass sie zur Verfügung
stehen, selbst wenn eine oder mehrere der Platten nicht zur Verfügung stehen.
Wenn ein Datenpool so eingerichtet wird, dass die Spiegelung verwenden
wird, wird er für
gewöhnlich
so eingerichtet, dass dann, wenn eine Platte nicht zur Verfügung steht,
wenigstens immer noch eine Kopie jedes Stücks des Mid-Level-Daten-Array
vorhanden ist, das die restliche Platte bzw. die restlichen Platten
verwendet. Zum Beispiel ist der Low-Level-Teil dann, wenn die Spiegelung
und eine oder mehrere Platten fehlen, so ausgelegt, dass er die
Verfügbarkeit
des gesamten Mid-Level-Daten-Array ermöglicht. In einem repräsentativen
Ausführungsbeispiel
ist der Low-Level-Teil so ausgelegt, dass er genügend Diagnosedaten bereitstellt,
um eine vernünftige
Fehlernachricht auszugeben, die dem Benutzer mitteilt, welche Platte
in dem Fall nicht vorhanden ist, wenn das Fehlen von Platten bedeutet,
dass nicht die gesamten Mid-Level-Daten-Array-Daten zur Verfügung stehen
werden.
-
Die
Metadaten sind quer durch die gleichen Platten wie die Chunks von
Rohdaten für
die Platte verteilt. Die Einzelheiten, wie diese Metadaten verteilt
sind, sind wichtig für
die Bereitstellung der Informationen, wenn eine oder mehrere Platten
nicht vorhanden sind, und um das System robust im Angesicht einer
Stromunterbrechung zu machen, die mitten in einer Operation auftritt.
Zum Beispiel kann die Operation die Größe und/oder das Layout der
Rohdaten in den Platten ändern,
oder andere Änderungen
bei den Metadaten durchführen,
wie zum Beispiel das Modifizieren des Namens eines Pools.
-
Verschiedene
Ausführungsformen
der vorliegenden Erfindung verwenden das Positionieren der Metadaten
im Hinblick auf die einen oder mehreren Datenspeicherlaufwerke des
Dateispeicherungsmechanismus. Wenn die Metadaten zum Beispiel einfach
in jede Platte oder in jedes Datenspeicherlaufwerk kopiert würden, dann
würde das
Auftreten des Fehlens einer Platte kein Problem darstellen; aber eine
Stromunterbrechung würde
ein Problem verursachen, wenn eine der Platten aktualisiert worden
ist, aber eine oder mehrere andere Platten nicht aktualisiert worden
sind. Wenn sich die Metadaten alle auf einer Platte oder einem Datenspeicherlaufwerk
befinden würden,
dann wäre
ein Stromunterbrechungsproblem einfacher; aber der Dateispeicherungsmechanismus
würde nicht
arbeiten, wenn diese eine Platte, die die Metadaten enthält, fehlen
würde.
-
8 ist
ein relationales Blockdiagramm einer Struktur einer Platte oder
eines Datenspeicherlaufwerks, die den Dateispeicherungsmechanismus der
vorliegenden Erfindung verwendet, in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung. Der Anfang der Platte findet mit einem Block mit
einer festen Größe statt,
der ein Plattenkopf 804 genannt wird. Eine zusätzliche
Speicherkapazität
in der Form einer oder mehrerer Partitionen ist als Blöcke 808, 812, 816, 820, 824 in 8 repräsentiert. Die
n-te Partition 824 ist als die letzte Partition 824 veranschaulicht.
Wie in 8 veranschaulicht ist, ist ein Block 804 fester
Größe an dem
Start jeder Platte oder jedes Datenspeicherlaufwerks für einige
der Metadaten reserviert. Dieser Block 804 fester Größe wird
der Plattenkopf 804 genannt. Der Rest der Platte ist in
benachbarte, sich nicht überlappende
Bereiche unterteilt, die Partitionen 808, 812, 816, 820 genannt werden,
wobei der Plattenkopf 804 unter anderem den Anfang und
die Größe jeder
Partition spezifiziert. Es mag auch einen gewissen Speicherraum
auf jeder gegebenen Platte geben, der nicht dem Plattenkopf 804 oder
irgendeiner der Partitionen 808, 812, 816, 820, 824 zugeordnet
ist; dieser Speicherraum kann für
das Erstellen neuer Partitionen (d. h., wenn neue Datenpools erstellt
werden oder existierende Datenpools erweitert werden) oder für das Erweitern
existierender Partitionen (d. h., wenn existierende Datenpools erweitert
werden) zur Verfügung
stehen. Im Allgemeinen wird das Layout von Partitionen von einer oder
mehreren Partitionstabellen bestimmt, und es gibt eine Anzahl von
Partitionstabellenformaten, die in verschiedenen Systemen, wie zum
Beispiel Linux, Windows und DOS Systemen, verwendet werden. Verschiedene
Ausführungsformen
der vorliegenden Erfindung erlauben es, dass sich die Formatierung
einer Partitionstabelle, die von dem Low-Level-Teil des Plattenpoolmechanismus
verwendet wird, von herkömmlichen
Systemen unterscheidet. Ebenfalls im Vergleich mit herkömmlichen
Systemen wird/werden eine oder mehrere Partitionstabelle(n), wie
sie in dem Dateispeicherungsmechanismus der vorliegenden Erfindung
verwendet werden, in einem Block fester Größe an dem Anfang der Platte
oder des Datenspeicherlaufwerks platziert. Ver schiedene Ausführungsformen
der vorliegenden Erfindung enthalten doppelte Partitionstabellen
in einem Plattenkopf des Datenspeicherlaufwerks. Die Partitionstabellen
sind Spiegelbilder voneinander und werden für Redundanzzwecke verwendet.
Doppelte Partitionstabellen werden verwendet, um die Integrität der Daten
zu schützen,
die in den einen oder mehreren Datenspeicherlaufwerken gespeichert
sind, wenn eine oder mehrere Operationen durchgeführt werden.
Die einen oder mehreren Operationen können zum Beispiel das Aktualisieren
von Informationen in Bezug auf einen oder mehrere Datenpools und
Plattennamen umfassen. In einem repräsentativen Ausführungsbeispiel
umfasst der Plattenkopf Metadaten-Informationen, die mit dem Low-Level-Teil
des Dateispeicherungsmechanismus verbunden sind.
-
9 ist
ein relationales Blockdiagramm einer Partition einer Platte oder
eines Datenspeicherlaufwerks in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung. In Übereinstimmung
mit diesem Ausführungsbeispiel
umfasst jede Partition drei Komponenten 904, 908, 912.
Die ersten beiden Komponenten werden jeweils die ersten und zweiten Poolinformationsblöcke (PIBs) 904, 908 genannt, wobei
jeder PIB 512 Bytes umfasst. Jeder dieser PIBs 904, 908 kann
Pool-Metadaten umfassen. Die dritte und letzte Komponente wird die
Partitions-Nutzdaten 912 genannt und umfasst Rohdaten und
zusätzliche
Metadaten. Die Größe der Partitions-Nutzdaten 912 kann
jegliche Anzahl an Bytes (oder Blöcken) umfassen, wie dies von
einer Partitionstabelle eines Plattenkopfes spezifiziert wird. Die Partitionstabelle
kann einen oder mehrere Blöcke
einer Partition spezifizieren. Jeder der einen oder mehreren Blöcke kann
512 Bytes umfassen. Die Anzahl an Bytes in jedem der vorher beschriebenen
PIBs oder Partitions-Nutzdaten-Blöcke kann variieren, und andere
Ausführungsbeispiele
können
für die
Verwendung in Übereinstimmung
mit verschiedenen Ausführungsformen
der vorliegenden Erfindung angepasst werden.
-
10 ist
ein relationales Blockdiagramm, das die Struktur eines Plattenkopfes
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung veranschaulicht. Der Plattenkopf umfasst 2.560 Bytes
und umfasst die nachfolgenden beispielhaften Felder:
- 1. Feld: Am Offset 0 Bytes wird ein "Magic"-Header-Feld 1004 verwendet,
das eine Länge
von 34 Bytes aufweist. Dieses Feld 1004 enthält spezielle Daten,
die in Übereinstimmung
mit verschiedenen Ausführungsformen
der vorliegenden Erfindung die assoziierte Platte als Teil eines
Datenpoolsystems identifizieren, das von dem Low-Level-Teil des
Plattenpoolmechanismus verwendet wird. Jede Platte, bei der die
ersten 34 Bytes der Platte nicht auf diese speziellen Daten gesetzt
sind, wird nicht als Teil des Datenpoolsystems des Dateispeicherungsmechanismus
betrachtet, der von der vorliegenden Erfindung bereitgestellt wird.
- 2. Feld: Am Offset 34 Bytes wird ein NAS-Identifikator-Feld 1008 verwendet.
Ein 6-Byte-Identifikator wird für
dieses Feld 1008 verwendet. Die sechs Bytes identifizieren
eindeutig die Maschine, die die Platte formatiert hat, um den Plattenkopf zu
erstellen. In einem repräsentativen
Ausführungsbeispiel
identifiziert der 6-Byte-Identifikator eine NAS.
- 3. Feld: Am Offset 40 Bytes wird ein 41 Byte großes Plattennamensfeld 1012 verwendet.
Das 41-Byte-Plattennamensfeld 1012 kann einen ASCII- oder
Unicode-String speichern, der für
den Menschen lesbar ist und der als ein identifizierender Name verwendet
werden kann. in einem repräsentativen
Ausführungsbeispiel
kann das Feld 1012 nullterminiert werden, wobei jedes Byte nach
dem ersten Null-Byte gleich Null gesetzt wird, so dass das letzte
Byte immer Null sein muss.
- 4. Feld: Am Offset 81 Bytes werden 3 Bytes für das Auffüllen mit Nullen (Zero Padding)
für das Feld 1016 für die Auffüllung mit
Nullen (Zero-Padding-Feld)
verwendet.
- 5. Feld: Am Offset 84 Bytes wird ein 16-Byte-Identifikator verwendet,
um die Platte anhand des Plattenidentifikatorfeldes 1020 zu
identifizieren. Der 16-Byte-Identifikator kann zufällig oder
halbzufällig
erzeugt werden, wenn der Plattenkopf erstellt wird.
- 6. Feld: Am Offset 100 Bytes kann ein Ein-Byte-Flag, das in
dem Flag-Feld 1024 verwendet
wird, dazu verwendet werden, anzuzeigen, welche von zwei Partitionstabellen,
die in dem Plattenkopf residieren, aktiv ist. Zum Bei spiel kann
ein Wert von Null anzeigen, dass die erste Tabelle aktiv ist, während ein
anderer Wert anzeigen kann, dass die zweite Tabelle aktiv ist.
- 7. Feld: Am Offset 101 Bytes werden 411 nicht
benutzte Bytes in dem Feld 1028 für unbenutzte Bytes verwendet.
- 8. Feld: Am Offset 512 Bytes ist die erste Partitionstabelle
in dem Feld 1032 für
die erste Partition gespeichert. Das Erste-Partitionstabellen-Feld 1032 umfasst 1024 Bytes.
- 9. Feld: Am Offset 1536 Bytes ist die zweite Partitionstabelle
in dem Feld 1036 für
die zweite Partitionstabelle gespeichert, das ebenfalls 1024 Bytes
umfasst.
-
Die
zweiten, dritten und fünften
Felder des Plattenkopfes (z. B. der NAS-Identifikator, der Plattenname und der
eindeutige Plattenidentifikator) können verwendet werden, um auf
eine bestimmte Platte Bezug zu nehmen, was gewährleistet, dass zwei unterschiedliche
Platten nicht miteinander verwechselt werden können.
-
In
einem repräsentativen
Ausführungsbeispiel
wird zu einem gegebenen Zeitpunkt nur eine der beiden Partitionstabellen
mittels des Flag, das in dem Ein-Byte-Flag-Feld 1024 verwendet
wird, aktiv geschaltet werden. Wenn Änderungen bei der Partitionstabelle
durchgeführt
werden, wird jede neue Information in die inaktive Partitionstabelle
geschrieben. Zum Beispiel werden alle inaktiven Partitionstabellen
in den einen oder mehreren Datenspeicherlaufwerken zu dem Zeitpunkt
aktualisiert, an dem eine Aktualisierung durchgeführt wird.
Da die aktive Tabelle nicht modifiziert wird, wird ein inkonsistenter Zustand
wie zum Beispiel dann, wenn eine Schreiboperation durch einen Stromausfall
unterbrochen wird, verhindert. In diesem repräsentativen Ausführungsbeispiel
umfasst jede Partitionstabelle 1024 Bytes und ist in 64
Einträge
von jeweils 16 Bytes unterteilt. Jeder der 64 Einträge der Partitionstabelle
kann eine Partition in einer Platte spezifizieren. Wenn alle 16 Bytes
in einem Eintrag gleich Null sind, wird der Eintrag als leer betrachtet.
Wenn der Eintrag nicht leer ist, dann spezifizieren die ersten 8
Bytes des Eintrags die Startblocknum mer, und die anderen 8 Bytes
spezifizieren die Größe der Partition
in Blöcken.
Der Start und die Größe werden
in Form von 512-Byte-Blöcken spezifiziert.
Die Startblocknummer steht in Beziehung zu dem Start der Platte
und zeigt auf die Partitions-Nutzdaten der Partition. Die Größe kann
die Größe (in Blöcken) der
Partitions-Nutzdaten der Partition spezifizieren. In diesem repräsentativen
Ausführungsbeispiel
umfasst die Größe nicht
die beiden Poolinformationsblöcke.
die implizit vor den Nutzdaten jeder Partition kommen. Wenn die
Partitionstabelle zum Beispiel eine Startblocknummer von 811 und eine
Größe von 13
Blöcken
spezifiziert, dann wird der erste Poolinformationsblock für diese
Partition der Block mit der Nummer 809 sein, während der
zweite Poolinformationsblock für
diese Partition der Block Nummer 810 sein wird. In diesem
repräsentativen Ausführungsbeispiel
werden die Partitions-Nutzdaten die Blöcke 811 bis einschließlich 823 sein.
In einem repräsentativen
Ausführungsbeispiel
umfasst der Plattenkopf die ersten 8 Blöcke; und als eine Folge davon
ist der niedrigste gültige
Wert für
die Startblocknummer eines Partitionstabelleneintrags 10.
-
Jede
Partition ist mit zwei Poolinformationsblöcken assoziiert, die den einen
oder die mehreren Datenpool(s) bestimmen. Es gibt zwei Poolinformationsblöcke pro
Partition, so dass dann, während
eine Kopie modifiziert wird, auf die andere zugegriffen werden kann.
Die beiden Poolinformationsblöcke (PIBs)
können
jeweils als PIB A und PIB B bezeichnet werden. Der Prozess des Aktualisierens
der Poolinformationsblöcke
umfasst die nachfolgende beispielhafte Methodologie. Während alle
PIB A Kopien für
alle Partitionen in dem Pool geändert
werden, wird keine der PIB B Kopien geändert, so dass sich die PIB
B Kopien immer in einem gleichbleibenden Zustand befinden, wenn
dies bei den A Kopien nicht der Fall ist. In ähnlicher Weise werden dann,
während
die PIB B Kopien aktualisiert werden, alle PIB A Kopien nicht modifiziert,
so dass dann, wenn die PIB B Kopien inkonsistent sind, die PIB A
Kopien alle konsistent sein werden. Die Offsets, Bytelängen und
Feldgrößen der
vorher beschriebenen Plattenkopffelder können variieren, und andere
Ausführungsbeispiele
können
für die
Verwendung in Übereinstimmung
mit verschiedenen Ausführungsbeispielen
der vorliegenden Erfindung angepasst werden.
-
11 ist
ein relationales Blockdiagramm, das die Struktur eines Poolinformationsblocks
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung veranschaulicht. In einem repräsentativen Ausführungsbeispiel
umfasst jeder Poolinformationsblock 512 Bytes und enthält die nachfolgenden
beispielhaften Felder:
- 1. Feld: Am Offset 0
Bytes werden 81 Bytes für
ein Datenpoolnamensfeld 1104 verwendet. In einem repräsentativen
Ausführungsbeispiel
ist das Datenpoolnamensfeld 1104 so ausgelegt, dass es ein
ASCII- oder Unicode-String ist, der von einem Menschen gelesen werden
kann und als ein Name für
den Datenpool verwendet wird, der mit diesem Poolinformationsblock
assoziiert ist. In einem repräsentativen
Ausführungsbeispiel
kann das Datenpoolnamensfeld nullterminiert werden, wobei jedes
Byte nach dem ersten Null-Byte gleich Null ist. Folglich muss das
letzte Byte in diesem Ausführungsbeispiel
immer Null sein.
- 2. Feld: Am Offset 81 Bytes sind 3 Bytes für das Auffüllen mit Nullen (Zero Padding)
von einem ersten Zero-Padding-Feld 1108 bereitgestellt.
- 3. Feld: Am Offset 84 Bytes werden 16 Bytes verwendet, um einen
eindeutigen Datenpoolidentifikator in dem Datenpoolidentifikatorfeld 1112 zu definieren.
Die 16 Bytes können
zufällig
oder halbzufällig
erzeugt werden, wenn der Pool erstellt wird.
- 4. Feld: Am Offset 100 Bytes werden 6 Bytes für das NAS-Identifikationsfeld
(ID) 1116 derart verwendet, dass die NAS der Maschine,
die den Datenpool erstellt hat, identifiziert wird. Dieser spezielle
Wert kann dem Wert entsprechen, der in das NAS-Identifikator-Feld 1108 an
dem Offset 34 Bytes des Plattenkopfes platziert ist, auf den in 10 Bezug
genommen worden ist. Als Folge davon kann die Verwendung eines eindeutigen Datenpoolidentifikators,
eines NAS ID und eines Erstellungszeitstempels einen Datenpool eindeutig
identifizieren. Im Wesentlichen ist es sehr unwahrscheinlich, dass
diese Dreierkombination von Identifikatoren von irgendeinem anderen
Pool verwendet wird. Wenn zwei unterschiedliche Datenpools durch
den gleichen eindeutigen Datenpoolidentifikator, den gleichen NAS
ID und den gleichen Erstellungszeitstempel identifiziert werden
würden,
könnte
eine Verwirrung dahingehend bestehen, welche Partitionen verwendet
werden, um einen oder mehrere Datenpools zu bilden. Zum Beispiel
sollten irgendwelche zwei Pools, die in der gleichen NAS erstellt
werden, unterschiedliche Zeitstempel aufweisen, und irgendwelche zwei
Pools, die in zwei unterschiedlichen NAS erstellt werden, sollten
unterschiedliche NAS IDs aufweisen. Durch das Verwenden von zufälligen Werten
für den
eindeutigen Datenpoolidentifikator nimmt die Wahrscheinlichkeit
der Verwendung der gleichen Dreierkombination von Identifikatoren
ab. In bestimmten Situationen kann sich der NAS ID von dem NAS ID
der NAS, die augenblicklich den Datenpool verwendet, unterscheiden, weil
es sein kann, dass ein oder mehrere Datenspeicherlaufwerke oder
eine oder mehrere Platten von einer NAS entfernt worden sind und
in eine andere eingeführt
worden sind. Der NAS ID eines Datenpoolinformationsblocks kann sich
von dem NAS ID in dem Plattenkopf eines Datenspeicherlaufwerks oder
einer Platte unterscheiden, die von einem Datenpool verwendet werden,
wenn das Datenspeicherlaufwerk oder die Platte zuerst von der einen
NAS verwendet wurde, während
der Datenpool später
von einer anderen NAS erstellt oder erzeugt wurde. Der NAS ID in
dem Plattenkopf wird nicht geändert,
wenn die Partitionstabellen aktualisiert werden, da der NAS ID in
dem Plattenkopf der NAS entsprechen sollte, die den Plattenkopf
in der Platte zuerst erschaffen hat. Dies erlaubt es dem NAS ID
in dem Plattenkopf, sich selber unter anderen Platten oder Datenspeicherlaufwerken
zu erkennen. In ähnlicher
Weise hilft der NAS ID in dem Poolinformationsblock dabei zu erlauben,
dass unterschiedliche Pools auseinandergehalten werden können.
- 5. Feld: Am Offset 106 Bytes werden 2 Bytes für das Auffüllen mit
Nullen in einem zweiten Zero-Padding-Feld 1120 hinzugefügt.
- 6. Feld: Am Offset 108 Bytes werden 9 Bytes verwendet, um einen
Erstellungszeit-/Datumsstempel für
einen Datenpool zu spezifizieren, der in dem Erstellungszeit-/Datumsstempel-Feld 1124 spezifiziert
wird. Wie bei dem NAS ID Feld 116 werden die Zeit und das
Datum aufgezeichnet, um bei der eindeutigen Identifizierung eines
bestimmten Pools zu helfen und um einen Pool von anderen Pools unterscheiden
zu können.
Die ersten 4 Bytes umfassen das Jahr, das nächste Byte umfasst den Monat
(1–12),
das nächste
Byte umfasst den Tag des Monats (1–31), das nächste Byte umfasst die Stunde
(0–23),
das nächste
Byte umfasst die Minuten (0–59),
während
das letzte Byte die Sekunden (0–59)
umfasst. In einem repräsentativen
Ausführungsbeispiel
wird der Zeit/Datumsstempel in Form der Weltzeit ausgedrückt.
- 7. Feld: Am Offset 117 Bytes werden 3 Bytes für das Auffüllen mit
Nullen zu einem dritten Zero-Padding-Feld 1128 hinzugefügt.
- 8. Feld: Am Offset 120 Bytes gibt es 4 Bytes, die die Anzahl
an Stripes oder verteilten (striped) Partitionen in dem Datenpool
spezifizieren. Die 4 Bytes befinden sich in dem Stripes-Feld 1132.
In einem repräsentativen
Ausführungsbeispiel
bedeutet ein Wert von 1, dass das Verteilen (Striping) nicht benutzt
wird. Zum Beispiel muss es wenigstens zwei Stripes geben, damit
das Striping sinnvoll ist. Das Striping mit einem einzigen Stripe
ist äquivalent
zu gar keinem Striping, während
ein Wert von Null einen unzulässigen
Wert umfasst.
- 9. Feld: Am Offset 124 Bytes gibt es 4 Bytes, die die Anzahl
der Spiegel oder der gespiegelten Partitionen in dem Datenpool spezifizieren.
Diese 4 Bytes befinden sich in dem Spiegel-Feld 1136. In einem
repräsentativen
Ausführungsbeispiel
bedeutet ein Wert von 1, dass das Spiegeln nicht benutzt wird, während ein
Wert von Null unzulässig ist.
- 10. Feld: Am Offset 128 Bytes werden 4 Bytes, die die Anzahl
von Spares in dem Pool spezifizieren, in dem Spares-Feld 1140 verwendet.
In einem repräsentativen
Ausführungsbeispiel
zeigt ein Wert von 0 an, dass keine Spares zur Verfügung stehen.
- 11. Feld: Am Offset 132 Bytes gibt es 4 Bytes, die die Anzahl
der Panes spezifizieren, die mit einer Partition assoziiert sind.
4 Bytes werden in dem Pane-Feld 1144 verwendet. Panes umfassen
die Verteilung, die Spiegelung und Reservedateneinheiten, die verwendet
werden, um einen ganzen Datenpool zu erzeugen oder zu erschaffen.
Die gesamte Anzahl an Panes, die mit einem Datenpool assoziiert
ist, umfasst (NST·(NM·NSP)),
wobei NST die Anzahl an Stripes oder verteilten Panes (an dem Offset
120) umfasst, NM die Anzahl an Spiegeln oder gespiegelten Panes
(an dem Offset 124 Bytes oben) ist, und NSP die Anzahl an Spares
oder Spare-Panes (Reserve-Panes) ist. In einem repräsentativen
Ausführungsbeispiel
sind die Panes in einem Datenpool von Null bis eins weniger als
die gesamte Anzahl an Panes durchnumeriert. Zum Beispiel sind die
Panes nummeriert, und zwar beginnend mit allen Stripes für den ers ten
Spiegel, gefolgt von allen Stripes für den zweiten Spiegel, und
so weiter und so fort. Auf dieses folgen alle Stripes für die erste
Spare, gefolgt von allen Stripes für die zweite Spare, und so weiter
und so fort.
- 12. Feld: Am Offset 136 Bytes gibt es 4 Bytes in dem Chunks-Feld 1148,
das die Anzahl an Chunks in dem Pane spezifiziert, der in dem Pane-Feld 1144 spezifiziert
ist. Unter Verwendung von einem oder mehreren Chunks kann ein Pane unter
mehreren Partitionen quer durch eine Platte (oder ein Datenspeicherlaufwerk)
oder quer durch jegliche Anzahl von Platten verteilt sein. Ein oder mehrere
Chunks, die einem Pane entsprechen, werden aus allen Partitionen
in allen Platten gesammelt. Die Chunks werden verkettet, um einen Pane
zu bilden. Dieses Chunks-Feld 1148 spezifiziert, wie viele
Chunks es in einem bestimmten Pane gibt. In einem repräsentativen
Ausführungsbeispiel
ist der Minimumwert eines Chunks-Feldes 1.
- 13. Feld: Am Offset 140 Bytes gibt es 4 Bytes, die einen Chunk-Identifikator umfassen,
der spezifiziert, welcher Chunk in einem Pane repräsentiert ist.
Der Chunk-Identifikator ist in dem Chunk-Identifikator-Feld 1152 gespeichert.
In einem repräsentativen
Ausführungsbeispiel
sind die Chunks von Null bis eins weniger als die gesamte Anzahl an
Chunks in dem Pane durchnumeriert. Diese Nummerierung spezifiziert
die Reihenfolge, in der die Partitionen verkettet werden können, um
den Pane zu bilden. Der Chunk-Identifikator
ist in dem Chunk-Identifikator-Feld 1148 enthalten.
- 14. Feld: Am Offset 144 Bytes gibt es 4 Bytes, die in dem RAID-Chunk-Feld 1156 verwendet
werden, das die RAID-Chunk-Größe spezifiziert.
Die RAID-Chunk-Größe ist ein
Implementierungsdetail, das bei der Implementierung des Codes zur Verkettung
von Partitionen und zur Durchführung der
Spiegelung und der Verteilung verwendet wird. Es hält den gleichen
Wert für
alle Poolinformationsblöcke
in einem gegebenen Datenpool aufrecht. Es sei angemerkt, dass der
Begriff "Chunk" hier nicht derselbe
ist wie der Begriff "Chunk", der bei der Beschreibung
der Felder an den Offsets 136 und 140 verwendet
worden ist.
- 15. Feld: Am Offset 148 Bytes gibt es 108 Bytes einer Pane-Partitions-Spezifikation, die
bestimmt, welche Partition als der nächste Pane dieses Da tenpools
verwendet wird. Eine Partitions-Spezifikation ist in einem Pane-Partitions-Spezifikations-Feld 1160 angesiedelt.
Die Partitions-Spezifikation umfasst 81 Bytes, die den Namen der
Platte spezifizieren, auf der die Partition residiert, 1 Byte für das Auffüllen mit
Nullen, 6 Bytes, die den NAS ID spezifizieren, 16 Bytes, die einen
eindeutigen Platten-ID für
die Platte umfassen, die die spezifizierte Partition enthält, und
4 Bytes, die die Nummer der spezifizierten Partition umfasst, für insgesamt
81 + 1 + 6 + 16 + 4 = 108 Bytes. Wenn die Partition, die mit der
Pane-Partitions-Spezifikation assoziiert ist, dem letzten Pane entspricht, spezifiziert
dieses Pane-Partitions-Spezifikations-Feld den ersten Pane in dem
nächsten
Datenpool, so dass das Pane-Partitions-Spezifikations-Feld eine Verbindung
zwischen diesen Partitionen bereitstellt. Verschiedene Ausführungsformen
der Erfindung sorgen dafür,
dass dann, wenn nur ein Pane in dem Datenpool existieren sollte, das
Pane-Partitions-Spezifikations-Feld 1156 einfach
Rückbezug
auf sich selber nimmt, wenn die Partition die einzige Partition
in seinem Pane ist.
- 16. Feld: Am Offset 256 Bytes gibt es 108 Bytes einer Chunk-Partitions-Spezifikation, die
bestimmt, welche Partition der nächste
Chunk des Pane dieser Partition ist. Die Chunk-Partitions-Spezifikation
wird in dem Chunk-Partitions-Spezifikations-Feld 1164 verwendet.
Sollte diese Partition die letzte in dem Pane sein, dann zeigt dieses
Feld zurück
zu dem ersten Chunk in dem assoziierten Pane. Wenn also dieser Pane aus
nur einer einzigen Partition besteht, dann spezifiziert dieses Feld
sich selbst.
- 17. Feld: Am Offset 364 Bytes werden 4 Bytes in einem Größenänderungs-Flag-Feld 1168 verwendet,
um anzuzeigen, ob sich der Datenpool im Augenblick mitten in einer
Größenänderungsoperation
befindet oder nicht. In einem repräsentativen Ausführungsbeispiel
bedeutet ein Wert von Null, dass er gerade keine Größenänderungsoperation durchmacht.
Sonst zeigt ein Wert von Eins an, dass er gerade eine Größenänderungsoperation durchmacht.
In diesem Ausführungsbeispiel
werden alle anderen Werte als unzulässig betrachtet. In einem repräsentativen
Ausführungsbeispiel speichert
die NAS Informationen, wenn gerade eine Größenänderungsoperation in Gange
ist. Diese Informationen werden so verwendet, dass dann, wenn die
Größenänderungsoperation
unterbrochen wird, die NAS selber ihren Zustand vor der Größenänderungsoperation
wiederherstellen kann, so dass ihre Daten nicht verloren gehen oder beschädigt werden.
Verschiedene Ausführungsformen
der vorliegenden Erfindung verwenden die restlichen Felder in dem
Poolinformationsblock, wenn eine Größenänderungsoperation bei ihrem
assoziierten Datenpool durchgeführt wird.
In einem repräsentativen
Ausführungsbeispiel
wird die Validitätsmarkierung,
die in dem letzten Feld des Poolinformationsblocks benutzt wird,
nicht bei der Größenänderungsoperation verwendet.
- 18. Feld: Am Offset 368 Bytes gibt es 8 Bytes, die in dem Rückwärtsfortschrittsfeld 1172 verwendet werden,
das anzeigt, wie weit eine Größenänderungsoperation
in der Rückwärtsrichtung
fortgeschritten ist. Wenn die Größe eines
Datenpools geändert
wird, kann jede Partition bezüglich
der Größe wachsen
oder schrumpfen (was das Schrumpfen auf Null für eine Partition, die entfernt wird,
oder das Anwachsen ausgehend von Null für eine Partition, die hinzugefügt wird,
einschließt), so
dass es sein kann, dass Daten innerhalb des Pane vorwärts und
rückwärts bewegt
werden müssen.
Die Ordnung dieser Datenbewegungen ist sehr wichtig, um das Überschreiben
von Daten zu verhindern. Diese Datenverschiebung oder dieser Datentransfer
wird durchgeführt,
indem zuerst eine Vorwärtsbewegung
durch den Pane stattfindet, während
Daten in einer Rückwärtsrichtung
kopiert werden, und dann eine Rückwärtsbewegung
durch den Pane folgt, während
Daten in der Vorwärtsrichtung
kopiert werden. Die 8 Bytes sind in einem Rückwärtsfortschrittsfeld 1172 gespeichert,
das den Fortschritt spezifiziert, der in der Rückwärtsrichtung erzielt worden
ist. Wenn die Größenänderungsoperation
unterbrochen wird, dann wird die Datenverschiebung in der Rückwärtsrichtung
an dem korrekten Punkt basierend auf diesem Feld neu gestartet.
- 19. Feld: Am Offset 376 Bytes gibt es 8 Bytes, die anzeigen,
wie weit eine Größenänderungsoperation
in der Vorwärtsrichtung
fortgeschritten ist. Dies ist das Gegenstück zu dem vorher beschriebenen
Rückwärtsfortschrittsfeld
und wird in Form der Anzahl an Bytes gemessen, die in der Vorwärtsrichtung
fortgeschritten sind. Ein Vorwärtsfortschrittsfeld 1176 wird
hier benutzt.
- 20. Feld: Am Offset 384 Bytes gibt es 8 Bytes, die die alte
Größe (in Kilobytes)
anzeigen, wenn eine Größenänderungsoperation
durchgeführt
wird. Es sei angemerkt, dass dies Null sein kann, um anzuzeigen,
dass die assoziierte Partition während
einer Größenänderungsoperation
neu hinzugefügt wird.
Die 8 Bytes werden in einem Feld 1180 für die alte Größe (Alte-Größe-Feld)
gespeichert.
- 21. Feld: Am Offset 392 Bytes gibt es 8 Bytes, die in einem
Feld 1184 für
die neue Größe (Neue-Größe-Feld)
verwendet werden, das die neue Größe in Kilobytes der assoziierten
Partition für
eine Größenänderungsoperation
anzeigt. Es sei angemerkt, dass dies gleich Null sein kann, was
anzeigt, dass diese Partition durch die Größenänderungsoperation entfernt
wird.
- 22. Feld: Am Offset 400 Bytes gibt es 96 Bytes für das Auffüllen mit
Nullen, die in dem vierten Zero-Padding-Feld 1188 gespeichert
sind.
- 23. Feld: Am Offset 496 Bytes gibt es 16 Bytes, die anzeigen,
dass der Block ein gültiger
Poolinformationsblock ist. In einem repräsentativen Ausführungsbeispiel
werden die 16 Bytes in einem Feld 1192 für gültige Poolinformationen
(Gültige-Poolinformationen-Feld)
gespeichert. Es gibt einen binären
Wert, mit dem dieses Feld 1192 für diesen Poolinformationsblock übereinstimmen muss,
um als gültig
betrachtet zu werden. Dies gewährleistet,
dass dann, wenn dieser Poolinformationsblock keine gültigen Poolinformationsblockdaten
enthält,
dieser nicht als ein solcher interpretiert wird. Wenn dieses Feld
zum Beispiel nicht vorhanden ist, dann kann das Dateispeicherungssystem
den Poolinformationsblock ignorieren. Die Offsets, Bytelängen und
Feldgrößen der vorher
beschriebenen Poolinformationsblockfelder können variieren, und ein oder
mehrere andere Ausführungsbeispiele
können
für die
Verwendung in Übereinstimmung
mit verschiedenen Ausführungsformen
der vorliegenden Erfindung angepasst werden.
-
12 ist
ein Operationsablaufdiagramm in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung, das einen Startprozess (Boot-Up-Prozess)
veranschaulicht, der es der NAS erlaubt, einen oder mehrere Datenpools
unter Verwendung eines oder mehrerer Datenspeicherlaufwerke zu implementieren,.
Natürlich
können
die einen oder mehreren Datenspeicherlaufwerke in einem repräsentativen
Ausführungsbeispiel
ein oder mehrere Festplattenlaufwerke umfassen. Die NAS erlaubt es
der NAS mittels des Startprozesses, der in 12 veranschaulicht
ist, die eine oder mehreren Partition, die von den einen oder mehreren
Datenspeicherlaufwerken bereitgestellt wer den, so zu verbinden oder zu
verketten, dass ein oder mehrere Datenpools implementiert werden.
Die NAS liest die Plattenköpfe und
die Poolinformationsblöcke
der Datenspeicherlaufwerke, was es der NAS erlaubt, die einen oder mehreren
Datenpools zu implementieren. Beim Schritt 1204 startet
die NAS, und während
dieses Startprozesses erkennt und prüft sie ein oder mehrere ihrer
Datenspeicherlaufwerke. Beim Schritt 1208 wird die Software,
die in einem Speicher der NAS residiert (wie vorher unter Bezugnahme
auf 2 beschrieben worden war), ausgeführt, um
so die Datenspeicherlaufwerke abzutasten und zu analysieren. Während dieses
Startprozesses können
ein oder mehrere Datenspeicherlaufwerke, die hinzugefügt werden,
von der NAS entdeckt oder erkannt werden. Beim Schritt 1212 identifiziert
die Software die Partitionen in einem Datenspeicherlaufwerk durch
das Lesen der Plattenköpfe,
die mit den Datenspeicherlaufwerken assoziiert sind. Als nächstes ermöglicht die Software
beim Schritt 1216 das Lesen der Poolinformationsblöcke für jede Partition
der einen oder mehreren Datenspeicherlaufwerke. Beim Schritt 1220 wird
jeder Poolinformationsblock, der als ungültig betrachtet wird, verworfen.
Ein verworfener Poolinformationsblock oder mehrere verworfene Poolinformationsblöcke wird/werden,
falls notwendig, wiederhergestellt, indem sein/ihr entsprechender
(oder doppelter) Poolinformationsblock verwendet wird. Als nächstes bestimmt
die NAS beim Schritt 1224, ob irgendwelche Partitionen
fehlen. Wenn zum Beispiel eine Chunk- oder Pane-Partitions-Spezifikation
eine bestimmte Partition anzeigt, die nicht lokalisiert werden kann,
kann die NAS feststellen, dass die Partition fehlt, und der Prozess
geht weiter zum Schritt 1228. Beim Schritt 1228 kann
die NAS den Benutzer alarmieren, dass er ein oder mehrere Datenspeicherlaufwerke
installieren soll, die vorher eventuell entfernt worden sind. Beim
Schritt 1236 korrigiert der Benutzer dieses Problem, indem
er zum Beispiel die einen oder mehreren Datenspeicherlaufwerke,
die die fehlenden Partitionen enthalten, einfügt. Als nächstes werden beim Schritt 1240 ein
oder mehrere Chunks und Panes in den einen oder mehreren Datenspeicherlaufwerken
auf der Basis der Chunk- und Pane-Partitions-Spezifikationen sequentiell geordnet oder
angeordnet. Danach endet der Prozess. Wenn beim Schritt 1224 keine
Partition fehlt, dann wird der Prozess beim Schritt 1244 fortgesetzt,
so dass die einen oder mehreren Chunks und Panes in den einen oder
mehreren Datenspeicherlaufwerken sequentiell geordnet oder angeordnet
werden, um so je nach Bedarf einen oder mehrere geeignete Datenpools
zu erzeugen. Danach endet der Prozess.
-
13 ist
ein Operationsablaufdiagramm, das eine Größenänderungsoperation einer Partition in
einem Datenspeicherlaufwerk eines oder mehrerer Datenspeicherlaufwerke
einer Datenspeicherungsvorrichtung in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung veranschaulicht. Die Datenspeicherungsvorrichtung
kann eine an einem Netzwerk angeschlossene Speichervorrichtung (NAS)
umfassen. In einem repräsentativen
Ausführungsbeispiel
kann die Größenänderungsoperation das
Hinzufügen
zu der NAS oder das Löschen
eines Datenpools bei der NAS umfassen. Beim Schritt 1304 stellt
ein Benutzer eine Eingabe bereit, wie zum Beispiel eine Anforderung,
dass die NAS die Größenänderungsoperation
initiieren soll. Die Eingabe kann über eine Benutzerschnittstelle
stattfinden, wie dies vorher in 5 beschrieben
worden ist. Zum Beispiel kann der Benutzer einen "neuen Poolnamen" eingeben, die Spiegelung
oder Verteilung anzeigen und den Betrag an Kapazität bestimmen,
der dediziert werden soll, wenn ein neuer Datenpool hinzugefügt wird.
Beim Schritt 1308 kann die Software, die in einem Speicher
der NAS residiert, mittels einer Steuerung ausgeführt werden,
die von einem Prozessor bereitgestellt wird (wie dies unter Bezugnahme
auf 2 beschrieben worden ist). Die ausgeführte Software
kann die einen oder mehreren Plattenköpfe, die von den einen oder
mehreren Datenspeicherlaufwerken der NAS bereitgestellt werden, abtasten
und analysieren. Beim Schritt 1312 liest und analysiert
die ausgeführte
Software die Plattenköpfe der
einen oder mehreren Datenspeicherlaufwerke. Die doppelten Partitionstabellen,
die in einem Plattenkopf verwendet werden, nehmen Bezug auf eine oder
mehrere Partitionen in den einen oder mehreren Datenspeicherlaufwerken.
Beim Schritt 1316 wird eine Anzahl von Größenänderungsfeldern
in wenigstens einem Poolinformationsblock jedes Poolinformationsblockpaares
lokalisiert und gelesen. Während
des Abtastungsprozesses kann die ausgeführte Software ein oder mehrere
Felder in den Poolinformationsblöcken
lokalisieren, die bei dem Größenänderungsprozess
verwendet werden. Wie vorher unter Bezugnahme auf 11 angegeben
worden ist, kann der Abtastungsprozess ein Größenänderungs-Flag-, ein Rückwärtsfortschritts-,
ein Vorwärtsfortschritts-,
ein Alte-Größe- und
ein Neue-Größe-Feld
lokalisieren. Beim Schritt 1320 wird die Größe der Partition
in dem Datenspeicherlaufwerk geändert
oder von einer alten Größe in eine
neue Größe umgewandelt,
und zwar auf der Basis der Alte- und Neue-Größe-Felder. Die Rückwärtsfortschritt-
und Vorwärtsfortschritt-Felder
werden verwendet, um das Fortschreiten der Größenänderungsoperation jeweils in
der Rückwärtsrichtung
oder Vorwärtsrichtung
zu überwachen.
Beim Schritt 1324 wird der Umwandlungsprozess fortgesetzt,
bis die neue Größe erreicht worden
ist. Der Prozess kann zum Beispiel enden, wenn eine Partition gelöscht, hinzugefügt oder
auf eine bestimmte Größe größenmäßig geändert ist.
-
Obwohl
die Erfindung unter Bezugnahme auf bestimmte Ausführungsbeispiele
beschrieben worden ist, wird es den Fachleuten auf dem Gebiet klar sein,
dass verschiedene Änderungen
durchgeführt werden
können
und dass Äquivalente
ersetzt werden können,
ohne dass vom Schutzumfang der Erfindung abgewichen wird. Außerdem können viele
Modifikationen durchgeführt
werden, um eine bestimmte Situation oder ein bestimmtes Material
an die Lehren der Erfindung anzupassen, ohne dass von dem Schutzumfang
der Erfindung abgewichen wird. Deshalb ist es beabsichtigt, dass
die Erfindung nicht auf die speziellen offenbarten Ausführungsbeispiele
beschränkt ist,
sondern dass die Erfindung alle Ausführungsbeispiele umfassen wird,
die in den Schutzbereich der angehängten Ansprüche fallen.