Patent ID: 6934822
Filing Date: 2005-08-23
Classification: G06F,Y10S

Abstract:
1. A file server for providing access to a production file system and a plurality of snapshot file systems, each of the snapshot file systems being the state of the production file system at a respective point in time when said each of the snapshot file systems was created, said file server comprising storage containing a clone volume of data blocks supporting the production file system, and the storage containing, for said each of the snapshot file systems, a respective save volume of data blocks supporting said each of the snapshot file systems, the respective save volume of said each of the snapshot file systems containing data blocks having resided in the clone volume at the respective point in time when said each of the snapshot file systems was created, the file server being programmed for maintaining the save volumes in a snapshot queue in a chronological order of the respective points in time when the snapshot file systems were created, the save volume supporting the oldest one of the snapshot file systems residing at the head of the snapshot queue, and the save volume supporting the youngest one of the snapshot file systems residing at the tail of the snapshot queue, the file server being programmed for performing a read access upon the production file system by reading the clone volume, the file server being programmed for performing a write access upon the production file system by writing to the clone volume but before modifying a block of production file system data in the clone volume, copying the block of production file system data from the clone volume to the save volume at the tail of the snapshot queue if said block of production file system data in the clone volume has not yet been modified since the respective point in time of creation of the snapshot file system supported by the save volume at the tail of the snapshot queue, the file server being programmed for performing a read access upon a specified data block of a first specified one of the snapshot file systems by reading the save volume supporting the first specified one of the snapshot file systems if the specified data block is found in the save volume supporting the first specified one of the snapshot file systems, and if the specified data block is not found in the save volume supporting the first specified one of the file systems, searching for the specified data block in a next subsequent save volume in the snapshot queue, and if the specified data block is found in the next subsequent save volume in the snapshot queue, reading the specified data block from the next subsequent save volume in the snapshot queue, and if the specified data block is not found in any subsequent save volume in the snapshot queue, then reading the specified data block from the clone volume; wherein the file server is programmed for deleting a second specified one of the snapshot file systems that is supported by a save volume that is not at the head of the snapshot queue by deleting the second specified one of the snapshot file systems while retaining the save volume having supported the second specified one of the snapshot file systems, the save volume having supported the second specified one of the snapshot file systems being retained until the save volume having supported the second specified one of the snapshot file systems becomes the oldest save volume in the snapshot queue.