← Back to Patent Explorer
US6721764B2 Expired / Lapsed US ⏱️ 0.0 years remaining

Copy on write file system consistency and block usage

Assignee: NetApp Inc
•
Filing: 2001-09-11
•
Granted: 2004-04-13
•
Expires: 2021-09-11
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention provides a method for keeping a file system in a consistent state and for creating read-only copies of a file system. Changes to the file system are tightly controlled. The file system progresses from one self-consistent state to another self-consistent state. The set of self-consistent blocks on disk that is rooted by the root inode is referred to as a consistency point. To implement consistency points, new data is written to unallocated blocks on disk. A new consistency point occurs when the fsinfo block is updated by writing a new root inode for the inode file into it. Thus, as long as the root inode is not updated, the state of the file system represented on disk does not change. The present invention also creates snapshots that are read-only copies of the file system. A snapshot uses no disk space when it is initially created. It is designed so that many different snapshots can be created for the same file system. Unlike prior art file systems that create a clone by duplicating the entire inode file and all of the indirect blocks, the present invention duplicates only the inode that describes the inode file. A multi-bit free-block map file is used to prevent data from being overwritten on disk.

Inventors

  • 👤 David Hitz
  • 👤 Michael Malcolm
  • 👤 James Lau
  • 👤 Byron Rakitzis

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 00:52
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/14; G06F11/1402; G06F11/1415; G06F11/1435; G06F16/00; G06F16/10; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99952; Y10S707/99953

Claims Analysis

