DE60025749T2 - Dateisystemabbildübertragung zwischen ungleichen dateisystemen - Google Patents

Dateisystemabbildübertragung zwischen ungleichen dateisystemen Download PDF

Info

Publication number
DE60025749T2
DE60025749T2 DE60025749T DE60025749T DE60025749T2 DE 60025749 T2 DE60025749 T2 DE 60025749T2 DE 60025749 T DE60025749 T DE 60025749T DE 60025749 T DE60025749 T DE 60025749T DE 60025749 T2 DE60025749 T2 DE 60025749T2
Authority
DE
Germany
Prior art keywords
block
file system
memory
image stream
memory blocks
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.)
Expired - Fee Related
Application number
DE60025749T
Other languages
English (en)
Other versions
DE60025749D1 (de
Inventor
Robert Steven Los Altos KLEIMAN
David Portola Valley HITZ
C. Norman Richmond HUTCHINSON
W. Sean Tucson O'MALLEY
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.)
NetApp Inc
Original Assignee
Network Appliance Inc
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 Network Appliance Inc filed Critical Network Appliance Inc
Publication of DE60025749D1 publication Critical patent/DE60025749D1/de
Application granted granted Critical
Publication of DE60025749T2 publication Critical patent/DE60025749T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Description

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

Claims (27)

  1. Computergesteuertes Verfahren zum Übertragen von Daten von einem konsistenten Quellendateisystem zu einem konsistenten Zieldateisystem, wobei das konsistente Quellendateisystem eine erste Speicherblockanordnung und das konsistente Zieldateisystem eine von der ersten Speicherblockanordnung verschiedene zweite Speicherblockanordnung verwendet, wobei jedes Dateisystem imstande ist, die Daten in einem oder mehreren Speicherblöcken zu speichern, wobei das Verfahren die folgenden Schritte umfasst: Schreiben (205) eines Bildstroms von dem konsistenten Quellendateisystem in das konsistente Zieldateisystem gemäß der zweiten Speicherblockanordnung, wobei die Daten einen oder mehrere Blocknummernzeiger umfassen; und Umstellen (swizzling) (207) der Blocknummernzeiger in den Speicherblöcken, so dass die Blocknummernzeiger gemäß der zweiten Speicherblockanordnung in das Zieldateisystem neu abgebildet werden; und wobei das Verfahren dadurch gekennzeichnet ist, dass der Schritt des Umstellens in Reaktion auf wenigstens ein Blocktyp-Bit einer Blockabbildungsdatei erfolgt, wobei das Blocktyp-Bit den Zweck jedes Speicherblocks in dem Dateisystem beschreibt, um zu ermitteln, welcher der Speicherblöcke umgestellt werden soll.
  2. Computergesteuertes Verfahren nach Anspruch 1, wobei jeder der Blocknummernzeiger innerhalb eines Datenträger-Blocknummernraums liegt.
  3. Computergesteuertes Verfahren nach Anspruch 1, desweiteren umfassend das Lesen (203) der Daten aus dem Quellendateisystem gemäß der ersten Speicherblockanordnung, um den Bildstrom zu erzeugen.
  4. Computergesteuertes Verfahren nach Anspruch 3, wobei der Schritt des Lesens desweiteren einen Schritt des Einschließens (303) einer ersten Blockliste (405) in dem Bildstrom umfasst.
  5. Computergesteuertes Verfahren nach Anspruch 3, wobei der Schritt des Lesens desweiteren einen Schritt des Einschließens (305) einer zweiten Blockliste (407) in dem Bildstrom umfasst.
  6. Computergesteuertes Verfahren nach Anspruch 3, wobei der Schritt des Lesens desweiteren ein Erzeugen (355) des Bildstroms gemäß einer Blockliste umfasst, welche sowohl von dem Quellen- als auch von dem Zieldateisystem verstanden wird.
  7. Computergesteuertes Verfahren nach Anspruch 1, wobei der Schritt des Umstellens durchgeführt wird, nachdem der Bildstrom in das Zieldateisystem geschrieben wird.
  8. Computergesteuertes Verfahren nach Anspruch 7, wobei der Schritt des Schreibens des Bildstroms desweiteren die folgenden Schritte umfasst: Schreiben (707) der Speicherblöcke, welche die Blocknummernzähler in einer ersten Menge von Streifenbändern enthalten; und Schreiben (709) der Speicherblöcke, welche die Blocknummernzeiger in einer zweiten Menge von Streifenbändern nicht enthalten.
  9. Computergesteuertes Verfahren nach Anspruch 1, wobei der Schritt des Umstellens desweiteren die folgenden Schritte umfasst: Protokollieren (7, 7) von Information, welche ein Identifizieren des Fortschritts des Schritts des Umstellens betrifft; Beenden des Schritts des Umstellens vor einem Aktualisieren aller Speicherblöcke; und Neustarten (805, 807) des Schritts des Umstellens unter Verwendung der Information, die durch den Schritt des Protokollierens protokolliert wurde.
  10. Computergesteuertes Verfahren nach Anspruch 1, wobei der Schritt des Umstellens durchgeführt wird, während der Bildstrom in das Zieldateisystem geschrieben wird.
  11. Computergesteuertes Verfahren nach Anspruch 1, wobei jeder Eintrag in einer ersten Blockliste wenigstens einen Bereich von Speicherblöcken repräsentiert.
  12. Computergesteuertes Verfahren nach Anspruch 1, wobei jeder Eintrag in einer ersten Blockliste wenigstens einen der Speicherblöcke repräsentiert.
  13. Computergesteuertes Verfahren nach Anspruch 1, wobei das Quellendateisystem und das Zieldateisystem die gleichen Dateisysteme sind.
  14. Vorrichtung mit einer zentralen Verarbeitungseinheit (103) und einem an die zentrale Verarbeitungsvorrichtung angeschlossenen Speicher (105) zum Übertragen von Daten von einem konsistenten Quellendateisystem zu einem konsistenten Zieldateisystem, wobei das konsistente Quellendateisystem eine erste Speicherblockanordnung und das konsistente Zieldateisystem eine von der ersten Speicherblockanordnung verschiedene, zweite Speicherblockanordnung verwendet, wobei jedes Dateisystem imstande ist, die Daten in einem oder mehreren Speicherblöcken zu speichern, wobei die Vorrichtung umfasst: einen Bildstromschreibmechanismus, der eingerichtet ist, einen Bildstrom (400; 450; 460) von dem konsistenten Quellendateisystem in das konsistente Zieldateisystem gemäß der zweiten Speicherblockanordnung zu schreiben, wobei die Daten einen oder mehrere Blocknummernzeiger umfassen; und ein Umstellmechanismus (Swizzle-Mechanismus), der eingerichtet ist, die Blocknummernzeiger in den Speicherblöcken umzustellen, so dass die Blocknummernzeiger gemäß der zweiten Speicherblockanordnung in das Zieldateisystem neu abgebildet werden; und wobei der Umstellmechanismus weiterhin dadurch gekennzeichnet ist, dass er in Reaktion auf wenigstens ein Blocktyp-Bit einer Blockabbildungsdatei erfolgt, wobei das Blocktyp-Bit den Zweck jedes Speicherblocks in dem Dateisystem beschreibt, um zu ermitteln, welcher der Speicherblöcke umgestellt werden soll.
  15. Vorrichtung nach Anspruch 14, wobei jeder Blocknummernzeiger innerhalb eines Datenträger-Blocknummernraums liegt.
  16. Vorrichtung nach Anspruch 14, desweiteren umfassend einen Bildstromerzeugungsmechanismus, der eingerichtet ist, die Daten aus dem Quellendateisystem gemäß der ersten Speicherblockanordnung zu lesen, um den Bildstrom zu erzeugen.
  17. Vorrichtung nach Anspruch 16, wobei der Bildstromerzeugungsmechanismus desweiteren einen Blocklistenerzeugungsmechanismus umfasst, der eingerichtet ist, eine Blockliste (405) zur Verwendung mit dem Bildstrom zu erzeugen.
  18. Vorrichtung nach Anspruch 17, wobei der Bildstromerzeugungsmechanismus die Blockliste innerhalb des Bildstroms umfasst.
  19. Vorrichtung nach Anspruch 17, wobei die Blockliste eine Blockliste ist, die sowohl für das Quellen- als auch für das Zieldateisystem verständlich ist.
  20. Vorrichtung nach Anspruch 14, wobei der Umstellmechanismus betrieben wird, nachdem der Bildstrom durch den Bildstromschreibmechanismus in das Zieldateisystem geschrieben wurde.
  21. Vorrichtung nach Anspruch 20, wobei der Bildstromschreibmechanismus desweiteren umfasst: einen Blocknummernschreibmechanismus, der eingerichtet ist, um die Speicherblöcke, die die Blocknummernzähler enthalten, in eine erste Menge von Streifenbändern zu schreiben; und einen Datenblockschreibmechanismus, der eingerichtet ist, die Speicherblöcke, die nicht die Blocknummernzeiger enthalten, in eine zweite Menge von Streifenbändern zu schreiben.
  22. Vorrichtung nach Anspruch 14, wobei der Umstellmechanismus desweiteren umfasst: einen Protokollmechanismus, der eingerichtet ist, Information zu protokollieren, welche eine Identifizierung des Fortschritts des Umstellmechanismus betrifft; und einen Umstellungsneustartmechanismus, der eingerichtet ist, einen Betrieb des Umstellmechanismus in Reaktion auf den Protokollmechanismus aufzunehmen.
  23. Vorrichtung nach Anspruch 14, wobei der Umstellmechanismus zur gleichen Zeit wie der Bildstromschreibmechanismus betrieben wird.
  24. Vorrichtung nach Anspruch 14, wobei jeder Eintrag in einer ersten Blockliste wenigstens einen Bereich von Speicherblöcken repräsentiert.
  25. Vorrichtung nach Anspruch 14, wobei jeder Eintrag in einer ersten Blockliste wenigstens einen der Speicherblöcke repräsentiert.
  26. Vorrichtung nach Anspruch 14, wobei das Quellendateisystem und das Zieldateisystem die gleichen Dateisysteme sind.
  27. Ein Computerprogramm, umfassend eine Programmcodeeinrichtung, die, wenn sie auf einem Computersystem ausgeführt wird, bewirkt, dass das Computersystem die Schritte nach einem der Ansprüche 1 bis 13 durchführt.
DE60025749T 1999-10-25 2000-10-25 Dateisystemabbildübertragung zwischen ungleichen dateisystemen Expired - Fee Related DE60025749T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/426,409 US6574591B1 (en) 1998-07-31 1999-10-25 File systems image transfer between dissimilar file systems
US426409 1999-10-25
PCT/US2000/029488 WO2001031446A1 (en) 1999-10-25 2000-10-25 File system image transfer between dissimilar file systems

Publications (2)

Publication Number Publication Date
DE60025749D1 DE60025749D1 (de) 2006-04-13
DE60025749T2 true DE60025749T2 (de) 2006-09-14

Family

ID=23690696

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60025749T Expired - Fee Related DE60025749T2 (de) 1999-10-25 2000-10-25 Dateisystemabbildübertragung zwischen ungleichen dateisystemen

Country Status (7)

Country Link
US (2) US6574591B1 (de)
EP (1) EP1230598B1 (de)
JP (1) JP2003513355A (de)
AU (1) AU1232601A (de)
DE (1) DE60025749T2 (de)
HK (1) HK1047489B (de)
WO (1) WO2001031446A1 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174352B2 (en) * 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6279011B1 (en) * 1998-06-19 2001-08-21 Network Appliance, Inc. Backup and restore for heterogeneous file server environment
US6574591B1 (en) * 1998-07-31 2003-06-03 Network Appliance, Inc. File systems image transfer between dissimilar file systems
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6654912B1 (en) 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US7613806B2 (en) * 2001-06-28 2009-11-03 Emc Corporation System and method for managing replication sets of data distributed over one or more computer systems
US7349908B2 (en) * 2002-02-21 2008-03-25 International Business Machines Corporation Method for specifying a dynamic construct in a storage management system
US7143307B1 (en) 2002-03-15 2006-11-28 Network Appliance, Inc. Remote disaster recovery and data migration using virtual appliance migration
US7043485B2 (en) * 2002-03-19 2006-05-09 Network Appliance, Inc. System and method for storage of snapshot metadata in a remote file
US7039663B1 (en) * 2002-04-19 2006-05-02 Network Appliance, Inc. System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot
US7475098B2 (en) * 2002-03-19 2009-01-06 Network Appliance, Inc. System and method for managing a plurality of snapshots
US7010553B2 (en) 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
US6993539B2 (en) 2002-03-19 2006-01-31 Network Appliance, Inc. System and method for determining changes in two snapshots and for transmitting changes to destination snapshot
US6857001B2 (en) 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7155460B2 (en) * 2003-03-18 2006-12-26 Network Appliance, Inc. Write-once-read-many storage system and method for implementing the same
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7590807B2 (en) 2003-11-03 2009-09-15 Netapp, Inc. System and method for record retention date in a write once read many storage system
US7565355B1 (en) * 2003-12-18 2009-07-21 Symantec Corporation Merging file systems during a disk clone operation
US7720801B2 (en) * 2003-12-19 2010-05-18 Netapp, Inc. System and method for supporting asynchronous data replication with very short update intervals
US7478101B1 (en) 2003-12-23 2009-01-13 Networks Appliance, Inc. System-independent data format in a mirrored storage system environment and method for using the same
US7437360B1 (en) 2003-12-23 2008-10-14 Network Appliance, Inc. System and method for communication and synchronization of application-level dependencies and ownership of persistent consistency point images
US7921110B1 (en) 2003-12-23 2011-04-05 Netapp, Inc. System and method for comparing data sets
US7200603B1 (en) * 2004-01-08 2007-04-03 Network Appliance, Inc. In a data storage server, for each subsets which does not contain compressed data after the compression, a predetermined value is stored in the corresponding entry of the corresponding compression group to indicate that corresponding data is compressed
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US8086572B2 (en) 2004-03-30 2011-12-27 International Business Machines Corporation Method, system, and program for restoring data to a file
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US7640274B2 (en) * 2004-07-21 2009-12-29 Tinker Jeffrey L Distributed storage architecture based on block map caching and VFS stackable file system modules
US7194595B1 (en) 2004-09-27 2007-03-20 Network Appliance, Inc. Technique for translating a hybrid virtual volume file system into a pure virtual file system data stream
US7243207B1 (en) 2004-09-27 2007-07-10 Network Appliance, Inc. Technique for translating a pure virtual file system data stream into a hybrid virtual volume
US7730277B1 (en) * 2004-10-25 2010-06-01 Netapp, Inc. System and method for using pvbn placeholders in a flexible volume of a storage system
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
US20080263180A1 (en) * 2007-04-19 2008-10-23 Hurst Mark B Apparatus, system, and method for resilient content acquisition
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
KR101274181B1 (ko) * 2006-02-13 2013-06-14 삼성전자주식회사 플래시 메모리를 관리하는 장치 및 방법
US7478116B2 (en) * 2006-02-17 2009-01-13 Microsoft Corporation Mechanism to exchange primary data stream of a file
US7734951B1 (en) 2006-03-20 2010-06-08 Netapp, Inc. System and method for data protection management in a logical namespace of a storage system environment
US7464238B1 (en) 2006-04-28 2008-12-09 Network Appliance, Inc. System and method for verifying the consistency of mirrored data sets
US7953710B2 (en) * 2006-06-23 2011-05-31 Microsoft Corporation Multi-master database synchronization without loss of convergence
US8868495B2 (en) * 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
US7925749B1 (en) 2007-04-24 2011-04-12 Netapp, Inc. System and method for transparent data replication over migrating virtual servers
US20090006792A1 (en) * 2007-06-28 2009-01-01 Federwisch Michael L System and Method to Identify Changed Data Blocks
US8190760B2 (en) * 2008-01-15 2012-05-29 Echostar Advanced Technologies L.L.C. System and method of managing multiple video players
US9832442B2 (en) * 2008-01-15 2017-11-28 Echostar Technologies Llc System and method of managing multiple video players executing on multiple devices
GB2463329B (en) 2008-09-10 2013-02-20 Echostar Advanced Technologies L L C Set-top box emulation system
US8321401B2 (en) 2008-10-17 2012-11-27 Echostar Advanced Technologies L.L.C. User interface with available multimedia content from multiple multimedia websites
US8285680B2 (en) * 2009-01-08 2012-10-09 International Business Machines Corporation Individual object restore
US9009066B2 (en) * 2009-02-12 2015-04-14 Echostar Technologies L.L.C. Advertisement management for live internet multimedia content
US9626305B1 (en) 2009-03-31 2017-04-18 EMC IP Holding Company LLC Complementary space reduction
US9537705B1 (en) 2009-03-31 2017-01-03 EMC IP Holding Company LLC Global space reduction groups
US8656057B1 (en) * 2009-04-01 2014-02-18 Emc Corporation Opportunistic restore
US8954390B1 (en) * 2009-04-29 2015-02-10 Netapp, Inc. Method and system for replication in storage systems
US10410222B2 (en) * 2009-07-23 2019-09-10 DISH Technologies L.L.C. Messaging service for providing updates for multimedia content of a live event delivered over the internet
US9203816B2 (en) * 2009-09-04 2015-12-01 Echostar Technologies L.L.C. Controlling access to copies of media content by a client device
US9338523B2 (en) * 2009-12-21 2016-05-10 Echostar Technologies L.L.C. Audio splitting with codec-enforced frame sizes
US9510029B2 (en) 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
EP2569710A4 (de) * 2010-05-13 2014-01-22 Hewlett Packard Development Co Migration eines dateisystems
US9578354B2 (en) 2011-04-18 2017-02-21 Verizon Patent And Licensing Inc. Decoupled slicing and encoding of media content
US10223375B2 (en) 2011-09-20 2019-03-05 Netapp, Inc. Handling data extent size asymmetry during logical replication in a storage system
US9396205B1 (en) * 2011-09-20 2016-07-19 Netapp, Inc. Detection and handling of namespace changes in a data replication system
US9609340B2 (en) 2011-12-28 2017-03-28 Verizon Patent And Licensing Inc. Just-in-time (JIT) encoding for streaming media content
US8789090B1 (en) 2012-02-14 2014-07-22 Uplynk, LLC Advertisement insertion into media content for streaming
US9332051B2 (en) 2012-10-11 2016-05-03 Verizon Patent And Licensing Inc. Media manifest file generation for adaptive streaming cost management
WO2017117261A1 (en) 2015-12-29 2017-07-06 Echostar Technologies L.L.C Methods and systems for adaptive content delivery
US10822132B2 (en) 2017-02-10 2020-11-03 R.E.D. Stamp, Inc. High speed stamp applicator

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US49718A (en) * 1865-09-05 Improvement in breech-loading fire-arms
US44807A (en) * 1864-10-25 Improvement in machines for boring wagon-hubs
US3525269A (en) 1968-11-04 1970-08-25 Deere & Co Harvesting machine component drive
US4825354A (en) 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4742450A (en) 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US4878167A (en) 1986-06-30 1989-10-31 International Business Machines Corporation Method for managing reuse of hard log space by mapping log data during state changes and discarding the log data
CA1299757C (en) 1987-08-28 1992-04-28 Brent Cameron Beardsley Device initiated partial system quiescing
DE3854026D1 (de) 1987-09-04 1995-07-27 Digital Equipment Corp Fehlertolerantes Rechnersystem mit Fehler-Eingrenzung.
JP2625866B2 (ja) 1988-04-26 1997-07-02 日本電気株式会社 電子機器筐体の冷却構造
US4937763A (en) 1988-09-06 1990-06-26 E I International, Inc. Method of system state analysis
US5067099A (en) 1988-11-03 1991-11-19 Allied-Signal Inc. Methods and apparatus for monitoring system performance
US4984272A (en) 1988-11-30 1991-01-08 At&T Bell Laboratories Secure file handling in a computer operating system
JPH02165241A (ja) 1988-12-19 1990-06-26 Toshiba Corp ファイルアクセス方式
US5222217A (en) 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
CA1323448C (en) 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
US5113442A (en) 1989-03-06 1992-05-12 Lachman Associates, Inc. Method and apparatus for providing access control in a secure operating system
US5144659A (en) 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
CA2014799A1 (en) * 1989-05-08 1990-11-08 John W. Whisler System and method for reading and writing disks formatted for an operating system foreign to the host computer
US5454099A (en) 1989-07-25 1995-09-26 International Business Machines Corporation CPU implemented method for backing up modified data sets in non-volatile store for recovery in the event of CPU failure
US5163148A (en) 1989-08-11 1992-11-10 Digital Equipment Corporation File backup system for producing a backup copy of a file which may be updated during backup
JPH03122712A (ja) * 1989-10-05 1991-05-24 Nec Corp ファイルのバックアップ方式
US5276867A (en) 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US5321837A (en) 1991-10-11 1994-06-14 International Business Machines Corporation Event handling mechanism having a process and an action association process
JPH05143402A (ja) * 1991-11-25 1993-06-11 Nec Corp フアイル自動アロケーシヨン装置
GB9126779D0 (en) 1991-12-17 1992-02-12 Int Computers Ltd Security mechanism for a computer system
JPH05250241A (ja) * 1992-03-06 1993-09-28 Nippon Telegr & Teleph Corp <Ntt> ファイル装置
US5448718A (en) 1992-04-20 1995-09-05 International Business Machines Corporation Method and system for time zero backup session security
ATE409907T1 (de) * 1993-06-03 2008-10-15 Network Appliance Inc Verfahren und vorrichtung zum beschreiben beliebiger bereiche eines dateisystems
DE69431186T2 (de) 1993-06-03 2003-05-08 Network Appliance Inc Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US5572711A (en) 1993-09-28 1996-11-05 Bull Hn Information Systems Inc. Mechanism for linking together the files of emulated and host system for access by emulated system users
JPH07191899A (ja) * 1993-12-27 1995-07-28 Hitachi Ltd ファイル転送方法、データアクセス方法およびデータ書き込み方法
JP3433842B2 (ja) * 1994-06-27 2003-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション クラスタリング方法及びシステム
EP0713183A3 (de) 1994-11-18 1996-10-02 Microsoft Corp Netzwerkunabhängige Schattendateien
US5617568A (en) 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5689701A (en) 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5696895A (en) 1995-05-19 1997-12-09 Compaq Computer Corporation Fault tolerant multiple network servers
US5675782A (en) 1995-06-06 1997-10-07 Microsoft Corporation Controlling access to objects on multiple operating systems
US5761669A (en) 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US5907672A (en) 1995-10-04 1999-05-25 Stac, Inc. System for backing up computer disk volumes with error remapping of flawed memory addresses
US5737523A (en) 1996-03-04 1998-04-07 Sun Microsystems, Inc. Methods and apparatus for providing dynamic network file system client authentication
US5825877A (en) 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US5915087A (en) 1996-12-12 1999-06-22 Secure Computing Corporation Transparent security proxy for unreliable message exchange protocols
US5873101A (en) 1997-02-10 1999-02-16 Oracle Corporation Database backup/restore and bulk data transfer
US5931935A (en) 1997-04-15 1999-08-03 Microsoft Corporation File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system
US6145121A (en) * 1997-04-17 2000-11-07 University Of Washington Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications
US5876278A (en) 1997-05-29 1999-03-02 Cheng; Henry Cooling device
JPH11134234A (ja) * 1997-08-26 1999-05-21 Reliatec Ltd バックアップ・リストア方法およびその制御装置,並びにバックアップ・リストアプログラムを記録したコンピュータ読み取り可能な記録媒体
US5890959A (en) 1998-03-31 1999-04-06 Digital Equipment Corporation High efficiency blower system with integral backflow preventor
US6279011B1 (en) 1998-06-19 2001-08-21 Network Appliance, Inc. Backup and restore for heterogeneous file server environment
US6574591B1 (en) 1998-07-31 2003-06-03 Network Appliance, Inc. File systems image transfer between dissimilar file systems
US6751635B1 (en) 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot

Also Published As

Publication number Publication date
JP2003513355A (ja) 2003-04-08
AU1232601A (en) 2001-05-08
EP1230598B1 (de) 2006-01-25
US6574591B1 (en) 2003-06-03
US20030217082A1 (en) 2003-11-20
HK1047489A1 (en) 2003-02-21
US7130873B2 (en) 2006-10-31
DE60025749D1 (de) 2006-04-13
EP1230598A1 (de) 2002-08-14
HK1047489B (zh) 2006-04-28
WO2001031446A1 (en) 2001-05-03

Similar Documents

Publication Publication Date Title
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE60129025T2 (de) Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche
DE69920713T2 (de) Datei-system bild-übertragung
DE69938378T2 (de) Kopieren von Daten in Speichersystemen
DE602005001041T2 (de) Speicherauszugssystem
DE69636192T2 (de) Datenmigrationssystem und -verfahren unter verwendung von undichten dateien
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE69636330T2 (de) Verfahren für On-line- und Echzeit-Datenmigration
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE602005002024T2 (de) Fernkopiersystem und Fernkopierverfahren
DE69533058T2 (de) Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE60032531T2 (de) Aufzeichnungsverfahren, Verwaltungsverfahren und Aufzeichnungsgerät
DE112010003788B4 (de) Datenspeicherung
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE60019903T2 (de) Speichersystem
DE112010003794B4 (de) Datenspeicherung unter Verwendung von Bitmaps
DE602005000926T2 (de) Speichersystem und Speicherauszugs-Erstellungsverfahren eines Speichersystems
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE69833815T2 (de) Verbesserter Disk-Log mit verteiltem Schreibsystem
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE112010004573T5 (de) System und verfahren zur optimierten wiedernutzbarmachungsverarbeitung in einem virtuellen bandbibliotheksystem
DE19515661C2 (de) Halbleiter-Plattenvorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee