DE60129025T2 - Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche - Google Patents

Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche Download PDF

Info

Publication number
DE60129025T2
DE60129025T2 DE60129025T DE60129025T DE60129025T2 DE 60129025 T2 DE60129025 T2 DE 60129025T2 DE 60129025 T DE60129025 T DE 60129025T DE 60129025 T DE60129025 T DE 60129025T DE 60129025 T2 DE60129025 T2 DE 60129025T2
Authority
DE
Germany
Prior art keywords
memory blocks
file system
blocks
file
values
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
DE60129025T
Other languages
English (en)
Other versions
DE60129025D1 (de
Inventor
Douglas P. Freeland DOUCETTE
Blake Palo Alto LEWIS
John K. Sunnyvale EDWARDS
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NetApp Inc
Original Assignee
Network Appliance Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Network Appliance Inc filed Critical Network Appliance Inc
Publication of DE60129025D1 publication Critical patent/DE60129025D1/de
Application granted granted Critical
Publication of DE60129025T2 publication Critical patent/DE60129025T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • 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
    • 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/99956File allocation

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Diese Erfindung betrifft Datenspeichersysteme.
  • 2. Stand der Technik
  • Daten werden an physikalischen Stellen auf Speichermedien angeordnet. Eine Ansammlung von Daten, wie z.B. eine Datei, kann auf ein Speichermedium geschrieben, aus einem Speichermedium ausgelesen und (bei den meisten Medien) von einem Speichermedium gelöscht werden. Bekannte Plattenlaufwerke speichern Dateien in speziellen Belegungsbereichen auf einer Festplatte, die als Speicherblöcke bekannt sind. Diese Speicherblöcke zeichnen eine standardisierte Menge an Information auf und speichern diese, wie z.B. 4 KByte. Deshalb werden Dateien, die auf bekannten Plattenlaufwerken gespeichert werden, in Dateiblöcke ähnlicher Größe zum Speichern auf dem Plattenlaufwerk unterteilt.
  • Eine bevorzugte Anordnung zum Speichern von Dateien ist, so viele Daten wie möglich in kontinuierlichen oder nahezu kontinuierlichen Blöcken abzulegen. Dies erlaubt es, Datendateien relativ schnell wiederzuerlangen oder zu schreiben, weil das Plattenlaufwerk aus/in relativ kontinuierliche(n) Datenspeicherblöcke(n) ausliest/schreibt, ohne die Plattenköpfe über wesentliche Distanzen bewegen zu müssen, bevor weitere Blöcke lokalisiert und gelesen oder geschrieben werden.
  • Bekannte Dateisysteme erlauben es, Daten durch Verschieben von Daten von Block zu Block zu reorganisieren. Zum Beispiel führen bekannte Plattendefragmentierungsprodukte diese Funktion für Benutzer-Workstations aus. Dies erlaubt es, Dateiblöcke in geeignete Stellen auf einer Platte zu schreiben und deren Positionen später zu optimieren (z.B. durch Kopieren, Verschieben und Löschen von Daten in Plattenspeicherblöcken, um so viele kontinuierliche Blöcke pro Datei für so viele wie mögliche Dateien zu erhalten).
  • Ein Aspekt eines WAFL-Dateisystems („White Anywhere File Layout") und möglicherweise von anderen zuverlässigen Dateisystemen ist, dass eine Zuverlässigkeit eines Plattendatenspeichers durch Beibehalten von allen Dateisystemblöcken in den Plattenspeicherblöcken, in welche sie ursprünglich auf die Platte geschrieben wurden, verbessert wird. Wenn ein Dateisystemblock verändert wird, wird ein neuer Plattenspeicherblock für den geänderten Dateisystemblock belegt und der alte Dateisystemblock wird für ein mögliches Backup und andere Zwecke aufbewahrt. Aufzeichnungen werden von zahlreichen vorherigen konsistenten Zuständen des Dateisystems aufbewahrt. Falls der gegenwärtige Zustand des Dateisystems fehlerhaft ist, kann ein vorheriger Zustand wieder erlangt werden. Jedoch erfordert dies, dass alle Datenspeicherblöcke, die für den vorherigen Zustand belegt sind, geschützt sind. Somit wird ein Speicherblock nicht gelöscht oder neu belegt, bis alle vorherigen Zustände des Systems, die diesen Block verwenden, nicht länger benötigt werden. Dies kann oft Wochen oder Monate dauern.
  • Ein Problem mit diesem Verfahren von benutzergelöschten Dateiblöcken ist, das die Verteilung von freiem Platz außerordentlich uneinheitlich werden kann. Wenn Plattenspeicherblöcke für relativ kontinuierliches Speichern gewünscht werden, können vorhergehend geschriebene Datenspeicherblöcke grundsätzlich nicht für diesen Zweck gelöscht werden. Somit wird in einem zuverlässigen Dateisystem ein anderer Speicheransatz benötigt, um das Schreiben von Dateiblöcken in Speicherblöcke zu optimieren.
  • Eine Lösung ist, Dateiblöcke auf die ersten Dateiblöcke zu schreiben, die bei einer linearen Suche der Platte oder Platten aufgefunden werden. Jedoch leidet diese Lösung an dem Nachteil, dass sie in verstreuten Dateispeicherblöcken resultieren kann.
  • Eine zweite Lösung ist, die Platte oder Platten zu durchsuchen, um eine ausreichende Anzahl an kontinuierlichen Blöcken zu finden, um eine vorgegebene Datei aufzunehmen. Jedoch leidet dieser Ansatz an dem Nachteil, dass er relativ langsam ist und einen vergleichsweise übermäßigen Umfang an Berechnungsressourcen verwendet.
  • US-A-5 963 962 offenbart ein Verfahren gemäß dem Oberbegriff des Anspruchs 1.
  • Dementsprechend ist es wünschenswert, eine verbesserte Technik zum Lokalisieren von relativ großen freien Stellen auf einem Speichermedium in einer effizienten Weise bereitzustellen, die nicht Gegenstand des Nachteils des Standes der Technik ist.
  • Zusammenfassung der Erfindung
  • Die Erfindung bietet ein Verfahren und ein System zum Verbessern eines Datenzugriffs eines zuverlässigen Dateisystems.
  • Gemäß einer Ausführungsform der Erfindung wird ein Verfahren bereitgestellt, das die Schritte des Aufzeichnens in einem Dateisystem, das mit einer Menge von Speicherblöcken verknüpft ist, einer aktiven Karte derjenigen der Speicherblöcke, die in dem Dateisystem frei sind; des Aufzeichnens eines Konsistenzpunkts in dem Dateisystems, der eine konsistente Version des Dateisystems umfasst, wobei der Konsistenzpunkt eine Kopie einer vorherigen Version der aktiven Karte umfasst; und gekennzeichnet ist durch die Schritte des: Ermittelns in Reaktion auf die aktive Karte und wenigstens eine vorhergehende Version, einer Menge von Werten in Reaktion auf eine Anzahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten zur Verfügung stehen, wobei jeder der Werte mit einem besonderen Bereich verknüpft ist, der mit einer Vielzahl von Speicherblöcken korrespondiert; und des Auswählens wenigstens eines der Vielzahl der Bereiche in Reaktion auf die Menge von Werten.
  • Gemäß einer weiteren Ausführungsform der Erfindung wird eine Vorrichtung zur Verwendung in einem Dateisystem, das mit einer Menge von Speicherblöcken verknüpft ist, bereitgestellt, wobei die Vorrichtung eine Menge von maschinengerechten Daten umfasst, wobei die Daten eine aktive Karte derjenigen der Speicherblöcke umfassen, die in dem Dateisystem frei sind, einen Konsistenzpunkt umfasst, der eine konsistente Version des Dateisystems umfasst, wobei der Konsistenzpunkt eine Kopie einer vorherigen Version der aktiven Karte umfasst, und gekennzeichnet ist durch eine Menge von Werten in Reaktion auf eine Anzahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten zur Verfügung stehen, wobei jeder der Werte mit einem besonderen Bereich verknüpft ist, der mit einer Vielzahl der Speicherblöcke korrespondiert; und durch eine Einrichtung zum Auswählen wenigstens eines der Vielzahl der Bereiche in Reaktion auf die Menge von Werten.
  • In einem ersten Aspekt der Erfindung ermittelt das Dateisystem den relativen Leerstand einer Ansammlung von Speicherblöcken, die hier als „Belegungsbereich" bezeichnet werden. Dies wird erreicht durch Aufzeichnen eines Felds von Leerstandswerten. Jeder Leerstandswert in dem Feld beschreibt ein Maß für den Leerstand einer Ansammlung von Speicherblöcken. Das Dateisystem untersucht diese Leerstandswerte, wenn es versucht, Dateiblöcke in relativ kontinuierlichen Bereichen auf einem Speichermedium aufzuzeichnen, z.B. einer Festplatte. Wenn eine Anfrage zum Schreiben auf die Platte auftritt, ermittelt das System den mittleren Leerstand aller Belegungsbereiche und fragt die Belegungsbereiche nach individuellen Leerstandswerten ab. Das System schreibt vorzugsweise Dateiblöcke in die Belegungsbereiche, die oberhalb eines Schwellenwertes in Bezug auf den durchschnittlichen Speicherblockleerstand des Dateisystems liegen. Falls die Datei in der Anfrage zum Schreiben größer ist als der ausgewählte Belegungsbereich, wird vorzugsweise der nächste Belegungsbereich, der oberhalb des Schwellenwertes gefunden wird, zum Schreiben der verbleibenden Blöcke der Datei verwendet.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt ein Blockdiagramm für einen Datenträger eines Systems für eine verbesserte Platzbelegung auf einem Plattenspeicher.
  • 2 zeigt ein Blockdiagramm eines Systems für eine verbesserte Platzbelegung auf einem Plattenspeicher.
  • 3 zeigt ein Flussdiagramm für ein Verfahren zur Verwendung eines Systems wie in den 1 und 2 gezeigt.
  • Detaillierte Beschreibung der bevorzugten Ausführungsform
  • Lexikografie
  • So wie sie hier verwendet werden, bezieht sich eine Verwendung der vorliegenden Begriffe auf Aspekte der Erfindung wie nachfolgend beschrieben. Die grundsätzliche Bedeutung dieser Begriffe ist beabsichtigt, beschreibend und in keiner Weise einschränkend zu sein.
    • • Inode – Grundsätzlich betrifft der Begriff „Inode" Datenstrukturen, die Informationen über Dateien in UNIX- und anderen Dateisystemen umfassen. Jede Datei hat einen Inode und wird durch eine Inode-Nummer (i-Nummer) in dem Dateisystem, in dem sie residiert, identifiziert. Inodes bieten wichtige Informationen über Dateien, wie z.B. Benutzer- und Gruppeneigentümerschaft, Zugriffsmodus (Lese-, Schreib-, Ausführungsrechte) und einen Typ. Ein Inode zeigt auf die Inode-Dateiblöcke.
    • • Sektor – Grundsätzlich bezeichnet der Begriff „Sektor" einen physikalischen Abschnitt eines Plattenlaufwerks, der eine Ansammlung von Bytes enthält, wie z.B. 512 Bytes.
    • • Datenspeicherblock – Grundsätzlich bezeichnet der Begriff „Datenspeicherblock" spezielle Bereiche auf einer Festplatte. In einer bevorzugten Ausführungsform ist der Bereich eine Ansammlung von Sektoren, wie z.B. 8 Sektoren oder 4096 Bytes, die üblicherweise als 4 KBytes bezeichnet werden.
    • • Dateiblock – Grundsätzlich bezeichnet der Begriff „Dateiblock" einen Datenblock von standardisierter Größe, der einige oder alle Daten in einer Datei enthält. In der bevorzugten Ausführungsform hat der Dateiblock ungefähr die gleiche Größe wie ein Datenspeicherblock.
    • • fsinfo (Dateisystem-Informationsblock („file system information block")) – Grundsätzlich bezeichnet der Begriff „Dateisystem-Informationsblock" eine oder mehrere Kopien eines Blocks, der als „fsinfo-Block” bezeichnet wird. Diese Blöcke befinden sich an festgelegten Stellen in dem Datenträger. Der fsinfo-Block umfasst Daten über den Datenträger einschließlich der Größe des Datenträgers, Optionen bezüglich des Levels des Datenträgers, eine Sprache und dergleichen.
    • • WAFL (Write Anywhere File Layout) – Grundsätzlich bezeichnet der Begriff „WAFL" eine Struktur für ein Dateisystem auf hoher Ebene. Zeiger werden zum Lokalisieren von Daten verwendet. Alle Daten sind in Dateien enthalten. Diese Dateien können irgendwo auf die Platte in Einheiten von Dateiblöcken geschrieben werden, die in Dateispeicherblöcken abgelegt sind.
    • • Datenträger – Grundsätzlich bezeichnet der Begriff „Datenträger" ein einzelnes Dateisystem. Das Dateisystem kann aus einer Ansammlung von Plattenlaufwerken zusammengestellt sein.
    • • VBN (Datenträgerblocknummer („Volume Block Number")) – Grundsätzlich bezeichnet der Begriff „VBN" die Stelle eines Tupels eines bestimmten Blocks in einem Datenträger des Dateisystems. Das VBN-Tupel ist die Plattennummer und die Plattenblocknummer.
    • • DBN (Plattenblocknummer („Disk Block Number")) – Grundsätzlich bezeichnet der Begriff „DBN" eine Stelle eines bestimmten Blocks auf einer Platte in einem Datenträger des Dateisystems.
    • • Streifen – Grundsätzlich bezeichnet der Begriff „Streifen” die Ansammlung von Blöcken in einem Datenträger mit der gleichen DBN auf jeder Platte.
    • • Konsistenzpunkt (CP) – Grundsätzlich bezeichnet der Begriff „CP” einen Zeitpunkt, zu dem ein Dateisystem einen konsistenten Zustand erreicht hat. Wenn dieser Zustand erreicht ist, wurden alle Dateien auf alle Blöcke geschrieben und sind sicher auf der Platte und die eine oder mehreren Kopien von redundanten fsinfo-Blöcken werden rausgeschrieben. Wenn das System abstürzt bevor die fsinfo-Blöcke herausgehen, sind alle anderen Veränderungen verloren und das System kehrt zurück zu dem letzten CP. Das Dateisystem schreitet automatisch von einem CP zu dem nächsten fort.
    • • Konsistenter Zustand – Grundsätzlich bezeichnet der Begriff „konsistenter Zustand" die Systemkonfiguration von Dateien in Blöcken nachdem der CP erreicht ist.
    • • Spanne – Grundsätzlich bezeichnet der Begriff „Spanne" eine Gruppe von Blöcken, wie z.B. 1024 Blöcke.
    • • Belegungsbereich – Grundsätzlich bezeichnet der Begriff „Belegungsbereich" eine große Gruppe von Blöcken in einem Datenträger, wie z.B. 4096 Blöcke oder eine Ansammlung von vier Spannen.
    • • Lokalität – Grundsätzlich bezeichnet der Begriff „Lokalität" die Nachbarschaft von Blöcken innerhalb eines Bereichs, wie z.B. eines Belegungsbereichs mit Datenspeicherblöcken für die gleiche Datei. Dateien mit einer guten Lokalität sind schneller zugreifbar, weil sie aus Blöcken gelesen werden können, die entweder kontinuierlich oder in einer engen Nachbarschaft zu anderen Blöcken der Datei sind.
    • • Dateisystem – Grundsätzlich bezeichnet der Begriff „Dateisystem" eine Datenverarbeitungsapplikation, die individuelle Dateien verwaltet.
    • • Aktive Datei – Grundsätzlich bezeichnet der Begriff „aktive Datei" das gegenwärtige Dateisystem, das bei dem aktuellsten CP angekommen ist. In der bevorzugten Ausführungsform umfasst die aktive Datei die aktive Karte, die Zusammenfassungskarte und zeigt auf alle Speicherauszüge und andere Datenspeicherblöcke durch eine Hierarchie von Inodes, indirekten Datenspeicherblöcken und dergleichen.
    • • Aktive Karte – Grundsätzlich bezeichnet der Begriff „Aktive Karte" einen Block, der eine Bitmap umfasst, die mit einem Leerstand von Blöcken der aktiven Datei verknüpft ist. Die aktive Karte zeigt auf den Rest des gegenwärtigen aktiven Dateisystembaums.
    • • Speicherauszug – Grundsätzlich bezeichnet der Begriff „Speicherauszug" eine Datei, die identisch mit der aktiven Datei ist, wenn der Speicherauszug geschrieben wird. Der Speicherauszug divergiert im Laufe der Zeit von der aktiven Datei, wenn neue Dateien geschrieben werden. Ein Speicherauszug kann verwendet werden, um das Dateisystem zu einem bestimmten CP, Konsistenzpunkt, zurückzuführen.
    • • Speicherauszugkarte – Grundsätzlich bezeichnet der Begriff „Speicherauszugkarte" einen Block, der eine Bitmap umfasst, die mit dem Leerstand von Blöcken eines Speicherauszugs verknüpft ist. Die Speicherauszugkarte diver giert im Laufe der Zeit von der gegenwärtigen aktiven Karte, wenn Dateien nach einem Konsistenzpunkt geschrieben werden.
    • • Zusammenfassungskarte – Grundsätzlich bezeichnet der Begriff „Zusammenfassungskarte" einen Block, der eine IOR-Bitmap (inklusives ODER) aller Speicherauszugskarten umfasst.
    • • Platzkarte – Grundsätzlich bezeichnet der Begriff „Platzkarte" einen Block, der ein Feld von binären Zahlen umfasst, der den Umfang an freien Speicherblöcken in einem Belegungsbereich beschreibt.
    • • Blockkarte – Grundsätzlich bezeichnet der Begriff „Blockkarte" eine Bitmap, die den Status einer Gruppe von Speicherblöcken an spezifischen Stellen beschreibt.
    • • Speicherauszugslöschung – Grundsätzlich bezeichnet der Begriff „Speicherauszugslöschung" ein Kommando, das einen bestimmten Speicherauszug aus dem Dateisystem entfernt. Dieses Kommando kann erlauben, einen Speicherblock für eine Neubelegung freizusetzen, vorausgesetzt, dass kein anderer Speicherauszug oder die aktive Datei den Speicherblock verwendet.
  • Systemelemente
  • 1 zeigt ein Blockdiagramm für einen Datenträger eines Systems für eine verbesserte Platzbelegung auf einem Plattenspeicher.
  • Der Datenträger 101 umfasst alle Datenblöcke in dem Dateisystem 100, das ein oder mehrere Festplattenlaufwerke umfassen kann. In alternativen Ausführungsformen kann das Dateisystem 100 jedes Computerdatenspeichersystem umfassen, wie z.B. ein Datenbanksystem oder ein Speicher- und Weiterleitungssystem, wie z.B. einen Cash oder RAM.
  • Der Datenträger 101 ist aufgeteilt in eine Ansammlung von Belegungsbereichen 102. Jeder Belegungsbereich ist zusammengesetzt aus einer Menge von Streifen mit aufeinander folgenden DBN-Werten, wie z.B. 4096 Streifen. Die Belegungsbereiche 102 können weiter aufgeteilt werden in eine Gruppe von Spannen pro Platte 104, 106, 108 und 110. In einer bevorzugten Ausführungsform umfassen die Spannen 104, 106, 108 und 110 eine Gruppe von 1024 Blöcken, die durch eine 16-Bit-Binärzahl der Platzkarte für eine Belegungsverwendung beschrieben werden. Eine binäre Zahl, die den Umfang an verwendeten (zum Schreiben nicht zur Verfügung stehenden) Blöcken quantifiziert, repräsentiert die Belegungsbereiche 102 in der Platzkarte. Ein niedriger Wert der binären Zahlen für einen bestimmten Belegungsbereich 102 repräsentiert eine große Anzahl von Blöcken, die zum Beschreiben zur Verfügung stehen. Umgekehrt repräsentiert ein hoher Wert eine geringe Anzahl von Blöcken, die zur Belegung bereitstehen. Die Platzkartenbinärwerte der Platzkarte werden durch VBN-Nummern organisiert. Deshalb ist die Beziehung zwischen einem Zähler der verwendeten Blöcke eines Belegungsbereichs 202 und den Platzkartenbinärwerten ähnlich.
  • 2 zeigt ein Blockdiagramm eines Systems für eine verbesserte Platzbelegung auf einem Plattenspeicher.
  • Der Wurzelblock 200 umfasst den Inode der Inode-Datei 202 plus andere Informationen, betreffend das aktive Datensystem 201, die aktive Karte 226, vorhergehende aktive Dateisysteme, die als Speicherauszüge 214, 216, 218 und 220 bekannt sind, und deren jeweilige Speicherauszugskarten 254, 256, 258 und 260.
  • Die aktive Karte 226 des aktiven Dateisystems 201 ist eine Bitmap, die mit den Leerständen der Blöcke des aktiven Dateisystems 201 verknüpft ist. Die entsprechenden Speicherauszugskarten 254, 256, 258 und 260 sind aktive Karten, die mit bestimmten Speicherauszügen 214, 216, 218, und 220 und einer inklusiven-ODER-Zusammenfassungskarte 224 der Speicherauszugskarten 254, 256, 258 und 260 verknüpft werden können. Auch werden andere Blöcke 226 gezeigt, die dop pelte indirekte Blöcke 230 und 232, indirekte Blöcke 234, 236 und 238 und Datenblöcke 240, 242, 244 und 246 umfassen. Schließlich zeigt 2 die Platzkarte 280, die eine Ansammlung von Platzkartenblöcken von binären Zahlen 282, 284, 286, 288 und 290 umfasst.
  • Der Wurzelblock 200 umfasst eine Ansammlung von Zeigern, die in das Dateisystem geschrieben werden, wenn das System einen neuen CP (Konsistenzpunkt) erreicht hat. Die Zeiger zielen auf eine Menge von indirekten (oder trippel-indirekten oder doppel-indirekten) Inode-Blöcken (nicht dargestellt) oder direkt auf die Inode-Datei 202, die aus einer Menge von Blöcken besteht, die als Inode-Blöcke 204, 206 208, 210 und 212 bekannt sind.
  • Die Anzahl der gesamten Blöcke ermittelt die Anzahl von indirekten Schichten von Blöcken in dem Dateisystem. Sowie mit allen Blöcken in dem System umfasst der Wurzelblock 200 einen standardisierten Umfang an Daten, wie z.B. 4096 Bytes mit 8-Bit-Bytes. Somit haben alle Blöcke in einer bevorzugten Ausführungsform ungefähr 32 KBit. 16 Bytes des Wurzelblocks 200 werden verwendet, um ihn selbst zu beschreiben, einschließlich der Größe des Dateisystems, des Zeitpunkts zu dem er erzeugt wurde und andere betreffende Daten. Die verbleibenden ungefähr 32 KBits in dem Wurzelblock 300 sind eine Ansammlung von Zeigern auf die Inode-Blöcke 204, 206, 208, 210 und 212 in der Inode-Datei 202. Jeder Zeiger in der bevorzugten Ausführungsform besteht aus 16 Byte. Somit gibt es ungefähr 2000 Zeigereinträge in dem Wurzelblock 200, die auf 2000 entsprechende Inode-Blöcke der Inode-Datei 202 zielen, die jeweils 4 KBytes umfassen. Falls es mehr als 2000 Inode-Blöcke gibt, werden indirekte Inode-Blöcke verwendet.
  • Ein Inode-Block 204 in der Inode-Datei 202 ist in 2 gezeigt, der auf andere Blöcke 228 in dem aktiven Dateisystem 201 zeigt, die mit doppel-indirekten Blöcken 230 und 232 beginnen (das könnten auch tripel-indirekte Blöcke sein). Diese doppel-indirekten Blöcke 230 und 232 umfassen Zeiger auf indirekte Blöcke 234, 236 und 238. Diese indirekten Blöcke 234, 236 und 238 umfassen Zeiger, die auf Datenblattblöcke 240, 242, 244 und 246 des aktiven Dateisystems 201 gerichtet sind.
  • Der Inode-Block 208 in der Inode-Datei 202 zeigt auf eine Menge von Blöcken (1, 2, 3, ..., P), die die aktive Karte 226 genannt werden. Jeder Block in der aktiven Karte 226 ist eine Bitmap, bei der jedes Bit einem Block in dem gesamten Datenträger entspricht. Eine „1" an einer bestimmten Position in der Bitmap korreliert mit einem bestimmten belegten Block in dem aktiven Dateisystem 201. Umgekehrt korreliert eine „0" mit einem bestimmten Block, der frei ist für eine Belegung in dem aktiven Dateisystem 201. Jeder Block in der aktiven Karte 226 kann bis zu 32 K Blöcke oder 128 MB beschreiben. Für einen 6-TB-Datenträger werden nur 24 Blöcke in der aktiven Karte 226 benötigt.
  • Ein weiterer Inode-Block in der Inode-Datei 202 ist der Inode-Block N 212. Dieser Block umfasst eine Menge von Zeigern auf eine Ansammlung von Speicherauszügen 214, 216, 218 und 220 des Datenträgers. Jeder Speicherauszug umfasst sämtliche Informationen eines Wurzelblocks und ist äquivalent zu einem älteren Wurzelblock aus einem vorhergehenden aktiven Dateisystem. Der neueste Speicherauszug 214 wird bei dem Abschluss des aktuellsten CP erzeugt. Der neueste Speicherauszug 214 umfasst eine Ansammlung von Zeigern, die direkt oder indirekt auf die gleiche Inode-Datei 212 wie der Wurzelblock 200 des aktiven Dateisystems 201 zeigen. Wenn das aktive Dateisystem 201 sich aufgrund in das Dateisystem geschriebener Dateien ändert, divergieren der aktuellste Speicherauszug 214 und der gegenwärtige Wurzelblock 200. Das aktive Dateisystem 201 verändert sich auch aufgrund einer Veränderung von Dateieigenschaften, einer Erzeugung von neuen Dateien und eines Löschens von alten Dateien. Speicherauszüge zeigen initial auf den gleichen Strukturtyp wie das aktive Dateisystem 201. Der neueste Speicherauszug 214 ist mit einer Speicherauszugskarte 254 verknüpft. Die Speicherauszugskarte 254 ist eine Bitmap, die initial das Äquivalent der aktiven Karte 226 ist. Die älteren Speicherauszüge 216, 218 und 210 haben eine korrespondierende Ansammlung von Speicherauszügen 256, 258 und 260. Wie die aktive Karte 226, umfassen diese Speicherauszüge 256, 258 und 260 eine Menge von Blöcken umfassend Bitmaps, die mit belegten und freien Blöcken für den bestimmten CP korrespondieren, wenn die bestimmten Speicherauszüge 256, 258 und 260 erzeugt wurden. Weil jedes aktive Dateisystem eine Struktur hat, die einen oder mehrere Speicherauszüge umfasst, folgt, dass Speicherauszüge Zeiger auf ältere Speicherauszüge umfassen. Es kann eine große Anzahl von vorherigen Speicherauszügen in jedem gegebenen Speicherauszug geben.
  • Blöcke, die in dem aktiven Dateisystem 201 nicht verwendet werden, stehen nicht notwendigerweise für eine Belegung oder Neubelegung zur Verfügung, weil das System ein hochgradig zuverlässiges Datenspeichersystem ist. In der Tat ist es schwierig, Blöcke, die einmal belegt wurden, jemals wieder frei zu machen. Grundsätzlich können belegte Blöcke durch Entfernen eines Speicherauszugs unter Verwendung des Kommandos zu Speicherauszugslöschung freigemacht werden. Falls kein anderer Speicherauszug oder aktive Dateien den Block verwenden, kann der Block freigemacht und überschrieben werden, während des nächsten Kopierens beim Ausführen durch WAFL. Das System kann unter Verwendung der „Nächster-Nachbar-Regel" relativ effizient ermitteln, ob ein Block entfernt werden kann. Falls die vorherigen und nachfolgenden Speicherauszüge einen bestimmten Block in ihren entsprechenden Speicherauszugskarten nicht belegen, kann der Block während einer Speicherauszugslöschung gelöscht werden, andernfalls kann der Block nicht gelöscht werden. Die Schwierigkeit beim Freimachen von Blöcken resultiert in einem System, das außerordentlich uneinheitlich bei der Platzbelegung wird. Es ist außerordentlich ineffizient, Block für Block durch das System zu suchen. Die Speicherauszüge 214, 216, 218 und 220 könnten in ihren entsprechenden Speicherauszugskarten 254, 256, 258 und 260 gesucht werden, um Blöcke zu ermitteln, die von allen Speicherauszügen belegt oder freigegeben sind. Kombiniert mit der aktiven Karte 226 können alle Blöcke in dem Datenträger im Hinblick auf deren Verfügbarkeit für ein Schreiben von Dateien ermittelt werden. Jedoch ist dies relativ ineffizient (obwohl nicht so ineffizient wie ein lineares Durchsuchen aller Blöcke), wegen der Größe und Struktur der Speicherauszüge.
  • Stattdessen wird eine Zusammenfassungskarte 224 unter Verwendung einer IOR-Operation 222 (Inklusives ODER) auf den Speicherauszugskarten 254, 256, 258 und 260 erzeugt. Wie die aktive Karte 226 und die Speicherauszugskarten 254, 256, 258 und 260 ist die Zusammenfassungskarte 224 eine Menge von Blöcken (1, 2, 3, ..., Q), die Bitmaps enthalten. Jedes Bit in jedem Block der Zusammenfassungskarte 224 beschreibt den Belegungszustand von einem Block in dem System mit „1" als belegt und mit „0" als frei. Die Zusammenfassungskarte 224 beschreibt die belegten und freien Blöcke des gesamten Datenträgers von allen Speicherauszügen 214, 216, 218 und 220 kombiniert. Eine der Hauptanwendungen der Zusammenfassungskarte 224 ist ein Lokalisieren von Blöcken, die potenziell für eine Neubelegung unter Verwendung einer Speicherauszugslöschung zur Verfügung stehen. Somit erzeugt das System die Zusammenfassungskarte 124 im Hintergrund anstatt an einem CP, wenn Zeit zur Verfügung steht.
  • Eine UND-Operation 270 auf Mengen von Blöcken (wie z.B. 1024 Blöcke) der aktiven Karte 226 und der Zusammenfassungskarte 224 erzeugt eine Platzkarte 280. Anders als bei der aktiven Karte 226 und der Zusammenfassungskarte 224, die Mengen von Blöcken sind, die Bitmaps enthalten, ist die Platzkarte 280 eine Menge von Blöcken, umfassend 282, 284, 286, 288 und 290, die ein Felder binärer Zahlen enthalten. Die binären Zahlen in dem Feld repräsentieren die Addition aller belegten Blöcke in einem Bereich, der als eine Spanne bekannt ist, die eine feste Anzahl von Blöcken enthalten, wie z.B. 1024 Blöcke. Das Feld der binären Zahlen in dem einzelnen Platzkartenblock 282 repräsentiert die Belegung aller Blöcke für alle Speicherauszüge und die aktive Datei in einer Spanne von 1.024 Blöcken. Jede der binären Zahlen 282, 284, 286, 288 und 290 in dem Feld hat eine feste Länge. In einer bevorzugten Ausführungsform sind die binären Zahlen 16-Bit-Zahlen, obwohl nur 10 Bit verwendet werden.
  • In einer bevorzugten Ausführungsform teilt die große Platzkartenfeld-Binärzahl 284 (0000001111111101 = 1021 in dezimalen Einheiten) dem Dateisystem mit, dass die entsprechende Spanne relativ voll ist. In einer solchen Ausführungsform repräsentiert die größte binäre Zahl 00010000000000 (1024 dezimal) eine Spanne, die nur belegte Blöcke enthält. Die kleinste binäre Zahl 00000000000000 (0 dezimal) repräsentiert eine Spanne, die ausschließlich freie Blöcke enthält. Die kleine binäre Zahl 288 (0000000000001101 = 13 in dezimalen Einheiten) instruiert das Dateisystem, dass die betreffende Spanne relativ leer ist. Die Platzkarte 280 ist somit eine Repräsentation der Belegung aller Blöcke in dem Datenträger in einer sehr kompakten Form, die in 1024 Block-Abschnitte unterteilt ist. Jede 16-Bit-Zahl in dem Feld der Platzkarte 280 korrespondiert mit den Belegungen von Blöcken in der Spanne, die 1024 Blöcke oder ungefähr 8 MB enthält. Jeder Platzkartenblock 280 hat ungefähr 2000 binäre Zahlen in dem Feld und sie beschreiben den Belegungsstatus von 16 GB. Anders als bei der Zusammenfassungskarte 214 muss der Platzkartenblock 280 immer ermittelt werden, wenn eine Datei geschrieben werden muss.
  • Verwendungsverfahren
  • 3 zeigt ein Flussdiagramm eines Verfahrens zum Verwenden des Systems, das in 1 und 2 gezeigt ist.
  • Ein Verfahren 300 wird durch das System 100 ausgeführt. Obwohl das Verfahren 300 seriell beschrieben ist, können die Schritte des Verfahrens 300 durch separate Elemente nacheinander oder parallel, ob asynchron, in einer Weise einer Pipeline, oder anderweitig, ausgeführt werden. Es gibt keine besondere Anforderung, dass das Verfahren 300 in der gleichen Reihenfolge auszuführen ist, in der diese Beschreibung die Schritte auflistet, außer dort, wo es angegeben ist.
  • An einem Flusspunkt 305 ist das System 100 bereit, das Verfahren 300 auszuführen.
  • In einem Schritt 310 fragt ein Benutzer an, eine Datei in das Dateisystem zu schreiben.
  • In einem Schritt 315 ermittelt das Dateisystem den Prozentsatz an belegten Blöcken in dem gesamten Dateisystem durch Abfragen von Informationen, die in dem Dateisysteminformationsblock gespeichert sind.
  • In einem Schritt 320 wird ein Schwellenwert für Belegungsbereiche, basierend auf der relativen Belegung aller Blöcke, festgesetzt. Falls z.B. 60 % der Blöcke zum Schreiben zur Verfügung stehen, kann ein Schwellenwert von 55 % freien Blöcken von dem Dateisystem aufgegriffen werden.
  • In einem Schritt 325 sucht das Dateisystem linear durch Belegungsbereiche, indem nach Platzkarteneinträgen von Platzkartenblöcken gesucht wird, die diesem Belegungsbereich entsprechen, indem nach dem ersten Belegungsbereich gesucht wird, dessen freier Platz eine Zahl ist, die einen Wert repräsentiert, der größer oder gleich dem Schwellenwert ist, in diesem Fall 55 % freie Blöcke.
  • In einem Schritt 330 wählt das System dann den ersten Belegungsbereich aus, der dieses Kriterium erfüllt.
  • In einem Schritt 335 schreibt das System die Dateiblöcke in die Blöcke in dem ausgewählten Belegungsbereich. Das System prüft, um sicherzustellen, dass alle Blöcke der Datei auf den Datenträger geschrieben wurden.
  • In einem Schritt 340 fährt das Verfahren fort, um das Schreiben der Datei abzuschließen, falls alle Blöcke der Datei in diesen Belegungsbereich geschrieben wurden.
  • In einem Schritt 350 wird, falls nicht alle Blöcke der Datei geschrieben wurden, eine weitere Iteration zum Lokalisieren eines Belegungsbereichs benötigt. Das Dateisystem sucht wieder linear die List an Belegungsbereichen 325 nach dem ersten Belegungsbereich mit einem Prozentsatz an freiem Platz durch, der größer oder gleich dem Prozentsatz ist, der in Schritt 320 festgelegt wurde. Wenn der nächste Belegungsbereich gefunden wird, der dieses Kriterium erfüllt, werden weitere Blöcke in diesen Belegungsbereich 335 geschrieben. Falls nicht alle Dateiblöcke geschrieben werden 350, wird das Verfahren wiederholt, bis alle Dateiblöcke geschrieben wurden und das Verfahren fertig ist 345.
  • An einem Flusspunkt 345 wurden alle Blöcke geschrieben und das Verfahren zum Schreiben von Dateien ist fertig.

Claims (27)

  1. Verfahren, umfassend die Schritte Aufzeichnen in einem Dateisystem (201), das mit einer Menge von Speicherblöcken verknüpft ist, einer aktiven Karte (226), derjenigen der Speicherblöcke, die in dem Dateisystem (201) frei sind; Aufzeichnen eines Konsistenzpunkts in dem Dateisystem (201), der eine konsistente Version des Dateisystems (201) umfasst, wobei der Konsistenzpunkt eine Kopie einer vorherigen Version der aktiven Karte (254, 256, 258, 260) umfasst; und gekennzeichent durch die Schritte: Erzeugen einer Menge von Werten (280), die Speicherblöcke bestimmt, die zum Schreiben von Daten zur Verfügung stehen, durch UND-verküpfen von Mengen von Blöcken der aktiven Karte (226) und wenigstens einer Kopie der vorherigen Version, wobei jeder der Werte (282, 284, 286, 288, 290) mit einem besonderen Bereich (104, 106, 108, 110) verknüpft ist, der mit einer Vielzahl der Speicherblöcke korrespondiert, und Auswählen wenigstens eines der Vielzahl der Bereiche (104, 106, 108, 110) in Reaktion auf die Menge von Werten (282, 284, 286, 288, 290).
  2. Verfahren nach Anspruch 1, umfassend Schritte des Aufrechterhaltens einer Repräsentation (280) der Menge von Werten (282, 284, 286, 288, 290) und deren Verknüpfungen mit den besonderen Bereichen (104, 106, 108, 110).
  3. Verfahren nach Anspruch 1, wobei die Schritte des Bestimmens in Reaktion auf einen Vergleich zwischen der Anzahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten in dem verknüpften Bereich (104, 106, 108, 110) zur Verfügung stehen, und einer kumulativen Zahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten in dem Dateisystem (201) zur Verfügung stehen, erfolgen.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Schritte des Bestimmens in Reaktion auf ein statistisches Maß einer Anzahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten in den verknüpften Bereichen (104, 106, 108, 110) zur Verfügung stehen, erfolgen, wobei das statistische Maß auf die aktive Karte (226) und wenigstens einen der vorhergehenden Versionen (254, 256, 258, 260) reagiert.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die aktive Karte (226) eine Bit-Karte umfasst.
  6. Verfahren nach einem der vorhergehende Ansprüche, wobei die aktive Karte (226) ein Bit umfasst, das mit jedem der ausgewählten Untermengen der Menge von Speicherblöcken für eine mögliche Verwendung in einem Massenspeicher verknüpft ist.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Schritte des Auswählens in Reaktion auf eine Suche einer Vielzahl der Bereiche (104, 106, 108, 110) erfolgen.
  8. Verfahren nach Anspruch 7, wobei die Suche eine lineare Suche der Vielzahl der Bereiche (104, 106, 108, 110) umfasst.
  9. Verfahren nach Anspruch 7, wobei die Schritte des Auswählens in Reaktion auf einen ersten der Bereiche erfolgen, der eine Menge von Anforderungen für die Suche erfüllt.
  10. Verfahren nach einem der vorgehenden Ansprüche, umfassend Schritte des Schreibens von Daten in eine Menge der Speicherblöcke in Reaktion auf die Schritte des Auswählens.
  11. Verfahren nach Anspruch 10, wobei die Schritte des Schreibens von Daten ein Schreiben einer Datei in dem Dateisystem (206) umfassen.
  12. Verfahren nach Anspruch 10, wobei die Menge der Speicherblöcke in einem einzelnen der Bereiche (104, 106, 108, 110) umfasst ist.
  13. Verfahren nach Anspruch 10, umfassend Schritte zum weiteren Auswählen eines zweiten der Vielzahl der Bereiche (104, 106, 108, 110) in Reaktion auf die Menge der Werte (282, 284, 286, 288, 290).
  14. Verfahren nach Anspruch 13, wobei die Schritte des Schreibens von Daten ein Schreiben eines Abschnitts einer Datei in dem Dateisystem (206) in den zweiten der Vielzahl von Bereichen (104, 106, 108, 110) umfassen.
  15. Verfahren nach einem der Ansprüche 1 bis 14, wobei die Menge der Werte eine Platzkarte umfasst, die ein Feld von binären Zahlen umfasst, wobei jeder der binären Zahlen ein Zähler ist, der eine Anzahl der Vielzahl von Speicherblöcken betrifft, die für ein Schreiben von Daten in jeden der besonderen Bereiche zur Verfügung stehen oder nicht zur Verfügung stehen.
  16. Vorrichtung zur Verwendung in einem Dateisystem (206), das mit einer Menge von Speicherblöcken verknüpft ist, wobei die Vorrichtung umfasst: eine Menge von Maschinen-gerechten Daten, wobei die Daten umfassen: eine aktive Karte (226) derjenigen der Speicherblöcke, die in dem Dateisystem (201) frei sind, einen Konsistenzpunkt, der eine konsistente Version des Dateisystems (206) umfasst, wobei der Konsistenzpunkt eine Kopie einer vorherigen Version der aktiven Karte (254, 256, 258, 260) umfasst, und gekennzeichnet durch eine Menge von Werten, die durch UND-verknüpfen von Mengen von Blöcken der aktiven Karte und wenigstens einer Kopie der vorherigen Version erzeugt werden, wobei die Menge von Werten (280) zum Bestimmen von Speicherblöcken dient, die zum Schreiben von Daten zur Verfügung stehen, wobei jeder der Werte (282, 284, 286, 288, 290) mit einem besonderen Bereich (104, 106, 108, 110) verknüpft ist, der mit einer Vielzahl der Speicherblöcke korrespondiert; und eine Einrichtung zum Auswählen wenigstens eines der Vielzahl der Bereiche (104, 106, 108, 110) in Reaktion auf die Menge von Werten.
  17. Vorrichtung nach Anspruch 16, umfassend eine Einrichtung zum Bestimmen der Menge von Werten in Reaktion auf einen Vergleich zwischen der Anzahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten in dem verknüpften Bereich (104, 106, 108, 110) zur Verfügung stehen, und einer kumulativen Anzahl von Speicherblöcken, die gegenwärtig zum Schreiben von Daten in dem Dateisystem (206) zur Verfügung stehen.
  18. Vorrichtung nach einem der Ansprüche 16 bis 17, wobei die Einrichtungen zum Bestimmen auf ein statistisches Maß einer Anzahl von Speicherblöcken reagieren, die gegenwärtig zum Schreiben von Daten in dem verknüpften Bereich (104, 106, 108, 110) zur Verfügung stehen, wobei das statistische Maß auf die aktive Karte (226) und wenigstens eine der vorherigen Versionen (254, 256, 258, 260) reagiert.
  19. Vorrichtung nach einem der Ansprüche 16 bis 18, wobei die Einrichtungen zum Auswählen auf eine Suche einer Vielzahl der Bereiche (104, 106, 108, 110) reagieren.
  20. Vorrichtung nach Anspruch 19, wobei die Suche eine lineare Suche der Vielzahl der Bereiche (104, 106, 108, 110) umfasst.
  21. Vorrichtung nach Anspruch 19, wobei die Einrichtungen zum Auswählen auf einen ersten Bereich reagieren, der eine Menge von Anforderungen an die Suche erfüllt.
  22. Vorrichtung nach einem der Ansprüche 16 bis 21, umfassend eine Einrichtung zum Schreiben von Daten in eine Menge der Speicherblöcke in Reaktion auf die Schritte des Auswählens.
  23. Vorrichtung nach Anspruch 22, wobei die Menge von Speicherblöcken in einem einzelnen der Bereiche (104, 106, 108, 110) enthalten ist.
  24. Vorrichtung nach einem der Ansprüche 22 bis 23, umfassend eine Einrichtung zum weiteren Auswählen eines zweiten der Vielzahl der Bereiche (104, 106, 108, 110) in Reaktion auf die Menge der Werte.
  25. Vorrichtung nach einem der Ansprüche 22 bis 24, wobei die Einrichtungen zum Schreiben von Daten ein Schreiben einer Datei in dem Dateisystem (206) umfassen.
  26. Vorrichtung nach Anspruch 25, wobei die Einrichtung zum Schreiben von Daten ein Schreiben eines Anteils einer Datei in dem Dateisystem (206) in den zweiten der Vielzahl der Bereiche (104, 106, 108, 110) umfasst.
  27. Vorrichtung nach einem der Ansprüche 16 bis 26, wobei die Menge der Werte eine Platzkarte umfasst, die ein Feld von binären Zahlen umfasst, wobei jede der binären Zahlen ein Zähler ist, der eine Anzahl der Vielzahl von Speicherblöcken betrifft, die für ein Schreiben von Daten in jeden der besonderen Bereiche zur Verfügung stehen oder nicht zur Verfügung stehen.
DE60129025T 2000-08-18 2001-08-17 Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche Expired - Lifetime DE60129025T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US642065 1991-01-16
US09/642,065 US6636879B1 (en) 2000-08-18 2000-08-18 Space allocation in a write anywhere file system
PCT/US2001/025822 WO2002017057A2 (en) 2000-08-18 2001-08-17 Improved space allocation in a write anywhere file system

Publications (2)

Publication Number Publication Date
DE60129025D1 DE60129025D1 (de) 2007-08-02
DE60129025T2 true DE60129025T2 (de) 2008-02-21

Family

ID=24575036

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60129025T Expired - Lifetime DE60129025T2 (de) 2000-08-18 2001-08-17 Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche

Country Status (4)

Country Link
US (3) US6636879B1 (de)
EP (1) EP1311940B1 (de)
DE (1) DE60129025T2 (de)
WO (1) WO2002017057A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230333737A1 (en) * 2022-04-14 2023-10-19 Dell Products L.P. Archiving operations for compressed data using file layout

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6751635B1 (en) * 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US7299243B2 (en) * 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
US7028041B2 (en) * 2001-11-29 2006-04-11 Wal-Mart Stores, Inc. Methods and apparatus for database space calculation and error detection
US6978283B1 (en) * 2001-12-21 2005-12-20 Network Appliance, Inc. File system defragmentation technique via write allocation
US6829617B2 (en) * 2002-02-15 2004-12-07 International Business Machines Corporation Providing a snapshot of a subset of a file system
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
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
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
US6857001B2 (en) 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
GB2391103B (en) * 2002-07-19 2005-08-17 Autodesk Canada Inc Image data processing apparatus
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7340486B1 (en) * 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
US7664771B2 (en) * 2002-10-16 2010-02-16 Microsoft Corporation Optimizing defragmentation operations in a differential snapshotter
US7551787B2 (en) * 2003-01-28 2009-06-23 International Business Machines Corporation Adaptive compression quality
US7809693B2 (en) * 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
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
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
CN1308836C (zh) * 2003-05-27 2007-04-04 智邦科技股份有限公司 数据储存的方法及系统
US7814128B2 (en) * 2003-05-30 2010-10-12 Symantec Operating Corporation Multi-volume file support
US6959313B2 (en) 2003-07-08 2005-10-25 Pillar Data Systems, Inc. Snapshots of file systems in data storage systems
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
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
US7200726B1 (en) 2003-10-24 2007-04-03 Network Appliance, Inc. Method and apparatus for reducing network traffic during mass storage synchronization phase of synchronous data mirroring
US7596672B1 (en) 2003-10-24 2009-09-29 Network Appliance, Inc. Synchronous mirroring including writing image updates to a file
US7325109B1 (en) * 2003-10-24 2008-01-29 Network Appliance, Inc. Method and apparatus to mirror data at two separate sites without comparing the data at the two sites
US7203796B1 (en) 2003-10-24 2007-04-10 Network Appliance, Inc. Method and apparatus for synchronous data mirroring
US7647355B2 (en) * 2003-10-30 2010-01-12 International Business Machines Corporation Method and apparatus for increasing efficiency of data storage in a file system
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7783611B1 (en) 2003-11-10 2010-08-24 Netapp, Inc. System and method for managing file metadata during consistency points
US7698289B2 (en) 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US7720801B2 (en) * 2003-12-19 2010-05-18 Netapp, Inc. System and method for supporting asynchronous data replication with very short update intervals
US7478101B1 (en) 2003-12-23 2009-01-13 Networks Appliance, Inc. System-independent data format in a mirrored storage system environment and method for using the same
US7792880B2 (en) * 2004-01-05 2010-09-07 International Business Machines Corporation Method and apparatus for efficient implementation of discontiguous objects
US7340639B1 (en) 2004-01-08 2008-03-04 Network Appliance, Inc. System and method for proxying data access commands in a clustered storage system
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
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
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
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
US7430571B2 (en) 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7562101B1 (en) * 2004-05-28 2009-07-14 Network Appliance, Inc. Block allocation testing
US7509329B1 (en) 2004-06-01 2009-03-24 Network Appliance, Inc. Technique for accelerating file deletion by preloading indirect blocks
US7519628B1 (en) 2004-06-01 2009-04-14 Network Appliance, Inc. Technique for accelerating log replay with partial cache flush
US7284101B2 (en) * 2004-08-04 2007-10-16 Datalight, Inc. Reliable file system and method of providing the same
US7194595B1 (en) 2004-09-27 2007-03-20 Network Appliance, Inc. Technique for translating a hybrid virtual volume file system into a pure virtual file system data stream
US7243207B1 (en) 2004-09-27 2007-07-10 Network Appliance, Inc. Technique for translating a pure virtual file system data stream into a hybrid virtual volume
US7260678B1 (en) 2004-10-13 2007-08-21 Network Appliance, Inc. System and method for determining disk ownership model
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
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
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
US7707165B1 (en) 2004-12-09 2010-04-27 Netapp, Inc. System and method for managing data versions in a file system
US7506111B1 (en) 2004-12-20 2009-03-17 Network Appliance, Inc. System and method for determining a number of overwitten blocks between data containers
US8019842B1 (en) 2005-01-27 2011-09-13 Netapp, Inc. System and method for distributing enclosure services data to coordinate shared storage
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
US8180855B2 (en) * 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US7574464B2 (en) * 2005-02-14 2009-08-11 Netapp, Inc. System and method for enabling a storage system to support multiple volume formats simultaneously
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
EP1875393B1 (de) * 2005-04-25 2015-08-05 NetApp, Inc. Architektur zur unterstützung spärlicher volumina
ATE512412T1 (de) 2005-04-25 2011-06-15 Network Appliance Inc System und verfahren zum zwischenspeichern von netzwerkdateisystemen
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
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
US7698501B1 (en) 2005-04-29 2010-04-13 Netapp, Inc. System and method for utilizing sparse data containers in a striped volume set
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US8073899B2 (en) * 2005-04-29 2011-12-06 Netapp, Inc. System and method for proxying data access commands in a storage system cluster
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
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
US7516285B1 (en) 2005-07-22 2009-04-07 Network Appliance, Inc. Server side API for fencing cluster hosts via export access rights
US7650366B1 (en) 2005-09-09 2010-01-19 Netapp, Inc. System and method for generating a crash consistent persistent consistency point image set
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
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
EP1949214B1 (de) 2005-10-28 2012-12-19 Network Appliance, Inc. System und verfahren zum optimieren der multi-pathing-unterstützung in einer verteilten speichersystemumgebung
US7376796B2 (en) 2005-11-01 2008-05-20 Network Appliance, Inc. Lightweight coherency control protocol for clustered storage system
US7480684B2 (en) * 2005-11-04 2009-01-20 Sun Microsystems, Inc. Method and system for object allocation using fill counts
US7877554B2 (en) 2005-11-04 2011-01-25 Oracle America, Inc. Method and system for block reallocation
US7716445B2 (en) * 2005-11-04 2010-05-11 Oracle America, Inc. Method and system for storing a sparse file using fill counts
TWI301021B (en) * 2005-12-27 2008-09-11 Ind Tech Res Inst File distribution and access system and method for file management
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
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
US7788456B1 (en) 2006-02-16 2010-08-31 Network Appliance, Inc. Use of data images to allow release of unneeded data storage
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
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
US8260831B2 (en) * 2006-03-31 2012-09-04 Netapp, Inc. System and method for implementing a flexible storage manager with threshold control
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US7577808B1 (en) * 2006-06-23 2009-08-18 Emc Corporation Efficient backup data retrieval
US7660837B2 (en) 2006-06-30 2010-02-09 Broadcom Corporation Method for automatically managing disk fragmentation
US7765244B2 (en) * 2006-06-30 2010-07-27 Broadcom Corporation Fast and efficient method for deleting very large files from a filesystem
CN101622594B (zh) 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
US8489811B1 (en) 2006-12-29 2013-07-16 Netapp, Inc. System and method for addressing data containers using data set identifiers
US7685181B2 (en) * 2007-02-26 2010-03-23 International Business Machines Corporation Method and system for utilizing a hierarchical bitmap structure to provide a fast and reliable mechanism to represent large deleted data sets in relational databases
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
US8312214B1 (en) 2007-03-28 2012-11-13 Netapp, Inc. System and method for pausing disk drives in an aggregate
US8001307B1 (en) 2007-04-27 2011-08-16 Network Appliance, Inc. Apparatus and a method to eliminate deadlock in a bi-directionally mirrored data storage system
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
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
US8131966B2 (en) * 2007-04-30 2012-03-06 International Business Machines Corporation System and method for storage structure reorganization
US7797489B1 (en) 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
WO2008149501A1 (ja) * 2007-06-06 2008-12-11 Panasonic Corporation 再生装置、再生方法、プログラム
US7945587B2 (en) * 2007-10-10 2011-05-17 Microsoft Corporation Random allocation of media storage units
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US7836107B2 (en) * 2007-12-20 2010-11-16 Microsoft Corporation Disk seek optimized file system
US8380674B1 (en) 2008-01-09 2013-02-19 Netapp, Inc. System and method for migrating lun data between data containers
US7996607B1 (en) 2008-01-28 2011-08-09 Netapp, Inc. Distributing lookup operations in a striped storage system
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8621154B1 (en) 2008-04-18 2013-12-31 Netapp, Inc. Flow based reply cache
US8161236B1 (en) 2008-04-23 2012-04-17 Netapp, Inc. Persistent reply cache integrated with file system
US7991973B2 (en) * 2008-05-05 2011-08-02 Panasas, Inc. Data storage systems, methods and networks having a snapshot efficient block map
US9778882B2 (en) * 2008-06-30 2017-10-03 Hitachi Data Systems Engineering UK Limited Dynamic write balancing in a data storage system
US8572036B2 (en) 2008-12-18 2013-10-29 Datalight, Incorporated Method and apparatus for fault-tolerant memory management
US8171227B1 (en) 2009-03-11 2012-05-01 Netapp, Inc. System and method for managing a flow based reply cache
US8321645B2 (en) * 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
CN102597910B (zh) 2009-09-09 2015-03-25 弗森-艾奥公司 存储设备中用于功率减小管理的装置、系统及方法
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US20120284474A1 (en) * 2011-05-06 2012-11-08 International Business Machines Corporation Enabling recovery during data defragmentation
US9009438B2 (en) 2011-06-01 2015-04-14 International Business Machines Corporation Space reclamation in multi-layered and thin provisioned storage systems
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9645950B2 (en) * 2013-01-31 2017-05-09 Vmware, Inc. Low-cost backup and edge caching using unused disk blocks
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
WO2016048325A1 (en) 2014-09-25 2016-03-31 Hewlett Packard Enterprise Development Lp Storage space allocation
US9747226B2 (en) * 2015-03-30 2017-08-29 Cavium, Inc. Packet processing system, method and device to optimize packet buffer space
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
US10997118B1 (en) * 2015-12-17 2021-05-04 Amazon Technologies, Inc. Generating a fresh machine image
US10228886B2 (en) 2016-04-20 2019-03-12 International Business Machines Corporation Storage device volume selection for improved space allocation
JP6855348B2 (ja) * 2017-07-31 2021-04-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびダウンロード処理方法
CN110389905B (zh) * 2018-04-20 2023-12-19 伊姆西Ip控股有限责任公司 资源释放方法、资源分配方法、设备和计算机程序产品
US10664188B2 (en) * 2018-08-25 2020-05-26 International Business Machines Corporation Data set allocations taking into account point-in-time-copy relationships
US11216199B2 (en) * 2018-10-31 2022-01-04 EMC IP Holding Company LLC Applying deduplication digests to avoid same-data writes

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4527232A (en) 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
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
US4742450A (en) 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
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
US4761785B1 (en) 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US5237682A (en) 1987-10-19 1993-08-17 International Business Machines Corporation File management system for a computer
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
US5055999A (en) 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
GB2218833A (en) * 1988-05-16 1989-11-22 Ardent Computer Corp File system
US5043876A (en) 1988-05-27 1991-08-27 International Business Machines Corporation N-level file shadowing and recovery in a shared file system
US4937763A (en) 1988-09-06 1990-06-26 E I International, Inc. Method of system state analysis
US5067099A (en) 1988-11-03 1991-11-19 Allied-Signal Inc. Methods and apparatus for monitoring system performance
US5222217A (en) 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
US5144659A (en) 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
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
US5218695A (en) 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5195100A (en) 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5166939A (en) 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5088081A (en) 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
JPH0731582B2 (ja) 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5274807A (en) 1990-11-01 1993-12-28 At&T Bell Laboratories Method for reducing magnetic storage volume for computer disk image backup
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5146588A (en) 1990-11-26 1992-09-08 Storage Technology Corporation Redundancy accumulator for disk drive array memory
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
US5239640A (en) 1991-02-01 1993-08-24 International Business Machines Corporation Data storage system and method including data and checksum write staging storage
JP2923702B2 (ja) 1991-04-01 1999-07-26 株式会社日立製作所 記憶装置及びそのデータ修復方法
US5321837A (en) 1991-10-11 1994-06-14 International Business Machines Corporation Event handling mechanism having a process and an action association process
US5502836A (en) 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system 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
AU3424993A (en) 1991-12-27 1993-07-28 Compaq Computer Corporation Method for performing disk array operations using a nonuniform stripe size mapping scheme
US5333305A (en) 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
US5442752A (en) 1992-01-24 1995-08-15 International Business Machines Corporation Data storage method for DASD arrays using striping based on file length
US5305326A (en) 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5469566A (en) 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
US5708668A (en) 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5335235A (en) 1992-07-07 1994-08-02 Digital Equipment Corporation FIFO based parity generator
US5315602A (en) 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
EP0612015A1 (de) 1993-02-16 1994-08-24 International Business Machines Corporation Verbesserte Speicherplattenanordnung mit besonderen Paritätsgruppen für Datenblöcke mit hoher Aktualisierungsfrequenz
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6138126A (en) * 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
JP3862274B2 (ja) * 1993-06-03 2006-12-27 ネットワーク・アプライアンス・インコーポレイテッド Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法
EP1003103B1 (de) * 1993-06-03 2008-10-01 Network Appliance, Inc. Verfahren und Vorrichtung zum Beschreiben beliebiger Bereiche eines Dateisystems
WO1994029795A1 (en) 1993-06-04 1994-12-22 Network Appliance Corporation A method for providing parity in a raid sub-system using a non-volatile memory
US5649152A (en) 1994-10-13 1997-07-15 Vinca Corporation Method and system for providing a static snapshot of data stored on a mass storage system
US5835953A (en) 1994-10-13 1998-11-10 Vinca Corporation Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating
EP0709779B1 (de) 1994-10-31 2001-05-30 International Business Machines Corporation Gemeinsam genutzte virtuelle Platten mit anwendungstransparenter Wiedergewinnung
US5678006A (en) 1995-04-27 1997-10-14 Cisco Systems, Inc. Network switch having network management agent functions distributed among multiple trunk and service modules
US6453325B1 (en) 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US5907672A (en) 1995-10-04 1999-05-25 Stac, Inc. System for backing up computer disk volumes with error remapping of flawed memory addresses
US5737744A (en) 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5742752A (en) 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US5819310A (en) 1996-05-24 1998-10-06 Emc Corporation Method and apparatus for reading data from mirrored logical volumes on physical disk drives
US5828876A (en) 1996-07-31 1998-10-27 Ncr Corporation File system for a clustered processing system
US6161165A (en) 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US5950225A (en) 1997-02-28 1999-09-07 Network Appliance, Inc. Fly-by XOR for generating parity for data gleaned from a bus
US5956745A (en) 1997-04-23 1999-09-21 Novell, Inc. System and method for automatically resizing a disk drive volume
JP4128641B2 (ja) * 1997-10-13 2008-07-30 株式会社東芝 データ退避方法
US6101585A (en) 1997-11-04 2000-08-08 Adaptec, Inc. Mechanism for incremental backup of on-line files
US6076148A (en) 1997-12-26 2000-06-13 Emc Corporation Mass storage subsystem and backup arrangement for digital data processing system which permits information to be backed up while host computer(s) continue(s) operating in connection with information stored on mass storage subsystem
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
US6397307B2 (en) * 1999-02-23 2002-05-28 Legato Systems, Inc. Method and system for mirroring and archiving mass storage
US6317808B1 (en) * 1999-03-26 2001-11-13 Adc Telecommunications, Inc. Data storage system and method of routing or assigning disk write requests among a set of disks using weighted available disk space values
JP3763992B2 (ja) * 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6529995B1 (en) * 1999-06-18 2003-03-04 Storage Technology Corporation Method and apparatus for maintaining and restoring mapping table entries and data in a raid system
US6643754B1 (en) * 2000-02-15 2003-11-04 International Business Machines Corporation System and method for dynamically allocating computer memory
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230333737A1 (en) * 2022-04-14 2023-10-19 Dell Products L.P. Archiving operations for compressed data using file layout
US11847322B2 (en) * 2022-04-14 2023-12-19 Dell Products L.P. Archiving operations for compressed data using file layout

Also Published As

Publication number Publication date
EP1311940A2 (de) 2003-05-21
US7290013B2 (en) 2007-10-30
WO2002017057A2 (en) 2002-02-28
DE60129025D1 (de) 2007-08-02
US20080028011A1 (en) 2008-01-31
US20040139273A1 (en) 2004-07-15
WO2002017057A3 (en) 2003-03-20
US7930326B2 (en) 2011-04-19
US6636879B1 (en) 2003-10-21
EP1311940B1 (de) 2007-06-20

Similar Documents

Publication Publication Date Title
DE60129025T2 (de) Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE112007003693B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE60032531T2 (de) Aufzeichnungsverfahren, Verwaltungsverfahren und Aufzeichnungsgerät
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE602005001041T2 (de) Speicherauszugssystem
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE69938378T2 (de) Kopieren von Daten in Speichersystemen
DE60019903T2 (de) Speichersystem
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
EP1311949B1 (de) Unmittelbarer schnappschuss
DE69333906T2 (de) Verfahren und System für die Dateienverwaltung mit einem schnell löschbaren, programmierbaren ROM
DE69233228T2 (de) Datenverwaltungssystem für Halbleiterspeicher mit beschränkter Programmierung und I.C. Speicherkarte mit solchem Datenverwaltungssystem
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE69722991T2 (de) Aufzeichnungsbereichsverwaltungsverfahren und Speichergerät
DE60121697T2 (de) Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur
DE60318477T2 (de) Vorrichtung zur dateiaktualisierung
DE602005002024T2 (de) Fernkopiersystem und Fernkopierverfahren
DE112008003826T5 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112007003678T5 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
CH629901A5 (de) Verfahren zum steuern einer textverarbeitungseinrichtung beim speichern und lesen von text.
DE4210126A1 (de) Verfahren und system zur dynamischen dateierweiterung fuer online-datenbanksysteme
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition