[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE69425658T2 - Anordnung eines dateisystems zum beschreiben beliebiger bereiche - Google Patents

Anordnung eines dateisystems zum beschreiben beliebiger bereiche

Info

Publication number
DE69425658T2
DE69425658T2 DE69425658T DE69425658T DE69425658T2 DE 69425658 T2 DE69425658 T2 DE 69425658T2 DE 69425658 T DE69425658 T DE 69425658T DE 69425658 T DE69425658 T DE 69425658T DE 69425658 T2 DE69425658 T2 DE 69425658T2
Authority
DE
Germany
Prior art keywords
file
inode
block
file system
disk
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 - Lifetime
Application number
DE69425658T
Other languages
English (en)
Other versions
DE69425658D1 (de
Inventor
David Hitz
James Lau
Michael Malcom
Byron Rakitzis
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22102650&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69425658(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Network Appliance Inc filed Critical Network Appliance Inc
Publication of DE69425658D1 publication Critical patent/DE69425658D1/de
Application granted granted Critical
Publication of DE69425658T2 publication Critical patent/DE69425658T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the 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

Landscapes

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

Description

    HINTERGRUND DER ERFINDUNG 1. GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Gebiet von Verfahren und Vorrichtungen zum Unterhalten eines konsistenten Dateisystems und zum Schaffen von ausschließlich lesbaren Kopien des Dateisystems.
  • 2. EINSCHLÄGIGER STAND DER TECHNIK
  • Sämtliche Dateisysteme müssen auch bei Systemausfall Konsistenz bewahren. Im Stand der Technik wurde zu diesem Zweck eine Reihe unterschiedlicher Konsistenzmethoden eingesetzt.
  • Eine der schwierigsten und zeitraubendsten Anforderungen bei der Verwaltung jedes Dateiservers ist die Anfertigung von Sicherungen der Dateidaten. Traditionelle Lösungen bestanden darin, eine Kopie der Daten auf Band oder andere Offline-Datenträger zu bringen. Bei einigen Dateisystemen muß beim Sicherungsprozeß der Datenserver offline gesetzt werden, um sicher zu gehen, daß der Sicherungsvorgang vollständig konsistent ist. Ein jüngerer Fortschritt bei der Datensicherung ist die Möglichkeit, ein Dateisystem rasch zu "klonen" (d. i. ein zum Stand der Technik gehöriges Verfahren zum Erzeugen einer nur lesbaren Kopie des Dateisystems auf Platte), und eine Datensicherung anhand des Klons, und nicht aus dem aktiven Dateisystem zu erstellen. Bei diesem Typ von Datei kann der Datenserver beim Sicherungsbetrieb online bleiben.
  • Datenbank-Konsistenz
  • Eine herkömmliche Datenbank (Dateisystem) ist von Chutani, et al. offenbart in seinem Artikel mit dem Titel The Episode File System, USENIX, Winter 1992, Seiten 43-59. Dieser Artikel beschreibt das Episode- Dateisystem, bei dem es sich um eine Datenbank unter Verwendung von Meta-Daten (das heißt moden-Tabellen, Verzeichnissen, Momentaufnahmen und indirekten Blöcken) handelt. Es kann als eigenständige oder als verteilte Datenbank verwendet werden. Episode unterhält eine Mehrzahl separater Datenbank-Hirarchien. Episode nimmt kollektiv auf mehrere Datenbanken als "Aggregat" Bezug. Insbesondere schafft Episode einen Klon jeder Datenbank zur langsamen Änderung von Daten.
  • In Episode enthält jede logische Datenbank eine "Anoden"-Tabelle. Eine Anoden-Tabelle ist äquivalent einer in Datenbanken wie dem Berkeley Fast File System verwendeten Inoden-Tabelle. Es handelt sich um eine 252-Byte-Struktur. Anoden dienen zum Speichern sämtlicher Benutzerdaten sowie von Meta-Daten innerhalb des Episode-Dateisystems. Eine Anode beschreibt das Hauptverzeichnis einer Datenbank einschließlich Hilfsdateien und Verzeichnissen. Jedes derartige Dateisystem wird in Episode als eine "Dateimenge" (Fileset) referenziert. Sämtliche Daten innerhalb einer Dateimenge können geortet werden, indem iterativ durch die Anoden-Tabelle gegangen und jede Datei ihrerseits verarbeitet wird. Episode erzeugt eine ausschließlich lesbare Kopie einer Datenbank, die hier als "Klon" bezeichnet wird, und sie nutzt gemeinsam Daten mit dem aktiven Dateisystem unter Einsatz von Copy-On-Write-Methoden (COW- Methoden; Kopieren nach Schreiben).
  • Episode verwendet eine Protokollmethode zur Wiedererlangung einer oder mehrerer Datenbanken nach einem Systemzusammenbruch. Das Protokollieren garantiert, daß die Datei-Meta-Daten konsistent sind. Eine Momentaufnahmen-Tabelle enthält Information darüber, ob jeder Block innerhalb der Datenbank zugeordnet ist oder nicht. Außerdem zeigt die Momentaufnahmen-Tabelle an, ob jeder Block protokolliert ist oder nicht. Sämtliche Meta-Daten-Aktualisierungen werden in einem Protokoll-"Behälter" aufgezeichnet, der das Transaktions-Protokoll des Aggregats speichert. Das Protokoll wird als Kreispuffer von Platten-Blöcken verarbeitet. Die Transaktions-Protokollierung von Episode verwendet Protokolliermethoden, die ursprünglich für Datenbanken mit dem Zweck entwickelt wurden, Dateisystem-Konsistenz zu garantieren. Diese Methode macht sorgfältigen Gebrauch von Schreibbefehlen sowie einem Wiederherstellungsprogramm, die von Datenbankmethoden innerhalb des Wiederherstellungsprogramms unterstützt werden.
  • Andere zum Stand der Technik zählende Systeme enthalten JFS von IBM und VxFS von Veritas Corporation und machen Gebrauch von unterschiedlichen Formen der Transaktions-Protokollierung, um den Wiederherstellungsprozeß zu beschleunigen, allerdings erfordern sie immer noch einen Wiederherstellungsprozeß.
  • Ein weiteres bekanntes Verfahren wird als Methode des "geordneten Schreibens" bezeichnet. Es schreibt sämtliche Platten-Blöcke in sorgfältig festgelegter Reihenfolge, so daß Schaden minimiert wird, wenn es zu einem Systemausfall kommt, während eine Reihe von zueinander in Beziehung stehender Schreibvorgänge durchgeführt wird. Dieser Stand der Technik versucht sicherzustellen, daß möglicherweise auftretende Inkonsistenzen harmlos sind. Beispielsweise werden einige wenige ungenutzte Blöcke oder Inoden als zugeordnet markiert. Der Hauptnachteil dieser Methode besteht darin, daß die dadurch der Plattenordnung auferlegten Restriktionen eine hohe Leistungsfähigkeit kaum zulassen.
  • Ein weiteres bekanntes System ist eine Weiterentwicklung des zweiten bekannten Verfahrens, bezeichnet als Methode des "geordneten Schreibens mit Wiederherstellung". Bei diesem Verfahren können Inkonsistenzen möglicherweise schädlich sein. Allerdings ist die Reihenfolge von Schreibvorgängen derart beschränkt, daß sich Inkonsistenzen auffinden und mit Hilfe eines Wiederherstellungsprogramms fixieren lassen. Beispiele für dieses Verfahren umfassen das ursprüngliche UNIX-Dateisystem sowie das Berkeley Fast File System (FFS). Diese Methode verringert die Platten-Reihenfolge ausreichend, um die Leistungseinbuße der Platten- Auftragserteilung zu beseitigen. Ein weiterer Nachteil besteht darin, daß der Wiederherstellungsprozeß zeitraubend ist. Typischerweise ist er proportional zur Größe des Dateisystems. Die Wiederherstellung eines S GB umfassenden FFS-Dateisystems erfordert daher beispielsweise zur Durchführung eine Stunde oder mehr.
  • Dateisystem-Klone
  • Fig. 1 ist ein den Stand der Technik zeigendes Diagramm für das Episode-Dateisystem und veranschaulicht den Einsatz von Kopieren-Nach- Schreiben-Methoden (COW-Methoden), um einen Dateimengen-Klon zu erzeugen. Eine Anode 110 enthält einen ersten Zeiger (Pointer) 110A mit einem gesetzten COW-Bit. Der Zeiger 110A referenziert den Datenblock 114 direkt. Die Anode 110 enthält einen zweiten Zeiger 110B, dessen COW-Bit gelöscht ist. Der Zeiger 110B der Anode referenziert den Block 112 indirekt. Der indirekte Block 112 enthält einen Zeiger 112A, der den Datenblock 124 direkt referenziert. Das COW-Bit des Zeigers 112A ist gesetzt. Der indirekte Block 112 enthält einen zweiten Zeiger 112B, der den Datenblock 126 referenziert. Das COW-Bit des Zeigers 112B ist gelöscht.
  • Eine Klon-Anode 120 enthält einen ersten Zeiger 120A, der auf den Datenblock 114 zeigt. Das COW-Bit des Zeigers 120A ist gelöscht. Der zweite Zeiger 120B der Klon-Anode 120 referenziert den indirekten Block 122. Das COW-Bit des Zeigers 120B ist gelöscht. Der indirekte Block 122 enthält einen Zeiger 122A, der den Datenblock 124 referenziert. Das COW- Bit des Zeigers 122A ist gelöscht.
  • Wie in Fig. 1 gezeigt ist, enthält jeder direkte Zeiger 110A, 112A-112B, 120A und 122A und jeder indirekte Zeiger 110B und 120B in dem Episode-Dateisystem ein COW-Bit. Blöcke, die nicht modifiziert wurden, sind sowohl im aktiven Dateisystem als auch in dem Klon enthalten, und bei ihnen sind die COW-Bits gesetzt (1). Das COW-Bit ist gelöscht (0), wenn ein von dem Zeiger referenzierter Block modifiziert wurde und damit Teil des aktiven Dateisystems ist, nicht jedoch Teil des Klons.
  • Wird ein Kopieren-Nach-Schreiben-Block modifiziert, so wird gemäß Fig. 1 ein neuer Block zugeordnet und aktualisiert. Das COW-Flag in dem Zeiger auf diesen neuen Block wird dann gesetzt. Das COW-Bit des Zeigers 110A der ursprünglichen Anode 110 wird gelöscht. Wenn also die Klon-Anode 120 erzeugt wird, referenziert die Klon-Anode 120 auch den Datenblock 114. Sowohl die Original-Anode 110 als auch die Klon-Anode 120 referenzieren den Datenblock 114. Auch der Datenblock 124 wurde modifiziert, angedeutet durch ein gelöschtes COW-Bit des Zeigers 112A in dem ursprünglichen indirekten Block 112. Wenn folglich die Klon-Anode erzeugt wird, wird der indirekte Block 122 erzeugt. Der Zeiger 122A des indirekten Blocks 122 referenziert den Datenblock 124, und das COW-Bit des Zeigers 122A ist gelöscht. Sowohl der indirekte Block 122 der Original-Anode 110 als auch der indirekte Block 122 der Klon-Anode 120 referenzieren den Datenblock 124.
  • Fig. 1 zeigt das Kopieren einer Anode zum Erzeugen einer Klon-Anode 120 für eine einzelne Datei. Allerdings müssen Klon-Anoden für jede Datei erzeugt werden, die geänderte Datenblöcke in dem Dateisystem enthält. Zur Zeit des Klonens müssen sämtliche Inoden kopiert werden. Das Erzeugen von Klon-Anoden für jede modifizierte Datei innerhalb des Dateisystems kann signifikante Mengen an Plattenspeicherplatz verbrauchen. Außerdem ist Episode nicht in der Lage, Mehrfach-Klone zu handhaben, da jeder Zeiger lediglich ein einziges COW-Bit aufweist. Ein einzelnes COW-Bit ist nicht in der Lage, mehr als einen Klon zu unterscheiden. Bei mehr als einem Klon gibt es kein zweites COW-Bit, welches gesetzt werden könnte.
  • Ein Dateisatz "Klon" ist eine ausschließlich lesbare Kopie eines aktiven Dateisatzes, wohingegen der aktive Dateisatz selbst sowohl lesbar als auch beschreibbar ist. Klone werden unter Verwendung von COW-Methoden implementiert und nutzen gemeinsam Datenblöcke mit einem aktiven Dateisatz auf Block-Für-Block-Basis. Episode implementiert das Klonen dadurch, daß jede in einem Dateisatz gespeicherte Anode kopiert wird. Nach dem anfänglichen Klonen zeigen sowohl die beschreibbare Anode des aktiven Dateisatzes als auch die geklonte Anode auf denselben Datenblock oder dieselben Datenblöcke. Allerdings sind Plattenadressen für direkte und indirekte Blöcke innerhalb der Original-Anode als COW gekennzeichnet. Deshalb hat eine Aktualisierung des beschreibbaren Dateisatzes keinen Einfluß auf den Klon. Wird ein COW-Block modifiziert, so wird ein neuer Block in dem Dateisystem zugewiesen und mit der Modifizierung aktualisiert. Das COW-Flag in dem Zeiger dieses neuen Blocks wird gelöscht. Das bekannte Episode-System erzeugt Klone, die die gesamte moden-Datei sowie sämtliche indirekten Blöcke innerhalb des Dateisystems duplizieren. Episode dupliziert sämtliche moden und indirekten Blöcke derart, daß es ein Kopieren-Nach-Schreiben-(COW-)Bit in sämtlichen Zeigern auf Blöcke setzen kann, die sowohl von dem aktiven Dateisystem als auch von dem Klon benutzt werden. Bei Episode ist es wichtig, diese Blöcke zu kennzeichnen, so daß neue, in das aktive Dateisystem eingeschriebene Daten die alten Daten, welche Teil des Klons sind, und die deshalb nicht geändert werden dürfen, nicht überschreiben.
  • Das Erzeugen eines Klons im Stand der Technik kann bis zu 32 MB auf eine 1-GB-Platte verbrauchen. Der Stand der Technik verwendet 256 MB Plattenspeicherraum auf einer 1-GB-Platte (für 4-KB-Blöcke), um acht Klone des Dateisystems zu halten. Damit kann der Stand der Technik keine großen Anzahlen von Klonen zum Verhindern von Datenverlusten verwenden. Statt dessen erleichterte er üblicherweise das Sichern des Dateisystems auf eine Hilfsspeichereinrichtung, verschieden von dem Plattenlaufwerk, so zum Beispiel ein Band-Sicherungsgerät. Klone werden zum Sichern eines Dateisystems in einem konsistenten Zustand in dem Zeitpunkt verwendet, zu dem der Klon hergestellt wird. Durch Klonen des Dateisystems kann der Klon zur Sicherheit auf das Hilfsspeichersystem gebracht werden, ohne daß dabei das aktive Dateisystem abgeschaltet wird, wodurch Benutzer an einer Benutzung des Dateisystems gehindert würden.
  • Damit ermöglichen es Klone den Benutzern, weiterhin auf ein aktives Dateisystem zuzugreifen, während das Dateisystem selbst in einem konsistenten Zustand gesichert wird. Anschließend wird der Klon gelöscht, nachdem die Sicherung abgeschlossen ist. Episode ist nicht in der Lage, mehrere Klone zu führen, da jeder Zeiger nur ein COW-Bit enthält. Ein einzelnes COW-Bit ist nicht im Stande, mehr als einen Klon zu unterscheiden. Bei mehr als einem Klon gibt es kein zweites COW-Bit, welches gesetzt werden könnte.
  • Ein Nachteil des bekannten Systems zum Erzeugen von Dateisystem- Klonen besteht darin, daß das System sämtliche Inoden und sämtliche indirekten Blöcke innerhalb des Dateisystems dupliziert. Bei einem System mit zahlreichen kleinen Dateien können die Inoden allein einen signifikanten Prozentsatz des gesamten Plattenspeicherraums eines Dateisystems belegen. In einem 1-GB-Dateisystem zum Beispiel, welches mit 4-KB- Dateien gefüllt ist, gibt es 32 MB Inoden. Das Erzeugen eines Episode- Klons verbraucht also einen signifikanten Anteil des Plattenspeicherraums und erzeugt große Mengen (das heißt zahlreiche Megabytes) an Plattenverkehr. Als Ergebnis dieser Zustände nimmt das Erzeugen eines Klons eines Dateisystems einen beträchtlichen Zeitraum bis zur Vervollständigung in Anspruch.
  • Ein weiterer Nachteil des bekannten Systems besteht darin, daß das System die Erzeugung mehrerer Klone desselben Dateisystems schwierig macht. Im Ergebnis neigen die Klone dazu, einzeln für Kurzzeitoperationen verwendet zu werden, so zum Beispiel zum Sichern des Dateisystems auf Band, um dann gelöscht zu werden.
  • Die in den geänderten Ansprüchen definierte Erfindung schafft ein Verfahren zum Halten eines Dateisystems in einem konsistenten Zustand sowie zum Erzeugen von ausschließlich lesbaren Kopien eines Dateisystems. Änderungen des Dateisystems werden streng gesteuert, um das Dateisystem in einem konsistenten Zustand zu halten. Das Dateisystem schreitet von einem selbst-konsistenten Zustand zu einem weiteren selbst- konsistenten Zustand weiter. Die Menge an selbst-konsistenten Blöcken auf einer Platte, die durch die Haupt-mode beherrscht wird, wird als Konsistenzpunkt (CP) bezeichnet. Zum Implementieren von Konsistenzpunkten schreibt WAFL stets neue Daten in nicht-zugewiesene Blöcke auf der Platte. Es überschreibt niemals existierende Daten. Ein neuer Konsistenzpunkt tritt auf, wenn der Finsfo-Block dadurch aktualisiert wird, daß eine neue Haupt-mode für die Inodendatei in ihn eingeschrieben wird. Solange die Haupt-mode nicht aktualisiert wird, ändert sich also der Zustand des Dateisystems auf der Platte nicht.
  • Die vorliegende Erfindung schafft außerdem Schnappschüsse, bei denen es sich um virtuelle, ausschließlich lesbare Kopien des Dateisystems handelt. Ein Schnappschuß nimmt keinen Plattenspeicherplatz in Anspruch, wenn er am Anfang erzeugt wird. Er ist derart ausgestaltet, daß zahlreiche verschiedene Schnappschüsse für ein und dasselbe Dateisystem erzeugt werden können. Im Gegensatz zu herkömmlichen Dateisystemen, die einen Klon durch Duplizieren des gesamten Inoden-Dateisatzes und sämtlicher indirekter Blöcke duplizieren, dupliziert die vorliegende Erfindung nur diejenige mode, die die Inodendatei beschreibt. Der also tatsächlich benötigte Plattenspeicherplatz für eine Momentaufnahme beträgt lediglich 128 Bytes, die zum Speichern der duplizierten mode verwendet werden. Die 128 Bytes, die erfindungsgemäß für eine Momentaufnahme oder einen Schnappschuß benötigt werden, sind deutlich weniger als die zahlreichen Megabytes, die für einen Klon im Stand der Technik benötigt werden.
  • Die vorliegende Erfindung verhindert, daß neue Daten, die in das aktive Dateisystem geschrieben werden, "alte" Daten, die Teil eines oder mehrerer Schnappschüsse sind, überschreiben. Notwendig ist, daß alte Daten solange nicht überschrieben werden, wie sie Teil eines Schnappschusses sind. Erreicht wird dies durch Verwendung einer freien Mehrfachbit- Blockabbildung. Die meisten zum Stand der Technik gehörigen Dateisysteme verwenden eine freie Blockabbildung mit einem einzelnen Bit pro Block, um anzugeben, ob ein Block zugewiesen ist oder nicht. Die vorliegende Erfindung verwendet eine Blockabbildung mit 32-Bit-Einträgen. Ein erstes Bit gibt an, ob ein Block von dem aktiven Dateisystem verwendet wird, und 20 verbleibende Bits werden für bis zu 20 Schnappschüsse verwendet, allerdings können einige Bits der 31 Bits für andere Zwecke verwendet werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Blockdiagramm eines zum Stand der Technik zählenden "Klons" eines Dateisystems.
  • Fig. 2 ist ein Diagramm, welches eine Liste von moden mit unsauberen Puffern veranschaulicht.
  • Fig. 3 ist ein Diagramm, das eine platteninterne mode des WAFL darstellt.
  • Fig. 4A-4D sind Diagramme, die platteninterne Inoden von WAFL mit unterschiedlichen Umwege-Ebenen veranschaulichen.
  • Fig. 5 ist ein Flußdiagramm des Verfahrens zum Erzeugen eines Konsistenzpunkts.
  • Fig. 6 ist ein Flußdiagramm zur Veranschaulichung des Schritts 530 aus Fig. 5 zum Erzeugen eines Konsistenzpunkts.
  • Fig. 7 ist ein Flußdiagramm zum Veranschaulichen des Schritts 530 in Fig. 5 zum Erzeugen eines Schnappschusses.
  • Fig. 8 ist ein Diagramm zum Veranschaulichen einer Intern-Inode des WAFL gemäß der Erfindung.
  • Fig. 9A-9D sind Diagramme, die Intern-Inoden des WAFL mit unterschiedlichen Umwege-Ebenen gemäß der Erfindung darstellen.
  • Fig. 10 ist ein Diagramm zum Veranschaulichen einer Intern-Inode 1020 für eine Datei.
  • Fig. 11A-11D sind Diagramme zum Veranschaulichen einer Blockabbilddatei (blkmap) gemäß der Erfindung.
  • Fig. 12 ist ein Diagramm zum Veranschaulichen einer erfindungsgemäßen Inoden-Datei.
  • Fig. 13A-13B sind Diagramme zum Veranschaulichen einer Inodenabbild-Datei (inomap) gemäß der Erfindung.
  • Fig. 14 ist ein Diagramm zum Veranschaulichen eines erfindungsgemäßen Verzeichnisses.
  • Fig. 15 ist ein Diagramm zum Veranschaulichen einer Dateisysteminformationsstruktur (fsinfo).
  • Fig. 16 ist ein Diagramm zum Veranschaulichen des WAFL- Dateisystems.
  • Fig. 17A-17L sind Diagramme zum Veranschaulichen des Erzeugens eines Konsistenzpunkts.
  • Fig. 18A-18C sind Diagramme zum Veranschaulichen des Erzeugens eines Schnappschusses.
  • Fig. 19 ist ein Diagramm zum Veranschaulichen von Änderungen einer Inodendatei.
  • Fig. 20 ist ein Diagramm zum Veranschaulichen von fsinfo-Blöcken, die zum Halten eines Dateisystems in einem konsistenten Zustand verwendet werden.
  • Fig. 21A-21F sind detaillierte Diagramme zum Veranschaulichen des Erzeugens eines Schnappschusses.
  • Fig. 22 ist ein Diagramm zum Veranschaulichen eines aktiven WAFL- Dateisystems mit drei Schnappschüssen, die jeweils eine gemeinsame Datei referenzieren; und
  • Fig. 23A-23B sind Diagramme zum Veranschaulichen der Aktualisierung einer Zugriffszeit.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Beschrieben wird ein System zum Erzeugen von ausschließlich lesbaren Kopien eines Dateisystems (einer Datenbank). In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten, so zum Beispiel Anzahl und Beschaffenheit von Platten, Plattenblock-Größen etc. im einzelnen beschrieben, um eine ausführlichere Beschreibung der Erfindung anzubieten. Es ist jedoch für den Fachmann ersichtlich, daß die Erfindung auch ohne diese spezifischen Einzelheiten ausgeführt werden kann. Andererseits wurden bekannte Merkmale nicht im einzelnen beschrieben, um die Erfindung nicht in unnötiger Weise zu verundeutlichen.
  • WRITE-ANYWHERE-DATEISYSTEM-LAYOUT
  • Die vorliegende Erfindung macht Gebrauch von einem Write-Anywhere- Dateisystem-Layout (WAFL von Write Anywhere File-system Layout), also von einer Dateisystem-Konfiguration, die ein Aufzeichnen oder Schreiben an beliebiger Stelle ermöglicht. Das Plattenformatsystem beruht auf Blöcken (das heißt 4 KB Blöcken, die keine Fragmente besitzen), verwendet Inoden zum Beschreiben seiner Dateien, und enthält Verzeichnisse, die einfach speziell formatierte Dateien sind. WAFL verwendet Dateien zum Speichern von Meta-Daten, welche das Layout des Dateisystems beschreiben. Die WAFL-Meta-Dateien beinhalten: eine Inodendatei, eine Blockabbild-Datei (blkmap) und eine Inodenabbilddatei (inomap). Die Inodendatei enthält die Inodentabelle für das Dateisystem. Die blkmap- Datei gibt an, welche Platten-Blöcke zugeordnet sind. Die inomap-Datei gibt an, welche Inoden zugeordnet sind. Weiter unten werden Unterscheidungsmerkmale für platteninterne und WAFL-interne Inoden diskutiert.
  • Platteninterne WAFL-Inoden
  • WAFL-Inoden unterscheiden sich von herkömmlichen moden. Jede WAFL-Inode verweist auf 16 Blöcke mit gleicher Umwegeebene. Eine Blocknummer ist 4 Bytes lang. Die Verwendung von Blocknummern mit gleicher Umwegeebene in einer Diode erleichtert die rekursive Verarbeitung einer Datei. Fig. 3 ist ein Blockdiagramm, das eine platteninterne mode 310 veranschaulicht. Die platteninterne mode 310 besteht aus Standard-Inodeninformation 310A sowie 16 Blocknummern-Einträgen 31 OB gleicher Umwegeebene. Die Inodeninformation 310A umfaßt Information über den Inhaber einer Datei, Berechtigungen, Dateigröße, Zugriffszeit, etc., wie dies dem Fachmann alles bekannt ist. Im Gegensatz zu bekannten moden, die eine Mehrzahl von Blocknummern unterschiedlicher Umwegeebenen aufweisen, ist die platteninterne mode 310 anders. Durch Halten sämtlicher Blocknummerneinträge 31 OB innerhalb einer mode 310 auf gleicher Umwegeebene wird die Implementierung des Dateisystems vereinfacht.
  • Für eine kleine Datei mit einer Größe von 64 Bytes oder weniger werden Daten direkt in der mode selbst anstatt in Form von 16 Blocknummern gespeichert. Fig. 4A ist ein Diagramm, das eine mode 410 der Ebene 0 veranschaulicht, die der in Fig. 3 gezeigten mode 310 ähnelt. Allerdings enthält die mode 410 64 Bytes Daten 410B anstelle von 16 Blocknummern 3108. Deshalb brauchen Plattenblöcke bei sehr kleinen Dateien nicht zugewiesen zu werden.
  • Für eine Datei mit einer Größe von weniger als 64 KB nimmt jede der 16 Blocknummern direkt auf einen 4-KB-Datenblock Bezug. Fig. 4B ist ein Diagramm, welches eine mode 310 der Ebene 1 mit 16 Blocknummern 310B veranschaulicht. Die Blocknummerneinträge 0-15 verweisen auf entsprechende 4-KB-Datenblöcke 420A-420C.
  • Für eine Datei mit einer Größe, die gleich oder größer ist als 64 KB und kleiner als 64 MB ist, nimmt jede der 16 Blocknummern Bezug auf einen einfach-indirekten Block. Seinerseits enthält jeder einzeln indirekte 4-KB- Block 1024 Blocknummern, die 4 KB-Datenblöcke referenzieren. Fig. 4C ist ein Diagramm, welches eine Inode der Ebene 4, 310, veranschaulicht, welche 16 Blocknummern 310B enthält, die 16 einfach-indirekte Blöcke 430A-430C referenzieren. Wie in Fig. 4C gezeigt ist, zeigt der Blocknummerneintrag 0 auf einen einfach-indirekten Block 430A. Der einfach-indirekte Block 430A enthält 1024 Blocknummern, die auf 4-KB- Datenblöcke 440A-440C Bezug nehmen. In ähnlicher Weise kann jeder einfach-indirekte Block 430B-430C jeweils bis zu 1024 Datenblöcke adressieren.
  • Bei einer Dateigröße von mehr als 64 MB referenzieren die 16 Blocknummern der Inode doppelt-indirekte Blöcke. Jeder doppelt-indirekte 4- KB-Block enthält 1024 Blocknummern, die auf entsprechende einfach- indirekte Blöcke verweisen. Jeder einfach-indirekte Block wiederum enthält 1024 Blocknummern, die auf 4-KB-Datenblöcke zeigen. Auf diese Weise lassen sich bis zu 64 GB adressieren. Fig. 4D ist ein Diagramm einer Inode 310 der Ebene 3, die 16 Blocknummern 310B enthält, wobei Blocknummerneinträge 0, 1 und 15 auf doppelt-indirekte Blöcke 470A, 470B und 470C verweisen. Der doppelt-indirekte Block 470A enthält 1024 Blocknummerneinträge 0-1023, die auf 1024 einfach-indirekte Blöcke 480A-480B zeigen. Jeder einfach-indirekte Block 480A-480B wiederum referenziert 1024 Datenblöcke. Wie in Fig. 4D gezeigt ist, referenziert der einfach-indirekte Block 480A 1024 Datenblöcke 490A-490C, und der einfach-indirekte Block 480B nimmt Bezug auf 1024 Datenblöcke 490C- 490F.
  • WAFL-interne Inoden
  • Fig. 8 ist ein Blockdiagramm, das eine WAFL-interne Inode 820 veranschaulicht. Die interne Inode 820 enthält die Information der platteninternen Inode 310 (dargestellt in Fig. 3), eine WAFL-Puffer-Datenstruktur 820A, außerdem 16 Pufferzeiger 820B. Eine WAFL-interne Inode besitzt eine Größe von 300 Bytes. Ein WAFL-Puffer ist ein 4 KB umfassendes (speicher-)internes Äquivalent der 4-KB-Blöcke, die auf der Platte gespeichert sind. Die Intern-Inode 820 unterscheidet sich von herkömmlichen Inoden, welche Puffer mit unterschiedlichen Umwegeebenen referenzieren. Jede Intern-WAFL-Inode 820 zeigt auf 16 Puffer mit gleicher Umwegeebene. Ein Pufferzeiger hat eine Länge von 4 Bytes. Indem man sämtliche Pufferzeiger 820B in eine Inode 820 auf der gleichen Umwegeebene hält, vereinfacht man die Dateisystem-Implementierung. Die Intern-Inode 820 enthält außerdem Intern-Information 820C, umfassend ein "Unsauber"-Flag, ein Inkonsistenzpunkt-Flag (IN CP) sowie Zeiger für eine Verknüpfungsliste. Das Unsauber-Flag gibt an, daß die Inode selbst modifiziert wurde oder daß sie Puffer referenziert, welche ihrerseits geändert wurden. Das IN_CP-Flag dient zum Markieren einer Inode als in einem 20 Konsistenzpunkt befindlich (wird unten beschrieben). Die Zeiger für eine verknüpfte Liste werden unten beschrieben.
  • Fig. 10 ist ein Diagramm, welches eine Datei veranschaulicht, die durch eine WAFL-Inode 1010 referenziert wird. Die Datei enthält indirekte WAFL-Puffer 1020-1024 und direkte WAFL-Puffer 1030-1034: die WAFL-Intern-Inode 1010 enthält Standard-Inoden-Information 1010A (einschließlich eines Zählers für unsaubere Puffer), eine WAFL- Pufferdatenstruktur 1010B, 16 Pufferzeiger 101ºC und eine standardmäßige platteninterne Inode 1010D. Die interne WAFL-Inode 1010 hat eine Größe von etwa 300 Bytes. Die platteninterne Inode hat eine Größe von 128 Bytes. Die WAFL-Pufferdatenstruktur 1010B umfaßt zwei Zeiger, von denen der erste die 16 Pufferzeiger 1010C und der zweite platteninterne Blocknummern 1010D referenziert.
  • Jede Inode 1010 besitzt eine Zählung von unsauberen Puffern, auf die sie Bezug nimmt. Eine Inode 1010 kann in die Liste unsauberer Inoden und/oder die Liste von Inoden eingegeben werden, welche unsaubere Puffer aufweisen. Wenn sämtliche von einer Inode referenzierten unsauberen Puffer für die Aufzeichnung auf Platte vorgesehen sind oder auf Platte aufgezeichnet werden, wird die Zählung der unsauberen Puffer für Inode 1010 auf Null gesetzt. Die Inode 1010 wird dann entsprechend ihrem Flag neu in Warteschlange gestellt (das heißt in diesem Fall gibt es keine unsauberen Puffer). Diese Inode 1010 wird gelöscht, bevor die nächste Inode verarbeitet wird. Außerdem wird das Flag der Inode gelöscht, welches angibt, daß die Inode sich in einem Konsistenzpunkt befindet. Die Inode 1010 selbst wird in einem Konsistenzpunkt auf Platte geschrieben.
  • Die WAFL-Pufferstruktur ist dargestellt durch einen indirekten WAFL- Puffer 1020. Der WAFL-Puffer 1020 enthält eine WAFL- Pufferdatenstruktur 1020A, einen 4-KB-Puffer 1020B mit 1024 WAFL- Pufferzeigern und einen 4-KB-Puffer 1020C mit 1024 platteninternen Blocknummern. Die WAFL-Pufferdatenstruktur hat eine Größe von 56 Bytes und enthält zwei Zeiger. Ein Zeiger der WAFL-Pufferdatenstruktur 1020A referenziert den 4-KB-Puffer 1020B, und ein zweiter Zeiger referenziert den Puffer 1020C. In Fig. 10 zeigen die 16 Pufferzeiger bbC der WAFL-Inode 1010 auf die 16 einfach-indirekten WAFL-Puffer 1020- 1024. Der WAFL-Puffer 1020 wiederum referenziert 1024 direkte WAFL- Pufferstrukturen 1030-1034. Der WAFL-Puffer 1030 steht repräsentativ für direkte WAFL-Puffer.
  • Der direkte WAFL-Puffer 1030 enthält eine WAFL-Pufferdatenstruktur 1030A und einen 4-KB-Direktpuffer 1030B, der eine gecachete Version eines entsprechenden platteninternen 4-KB-Datenblocks enthält. Der direkte WAFL-Puffer 1030 enthält nicht einen 4-KB-Puffer wie den Puffer 1020C des Indirekt-WAFL-Puffers 1020. Der zweite Pufferzeiger der WAFL-Pufferdatenstruktur 1030A wird auf Null gesetzt und zeigt daher nicht auf einen zweiten 4-KB-Puffer. Dies verhindert eine nicht effiziente Verwendung von Speicher, da ansonsten Speicherbereich für einen unbenutzten Puffer bereitgestellt würde.
  • In einem WAFL-Dateisystem, wie es in Fig. 10 gezeigt ist, referenziert eine interne WAFL-Inodenstruktur 1010 einen Baum von WAFL- Pufferstrukturen 1020-1024 und 1030-1034. Dieser ähnelt einem Baum von platteninternen Blöcken, die durch Standard-Inoden referenziert werden, welche Blocknummern aufweisen, die auf indirekte und/oder direkte Blöcke zeigen. Damit enthält die WAFL-Inode 1010 nicht nur die 16 Volumen-Blocknummern enthaltende platteninterne Inode 1010D, sondern enthält außerdem 16 Pufferzeiger 101ºC, welche auf WAFL- Pufferstrukturen 1020-1024 und 1030-1034 zeigen. WAFL-Puffer 1030- 1034 enthalten gecachete Inhalte von Blöcken, die durch Volumen- Blocknummern referenziert werden.
  • Die WAFL-Intern-Inode 1010 enthält 16 Pufferzeiger 1010C. Ihrerseits werden die 16 Pufferzeiger 101ºC durch eine WAFL-Pufferstruktur 1010B referenziert, die die Wurzel für den Baum aus WAFL-Puffern 1020-1024 und 1030-1034 bildet. Somit enthält jede WAFL-Inode 1010 eine WAFL- 20 Pufferstruktur 1010B, die auf die 16 Pufferzeiger 1010C innerhalb der Inode 1010 zeigt. Dies erleichtert die rekursive Implementierung von Algorithmen zum Handhaben von Puffer-Bäumen. Wenn die 16 Pufferzeiger 1010C innerhalb der Inode 1010 nicht durch eine WAFL-Pufferstruktur 1010B repräsentiert würden, ließe sich der rekursive Algorithmus zum Bearbeiten des gesamten Baums von Puffern 1020-1024 und 1030-1034 nur schwer implementieren.
  • Fig. 9A-9D sind Diagramme, die Inoden mit unterschiedlichen Umwegeebenen zeigen. In Fig. 9A-9D sind zur Darstellung der Indirektheit oder der Umwege indirekte und direkte WAFL-Puffer dargestellt. Allerdings sollte gesehen werden, daß die WAFL-Puffer in Fig. 9 entsprechende indirekte oder direkte Puffer aus Fig. 10 repräsentieren. Bei einer kleinen Datei mit einer Größe von 64 Bytes oder weniger werden Daten direkt in der Inode selbst gespeichert, und nicht die 16 Pufferzeiger. Fig. 9A ist ein Diagramm, das eine Inode 820 der Ebene Null veranschaulicht, bei der es sich um die gleiche Inode handelt wie die Inode 820 in Fig. 8, nur daß die Inode 820 an Stelle von 16 Pufferzeigern 820B nunmehr 64 Datenbytes 920B enthält. Deshalb werden bei sehr kleinen Dateien keine zusätzlichen Puffer zugewiesen.
  • Bei einer Datei mit einer Größe von weniger als 64 KB referenziert jeder der 16 Pufferzeiger direkt einen direkten 4-KB-WAFL-Puffer. Fig. 9B ist ein Diagramm einer Inode 820 der Ebene 1 mit 16 Pufferzeigern 820B. Die 10 Pufferzeiger PTR0-PTR15 zeigen auf entsprechende direkte 4-KB-WAFL- Puffer 922A-922C.
  • Bei einer Datei, die größer oder gleich 64 KB und kleiner als 64 MB ist, referenziert jeder der 16 Pufferzeiger einen einfach-indirekten WAFL- Puffer. Jeder einfach-indirekte 4-KB-WAFL-Puffer seinerseits umfaßt 1024 Pufferzeiger, welche 4-KB-Direkt-WAFL-Puffer referenzieren. Fig. 9C ist ein Diagramm einer Inode 820 der Ebene 2 mit 16 Pufferzeigern 820B, welche 16 einfach-indirekte WAFL-Puffer 930A-930C referenzieren. Gemäß Fig. 9C zeigt der Pufferzeiger PTR0 auf einen einfach- indirekten WAFL-Puffer 930A. Der einfach-indirekte WAFL-Puffer 930A enthält 1024 Zeiger, die 4-KB-Direkt-WAFL-Puffer 940A-940C referenzieren. In ähnlicher Weise können einfach-indirekte WAFL-Puffer 930B- 930C jeweils bis zu 1024 direkte WAFL-Puffer adressieren.
  • Bei einer Dateigröße von mehr als 64 MB referenzieren die 16 Pufferzeiger der Inode doppelt-indirekte WAFL-Puffer. Jeder 4 KB umfassende, doppelt-indirekte WAFL-Puffer enthält 1024 Zeiger, die auf zugehörige einfach-indirekte WAFL-Puffer zeigen. Jeder einfach-indirekte WAFL- Puffer seinerseits umfaßt 1024 Zeiger, die auf direkte 4 KB-WAFL-Puffer 30 zeigen. Damit können bis zu 64 GB adressiert werden. Fig. 9D ist ein Diagramm einer Inode 820 der Ebene 3 mit 16 Zeigern 820B, wobei Zeiger PTR0, PTR1 und PTR15 doppelt-indirekte WAFL-Puffer 970A, 970B bzw. 970C referenzieren. Der doppelt-indirekte WAFL-Puffer 970A enthält 1024 Zeiger, die auf 1024 einfach-indirekte WAFL-Puffer 980A-980B zeigen. Jeder einfach-indirekte WAFL-Puffer 980A-980B wiederum referenziert 1024 direkte WAFL-Puffer. Wie in Fig. 9D zu sehen ist, referenziert der einfach-indirekte WAFL-Puffer 980A 1024 direkte WAFL-Puffer 990A-990C, und der einfach-indirekte WAFL-Puffer 980B referenziert 1024 direkte WAFL-Puffer 990D-990F.
  • Verzeichnisse
  • Verzeichnisse innerhalb des WAFL-Systems sind in 4-KB-Blöcken gespeichert, welche in zwei Abschnitte aufgeteilt sind. Fig. 14 ist ein Diagramm, das einen Verzeichnisblock 1410 gemäß der Erfindung veranschaulicht. Jeder Verzeichnisblock 1410 enthält einen ersten Abschnitt 1410A mit Verzeichniseintrag-Strukturen 1412-1414 fester Länge, und einen zweiten Abschnitt 1410B, der die aktuellen Verzeichnisnamen 1416- 1418 enthält. Jeder Verzeichniseintrag enthält außerdem eine Datei-ID, das heißt eine Datei-Kennung und eine Generation. Diese Information kennzeichnet, welche Datei der Eintrag referenziert. Diese Information ist im Stand der Technik bekannt und deshalb in Fig. 14 nicht dargestellt. Jeder Eintrag 1412-1414 im ersten Abschnitt 1410A des Verzeichnisblocks besitzt einen Zeiger auf seinen Namen innerhalb des zweiten Abschnitts 1410B. Außerdem enthält jeder Eintrag 1412-1414 einen Hash-Wert, abhängig von seinem Namen in dem zweiten Abschnitt 1410B, so daß der Name nur untersucht wird, wenn es zu einem Hash-Treffer (einer Hash- Übereinstimmung) kommt. Beispielsweise enthält der Eintrag 1412 des ersten Abschnitts 1410A einen Hash-Wert 1412A und einen Zeiger 1412B. Der Hash-Wert 1412A ist ein Wert, der von dem Verzeichnis-Namen "VERZEICHNIS ABC" abhängt, der in dem Eintrag variabler Länge 1416 des zweiten Abschnitts 1410B abgespeichert ist. Der Zeiger 1412B des Eintrags 1410 zeigt auf den Eintrag variabler Länge, 1416, des zweiten Abschnitts 14108. Unter Verwendung von Verzeichniseinträgen fester Länge, 1412-1414 in dem ersten Abschnitt 1410A beschleunigt sich der Vorgang des Namen-Nachschauens. Zum Auffinden des nächsten Eintrags innerhalb eines Verzeichnisblocks 1410 ist keine Rechnung erforderlich. Durch Halten der Einträge 1412-1414 in dem ersten Abschnitt 1410A auf einem kleinen Wert verbessert sich die Trefferrate für Dateisysteme mit einem Zeilenfüller-Datencache.
  • Meta-Daten
  • WAFL führt Information, die ein Dateisystem in Dateien beschreibt, welche als Meta-Daten bekannt sind. Meta-Daten umfassen eine Inodendatei, eine inomap-Datei und eine blkmap-Datei. WAFL speichert seine Meta- Daten in Dateien, die irgendwo auf einer Platte aufgezeichnet werden können. Weil sämtliche WAFL-Meta-Daten in Dateien geführt werden, lassen sie sich an eine beliebe Stelle schreiben, so wie jede andere Datei innerhalb der Datenbank.
  • Eine erste Metadaten-Datei ist die "Inodendatei", die Inoden enthält, welche sämtliche anderen Dateien innerhalb der Datenbank beschreiben. Fig. 12 ist ein Diagramm einer Inodendatei 1210. Die Inodendatei 1210 kann irgendwo auf einer Platte aufgezeichnet werden, im Gegensatz zu bekannten Systemen, welche "Inodentabellen" auf eine feste Stelle der Platte schreiben. Die Inodendatei 1210 enthält eine Inode 1210A-1210F für jede Datei innerhalb des Dateisystems, ausgenommen die Inodendatei 1210 selbst. Gezeigt wird auf die Inodendatei 1210 durch eine als die "Wurzelinode" bezeichnete Inode. Die Wurzelinode wird an einer festen Stelle auf der Platte gehalten, bezeichnet als weiter unten noch zu beschreibender Dateisysteminformationsblock (fsinfo-Block). Die Inodendatei 1210 selbst ist in 4-KB-Blöcken auf der Platte (oder 4-KB-Puffern im Speicher) abgespeichert. Fig. 12 veranschaulicht, daß hoden 1210A-1210C in einem 4- KB-Puffer 1220 gespeichert sind. Für Größen von platteninternen hoden von 128 Bytes umfaßt ein 4-KB-Puffer (oder Block) 32 moden. Die Intern- Inodendatei 1210 setzt sich zusammen aus WAFL-Puffern 1220. Wenn eine Intern-mode (das heißt 1210A) geladen wird, wird der platteninterne Inodenteil der Intern-mode 1210A für den Puffer 1220 der Inodendatei 1210 einkopiert. Die Pufferdaten selbst werden von der Platte her geladen. Das Schreiben von Daten auf die Platte erfolgt in umgekehrter Reihenfolge. Die Intern-mode 1210A, die eine Kopie der platteninternen mode ist, wird in den entsprechenden Puffer 1220 der Inodendatei 1210 kopiert. Anschließend wird die Inodendatei 1210 für das Schreiben zugewiesen, und die in dem Puffer 1220 der Inodendatei 1210 gespeicherten Daten werden auf die Platte geschrieben.
  • Eine weitere Metadaten-Datei ist die "Blockabbild"-Datei (blkmap-Datei). Fig. 11A ist ein Diagramm, welches eine blkmap-Datei 1110 zeigt. Die blkmap-Datei 1110 enthält einen 32 Bits umfassenden Eintrag 1110A- 1110C für jeden 4-KB-Block innerhalb des Plattenlaufwerksystems. Sie dient außerdem als Abbilddatei für freie Blöcke. Die blkmap-Datei 1110 gibt an, ob ein Plattenblock belegt wurde oder nicht. Fig. 11 B ist ein Diagramm eines Blockeintrags 1110A der blkmap-Datei 1110 (dargestellt in Fig. 11A). Wie in Fig. 11B gezeigt ist, umfaßt der Eintrag 1110A 32 Bits (BIT0-BIT31). Bit 0 (BIT0) des Eintrags 1110A ist das Aktiv- Dateisystem-Bit (FS-Bit). Das FS-Bit des Eintrags 1110A gibt an, ob der entsprechende Block Teil des aktiven Dateisystems ist oder nicht. Die Bits 1-20 (BIT1-BIT20) des Eintrags 1110A sind Bits, welche angeben, ob der Block Teil eines entsprechenden Schnappschusses (Zwischensicherung) 1- 20 ist. Die nächsten oberen 10 Bits (BIT21-BIT30) sind reserviert. Bit 31 (BIT31) ist das Konsistenzpunkt-Bit (CP-BIT) des Eintrags 1110A.
  • Ein Block ist als ein freier Block in dem Dateisystem dann verfügbar, wenn sämtliche Bits (BIT0-BIT31) in dem 32 Bit umfassenden Eintrag 1110A für den Block gelöscht sind (auf einen Wert 0 zurückgesetzt). Fig. 11C ist ein Diagramm, welches den Eintrag 1110A der Fig. 11A veranschaulicht, wenn dieser anzeigt, daß der Plattenblock frei ist. Demnach ist der durch den Eintrag 1110A der blkmap-Datei 1110 referenzierte Block dann frei, wenn die Bits 0-31 (BIT0-BIT31) sämtlich einen Wert 0 haben. Fig. 11D ist ein Diagramm, welches den Eintrag 1110A der Fig. 11A in dem Zustand zeigt, in welchem er einen belegten Block in dem aktiven Dateisystem angibt. Wenn das Bit 0 (BIT0), auch als FS-Bit bezeichnet, auf einen Wert 1 gesetzt ist, kennzeichnet der Eintrag 1110A der blkmap- Datei 1110 einen Block, der Teil des aktiven Dateisystems ist. Bits 1-20 (BIT1-BIT20) dienen zum Anzeigen entsprechender Schnappschüsse, falls vorhanden, die den Block referenzieren. Schnappschüsse werden unten im einzelnen erläutert. Wenn das Bit 0 (BIT0) auf einen Wert 0 gesetzt ist, so zeigt dies nicht unbedingt an, daß der Block für die Belegung zur Verfügung steht. Sämtliche Schnappschuß-Bits müssen 0 sein, damit der Block zugewiesen werden kann. Bit 31 (BIT31) des Eintrags 1110A hat stets denselben Zustand als Bit 0 (BIT0) auf der Platte, wird aber, wenn er in das Speicherbit 31 (BIT31) geladen wird, zur Buchführung als Teil eines Konsistenzpunkts verwendet.
  • Eine weitere Metadaten-Datei ist die "Inodenabbild" = Datei (inomap- Datei), die als ein Abbild für freie moden dient. Fig. 13A ist ein Diagramm, welches eine Inodenabbild-Datei veranschaulicht. Die inomap- Datei 1310 enthält einen 8 Bits umfassenden Eintrag 1310A-1310C für jeden Block innerhalb der in Fig. 12 gezeigten Inoden-Datei 1210. Jeder Eintrag 1310A-1310C ist eine Zählung zugeordneter oder belegter Ir moden in dem entsprechenden Block innerhalb der moden-Datei 1210. Fig. 13A zeigt Werte 32,5 bzw. 0 in den Einträgen 1310A-1310C. Die moden-Datei 1210 muß noch inspiziert werden, um herauszufinden, welche Inoden in dem Block frei sind, dies erfordert jedoch nicht das Umladen größerer Mengen beliebiger Blöcke von der Platte in den Speicher. Da jeder 4-KB- Block 1220 der Inodendatei 1210 32 moden aufnimmt, kann der 8 Bits umfassende inomap-Eintrag 1310A-1310C für jeden Block in der Inoden- Datei 1210 Werte annehmen, die zwischen 0 und 32 liegen. Wenn ein Block 1220 einer moden-Datei 1210 keine moden im Gebrauch hat, so ist der Eintrag 1310A-1310C für ihn innerhalb der Inomap-Datei 1310 "0". Wenn sämtliche moden in dem Block 1220 der Inodendatei 1210 im Gebrauch sind, hat der Eintrag 1310A-1310C der inomap-Datei 1310 einen Wert 32.
  • Fig. 13B ist ein Diagramm, das eine inomap-Datei 1350 veranschaulicht, welche die 4-KB-Blöcke 1340A-1340C der moden-Datei 1340 referenziert. Beispielsweise speichert die Inoden-Datei 1340 37 moden in drei 4- KB-Blöcken 1340A-1340C. Blöcke 1340A-1340C der moden-Datei 1340 enthalten 32,5 bzw. 0 verwendete moden. Einträge 1350A-1350C der blkmap-Datei 1350 referenzieren Blöcke 1340A-1340C der moden-Datei 1340. Damit haben die Einträge 1350A-1350C der inomap-Datei Werte von 32,5 und 0 für Blöcke 1340A-1340C der moden-Datei 1340. Die Einträge 1350A-1350C der inomap-Datei wiederum kennzeichnen 0,27 bzw. 32 freie moden in den Blöcken 1340A-1340C der moden-Datei 1340.
  • Bezugnehmend auf Fig. 13 ist die Verwendung einer bitweisen Momentaufnahme für die Einträge 1310A-1310C der inomap-Datei 1310 an Stelle von Zählwerten deshalb von Nachteil, weil vier Bytes pro Eintrag 1310A- 1310C für den Block 1220 der moden-Datei 1210 (in Fig. 12 dargestellt), und nicht nur ein Byte erforderlich wären. Freie moden im Block bzw. in den Blöcken 1220 der moden-Datei 1210 müssen innerhalb der inomap- Datei 1310 deshalb nicht angezeigt werden, weil die moden selbst diese Information enthalten.
  • Fig. 15 ist ein Diagramm, welches eine Dateisysteminformationsstruktur (fsinfo) 1510 veranschaulicht. Die Wurzelinode 1510B eines Dateisystems wird an einer festen Stelle auf der Platte gehalten, so daß sie beim Booten des Dateisystems geortet werden kann. Der fsinfo-Block ist keine Metadaten-Datei, sondern Teil des WAFL-Systems. Die Wurzelinode 1510B ist eine mode, die auf die moden-Datei 1210 Bezug nimmt. Sie ist Teil der Dateisysteminformationsstruktur (fsinfo) 1510, die außerdem Information 1510A einschließlich der Anzahl von Blöcken in dem Dateisystem, die Entstehungszeit des Dateisystems etc. enthält. Die vermischte Information 1510A enthält außerdem eine Prüfsumme 1510C (diese wird unten noch beschrieben). Mit Ausnahme der Wurzelinode 1510B selbst kann diese Information 1510A in einer Metadaten-Datei einer anderen Ausführungsform gehalten werden. In festen Plätzen auf der Platte werden zwei identische Kopien der fsinfo-Struktur 1510 gehalten.
  • Fig. 16 ist ein Diagramm, welches das WAFL-Dateisystem 1670 in einem konsistenten Zustand auf einer Platte mit zwei fsinfo-Blöcken 1610 und 1612, einer moden-Datei 1620, einer blkmap-Datei 1630, einer inomap-Datei 1640, einem Wurzelverzeichnis 1650 und einer typischen Datei (oder einem Verzeichnis) 1660 zeigt. Die Inoden-Datei 1620 besteht aus mehreren Inoden 1620A-1620D, welche andere Dateien 1630-1660 in dem Dateisystem 1670 referenzieren. Die Inode 1620A der Inoden-Datei 1620 referenziert die blkmap-Datei 1630. Die Inode 1620B referenziert die inomap-Datei 1640. Die Inode 1620C referenziert das Wurzelverzeichnis 1650. Die Inode 1620D referenziert eine typische Datei (oder ein typisches Verzeichnis) 1660. Somit zeigt die Inoden-Datei auf sämtliche Dateien 1630-1660 innerhalb des Dateisystems 1670, ausgenommen die fsinfo- Blöcke 1610 und 1612. Die fsinfo-Blöcke 1610 und 1612 enthalten jeweils eine Kopie 1610B bzw. 1612B der Inode der Inoden-Datei 1620. Weil die Wurzelinode 1610B und 1612B der fsinfo-Blöcke 1610 und 1612 die Inoden-Datei 1620 beschreibt, die ihrerseits den Rest der Dateien 1630-1660 in dem Dateisystem 1670 einschließlich sämtlicher Metadaten-Dateien 1630-1640 beschreibt, wird die Wurzelinode 1610B und 1612B als die Wurzel eines Baums von Blöcken betrachtet. Das WAFL-System 1620 verwendet diese Baumstruktur für ihr Aktualisierungsverfahren (Konsistenzpunkt) und zum Implementieren von Schnappschüssen, die beide unten noch beschrieben werden.
  • Liste von Inoden mit unsauberen Blöcken
  • Interne WAFL-Inoden (das heißt die WAFL-Inode 1010 gemäß Fig. 10) des WAFL-Dateisystems werden in unterschiedlich verknüpften Listen entsprechend ihrem Status gehalten. Inoden, die sich auf unsaubere Blöcke beziehen, werden in einer in Fig. 2 gezeigten Liste für unsaubere Inoden gehalten. Zulässige Daten enthaltende Inoden, die nicht unsauber sind, werden in einer separaten Liste gehalten, und Inoden, die keine zulässigen Daten aufweisen, werden in einer noch weiteren Liste geführt, wie dies im Stand der Technik bekannt ist. Die vorliegende Erfindung macht Gebrauch von einer Liste von Inoden mit unsauberen Datenblöcken, was das Auffinden sämtlicher Inoden erleichtert, bei denen Schreibzuweisungen erforderlich sind.
  • Fig. 2 ist ein Diagramm, das eine Liste 210 unsauberer Inoden gemäß der Erfindung veranschaulicht. Die Liste 210 unsauberer Inoden enthält WAFL-interne Inoden 220-1750. Wie in Fig. 17 gezeigt ist, enthält jede WAFL-interne Inode 220-250 einen Zeiger 220A-250A, der auf eine weitere Inode in der verknüpften Liste zeigt. Beispielsweise sind WAFL- Inoden 220-250 im Speicher an Stellen 2048, 2152, 2878, 3448 bzw. 3712 gespeichert. Dementsprechend enthält der Zeiger 220A der Inode 220 die Adresse 2152. Sie verweist deshalb auf die WAFL-Inode 222. Die WAFL- Inode 222 wiederum zeigt mit Hilfe der Adresse 2878 auf die WAFL- Inode 230. Die WAFL-Inode 230 verweist auf die WAFL-Inode 240. Die WAFL-Inode 240 zeigt auf die Inode 1750. Der Zeiger 250 der WAFL- Inode 250 enthält einen Null-Wert und zeigt daher nicht auf eine weitere Inode. Somit ist sie die letzte Inode innerhalb der Liste 210 für unsaubere Inoden. Jede Inode in der Liste 210 repräsentiert eine Datei aus einem Baum von Puffern, wie dies in Fig. 10 dargestellt ist. Mindestens einer der von jeder Inode 220-250 referenzierte Puffer ist ein unsauberer Puffer. Ein unsauberer Puffer enthält modifizierte Daten, die auf eine neue Speicherplattenstelle in dem WAFL-System geschrieben werden müssen. WAFL schreibt stets unsaubere Puffer auf neue Speicherstellen der Platte.
  • KONSISTENZPUNKTE
  • Die WAFL-Plattenstruktur, wie sie bisher beschrieben wurde, ist statisch. Erfindungsgemäß werden Änderungen des Dateisystems 1670 streng gesteuert, um das Dateisystem 1670 in einem konsistenten Zustand zu halten. Das Dateisystem 1670 schreitet von einem selbstkonsistenten Zustand zu einem anderen selbstkonsistenten Zustand weiter. Die Menge (oder der Baum) selbstkonsistenter Blöcke auf der Platte mit ihrem Ursprung in der Wurzelinode 1510B wird als Konsistenzpunkt (CP) referenziert. Um Konsistenzpunkte zu implementieren, schreibt WAFL stets neue Daten in nicht-zugewiesene Blöcke auf der Platte. Es überschreibt niemals existierende Daten. Solange also die Wurzelinode 1510B nicht aktualisiert ist, ändert sich der Zustand des Dateisystems 1670, wie er sich auf der Platte darstellt, nicht. Damit das Dateisystem 1670 aber brauchbar ist, muß es gelegentlich auf neu geschriebene Daten Bezug nehmen, und deshalb muß dann ein neuer Konsistenzpunkt geschrieben werden.
  • Bezugnehmend auf Fig. 16, wird ein neuer Konsistenzpunkt dadurch geschrieben, daß zunächst sämtliche Dateisystem-Blöcke auf neue Stellen der Platten umgeräumt werden (einschließlich der Blöcke in Metadaten- Dateien, so wie die Inoden-Datei 1620, die blkmap-Datei 1630 und die inomap-Datei 1640). Eine neue Wurzelinode 1610B und 1612B für das Dateisystem 1670 wird dann auf die Platte geschrieben. Mit diesem Verfahren zur automatischen Aktualisierung eines Dateisystems ist das platteninterne Dateisystem niemals inkonsistent. Das platteninterne Dateisystem 1670 reflektiert einen alten Konsistenzpunkt, bis die Wurzelinode 1610B und 1612B geschrieben ist. Unmittelbar nach dem Schreiben der Wurzelinode 1610B und 1612B auf die Platte reflektiert das Dateisystem 1670 einen neuen Konsistenzpunkt. Datenstrukturen des Dateisystems 1670 können in beliebiger Reihenfolge aktualisiert werden, es gibt keinerlei Ordnungsbeschränkungen bei platteninternen Schreibvorgängen, ausgenommen das eine Erfordernis, gemäß dem sämtliche Blöcke in dem Dateisystem 1670 auf die Platte geschrieben werden müssen, bevor die Wurzelinode 1610B und 1612B aktualisiert wird.
  • Um in einen neuen Konsistenzpunkt umgewandelt werden zu können, muß die Wurzelinode 1610B und 1612B zuverlässig und elementar aktualisiert werden. WAFL tut dies dadurch, daß zwei identische Kopien der fsinfo- Struktur 1610 und 1612 gehalten werden, welche die Wurzelinode 1610B und 1612B enthalten. Während der Aktualisierung der Wurzelinode 1610B und 1612B wird eine Kopie der fsinfo-Struktur 1610 auf die Platte geschrieben, anschließend wird die zweite Kopie der fsinfo-Struktur 1612 geschrieben. Eine Prüfsumme 1610C und 1612C in der fsinfo-Struktur 1610 bzw. 1612 dient zum Feststellen des Auftretens eines Systemzusammenbruchs, welches eine der Kopien der fsinfo-Struktur 1610 oder 1612, die jeweils eine Kopie der Wurzelinode enthalten, beim Schreiben auf die Platte verfälscht. Normalerweise sind die beiden fsinfo-Strukturen 1610 und 1612 identisch.
  • Algorithmus zum Erzeugen eines Konsistenzpunkts
  • Fig. 5 ist ein Diagramm, welches das Verfahren zum Erzeugen eines Konsistenzpunkts veranschaulicht. Im Schritt 510 werden sämtliche "unsauberen" moden (also moden, die auf neue, modifizierte Daten enthaltende Blöcke zeigen) in dem System als im Konsistenzpunkt ihrer Inhalte befindlich markiert, und es wird nur ihr jeweiliger Inhalt auf die Platte geschrieben. Nur wenn diese Schreibvorgänge abgeschlossen sind, dürfen weitere Schreibvorgänge aus anderen moden die Platte erreichen. Außerdem können während der Zeit, in der unsaubere Schreibvorgänge stattfinden, keine neuen Modifikationen an moden vorgenommen werden, die sich in dem Konsistenzpunkt befinden.
  • Zusätzlich zur Einstellung des Konsistenzpunkt-Flags für sämtliche unsauberen moden, die Teil des Konsistenzpunkts sind, wird ein globales Konsistenzpunkt-Flag gesetzt, so daß seitens eines Benutzers angeforderte Änderungen sich in streng gesteuerter Weise verhalten. Nachdem das globale Konsistenzpunkt-Flag gesetzt ist, werden benutzerseitig angeforderte Änderungen, welche in dem Konsistenzpunkt befindliche hoden beeinflussen, nicht zugelassen. Außerdem wird nur moden mit gesetztem Konsistenzpunkt-Flag Plattenspeicherplatz für ihre unsauberen Blöcke zugewiesen. Folglich wird der Zustand des Dateisystems auf die Platte geräumt, genauso, wie dies zu Beginn des Konsistenzpunkts geschah.
  • Im Schritt 520 werden reguläre Dateien auf Platte geräumt. Das Räumen regulärer Dateien umfaßt den Schritt des Zuweisens von Plattenspeicherplatz für unsaubere Blöcke in den regulären Dateien, außerdem das Schreiben der entsprechenden WAFL-Puffer auf die Platte. Die moden selbst werden anschließend in die moden-Datei geräumt (kopiert). Sämtliche Inoden, die zu beschreiben sind, befinden sich entweder in der Liste von Inoden mit unsauberen Puffern oder in der Liste von moden, die unsauber sind, jedoch keine unsauberen Puffer enthalten. Wenn der Schritt 520 abgeschlossen ist, gibt es keine weiteren regulären moden in dem Konsistenzpunkt, und sämtliche ankommenden E/A-Anforderungen verlaufen erfolgreich, es sei denn, die Anforderungen verwenden Puffer, die für Platten-E/A-Operationen noch gesperrt sind.
  • Im Schritt 530 werden Spezialdateien auf die Platte geräumt. Das Räumen von Spezialdateien umfaßt den Schritt des Zuordnens von Plattenspeicherplatz für unsaubere Blöcke in den beiden Spezialdateien: die Inoden-Datei und die blkmap-Datei, das Aktualisieren des Konsistenzbits (CP-Bit), damit Übereinstimmung mit dem aktiven Dateisystem-Bit (FS-Bit) für jeden Eintrag in der blkmap-Datei herrscht, und anschließendes Einschreiben der Blöcke in die Platte. Die Schreibzuordnung der Inoden-Datei und der blkmap-Datei ist deshalb kompliziert, weil der Vorgang ihrer Schreibzuweisung die Dateien selbst ändert. Somit werden im Schritt 530 Schreibvorgänge gesperrt, während diese Dateien geändert werden, um zu verhindern, daß wichtige Blöcke für Platten-E/A-Operationen gesperrt werden, bevor die Änderungen abgeschlossen sind.
  • Im Schritt 530 werden außerdem die unten noch beschriebenen Schritte des Erzeugens und Löschens von Schnappschüssen durchgeführt, da dies der einzige zeitliche Punkt ist, zu welchem das Dateisystem - ausgenommen den fsinfo-Block - vollständig selbstkonsistent ist und gerade dabei ist, auf die Platte geschrieben zu werden. Ein Schnappschuß wird aus dem Dateisystem gelöscht, bevor ein neuer erzeugt wird, so daß in einem Durchgang dieselbe Schnappschuß-Inode verwendet werden kann.
  • Fig. 6 ist ein Flußdiagramm, welches die Schritte darstellt, die der Schritt 530 umfaßt. Schritt 530 ordnet Plattenspeicherraum für die blkmap-Datei und die Inoden-Datei zu und kopiert das aktive FS-Bit in das CP-Bit für jeden Eintrag der blkmap-Datei. Dies garantiert, daß der Block in der Inoden-Datei, der die Inode der blkmap-Datei enthält, unsauber ist, so daß der Schritt 620 hierfür Plattenspeicherraum zuweist.
  • Im Schritt 620 wird für sämtliche unsauberen Blöcke in der Inode und den blkmap-Dateien Plattenspeicherplatz zugewiesen. Die unsauberen Blöcke enthalten den Block der moden-Datei, der die mode der blkmap-Datei als unsauberen Block enthält.
  • Im Schritt 630 wird die mode für die blkmap-Datei erneut geräumt, allerdings wird diesmal die aktuelle mode in den vorab geräumten Block in der moden-Datei geschrieben. Schritt 610 hat bereits den Block der Inoden- Datei verfälscht, welche die mode der blkmap-Datei enthält. Damit braucht kein weiterer Schreibzuweisungsschritt entsprechend dem Schritt 620 geplant zu werden.
  • Im Schritt 640 werden die Einträge für jeden Block in der blkmap-Datei aktualisiert. Jeder Eintrag wird dadurch aktualisiert, daß das aktive FS-Bit in das CP-Bit kopiert wird (das heißt Einkopieren des Bits 0 in das Bit 31), und zwar bei sämtlichen Einträgen in unsauberen Blöcken innerhalb der blkmap-Datei.
  • Im Schritt 650 werden sämtliche unsauberen Blöcke in den blkmap- und moden-Dateien auf die Platte geschrieben.
  • Nur für Einträge in unsauberen Blöcken der blkmap-Datei muß das aktive Dateisystem-Bit (FS-Bit) im Schritt 640 in das Konsistenzpunkt-Bit (CP- Bit) kopiert werden. Unmittelbar nach einem Konsistenzpunkt besitzen sämtliche blkmap-Einträge denselben Wert sowohl für das aktive FS-Bit als auch das CP-Bit. Mit fortschreitender Zeit werden einige aktive FS-Bits von blkmap-Datei-Einträgen für das Dateisystem entweder gelöscht oder gesetzt. Die Blöcke der blkmap-Datei, die geänderte FS-Bits enthalten, werden entsprechend als unsauber markiert. Während des folgenden Konsistenzpunkts brauchen saubere Blöcke nicht zurückkopiert zu werden. Die sauberen Blöcke werden deshalb nicht kopiert, sie an dem vorhergehenden Konsistenzpunkt nicht unsauber waren und sich in den Blöcken seitdem nichts geändert hat. Solange also das Dateisystem zu Beginn mit dem aktiven FS-Bit und dem CP-Bit gleichen Werts in sämtlichen blkmap- Einträgen erzeugt wurde, brauchen lediglich Einträge bei unsauberen Blöcken in jedem Konsistenzpunkt aktualisiert zu werden.
  • Bezugnehmend auf Fig. 5 wird im Schritt 540 der Dateisysteminformationsblock (Fsinfo) aktualisiert und dann auf die Platte geräumt. Der Fsinfo- Block wird dadurch aktualisiert, daß in ihn für die Inoden-Datei eine neue Wurzelinode eingeschrieben wird. Der Fsinfo-Block wird zweimal geschrieben. Zuerst wird er an eine Stelle und dann an eine zweite Stelle geschrieben. Die zwei Schreibvorgänge werden derart ausgeführt, daß dann, wenn während des einen oder des anderen Schreibvorgangs ein Systemzusammenbruch erfolgt, auf der Platte ein selbstkonsistentes Dateisystem vorliegt. Bei einem Systemzusammenbruch während des Schreibvorgangs des zweiten Fsinfo-Blocks ist dann entweder der neue Konsistenzpunkt verfügbar, oder es ist der vorhergehende Konsistenzpunkt (auf der Platte vor Beginn des jüngsten Konsistenzpunkts) vorhanden, wenn der erste Fsinfo-Block ausgefallen ist. Wenn das Dateisystem nach einem Systemausfall neu gestartet wird, wird die höchste Generationenzählung für einen Konsistenzpunkt in den Fsinfo-Blöcken mit einem korrekten Prüfsummenwert verwendet. Dies wird weiter unten noch näher erläutert.
  • Im Schritt 550 wird der Konsistenzpunkt abgeschlossen. Dies macht es erforderlich, daß jegliche unsaubere Inoden, die, weil sie nicht Teil des Konsistenzpunkts waren, neu in die Warteschlange gestellt werden. Sämtliche Dioden, die ihren Zustand während des Konsistenzpunkts geändert haben, werden in die Konsistenzpunkt-Warteschlange (CP_WAIT) gestellt. Die CP_WAIT-Warteschlange enthält Inoden, die sich vor Abschluß des Schritts 540 geändert haben, jedoch nach dem Schritt 510, wenn der Konsistenzpunkt gestartet ist. Nach Abschluß des Konsistenzpunkts werden die Inoden in der CP_WAIT-Warteschlange neu eingeordnet, entsprechend der regulären Liste von Dioden mit unsauberen Puffern und der Liste von unsauberen Inoden ohne unsaubere Puffer.
  • Einzelordnungsbeschränkung des Konsistenzpunkts
  • Wie in den Fig. 20A-20C dargestellt ist, besitzt die vorliegende Erfindung eine Einzelordnungsbeschränkung. Die Einzelordnungsbeschränkung besagt, daß der Fsinfo-Block 1810 nur auf Platte geschrieben wird, nach dem sämtliche übrigen Blöcke auf die Platte geschrieben sind. Das Schreiben des Fsinfo-Blocks 1810 ist elementar, weil ansonsten das gesamte Dateisystem 1830 verloren gehen könnte. Damit erfordert das WAFL- Dateisystem, daß der Fsinfo-Block 1810 auf einmal geschrieben wird und sich nicht in einem inkonsistenten Zustand befindet. Wie in Fig. 15 gezeigt ist, enthält jeder der Fsinfo-Blöcke 1810 (1510) eine Prüfsumme 1510C und eine Generationenzählung 1510D.
  • Fig. 20A veranschaulicht das Aktualisieren der Generationenzählung 1810D und 1870D der Fsinfo-Blöcke 1810 und 1870. Jedesmal, wenn ein Konsistenzpunkt (oder Schnappschuß) ausgeführt wird, wird auch die Generationenzählung des Fsinfo-Blocks aktualisiert. Fig. 20A zeigt zwei Fsinfo-Blöcke 1810 und 1870 mit Generationenzählungen 1810D und 1870D, die den gleichen Wert N aufweisen, was einen Konsistenzpunkt für das Dateisystem angibt. Beide Fsinfo-Blöcke referenzieren den vorausgehenden Konsistenzpunkt (das alte Dateisystem auf der Platte) 1830. Eine neue Version des Dateisystems existiert auf der Platte und wird als neuer Konsistenzpunkt 1831 referenziert. Die Generationenzählung wird bei jedem Konsistenzpunkt erhöht.
  • In Fig. 20B wird die Generationenzählung 1810D des ersten Fsinfo- Blocks 1810 aktualisiert und erhält einen Wert N+1. Dann wird sie auf die Platte geschrieben. Fig. 20B veranschaulicht einen Wert N+1 für die Generationenzählung 1810D des Fsinfo-Blocks 1810, wohingegen die Generationenzählung 1870D des zweiten Fsinfo-Blocks 1870 einen Wert von N hat. Der Fsinfo-Block 1810 referenziert den neuen Konsistenzpunkt 1831, wohingegen der Fsinfo-Block 1870 den alten Konsistenzpunkt 1830 referenziert. Als nächstes wird die Generationenzählung 1870D des Fsinfo- Blocks 1870 aktualisiert und auf Platte geschrieben, wie dies in Fig. 20C dargestellt ist. In Fig. 20C besitzt die Generationenzählung 1870D des Fsinfo-Blocks 1870 einen Wert N+1. Deshalb besitzen beide Fsinfo- Blöcke 1810 und 1870 den gleichen Generationen-Zählerstand N+1.
  • Kommt es zu einem Systemzusammenbruch zwischen zwei Fsinfo-Block- Aktualisierungen, besitzt jede Kopie des Fsinfo-Blocks 1810 und 1870 eine (in dem Diagramm nicht gezeigte) selbstkonsistente Prüfsumme, jedoch weist eine der Generationenzahlen 1810D oder 1870D einen höheren Wert auf. Ein Systemzusammenbruch geschieht, wenn das Dateisystem sich in dem in Fig. 20B gezeigten Zustand befindet. In der bevorzugten Ausführungsform der vorliegenden Erfindung gemäß Fig. 20B wird die Generationenzählung 1810D des Fsinfo-Blocks 1810 vor dem zweiten Fsinfo-Block 1870D aktualisiert. Daher ist die Generationenzählung 1810D (mit dem Wert Eins) größer als die Generationenzählung 1870D des Fsinfo-Blocks 1870. Da die Generationenzählung des ersten Fsinfo- Blocks 1810 größer ist, wird sie zur Wiederherstellung des Dateisystems nach einem Systemzusammenbruch ausgewählt. Dies geschieht deshalb, weil der erste Fsinfo-Block 1810 mehr laufende Daten enthält, was durch seine Generationenzählung 1810D angegeben wird. Falls der erste Fsinfo- Block verfälscht wird, da bei seiner Aktualisierung das System zusammenbricht, so wird die andere Kopie 1870 des Fsinfo-Blocks zur Wiederherstellung des Dateisystems 1830 in konsistentem Zustand verwendet.
  • Erfindungsgemäß ist es nicht möglich, beide Fsinfo-Blöcke 1810 und 1870 gleichzeitig zu aktualisieren. Deshalb existiert in dem Dateisystem mindestens eine gute Kopie des Fsinfo-Blocks 1810 und 1870. Dies macht es möglich, das Dateisystem stets in einem konsistenten Zustand wiederherzustellen.
  • WAFL macht keine speziellen Wiederherstellungsprozeduren erforderlich. Dies unterscheidet es von bekannten Systemen, die von Protokollierung, geordneten Schreibvorgängen und streng geordneten Schreibvorgängen bei der Wiederherstellung Gebrauch machen. Dies deshalb, weil nur Datenverfälschung, gegen die RAID Schutz bietet, oder Software ein WAFL- Dateisystem verfälschen kann. Um Datenverlust bei einem Systemausfall zu vermeiden, kann WAFL ein nicht-flüchtiges Transaktions-Protokoll für sämtliche Operationen führen, die nach dem jüngsten Konsistenzpunkt erfolgt sind. Dieses Protokoll ist völlig unabhängig vom WAFL- Plattenformat und ist nur erforderlich, um zu verhindern, daß bei einem Systemzusammenbruch Operationen verlorengehen. Allerdings ist es nicht erforderlich, die Konsistenz des Dateisystems beizubehalten.
  • Erzeugen eines Konsistenzpunkts
  • Wie oben beschrieben, werden Änderungen des WAFL-Dateisystems streng gesteuert, um das Dateisystem in einem konsistenten Zustand zu halten. Fig. 17A-17H veranschaulichen die Erzeugung eines Konsistenzpunkts für ein WAFL-Dateisystem. Die Erzeugung eines Konsistenzpunkts wird anhand der Fig. 5 und 6 erläutert.
  • In den Fig. 17A-17L sind Puffer, die nicht modifiziert wurden, ohne Sternchen neben sich. Deshalb enthalten Puffer die gleichen Daten wie entsprechende platteninterne Blöcke. Damit läßt sich ein Block in den Speicher laden, er ist gegenüber seiner platteninternen Version jedoch unverändert. Ein Puffer mit einem einzelnen Sternchen (*) daneben bedeutet einen unsauberen Puffer in dem Speicher (seine Daten sind modifiziert). Ein Puffer mit einem doppelten Sternchen (**) neben sich bedeutet einen unsauberen Puffer, dem Plattenspeicherplatz zugewiesen ist. Schließlich ist ein Puffer mit einem Dreifachsternchen (***) ein unsauberer Puffer, der in einen neuen Block auf der Platte eingeschrieben ist. Die Konvention zum Bezeichnen des Zustands von Puffern wird auch bei den Fig. 21A-21E benutzt.
  • Fig. 17A zeigt eine Liste 2390 von Inoden mit unsauberen Puffern, umfassend Inoden 2306A und 2306B. Die Inoden 2306A und 2306B referenzieren Bäume von Puffern, in denen mindestens ein Puffer jedes Baums modifiziert wurde. Zu Beginn werden Konsistenzpunkt-Flags 2391 und 2392 der Inoden 2306A und 2306B gelöscht (0). Während für das vorliegende System eine Liste 2390 von Inoden mit unsauberen Puffern dargestellt ist, sollte dem Fachmann ersichtlich sein, daß andere Listen von Inoden ebenfalls im Speicher existieren können. Beispielsweise wird in dem Speicher eine Liste von Dioden geführt, die unsauber sind, allerdings keine unsauberen Puffer haben. Diese Inoden müssen als in dem Konsistenzpunkt befindlich markiert werden. Sie müssen auf die Platte geräumt werden, damit auch der unsaubere Inhalt der Inoden-Datei auf die Platte geschrieben wird, selbst wenn unsaubere Inoden nicht unsaubere Blöcke referenzieren. Dies geschieht im Schritt 520 in Fig. 5.
  • Fig. 17B ist ein Diagramm, welches ein WAFL-Dateisystem eines vorhergehenden Konsistenzpunkts mit dem Fsinfo-Block 2302, der Inoden- Datei 2346, der blkmap-Datei 2344 sowie Dateien 2340 und 2342 umfaßt. Die Datei 2340 enthält Blöcke 2310-2314, die Daten "A", "B" bzw. "C" enthalten. Die Datei 2342 enthält Datenblöcke 2316-2320 mit Daten "D", "E" bzw. "F". Die blkmap-Datei 2344 enthält den Block 2324. Die Inoden- Datei 2346 enthält zwei 4 KB-Blöcke 2304 und 2306. Der zweite Block 2306 enthält Inoden 2306A-2306C, die die Datei 2340, die Datei 2342 bzw. die blkmap-Datei 2344 referenzieren. Dies ist im Block 2306 durch Auflistung der Dateinummer in der Diode angezeigt. Fsinfo-Block 2302 enthält die Wurzelinode. Die Wurzelinode referenziert die Blöcke 2304 und 2306 der Inoden-Datei 2346. Fig. 17B veranschaulicht einen Baum von Puffern in einem Dateisystem mit Wurzelbildung durch den Fsinfo- Block 2302, welcher die Wurzelinode beinhaltet.
  • Fig. 17C ist ein Diagramm welches zwei modifizierte Puffer für die Blöcke 2314 und 2322 im Speicher veranschaulicht. Das aktive Dateisystem wird so modifiziert, daß der die Daten "C" enthaltende Block 2314 aus der Datei 2340 gelöscht wird. Außerdem werden die im Block 2320 gespeicherten Daten "F" zu "F-Prime" modifiziert und in einem Puffer für den Plattenblock 2322 gespeichert. Es sollte gesehen werden, daß die in Puffern für Plattenblöcke 2314 und 2322 enthaltene modifizierte Daten zu dieser Zeit nur im Speicher existieren. Sämtliche übrigen Blöcke in dem aktiven Dateisystem der Fig. 17C sind nicht modifiziert und deshalb nicht mit einem Sternchen neben ihnen markiert. Allerdings können einige oder sämtliche dieser Blöcke in dem Speicher zugehörige saubere Puffer aufweisen.
  • Fig. 17D ist ein Diagramm, welches die Einträge 2324A-2324M der blkmap-Datei 2344 im Speicher veranschaulicht. Einträge 2324A-2324M sind in einem Puffer für den 4-KB-Block 2324 der blkmap-Datei 2344 enthalten. Wie zuvor beschrieben, sind das BIT0 und BIT31 das FS-BIT bzw. das CP-BIT. Das Konsistenzpunkt-Bit (CP-BIT) wird während eines Konsistenzpunkts gesetzt, um zu garantieren, daß der entsprechende Block nach Beginn, jedoch noch nicht erfolgtem Abschluß eines Konsistenzpunkts modifiziert wird. BIT1 ist das erste Schnappschuß-Bit (wird unten beschrieben). Blkmap-Einträge 2324A und 2324B veranschaulichen, daß gemäß Fig. 17B die 4-KB-Blöcke 2304 und 2306 der Inoden-Datei 2346 in dem aktiven Dateisystem (FS-BIT gleicht 1) und in dem Konsistenzpunkt (CP-BIT gleicht 1) sind. In ähnlicher Weise sind die übrigen Blöcke 2310-2312 und 2316-2320 sowie 2324 in dem aktiven Dateisystem und in dem Konsistenzpunkt. Allerdings sind die Blöcke 2308 und 2322 sowie 2326-2328 weder in dem aktiven Dateisystem noch in dem Konsistenzpunkt (was durch BIT0 bzw. BIT31 angegeben wird). Der Eintrag für den gelöschten Block 2314 hat einen Wert 0 im FS-BIT, was anzeigt, daß er aus dem aktiven Dateisystem entfernt wurde.
  • Im Schritt 510 der Fig. 5 werden sämtliche "unsauberen" Inoden in dem System als im Konsistenzpunkt befindlich markiert. Unsaubere Inoden enthalten sowohl Inoden, die unsauber sind, als auch Inoden, welche unsaubere Puffer referenzieren. Fig. 17I veranschaulicht eine Liste von Inoden mit unsauberen Puffern, wo die Konsistenzpunkt-Flags 2391 und 2392 von Inoden 2306A und 2306B gesetzt (1) sind. Die Inode 2306A referenziert den Block 2314, der Daten "C" der Datei 2340 enthält, die aus dem aktiven Dateisystem zu löschen ist. Die Inode 2306B des Blocks 2306 der Inoden-Datei 2346 referenziert die Datei 2342. Der Block 2320, der die Daten "F" enthält, wurde modifiziert, und es muß ein neuer Block zugewiesen werden, der die Daten "F" enthält. Im Schritt 510 werden die unsauberen Inoden 2306A und 2306B in den Puffer für den Block 2308 einkopiert. Der Puffer für den Block 2306 wird anschließend (im Schritt 530) auf Platte geschrieben. Dies ist in Fig. 17E dargestellt. Die modifizierten Daten existieren nur in dem Speicher, und der Puffer 2308 ist als unsauber markiert. Die Inkonsistenzpunkt-Flags 2391 und 2392 der Inoden 2306A und 2306B werden anschließend gelöscht (0), wie in Fig. 17A dargestellt. Dies gibt die Inoden für die Benutzung durch andere Prozesse frei.
  • Im Schritt 520 werden reguläre Dateien auf Platte geräumt. Damit wird dem Block 2322 Plattenspeicherplatz zugewiesen. Der Block 2314 der Datei 2340 ist zu löschen, so daß mit diesem Block nichts geschieht, bis später dann der Konsistenzpunkt abgeschlossen ist. Der Block 2322 wird im Schritt 520 auf Platte geschrieben. Dies ist in Fig. 17F dargestellt, wo Puffer für die Blöcke 2322 und 2314 auf Platte geschrieben wurden (markiert durch ***). Die Zwischen-Zuordnung von Plattenspeicherraum (**) ist nicht dargestellt. Die Inoden 2308A und 2308B des Blocks 2308 der Inoden-Datei 2346 werden anschließend in die Inoden-Datei geräumt. Die Inode 2308A des Blocks 2308 referenziert Blöcke 2310 und 2312 der Datei 2346. Die Inode 2308B referenziert Blöcke 2316, 2318, 2322 für die Datei 2342. Wie in Fig. 17F gezeigt ist, wird Plattenspeicherplatz für den Block 2308 der Inode 2346 und für den direkten Block 2322 der Datei 2342 zugewiesen. Allerdings ist das Dateisystem selbst noch nicht aktualisiert worden. Damit bleibt das Dateisystem in einem konsistenten Zustand.
  • Im Schritt 530 wird die blkmap-Datei 2344 auf Platte geräumt. Dies ist in Fig. 17G dargestellt, wo die blkmap-Datei 2344 durch ein Sternchen als unsauber gekennzeichnet ist.
  • Im Schritt 610 der Fig. 6 wird die Inode für die blkmap-Datei vorab in die Inoden-Datei geräumt, wie in Fig. 17H gezeigt. Die Inode 2308C wurde in den Block 230B der Inoden-Datei 2346 geräumt. Allerdings referenziert die Inode 2308C immer noch den Block 2324. Im Schritt 620 wird Plattenspeicherraum für die blkmap-Datei 2344 und die Inoden-Datei 2346 zugewiesen. Der Block 2308 wird für die Inoden-Datei 2346 zugewiesen, und Block 2326 wird für die blkmap-Datei 2344 zugewiesen. Wie oben beschrieben, enthält der Block 2308 der Inoden-Datei 2346 eine vorabgeräumte Inode 2308C für die blkmap-Datei 2344. Im Schritt 630 wird die Inode für die blkmap-Datei 2344 in den vorgeräumten Block 2308C in der Inode 2346 geschrieben. Damit wird im Schritt 620 die interne Inode 2308C zum Referenzieren des Blocks 2324 aktualisiert und wird in den Puffer des Speichers kopiert, der den in den Block 2308 zu schreibenden Block 2306 enthält. Dies ist in Fig. 17H dargestellt, wo die Inode 2308C den Block 2326 referenziert.
  • Im Schritt 640 werden die Einträge 2326A-2326L für jeden Block 2304- 2326 in der blkmap-Datei 2344 in Fig. 17J aktualisiert. Blöcke, die sich nach dem Beginn des Konsistenzpunkts in Fig. 17B nicht geändert haben, besitzen in ihren Einträgen dieselben Werte. Die Einträge werden dadurch aktualisiert, daß BIT0 (das FS-Bit) in das Konsistenzpunkt-Bit (BIT31) kopiert wird. Der Block 2306 ist nicht Teil des aktiven Dateisystems, und deshalb ist BIT0 gleich Null (BIT0 wurde im Schritt 620 ausgeschaltet, als der Block 2308 zugewiesen wurde, um neue Daten für diesen Teil der Inoden-Datei aufzunehmen). Dies ist in Fig. 17J für den Eintrag 2326B dargestellt. In ähnlicher Weise ist im Eintrag 2326F für den Block 2314 der Datei 2340 das BIT0 und das BIT31 gleich Null. Block 2320 der Datei 2342 und Block 2324 der blkmap-Datei 2344 werden in ähnlicher Weise gehandhabt, wie dies für die Einträge 2361 bzw. 2326K gezeigt ist. Im Schritt 650 werden der unsaubere Block 2308 der Inoden-Datei 2346 und der unsaubere Block 2326 der blkmap-Datei 2344 auf Platte geschrieben. Dies ist in Fig. 17K durch ein dreifaches Sternchen (***) neben den Blöcken 2308 und 2326 angegeben.
  • Bezugnehmend auf Fig. 5 wird im Schritt 540 der Dateisysteminformationsblock 2302 auf Platte geräumt, und dies geschieht zweimal. Damit ist der Fsinfo-Block 2302 unsauber geworden und wird anschließend auf Platte geschrieben (in Fig. 17L durch ein Dreifachsternchen angedeutet). In Fig. 17L ist ein einzelner Fsinfo-Block 2302 dargestellt. Wie aus dem Diagramm ersichtlich ist, referenziert der Fsinfo-Block 2302 jetzt den Block 2304 und den Block 2308 der Inoden-Datei 2346. In Fig. 17L ist der Block 2306 nicht mehr Bestandteil der Inoden-Datei 2346 des aktiven Dateisystems. In ähnlicher Weise enthält die durch die Inode 2308A der Inoden-Datei 2346 referenzierte Datei 2340 Blöcke 2310 und 2312. Der Block 2314 ist nicht mehr Bestandteil der Datei 2340 innerhalb dieses Konsistenzpunkts. Die Datei 2342 enthält Blöcke 2316, 2318 und 2322 in dem neuen Konsistenzpunkt, während Block 2320 nicht Bestandteil der Datei 2342 ist. Weiterhin referenziert der Block 2308 der Inoden-Datei 2346 eine neue blkmap-Datei 2344 mit dem Block 2326.
  • Wie in Fig. 17L gezeigt ist, wird in einem Konsistenzpunkt das aktive Dateisystem dadurch aktualisiert, daß die Inode der Inoden-Datei 2346 in den Fsinfo-Block 2302 einkopiert wird. Allerdings verbleiben die Blöcke 2314, 2320, 2324 und 2306 des vorhergehenden Konsistenzpunkts auf der Platte. Diese Blöcke werden beim Aktualisieren des Dateisystems niemals überschrieben, um zu garantieren, daß sowohl der alte Konsistenzpunkt 1830 als auch der neue Konsistenzpunkt 1831 auf der Platte vorhanden sind, siehe Fig. 20 und Schritt S40.
  • Schnappschüsse
  • Das WAFL-System arbeitet mit Schnappschüssen. Ein Schnappschuß oder eine Momentaufnahme ist eine nur lesbare Kopie eines gesamten Dateisystems zu einem gegebenen Augenblick, zu welchem der Schnappschuß erzeugt wird. Ein neu erzeugter Schnappschuß bezieht sich auf exakt dieselben Plattenblöcke, wie dies das aktive Dateisystem tut. Deshalb wird er innerhalb einer kurzen Zeitspanne erzeugt und verbraucht keinen zusätzlichen Plattenspeicherplatz. Nur wenn Datenblöcke innerhalb des aktiven Dateisystems modifiziert und in neue Stellen auf der Platte geschrieben werden, beginnt der Schnappschuß, besonderen Platz zu beanspruchen.
  • WAFL hält bis zu 20 unterschiedliche Schnappschüsse, die von 1 bis 20 numeriert sind. Damit ermöglicht WAFL die Erzeugung mehrfacher "Klone" desselben Dateisystems. Jeder Schnappschuß wird durch eine Schnappschuß-Inode repräsentiert, die ähnlich der Darstellung des aktiven Dateisystems durch eine Wurzelinode ist. Schnappschüsse werden erzeugt durch Duplizieren der Wurzeldatenstruktur des Dateisystems. In der bevorzugten Ausführungsform ist die Wurzeldatenstruktur die Wurzelinode.
  • Allerdings könnte auch jede andere Datenstruktur verwendet werden, die repräsentativ für ein gesamtes Dateisystem ist. Die Schnappschuß-Inoden befinden sich an einer festen Stelle innerhalb der Inoden-Datei. Die Begrenzung auf 20 Schnappschüsse wird durch die Größe der Blockabbild- Einträge bestimmt. WAFL erfordert zwei Schritte zum Erzeugen eines neuen Schnappschusses N: Kopieren der Wurzelanode in die Anode für den Schnappschuß N und Kopieren des Bits 0 in das Bit N jedes Blockabbild-Eintrags innerhalb der blkmap-Datei. Bit0 gibt die Blöcke an, die von dem Baum unterhalb der Wurzelinode referenziert werden.
  • Das Ergebnis ist ein neuer Dateisystembaum, dessen Wurzel gebildet wird durch die Schnappschuß-Inode N, die exakt dieselben Plattenblöcke referenziert wie die Wurzelinode. Durch Einstellen eines entsprechenden Bits in der Blockabbildung für jeden Block in dem Schnappschuß wird verhindert, daß Schnappschuß-Blöcke freigesetzt werden, selbst wenn die aktive Datei die Schnappschuß-Blöcke nicht mehr verwendet. Da WAFL stets neue Daten auf unbenutzte Speicherplätze schreibt, ändert sich der Schnappschuß-Baum selbst dann nicht, wenn das aktive Dateisystem sich ändert. Da ein neu erzeugter Schnappschuß-Baum exakt die gleichen Blöcke wie die Wurzelinode referenziert, verbraucht er keinen zusätzlichen Plattenspeicherplatz. Im Lauf der Zeit referenziert der Schnappschuß Plattenblöcke, die ansonsten freigesetzt würden. Damit benutzen im Verlauf der Zeit der Schnappschuß und das aktive Dateisystem immer weniger Blöcke, so daß der von dem Schnappschuß beanspruchte Raum zunimmt. Schnappschüsse können gelöscht werden, wenn sie eine nicht mehr akzeptierbare Anzahl von Plattenblöcken belegen.
  • Die Liste aktiver Schnappschüsse wird zusammen mit den Namen der Schnappschüsse in einer Schnappschuß-Verzeichnis genannten Metadaten- Datei abgespeichert. Der Plattenzustand wird in der oben beschriebenen Weise aktualisiert. Wie bei sämtlichen anderen Änderungen erfolgt die Aktualisierung durch automatisches Weiterschreiten von einem Konsistenzpunkt zum anderen. Modifizierte Blöcke werden in unbenutzte Plätze auf der Platte geschrieben, woraufhin eine neue Wurzelinode, welche das aktualisierte Dateisystem beschreibt, geschrieben wird.
  • Überblick über Schnappschüsse
  • Fig. 18A ist ein Diagramm des Dateisystems 1830, bevor ein Schnappschuß aufgenommen wird, wobei Umwege-Ebenen entfernt wurden, um einen einfacheren Überblick über das WAFL-Dateisystem zu ermöglichen. Das Dateisystem 1830 repräsentiert das in Fig. 16 gezeigte Dateisystem 1690. Das Dateisystem 1830 besteht aus Blöcken 1812 bis 1820. Die Inode der Inoden-Datei ist in dem Fsinfo-Block 1810 enthalten. Während eine einzelne Kopie des Fsinfo-Blocks 1810 in Fig. 18A dargestellt ist, versteht sich natürlich, daß auf der Platte eine zweite Kopie des Fsinfo-Blocks vorhanden ist. Die in dem Fsinfo-Block 1810 enthaltene Inode 1810A enthält 16 Zeiger, die auf 16 Blöcke mit gleicher Umwegeebene zeigen. Die Blöcke 1810-1820 in Fig. 18A repräsentieren sämtliche Blöcke innerhalb des Dateisystems 1830 einschließlich direkte Blöcke, indirekte Blöcke, etc. Obschon lediglich fünf Blöcke 1812-1820 dargestellt sind, kann jeder Block auf weitere Blöcke verweisen.
  • Fig. 18B ist ein Diagramm, das die Erzeugung eines Schnappschusses zeigen. Der Schnappschuß wird für das gesamte Dateisystem 1830 dadurch erstellt, daß einfach die Inode 1810A der Inoden-Datei kopiert wird, die in dem Fsinfo-Block 1810 gespeichert ist, wobei die Inode in die Schnappschuß-Inode 1822 einkopiert wird. Durch Einkopieren der Inode 1810A der Inoden-Datei wird eine neue Datei von Dioden erzeugt, die das gleiche Dateisystem wie das aktive Dateisystem repräsentiert, weil die Inode 1810A der Inoden-Datei selbst kopiert wird. Es brauchen keine weiteren Blöcke 1812-1820 dupliziert zu werden. Die kopierte Inode oder Schnappschuß-Inode 1822 wird dann in die Inoden-Datei einkopiert, was einen Block innerhalb der Inoden-Datei unsauber macht. Für eine Inoden-Datei aus einer oder mehreren Umwegeebenen wird jeder indirekte Block wiederum unsauber gemacht. Dieser Vorgang des Verunreinigens von Blöcken schreitet durch sämtliche Umwegeebenen. Jeder 4-KB-Block inner halb der Inoden-Datei auf der Platte enthält 32 Inoden, wo jede Inode 128 Bytes Länge aufweist.
  • Die neue Schnappschuß-Inode 1822 nach Fig. 18B verweist zurück auf die Blöcke 1812-1820 höchster Umwegeebene, referenziert durch die Inode 1810A der Inoden-Datei, wenn der Schnappschuß 1822 aufgenommen wird. Die Inoden-Datei selbst ist eine rekursive Struktur, weil sie Schnappschüsse des Dateisystems 1830 beinhaltet. Jeder Schnappschuß 1822 ist eine Kopie der Inode 1810A der Inoden-Datei, welche in die Inoden-Datei einkopiert wird.
  • Fig. 18C ist ein Diagramm, das das aktive Dateisystem 1830 und den Schnappschuß 1822 für den Zeitpunkt veranschaulicht, zu dem eine Änderung des aktiven Dateisystems 1830 nach Aufnahme des Schnappschusses 1822 stattfindet. Wie in dem Diagramm gezeigt, wird der Block 1818 mit den Daten "D" nach Aufnahme des Schnappschusses (Fig. 18B) modifiziert, und deshalb wird ein neuer Block 1824 mit Daten "Dprime" für das aktive Dateisystem 1830 zugeordnet. Damit enthält das aktive Dateisystem 1830 Blöcke 1812-1816 und 1820-1824, es enthält aber nicht den Block 20 1818 mit den Daten "D". Allerdings wird der die Daten "D" enthaltende Block 1818 deshalb nicht überschrieben, weil das WAFL-System keine Blöcke auf der Platte überschreibt. Der Block 1818 wird gegen ein Überschreiben von einem Schnappschuß-Bit geschützt, welches in dem Blockabbild-Eintrag für den Block 1818 gesetzt wird. Deshalb zeigt der Schnappschuß 1822 immer noch auf den unmodifizierten Block 1818 ebenso wie auf die Blöcke 1812-1816 und 1820. Die vorliegende Erfindung unterscheidet sich gemäß den Fig. 18A-18C von bekannten Systemen, die "Klone" eines Dateisystems erzeugen, wobei ein Klon eine Kopie sämtlicher Blöcke einer Diodendatei auf einer Platte ist. Damit 30 werden die gesamten Inhalte der herkömmlichen Inoden-Dateien dupliziert, was große Mengen (MB) an Plattenspeicherplatz ebenso erfordert wie beträchtliche Zeit für Platten-E/A-Operationen.
  • Wenn das aktive Dateisystem 1830 in Fig. 18C modifiziert wird, benötigt es deshalb mehr Plattenspeicherraum, weil das Dateisystem mit den Blöcken 1812-1820 nicht überschrieben wird. In Fig. 18C ist der Block 1818 als ein direkter Block dargestellt. Bei einem wirklichen Dateisystem allerdings kann der Block 1818 auch durch einen indirekten Block mittels Zeiger angesprochen werden. Wenn also der Block 1818 modifiziert und an einen neuer Stelle der Platte als Block 124 abgespeichert wird, werden auch die entsprechenden direkten und indirekten Blöcke kopiert und dem aktiven Dateisystem 1830 zugeordnet.
  • Fig. 19 ist ein Diagramm, welches die Änderungen veranschaulicht, die im Block 1824 gemäß Fig. 18C auftreten. Der Block 1824 nach Fig. 18C ist in der gestrichelten Linie 1824 in Fig. 19 dargestellt. Fig. 19 veranschaulicht verschiedene Umwegeebenen für den Block 1824 nach Fig. 18C. Der neue Block 1910, welcher gemäß Fig. 18C auf die Platte geschrieben wird, ist in Fig. 19 mit 1910 bezeichnet. Weil der Block 1824 einen Datenblock 1910 enthält, welcher modifizierte Daten beinhaltet, die durch einen doppelten Umweg oder doppelten Verweis referenziert werden, werden auch zwei weitere Blöcke 1918 und 1926 modifiziert. Der Zeiger 1924 eines einfach-indirekten Blocks 1918 referenziert einen neuen Block 1910, und deshalb muß der Block 1918 an eine neue Stelle der Platte geschrieben werden. In ähnlicher Weise wird der Zeiger 1928 des indirekten Blocks 1926 modifiziert, da er auf den Block 1918 zeigt. Deshalb kann gemäß Fig. 19 das Modifizieren eines Datenblocks 1910 zur Folge haben, daß mehrere indirekte Blöcke 1918 und 1926 ebenfalls modifiziert werden. Dies macht es erforderlich, auch die Blöcke 1918 und 1926 auf eine neue Stelle der Platte zu schreiben.
  • Da die direkten und indirekten Blöcke 1910, 1918 und 1926 des Datenblocks 1824 in Fig. 18C geändert und an eine neue Stelle geschrieben wurden, wird die Inode in der Inoden-Datei in einen neuen Block geschrieben. Der modifizierte Block der Inoden-Datei erhält einen neuen Block auf der Platte, da Daten nicht überschrieben werden können.
  • Wie in Fig. 19 gezeigt ist, wird auf den Block 1910 durch indirekte Blöcke 1926 bzw. 1918 gezeigt. Wenn also der Block 1910 modifiziert und an einer neuen Stelle der Platte gespeichert wird, werden auch die entsprechenden direkten und indirekten Blöcke kopiert und dem aktiven Dateisystem zugeordnet. Damit muß eine Reihe von Datenstrukturen aktualisiert werden. Das Ändern des direkten Blocks 1910 und der indirekten Blöcke 1918 und 1926 veranlaßt, daß die blkmap-Datei modifiziert werden muß.
  • Die Schlüsseldateilstrukturen für Schnappschüsse sind die Blockabbild- Einträge, wo jeder Eintrag mehrere Bits für einen Schnappschuß aufweist. Dies ermöglicht es, daß mehrere Schnappschüsse erzeugt werden. Ein Schnappschuß ist ein Bild eines Baums von Blöcken, die das Dateisystem (1830 in Fig. 18) bilden. Solange keine neuen Daten auf Blöcke des Schnappschusses geschrieben werden, wird das durch den Schnappschuß repräsentierte Dateisystem nicht geändert. Ein Schnappschuß ist einem Konsistenzpunkt ähnlich.
  • Das erfindungsgemäße Dateisystem ist vollständig konsistent nach dem letzten Mal des Schreibens der Fsinfo-Blöcke 1810 und 1870. Wenn daher das System einen Netzausfall erleidet, entsteht beim Neustart das Dateisystem 1830 in konsistentem Zustand. Da 8-32 MB Plattenspeicherraum bei einem typischen bekannten "Klon" eines 1-GB-Dateisystems verwendet werden, führen Klone nicht zu Konsistenzpunkten oder Schnappschüssen wie die vorliegende Erfindung.
  • Bezugnehmend auf Fig. 22 existieren zwei frühere Schnappschüsse 2110A und 2110B auf der Platte. Zu dem Zeitpunkt, zu dem ein dritter Schnappschuß entsteht, wird die auf das aktive Dateisystem zeigende Wurzelinode in den Inodeneintrag 2110C für den dritten Schnappschuß in der Inoden-Datei 2110 kopiert. Gleichzeitig zeigt in dem durchgehenden Konsistenzpunkt ein Flag an, daß der Schnappschuß 3 erzeugt wird. Das gesamte Dateisystem wird verarbeitet, indem geprüft wird, ob BIT0 für jeden Eintrag innerhalb der blkmap-Datei gesetzt (1) oder gelöscht (0) ist. Sämtliche BIT0-Werte für jeden Blockabbild-Eintrag werden in die Ebene für den Schnappschuß 3 kopiert. Nach Beendigung ist jeder aktive Block 2110-2116 und 1207 in dem Dateisystem zu diesem Zeitpunkt in dem Schnappschuß aufgenommen.
  • Blöcke, die durchgängig für eine gegebene Zeitspanne auf der Platte existiert haben, befinden sich ebenfalls in den entsprechenden Schnappschüssen 2110A-2110B, die dem dritten Schnappschuß 2110C vorausgehen. Wenn ein Block in dem Dateisystem für eine ausreichend lange Zeitspanne verblieben ist, ist er in sämtlichen Schnappschüssen enthalten. Der Block 1207 ist ein derartiger Block. Wie in Fig. 22 gezeigt ist, wird der Block 1207 durch die Inode 2210G der aktiven Inoden-Datei referenziert, außerdem indirekt durch die Schnappschüsse 1, 2 und 3.
  • Die sequentielle Reihenfolge von Schnappschüssen repräsentiert nicht unbedingt eine chronologische Reihenfolge von Dateisystem-Kopien. Jeder einzelne Schnappschuß in einem Dateisystem kann zu jeder gegebenen Zeit gelöscht werden, um dadurch einen Eintrag für nachfolgenden Gebrauch verfügbar zu machen. Wenn BIT0 eines blkmap-Eintrags, der das aktive Dateisystem referenziert, gelöscht wird (was bedeutet, daß der Block aus dem aktiven Dateisystem gelöscht wurde), so kann der Block nicht noch einmal benutzt werden, wenn irgendeines der Schnappschuß- Referenzbits gesetzt wird. Dies deshalb, weil der Block Teil eines Schnappschusses ist, der noch in Gebrauch ist. Ein Block kann nur neu verwendet werden, wenn sämtliche Bits in dem blkmap-Eintrag auf Null gesetzt sind.
  • Algorithmus zum Erzeugen eines Schnappschusses
  • Das Erzeugen eines Schnappschusses entspricht etwa exakt der Erzeugung eines regulären Konsistenzpunkts gemäß Fig. 5. Im Schritt 510 werden sämtliche unsauberen Inoden als in dem Konsistenzpunkt befindlich markiert. Im Schritt 520 werden reguläre Dateien auf die Platte geräumt. Im Schritt 520 werden Spezialdateien (das heißt die Inoden-Datei und die blkmap-Datei) auf Platte geräumt. Im Schritt 540 werden Fsinfo-Blöcke auf Platte geräumt. Im Schritt 550 werden sämtliche Inoden, die sich nicht im Konsistenzpunkt befanden, verarbeitet. Fig. 5 wird oben im einzelnen beschrieben. Tatsächlich erfolgt das Erzeugen eines Schnappschusses als Teil der Erzeugung eines Konsistenzpunkts. Der Hauptunterschied zwischen der Erzeugung eines Schnappschusses und der eines Konsistenzpunkts besteht darin, daß sämtliche Einträge der blkmap-Datei das aktive FS-Bit in das Schnappschuß-Bit einkopiert haben. Das Schnappschuß-Bit repräsentiert den entsprechenden Schnappschuß, um die Blöcke in dem Schnappschuß gegen Überschreiben zu schützen. Das Erzeugen und das Löschen von Schnappschüssen erfolgt im Schritt 530, da dies der einzige Punkt ist, an dem das Dateisystem vollständig selbst konsistent ist und auf dem Wege zur Platte ist.
  • Im Schritt 530 werden unterschiedliche Schritte durchgeführt, die dann in Fig. 6 dargestellt sind, und zwar für einen Konsistenzpunkt, wenn ein neuer Schnappschuß erzeugt wird. Die Schritte sind sehr ähnlich jenen für einen regulären Konsistenzpunkt. Fig. 7 ist ein Flußdiagramm, welches die Schritte zeigt, welche der Schritt 530 zum Erzeugen eines Schnappschusses umfaßt. Wie oben beschrieben, weist der Schritt 530 Plattenspeicherplatz für die blkmap-Datei und die Inoden-Datei zu und kopiert das aktive FS-Bit in das Schnappschuß-Bit, welches den entsprechenden Schnappschuß repräsentiert, um die Blöcke in dem Schnappschuß gegen Überschreiben zu schützen.
  • Im Schritt 710 werden die Inoden der blkmap-Datei und des Schnappschusses auf Platte vorgeräumt. Zusätzlich zu dem Räumen der Inode und der blkmap-Datei in einen Block der Inoden-Datei (wie im Schritt 610 der Fig. 6 für einen Konsistenzpunkt), wird die Inode des erzeugten Schnappschusses auch in einen Block der Inoden-Datei geräumt. Dies garantiert, daß der Block in der Inoden-Datei, der die Inode des Schnappschusses enthält, unsauber ist.
  • Im Schritt 720 wird jeder Block in der blkmap-Datei unsauber gemacht. Im Schritt 760 (unten beschrieben) werden sämtliche Einträge in der blkmap- Datei aktualisiert, und nicht nur die Einträge in unsauberen Blöcken. Somit müssen sämtliche Blöcke der blkmap-Datei hier als unsauber markiert werden, um zu garantieren, daß der Schritt 730 für sie Plattenspeicherplatz zum Schreiben zuweist.
  • Im Schritt 730 wird für sämtliche unsauberen Blöcke in der Inode und in blkmap-Dateien Plattenspeicherplatz zugewiesen. Die unsauberen Blöcke enthalten den Block in der Inoden-Datei, welche die Inode der blkmap- Datei, die unsauber ist, enthält, außerdem den Block, der die Inode für den neuen Schnappschuß enthält.
  • Im Schritt 740 werden die Inhalte der Wurzelinode für das Dateisystem in die Inode des Schnappschusses innerhalb der Inoden-Datei kopiert. Zu dieser Zeit wird jedem Block, der Teil des neuen Konsistenzpunkts ist und der auf Platte geschrieben wird, Plattenspeicherplatz zugeordnet. Damit kopiert ein Duplizieren der Wurzelinode in die Schnappschuß-Inode in wirksamer Weise das gesamte aktive Dateisystem. Die aktuellen Blöcke, die in dem Schnappschuß enthalten sind, sind die gleichen Blöcke des aktiven Dateisystems.
  • Im Schritt 750 werden die Inoden der blkmap-Datei und der Schnappschuß in die Inoden-Datei kopiert.
  • Im Schritt 760 werden Einträge in der blkmap-Datei aktualisiert. Zusätzlich zu dem Kopieren des aktiven FS-Bits in das CP-Bit für die Einträge wird das aktive FS-Bit auch in das dem neuen Schnappschuß entsprechende Schnappschuß-Bit kopiert.
  • Im Schritt 770 werden sämtliche unsauberen Blöcke in den blkmap- und Inoden-Dateien auf Platte geschrieben.
  • Schließlich werden zu einer gewissen Zeit Schnappschüsse selbst aus dem Dateisystem entfernt, Schritt 760. Ein Schnappschuß wird dadurch aus dem Dateisystem entfernt, daß sein Schnappschuß-Inodeneintrag innerhalb der Inoden-Datei des aktiven Dateisystems gelöscht und jedes Bit, das der Schnappschußnummer in jedem Eintrag innerhalb der blkmap-Datei entspricht, gelöscht wird. Es erfolgt eine Zählung auch für jedes Bit des Schnappschusses in sämtlichen blkmap-Einträgen, die aus einem eingestellten Wert gelöscht werden, um dadurch eine Zählung der durch Löschen des Schnappschusses freigesetzten Blöcke zu schaffen (entsprechend der freigesetzten Menge an Plattenspeicherplatz). Das System entscheidet anhand des ältesten Schnappschusses, welcher Schnappschuß gelöscht werden soll. Auch Benutzer können von Hand spezifizierte Schnappschüsse löschen.
  • Die vorliegende Erfindung begrenzt die Gesamtanzahl von Schnappschüssen und führt eine blkmap-Datei, die Einträge mit Mehrfach-Bits zum Verfolgen der Schnappschüsse anstelle der Verwendung von Zeigern mit einem COW-Bit, wie dies in Episode der Fall ist, aufweist. Ein nicht verwendeter Block enthält für sämtliche Bits in seinem blkmap-Datei-Eintrag nur Nullen. Im Verlauf der Zeit wird das BIT0 für das aktive Dateisystem üblicherweise zu einem gegebenen Zeitpunkt eingeschaltet. Das Setzen des BIT0 identifiziert den entsprechenden Block als in dem aktiven Dateisystem zugeordnet. Wie oben angegeben, werden sämtliche Schnappschuß-Bits zu Beginn auf Null gesetzt. Wenn das aktive Dateibit vor Setzen irgendeines Schnappschuß-Bits gelöscht ist, ist der Block in keinem auf Platte gespeicherten Schnappschuß vorhanden. Deshalb steht der Block sofort zur Neuzuweisung zur Verfügung und kann später aus einem Schnappschuß nicht wiedergewonnen werden.
  • Erzeugung eines Schnappschusses
  • Wie oben beschrieben, ist ein Schnappschuß einem Konsistenzpunkt sehr ähnlich. Deshalb soll die Erzeugung eines Schnappschusses unter Bezugnahme auf die Unterschiede zwischen ihr und der Erzeugung eines Konsistenzpunkts gemäß Fig. 17A-17L erläutert werden. Fig. 21A-21F zeigen die Unterschiede bei der Erzeugung eines Schnappschusses.
  • Fig. 17A-17D zeigen den Zustand des WAFL-Dateisystems, wenn ein Schnappschuß begonnen wird. Sämtliche unsauberen Inoden werden als in dem Konsistenzpunkt befindlich markiert, Schritt 510, und im Schritt 520 werden die regulären Dateien auf Platte geräumt. Damit ist die Anfangsverarbeitung für einen Schnappschuß identisch mit der eines Konsistenzpunkts. Die Verarbeitung für einen Schnappschuß unterscheidet sich im Schritt 530 von der des Konsistenzpunkts. Im folgenden wird die Verarbeitung eines Schnappschusses gemäß Fig. 7 erläutert.
  • Die folgende Beschreibung gilt für einen zweiten Schnappschuß des WAFL-Dateisystems. Ein erster Schnappschuß ist in den blkmap- Einträgen der Fig. 17C aufgezeichnet. Wie in den Einträgen 2324A- 2324M, den Blöcken 2304-2306, 2310-2320 und 2324 dargestellt, sind diese in dem ersten Schnappschuß enthalten. Sämtliche anderen Schnappschuß-Bits (BIT1-BIT20) haben angenommener Weise den Wert 0, was anzeigt, daß ein entsprechender Schnappschuß auf der Platte nicht vorliegt. Fig. 21A zeigt das Dateisystem nach Abschluß der Schritte 510 und 520.
  • Im Schritt 710 werden Inoden 2308C und 2308D des Schnappschusses 2 und der blkmap-Datei 2344 auf Platte geräumt. Dies stellt sicher, daß der Block der Inoden-Datei, der die Schnappschuß-2-Inode enthalten wird, unsauber ist. In Fig. 21B werden Inoden 2308C und 2308D für den Schnappschuß 2 und für die blkmap-Datei 2344 vorgeräumt.
  • Im Schritt 720 ist die gesamte blkmap-Datei 2344 unsauber gemacht. Dies veranlaßt die gesamte blkmap-Datei 2344, im Schritt 730 Plattenraum zugewiesen zu bekommen. Im Schritt 730 wird Plattenraum für unsaubere Blöcke 2308 und 2326 für die Inoden-Datei 2346 und die blkmap-Datei 2344 gemäß Fig. 21 C zugewiesen. Angedeutet ist dies durch ein Dreifachsternchen (***) neben den Blöcken 2308 und 2326. Dies unterscheidet sich von der Erzeugung eines Konsistenzpunkts; bei dem. Plattenspeicherplatz nur für Blöcke zugewiesen ist, deren Einträge sich im Schritt 620 der Fig. 6 innerhalb der blkmap-Datei 2344 geändert haben. Die blkmap- Datei 2344 nach Fig. 21C enthält einen einzelnen Block 2324. Wenn al lerdings die blkmap-Datei 2344 mehr als einen Block umfaßt, so wird im Schritt 730 Plattenspeicherplatz für sämtliche Blöcke zugewiesen.
  • Im Schritt 740 wird die Wurzelinode für das neue Dateisystem in die Inode 2308D für Schnappschuß 2 kopiert. Im Schritt 750 werden die Inoden 2308C und 2308D der blkmap-Datei 2344 und der Schnappschuß 2 auf Platte geräumt, wie in Fig. 21D gezeigt ist. Das Diagramm veranschaulicht, daß die Schnappschuß-2-Inode 2308D Blöcke 2304 und 2308, nicht aber Block 2306 referenziert.
  • Im Schritt 760 werden Einträge 2326A-2326L im Block 2326 der blkmap- Datei 2344 gemäß Fig. 21 E aktualisiert. Das Diagramm zeigt, daß das Schnappschuß-2-Bit (BIT2) ebenso wie das FS-BIT und das CP-BIT für jeden Eintrag 2326A-2326L aktualisiert wird. Damit sind die Blöcke 2304, 2308-2312, 2316-2318, 2322 und 2326 im Schnappschuß 2 enthalten, die Blöcke 2306, 2314, 2320 und 2324 jedoch nicht. Im Schritt 770 werden die unsauberen Blöcke 2308 und 2326 auf Platte geschrieben.
  • Die weitere Verarbeitung des Schnappschusses 2 ist identisch mit der Erzeugung eines Konsistenzpunkts, wie dies in Fig. 5 gezeigt ist. Im Schritt 540 werden zwei Fsinfo-Blöcke auf Platte geräumt. Fig. 21F repräsentiert das WAFL-Dateisystem in einem konsistenten Zustand anschließend an diesen Schritt. Die Dateien 2340, 2342, 2344 und 2346 des konsistenten Dateisystems nach Abschluß des Schritts 540 sind durch gestrichelte Linien in Fig. 21F angegeben. Im Schritt 50 wird der Konsistenzpunkt durch Verarbeitung der Inoden, die nicht in dem Konsistenzpunkt waren, abgeschlossen.
  • Zugriffszeit-Überschreibungen
  • Unix-Dateisysteme müssen in jeder Inode eine "Zugriffszeit" (atime von access time) enthalten. Atime gibt den letzten Zeitpunkt des Lesens der Datei an. Er wird jedesmal aktualisiert, wenn ein Zugriff auf die Datei erfolgt. Wenn also eine Datei gelesen wird, wird der Block, der die Inode in der Inoden-Datei enthält, neu geschrieben, um die Inode zu aktualisieren. Dies könnte von Nachteil für die Erzeugung von Schnappschüssen deshalb sein, weil als Konsequenz das Lesen einer Datei möglicherweise Speicherplatz auf der Platte benötigt. Außerdem könnte das Lesen sämtlicher Dateien innerhalb des Dateisystems zur Folge haben, daß die gesamte Inoden- Datei dupliziert wird. Die vorliegende Erfindung löst dieses Problem.
  • Wegen des Vorhandenseins von Atime könnte ein Lesevorgang möglicherweise Plattenspeicherplatz verbrauchen, da ein Modifizieren einer Inode zur Folge hat, daß ein neuer Block für die Inoden-Datei auf die Platte geschrieben wird. Außerdem könnte ein Lesevorgang möglicherweise fehlschlagen, wenn ein Dateisystem voll ist, demzufolge ein abnormaler Zustand des Dateisystems auftritt.
  • Im allgemeinen werden Daten auf einer Platte in dem WAFL-Dateisystem nicht überschrieben, um auf der Platte gespeicherte Daten zu schützen. Die einzige Ausnahme dieser Regel besteht darin, daß Atime für eine Inode überschreibt, wie dies in den Fig. 23A-23B gezeigt ist. Wenn ein "Atime-Überschreiben" stattfindet, bestehen die einzigen in einem Block der Inoden-Datei modifizierten Daten in Atime für eine oder mehrere der Inoden, die sie enthält, und der Block wird an derselben Stelle neu geschrieben. Dies ist die einzige Ausnahme innerhalb des WAFL-Systems. Im übrigen werden neue Daten stets auf neue Plattenspeicherplätze geschrieben.
  • In Fig. 23A sind die Atimes 2423 und 2433 einer Inode 2422 in einem alten WAFL-Inoden-Datei-Block 2420 und die Schnappschußinode 2432, die den Block 2420 referenziert, dargestellt. Die Inode 2422 des Blocks 2420 referenziert direkt den Block 2410. Atime 2423 der Inode 2422 ist "4/30 9 : 15 PM", während Atime 2433 der Schnappschuß-Inode 2432 "5/1 10 : 00 AM" ist. Fig. 23A veranschaulicht das Dateisystem vor einem Zugriff auf den direkten Puffer 2410.
  • Fig. 23B veranschaulicht die mode 2422 des direkten Blocks 2410, nachdem auf den direkten Block 2410 zugegriffen wurde. Wie in dem Diagramm dargestellt, wird die Zugriffszeit 2423 der mode 2422 mit der Zugriffszeit 2433 des Schnappschusses 2432, den sie referenziert, überschrieben. Damit wird die Zugriffszeit 2423 der mode 2422 für den direkten Block 2410 "5/1 11 : 23 AM".
  • Das Zulassen des Überschreibens von moden-Datei-Blöcken mit neuen Zugriffszeiten (Atime) führt zu einer leichten Inkonsistenz innerhalb des Schnappschusses. Die Atime für eine Datei in einem Schnappschuß kann tatsächlich später liegen als der Zeitpunkt, zu dem der Schnappschuß erzeugt wurde. Um Benutzer an einem Feststellen dieser Inkonsistenz zu hindern, justiert WAFL den Wert Atime für sämtliche Dateien innerhalb eines Schnappschusses auf diejenige Zeit ein, zu der der Schnappschuß tatsächlich erzeugt wurde, und nicht auf die Zeit, zu der auf die Datei zuletzt zugegriffen wurde. Diese Schnappschußzeit wird in der mode gespeichert, die den Schnappschuß in seiner Gesamtheit beschreibt. Wenn folglich über den Schnappschuß zugegriffen wird, so wird die Zugriffszeit 2423 für die mode 2422 stets in Form "5/1 10 : 00 AM" gemeldet. Dies geschieht sowohl vor dem Aktualisieren, wenn man "4/30 9 : 15 PM" erwarten könnte, als auch nach der Aktualisierung, wenn "5/1 11 : 23 AM" erwartet werden könnte. Erfolgt ein Zugriff durch das aktive Dateisystem, so werden die Zeiten in der Form "4/30 9 : 15 PM" und "5/1 11 : 23 AM" vor bzw. nach dem Aktualisieren gemeldet. Auf diese Weise wird ein Verfahren zum Führen eines Dateisystems in einem konsistenten Zustand und zum Erzeugen von ausschließlich lesbaren Kopien des Dateisystems offenbart.

Claims (2)

1. Verfahren zum Erzeugen eines Konsistenzpunkts, umfassend die Schritte:
Markieren (510) einer Mehrzahl von Inoden, wobei eine Inode eine Dateidefinitionsstruktur ist, die zumindest eine Datei in einem Dateisystem beschreibt, die auf mehrere modifizierte Blöcke in einem Dateisystem verweist, als in einem Konsistenzpunkt befindlich;
Räumen (520) regulärer Dateien sowie Metadateien (530) auf eine Speichereinrichtung;
Räumen (540) mindestens eines Blocks von Dateisysteminformation auf die Speichereinrichtung; und
erneutes Einstellen (550) jeglicher berührter Inoden, die nicht Teil des Konsistenzpunkts waren, in eine Warteschlange.
2. Verfahren nach Anspruch 1, bei dem der Schritt des Räumens von Metadateien auf die Speichereinrichtung weiterhin folgende Schritte beinhaltet:
Vorräumen (610) einer Inode aus einer Blockabbildungsdatei in eine Inodendatei;
Zuweisen (620) von Platz auf der Speichereinrichtung für sämtliche berührten Blöcke in der Inode und den Blockabbildungsdateien;
erneutes Räumen (630) der Inode für die Blockabbildungsdatei;
Aktualisieren (640) einer Mehrzahl von Einträgen in der Blockabbildungsdatei, wobei jeder Eintrag unter den mehreren Einträgen einen Block auf der Speichereinrichtung repräsentiert; und
Schreiben (650) sämtlicher berührter Blöcke in der Blockabbildungsdatei und der Inodendatei auf die Speichereinrichtung.
DE69425658T 1993-06-03 1994-06-02 Anordnung eines dateisystems zum beschreiben beliebiger bereiche Expired - Lifetime DE69425658T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7164393A 1993-06-03 1993-06-03
PCT/US1994/006320 WO1994029807A1 (en) 1993-06-03 1994-06-02 Write anywhere file-system layout

Publications (2)

Publication Number Publication Date
DE69425658D1 DE69425658D1 (de) 2000-09-28
DE69425658T2 true DE69425658T2 (de) 2001-04-19

Family

ID=22102650

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69435146T Expired - Lifetime DE69435146D1 (de) 1993-06-03 1994-06-02 Verfahren und Vorrichtung zum Beschreiben beliebiger Bereiche eines Dateisystems
DE69425658T Expired - Lifetime DE69425658T2 (de) 1993-06-03 1994-06-02 Anordnung eines dateisystems zum beschreiben beliebiger bereiche

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69435146T Expired - Lifetime DE69435146D1 (de) 1993-06-03 1994-06-02 Verfahren und Vorrichtung zum Beschreiben beliebiger Bereiche eines Dateisystems

Country Status (8)

Country Link
US (1) US5819292A (de)
EP (2) EP0702815B1 (de)
JP (1) JP3751018B2 (de)
AT (2) ATE195825T1 (de)
DE (2) DE69435146D1 (de)
DK (1) DK0702815T3 (de)
HK (2) HK1013697A1 (de)
WO (1) WO1994029807A1 (de)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728735B1 (en) 2001-03-12 2004-04-27 Network Appliance, Inc. Restartable dump that produces a consistent filesystem on tapes
US6751635B1 (en) 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US6889228B1 (en) 2001-03-29 2005-05-03 Network Appliance, Inc. Cascading support for mirrored volumes
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US6976189B1 (en) 2002-03-22 2005-12-13 Network Appliance, Inc. Persistent context-based behavior injection or testing of a computing system
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US7231412B2 (en) 1993-06-03 2007-06-12 Network Appliance, Inc. Allocating files in a file system integrated with a raid disk sub-system
US7296073B1 (en) 2000-09-13 2007-11-13 Network Appliance, Inc. Mechanism to survive server failures when using the CIFS protocol
US7328306B1 (en) 2002-02-25 2008-02-05 Network Appliance, Inc. Flexible disabling of disk sets
US7454445B2 (en) 2000-08-18 2008-11-18 Network Appliance, Inc. Write allocation based on storage system map and snapshot
US7694302B1 (en) 2001-04-05 2010-04-06 Network Appliance, Inc. Symmetric multiprocessor synchronization using migrating scheduling domains
US8171480B2 (en) 2004-01-27 2012-05-01 Network Appliance, Inc. Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor
US8347293B2 (en) 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system

Families Citing this family (686)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
EP0701715A4 (de) 1993-06-04 1999-11-17 Network Appliance Corp Verfahren zur paritätsdarstellung in einem raid-untersystem unter verwendung eines nichtflüchtigen speichers
WO1997011426A1 (en) 1995-09-18 1997-03-27 Cyberstorage Systems, Inc. Universal storage management system
DE69621214T2 (de) * 1996-01-31 2002-12-05 Kabushiki Kaisha Toshiba, Kawasaki Ein-Ausgabekontrollverfahren mit Wiederherstellungsfunktion
US5946690A (en) * 1996-12-17 1999-08-31 Inca Technology, Inc. NDC consistency reconnect mechanism
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US5941969A (en) 1997-10-22 1999-08-24 Auspex Systems, Inc. Bridge for direct data storage device access
JP4363676B2 (ja) * 1997-10-31 2009-11-11 株式会社東芝 コンピュータシステム
US6081883A (en) * 1997-12-05 2000-06-27 Auspex Systems, Incorporated Processing system with dynamically allocatable buffer memory
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6175900B1 (en) 1998-02-09 2001-01-16 Microsoft Corporation Hierarchical bitmap-based memory manager
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
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
US6343984B1 (en) 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
US8225002B2 (en) 1999-01-22 2012-07-17 Network Disk, Inc. Data storage and data sharing in a network of heterogeneous computers
US6549988B1 (en) 1999-01-22 2003-04-15 Ilya Gertner Data storage system comprising a network of PCs and method using same
JP4294142B2 (ja) 1999-02-02 2009-07-08 株式会社日立製作所 ディスクサブシステム
US6438714B1 (en) * 1999-03-31 2002-08-20 International Business Machines Corporation Method and apparatus for testing large arrays of storage devices
US7418435B1 (en) * 1999-08-05 2008-08-26 Oracle International Corporation Multi-model access to data
US7734591B1 (en) 1999-08-16 2010-06-08 Netapp, Inc. Coherent device to device data replication
US6961749B1 (en) 1999-08-25 2005-11-01 Network Appliance, Inc. Scalable file server with highly available pairs
EP1912124B8 (de) 1999-10-14 2013-01-09 Bluearc UK Limited Vorrichtung und System zur Ausführung von Betriebsfunktionen
US7337360B2 (en) * 1999-10-19 2008-02-26 Idocrase Investments Llc Stored memory recovery system
US6594780B1 (en) 1999-10-19 2003-07-15 Inasoft, Inc. Operating system and data protection
JP2001142773A (ja) * 1999-11-17 2001-05-25 Fujitsu Ltd 交換システムのデータ管理装置及び記録媒体
US6883120B1 (en) 1999-12-03 2005-04-19 Network Appliance, Inc. Computer assisted automatic error detection and diagnosis of file servers
US6715034B1 (en) 1999-12-13 2004-03-30 Network Appliance, Inc. Switching file system request in a mass storage system
US6418449B1 (en) * 2000-01-06 2002-07-09 Inventec Corporation Method of cloning the file system of a window web operating system by using a bitmap file
US6484186B1 (en) * 2000-02-15 2002-11-19 Novell, Inc. Method for backing up consistent versions of open files
US6647473B1 (en) 2000-02-16 2003-11-11 Microsoft Corporation Kernel-based crash-consistency coordinator
US7150018B2 (en) 2000-02-16 2006-12-12 Microsoft Corporation Method and system for deterministic ordering of software modules
US6473775B1 (en) * 2000-02-16 2002-10-29 Microsoft Corporation System and method for growing differential file on a base volume of a snapshot
US7490092B2 (en) 2000-07-06 2009-02-10 Streamsage, Inc. Method and system for indexing and searching timed media information based upon relevance intervals
US7245291B2 (en) 2000-07-11 2007-07-17 Imran Sharif System and method for internet appliance data entry and navigation
US6980313B2 (en) * 2000-07-11 2005-12-27 Imran Sharif Fax-compatible internet appliance
US20020078445A1 (en) * 2000-07-11 2002-06-20 Imran Sharif Internet appliance for interactive audio/video display using a remote control unit for user input
US20030115167A1 (en) * 2000-07-11 2003-06-19 Imran Sharif Web browser implemented in an Internet appliance
US6728897B1 (en) 2000-07-25 2004-04-27 Network Appliance, Inc. Negotiating takeover in high availability cluster
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
US6732125B1 (en) 2000-09-08 2004-05-04 Storage Technology Corporation Self archiving log structured volume with intrinsic data protection
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6631374B1 (en) * 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US20020051019A1 (en) * 2000-10-31 2002-05-02 De Vorchik David G. Operating system user interface for staged write media
US6618794B1 (en) * 2000-10-31 2003-09-09 Hewlett-Packard Development Company, L.P. System for generating a point-in-time copy of data in a data storage system
DE10058391C2 (de) 2000-11-24 2003-06-18 Siemens Ag Vorrichtung zur Objektbearbeitung
US7346928B1 (en) * 2000-12-01 2008-03-18 Network Appliance, Inc. Decentralized appliance virus scanning
US7778981B2 (en) * 2000-12-01 2010-08-17 Netapp, Inc. Policy engine to control the servicing of requests received by a storage server
US6721739B1 (en) * 2000-12-05 2004-04-13 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency across multiple pages
US6751636B1 (en) 2000-12-05 2004-06-15 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency across multiple instances of a database
US6993523B1 (en) 2000-12-05 2006-01-31 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency in a data base page
US6629198B2 (en) * 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
US7730213B2 (en) * 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6745285B2 (en) 2000-12-18 2004-06-01 Sun Microsystems, Inc. System and method for synchronizing mirrored and striped disk writes
US6931450B2 (en) 2000-12-18 2005-08-16 Sun Microsystems, Inc. Direct access from client to storage device
US6636878B1 (en) * 2001-01-16 2003-10-21 Sun Microsystems, Inc. Mechanism for replicating and maintaining files in a spaced-efficient manner
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US20020161846A1 (en) * 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US6618736B1 (en) 2001-03-09 2003-09-09 Ensim Corporation Template-based creation and archival of file systems
US6668264B1 (en) 2001-04-03 2003-12-23 Network Appliance, Inc. Resynchronization of a target volume with a source volume
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
US7139817B1 (en) 2001-06-12 2006-11-21 Network Appliance, Inc. Managing configuration information for multiple devices
US7478164B1 (en) 2001-06-12 2009-01-13 Netapp, Inc. Methods and apparatus for pacing delivery of streaming media data
US6643654B1 (en) 2001-06-25 2003-11-04 Network Appliance, Inc. System and method for representing named data streams within an on-disk structure of a file system
US7469295B1 (en) 2001-06-25 2008-12-23 Network Appliance, Inc. Modified round robin load balancing technique based on IP identifier
US7249150B1 (en) * 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US7194513B2 (en) * 2001-07-08 2007-03-20 Imran Sharif System and method for using an internet appliance to send/receive digital content files as E-mail attachments
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US6757695B1 (en) 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6920579B1 (en) 2001-08-20 2005-07-19 Network Appliance, Inc. Operator initiated graceful takeover in a node cluster
US7043493B2 (en) * 2001-09-17 2006-05-09 Fujitsu Limited Hierarchical file system and anti-tearing algorithm for a limited-resource computer such as a smart card
US20030149762A1 (en) * 2001-10-05 2003-08-07 Knight Gregory John Storage area network methods and apparatus with history maintenance and removal
US6668336B2 (en) 2001-11-08 2003-12-23 M-Systems Flash Disk Pioneers Ltd. Ruggedized block device driver
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US6871317B1 (en) 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7730153B1 (en) 2001-12-04 2010-06-01 Netapp, Inc. Efficient use of NVRAM during takeover in a node cluster
US7159080B1 (en) * 2001-12-20 2007-01-02 Network Appliance, Inc. System and method for storing storage operating system data in switch ports
US6836832B1 (en) 2001-12-21 2004-12-28 Network Appliance, Inc. System and method for pre-selecting candidate disks based on validity for volume
US6978283B1 (en) 2001-12-21 2005-12-20 Network Appliance, Inc. File system defragmentation technique via write allocation
US7296068B1 (en) * 2001-12-21 2007-11-13 Network Appliance, Inc. System and method for transfering volume ownership in net-worked storage
US7146522B1 (en) 2001-12-21 2006-12-05 Network Appliance, Inc. System and method for allocating spare disks in networked storage
US7650412B2 (en) 2001-12-21 2010-01-19 Netapp, Inc. Systems and method of implementing disk ownership in networked storage
US6895429B2 (en) * 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7613984B2 (en) 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7036043B2 (en) 2001-12-28 2006-04-25 Storage Technology Corporation Data management with virtual recovery mapping and backward moves
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7360034B1 (en) * 2001-12-28 2008-04-15 Network Appliance, Inc. Architecture for creating and maintaining virtual filers on a filer
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7206970B1 (en) 2002-02-07 2007-04-17 Network Appliance, Inc. System and method for diagnostics execution and data capture in a storage system using nonvolatile memory
US7562208B1 (en) * 2002-02-07 2009-07-14 Network Appliance, Inc. Method and system to quarantine system software and configuration
US6829617B2 (en) 2002-02-15 2004-12-07 International Business Machines Corporation Providing a snapshot of a subset of a file system
US6748504B2 (en) 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US7085785B2 (en) 2002-02-15 2006-08-01 International Business Machines Corporation Writable file system snapshot with ditto address feature
US7216135B2 (en) 2002-02-15 2007-05-08 International Business Machines Corporation File system for providing access to a snapshot dataset where disk address in the inode is equal to a ditto address for indicating that the disk address is invalid disk address
US7043503B2 (en) 2002-02-15 2006-05-09 International Business Machines Corporation Ditto address indicating true disk address for actual data blocks stored in one of an inode of the file system and subsequent snapshot
US6959310B2 (en) 2002-02-15 2005-10-25 International Business Machines Corporation Generating data set of the first file system by determining a set of changes between data stored in first snapshot of the first file system, and data stored in second snapshot of the first file system
US6968345B1 (en) 2002-02-27 2005-11-22 Network Appliance, Inc. Technique to enable support for symbolic link access by windows clients
US7039828B1 (en) 2002-02-28 2006-05-02 Network Appliance, Inc. System and method for clustered failover without network support
US7389315B1 (en) 2002-02-28 2008-06-17 Network Appliance, Inc. System and method for byte swapping file access data structures
US6748510B1 (en) 2002-02-28 2004-06-08 Network Appliance, Inc. System and method for verifying disk configuration
US7373364B1 (en) * 2002-03-05 2008-05-13 Network Appliance, Inc. System and method for creating a point-in-time restoration of a database file
US7210068B1 (en) 2002-03-06 2007-04-24 Network Appliance, Inc. System and method for multipath I/O support for fibre channel devices
US7194519B1 (en) 2002-03-15 2007-03-20 Network Appliance, Inc. System and method for administering a filer having a plurality of virtual filers
US7143307B1 (en) 2002-03-15 2006-11-28 Network Appliance, Inc. Remote disaster recovery and data migration using virtual appliance migration
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
US7467167B2 (en) * 2002-03-19 2008-12-16 Network Appliance, Inc. System and method for coalescing a plurality of snapshots
US7051050B2 (en) * 2002-03-19 2006-05-23 Netwrok Appliance, Inc. System and method for restoring a single file from a snapshot
US7007046B2 (en) * 2002-03-19 2006-02-28 Network Appliance, Inc. Format for transmission file system information between a source and a destination
EP1349088B1 (de) * 2002-03-19 2010-11-03 Network Appliance, Inc. System und Verfahren zur Bestimmung und Übertragung von Änderungen in Schnappschüssen
US7043485B2 (en) 2002-03-19 2006-05-09 Network Appliance, Inc. System and method for storage of snapshot metadata in a remote file
US7010553B2 (en) 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
US7225204B2 (en) * 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
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
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7539991B2 (en) * 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
US7418500B1 (en) 2002-03-25 2008-08-26 Network Appliance, Inc. Mechanism for controlled sharing of files in a clustered application environment
US7155458B1 (en) 2002-04-05 2006-12-26 Network Appliance, Inc. Mechanism for distributed atomic creation of client-private files
US7340489B2 (en) * 2002-04-10 2008-03-04 Emc Corporation Virtual storage devices
US7113945B1 (en) * 2002-04-10 2006-09-26 Emc Corporation Virtual storage device that uses volatile memory
US7464125B1 (en) * 2002-04-15 2008-12-09 Ibrix Inc. Checking the validity of blocks and backup duplicates of blocks during block reads
US7707263B1 (en) 2002-05-03 2010-04-27 Netapp, Inc. System and method for associating a network address with a storage device
US7181581B2 (en) * 2002-05-09 2007-02-20 Xiotech Corporation Method and apparatus for mirroring data stored in a mass storage system
JP2003330782A (ja) * 2002-05-10 2003-11-21 Hitachi Ltd 計算機システム
US7546364B2 (en) * 2002-05-16 2009-06-09 Emc Corporation Replication of remote copy data for internet protocol (IP) transmission
US6976146B1 (en) 2002-05-21 2005-12-13 Network Appliance, Inc. System and method for emulating block appended checksums on storage devices by sector stealing
US6857001B2 (en) * 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7783787B1 (en) 2002-06-13 2010-08-24 Netapp, Inc. System and method for reprioritizing high-latency input/output operations
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7386546B1 (en) 2002-07-09 2008-06-10 Network Appliance, Inc. Metadirectory namespace and method for use of the same
US7844577B2 (en) 2002-07-15 2010-11-30 Symantec Corporation System and method for maintaining a backup storage system for a computer system
WO2004012379A2 (en) * 2002-07-30 2004-02-05 Deepfile Corporation Method and apparatus for managing file systems and file-based data storage
US8417678B2 (en) 2002-07-30 2013-04-09 Storediq, Inc. System, method and apparatus for enterprise policy management
US7801894B1 (en) 2004-10-28 2010-09-21 Stored IQ Method and apparatus for harvesting file system metadata
US8612404B2 (en) * 2002-07-30 2013-12-17 Stored Iq, Inc. Harvesting file system metsdata
US6934822B2 (en) * 2002-08-06 2005-08-23 Emc Corporation Organization of multiple snapshot copies in a data storage system
US6957362B2 (en) * 2002-08-06 2005-10-18 Emc Corporation Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US6792518B2 (en) 2002-08-06 2004-09-14 Emc Corporation Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7711539B1 (en) 2002-08-12 2010-05-04 Netapp, Inc. System and method for emulating SCSI reservations using network file access protocols
US6983296B1 (en) 2002-08-12 2006-01-03 Network Appliance, Inc. System and method for tracking modified files in a file system
US7100089B1 (en) 2002-09-06 2006-08-29 3Pardata, Inc. Determining differences between snapshots
US7165156B1 (en) 2002-09-06 2007-01-16 3Pardata, Inc. Read-write snapshots
US7191304B1 (en) 2002-09-06 2007-03-13 3Pardata, Inc. Efficient and reliable virtual volume mapping
US7743031B1 (en) 2002-09-06 2010-06-22 3Par, Inc. Time and space efficient technique for creating virtual volume copies
US6938134B2 (en) * 2002-09-19 2005-08-30 Sun Microsystems, Inc. System for storing block allocation information on multiple snapshots
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7707184B1 (en) 2002-10-09 2010-04-27 Netapp, Inc. System and method for snapshot full backup and hard recovery of a database
US7340486B1 (en) 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
US7152069B1 (en) 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
JP4199993B2 (ja) * 2002-11-27 2008-12-24 株式会社日立製作所 スナップショット取得方法
US7284016B2 (en) 2002-12-03 2007-10-16 Emc Corporation Client-server protocol for directory access of snapshot file systems in a storage system
US7069307B1 (en) 2002-12-20 2006-06-27 Network Appliance, Inc. System and method for inband management of a virtual disk
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
US8015266B1 (en) * 2003-02-07 2011-09-06 Netapp, Inc. System and method for providing persistent node names
US7809693B2 (en) * 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
US7197490B1 (en) 2003-02-10 2007-03-27 Network Appliance, Inc. System and method for lazy-copy sub-volume load balancing in a network attached storage pool
US7991905B1 (en) 2003-02-12 2011-08-02 Netapp, Inc. Adaptively selecting timeouts for streaming media
US7231489B1 (en) 2003-03-03 2007-06-12 Network Appliance, Inc. System and method for coordinating cluster state information
US7117303B1 (en) 2003-03-14 2006-10-03 Network Appliance, Inc. Efficient, robust file handle invalidation
US7155460B2 (en) * 2003-03-18 2006-12-26 Network Appliance, Inc. Write-once-read-many storage system and method for implementing the same
JP4292882B2 (ja) 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US7266654B2 (en) * 2003-03-18 2007-09-04 Hitachi, Ltd. Storage system, server apparatus, and method for creating a plurality of snapshots
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7111194B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. Mirror split brain avoidance
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7111021B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. System and method for efficient space accounting in a file system with snapshots
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors in a raid subsystem
US7231409B1 (en) * 2003-03-21 2007-06-12 Network Appliance, Inc. System and method for reallocating blocks in checkpointing bitmap-based file systems
US7249286B1 (en) 2003-03-24 2007-07-24 Network Appliance, Inc. System and method for automatically diagnosing protocol errors from packet traces
US7383378B1 (en) 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7457982B2 (en) * 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7191437B1 (en) 2003-04-23 2007-03-13 Network Appliance, Inc. System and method for reliable disk firmware update within a networked storage fabric
US7293203B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. System and method for logging disk failure analysis in disk nonvolatile memory
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
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
US7181439B1 (en) * 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7296043B2 (en) * 2003-05-30 2007-11-13 Microsoft Corporation Memory file size adjustment
US7136974B2 (en) * 2003-06-19 2006-11-14 Pillar Data Systems, Inc. Systems and methods of data migration in snapshot operations
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US6959313B2 (en) * 2003-07-08 2005-10-25 Pillar Data Systems, Inc. Snapshots of file systems in data storage systems
US7836029B2 (en) 2003-07-08 2010-11-16 Pillar Data Systems, Inc. Systems and methods of searching for and determining modified blocks in a file system
US20050010592A1 (en) * 2003-07-08 2005-01-13 John Guthrie Method and system for taking a data snapshot
US7379954B2 (en) * 2003-07-08 2008-05-27 Pillar Data Systems, Inc. Management of file system snapshots
US7756844B2 (en) * 2003-07-08 2010-07-13 Pillar Data Systems, Inc. Methods of determining and searching for modified blocks in a file system
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US8856927B1 (en) 2003-07-22 2014-10-07 Acronis International Gmbh System and method for using snapshots for rootkit detection
US7246211B1 (en) 2003-07-22 2007-07-17 Swsoft Holdings, Ltd. System and method for using file system snapshots for online data backup
US7047380B2 (en) 2003-07-22 2006-05-16 Acronis Inc. System and method for using file system snapshots for online data backup
US8074035B1 (en) 2003-07-22 2011-12-06 Acronis, Inc. System and method for using multivolume snapshots for online data backup
US8473693B1 (en) 2003-07-29 2013-06-25 Netapp, Inc. Managing ownership of memory buffers (mbufs)
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7953819B2 (en) * 2003-08-22 2011-05-31 Emc Corporation Multi-protocol sharable virtual storage objects
US7035881B2 (en) * 2003-09-23 2006-04-25 Emc Corporation Organization of read-write snapshot copies in a data storage system
US7865485B2 (en) * 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7555504B2 (en) * 2003-09-23 2009-06-30 Emc Corporation Maintenance of a file version set including read-only and read-write snapshot copies of a production file
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
US7401093B1 (en) * 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7783611B1 (en) * 2003-11-10 2010-08-24 Netapp, Inc. System and method for managing file metadata during consistency points
US7225210B2 (en) * 2003-11-20 2007-05-29 Overland Storage, Inc. Block level data snapshot system and method
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7428558B2 (en) * 2003-11-24 2008-09-23 Emc Corporation Persistent restore of virtual devices
US7333993B2 (en) * 2003-11-25 2008-02-19 Network Appliance, Inc. Adaptive file readahead technique for multiple read streams
US7243089B2 (en) * 2003-11-25 2007-07-10 International Business Machines Corporation System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data
US20070297349A1 (en) * 2003-11-28 2007-12-27 Ofir Arkin Method and System for Collecting Information Relating to a Communication Network
US7409497B1 (en) 2003-12-02 2008-08-05 Network Appliance, Inc. System and method for efficiently guaranteeing data consistency to clients of a storage system cluster
US7698289B2 (en) * 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
WO2005064469A1 (en) 2003-12-19 2005-07-14 Network Appliance, Inc. System and method for supporting asynchronous data replication with very short update intervals
JP4354268B2 (ja) * 2003-12-22 2009-10-28 株式会社河合楽器製作所 信号処理装置
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
US7162662B1 (en) * 2003-12-23 2007-01-09 Network Appliance, Inc. System and method for fault-tolerant synchronization of replica updates for fixed persistent consistency point image consumption
US7039661B1 (en) 2003-12-29 2006-05-02 Veritas Operating Corporation Coordinated dirty block tracking
US7249227B1 (en) * 2003-12-29 2007-07-24 Network Appliance, Inc. System and method for zero copy block protocol write operations
US7340639B1 (en) 2004-01-08 2008-03-04 Network Appliance, Inc. System and method for proxying data access commands in a clustered storage system
US7529836B1 (en) 2004-01-08 2009-05-05 Network Appliance, Inc. Technique for throttling data access requests
US7631148B2 (en) * 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
US7487381B1 (en) 2004-01-08 2009-02-03 Network Appliance, Inc. Technique for verifying a configuration of a storage environment
US7321982B2 (en) * 2004-01-26 2008-01-22 Network Appliance, Inc. System and method for takeover of partner resources in conjunction with coredump
US7266717B2 (en) * 2004-01-26 2007-09-04 Network Appliance, Inc. System and method of selection and communication of a disk for storage of a coredump
US7293195B1 (en) 2004-01-29 2007-11-06 Network Appliance, Inc. System and method for coordinated bringup of a storage appliance in a cluster configuration
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
US8041888B2 (en) 2004-02-05 2011-10-18 Netapp, Inc. System and method for LUN cloning
US7313720B1 (en) 2004-02-12 2007-12-25 Network Appliance, Inc. Technique for increasing the number of persistent consistency point images in a file system
US7440966B2 (en) * 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US7428560B1 (en) 2004-03-12 2008-09-23 Sun Microsystems, Inc. Age segregation for garbage collector
US7340494B1 (en) 2004-03-12 2008-03-04 Sun Microsystems, Inc. Garbage-first garbage collection
US7599951B1 (en) 2004-03-25 2009-10-06 Emc Corporation Continuous data backup
US8086572B2 (en) * 2004-03-30 2011-12-27 International Business Machines Corporation Method, system, and program for restoring data to a file
US8230085B2 (en) * 2004-04-12 2012-07-24 Netapp, Inc. System and method for supporting block-based protocols on a virtual storage appliance executing within a physical storage appliance
US7424574B1 (en) 2004-04-21 2008-09-09 Sun Microsystems, Inc. Method and apparatus for dynamic striping
US7603568B1 (en) 2004-04-21 2009-10-13 Sun Microsystems, Inc. Method and apparatus for self-validating checksums in a file system
US7415653B1 (en) 2004-04-21 2008-08-19 Sun Microsystems, Inc. Method and apparatus for vectored block-level checksum for file system data integrity
US7328144B1 (en) 2004-04-28 2008-02-05 Network Appliance, Inc. System and method for simulating a software protocol stack using an emulated protocol over an emulated network
US8621029B1 (en) 2004-04-28 2013-12-31 Netapp, Inc. System and method for providing remote direct memory access over a transport medium that does not natively support remote direct memory access operations
US7251663B1 (en) 2004-04-30 2007-07-31 Network Appliance, Inc. Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges
US7334095B1 (en) * 2004-04-30 2008-02-19 Network Appliance, Inc. Writable clone of read-only volume
US7334094B2 (en) * 2004-04-30 2008-02-19 Network Appliance, Inc. Online clone volume splitting technique
US7409511B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7430571B2 (en) * 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7409494B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US8996455B2 (en) * 2004-04-30 2015-03-31 Netapp, Inc. System and method for configuring a storage network utilizing a multi-protocol storage appliance
US7412450B1 (en) 2004-05-26 2008-08-12 Sun Microsystems, Inc. Method and apparatus for identifying tampering of data in a file system
US7526622B1 (en) 2004-05-26 2009-04-28 Sun Microsystems, Inc. Method and system for detecting and correcting data errors using checksums and replication
US7281188B1 (en) 2004-05-26 2007-10-09 Sun Microsystems, Inc. Method and system for detecting and correcting data errors using data permutations
US7496586B1 (en) 2004-05-26 2009-02-24 Sun Microsystems, Inc. Method and apparatus for compressing data in a file system
US7562101B1 (en) * 2004-05-28 2009-07-14 Network Appliance, Inc. Block allocation testing
US7437528B1 (en) 2004-08-17 2008-10-14 Sun Microsystems, Inc. Gang blocks
US7533225B1 (en) 2004-08-17 2009-05-12 Sun Microsystems, Inc. Method and apparatus for enabling adaptive endianness
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
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
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
US7984085B1 (en) * 2004-10-25 2011-07-19 Network Appliance, Inc. Rate of change of data using on-the-fly accounting
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
US7752325B1 (en) 2004-10-26 2010-07-06 Netapp, Inc. Method and apparatus to efficiently transmit streaming media
US8510331B1 (en) 2004-10-28 2013-08-13 Storediq, Inc. System and method for a desktop agent for use in managing file systems
US7844582B1 (en) 2004-10-28 2010-11-30 Stored IQ System and method for involving users in object management
US8959299B2 (en) * 2004-11-15 2015-02-17 Commvault Systems, Inc. Using a snapshot as a data source
US7636744B1 (en) 2004-11-17 2009-12-22 Netapp, Inc. System and method for flexible space reservations in a file system supporting persistent consistency point images
US7523286B2 (en) * 2004-11-19 2009-04-21 Network Appliance, Inc. System and method for real-time balancing of user workload across multiple storage systems with shared back end storage
KR100694069B1 (ko) * 2004-11-29 2007-03-12 삼성전자주식회사 상이한 크기를 가지는 복수 개의 데이터 블록들을포함하는 저장 장치 및 이를 이용한 파일 관리 방법 및이를 포함하는 인쇄 장치
US20060143412A1 (en) * 2004-12-28 2006-06-29 Philippe Armangau Snapshot copy facility maintaining read performance and write performance
US8019842B1 (en) 2005-01-27 2011-09-13 Netapp, Inc. System and method for distributing enclosure services data to coordinate shared storage
US8180855B2 (en) * 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US7424497B1 (en) * 2005-01-27 2008-09-09 Network Appliance, Inc. Technique for accelerating the creation of a point in time prepresentation of a virtual file system
JP2006209636A (ja) * 2005-01-31 2006-08-10 Hitachi Ltd スナップショット維持方法
US7574464B2 (en) * 2005-02-14 2009-08-11 Netapp, Inc. System and method for enabling a storage system to support multiple volume formats simultaneously
US7747836B2 (en) * 2005-03-08 2010-06-29 Netapp, Inc. Integrated storage virtualization and switch system
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
JP4615337B2 (ja) * 2005-03-16 2011-01-19 株式会社日立製作所 ストレージシステム
CN101228523B (zh) 2005-04-25 2012-06-06 网络装置公司 用于高速缓存网络文件系统的系统和方法
EP1875393B1 (de) * 2005-04-25 2015-08-05 NetApp, Inc. Architektur zur unterstützung spärlicher volumina
US7698334B2 (en) * 2005-04-29 2010-04-13 Netapp, Inc. System and method for multi-tiered meta-data caching and distribution in a clustered computer environment
US7962689B1 (en) 2005-04-29 2011-06-14 Netapp, Inc. System and method for performing transactional processing in a striped volume set
US7743210B1 (en) 2005-04-29 2010-06-22 Netapp, Inc. System and method for implementing atomic cross-stripe write operations in a striped volume set
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
US8073899B2 (en) * 2005-04-29 2011-12-06 Netapp, Inc. System and method for proxying data access commands in a storage system cluster
US7698501B1 (en) 2005-04-29 2010-04-13 Netapp, Inc. System and method for utilizing sparse data containers in a striped volume set
US8224777B2 (en) * 2005-04-29 2012-07-17 Netapp, Inc. System and method for generating consistent images of a set of data objects
US7617370B2 (en) * 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7496678B2 (en) * 2005-05-11 2009-02-24 Netapp, Inc. Method and system for unified caching of media content
US7634760B1 (en) 2005-05-23 2009-12-15 Netapp, Inc. System and method for remote execution of a debugging utility using a remote management module
US7613743B1 (en) * 2005-06-10 2009-11-03 Apple Inc. Methods and apparatuses for data protection
US7739318B2 (en) 2005-06-20 2010-06-15 Netapp, Inc. System and method for maintaining mappings from data containers to their parent directories
JP4799936B2 (ja) * 2005-07-11 2011-10-26 株式会社日立製作所 条件別スナップショット取得方法及びシステム
US7516285B1 (en) 2005-07-22 2009-04-07 Network Appliance, Inc. Server side API for fencing cluster hosts via export access rights
US7653682B2 (en) * 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US20070022314A1 (en) * 2005-07-22 2007-01-25 Pranoop Erasani Architecture and method for configuring a simplified cluster over a network with fencing and quorum
US7657571B2 (en) * 2005-08-30 2010-02-02 Microsoft Corporation Electronic data snapshot generator
US7426618B2 (en) 2005-09-06 2008-09-16 Dot Hill Systems Corp. Snapshot restore method and apparatus
US20110145689A1 (en) * 2005-09-09 2011-06-16 Microsoft Corporation Named object view over multiple files
US20070061699A1 (en) * 2005-09-09 2007-03-15 Microsoft Corporation Named object view of electronic data report
US7650366B1 (en) * 2005-09-09 2010-01-19 Netapp, Inc. System and method for generating a crash consistent persistent consistency point image set
US7805600B2 (en) * 2005-09-15 2010-09-28 Sas Institute Inc. Computer-implemented systems and methods for managing images
US7707193B2 (en) * 2005-09-22 2010-04-27 Netapp, Inc. System and method for verifying and restoring the consistency of inode to pathname mappings in a filesystem
US20070088917A1 (en) * 2005-10-14 2007-04-19 Ranaweera Samantha L System and method for creating and maintaining a logical serial attached SCSI communication channel among a plurality of storage systems
US8484365B1 (en) 2005-10-20 2013-07-09 Netapp, Inc. System and method for providing a unified iSCSI target with a plurality of loosely coupled iSCSI front ends
US7467276B1 (en) 2005-10-25 2008-12-16 Network Appliance, Inc. System and method for automatic root volume creation
US7664791B1 (en) 2005-10-26 2010-02-16 Netapp, Inc. Concurrent creation of persistent point-in-time images of multiple independent file systems
WO2007053356A2 (en) * 2005-10-28 2007-05-10 Network Appliance, Inc. System and method for optimizing multi-pathing support in a distributed storage system environment
US8255425B1 (en) 2005-11-01 2012-08-28 Netapp, Inc. System and method for event notification using an event routing table
US7376796B2 (en) 2005-11-01 2008-05-20 Network Appliance, Inc. Lightweight coherency control protocol for clustered storage system
US7730258B1 (en) 2005-11-01 2010-06-01 Netapp, Inc. System and method for managing hard and soft lock state information in a distributed storage system environment
US7325111B1 (en) 2005-11-01 2008-01-29 Network Appliance, Inc. Method and system for single pass volume scanning for multiple destination mirroring
US7930495B2 (en) * 2005-11-04 2011-04-19 Oracle America, Inc. Method and system for dirty time log directed resilvering
US7877554B2 (en) * 2005-11-04 2011-01-25 Oracle America, Inc. Method and system for block reallocation
US20070106868A1 (en) * 2005-11-04 2007-05-10 Sun Microsystems, Inc. Method and system for latency-directed block allocation
US7925827B2 (en) * 2005-11-04 2011-04-12 Oracle America, Inc. Method and system for dirty time logging
US7865673B2 (en) * 2005-11-04 2011-01-04 Oracle America, Inc. Multiple replication levels with pooled devices
US7743225B2 (en) * 2005-11-04 2010-06-22 Oracle America, Inc. Ditto blocks
US7689877B2 (en) * 2005-11-04 2010-03-30 Sun Microsystems, Inc. Method and system using checksums to repair data
US7596739B2 (en) * 2005-11-04 2009-09-29 Sun Microsystems, Inc. Method and system for data replication
US7490096B2 (en) * 2005-11-04 2009-02-10 Sun Microsystems, Inc. Automatic intent log testing
US20070112895A1 (en) * 2005-11-04 2007-05-17 Sun Microsystems, Inc. Block-based incremental backup
US8495010B2 (en) * 2005-11-04 2013-07-23 Oracle America, Inc. Method and system for adaptive metadata replication
US8938594B2 (en) * 2005-11-04 2015-01-20 Oracle America, Inc. Method and system for metadata-based resilvering
US7873799B2 (en) * 2005-11-04 2011-01-18 Oracle America, Inc. Method and system supporting per-file and per-block replication
US8635190B2 (en) * 2005-11-04 2014-01-21 Oracle America, Inc. Method and system for pruned resilvering using a dirty time log
US7716519B2 (en) * 2005-11-04 2010-05-11 Oracle America, Inc. Method and system for repairing partially damaged blocks
US7716445B2 (en) * 2005-11-04 2010-05-11 Oracle America, Inc. Method and system for storing a sparse file using fill counts
US7899989B2 (en) * 2005-11-04 2011-03-01 Oracle America, Inc. Method and system for using a block allocation policy
US8549051B2 (en) * 2005-11-04 2013-10-01 Oracle America, Inc. Unlimited file system snapshots and clones
US7480684B2 (en) * 2005-11-04 2009-01-20 Sun Microsystems, Inc. Method and system for object allocation using fill counts
CA2629833C (en) 2005-11-28 2015-10-27 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
US7797570B2 (en) 2005-11-29 2010-09-14 Netapp, Inc. System and method for failover of iSCSI target portal groups in a cluster environment
US8549252B2 (en) * 2005-12-13 2013-10-01 Emc Corporation File based volumes and file systems
US20200257596A1 (en) 2005-12-19 2020-08-13 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US7464116B2 (en) * 2005-12-28 2008-12-09 Network Appliance, Inc. Method and apparatus for cloning filesystems across computing systems
US7693864B1 (en) 2006-01-03 2010-04-06 Netapp, Inc. System and method for quickly determining changed metadata using persistent consistency point image differencing
US7725436B1 (en) 2006-01-12 2010-05-25 Network Appliance, Inc, Method and system for reducing the number of read-only, persistent point-in-time images on a storage server
TWI353536B (en) * 2006-01-26 2011-12-01 Infortrend Technology Inc Virtualized storage computer system and method of
US7734603B1 (en) 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US8990153B2 (en) 2006-02-07 2015-03-24 Dot Hill Systems Corporation Pull data replication model
US7472242B1 (en) 2006-02-14 2008-12-30 Network Appliance, Inc. Eliminating duplicate blocks during backup writes
US7788456B1 (en) 2006-02-16 2010-08-31 Network Appliance, Inc. Use of data images to allow release of unneeded data storage
US7912815B1 (en) 2006-03-01 2011-03-22 Netapp, Inc. Method and system of automatically monitoring a storage server
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
US8285817B1 (en) 2006-03-20 2012-10-09 Netapp, Inc. Migration engine for use in a logical namespace of a storage system environment
US7590660B1 (en) 2006-03-21 2009-09-15 Network Appliance, Inc. Method and system for efficient database cloning
US7926049B1 (en) 2006-03-23 2011-04-12 Netapp, Inc. System and method for determining differences between software configurations
US7565519B1 (en) 2006-03-23 2009-07-21 Netapp, Inc. System and method for automatically upgrading/reverting configurations across a plurality of product release lines
US7783850B2 (en) 2006-03-28 2010-08-24 Dot Hill Systems Corporation Method and apparatus for master volume access during volume copy
US8260831B2 (en) * 2006-03-31 2012-09-04 Netapp, Inc. System and method for implementing a flexible storage manager with threshold control
US20070233868A1 (en) * 2006-03-31 2007-10-04 Tyrrell John C System and method for intelligent provisioning of storage across a plurality of storage systems
US7836020B1 (en) * 2006-04-03 2010-11-16 Network Appliance, Inc. Method and apparatus to improve server performance associated with takeover and giveback procedures
US8090908B1 (en) 2006-04-26 2012-01-03 Netapp, Inc. Single nodename cluster system for fibre channel
US8788685B1 (en) 2006-04-27 2014-07-22 Netapp, Inc. System and method for testing multi-protocol storage systems
US7716420B2 (en) 2006-04-28 2010-05-11 Network Appliance, Inc. Methods of converting traditional volumes into flexible volumes
US8229979B2 (en) * 2006-04-28 2012-07-24 Sap Ag Method and system for inspecting memory leaks
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US8793289B2 (en) * 2006-04-28 2014-07-29 Sap Ag Method and system for detecting memory leaks and copying garbage collection files
US7840969B2 (en) * 2006-04-28 2010-11-23 Netapp, Inc. System and method for management of jobs in a cluster environment
US8165221B2 (en) 2006-04-28 2012-04-24 Netapp, Inc. System and method for sampling based elimination of duplicate data
US8131667B1 (en) 2006-04-28 2012-03-06 Netapp, Inc. System and method for generating synthetic clients
US7734666B2 (en) * 2006-04-28 2010-06-08 Sap Ag Method and system for inspecting memory leaks and analyzing contents of garbage collection files
US7464238B1 (en) 2006-04-28 2008-12-09 Network Appliance, Inc. System and method for verifying the consistency of mirrored data sets
US9026495B1 (en) 2006-05-26 2015-05-05 Netapp, Inc. System and method for creating and accessing a host-accessible storage entity
US7613750B2 (en) * 2006-05-29 2009-11-03 Microsoft Corporation Creating frequent application-consistent backups efficiently
US7603387B2 (en) * 2006-06-16 2009-10-13 Microsoft Corporation Techniques to manage media files
US7783686B2 (en) * 2006-06-16 2010-08-24 Microsoft Corporation Application program interface to manage media files
US7558913B2 (en) * 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7844584B1 (en) 2006-06-23 2010-11-30 Netapp, Inc. System and method for persistently storing lock state information
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
US8412682B2 (en) 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US8010509B1 (en) 2006-06-30 2011-08-30 Netapp, Inc. System and method for verifying and correcting the consistency of mirrored data sets
GB2439578B (en) 2006-06-30 2011-11-09 Data Equation Ltd Data processing
GB2440357B (en) 2006-06-30 2011-12-07 Data Equation Ltd Data processing
GB2439577B (en) 2006-06-30 2011-12-14 Data Equation Ltd Data processing
GB2439576B (en) 2006-06-30 2011-05-04 Data Equation Ltd Storing related data fragments in the same block
GB2439752B (en) 2006-06-30 2011-11-02 Data Equation Ltd Storing and Modifying Data
US7587563B1 (en) 2006-07-11 2009-09-08 Network Appliance, Inc. Method and system to make a read-only file system appear to be writeable
US7809687B2 (en) * 2006-08-04 2010-10-05 Apple Inc. Searching a backup archive
US7853567B2 (en) * 2006-08-04 2010-12-14 Apple Inc. Conflict resolution in recovery of electronic data
US7853566B2 (en) 2006-08-04 2010-12-14 Apple Inc. Navigation of electronic backups
US7809688B2 (en) * 2006-08-04 2010-10-05 Apple Inc. Managing backup of content
US8370853B2 (en) 2006-08-04 2013-02-05 Apple Inc. Event notification management
US8166415B2 (en) 2006-08-04 2012-04-24 Apple Inc. User interface for backup management
US7856424B2 (en) 2006-08-04 2010-12-21 Apple Inc. User interface for backup management
US8311988B2 (en) 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US7860839B2 (en) 2006-08-04 2010-12-28 Apple Inc. Application-based backup-restore of electronic information
US9009115B2 (en) 2006-08-04 2015-04-14 Apple Inc. Restoring electronic information
US7747584B1 (en) 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US7979701B1 (en) 2006-09-15 2011-07-12 Netapp, Inc. Cross mapping graphical interface to show encryption relationships between hosts and storage devices
US7739546B1 (en) 2006-10-20 2010-06-15 Netapp, Inc. System and method for storing and retrieving file system log information in a clustered computer system
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US7720889B1 (en) * 2006-10-31 2010-05-18 Netapp, Inc. System and method for nearly in-band search indexing
US7783847B2 (en) 2006-10-31 2010-08-24 Oracle America Inc. Method and system for reallocating blocks in a storage pool
US7827366B1 (en) 2006-10-31 2010-11-02 Network Appliance, Inc. Method and system for providing continuous and long-term data protection for a dataset in a storage system
US7584229B2 (en) * 2006-10-31 2009-09-01 Sun Microsystems, Inc. Method and system for priority-based allocation in a storage pool
US7840657B2 (en) * 2006-10-31 2010-11-23 Oracle America, Inc. Method and apparatus for power-managing storage devices in a storage pool
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7822728B1 (en) * 2006-11-08 2010-10-26 Emc Corporation Metadata pipelining and optimization in a file server
US7593973B2 (en) 2006-11-15 2009-09-22 Dot Hill Systems Corp. Method and apparatus for transferring snapshot data
US7933921B2 (en) 2006-11-29 2011-04-26 Netapp, Inc. Referent-controlled location resolution of resources in a federated distributed system
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7620669B1 (en) 2006-12-15 2009-11-17 Netapp, Inc. System and method for enhancing log performance
US7921267B1 (en) 2006-12-20 2011-04-05 Network Appliance, Inc. Method and system for fixing a mirror of a dataset
US7676510B1 (en) 2006-12-22 2010-03-09 Network Appliance, Inc. Space reservation monitoring in a fractionally reserved data storage system
US8489811B1 (en) 2006-12-29 2013-07-16 Netapp, Inc. System and method for addressing data containers using data set identifiers
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
US8751467B2 (en) 2007-01-18 2014-06-10 Dot Hill Systems Corporation Method and apparatus for quickly accessing backing store metadata
US7831565B2 (en) 2007-01-18 2010-11-09 Dot Hill Systems Corporation Deletion of rollback snapshot partition
US7853750B2 (en) * 2007-01-30 2010-12-14 Netapp, Inc. Method and an apparatus to store data patterns
US8190641B2 (en) 2007-02-13 2012-05-29 Netapp, Inc. System and method for administration of virtual servers
US8868495B2 (en) * 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
US7870356B1 (en) 2007-02-22 2011-01-11 Emc Corporation Creation of snapshot copies using a sparse file for keeping a record of changed blocks
US8312046B1 (en) 2007-02-28 2012-11-13 Netapp, Inc. System and method for enabling a data container to appear in a plurality of locations in a super-namespace
US8219821B2 (en) * 2007-03-27 2012-07-10 Netapp, Inc. System and method for signature based data container recognition
US7653612B1 (en) 2007-03-28 2010-01-26 Emc Corporation Data protection services offload using shallow files
US8312214B1 (en) 2007-03-28 2012-11-13 Netapp, Inc. System and method for pausing disk drives in an aggregate
US8510524B1 (en) 2007-03-29 2013-08-13 Netapp, Inc. File system capable of generating snapshots and providing fast sequential read access
US8533410B1 (en) 2007-03-29 2013-09-10 Netapp, Inc. Maintaining snapshot and active file system metadata in an on-disk structure of a file system
US7849057B1 (en) * 2007-03-30 2010-12-07 Netapp, Inc. Identifying snapshot membership for blocks based on snapid
US7716435B1 (en) 2007-03-30 2010-05-11 Emc Corporation Protection of point-in-time application data using snapshot copies of a logical volume
US7716183B2 (en) 2007-04-11 2010-05-11 Dot Hill Systems Corporation Snapshot preserved data cloning
US7975115B2 (en) 2007-04-11 2011-07-05 Dot Hill Systems Corporation Method and apparatus for separating snapshot preserved and write data
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7734947B1 (en) 2007-04-17 2010-06-08 Netapp, Inc. System and method for virtual interface failover within a cluster
US9134921B1 (en) 2007-04-23 2015-09-15 Netapp, Inc. Uniquely naming storage devices in a global storage environment
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
US7827350B1 (en) 2007-04-27 2010-11-02 Netapp, Inc. Method and system for promoting a snapshot in a distributed file system
US8412896B1 (en) 2007-04-27 2013-04-02 Netapp, Inc. Method and system for transparent restore of junction file types
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US7987383B1 (en) 2007-04-27 2011-07-26 Netapp, Inc. System and method for rapid indentification of coredump disks during simultaneous take over
US8898536B2 (en) 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US8086652B1 (en) 2007-04-27 2011-12-27 Netapp, Inc. Storage system-based hole punching for reclaiming unused space from a data container
US7958385B1 (en) 2007-04-30 2011-06-07 Netapp, Inc. System and method for verification and enforcement of virtual interface failover within a cluster
US8001345B2 (en) 2007-05-10 2011-08-16 Dot Hill Systems Corporation Automatic triggering of backing store re-initialization
US7783603B2 (en) 2007-05-10 2010-08-24 Dot Hill Systems Corporation Backing store re-initialization method and apparatus
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7702662B2 (en) * 2007-05-16 2010-04-20 International Business Machines Corporation Method and system for handling reallocated blocks in a file system
US8762345B2 (en) * 2007-05-31 2014-06-24 Netapp, Inc. System and method for accelerating anchor point detection
US7797489B1 (en) 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US8429368B2 (en) * 2007-06-01 2013-04-23 Netapp, Inc. Providing an administrative path for accessing a writeable master storage volume in a mirrored storage environment
US8725965B2 (en) 2007-06-08 2014-05-13 Apple Inc. System setup for electronic backup
US20080307017A1 (en) 2007-06-08 2008-12-11 Apple Inc. Searching and Restoring of Backups
US8468136B2 (en) 2007-06-08 2013-06-18 Apple Inc. Efficient data backup
US8745523B2 (en) 2007-06-08 2014-06-03 Apple Inc. Deletion in electronic backups
EP2372553B1 (de) * 2007-06-08 2013-01-30 Apple Inc. Anwendungsbasierte Sicherung/Wiederherstellung elektronischer Informationen
US8010900B2 (en) 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US8429425B2 (en) 2007-06-08 2013-04-23 Apple Inc. Electronic backup and restoration of encrypted data
US8307004B2 (en) * 2007-06-08 2012-11-06 Apple Inc. Manipulating electronic backups
US8099392B2 (en) * 2007-06-08 2012-01-17 Apple Inc. Electronic backup of applications
US8204858B2 (en) 2007-06-25 2012-06-19 Dot Hill Systems Corporation Snapshot reset method and apparatus
JP4907605B2 (ja) * 2007-06-25 2012-04-04 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. inodeの割り当て及び割り当て解除の方法及びコンピュータプログラム
US7676704B2 (en) * 2007-06-29 2010-03-09 Symantec Corporation Resource management for scalable file system recovery
US8301791B2 (en) * 2007-07-26 2012-10-30 Netapp, Inc. System and method for non-disruptive check of a mirror
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US7941406B2 (en) * 2007-08-20 2011-05-10 Novell, Inc. Techniques for snapshotting
US8346952B2 (en) * 2007-08-21 2013-01-01 Netapp, Inc. De-centralization of group administration authority within a network storage architecture
US8793226B1 (en) 2007-08-28 2014-07-29 Netapp, Inc. System and method for estimating duplicate data
US8799595B1 (en) * 2007-08-30 2014-08-05 American Megatrends, Inc. Eliminating duplicate data in storage systems with boot consolidation
US7958325B2 (en) * 2007-09-11 2011-06-07 International Business Machines Corporation Handling temporary files in a file system with snapshots
US7865475B1 (en) 2007-09-12 2011-01-04 Netapp, Inc. Mechanism for converting one type of mirror to another type of mirror on a storage system without transferring data
US7783666B1 (en) 2007-09-26 2010-08-24 Netapp, Inc. Controlling access to storage resources by using access pattern based quotas
US7792882B2 (en) * 2007-09-27 2010-09-07 Oracle America, Inc. Method and system for block allocation for hybrid drives
US8504904B2 (en) * 2008-01-16 2013-08-06 Hitachi Data Systems Engineering UK Limited Validating objects in a data storage system
US8112465B2 (en) 2007-10-12 2012-02-07 Bluearc Uk Limited System, device, and method for validating data structures in a storage system
WO2009049023A2 (en) * 2007-10-12 2009-04-16 Bluearc Uk Limited Multi-way checkpoints in a data storage system
US9767120B2 (en) * 2008-01-16 2017-09-19 Hitachi Data Systems Engineering UK Limited Multi-way checkpoints in a data storage system
US7904756B2 (en) * 2007-10-19 2011-03-08 Oracle International Corporation Repair planning engine for data corruptions
US8352431B1 (en) 2007-10-31 2013-01-08 Emc Corporation Fine-grain policy-based snapshots
US9817832B1 (en) 2007-10-31 2017-11-14 EMC IP Holding Company LLC Unified framework for policy-based metadata-driven storage services
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US7809776B1 (en) 2007-11-30 2010-10-05 Netapp, Inc. System and method for supporting change notify watches for virtualized storage systems
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US8473526B2 (en) * 2008-01-08 2013-06-25 International Business Machines Corporation System, method and computer program product for managing a group of copies of a data entity
US7996607B1 (en) 2008-01-28 2011-08-09 Netapp, Inc. Distributing lookup operations in a striped storage system
US8296301B2 (en) 2008-01-30 2012-10-23 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
US9134917B2 (en) * 2008-02-12 2015-09-15 Netapp, Inc. Hybrid media storage system architecture
US8055629B2 (en) * 2008-03-05 2011-11-08 International Business Machines Corporation Transitioning an archived file to write-once-read-many
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8095728B2 (en) * 2008-04-18 2012-01-10 Oracle America, Inc. Method and system for power aware I/O scheduling
US8661428B2 (en) * 2008-04-25 2014-02-25 Vmware, Inc. Updating a file using differences and file format therefor
US8219564B1 (en) 2008-04-29 2012-07-10 Netapp, Inc. Two-dimensional indexes for quick multiple attribute search in a catalog system
US8799429B1 (en) 2008-05-06 2014-08-05 American Megatrends, Inc. Boot acceleration by consolidating client-specific boot data in a data storage system
US8037279B2 (en) * 2008-06-12 2011-10-11 Oracle America, Inc. Method and system for cross-domain data sharing
US9215066B2 (en) * 2008-06-25 2015-12-15 Oracle America, Inc. Method and system for making information in a data set of a copy-on-write file system inaccessible
US7979401B2 (en) * 2008-06-26 2011-07-12 International Business Macines Corporation Time based file system for continuous data protection
US8135907B2 (en) * 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5205164B2 (ja) 2008-07-29 2013-06-05 株式会社日立製作所 ファイルシステム管理装置及び方法
US8099571B1 (en) 2008-08-06 2012-01-17 Netapp, Inc. Logical block replication with deduplication
US8250043B2 (en) * 2008-08-19 2012-08-21 Netapp, Inc. System and method for compression of partially ordered data sets
US8099572B1 (en) 2008-09-30 2012-01-17 Emc Corporation Efficient backup and restore of storage objects in a version set
US8151069B1 (en) 2008-10-29 2012-04-03 Emc Corporation Multiprotection for snapsnots
US7992055B1 (en) 2008-11-07 2011-08-02 Netapp, Inc. System and method for providing autosupport for a security system
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
US8713016B2 (en) 2008-12-24 2014-04-29 Comcast Interactive Media, Llc Method and apparatus for organizing segments of media assets and determining relevance of segments to a query
US9442933B2 (en) 2008-12-24 2016-09-13 Comcast Interactive Media, Llc Identification of segments within audio, video, and multimedia items
US11531668B2 (en) 2008-12-29 2022-12-20 Comcast Interactive Media, Llc Merging of multiple data sets
US8285680B2 (en) * 2009-01-08 2012-10-09 International Business Machines Corporation Individual object restore
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8566362B2 (en) * 2009-01-23 2013-10-22 Nasuni Corporation Method and system for versioned file system using structured data representations
US20100211616A1 (en) * 2009-02-16 2010-08-19 Rajesh Khandelwal Performance by Avoiding Disk I/O for Deduplicated File Blocks
JP5244979B2 (ja) * 2009-02-23 2013-07-24 株式会社日立製作所 ストレージシステムおよびその制御方法
US8176043B2 (en) 2009-03-12 2012-05-08 Comcast Interactive Media, Llc Ranking search results
US20100250614A1 (en) * 2009-03-31 2010-09-30 Comcast Cable Holdings, Llc Storing and searching encoded data
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US8266136B1 (en) 2009-04-13 2012-09-11 Netapp, Inc. Mechanism for performing fast directory lookup in a server system
US8392481B2 (en) * 2009-04-22 2013-03-05 International Business Machines Corporation Accessing snapshots of a time based file system
US8321645B2 (en) * 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8321380B1 (en) 2009-04-30 2012-11-27 Netapp, Inc. Unordered idempotent replication operations
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
US20100281207A1 (en) * 2009-04-30 2010-11-04 Miller Steven C Flash-based data archive storage system
US8655848B1 (en) 2009-04-30 2014-02-18 Netapp, Inc. Unordered idempotent logical replication operations
US8533223B2 (en) 2009-05-12 2013-09-10 Comcast Interactive Media, LLC. Disambiguation and tagging of entities
WO2010132055A1 (en) 2009-05-13 2010-11-18 Hewlett-Packard Development Company, L.P. System for virtual disks version control
US9213697B1 (en) * 2009-05-20 2015-12-15 Acronis International Gmbh System and method for restoration of MS exchange server mail
US8280858B2 (en) * 2009-06-29 2012-10-02 Oracle America, Inc. Storage pool scrubbing with concurrent snapshots
US9892730B2 (en) 2009-07-01 2018-02-13 Comcast Interactive Media, Llc Generating topic-specific language models
US9092500B2 (en) 2009-09-03 2015-07-28 Commvault Systems, Inc. Utilizing snapshots for access to databases and other applications
US8671072B1 (en) 2009-09-14 2014-03-11 Netapp, Inc. System and method for hijacking inodes based on replication operations received in an arbitrary order
US8150808B2 (en) 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US8161077B2 (en) 2009-10-21 2012-04-17 Delphix Corp. Datacenter workflow automation scenarios using virtual databases
US8799367B1 (en) 2009-10-30 2014-08-05 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints for network deduplication
US8473690B1 (en) 2009-10-30 2013-06-25 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints to provide cache coherency
WO2011082132A1 (en) 2009-12-31 2011-07-07 Commvault Systems, Inc. Systems and methods for analyzing snapshots
WO2011082138A1 (en) 2009-12-31 2011-07-07 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots
US9003110B2 (en) 2010-01-13 2015-04-07 International Business Machines Corporation Dividing incoming data into multiple data streams and transforming the data for storage in a logical data object
US8683152B2 (en) * 2010-03-10 2014-03-25 Netapp, Inc. Fast migration of virtual storage partition data across storage systems
US8996563B2 (en) 2010-04-06 2015-03-31 Tokutek, Inc. High-performance streaming dictionary
EP2386958A1 (de) 2010-05-13 2011-11-16 Assa Abloy AB Verfahren für stufenweise abbruchresistente Speicherbereinigung
US9742564B2 (en) 2010-05-14 2017-08-22 Oracle International Corporation Method and system for encrypting data
US8224780B2 (en) * 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US11726955B2 (en) 2010-06-19 2023-08-15 Hewlett Packard Enterprise Development Lp Methods and apparatus for efficient container location database snapshot operation
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US8548944B2 (en) 2010-07-15 2013-10-01 Delphix Corp. De-duplication based backup of file systems
US8799231B2 (en) 2010-08-30 2014-08-05 Nasuni Corporation Versioned file system with fast restore
US9747270B2 (en) 2011-01-07 2017-08-29 Microsoft Technology Licensing, Llc Natural input for spreadsheet actions
FR2965952B1 (fr) * 2010-10-06 2013-06-21 Commissariat Energie Atomique Procede de mise a jour d'un index inverse et serveur mettant en oeuvre ce procede
US8990526B2 (en) 2010-10-06 2015-03-24 Quantum Corporation Merging data volumes and derivative versions of the data volumes
WO2012051298A2 (en) 2010-10-12 2012-04-19 Nasuni Corporation Versioned file system with sharing
US9858155B2 (en) 2010-11-16 2018-01-02 Actifio, Inc. System and method for managing data with service level agreements that may specify non-uniform copying of data
US8417674B2 (en) 2010-11-16 2013-04-09 Actifio, Inc. System and method for creating deduplicated copies of data by sending difference data between near-neighbor temporal states
US8904126B2 (en) 2010-11-16 2014-12-02 Actifio, Inc. System and method for performing a plurality of prescribed data management functions in a manner that reduces redundant access operations to primary storage
US8843489B2 (en) 2010-11-16 2014-09-23 Actifio, Inc. System and method for managing deduplicated copies of data using temporal relationships among copies
US8402004B2 (en) 2010-11-16 2013-03-19 Actifio, Inc. System and method for creating deduplicated copies of data by tracking temporal relationships among copies and by ingesting difference data
US8738570B2 (en) * 2010-11-22 2014-05-27 Hitachi Data Systems Engineering UK Limited File cloning and de-cloning in a data storage system
US8468174B1 (en) 2010-11-30 2013-06-18 Jedidiah Yueh Interfacing with a virtual database system
US8904006B2 (en) 2010-12-08 2014-12-02 International Business Machines Corporation In-flight block map for a clustered redirect-on-write filesystem
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US8458181B2 (en) 2010-12-08 2013-06-04 International Business Machines Corporation Distributed free block map for a clustered redirect-on-write file system
US8626713B2 (en) * 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
US8818966B1 (en) 2010-12-30 2014-08-26 Emc Corporation Continuous file defragmentation during file over-writes
US8984029B2 (en) 2011-01-14 2015-03-17 Apple Inc. File system management
US8943026B2 (en) 2011-01-14 2015-01-27 Apple Inc. Visual representation of a local backup
US9996540B2 (en) 2011-03-31 2018-06-12 EMC IP Holding Company LLC System and method for maintaining consistent points in file systems using a prime dependency list
US8832394B2 (en) 2011-03-31 2014-09-09 Emc Corporation System and method for maintaining consistent points in file systems
US10210169B2 (en) 2011-03-31 2019-02-19 EMC IP Holding Company LLC System and method for verifying consistent points in file systems
US8706703B2 (en) * 2011-06-27 2014-04-22 International Business Machines Corporation Efficient file system object-based deduplication
US8983915B2 (en) 2011-08-01 2015-03-17 Actifio, Inc. Successive data fingerprinting for copy accuracy assurance
US9336222B2 (en) * 2011-08-05 2016-05-10 Netapp, Inc. Creation and access of quota trees in a file system
JP2013073557A (ja) * 2011-09-29 2013-04-22 Hitachi Solutions Ltd 情報検索システム、検索サーバ及びプログラム
US9514154B2 (en) 2011-10-27 2016-12-06 International Business Machines Corporation Virtual file system interface for communicating changes of metadata in a data storage system
US9053083B2 (en) 2011-11-04 2015-06-09 Microsoft Technology Licensing, Llc Interaction between web gadgets and spreadsheets
US9098452B2 (en) 2011-12-19 2015-08-04 International Business Machines Corporation Selecting files to backup in a block level backup
US9171099B2 (en) 2012-01-26 2015-10-27 Microsoft Technology Licensing, Llc System and method for providing calculation web services for online documents
US9471578B2 (en) 2012-03-07 2016-10-18 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9319274B1 (en) * 2012-03-29 2016-04-19 Emc Corporation Method and system for dynamic provisioning using server dormant mode for virtual server dormancy
US9342537B2 (en) 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
EP2862051A4 (de) 2012-06-18 2016-08-10 Actifio Inc Verbessertes datenverwaltungsvirtualisierungssystem
US9146684B2 (en) 2012-09-28 2015-09-29 Netapp, Inc. Storage architecture for server flash and storage array operation
US8788461B2 (en) 2012-10-04 2014-07-22 Delphix Corp. Creating validated database snapshots for provisioning virtual databases
US10346369B2 (en) 2012-10-11 2019-07-09 Delphix Corp. Retrieving point-in-time copies of a source database for creating virtual databases
US8832024B2 (en) 2012-10-26 2014-09-09 Netapp, Inc. Simplified copy offload
US9208168B2 (en) 2012-11-19 2015-12-08 Netapp, Inc. Inter-protocol copy offload
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9582213B2 (en) * 2013-02-21 2017-02-28 Netapp, Inc. Object store architecture for distributed data processing system
US9934230B1 (en) 2013-02-28 2018-04-03 Netapp, Inc. Delegations for non-regular files
US9582219B2 (en) 2013-03-12 2017-02-28 Netapp, Inc. Technique for rapidly converting between storage representations in a virtualized computing environment
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US9229864B1 (en) * 2013-03-15 2016-01-05 Emc Corporation Managing metadata synchronization for reducing host system latency in a storage system
AU2014265979A1 (en) 2013-05-14 2015-12-10 Actifio, Inc. Efficient data replication and garbage collection predictions
US10664652B2 (en) 2013-06-15 2020-05-26 Microsoft Technology Licensing, Llc Seamless grid and canvas integration in a spreadsheet application
US10108685B2 (en) 2013-07-09 2018-10-23 Delphix Corp. Remote provisioning of virtual databases
US9436556B2 (en) 2013-07-09 2016-09-06 Delphix Corp. Customizable storage system for virtual databases
KR101693683B1 (ko) 2013-07-09 2017-01-06 델픽스 코퍼레이션 가상 데이터베이스 되감기
US9477605B2 (en) 2013-07-11 2016-10-25 Advanced Micro Devices, Inc. Memory hierarchy using row-based compression
US11132300B2 (en) * 2013-07-11 2021-09-28 Advanced Micro Devices, Inc. Memory hierarchy using page-based compression
JP5650826B2 (ja) * 2013-10-04 2015-01-07 日本電信電話株式会社 検索インデックス生成装置及び検索インデックス構築方法及び検索インデックス構築プログラム
US20150142748A1 (en) 2013-11-18 2015-05-21 Actifio, Inc. Computerized methods and apparatus for data cloning
WO2015094329A1 (en) * 2013-12-20 2015-06-25 Hitachi Data Systems Engineering UK Limited System for queue based object cloning
US9842026B2 (en) 2013-12-31 2017-12-12 Netapp, Inc. Snapshot-protected consistency checking file systems
US9632874B2 (en) 2014-01-24 2017-04-25 Commvault Systems, Inc. Database application backup in single snapshot for multiple applications
US9639426B2 (en) 2014-01-24 2017-05-02 Commvault Systems, Inc. Single snapshot for multiple applications
US9495251B2 (en) 2014-01-24 2016-11-15 Commvault Systems, Inc. Snapshot readiness checking and reporting
US9753812B2 (en) 2014-01-24 2017-09-05 Commvault Systems, Inc. Generating mapping information for single snapshot for multiple applications
US9720778B2 (en) 2014-02-14 2017-08-01 Actifio, Inc. Local area network free data movement
US9645766B1 (en) 2014-03-28 2017-05-09 EMC IP Holding Company LLC Tape emulation alternate data path
US10037204B2 (en) 2014-04-22 2018-07-31 Delphix Corp. Version control of applications
US9710478B2 (en) 2014-05-02 2017-07-18 Netapp, Inc. System and method for adaptive data placement within a distributed file system
US9792187B2 (en) 2014-05-06 2017-10-17 Actifio, Inc. Facilitating test failover using a thin provisioned virtual machine created from a snapshot
US9841991B2 (en) 2014-05-12 2017-12-12 Netapp, Inc. Techniques for virtual machine migration
US10216531B2 (en) 2014-05-12 2019-02-26 Netapp, Inc. Techniques for virtual machine shifting
US9477683B2 (en) * 2014-05-30 2016-10-25 International Business Machines Corporation Techniques for enabling coarse-grained volume snapshots for virtual machine backup and restore
WO2015195834A1 (en) 2014-06-17 2015-12-23 Rangasamy Govind Resiliency director
US9921769B2 (en) 2014-06-19 2018-03-20 Cohesity, Inc. Making more active use of a secondary storage system
US10977134B2 (en) 2014-08-19 2021-04-13 Netapp Inc. Restoration process to restore corrupted data of a volume
US10042716B2 (en) 2014-09-03 2018-08-07 Commvault Systems, Inc. Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent
US9774672B2 (en) 2014-09-03 2017-09-26 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US10379963B2 (en) 2014-09-16 2019-08-13 Actifio, Inc. Methods and apparatus for managing a large-scale environment of copy data management appliances
WO2016044403A1 (en) 2014-09-16 2016-03-24 Mutalik, Madhav Copy data techniques
US9959335B2 (en) 2014-09-22 2018-05-01 Netapp, Inc. System and method for avoiding object identifier collisions in a peered cluster environment
US9811428B2 (en) 2014-09-22 2017-11-07 Netapp Inc. System and method for handling multi-node failures in a disaster recovery cluster
US9904688B2 (en) 2014-09-30 2018-02-27 International Business Machines Corporation Buffering and replicating data written to a distributed storage system
US9916325B2 (en) 2014-09-30 2018-03-13 International Business Machines Corporation Quick initialization of data regions in a distributed storage system
US9648105B2 (en) 2014-11-14 2017-05-09 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US9448731B2 (en) 2014-11-14 2016-09-20 Commvault Systems, Inc. Unified snapshot storage management
EP3224744A4 (de) 2014-11-28 2018-08-01 Nasuni Corporation Versioniertes dateisystem mit globaler sperre
WO2016094819A1 (en) 2014-12-12 2016-06-16 Actifio, Inc. Searching and indexing of backup data sets
US10055300B2 (en) 2015-01-12 2018-08-21 Actifio, Inc. Disk group based backup
US10083196B2 (en) 2015-02-04 2018-09-25 Delphix Corporation Creating secure virtual databases storing masked data
US9600193B2 (en) 2015-02-04 2017-03-21 Delphix Corporation Replicating snapshots from a source storage system to a target storage system
US9990366B2 (en) 2015-03-13 2018-06-05 Delphix Corporation Virtual partitions in virtual databases
US10311150B2 (en) 2015-04-10 2019-06-04 Commvault Systems, Inc. Using a Unix-based file system to manage and serve clones to windows-based computing clients
US10282201B2 (en) 2015-04-30 2019-05-07 Actifo, Inc. Data provisioning techniques
US11294657B2 (en) * 2015-05-15 2022-04-05 Hewlett-Packard Development Company, L.P. Data copying
US10613938B2 (en) 2015-07-01 2020-04-07 Actifio, Inc. Data virtualization using copy data tokens
US10691659B2 (en) 2015-07-01 2020-06-23 Actifio, Inc. Integrating copy data tokens with source code repositories
US9952797B2 (en) 2015-07-31 2018-04-24 Netapp, Inc. Systems, methods and devices for addressing data blocks in mass storage filing systems
US10257273B2 (en) 2015-07-31 2019-04-09 Netapp, Inc. Systems, methods and devices for RDMA read/write operations
US9715348B2 (en) 2015-09-09 2017-07-25 Netapp, Inc. Systems, methods and devices for block sharing across volumes in data storage systems
US10503753B2 (en) 2016-03-10 2019-12-10 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
WO2017168499A1 (ja) 2016-03-28 2017-10-05 株式会社日立製作所 データ処理システム及びデータ処理方法
US9817592B1 (en) 2016-04-27 2017-11-14 Netapp, Inc. Using an intermediate virtual disk format for virtual disk conversion
US10445298B2 (en) 2016-05-18 2019-10-15 Actifio, Inc. Vault to object store
US10476955B2 (en) 2016-06-02 2019-11-12 Actifio, Inc. Streaming and sequential data replication
US10983951B1 (en) * 2016-09-29 2021-04-20 EMC IP Holding Company LLC Recovery processing for persistent file data cache to reduce data loss
US10540516B2 (en) 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment
US10822132B2 (en) 2017-02-10 2020-11-03 R.E.D. Stamp, Inc. High speed stamp applicator
US10855554B2 (en) 2017-04-28 2020-12-01 Actifio, Inc. Systems and methods for determining service level agreement compliance
US11403178B2 (en) 2017-09-29 2022-08-02 Google Llc Incremental vault to object store
WO2019148497A1 (zh) * 2018-02-05 2019-08-08 华为技术有限公司 一种数据查询方法及装置
US20190251204A1 (en) 2018-02-14 2019-08-15 Commvault Systems, Inc. Targeted search of backup data using calendar event data
US10732885B2 (en) 2018-02-14 2020-08-04 Commvault Systems, Inc. Block-level live browsing and private writable snapshots using an ISCSI server
US11176001B2 (en) 2018-06-08 2021-11-16 Google Llc Automated backup and restore of a disk group
US10719401B2 (en) 2018-09-12 2020-07-21 International Business Machines Corporation Increasing data recoverability during central inode list loss
US11803303B1 (en) * 2022-04-08 2023-10-31 International Business Machines Corporation Intelligent layer control of redundant content in container images

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4156907A (en) * 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) * 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4377843A (en) * 1979-04-19 1983-03-22 Wescom Switching, Inc. Data distribution interface
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
US4456957A (en) * 1981-09-28 1984-06-26 Ncr Corporation Apparatus using a decision table for routing data among terminals and a host system
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4550368A (en) * 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
US4527232A (en) * 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4814971A (en) * 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
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
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US5043871A (en) * 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) * 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US4914583A (en) * 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
US5043876A (en) * 1988-05-27 1991-08-27 International Business Machines Corporation N-level file shadowing and recovery in a shared file system
US5065354A (en) * 1988-09-16 1991-11-12 Compaq Computer Corporation Queued posted-write disk write method with improved error handling
US5218696A (en) * 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
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
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5276867A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5230047A (en) * 1990-04-16 1993-07-20 International Business Machines Corporation Method for balancing of distributed tree file structures in parallel computing systems to enable recovery after a failure
CA2045799C (en) * 1990-07-11 1999-03-23 Kenneth L. Thompson File system with read/write and read only storage
US5274807A (en) * 1990-11-01 1993-12-28 At&T Bell Laboratories Method for reducing magnetic storage volume for computer disk image backup
US5255270A (en) * 1990-11-07 1993-10-19 Emc Corporation Method of assuring data write integrity on a data storage device
US5155835A (en) * 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
JP2603757B2 (ja) * 1990-11-30 1997-04-23 富士通株式会社 アレ−ディスク装置の制御方法
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5276840A (en) * 1991-03-22 1994-01-04 Acer Incorporated Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
US5313626A (en) * 1991-12-17 1994-05-17 Jones Craig S Disk drive array with efficient background rebuilding
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231412B2 (en) 1993-06-03 2007-06-12 Network Appliance, Inc. Allocating files in a file system integrated with a raid disk sub-system
US6751635B1 (en) 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US7305424B2 (en) 2000-08-18 2007-12-04 Network Appliance, Inc. Manipulation of zombie files and evil-twin files
US7454445B2 (en) 2000-08-18 2008-11-18 Network Appliance, Inc. Write allocation based on storage system map and snapshot
US7296073B1 (en) 2000-09-13 2007-11-13 Network Appliance, Inc. Mechanism to survive server failures when using the CIFS protocol
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US8204864B1 (en) 2001-03-12 2012-06-19 Network Appliance, Inc. Restartable dump that produces a consistent filesystem on tapes
US6728735B1 (en) 2001-03-12 2004-04-27 Network Appliance, Inc. Restartable dump that produces a consistent filesystem on tapes
US6889228B1 (en) 2001-03-29 2005-05-03 Network Appliance, Inc. Cascading support for mirrored volumes
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US7694302B1 (en) 2001-04-05 2010-04-06 Network Appliance, Inc. Symmetric multiprocessor synchronization using migrating scheduling domains
US7328306B1 (en) 2002-02-25 2008-02-05 Network Appliance, Inc. Flexible disabling of disk sets
US6976189B1 (en) 2002-03-22 2005-12-13 Network Appliance, Inc. Persistent context-based behavior injection or testing of a computing system
US7831864B1 (en) 2002-03-22 2010-11-09 Network Appliance, Inc. Persistent context-based behavior injection or testing of a computing system
US8171480B2 (en) 2004-01-27 2012-05-01 Network Appliance, Inc. Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor
US8347293B2 (en) 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US9071622B2 (en) 2010-04-30 2015-06-30 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system

Also Published As

Publication number Publication date
JP3751018B2 (ja) 2006-03-01
WO1994029807A1 (en) 1994-12-22
EP0702815A4 (de) 1998-08-12
US5819292A (en) 1998-10-06
JPH08511367A (ja) 1996-11-26
DE69425658D1 (de) 2000-09-28
EP1003103B1 (de) 2008-10-01
DK0702815T3 (da) 2000-12-18
DE69435146D1 (de) 2008-11-13
HK1027876A1 (en) 2001-01-23
HK1013697A1 (en) 1999-09-03
EP0702815B1 (de) 2000-08-23
EP1003103A2 (de) 2000-05-24
EP0702815A1 (de) 1996-03-27
ATE195825T1 (de) 2000-09-15
EP1003103A3 (de) 2007-08-15
ATE409907T1 (de) 2008-10-15

Similar Documents

Publication Publication Date Title
DE69425658T2 (de) Anordnung eines dateisystems zum beschreiben beliebiger bereiche
DE3784190T2 (de) Eintragung eines datenbasisindex in das journal zur verbesserten rueckstellung.
DE60001976T2 (de) Verfahren und system zur datensicherung/wiederherstellung von an einer einzigen stelle gespeicherten dateien
DE69130312T2 (de) Dateisystem mit Schreib/Lesespeicher und einmaligen Schreib- und mehrmaligen Lese-speicher
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE69513956T2 (de) Datenspeicherverwaltung für in einem netzwerk zusammengeschaltete prozessoren
DE69516538T2 (de) Speicherung von rechnerdaten
DE69413977T2 (de) Anordnung und verfahren zur verteilten datenverwaltung in vernetzten rechnersystemen
DE69119222T2 (de) Datensicherung und Beseitigung in einem Datenverarbeitungssystem
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
US5963962A (en) Write anywhere file-system layout
DE112007003693B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE60304677T2 (de) Verfahren und vorrichtung zur bereitstellung einer inkrementellen wiederherstellung eines speichermediums bei datenverlust
DE69332672T2 (de) Verfahren und System zum Einbinden von Änderungen in hierarchisch strukturierten Daten
DE10211606B4 (de) Datenverarbeitungseinrichtung mit einem Metadatensicherungsmanagement
DE69714344T2 (de) Vorrichtung und Verfahren für die Verfügbarkeit und Wiedergewinnung von Dateien unter Verwendung von Sammlungen von Kopierspeicher
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE69431186T2 (de) Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem
DE69032517T2 (de) Verfahren und System zum dynamischen Identifizieren von Datenträgern in einem Gestaltungsdateisystem
DE69623227T2 (de) Verfahren und System zur Berechnung von Dateinamen mit hoher Wahrscheinlichkeit der Eindeutigkeit
DE69031491T2 (de) Hypertextdatenverarbeitungssystem und Verfahren
DE60113586T2 (de) Übertragen von miteinander verbundenen Datenobjekten in einer verteilten Datenspeicherumgebung
DE69126066T2 (de) Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
DE68926693T2 (de) System und Verfahren zur einem Systemfehler nachfolgenden Datenerholung in einer Datenbank eines Rechnersystems
DE3780807T2 (de) Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition