Maintenance of a file version set including read-only and read-write snapshot copies of a production file
First Claim
1. A file server comprising:
- storage containing a file system; and
a processor coupled to the storage for accessing the file system;
wherein the file system includes a production file, read-only snapshot copies of the production file, and at least one read-write snapshot copy of the production file;
wherein the production file and the snapshot copies of the production file are organized as a version set;
the version set including an inode for the production file and an inode for each snapshot copy of the production file, and a set of file blocks including data blocks and indirect blocks that are shared among the production file and the snapshot copies of the production file;
wherein the inodes in the version set include pointer fields, and wherein each pointer field includes a pointer to a block in the version set and a flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field; and
wherein the file server is programmed to maintain for each block in each read-only snapshot copy of the production file an indication of whether or not said each snapshot copy of the production file is an oldest snapshot copy of the production file including an identical version of said each block by maintaining said flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field.
10 Assignments
0 Petitions
Accused Products
Abstract
Read-only and read-write snapshot copies of a production file in a Unix-based file system are organized as a version set of file inodes and shared file blocks. Version pointers and branch pointers link the inodes. Initially the production file can have all its blocks preallocated or it can be a sparse file having only an inode and its last data block. A protocol is provided for creating read-only and read-write snapshots, deleting snapshots, restoring the production file with a specified snapshot, refreshing a specified snapshot, and naming the snapshots. Block pointers are marked with a flag indicating whether or not the pointed-to block is owned by the parent inode. A non-owner marking is inherited by all of the block'"'"'s descendants. The block ownership controls the copying of indirect blocks when writing to the production file, and also controls deallocation and passing of blocks when deleting a read-only snapshot.
130 Citations
17 Claims
-
1. A file server comprising:
-
storage containing a file system; and a processor coupled to the storage for accessing the file system; wherein the file system includes a production file, read-only snapshot copies of the production file, and at least one read-write snapshot copy of the production file; wherein the production file and the snapshot copies of the production file are organized as a version set;
the version set including an inode for the production file and an inode for each snapshot copy of the production file, and a set of file blocks including data blocks and indirect blocks that are shared among the production file and the snapshot copies of the production file;wherein the inodes in the version set include pointer fields, and wherein each pointer field includes a pointer to a block in the version set and a flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field; and wherein the file server is programmed to maintain for each block in each read-only snapshot copy of the production file an indication of whether or not said each snapshot copy of the production file is an oldest snapshot copy of the production file including an identical version of said each block by maintaining said flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A file server comprising:
-
storage containing a file system; and a processor coupled to the storage for accessing the file system; wherein the file system includes a production file, and read-only snapshot copies of the production file; wherein the production file and the read-only snapshot copies of the production file are organized as a version set;
the version set including an inode for the production file, an inode for each read-only snapshot copy of the production file, and a set of file blocks including data blocks and indirect blocks that are shared among the production file and the read-only snapshot copies of the production file;wherein the inodes in the version set include pointer fields, and wherein each pointer field includes a pointer to a block in the version set and a flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field; wherein the file server is programmed to maintain for each block in each snapshot copy of the production file an indication of whether or not said each snapshot copy of the production file is an oldest snapshot copy of the production file including an identical version of said each block by maintaining said flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field; and wherein the file server is programmed to delete a read-only snapshot copy of the production file, and when deleting the read-only snapshot copy of the production file, to keep each block for which the read-only snapshot copy is not indicated as being an oldest snapshot copy of the production file including an identical version of said each block. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method of operating a file server;
- the file server including storage containing a file system, and the file server also including a processor coupled to the storage for accessing the file system;
the file system including a production file and read-only snapshot copies of the production file;
the production file and the read-only snapshot copies of the production file being organized as a version set;
the version set including an inode for the production file, an inode for each read-only snapshot copy of the production file, and a set of file blocks including data blocks and indirect blocks that are shared among the production file and the read-only snapshot copies of the production file, said method comprising;maintaining for each block in each snapshot copy of the production file an indication of whether or not said each snapshot copy of the production file is an oldest snapshot copy of the production file including an identical version of said each block; and deleting a read-only snapshot copy of the production file, wherein the deleting of the read-only snapshot copy of the production file includes keeping each block for which the read-only snapshot copy is not indicated as being an oldest snapshot copy of the production file including an identical version of said each block; wherein the inodes in the version set include pointer fields, and each pointer field includes a pointer to a block in the version set and a flag indicating whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field, and wherein the step of maintaining for each block in each snapshot copy of the production file an indication of whether or not said each snapshot copy of the production file is an oldest snapshot copy of the production file including an identical version of said each block includes maintaining said flag to indicate whether or not the version of the production file of the inode is an oldest snapshot copy of the production file including an identical version of the block pointed to by the pointer in said each pointer field. - View Dependent Claims (14, 15, 16, 17)
- the file server including storage containing a file system, and the file server also including a processor coupled to the storage for accessing the file system;
Specification