Total Claims: 32
Claim 1
Independent Claim 104 words
A method for recording a plurality of data about a plurality of blocks of data stored in a storage system, comprising the step of maintaining multiple usage bits for each of said plurality of blocks; wherein one bit of said multiple usage bits for each of said plurality of blocks indicates a block's membership in an active file system and plural bits of said multiple usage bits for each of said plurality of blocks indicate membership in plural read-only copies of a file system; and wherein said multiple usage bits for each of said plurality of blocks are maintained in said active file system.
Claim 2
Independent Claim 104 words
A method for recording a plurality of data about a plurality of blocks of data stored in a storage system, comprising the step of maintaining multiple usage bits for each of said plurality of blocks; wherein one bit of said multiple usage bits for each of said plurality of blocks indicates a block's membership in an active file system and plural bits of said multiple usage bits for each of said plurality of blocks indicate membership in plural read-only copies of a file system; and wherein said multiple usage bits for each of said plurality of blocks are maintained in said active file system.
Claim 3
Dependent Claim 28 words
A method as in claim 1 , wherein one or more bits of said multiple usage bits for each of said plurality of blocks further indicate block reusability.
Claim 4
Independent Claim 186 words
A method for generating a consistency point for a storage system, comprising the steps of: marking a plurality of inodes pointing to a plurality of modified blocks in a file system stored on said storage system as being in a consistency point; flushing regular files to said storage system; flushing special files to said storage system; flushing at least one block of file system information to said storage system; and queuing dirty inodes after said step of marking and before said step of flushing at least one block of file system information; wherein said step of flushing said special files to said storage system further comprises the steps of: pre-flushing an inode for a blockmap file to an inode file; allocating space on said storage system for all dirty blocks in said inode and said blockmap files; flushing said inode for said blockmap file again updating a plurality of entries in said blockmap file wherein each entry of said plurality of entries represents a block in said storage system; and writing all dirty blocks in said blockmap file and said inode file to said storage system.
Claim 5
Independent Claim 186 words
A method for generating a consistency point for a storage system, comprising the steps of: marking a plurality of inodes pointing to a plurality of modified blocks in a file system stored on said storage system as being in a consistency point; flushing regular files to said storage system; flushing special files to said storage system; flushing at least one block of file system information to said storage system; and queuing dirty inodes after said step of marking and before said step of flushing at least one block of file system information; wherein said step of flushing said special files to said storage system further comprises the steps of: pre-flushing an inode for a blockmap file to an inode file; allocating space on said storage system for all dirty blocks in said inode and said blockmap files; flushing said inode for said blockmap file again updating a plurality of entries in said blockmap file wherein each entry of said plurality of entries represents a block in said storage system; and writing all dirty blocks in said blockmap file and said inode file to said storage system.
Claim 6
Independent Claim 122 words
A method of maintaining data in a storage system, comprising the steps of: maintaining a root inode and inodes for a file system in the storage system, the root inode pointing directly or indirectly to the inodes, and each inode storing file data, pointing to one or more blocks in the storage system that store file data, or pointing to other inodes, with different levels of indirection possible for the inodes to point to the blocks; and maintaining an inode map and a block map for the file; wherein when said inodes are maintained in the storage system, each inode only points to blocks in the storage system having a same level of indirection as other blocks pointed to by that inode.
Claim 7
Independent Claim 122 words
A method of maintaining data in a storage system, comprising the steps of: maintaining a root inode and inodes for a file system in the storage system, the root inode pointing directly or indirectly to the inodes, and each inode storing file data, pointing to one or more blocks in the storage system that store file data, or pointing to other inodes, with different levels of indirection possible for the inodes to point to the blocks; and maintaining an inode map and a block map for the file; wherein when said inodes are maintained in the storage system, each inode only points to blocks in the storage system having a same level of indirection as other blocks pointed to by that inode.
Claim 8
Dependent Claim 24 words
A method as in claim 4 , further comprising the step of creating a snapshot of the file system by copying the root inode.
Claim 9
Dependent Claim 20 words
A method as in claim 5 , wherein the block map indicates membership of blocks in one or more snapshots.
Claim 10
Dependent Claim 37 words
A method as in claim 5 , further comprising the step of deleting a snapshot from the storage system, wherein blocks that are only part of the deleted snapshot are released for re-use by the storage system.
Claim 11
Dependent Claim 116 words
A memory storing information including instructions, the instructions executable by a processor to record a plurality of data about a plurality of blocks of data stored in a storage system, the instructions comprising the step of maintaining multiple usage bits for each of said plurality of blocks; wherein one bit of said multiple usage bits for each of said plurality of blocks indicates a block's membership in an active file system and plural bits of said multiple usage bits for each of said plurality of blocks indicate membership in plural read-only copies of a file system; and wherein said multiple usage bits for each of said plurality of blocks are maintained in said active file system.
Claim 12
Dependent Claim 116 words
A memory storing information including instructions, the instructions executable by a processor to record a plurality of data about a plurality of blocks of data stored in a storage system, the instructions comprising the step of maintaining multiple usage bits for each of said plurality of blocks; wherein one bit of said multiple usage bits for each of said plurality of blocks indicates a block's membership in an active file system and plural bits of said multiple usage bits for each of said plurality of blocks indicate membership in plural read-only copies of a file system; and wherein said multiple usage bits for each of said plurality of blocks are maintained in said active file system.
Claim 13
Dependent Claim 28 words
A memory as in claim 8 , wherein one or more bits of said multiple usage bits for each of said plurality of blocks further indicate block reusability.
Claim 14
Dependent Claim 198 words
A memory storing information including instructions, the instructions executable by a processor to generate a consistency point for a storage system, the instructions comprising the steps of: marking a plurality of inodes pointing to a plurality of modified blocks in a file system stored on said storage system as being in a consistency point; flushing regular files to said storage system; flushing special files to said storage system; flushing at least one block of file system information to said storage system; sand queuing dirty inodes after said step of marking and before said step of flushing at least one block of file system information; wherein said step of flushing said special files to said storage system further comprises the steps of: pre-flushing, an inode for a blockmap file to an inode file; allocating space on said storage system for all dirty blocks in said mode and said blockmap files; flushing said inode for said blockmap file again; updating a plurality of entries in said blockmap file wherein each entry of said plurality of entries represents a block in said storage system; and writing all dirty blocks in said blockmap file and said inode file to said storage system.
Claim 15
Dependent Claim 198 words
A memory storing information including instructions, the instructions executable by a processor to generate a consistency point for a storage system, the instructions comprising the steps of: marking a plurality of inodes pointing to a plurality of modified blocks in a file system stored on said storage system as being in a consistency point; flushing regular files to said storage system; flushing special files to said storage system; flushing at least one block of file system information to said storage system; sand queuing dirty inodes after said step of marking and before said step of flushing at least one block of file system information; wherein said step of flushing said special files to said storage system further comprises the steps of: pre-flushing, an inode for a blockmap file to an inode file; allocating space on said storage system for all dirty blocks in said mode and said blockmap files; flushing said inode for said blockmap file again; updating a plurality of entries in said blockmap file wherein each entry of said plurality of entries represents a block in said storage system; and writing all dirty blocks in said blockmap file and said inode file to said storage system.
Claim 16
Dependent Claim 136 words
A memory storing information including instructions, the instructions executable by a processor to maintain data in a storage system, the instructions comprising the steps of: maintaining a root inode mode and inodes for a file system in the storage system, the root inode pointing directly or indirectly to the inodes, and each inode storing file data, pointing to one or more blocks in the storage system that store file data, or pointing to other inodes, with different levels of indirection possible for the anodes to point to the blocks; and maintaining an inode map and a block map for the file system; wherein when said inodes are maintained in the storage system, each inode only points to blocks in the storage system having a same level of indirection as other blocks pointed to by that inode.
Claim 17
Dependent Claim 136 words
A memory storing information including instructions, the instructions executable by a processor to maintain data in a storage system, the instructions comprising the steps of: maintaining a root inode mode and inodes for a file system in the storage system, the root inode pointing directly or indirectly to the inodes, and each inode storing file data, pointing to one or more blocks in the storage system that store file data, or pointing to other inodes, with different levels of indirection possible for the anodes to point to the blocks; and maintaining an inode map and a block map for the file system; wherein when said inodes are maintained in the storage system, each inode only points to blocks in the storage system having a same level of indirection as other blocks pointed to by that inode.
Claim 18
Dependent Claim 27 words
A memory as in claim 11 , wherein the instructions further comprise the step of creating a snapshot or the file system by copying the root inode.
Claim 19
Dependent Claim 20 words
A memory as in claim 12 , wherein the block map indicates membership of blocks in one or more snapshots.
Claim 20
Dependent Claim 40 words
A memory as in claim 12 , wherein the instructions further comprise the step of deleting a snapshot from the storage system, wherein blocks that are only part of the deleted snapshot are released for re-use by the storage system.
Claim 21
Independent Claim 124 words
A system comprising: a processor; a storage system; and a memory storing information including instructions, the instructions executable by the processor to record a plurality of data about a plurality of blocks of data stored in the storage system, the instructions comprising step of maintaining multiple usage bits for each of said plurality of blocks; wherein one bit of said multiple usage bits for each of said plurality of blocks indicates a block's membership in an active file system and plural bits of said multiple usage bits for each of said plurality of blocks indicate membership in plural read-only copies of a file system; and wherein said multiple usage bits for each of said plurality of blocks are maintained in said active file system.
Claim 22
Independent Claim 124 words
A system comprising: a processor; a storage system; and a memory storing information including instructions, the instructions executable by the processor to record a plurality of data about a plurality of blocks of data stored in the storage system, the instructions comprising step of maintaining multiple usage bits for each of said plurality of blocks; wherein one bit of said multiple usage bits for each of said plurality of blocks indicates a block's membership in an active file system and plural bits of said multiple usage bits for each of said plurality of blocks indicate membership in plural read-only copies of a file system; and wherein said multiple usage bits for each of said plurality of blocks are maintained in said active file system.
Claim 23
Dependent Claim 28 words
A system as in claim 15 , wherein one or more bits of said multiple usage bits for each of said plurality of blocks further indicate block reusability.
Claim 24
Independent Claim 218 words
A system comprising: a processor; a storage system; and a memory storing information including instruction, the instructions executable by the processor to generate a consistency point for the storage system, the instructions comprising the steps of: (a) marking a plurality of inodes pointing to a plurality of modified blocks in a file system stored on said storage system as being in a consistency point; (b) flushing regular files to said storage system; (c) flushing special files to said storage system; (d) flushing at least one block of file system information to said storage system; and (e) queuing dirty inodes after said step of marking and before said step of flushing at last one block of file system information; and wherein said step of flushing said special files to said storage system further comprises the steps of: (f) pre-flushing an inode for a blockmap file to an inode file; (g) allocating space on said storage system for all dirty blocks in said inode and said blockmap files; (h) flushing said inode for said blockmap file again; (i) updating a plurality of entries in said blockmap file wherein each entry of said plurality of entries represents a block in said storage system; and (j) writing all dirty blocks in said blockmap file and said inode file to said storage system.
Claim 25
Independent Claim 218 words
A system comprising: a processor; a storage system; and a memory storing information including instruction, the instructions executable by the processor to generate a consistency point for the storage system, the instructions comprising the steps of: (a) marking a plurality of inodes pointing to a plurality of modified blocks in a file system stored on said storage system as being in a consistency point; (b) flushing regular files to said storage system; (c) flushing special files to said storage system; (d) flushing at least one block of file system information to said storage system; and (e) queuing dirty inodes after said step of marking and before said step of flushing at last one block of file system information; and wherein said step of flushing said special files to said storage system further comprises the steps of: (f) pre-flushing an inode for a blockmap file to an inode file; (g) allocating space on said storage system for all dirty blocks in said inode and said blockmap files; (h) flushing said inode for said blockmap file again; (i) updating a plurality of entries in said blockmap file wherein each entry of said plurality of entries represents a block in said storage system; and (j) writing all dirty blocks in said blockmap file and said inode file to said storage system.
Claim 26
Independent Claim 146 words
A system comprising: a processor; a storage system; and a memory storing information including instructions, the instructions executable by the processor to maintain data in the storage system, the instructions comprising the steps of: (a) maintaining a root inode and inodes for a file system in the storage system, the root inode pointing directly or indirectly to the inodes, and each inode storing file data, pointing to one or more blocks in the storage system that store file data, or pointing to other inodes, with different levels of indirection possible for the inodes to point to the blocks; and (b) maintaining an inode map and a block map for the file system; wherein when said inodes are maintained in the storage system, each inode only points to blocks in the storage system having a same level of indirection as other blocks pointed to by that inode.
Claim 27
Independent Claim 146 words
A system comprising: a processor; a storage system; and a memory storing information including instructions, the instructions executable by the processor to maintain data in the storage system, the instructions comprising the steps of: (a) maintaining a root inode and inodes for a file system in the storage system, the root inode pointing directly or indirectly to the inodes, and each inode storing file data, pointing to one or more blocks in the storage system that store file data, or pointing to other inodes, with different levels of indirection possible for the inodes to point to the blocks; and (b) maintaining an inode map and a block map for the file system; wherein when said inodes are maintained in the storage system, each inode only points to blocks in the storage system having a same level of indirection as other blocks pointed to by that inode.
Claim 28
Dependent Claim 27 words
A system as in claim 18 , wherein the instructions further comprise the step of creating a snapshot of the file system by copying the root inode.
Claim 29
Dependent Claim 20 words
A system as in claim 19 , wherein the block map indicates membership of blocks in one or more snapshots.
Claim 30
Dependent Claim 40 words
A system as in claim 19 , wherein the instructions further comprise the step of deleting a snapshot from the storage system, wherein blocks that are only part of the deleted snapshot are released for re-use by the storage system.
Claim 31
Independent Claim 101 words
A system for maintaining data in storage means, comprising: means for maintaining a root inode and inodes for a file system in the storage systems, the root inode pointing to inodes, and each inode storing file data, pointing to one or more blocks in the storage means that store file data, or pointing to other inodes; and means for maintaining an inode map and a block map for the file system; wherein when said inodes are maintained in the storage system, each inode only points to blocks having a same level of indirection as other blocks pointed to by that inode.
Claim 32
Independent Claim 101 words
A system for maintaining data in storage means, comprising: means for maintaining a root inode and inodes for a file system in the storage systems, the root inode pointing to inodes, and each inode storing file data, pointing to one or more blocks in the storage means that store file data, or pointing to other inodes; and means for maintaining an inode map and a block map for the file system; wherein when said inodes are maintained in the storage system, each inode only points to blocks having a same level of indirection as other blocks pointed to by that inode.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2007-04-13 2007-10-13 2008-04-13 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2011-04-13 2011-10-13 2012-04-13 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2015-04-13 2015-10-13 2016-04-13 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag