Claims
- 1. A product for interfacing with a plurality of file-systems and block devices, said product creating and handling multiple snapshot instances in a computer storage system, the product implementing the process of:
identifying one or more blocks being used; creating a snapshot record for each of said blocks on a base volume at a first time; performing snapshot management functions to said blocks on said base volume; handling snapshot records of said blocks on said base volume at a second time; and allowing writing of data on said blocks to free space on said base volume.
- 2. The product of claim 1, wherein creating a snapshot record at the first time further comprises:
suspending all of the write operations issued from file systems; identifying the blocks called by file systems; creating a snapshot record for each of the identified blocks; and resuming the write operations issued from the file systems to the said blocks on said base volume.
- 3. The product of claim 2, wherein creating a snapshot record at a block further comprises:
counting the number of write operations being taken to the said block; and creating a binding of a copy-on-write block associated with the said block as well as the associated snapshot instances.
- 4. The product of claim 1, wherein creating a new snapshot instance comprises:
allocating an unused bit in a counting bitmap to identify the created snapshot instance; and updating all of the allocated bits in the counting bitmap.
- 5. The product of claim 1, wherein handling a snapshot record comprises:
suspending the write operation to blocks on base volume; updating a counting bitmap; checking the snapshot record to determine whether a copy-on-write operation is needed; allocating free space on the base volume; and performing the copy-on-write operation to the allocated block in free space when a copy-on-write is needed; otherwise, resuming the write operation to blocks on base volume.
- 6. The product of claim 5, wherein allocating free space on the base volume comprises:
selecting an unused block on the base volume; identifying the selected block in the snapshot record; updating block allocation bitmap and snapshot block allocation bitmap of file system.
- 7. The product of claim 6, wherein allocating free space for storing snapshot records comprises:
dynamic allocating one or more free blocks when size of snapshot record grows and freeing allocating blocks when size of snapshot record shrinks.
- 8. The product of claim 6, wherein freeing blocks on the base volume further comprises:
marking the freed blocks as unused ones in both the block allocation bitmap and the snapshot block allocation bitmap of file system.
- 9. The product of claim 1, wherein handling a snapshot instance created on the base volume during a delete operation comprises:
suspending all write operations issued from file system to the base volume; identifying a counting bit corresponding to the said snapshot instance; removing unused record of write operation to its associated block; finding all copy-on-write blocks associated with said snapshot instance; freeing said copy-on-write blocks when they have no other snapshot instance to associate with; otherwise, resuming all pending write operations issued from file system to base volume.
- 10. The product of claim 1, wherein handling a snapshot instance being created on the base volume during a storing operation further comprises:
restraining all write operations issued from file system to said base volume; identifying all copy-on-write blocks associated with said snapshot instance; exchanging data on copy-on-write blocks with data on the blocks associated with the snapshot instance; updating the state of snapshot record; updating the block allocation bitmap and snapshot block allocation bitmap of file system; restarting the write operations of the file system to the base volume.
- 11. The product of claim 10, wherein updating the block allocation bitmap and snapshot block allocation bitmap of a file system comprises:
freeing all blocks being marked as used in the snapshot block allocation bitmap; marking blocks which are currently used by the product as used in both bitmaps.
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application claims priority under 35 U.S.C. §119 to U.S. Provisional Application No. 60/424,501 filed Nov. 6, 2002.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60424501 |
Nov 2002 |
US |