DE602005002668T2 - Verfahren zur Datenspeicherungskapazitätzuweisung und Verwaltung unter Verwendung eines oder mehreren Datenspeicherungslaufwerken - Google Patents

Verfahren zur Datenspeicherungskapazitätzuweisung und Verwaltung unter Verwendung eines oder mehreren Datenspeicherungslaufwerken Download PDF

Info

Publication number
DE602005002668T2
DE602005002668T2 DE602005002668T DE602005002668T DE602005002668T2 DE 602005002668 T2 DE602005002668 T2 DE 602005002668T2 DE 602005002668 T DE602005002668 T DE 602005002668T DE 602005002668 T DE602005002668 T DE 602005002668T DE 602005002668 T2 DE602005002668 T2 DE 602005002668T2
Authority
DE
Germany
Prior art keywords
bytes
data
data storage
partition
nas
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602005002668T
Other languages
English (en)
Other versions
DE602005002668D1 (de
Inventor
Christopher S. Wilson
Viresh Rustagi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Broadcom Corp
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of DE602005002668D1 publication Critical patent/DE602005002668D1/de
Application granted granted Critical
Publication of DE602005002668T2 publication Critical patent/DE602005002668T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

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

Claims (3)

  1. Verfahren zur Implementierung eines Datenpools unter Verwendung eines oder mehrerer Datenspeicherlaufwerke (232), das Folgendes umfasst: zuerst das Erzeugen einer ersten Partitionstabelle (1032) und einer zweiten Partitionstabelle (1036), wobei die erste Partitionstabelle (1032) ein Spiegelbild der zweiten Partitionstabelle (1036) ist, wobei die ersten und die zweiten Partitionstabellen die Position und die Größe einer oder mehrerer Partitionen in einem Datenspeicherlaufwerk der einen oder mehreren Datenspeicherlaufwerke (232) einer Datenspeicherungsvorrichtung bereitstellen; dadurch gekennzeichnet, dass als nächstes ein erster Poolinformationsblock (904) und ein zweiter Poolinformationsblock (908) erzeugt werden, wobei der erste Poolinformationsblock (904) ein Spiegelbild des zweiten Poolinformationsblocks (908) ist, wobei die ersten und die zweiten Poolinformationsblöcke zur Identifizierung und Verkettung von einer oder mehreren Partitionen verwendet werden, wobei die ersten und zweiten Poolinformationsblöcke innerhalb jeder der einen oder mehreren Partitionen in dem einen oder den mehreren Datenspeicherlaufwerken (232) gespeichert werden.
  2. Verfahren nach Anspruch 1, das des Weiteren das Identifizieren wenigstens eines oder mehrerer Chunks und Panes der einen oder mehreren Partitionen umfasst; und das Verketten der einen oder mehreren Chunks und Panes zur Bildung des Datenpools umfasst.
  3. Verfahren nach Anspruch 1, wobei das Datenspeicherlaufwerk (232) ein Festplattenlaufwerk umfasst.
DE602005002668T 2004-04-15 2005-04-07 Verfahren zur Datenspeicherungskapazitätzuweisung und Verwaltung unter Verwendung eines oder mehreren Datenspeicherungslaufwerken Active DE602005002668T2 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US56284704P 2004-04-15 2004-04-15
US562847P 2004-04-15
US64863405P 2005-01-31 2005-01-31
US648634P 2005-01-31
US11/087,136 US7395402B2 (en) 2004-04-15 2005-03-22 Method and system of data storage capacity allocation and management using one or more data storage drives
US87136 2005-03-22

Publications (2)

Publication Number Publication Date
DE602005002668D1 DE602005002668D1 (de) 2007-11-15
DE602005002668T2 true DE602005002668T2 (de) 2008-07-24

Family

ID=34934877

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005002668T Active DE602005002668T2 (de) 2004-04-15 2005-04-07 Verfahren zur Datenspeicherungskapazitätzuweisung und Verwaltung unter Verwendung eines oder mehreren Datenspeicherungslaufwerken

Country Status (3)

Country Link
US (1) US7395402B2 (de)
EP (1) EP1586997B1 (de)
DE (1) DE602005002668T2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100527274B1 (ko) * 2004-06-04 2005-12-13 주식회사 르노소프트 시스템 영역 정보 테이블과 매핑 테이블을 사용한 컴퓨터하드디스크 시스템 데이터 보호 장치 및 그 방법
US7870332B2 (en) * 2005-01-31 2011-01-11 Broadcom Corporation Retention of functionality and operational configuration for a portable data storage drive
US8677091B2 (en) * 2006-12-18 2014-03-18 Commvault Systems, Inc. Writing data and storage system specific metadata to network attached storage device
US7752388B2 (en) * 2007-04-24 2010-07-06 International Business Machines Corporation Apparatus and method to store information in multiple holographic data storage media
US8356014B2 (en) * 2007-06-15 2013-01-15 Oracle International Corporation Referring to partitions with for (values) clause
US8209294B2 (en) * 2007-06-15 2012-06-26 Oracle International Corporation Dynamic creation of database partitions
US8135688B2 (en) * 2007-06-15 2012-03-13 Oracle International Corporation Partition/table allocation on demand
US8527731B2 (en) * 2008-07-08 2013-09-03 Hewlett-Packard Development Company, Lp. Adaptable external drive
US8631200B2 (en) 2009-03-20 2014-01-14 Netapp, Inc. Method and system for governing an enterprise level green storage system drive technique
CN102480384A (zh) * 2010-11-24 2012-05-30 英业达股份有限公司 更新固件的方法
WO2012090239A1 (en) * 2010-12-27 2012-07-05 Hitachi, Ltd. Storage system and management method of control information therein
US9069468B2 (en) 2011-09-11 2015-06-30 Microsoft Technology Licensing, Llc Pooled partition layout and representation
US8914578B2 (en) * 2012-09-27 2014-12-16 Hewlett-Packard Development Company, L.P. Capacity-expansion of a logical volume
US9891693B1 (en) * 2013-04-17 2018-02-13 Western Digital Technologies, Inc. Storage system comprising a communications port for charging an electronic device
US9052995B2 (en) * 2013-04-26 2015-06-09 Netapp, Inc. Systems and methods providing mount catalogs for rapid volume mount
US9213611B2 (en) 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
US10007602B2 (en) 2014-05-06 2018-06-26 International Business Machines Corporation Flash copy relationship management
JP6288596B2 (ja) * 2014-11-05 2018-03-07 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理方法および装置
US10108352B2 (en) * 2015-03-03 2018-10-23 International Business Machines Corporation Incremental replication of a source data set
US10097636B1 (en) 2015-06-15 2018-10-09 Western Digital Technologies, Inc. Data storage device docking station
US10530584B2 (en) * 2016-06-29 2020-01-07 Aram Kovach Systems and methods for tracking controlled items
CN107436852B (zh) * 2017-07-21 2020-12-25 金华市智甄通信设备有限公司 一种接口切换装置及一种终端设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367682A (en) * 1991-04-29 1994-11-22 Steven Chang Data processing virus protection circuitry including a permanent memory for storing a redundant partition table
US5680540A (en) * 1995-01-31 1997-10-21 Bell Usa, L.P. Suspend-to-disk system for removable hard drive
US5539879A (en) 1995-05-24 1996-07-23 Dell U.S.A., L.P. Checksum technique for verifying integrity of disk space reserved for suspend-to-disk operations
US6438639B1 (en) * 1996-08-27 2002-08-20 International Business Machines Corporation Computer system bus network providing concurrent communication and connection transition of peripheral devices
US6173376B1 (en) * 1996-10-03 2001-01-09 International Business Machines Corp. Data backup and restore method and system in a multisystem environment
CN1281560A (zh) 1997-10-08 2001-01-24 西加特技术有限责任公司 混合数据存储和重建系统以及用于数据存储装置的方法
JP3505093B2 (ja) * 1998-09-18 2004-03-08 富士通株式会社 ファイル管理システム
US6578034B1 (en) * 1999-09-30 2003-06-10 International Business Machines Corporation Method and system for a distributed hidden database across a plurality of computer media
US6615365B1 (en) 2000-03-11 2003-09-02 Powerquest Corporation Storing a computer disk image within an imaged partition
US6963951B2 (en) * 2000-07-12 2005-11-08 Seagate Technology Llc Partition recovery method
US6675242B2 (en) * 2001-03-17 2004-01-06 Hewlett-Packard Development Company, L.P. Communication bus controller including designation of primary and secondary status according to slot position
KR100392382B1 (ko) 2001-07-27 2003-07-23 한국전자통신연구원 동적 크기 변경 및 메타 데이터 양의 최소화를 위한 논리볼륨 관리 방법
CN1205555C (zh) * 2001-11-12 2005-06-08 联想(北京)有限公司 硬盘数据备份与恢复方法
US7299314B2 (en) * 2003-12-31 2007-11-20 Sandisk Corporation Flash storage system with write/erase abort detection mechanism

Also Published As

Publication number Publication date
EP1586997A2 (de) 2005-10-19
EP1586997B1 (de) 2007-10-03
US20050235337A1 (en) 2005-10-20
US7395402B2 (en) 2008-07-01
DE602005002668D1 (de) 2007-11-15
EP1586997A3 (de) 2005-12-07

Similar Documents

Publication Publication Date Title
DE602005002668T2 (de) Verfahren zur Datenspeicherungskapazitätzuweisung und Verwaltung unter Verwendung eines oder mehreren Datenspeicherungslaufwerken
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
DE69722962T2 (de) Strukturiertes datenspeichersystem mit global adressierbarem speicher
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE602005000972T2 (de) Speichersystem und Datenverarbeitungssystem
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE60008021T2 (de) Speicherverwaltungssystem mit gemeinsamen trägerverwalter
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102004013114B4 (de) Plattenarrayvorrichtung
DE602005000926T2 (de) Speichersystem und Speicherauszugs-Erstellungsverfahren eines Speichersystems
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE69937768T2 (de) Externe Speichervorrichtung und Verfahren zur Datensicherung
DE69333906T2 (de) Verfahren und System für die Dateienverwaltung mit einem schnell löschbaren, programmierbaren ROM
DE112019002609T5 (de) Wechseln zwischen Fehlerreaktionsmodellen für ein Speichersystem
DE112013006655T5 (de) Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung
DE112014006605B4 (de) Speichersystem
DE102009031923A1 (de) Verfahren zum Verwalten von Datenobjekten
EP3084638A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE102020120553A1 (de) Virtuell persistente volumes für containerisierte anwendungen
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE102004023811A1 (de) Speichersystem
DE112008002947T5 (de) System zum automatischen Abschatten verschlüsselter Daten und von Dateiverzeichnisstrukturen
DE102004027672A1 (de) Speicherplattenarraysystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M