-
Die
Erfindung betrifft Speichersysteme.
-
Bei
Computerdateisystemen zum Speichern und Rückgewinnen von Information
ist es manchmal vorteilhaft, das Ganze oder einen Teil des Dateisystems
zu duplizieren. Zum Beispiel ist ein Zweck des Duplizierens eines
Dateisystems, eine Backup-Kopie des Dateisystems zu erhalten, um
es vor verlorener Information zu schützen. Ein weiterer Zweck des
Duplizierens eines Dateisystems ist, eine Kopie des Dateisystems
auf einer Vielzahl von Servern bereitzustellen, so dass die Vielzahl
an Servern die Belastung teilen können, die durch Zugreifen auf
die erhältliche
Information anfällt.
-
Ein
bekanntes Problem im Stand der Technik ist, dass existierende Techniken
zum Duplizieren von Daten in einem Dateisystem entweder relativ
schwierig und langsam sind (wie zum Beispiel ein Duplizieren auf
Band) oder relativ teuer sind (wie zum Beispiel ein Duplizieren
auf eine zusätzliche
Anordnung von Plattenlaufwerken).
-
Die
veröffentliche
Anmeldung WO 00/07104 offenbart, wie Daten, die in den Speicherblöcken des Quellendateisystems
enthalten sind, effizient auf die Speicherblöcke auf dem Zieldateisystem
kopiert werden können,
wobei jedes Dateisystem die gleichen Blocknummern (BNs) hat, die
die Speicherblöcke identifizie ren
(somit wird eine identische Bildkopie des Quellendateisystems auf
dem Zieldateisystem angelegt). Diese Anwendung erfordert, dass die
BNs für
das Quellendateisystem und die BNs für das Zieldateisystem die gleichen
sind.
-
Ein
Problem kann bestehen, wenn das Zieldateisystem kleiner als das
Quellendateisystem ist, da nicht alle möglicherweise verwendeten Speicherblöcke in dem
Quellendateisystem auf dem Zieldateisystem verfügbar sind. Ein weiteres Problem
kann bestehen, wenn das Zieldateisystem nicht verwendbare Speicherblöcke an Speicherorten
hat, die mit Speicherblöcken
korrespondieren, die auf dem Quellendateisystem verwendet werden.
Noch ein weiteres Problem tritt auf, wenn die RAID-Geometrie des Quellendateisystems
unterschiedlich von derjenigen des Zieldateisystems ist, weil die
Organisation von Speicherblöcken
auf dem Zieldateisystem nicht so effizient organisiert sein braucht,
wie auf dem Quellendateisystem. Diese Probleme werden unter anderem
durch die vorliegende Erfindung angesprochen.
-
Es
ist vorteilhaft, eine Technik bereitzustellen, die Speicherblöcke von
dem Quellendateisystem (angeordnet gemäß einer ersten Speicherblockanordnung)
effizient auf das Zieldateisystem kopiert, das gemäß einer
zweiten Speicherblockanordnung angeordnet ist, die von der ersten
Speicherblockanordnung abweicht.
-
Weiterer
Hintergrund kann im US-Patent Nr. 5 873101 (Klein) und in
EP 767 431-A1 (Matze
und Poway) gefunden werden. Klein offenbart ein System zum Backup
und Restaurieren einer Datenbank. Während der Restaurationsoperation
werden alle speicherortabhängigen
Informationen basierend auf den anfänglichen und neuen Konfigurationen
der Datenbank aktualisiert. Matze und Poway offenbaren ein System
zum Backup von Daten von einem Computer.
-
Die
Erfindung, die durch die beiliegenden Ansprüche definiert wird, bietet
ein Verfahren und eine Vorrichtung zum Duplizieren des gesamten
oder eines Teils eines Dateisystems, während konsistente Kopien des
Dateisystems beibehalten werden. Eine bevorzugte Ausführungsform
ermittelt eine erste Menge von Blocknummern (BNs), ermittelt, wo
die Speicherblöcke
gespeichert sind, die von diesen BNs referenziert werden, und aktualisiert
die BNs dementsprechend. Eine andere bevorzugte Ausführungsform
liest Daten von dem Quellendateisystem (gemäß einer ersten Speicherblockanordnung),
erzeugt einen Bildstrom und schreibt die Daten von dem Bildstrom
auf das Zieldateisystem (gemäß einer
zweiten Speicherblockanordnung). Ein Zwischenspeichermedium kann
verwendet werden, um den Bildstrom zu speichern oder zu übertragen,
bevor die Daten auf das Zieldateisystem geschrieben werden. (Zum
Beispiel kann das Zwischenspeichermedium (ohne Einschränkung) ein
Magnetband (oder eine andere Archivierungsvorrichtung) oder ein
Netzwerk umfassen.) Die Erfindung erlaubt es, Bilddateisystemkopien
von einem Quellendateisystem zu einem Zieldateisystem anzufertigen,
das eine unterschiedliche Charakteristik gegenüber dem Quellendateisystem hat.
-
Beschreibung
der Zeichnungen
-
1 illustriert
ein Computersystem, das imstande ist, die Erfindung gemäß einer
bevorzugten Ausführungsform
zu verwenden;
-
2A illustriert
einen Überblick
des Verfahrens der bevorzugten Ausführungsform;
-
2B illustriert
einen Umstellprozess („swizzling
process"), der von
der bevorzugten Ausführungsform
verwendet wird;
-
3A illustriert
einen ersten Blocklisten-Erzeugungsprozess gemäß einer bevorzugten Ausführungsform;
-
3B illustriert
einen zweiten Blocklisten-Erzeugungsprozess gemäß einer bevorzugten Ausführungsform;
-
3C illustriert
einen dritten Blocklisten-Erzeugungsprozess gemäß einer bevorzugten Ausführungsform;
-
4A illustriert
ein erstes Bildstromformat, das unter Verwendung des Prozesses erzeugt
wird, der in 3A illustriert ist;
-
4B illustriert
ein zweites Bildstromformat, das gemäß 3B erzeugt
wird;
-
4C illustriert
ein drittes Bildstromformat, das gemäß 3C erzeugt
wird;
-
5 illustriert
einen Umstellprozess-im-Fluge gemäß einer bevorzugten Ausführungsform;
-
6 illustriert
einen späten
Umstellprozess gemäß einer
bevorzugten Ausführungsform;
-
7 illustriert
einen Bandumstellprozess gemäß einer
bevorzugten Ausführungsform;
-
8 illustriert
einen Umstell-Neustartprozess gemäß einer bevorzugten Ausführungsform;
-
9A illustriert
einen BN-basierten Bildstrom gemäß einer
bevorzugten Ausführungsform; und
-
9B illustriert
einen klumpenbasierten Bildstrom gemäß einer bevorzugten Ausführungsform.
-
Beschreibung
der bevorzugten Ausführungsformen
-
In
der folgenden Beschreibung werden eine oder mehrere bevorzugte Ausführungsformen
der Erfindung im Hinblick auf bevorzugte Prozessschritte und eine
Vorrichtung, die diese Schritte bewirkt, beschrieben. Jedoch wird
ein Fachmann erkennen, dass Ausführungsformen
der Erfindung unter Verwendung von Spezial- oder Universalprozessoren implementiert
werden können,
die unter einer Programmsteuerung oder anderen Schaltkreisen betrieben
werden, und dass die Implementierung der Prozessschritte keine übermäßige Experimentierung oder
eine weitere Erfindung erfordert.
-
Hierin
beschriebene Erfindungen können
gemeinsam mit Erfindungen verwendet werden, die in den folgenden
Anmeldungen beschrieben sind:
- – Internationale
Anmeldung Nr. PCT/US94/06321, eingereicht am 02. Juni 1994 durch
Network Appliance Corporation mit dem Titel „A Method for Providing Parity
in a RAID Sub-System Using Non-Volatile Memory" und veröffentlicht unter der internationalen
Veröffentlichungsnummer
WO 94/29795;
- – Internationale
Anmeldung Nr. PCT/US94/06320, eingereicht am 02. Juni 1994 durch
Network Appliance Corporation mit dem Titel „Write Anywhere File-System
Layout" und veröffentlicht
unter der internationalen Veröffentlichungsnummer
WO 94/29807;
- – Internationale
Anmeldung Nr. PCT/US94/06322, eingereicht am 02. Juni 1994 durch
Network Appliance Corporation mit dem Titel „Method for Allocating Files
in a File System Integrated with a RAID Disk Sub-System" und veröffentlicht
unter der internationalen Veröffentlichungsnummer
WO 94/29796.
-
Notation und Nomenklatur
-
Die
folgende „Notationen
und Nomenklatur" wird
bereitgestellt, um dem Verständnis
der vorliegenden Erfindung und deren bevorzugten Ausführungsformen
zu dienen.
-
Blocktyp-Bits – Blocktyp-Bits
sind Bits in einer Blockabbildungsdatei, die den Zweck jedes Speicherblocks
in dem Dateisystem beschreiben. Somit können Blocktyp-Bits verwendet
werden, um zu ermitteln, welche Speicherblöcke Blocknummernzeiger (BN)
umfassen.
-
Zeiger – Ein Zeiger
ist ein Datenwert, der verwendet wird, um auf eine Datenstruktur
zu verweisen. Ein Fachmann versteht, dass „Zeiger" ohne Einschränkung eine Speicheradresse
von interessierender Information oder einen Wert, der verwendet
wird, um die Adresse der interessierenden Information zu berechnen,
und alle funktionalen Äquivalente
einschließt,
einschließlich „Handles" und ähnlichen
Konstrukten. Ein BN-Zeiger dient als ein Zeiger auf einen Speicherblock
in einem Dateisystem.
-
Prozedur – Eine Prozedur
ist eine abgeschlossene Folge von computerisierten Schritten, die zu
einem erwünschten
Resultat führen.
Diese Schritte werden durch eine oder mehrere Computeranweisungen
definiert. Diese Schritte werden von einem Computer ausgeführt, der
die Anweisungen ausführt, die
die Schritte definieren. Somit kann der Begriff „Prozedur" eine Folge von Anweisungen, eine Folge von
Anweisungen, die innerhalb einer programmierten Prozedur oder programmierten
Funktion organisiert sind, oder eine Folge von Anweisungen bezeichnen,
die innerhalb von programmierten Prozessen organisiert sind, die
auf einem oder mehreren Computern ausgeführt werden.
-
RAID – Redundante
Anordnung von unabhängigen
Platten („Redundant
Array of Independent Disks").
-
Detaillierte Beschreibung
-
1 illustriert
einen Computer, der mit dem generellen Bezugszeichen 100 bezeichnet
ist, der die Erfindung umfasst. Der Computer 100 umfasst
einen Prozessor 101, der eine zentrale Prozessoreinheit
(CPU) 103, einen Speicherabschnitt 105 und einen
Eingangs-/Ausgangs-Abschnitt (I/O) 107 umfasst. Der I/O-Abschnitt 107 kann
mit einer Betriebsschnittstelle 109, einer ersten Plattenspeichereinheit 113,
einer zweiten Plattenspeichereinheit 114 und einer entfernbaren
Medienplatteneinheit 115 verbunden werden. Die entfernbare
Medienplatteneinheit 115 kann ein entfernbares Medium 117 lesen,
das typischerweise ein Programm und Daten 119 umfasst. Die
Plattenspeichereinheiten 113, 114 können eine Anordnung
von Platten sein (zum Beispiel ein RAID). Der Computer 100 kann
eine Netzwerkschnittstelle 121 umfassen, die den Computer 100 mit
einem Netzwerk 123 verbindet. Ein Applikationsprogramm 125,
das sich in dem Speicherabschnitt 105 befindet, bewirkt,
dass der Computer 100 die Schritte der Erfindung durchführt. Das
Applikationsprogramm 125 wird in den Speicherabschnitt 105 von
einem der Diskettenspeichereinheiten, der Netzwerkschnittstelle 121,
einem Festspeicher (ROM) oder einer ähnlichen Datenspeichervorrichtung
geladen. Bei einigen Ausführungsformen
umfasst der Speicherabschnitt 105 einen NVRAM 127.
Die Betriebsschnittstelle 109 bietet einen Zugang zu dem
Computer 100, wie zum Beispiel durch ein Netzwerk, einen
Terminalanschluss oder einen I/O-Mechanismus.
-
Die
entfernbare Medienplatteneinheit 115 (zusammen mit dem
entfernbaren Medium 117), die erste Plattenspeichereinheit 113 und
die zweite Plattenspeichereinheit 114 sind Teil eines Dateispeichermechanismus.
Die zweite Plattenspeichereinheit 114 braucht nicht die
gleiche Größe wie die
erste Plattenspeichereinheit 113 zu haben (insbesondere
kann die zweite Plattenspeichereinheit 114 eine geringere Datenkapazität haben,
als die erste Plattenspeichereinheit 113). Zusätzlich kann
der Computer 100 eine Magnetbandvorrichtung (nicht dargestellt)
umfassen. Ein Fachmann erkennt, dass nicht alle in 1 gezeigten
Elemente bei jeder Ausführungsform
vorhanden sein müssen.
-
Ein
Aspekt der Erfindung überträgt Daten von
physikalischen Speicherblöcken,
die ein Quellendateisystem von einem ersten blockorientierten Medium
bilden, auf ein zweites blockorientiertes Medium, ohne dass die
gleiche physikalische Blockanordnung auf dem zweiten blockorientierten
Medium verwendet werden muss, wie bei dem ersten. Somit definiert
eine erste Speicherblockanordnung die Dateistruktur des Quellendateisystems
und eine zweite Speicherblockanordnung definiert die Dateistruktur
des Zieldateisystems und die erste Speicherblockanordnung und die
zweite Speicherblockanordnung sind unterschiedlich.
-
Umstellen
(„Swizzling") ist ein Prozess,
der Blocknummern (BNs) neu abbildet, so dass Dateisystemspeicherblöcke an verschiedenen
Orten auf dem Zieldateisystem gespeichert werden können, als sie
sich auf dem Quellendateisystem befinden. Ein Umstellen erlaubt
eine Bildübertragung
von einem ersten Dateisystem auf ein zweites Dateisystem, wenn einige
der Speicherblöcke,
die auf dem ersten Dateisystem verwendet werden, nicht auf korrespondierende
Speicherblöcke
auf dem zweiten Dateisystem übertragen
werden können.
Diese Situation tritt auf (zum Beispiel, aber nicht einschränkend),
wenn die ersten und zweiten Dateisysteme von verschiedener Größe sind,
wenn einige Speicherblöcke
auf dem ersten Dateisystem nicht auf die gleichen Speicherblöcke auf
dem zweiten Dateisystem übertragen
werden können
(zum Beispiel, falls das zweite Dateisystem schlechte Blöcke hat),
oder wenn sich die Geometrien der Dateisysteme wesentlich unterscheiden,
so dass eine optimalere Abbildung erforderlich ist (zum Beispiel,
wenn ein Dateisystem von einem RAID-Speicher auf einen anderen RAID-Speicher
mit verschiedenen Eigenschaften übertragen wird).
-
Ein
Umstellen kann durchgeführt
werden, nachdem die Speicherblöcke
auf das Zieldateisystem (spätes
Umstellen) geschrieben sind, oder wenn die Speicherblöcke auf
das Zieldateisystem geschrieben werden (Umstellen-im-Fluge). Bandumstellen
ist eine Form des späten
Umstellens, die Schreibzugriffe auf ein RAID-basiertes Zieldateisystem optimiert
und die den Schritt des Neuabbildens optimiert. Ein Klumpen-Umstellen
stellt einen Bereich von Speicherblöcken anstelle eines einzelnen Speicherblocks
um und reduziert so den Umfang an Blockabbildungsinformation, die
gehalten wird. Zum Beispiel, falls die Klumpengröße 256 Speicherblöcke ist,
würden
die oberen Bits der BN jedes Blocks in dem Klumpen in der gleichen
Weise umgestellt werden und die unteren acht Bits der BN würden unverändert bleiben.
Dies reduziert die Blockabbildungsinformation um einen Faktor von 256.
-
Eine
bevorzugte Ausführungsform
verwendet BNs, die innerhalb eines Datenträgerblocknummern-(VBN)-Raums
liegen. VBNs bieten einen kontinuierlichen flachen Adressraum für die Speicherblöcke. Dieser
Adressraum hat keine Lücken
oder Löcher,
wo es keinen Speicherblock gibt, der mit einer gegebenen Adresse
korrespondiert (zum Beispiel haben einige Schemata, die eine Plattenidentifikation in
den hohen Bits der Adresse verwenden und einen Speicherblockidentifikator
innerhalb der Platte, Adresslücken
zwischen den Platten).
-
2A illustriert
einen Dateisystemduplizierungsprozess, der mit dem generellen Bezugszeichen 200 bezeichnet
ist, der Daten von einem Quellendateisystem zu einem Zieldateisystem überträgt. Jedes
Dateisystem ist imstande, die Daten in einem oder mehreren Speicherblöcken zu
speichern. Der Dateisystemduplizie rungsprozess 200 beginnt
an dem „Start"-Punkt 201 und
setzt sich zu einer „Erzeuge
Bildstrom"-Prozedur 203 fort.
Die „Erzeuge
Bildstrom"-Prozedur 203 erzeugt
einen Bildstrom durch Ermitteln einer ersten Speicherblockanordnung,
die spezifiziert wie/wo sich die auf dem Quellendateisystem gespeicherten
Daten in dem Bildstrom befinden. Die „Erzeuge Bildstrom"-Prozedur 203 liest
auch die Daten von dem Quellendateisystem gemäß der ersten Speicherblockanordnung,
um den Bildstrom zu erzeugen. Eine bevorzugte Ausführungsform
scannt die Blockabbildungsdatei, um zu ermitteln, welche Speicherblöcke auf
dem Quellendateisystem in den Bildstrom zu integrieren sind. Andere
Ausführungsformen
können
andere Dateisysteminformationen verwenden, um zu ermitteln, welche
Speicherblöcke zu
integrieren sind. Somit ermittelt die „Erzeuge Bildstrom"-Prozedur 203, welche Speicherblöcke von dem
Quellendateisystem in den Bildstrom gemäß der Anordnung der Speicherblöcke auf
dem Quellendateisystem zu integrieren sind, so wie es durch die Dateisystem-Meta-Daten
des Quellendateisystems definiert wird. Die Anordnung der Speicherblöcke auf dem
Quellendateisystem ist unterschiedlich zu der Anordnung der Speicherblöcke auf
dem Zieldateisystem, wenn die Speicherblöcke geschrieben werden.
-
Die „Erzeuge
Bildstrom"-Prozedur 203 kann auch
eine oder mehrere Blocklisten erzeugen, die spezifizieren, wo Speicherblöcke von
dem Quellendateisystem in dem Bildstrom integriert sind. Die Blockliste
kann anzeigen, welche Speicherblöcke
einen oder mehrere Blocknummern-(BN)-Zeiger umfassen. Die Daten,
die von dem Quellendateisystem gelesen werden, umfassen einen oder
mehrere Blocknummern-(BN)-Zeiger. Die „Erzeuge Bildstrom"-Prozedur 203 kann
auch eine zweite Blockliste umfassen, die verwendet werden kann,
um Blöcke in
dem Bildstrom auf eine zweite Speicherblockanordnung für das Zieldateisystem
abzubilden.
-
Der
Bildstrom kann die Blocktyp-Bits oder Information, die von den Blocktyp-Bits abgeleitet wird, umfassen,
um zu identifizieren, welche Speicherblöcke in dem Bildstrom BN-Zeiger
umfassen.
-
Sobald
der Bildstrom erzeugt ist, ermittelt eine „Schreibe Bildstrom"-Prozedur 205 die
zweite Speicherblockanordnung für
das Zieldateisystem und schreibt den Bildstrom auf das Zieldateisystem unter
Verwendung tatsächlicher
oder normalisierter Blocklisten (impliziter Blocklisten). Ein Aspekt
der Erfindung ist, dass Daten, die an einem bestimmten Speicherblock
auf dem Quellendateisystem gespeichert sind, nicht an dem gleichen
Speicherblock des Zieldateisystems gespeichert werden müssen. Somit kann
die Anordnung der Speicherblöcke
für das Quellen- und das Zieldateisystem
unterschiedlich sein.
-
Die
Blocklisten können
Informationen umfassen, die verwendet werden kann, um Speicherblöcke direkt
von dem Quellendateisystem auf Speicherblöcke auf dem Zieldateisystem
abzubilden und/oder sie können
Informationen umfassen, die repräsentieren, wo
die Speicherblöcke
auf dem Quellen- und/oder Zieldateisystem gespeichert sind.
-
Ein
Aspekt der Erfindung ist, dass Speicherorte der Speicherblöcke auf
dem Quellendateisystem verschieden von den Speicherorten der Speicherblöcke auf
dem Zieldateisystem sind. Somit werden die Daten in einem Speicherblock
mit einer gegebenen Adresse auf dem Quellendateisystem in einem Speicherblock
mit einer verschiedenen Adresse auf dem Zieldateisystem gespeichert.
Somit braucht das Quellendateisystem nicht die gleiche Charakteristik zu
haben wie das Zieldateisystem. Insbesondere brauchen diese Dateisysteme
(ohne Einschränkung) nicht
die gleiche Anzahl von Speicherblöcken, den gleichen Spur/Zylinder-Aufbau
oder die gleichen RAID-Parameter zu haben. Tatsächlich kann das Zieldateisystem
sogar kleiner als das Quellendateisystem sein, solange, wie die
innerhalb des Quellendateisystems enthaltenen Daten auf dem Zieldateisystem
gespeichert werden können.
-
Sobald
die Daten auf dem Zieldateisystem gespeichert sind (als die zweite
Speicherblockanordnung), fährt
der Dateisystemduplizierungsprozess 200 mit einer „Aktualisiere
BN-Zeiger"-Prozedur 207 fort.
Die „Aktualisiere
BN-Zeiger"-Prozedur 207 verwendet
die zweite Speicherblockanordnung, die erste Blockliste und bei
einigen Ausführungsformen
die zweite Blockliste, um die BN-Zeiger, die in den Speicherblöcken in
dem Zieldateisystem enthalten sind, zu aktualisieren. Sobald die
BN-Zeiger umgestellt sind, enthält
das Zieldateisystem eine vollständige
und konsistente Kopie des Quellendateisystems zu dem Zeitpunkt,
zu dem der Bildstrom erzeugt wurde. Der Dateisystemduplizierungsprozess 200 wird mit
einem „Ende"-Punkt 209 abgeschlossen.
Die „Aktualisiere
BN-Zeiger"-Prozedur 207 kann
durchgeführt
werden, nachdem sämtliche
Daten auf das Zieldateisystem geschrieben wurden (ein spätes Umstellen,
so wie es nachfolgend mit Bezug auf 6 beschrieben
wird und so, dass die zweite Speicherblockanordnung vor dem späten Umstellungsprozess ermittelt
wird) oder zur gleichen Zeit wie die Daten auf das Zieldateisystem
geschrieben werden (Umstellen-im-Fluge,
so wie es nachfolgend mit Bezug auf 5 beschrieben
wird und so, dass die zweite Speicherblockanordnung während des
Prozesses des Umstellens-im-Fluge
definiert wird).
-
Die „Aktualisiere
BN-Zeiger"-Prozedur 207 der 2A kann
als ein separater Schritt durchgeführt werden, nachdem die Speicherblöcke auf
das Zieldateisystem geschrieben wurden. Alternativ kann die „Aktualisiere
BN-Zeiger"-Prozedur 207 in
die „Schreibe
Bildstrom"-Prozedur 205 integriert
werden, so dass die BN-Zeiger
umgestellt werden, wenn die Speicherblöcke auf das Zieldateisystem
geschrieben werden.
-
In
einer bevorzugten Ausführungsform
bietet die erste Blockliste Informationen darüber, wie der Bildstrom organisiert
ist. In einer weiteren bevorzugten Ausführungsform ist der Bildstrom
gemäß eines normalisierten
Formats (oder einer Abbildung) organisiert, das zwischen der „Erzeuge
Bildstrom"-Prozedur 203,
der „Schreibe
Bildstrom"-Prozedur 205 und der „Aktualisiere
BN-Zeiger"-Prozedur 207 erkannt wird. 3A, 3B und 3C illustrieren
jeweils verschiedene beispielhafte Abbildungsprozesse (ohne Einschränkung),
die durch die „Erzeuge
Bildstrom"-Prozedur 203 und
die „Schreibe
Bildstrom"-Prozedur
205 verwendet werden können.
-
2B illustriert
einen Umstellprozess, der durch das generelle Bezugszeichen 250 bezeichnet ist,
zum Abbilden eines alten BN-Zeigers von dem Quellendateisystem auf
einen neuen BN-Zeiger in dem Zieldateisystem. Der Umstellprozess 250 beginnt
an einem „Start"-Punkt 251 und
setzt sich zu einer „Schlage
neuen BN-Zeiger nach"-Prozedur 253 fort,
die den alten BN-Zeiger und die zweite Blockliste verwendet, um
den Wert des neuen BN-Zeigers für das
Zieldateisystem zurückzugewinnen.
Eine „Ersetze
alten BN-Zeiger"-Prozedur 255 ersetzt
den alten BN-Zeiger mit dem neuen BN-Zeiger. Ein Fachmann wird erkennen,
dass die zweite Blockliste für
diesen Prozess nicht vollständig
sein muss. Stattdessen kann die zweite Blockliste im Fluge aufgebaut
werden, wenn die Speicherblöcke
in dem Zieldateisystem gespeichert werden. Der Umstellprozess 250 schließt durch
einen „Ende"-Punkt 257 ab. Der
Umstellprozess 250 wird von den nachfolgend beschriebenen
Prozessen verwendet, die in 5, 6 und 7 gezeigt
sind.
-
Der
Bildstrom enthält
explizite oder implizite Informationen, die die Speicherblöcke von
dem Quellendateisystem auf die Daten in dem Bildstrom abbilden.
Somit ist der Bildstrom gemäß einem
spezifizierten Format aufgebaut.
-
Blocktyp-Bits
in der Blockabbildungsdatei können
verwendet werden, um zu ermitteln, welche Speicherblöcke BN-Zeiger
enthalten und welche Speicherblöcke
nicht. Die BN-Zeiger können
verwendet werden, um die erste Speicherblockanordnung zu ermitteln – das heißt, um zu
ermitteln, welche Speicherblöcke
auf der ersten Plattenspeichereinheit 113 in den Bildstrom
einzuschließen
sind. Für
Dateisysteme, die Blocktyp-Bits nicht verwenden, können die
die BN-Zeiger enthaltenden Speicherblöcke zusätzlich durch Untersuchen der
Metadaten des Dateisystems ermittelt werden. Ein Fachmann wird erkennen,
dass Blocktyp-Bits für
die Erfindung nur eine Möglichkeit
bereitstellen, zu ermitteln, wofür
die Speicherblöcke
in dem Quellendateisystem verwendet werden. Die Blocktyp-Bits oder
andere Informationen die repräsentieren,
welche Speicherblöcke BN-Zeiger
enthalten, können
in dem Bildstrom enthalten sein.
-
3A illustriert
einen ersten Blocklistenerzeugungsprozess, der mit dem generellen
Bezugszeichen 300 bezeichnet ist. Der erste Blocklistenerzeugungsprozess 300 beginnt
an einem „Start"-Punkt 301 und
fährt zu
einer „Ermittle
erste Blockliste"-Prozedur 303 fort.
Die „Ermittle
erste Blockliste"-Prozedur 303 scannt
das Quellendateisystem, um die erste Blockliste unter Verwendung bekannter
Techniken zu ermitteln. Eine „Ermittle zweite
Blockliste"-Prozedur 305 ermittelt
die zweite Speicherblockanordnung basierend auf bekannten Charakteristika
des Zieldateisystems. Eine „Speichere
Blocklisten mit Daten"-Prozedur 307 kombiniert sowohl
die erste Blockliste als auch die zweite Blockliste mit den Daten,
um den Bildsstrom zu erzeugen. Der erste Blocklistenerzeugungsprozess 300 schließt mit einem „Ende"-Punkt 309 ab.
Somit braucht der Computer, der den Bildstrom auf das Zieldateisystem
schreibt, die zweite Blockliste nicht zu erzeugen, weil der Computer,
der den Bildstrom erzeugt, dies bereits getan hat.
-
3B illustriert
einen Blocklistenerzeugungsprozess, der mit dem generellen Bezugszeichen 320 bezeichnet
ist, der an einem „Start"-Punkt 321 beginnt
und sich mit der „Ermittle
erste Blockliste"-Prozedur 303 (bereits
oben beschrieben) fortsetzt. Sobald die erste Blockliste für das Quellendateisystem
ermittelt ist, fährt
der Blocklistenerzeugungsprozess 320 mit einer „Speichere
erste Blockliste mit Daten"-Prozedur 325 fort.
Die „Speichere erste
Blockliste mit Daten"-Prozedur 325 umfasst
die erste Blockliste mit dem Bildstrom. Im Gegensatz zu dem ersten
Blocklistenerzeugungsprozess 300 umfasst der Bildstrom
jedoch nicht die zweite Blockliste für das Zieldateisystem. Nachdem
der Bildstrom erzeugt wurde, fährt
der Blocklistenerzeugungsprozess 320 mit einer „Erzeuge
zweite Blockliste"-Prozedur 327 fort.
Die „Erzeuge
zweite Blockliste"-Prozedur 327 kann
durch den Computer durchgeführt
werden, der den Bildstrom auf das Zieldateisystem schreibt. Dieser
Computer verwendet Information über
das Zieldateisystem und die erste Blockliste, um die zweite Blockliste
zu erzeugen. Der Blocklistenerzeugungsprozess 320 schließt mit einem „Ende"-Punkt 329 ab.
Ein Fachmann wird erkennen, dass die „Erzeuge zweite Blockliste"-Prozedur 327 die
zweite Blockliste vor, nachdem oder konkurrierend mit dem Speichern
des Bildstroms auf dem Zieldateisystem erzeugt werden kann.
-
3C illustriert
einen dritten Blocklistenerzeugungsprozess, der mit dem generellen
Bezugszeichen 350 bezeichnet ist, der nicht die erste Blockliste
mit dem Bildstrom umfasst. Stattdessen wird der Bildstrom gemäß einer
Normalform-Blockliste
erzeugt, die sowohl dem Computer, der den Bildstrom aus dem Quellendateisystem
erzeugt, als auch dem Computer, der den Bildstrom empfängt, der
die in dem Bildstrom enthaltenen Daten auf das Zieldateisystem schreibt,
bekannt ist. Diese Normalform-Blockliste kann mit dem Vorwissen
der Zielgeometrie erzeugt werden oder kann eine Blockliste sein, die
für die
meisten Geometrien gut genug ist. Die Normalform kann degenerierte
Blocklisten umfassen (zum Beispiel, jedoch ohne Einschränkung, Blocklisten,
die spezifizieren, dass eine spezielle Anzahl von Speicherblöcken von
einer ersten Platte, dann von einer zweiten Platte, etc. gelesen
wurden und die Abfolge wiederholt wird, bis alle Speicherblöcke gelesen
sind).
-
Der
dritte Blocklistenerzeugungsprozess 350 beginnt an einem „Start"-Punkt 351 und
setzt sich mit der „Ermittle
erste Blockliste"-Prozedur 303 fort.
Als nächstes
verwendet eine „Speichere
Daten in Normalform"-Prozedur 355 die
erste Blockliste, um den Bildstrom gemäß einem normalisierten Format
(implizit und/oder gegenseitig verständlich) zu erzeugen. Der Computer,
der die Daten auf das Zieldateisystem schreibt, empfängt den
Bildstrom mit der angenommenen Normalform-Blockliste und erzeugt
die zweite Speicherblockanordnung für das Zieldateisystem bei der „Erzeuge
zweite Blockliste"-Prozedur 327 (bereits
oben beschrieben). Der dritte Blocklistenerzeugungsprozess 350 wird
mit einem „Ende"-Punkt 359 beendet.
-
Jeder
der von den oben beschriebenen Prozessen erzeugten Bildströme kann
unter Verwendung eines Zwischenspeichers gespeichert werden, wie
zum Beispiel (ohne Einschränkung)
einer Anordnung von Magnetmedien. Jeder der Bildströme kann von
einem Computer zu einem anderen unter Verwendung eines Kommunikationsmechanismus
gesendet werden, wie zum Beispiel (ohne Einschränkung) eines Lokalbereichsnetzwerks
(local area network) oder des Internets.
-
Die „Erzeuge
zweite Blockliste"-Prozedur 327 kann
durch den Quellencomputer oder den Zielcomputer durchgeführt werden.
Falls sie von dem Quellencomputer durchgeführt wird, muss der Quellencomputer
die Charakteristik des Zieldateisystems kennen.
-
Die
Bildstromformate, die aus den Prozessen, die in 3A, 3B und 3C resultieren, sind
in 4A, 4B und 4C gezeigt. 4A illustriert
ein erstes Bildstromformat, das mit dem generellen Bezugszeichen 400 bezeichnet
ist, das aus dem ersten Blocklistenerzeugungsprozess 300 der 3A resultiert.
Das erste Bildstromformat 400 umfasst einen Datenabschnitt 403,
einen ersten Blocklistenabschnitt 405 und einen zweiten
Blocklistenabschnitt 407. Der Datenabschnitt 403 enthält die Daten gemäß der ersten
Blockliste (gespeichert in dem ersten Blocklistenabschnitt 405).
Der zweite Blocklistenabschnitt 407 enthält die zweite
Blockliste, die durch die „Ermittle
zweite Blockliste"-Prozedur 305 der 3A erzeugt
wird.
-
4B illustriert
ein zweites Bildstromformat, das mit dem generellen Bezugszeichen 450 bezeichnet
ist, das aus dem Blocklistenerzeugungsprozess 320 der 3B resultiert.
In diesem Fall umfasst das zweite Bildstromformat 450 den
ersten Blocklistenabschnitt 405 und den Datenabschnitt 403,
lässt jedoch
den zweiten Blocklistenabschnitt 407 fort.
-
4C illustriert
ein drittes Bildstromformat, das mit dem generellen Bezugszeichen 460 bezeichnet
ist, das aus dem dritten Blocklistenerzeugungsprozess 350 der 3C resultiert.
In diesem Fall enthält
das dritte Bildstromformat 460 nicht die erste Blockliste
oder die zweite Blockliste, sondern enthält den Datenabschnitt 403,
der gemäß eines
normalisierten Formats, das durch eine angenommene Normalform-Blockliste
definiert wird, gespeichert wird.
-
Ein
Vorteil des normalisierten Formats ist, dass seine Verwendung die
Quellendateisystemgeometrie vor dem Zielcomputer versteckt.
-
In
einer bevorzugten Ausführungsform
enthält
der Bildstrom Informationen, die identifizieren, welches der Bildstromformate
verwendet wird. Diese Informationen können in dem Kopfabschnitt (nicht dargestellt)
des Bildstroms untergebracht werden.
-
Der
Bildstrom wurde (zur Einfachheit) mit separaten Daten- und Blocklistenabschnitten
beschrieben. Jedoch kann der Bildstrom alternierende Blocklisten-
und Datenabschnitte haben.
-
Ein
Fachmann wird erkennen, dass die erste Blockliste und die zweite
Blockliste kombiniert werden können,
um eine Abbildung zwischen den Speicherblöcken in dem Quellendateisystem
und den Speicherblöcken
in dem Zieldateisystem zu bilden. Ein Fachmann wird ebenso erkennen,
dass dies äquivalent
zu der vorher beschriebenen Ausführungsform
ist, wo die erste Blockliste beschreibt, wo Speicherblöcke in dem
Quellendateisystem gespeichert sind, und die zweite Blockliste beschreibt,
wo die Speicherblöcke
auf dem Zieldateisystem gespeichert sind. Beide diese Ansätze (und
andere äquivalente
Ansätze)
bieten genügend
Informationen für
die Erfindung, um die Speicherblöcke
auf dem Zieldateisystem umzustellen.
-
5 illustriert
einen Umstellprozess-im-Fluge, der mit dem generellen Bezugszeichen 500 bezeichnet
ist, der eine „Umstellung-im-Fluge" implementiert. Bei
einer Umstellung-im-Fluge werden die BN-Zeiger umgestellt, während der
Bildstrom auf das Zieldateisystem geschrieben wird. Dieser Typ des
Umstellens aktualisiert die BN-Zeiger wenn die Speicherblöcke auf
das Zieldateisystem geschrieben werden, anstelle eines Durchführens der
BN-Zeigeraktualisierung nachdem alle Speicherblöcke geschrieben sind. Somit
wird jeder Block nur einmal geschrieben und oft können Speicherblöcke angeordnet
werden, um in vollständigen
RAID-Streifen geschrieben zu werden. Der Prozess 500 des
Umstellns-im-Fluge
beginnt an einem „Start"-Punkt 501 und
fährt mit
einer „Iteriere
jeden Block"-Prozedur 503 fort.
Die „Iteriere
jeden Block"-Prozedur 503 liest
und speichert zunächst jede
bereitgestellte Information, die verwendet werden kann, um die Speicherblöcke zwischen
den Dateisystemen abzubilden (wie zum Beispiel den ersten Blocklistenabschnitt 405 und
den zweiten Blocklistenabschnitt 407) und liest dann jeden
Block von dem Bildstrom. Wenn alle Speicherblöcke von dem Bildstrom gelesen
sind, wird der Prozess 500 des Umstellens-im-Fluge durch
einen „Ende"-Punkt 505 beendet.
Eine „BN-Block"-Entscheidungsprozedur 507 prüft jeden
Speicherblock gegenüber
der Blockinformation in der ersten Blockliste (oder Äquivalenten),
um zu ermitteln, ob der Speicherblock einen BN- Zeiger enthält. Falls der Speicherblock
keinen BN-Zeiger enthält,
setzt sich der Prozess 500 des Umstellens-im-Fluge mit
einer „Schreibe Block"-Prozedur 509 fort,
die den Block auf das Zieldateisystem schreibt und der Prozess setzt
sich mit der „Iteriere
jeden Block"-Prozedur 503 fort,
um weitere Speicherblöcke
zu verarbeiten oder beendet zu werden.
-
Falls
bei der „BN-Block"-Entscheidungsprozedur 507 der
Speicherblock jedoch mit einem BN-Zeiger ermittelt wird, fährt der
Prozess 500 des Umstellens-im-Fluge mit einer „Iteriere BN-Zeiger"-Prozedur 511 fort,
die jeden BN-Zeiger in dem Block iteriert. Nachdem alle BN-Zeiger
in dem Block iteriert wurden, setzt sich der Prozess mit einer „Protokolliere
Block ID"-Prozedur 513 fort,
die die Blocknummer des modifizierten Blocks in einem Protokoll speichert
(der tatsächlich
umgestellte Block kann gespeichert werden). Als nächstes fährt der
Prozess 500 des Umstellens-im-Fluge mit der „Schreibe Block"-Prozedur 509 fort,
um den Block zu speichern und um die Verarbeitung wie bereits beschrieben
fortzusetzen. Der protokollierte Block wird verwendet, falls der
Umstellprozess neu gestartet werden muss, so wie es nachfolgend
mit Bezug auf 8 beschrieben wird.
-
Sobald
der umgestellte Block auf die Platte durch die „Schreibe Block"-Prozedur 509 geschrieben
ist und falls der umgestellte Block durch die „Protokolliere Block ID"-Prozedur 513 protokolliert
wurde, kann der umgestellte Block aus dem Protokoll entfernt oder
anderenfalls modifiziert werden, um zu zeigen, dass der korrespondierende
Block vollständig auf
der Zielvorrichtung ist, während
noch genug Information erhalten bleibt, um anzugeben, welcher Block der
als letztes umgestellte Block war. Ein Fachmann wird erkennen, dass
beim Umstellen-im-Fluge
nur die Blocknummern der umgestellten Speicherblöcke protokolliert werden müssen, da
bei einem Neustart die originalen nicht umgestellten Speicherblöcke von dem
Quellendateisystem beschafft werden. Somit ist ein Protokollie ren,
welcher Block der letzte erfolgreich umgestellte Block war, ausreichend
zum Neustarten der Umstellung-im-Fluge.
-
Der
iterierte BN-Zeiger wird durch eine „Stelle BN-Zeigerum"-Prozedur 515 verarbeitet,
die den Umstellprozess 250 aktiviert, der oben mit Bezug
auf 2B beschrieben wurde. Der Prozess 500 des Umstellens-im-Fluge
fährt mit
der „Iteriere
BN-Zeiger"-Prozedur 511 fort,
um zusätzliche
BN-Zeiger in dem Block zu iterieren, oder um, wie oben beschrieben,
beendet zu werden. Ein Fachmann wird erkennen, dass die zweite Blockliste
für den
Prozess nicht vollständig
aufgebaut werden muss. Stattdessen kann die zweite Blockliste im
Fluge aufgebaut werden, wenn die Speicherblöcke in dem Zieldateisystem
gespeichert werden.
-
Ein
Umstellen-im-Fluge kann auch mit der normalisierten Form des Bildstroms
verwendet werden, weil die normalisierte Form deterministisch ist. Ein
Umstellen-im-Fluge kann nicht verwendet werden, wenn die Abbildung
zwischen der ersten Speicherblockanordnung und der zweiten Speicherblockanordnung
dynamisch ermittelt wird.
-
6 illustriert
einen späten
Umstellprozess, der mit dem generellen Bezugszeichen 600 bezeichnet
ist, zum Durchführen
eines späten
Umstellens. Beim späten
Umstellen werden die BN-Zeiger umgestellt, nachdem der Bildstrom
auf das Zieldateisystem geschrieben wurde. Der späte Umstellprozess 600 wird
durch die „Schreibe
Bildstrom"-Prozedur 205 und
die „Aktualisiere
BN-Zeiger"-Prozedur 207 der 2A repräsentiert.
Der späte
Umstellprozess 600 beginnt an einem „Start"-Punkt 601 und fährt mit
einer „Kopiere
Bilddaten"-Prozedur 603 fort. Die „Kopiere
Bilddaten"-Prozedur 603 liest
und speichert jede Abbildungsinformation, die von dem Bildstromformat
benötigt
wird (wie zum Beispiel der erste Blocklistenabschnitt 405 und
der zweite Blocklistenabschnitt 407) und schreibt dann
die Daten in dem Datenabschnitt 403 des Bildstroms auf
das Zieldateisystem gemäß der zweiten
Blockliste. Sobald die Daten in dem Datenab schnitt 403 auf
das Zieldateisystem geschrieben sind, fährt der späte Umstellprozess 600 mit
einer „Iteriere
BN-Blöcke"-Prozedur 605 fort, die
jeden Block auf dem Zieldateisystem iteriert, der einen BN-Zeiger
von dem Quellendateisystem enthält.
Diese Speicherblöcke
werden zum Beispiel identifiziert durch die Verwendung der ersten
Blockliste (durch die Normalform-Blockliste oder, im Falle des späten Umstellens,
durch die Blockabbildungsdatei des Ziels oder die Metadaten des
Zieldateisystems). Wenn alle der BN-Speicherblöcke iteriert wurden, wird der
späte Umstellprozess 600 mit
einem „Ende"-Punkt 607 beendet.
-
Da
jeder BN-Block durch die „Iteriere BN-Blöcke"-Prozedur 605 iteriert
wird, wird auf den Block durch eine „Lese Block"-Prozedur 609 zugegriffen,
die den Datenblock in den Speicher bringt. Sobald der Datenblock
gelesen ist, verwendet eine „Iteriere
BN-Zeiger"-Prozedur 611 die
Information von der ersten Blockliste (oder der Normalform-Blockliste),
um die BN-Zeiger in dem Block anzuordnen und zu iterieren. Für jeden
BN-Zeiger verwendet eine „Stelle
Zeigerum"-Prozedur 613 die zweite
Blockliste, um zu ermitteln, wo der Block, auf den von dem BN-Zeiger
verwiesen wird, in dem Zieldateisystem abgelegt wurde (somit Ermitteln
der BN für
das Zieldateisystem). Diese neue BN wird verwendet, um die BN in
dem Speicherblock im Speicher zu aktualisieren. Die „Stelle
Zeiger um"-Prozedur 613 wurde
mit Bezug auf 2B bereits beschrieben. Sobald
alle der BN-Zeiger in dem Block umgestellt sind, fährt der
späte Umstellprozess 600 mit
einer „Protokolliere
Block"-Prozedur 615 fort,
die Information speichert, die angibt, dass der Block umgestellt
wurde. Als nächstes
schreibt eine „Schreibe Block"-Prozedur 617 den
Block zurück
auf das Zieldateisystem und der späte Umstellprozess 600 fährt bei
der „Iteriere
BN-Blöcke"-Prozedur 605 fort.
Sobald der Block erfolgreich gespeichert wurde, kann der Block,
der durch die „Protokolliere
Block"-Prozedur 615 protokolliert
wurde, aus dem Protokoll entfernt werden.
-
Ein
Fachmann wird erkennen, dass es viele Äquivalente zu der obigen Abfolge
von Operationen gibt, die in umgestellten BN-Speicherblöcken resultieren.
-
Ein
Band-Umstellen ist eine Form des späten Umstellens, die die BNs
abbildet, um eine RAID-Leistung zu optimieren, sowohl wenn Speicherblöcke zunächst auf
das RAID-Dateisystem geschrieben werden als auch während des
Umstellens der BN-Speicherblöcke.
Ein Band-Umstellen erzeugt alternierende Bänder von RAID-Streifen. Eine
Menge von Bändern
enthält
Daten, die nicht umgestellt werden müssen (Speicherblöcke), die
andere Menge von Bändern
enthält
Daten, die umgestellt werden müssen
(zum Beispiel Inodes und indirekte Blöcke). Somit werden die Streifen,
die Speicherblöcke
enthalten, die umgestellt werden müssen, gelesen, umgestellt und
zurück
auf den Streifen geschrieben. Ein Band-Umstellen wird verwendet, um eine Leistung
zu verbessern, wenn ein Umstellen nicht vollständig im Fluge durchgeführt werden
kann. Eine Band-Umstellung wird verwendet, wenn die Abbildung dynamisch ermittelt
werden muss und nicht bekannt sein kann, bis der Bildstrom vollständig verarbeitet
ist (zum Beispiel wenn die Abbildungsinformation zu groß ist, um sie
im Speicher zu halten). Somit werden vielfache Durchgänge benötigt, um
den Umstellprozess zu beenden. Durch Schreiben von BN-Speicherblöcken auf
RAID-Streifen, die keine Datenblöcke
enthalten, können
nachfolgende Durchgänge
die BN-Speicherblöcke
effizient lesen.
-
7 illustriert
einen Band-Umstellprozess, der mit dem generellen Bezugszeichen 700 bezeichnet
ist, der verwendet wird, um Blöcke
in Bandmengen zu unterteilen. Der Band-Umstellprozess 700 beginnt
an einem „Start"-Punkt 701 und
fährt mit
einer „Iteriere
Speicherblöcke"-Prozedur 703 fort.
Die „Iteriere
Speicherblöcke"-Prozedur 703 liest
jeden Speicherblock in dem Bildstrom. Eine „BN-Block"-Entscheidungsprozedur 705 untersucht jeden
Speicherblock und verwendet die erste Blockliste (oder die Normalform-Blockliste),
um zu ermitteln, ob der Block BN-Zeiger enthält. Falls der Block einen BN-Zeiger
enthält,
fährt der
Band- Umstellprozess 700 mit
einer „Schreibe
Block in BN-Streifen"-Prozedur 707 fort,
die den Block auf einen RAID-Streifen schreibt, der zu einer ersten
Menge von Streifenbänden
gehört
(reserviert für
BN-Blöcke).
Falls jedoch der Block keinen BN-Zeiger enthält, fährt der Band-Umstellprozess 700 mit
einer „Schreibe
Daten in nicht-BN-Streifen"-Prozedur 709 fort,
die den Speicherblock in eine zweite Menge von Streifenbänden schreibt,
die keine Speicherblöcke enthalten,
die BN-Zeiger enthalten.
Nachdem alle Speicherblöcke
in dem Bildstrom durch die „Iteriere Speicherblöcke"-Prozedur 703 iteriert
wurden, fährt der
Band-Umstellprozess 700 mit
einer „Iteriere
jeden BN-Streifen"-Prozedur 711 fort,
die jedes der ersten Menge von Streifenbänden liest. Wenn alle der ersten
Menge der Streifenbänder
iteriert sind, wird der Band-Umstellprozess 700 mit einem „Ende"-Punkt 713 beendet.
-
Wenn
jedes der ersten Menge von Streifenbänden iteriert ist, verwendet
eine „Iteriere
jeden BN-Zeiger"-Prozedur 715 die
erste Blockliste, um jeden BN-Zeiger in dem Streifen zu iterieren.
Jeder Zeiger wird durch eine „Stelle
BN-Zeiger um"-Prozedur 717 umgestellt
(wie sie bereits oben in Bezug auf 2B beschrieben
wurde) und zusätzlich
wird der Index in den BN im NVRAM protokolliert, um einen möglichen
Neustart zu unterstützen.
Wenn alle BN-Zeiger in dem Streifen umgestellt sind, fährt der Band-Umstellprozess 700 mit
einer „Protokolliere BN-Zeiger-Streifenband"-Prozedur 718 fort,
um die Speicherblöcke
zu protokollieren, die umgestellte BN-Zeiger haben. Als nächstes fährt der
Band-Umstellprozess 700 mit einer „Schreibe BN-Streifen"-Prozedur 719 fort,
die den Streifen mit den Speicherblöcken überschreibt, die die neuen
BN-Zeiger für
das Zieldateisystem haben. Der Band-Umstellprozess 700 fährt mit
einer „Iteriere
jeden BN-Streifen"-Prozedur 711 fort,
um andere Streifen zu iterieren oder um beendet zu werden.
-
Die
protokollierten Speicherblöcke
werden verwendet, falls der Umstellprozess neu gestartet werden
muss, so wie es nachfolgend mit Bezug auf 8 be schrieben
wird. Zusätzlich
bezeichnet der protokollierte BN-Index, welche BN die als letztes umgestellte
war. Sobald das Zeigerstreifenband erfolgreich auf das Zieldateisystem
geschrieben wurde, kann das protokollierte Zeigerstreifenband aus
dem Protokoll entfernt oder anderenfalls als ungültig markiert werden, während genug
Information für
einen Neustart vorhanden ist.
-
Falls
der Umstellprozess beendet ist, bevor alle die Speicherblöcke, die
BNs enthalten aktualisiert sind, werden einige der BNs umgestellt
sein und andere werden nicht umgestellt sein. Somit ist das Zieldateisystem
in einem inkonsistenten Zustand. Ein Problem beim Neustart des späten Umstellprozesses ist,
dass die BN-Zeiger nur einmal neu abgebildet werden dürfen. Ein
Ansatz ist es, den Speicherblock, der eine umgestellte BN enthält, im nicht-flüchtigen RAM
zu protokollieren, bis dieser Block nachprüfbar auf das Dateisystem geschrieben
wurde (einige Ausführungsformen
(zum Beispiel Bandverschieben) können
auch ein Speichern eines Index erfordern, der angibt, welche BNs
in dem Block umgestellt wurden). Ein anderer Ansatz (der mit dem
Band-Umstellprozess 700 verwendet werden kann) ist es,
Bandverschieben zu verwenden. Ein Bandverschieben liest Speicherblöcke von
einem Zeigerstreifenband (ein Umstellband) und schreibt das umgestellte
Zeigerstreifenband auf ein anderes Streifenband. Somit werden die
Daten in dem originalen Zeigerstreifenband nicht modifiziert. Ein
Bandverschieben wird durch initiales Reservieren eines leeren Umstellbands
durchgeführt.
Daten von dem ersten Umstellband, die BN-Daten enthalten, werden
in das leere Umstellband umgestellt, wobei die Daten in dem ersten
Umstellband verbleiben. Daten aus dem zweiten Umstellband werden
dann in das erste Umstellband umgestellt und der Prozess fährt fort,
bis alle Umstellbänder
umgestellt sind und ein leeres Umstellband verbleibt. Eine Ausführungsform
lässt Band
0 initial leer, speichert BN-Speicherblöcke in Band 1 bis N und schreibt
Datenblöcke
in Bänder
größer als
N. Während
des Umstellens werden die BN-Speicherblöcke von Band 1 gelesen, umgestellt
und auf Band 0 geschrieben. BN-Speicherblöcke des Bands 2 werden gelesen,
umgestellt und auf Band 1 geschrieben. Dieser Prozess fährt fort, bis
BN-Speicherblöcke
von Band N gelesen, umgestellt und auf Band N-1 geschrieben sind.
-
Ein
Neustart des Umstellens-im-Fluge besteht aus einem Lokalisieren
des Neustartpunkts in dem Bildstrom. In diesem Fall können die
Speicherblöcke
zweimal verarbeitet werden, weil genau die gleiche Abbildung auf
der zweiten Verarbeitung des Bildstroms auftritt. Somit wird das
Protokoll verwendet, um einen Startpunkt zum Wiederaufnehmen des Umstellprozesses
und zum Fortsetzen des Umstellprozesses von diesem Punkt zu lokalisieren.
-
Beim
späten
Umstellen und beim Band-Umstellen kann ein Block nur einmal aktualisiert
werden. Bei diesen Prozessen wird Information in dem NVRAM gespeichert,
so dass eine Umstellung korrekt neu gestartet werden kann.
-
8 illustriert
einen Umstellneustartprozess, der mit dem generellen Bezugszeichen 800 bezeichnet
ist, der verwendet wird, um einen unterbrochenen Umstellprozess
neu zu starten (wie zum Beispiel den späten Umstellprozess 600,
den Prozess 500 des Umstellens-im-Fluge und den Band-Umstellprozesses 700).
Der Umstellneustartprozess 800 wird aktiviert, nachdem
ein Umstellprozess unterbrochen wurde. Der Umstellneustartprozess 800 untersucht
die Umstellprotokolldaten, um zu ermitteln, welche BNs umgestellt
wurden, um ein Umstellen von nicht umgestellten BNs vorzuführen. Der
Umstellneustartprozess 800 beginnt an einem „Start"-Punkt 801 und
setzt sich mit einer „Lese
Aktualisierungsprotokoll"-Prozedur 803 fort.
Die „Lese
Aktualisierungsprotokoll"-Prozedur 803 liest
das Protokoll von einem NV-RAM oder sammelt Information von den
Umstellbändern.
Eine „Lokalisiere
nicht-umgestellte BN"-Prozedur 805 lokalisiert
die erste nicht umgestellten BN. Falls das Protokoll im NV-RAM gespeichert
ist, ist die erste nicht umgestellte BN die erste BN in dem ersten
Speicherblock, der eine BN nach dem letzten protokollierten Speicherblock
enthält.
Zum Umstellen unter Verwendung eines Band-Verschiebens wird der
erste nicht umgestellte BN durch Lokalisieren der beiden Bänder ermittelt, die
Kopien des gleichen Speicherblocks enthalten – das erste dieser Bänder enthält umgestellte
Daten und das zweite dieser Bänder
enthält
die nicht umgestellten Daten, die überschrieben werden können. Das
nachfolgende Umstellband wird dann in das zweite dieser Bänder umgestellt.
Somit überspringt der
Umstellneustartprozess 800 die protokollierten Speicherblöcke. Eine „Stelle
nicht umgestellte BN-Zeiger um"-Prozedur 807 fährt dann
fort, die nicht umgestellten BNs umzustellen. Der Umstellneustartprozess 800 wird
durch einen „Ende"-Punkt 809 beendet.
-
Bei
einer bevorzugten Ausführungsform
sind das Quellendateisystem und das Zieldateisystem RAID-Vorrichtungen
mit verschiedenen Charakteristika. Die Erfindung kann Lese- und
Schreiboperationen auf diese Vorrichtungen durch Umstellen von „Klumpen" anstelle von einzelnen
Speicherblöcken optimieren.
Dies optimiert das Schreiben von Daten in das Zieldateisystem. Die
Verwendung von Klumpen reduziert auch die Größe der ersten Blockliste und
der zweiten Blockliste. Ein Klumpen ist eine Ansammlung von Speicherblöcken. Eine
Art, Klumpen zu definieren, ist unter Verwendung der höherrangigen
Bits einer BN. Jedoch können
andere Definitionen verwendet werden. Anstelle eines Abbildens von Speicherblöcken von
dem Quellendateisystem auf das Zieldateisystem, bildet ein Klumpen-Umstellen „Datenklumpen" von einem Dateisystem
auf ein anderes ab. Oft wird das Quellendateisystem so organisiert,
dass Speicherblöcke
sequentiell (Gegenstand einer möglichen
Verschränkung)
auf jeder Platte laufen. Somit würde
eine erste Platte Speicherblöcke
1 bis n enthalten, während
eine zweite Platte Speicherblöcke
n + 1 – 2·n enthält usw.
Ein Fünf-Platten-RAID (das
tatsächliche
RAID würde
zumeist zusätzliche Platten
für Paritäts- und
Fehlerkorrekturinformation haben), würde effizienter sein, falls
die ersten fünf Speicherblöcke an Daten
von der ersten Platte in einem RAID-Streifen angeordnet würden. Somit
wird das Zieldateisystem mit hoher Effizienz geschrieben, wenn die
Größe der Klumpen
in geeigneter Weise als ein Vielfaches der Größe des RAID-Streifens ausgewählt wird. Ein weiterer Vorteil
von Klumpen ist, dass die Größen des
ersten Blocklistenabschnitts 405 und des zweiten Blocklistenabschnitts 407 reduziert
sind. Klumpen können
auch in einer Klumpen-Normalform verwendet werden, die ähnlich der
Normalform ist, die mit BNs verwendet wird.
-
9A und 9B illustrieren
die Beziehung zwischen einem BN-basierten Bildstrom, der mit dem
generellen Bezugszeichen 900 bezeichnet ist, und einem
Klumpen-basierten Bildstrom, der mit dem generellen Bezugszeichen 950 bezeichnet
ist. Der Hauptpunkt ist, dass ein Klumpen eine Vielzahl von Speicherblöcken enthält.
-
Der
BN-basierte Bildstrom 900 umfasst eine Abfolge von Speicherblöcken, die
durch BNs identifiziert werden. Die Sequenz der Speicherblöcke enthält einen
n-ten Block 901,
einen vorherigen Block 903, einen ersten nachfolgenden
Block 905 und einen zweiten nachfolgenden Block 907.
Eine Klumpengrenze kann zwischen dem n-ten Block 901 und dem
vorherigen Block 903 auftreten und zwischen dem ersten
nachfolgenden Block 905 und dem zweiten nachfolgenden Block 907.
Ein Fachmann wird erkennen, dass ein Klumpen mit der Größe von 128 Speicherblöcken ein
Beispiel ist, und dass größere oder
kleinere Klumpengrößen verwendet
werden können.
Zusätzlich
braucht die Klumpengröße kein Vielfaches
von Zwei zu sein.
-
Der
Klumpen-basierte Bildstrom 950 umfasst einen vorherigen
Klumpen 951, einen Klumpen 953 und einen nachfolgenden
Klumpen 955. Jeder Klumpen wird durch eine Klumpennummer
(GNM) identifiziert und enthält
die gleiche Anzahl von Speicherblöcken (außer möglicherweise der letzte Klumpen).
Die Grenze zwischen dem n-ten Block 901 und dem vorherigen
Block 903 dient als die Grenze zwischen dem vorherigen
Klumpen 951 und dem Klumpen 953. Die Grenze zwischen
dem ersten nachfolgenden Block 905 und dem zweiten nachfolgenden
Block 907 dient als die Grenze zwischen dem Klumpen 953 und
dem nachfolgenden Klumpen 955. Die Anzahl von Speicherblöcken in
dem Klumpen ist vor zugsweise ein Vielfaches der Anzahl der Datenplatten
auf einer RAID-Vorrichtung,
so dass die Daten in einem Klumpen auf einen oder mehrere RAID-Streifen in einer einzelnen
Schreiboperation geschrieben werden können. Somit repräsentiert
bei dem Klumpen-basierten Bildstrom 950 jeder Eintrag in
der ersten Blockliste einen Klumpen mit einer Vielzahl von Speicherblöcken. Für den BN-basierten
Bildstrom 900 repräsentiert
jeder Eintrag in der ersten Blockliste einen oder mehrere der Speicherblöcke.
-
Die
Erfindung kann auch verwendet werden, um ein Dateisystem zu optimieren.
Somit kann die Erfindung, beispielhaft aber nicht einschränkend, verwendet
werden, um ein Bild eines Dateisystems auf einem Zwischenformat
zu speichern, um eine Veränderung
der Dateisystemparameter vorzubereiten (zum Beispiel, durch Hinzufügen einer
zusätzlichen
RAID-Platte zu dem Dateisystem, durch Verändern von Dateisystempartitionen
oder einfach um die Anordnung von Speicherblöcken zu optimieren, die BNs
auf dem Dateisystem enthalten).
-
Anhand
des Vorgenannten wird erkannt werden, dass die Erfindung die folgenden
Vorteile hat (ohne Einschränkung):
- 1) Die Erfindung ermöglicht eine sehr schnelle Bildkopie
eines Dateisystems.
- 2) Die Erfindung ermöglicht,
dass ein Dateisystembild von einem größeren Dateisystem auf ein kleineres
Dateisystem kopiert werden kann.
- 3) Die Erfindung ermöglicht,
dass ein Dateisystembild von einem größeren Dateisystem auf ein Zieldateisystem
kopiert wird, selbst wenn das Zieldateisystem Defekte hat.
- 4) Die Erfindung ermöglicht,
dass ein Dateisystem in Abhängigkeit
von Charakteristika des Zieldateisystems optimiert wird.