DE60129025T2 - Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche - Google Patents
Speicherbereichszuordnung in einem dateisystem zum beschreiben beliebiger bereiche Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File 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 den1 und2 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 Dateisystem100 , das ein oder mehrere Festplattenlaufwerke umfassen kann. In alternativen Ausführungsformen kann das Dateisystem100 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 Belegungsbereichen102 . Jeder Belegungsbereich ist zusammengesetzt aus einer Menge von Streifen mit aufeinander folgenden DBN-Werten, wie z.B. 4096 Streifen. Die Belegungsbereiche102 können weiter aufgeteilt werden in eine Gruppe von Spannen pro Platte104 ,106 ,108 und110 . In einer bevorzugten Ausführungsform umfassen die Spannen104 ,106 ,108 und110 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 Belegungsbereiche102 in der Platzkarte. Ein niedriger Wert der binären Zahlen für einen bestimmten Belegungsbereich102 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 Belegungsbereichs202 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-Datei202 plus andere Informationen, betreffend das aktive Datensystem201 , die aktive Karte226 , vorhergehende aktive Dateisysteme, die als Speicherauszüge214 ,216 ,218 und220 bekannt sind, und deren jeweilige Speicherauszugskarten254 ,256 ,258 und260 . - Die aktive Karte
226 des aktiven Dateisystems201 ist eine Bitmap, die mit den Leerständen der Blöcke des aktiven Dateisystems201 verknüpft ist. Die entsprechenden Speicherauszugskarten254 ,256 ,258 und260 sind aktive Karten, die mit bestimmten Speicherauszügen214 ,216 ,218 , und220 und einer inklusiven-ODER-Zusammenfassungskarte224 der Speicherauszugskarten254 ,256 ,258 und260 verknüpft werden können. Auch werden andere Blöcke226 gezeigt, die dop pelte indirekte Blöcke230 und232 , indirekte Blöcke234 ,236 und238 und Datenblöcke240 ,242 ,244 und246 umfassen. Schließlich zeigt2 die Platzkarte280 , die eine Ansammlung von Platzkartenblöcken von binären Zahlen282 ,284 ,286 ,288 und290 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-Datei202 , die aus einer Menge von Blöcken besteht, die als Inode-Blöcke204 ,206 208 ,210 und212 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 Wurzelblocks200 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 Wurzelblock300 sind eine Ansammlung von Zeigern auf die Inode-Blöcke204 ,206 ,208 ,210 und212 in der Inode-Datei202 . Jeder Zeiger in der bevorzugten Ausführungsform besteht aus 16 Byte. Somit gibt es ungefähr 2000 Zeigereinträge in dem Wurzelblock200 , die auf 2000 entsprechende Inode-Blöcke der Inode-Datei202 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-Datei202 ist in2 gezeigt, der auf andere Blöcke228 in dem aktiven Dateisystem201 zeigt, die mit doppel-indirekten Blöcken230 und232 beginnen (das könnten auch tripel-indirekte Blöcke sein). Diese doppel-indirekten Blöcke230 und232 umfassen Zeiger auf indirekte Blöcke234 ,236 und238 . Diese indirekten Blöcke234 ,236 und238 umfassen Zeiger, die auf Datenblattblöcke240 ,242 ,244 und246 des aktiven Dateisystems201 gerichtet sind. - Der Inode-Block
208 in der Inode-Datei202 zeigt auf eine Menge von Blöcken (1, 2, 3, ..., P), die die aktive Karte226 genannt werden. Jeder Block in der aktiven Karte226 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 Dateisystem201 . Umgekehrt korreliert eine „0" mit einem bestimmten Block, der frei ist für eine Belegung in dem aktiven Dateisystem201 . Jeder Block in der aktiven Karte226 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 Karte226 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ügen214 ,216 ,218 und220 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 Speicherauszug214 wird bei dem Abschluss des aktuellsten CP erzeugt. Der neueste Speicherauszug214 umfasst eine Ansammlung von Zeigern, die direkt oder indirekt auf die gleiche Inode-Datei212 wie der Wurzelblock200 des aktiven Dateisystems201 zeigen. Wenn das aktive Dateisystem201 sich aufgrund in das Dateisystem geschriebener Dateien ändert, divergieren der aktuellste Speicherauszug214 und der gegenwärtige Wurzelblock200 . Das aktive Dateisystem201 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 Dateisystem201 . Der neueste Speicherauszug214 ist mit einer Speicherauszugskarte254 verknüpft. Die Speicherauszugskarte254 ist eine Bitmap, die initial das Äquivalent der aktiven Karte226 ist. Die älteren Speicherauszüge216 ,218 und210 haben eine korrespondierende Ansammlung von Speicherauszügen256 ,258 und260 . Wie die aktive Karte226 , umfassen diese Speicherauszüge256 ,258 und260 eine Menge von Blöcken umfassend Bitmaps, die mit belegten und freien Blöcken für den bestimmten CP korrespondieren, wenn die bestimmten Speicherauszüge256 ,258 und260 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üge214 ,216 ,218 und220 könnten in ihren entsprechenden Speicherauszugskarten254 ,256 ,258 und260 gesucht werden, um Blöcke zu ermitteln, die von allen Speicherauszügen belegt oder freigegeben sind. Kombiniert mit der aktiven Karte226 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-Operation222 (Inklusives ODER) auf den Speicherauszugskarten254 ,256 ,258 und260 erzeugt. Wie die aktive Karte226 und die Speicherauszugskarten254 ,256 ,258 und260 ist die Zusammenfassungskarte224 eine Menge von Blöcken (1, 2, 3, ..., Q), die Bitmaps enthalten. Jedes Bit in jedem Block der Zusammenfassungskarte224 beschreibt den Belegungszustand von einem Block in dem System mit „1" als belegt und mit „0" als frei. Die Zusammenfassungskarte224 beschreibt die belegten und freien Blöcke des gesamten Datenträgers von allen Speicherauszügen214 ,216 ,218 und220 kombiniert. Eine der Hauptanwendungen der Zusammenfassungskarte224 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 Zusammenfassungskarte124 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 Karte226 und der Zusammenfassungskarte224 erzeugt eine Platzkarte280 . Anders als bei der aktiven Karte226 und der Zusammenfassungskarte224 , die Mengen von Blöcken sind, die Bitmaps enthalten, ist die Platzkarte280 eine Menge von Blöcken, umfassend282 ,284 ,286 ,288 und290 , 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 Platzkartenblock282 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 Zahlen282 ,284 ,286 ,288 und290 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 Zahl288 (0000000000001101 = 13 in dezimalen Einheiten) instruiert das Dateisystem, dass die betreffende Spanne relativ leer ist. Die Platzkarte280 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 Platzkarte280 korrespondiert mit den Belegungen von Blöcken in der Spanne, die 1024 Blöcke oder ungefähr 8 MB enthält. Jeder Platzkartenblock280 hat ungefähr 2000 binäre Zahlen in dem Feld und sie beschreiben den Belegungsstatus von 16 GB. Anders als bei der Zusammenfassungskarte214 muss der Platzkartenblock280 immer ermittelt werden, wenn eine Datei geschrieben werden muss. - Verwendungsverfahren
-
3 zeigt ein Flussdiagramm eines Verfahrens zum Verwenden des Systems, das in1 und2 gezeigt ist. - Ein Verfahren
300 wird durch das System100 ausgeführt. Obwohl das Verfahren300 seriell beschrieben ist, können die Schritte des Verfahrens300 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 Verfahren300 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 System100 bereit, das Verfahren300 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 Belegungsbereichen325 nach dem ersten Belegungsbereich mit einem Prozentsatz an freiem Platz durch, der größer oder gleich dem Prozentsatz ist, der in Schritt320 festgelegt wurde. Wenn der nächste Belegungsbereich gefunden wird, der dieses Kriterium erfüllt, werden weitere Blöcke in diesen Belegungsbereich335 geschrieben. Falls nicht alle Dateiblöcke geschrieben werden350 , wird das Verfahren wiederholt, bis alle Dateiblöcke geschrieben wurden und das Verfahren fertig ist345 . - An einem Flusspunkt
345 wurden alle Blöcke geschrieben und das Verfahren zum Schreiben von Dateien ist fertig.
Claims (27)
- 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 ). - 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 ). - 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. - 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. - Verfahren nach einem der vorhergehenden Ansprüche, wobei die aktive Karte (
226 ) eine Bit-Karte umfasst. - 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. - 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. - Verfahren nach Anspruch 7, wobei die Suche eine lineare Suche der Vielzahl der Bereiche (
104 ,106 ,108 ,110 ) umfasst. - 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.
- 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.
- Verfahren nach Anspruch 10, wobei die Schritte des Schreibens von Daten ein Schreiben einer Datei in dem Dateisystem (
206 ) umfassen. - Verfahren nach Anspruch 10, wobei die Menge der Speicherblöcke in einem einzelnen der Bereiche (
104 ,106 ,108 ,110 ) umfasst ist. - 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 ). - 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. - 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.
- 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. - 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. - 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. - 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. - Vorrichtung nach Anspruch 19, wobei die Suche eine lineare Suche der Vielzahl der Bereiche (
104 ,106 ,108 ,110 ) umfasst. - 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.
- 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.
- Vorrichtung nach Anspruch 22, wobei die Menge von Speicherblöcken in einem einzelnen der Bereiche (
104 ,106 ,108 ,110 ) enthalten ist. - 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. - 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. - 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. - 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.
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)
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)
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)
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 |
-
2000
- 2000-08-18 US US09/642,065 patent/US6636879B1/en not_active Expired - Lifetime
-
2001
- 2001-08-17 WO PCT/US2001/025822 patent/WO2002017057A2/en active IP Right Grant
- 2001-08-17 EP EP01964151A patent/EP1311940B1/de not_active Expired - Lifetime
- 2001-08-17 DE DE60129025T patent/DE60129025T2/de not_active Expired - Lifetime
-
2003
- 2003-10-17 US US10/688,070 patent/US7290013B2/en not_active Expired - Fee Related
-
2007
- 2007-10-03 US US11/866,957 patent/US7930326B2/en not_active Expired - Fee Related
Cited By (2)
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 |