Organization of multiple snapshot copies in a data storage system
First Claim
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.
9 Assignments
0 Petitions
Accused Products
Abstract
A file server maintains a production file system supported by a clone volume, and multiple snapshot file systems supported by respective save volumes in a snapshot queue. Before a data block is modified for the first time after creation of the youngest snapshot, the data block is copied from the clone volume to the save volume of the youngest snapshot. A bit map indicates the blocks that have already been copied, and a block map shows the save block address for each corresponding clone block address. When a new snapshot is created, the bit and block maps are converted to a hash index that is kept linked to the save volume of what had been the youngest snapshot. When other than the oldest snapshot file system is deleted, the respective save volume is retained as a hidden object until it becomes the oldest save volume.
-
Citations
54 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
14. 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 system 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 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 snapshot 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 maintaining a bit map having a respective bit for each block of production file system data in the clone volume, the respective bit indicating whether or not said each 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, and the file server is programmed for converting the bit map to a hash index in response to creation of a new snapshot file system of the production file system. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23)
-
24. A data storage system for providing access to a production data set and a plurality of snapshot data sets, each of the snapshot data sets being the state of the production data set at a respective point in time when said each of the snapshot data sets was created,
said data storage system comprising storage containing a clone volume of data blocks supporting the production data set, and the storage containing, for said each of the snapshot data sets, a respective save volume of data blocks supporting said each of the snapshot data sets, the respective save volume of said each of the snapshot data sets containing data blocks having resided in the clone volume at the respective point in time when said each of the snapshot data sets was created, wherein at least one of the save volumes has a respective hash index for indicating whether or not a specified data block having resided in the clone volume resides in said at least one of the save volumes, and if a specified data block having resided in the clone volume resides in said at least one of the save volumes, for indicating the block address in said at least one of the save volumes where said specified data block having resided in the clone volume resides in said at least one of the save volumes; - and
wherein the data storage system is programmed for using said respective hash index for a read access of the snapshot data set supported by said at least one of the save volumes. - View Dependent Claims (25, 26, 27)
- and
-
28. A method of operating a file server 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, the file server having storage containing a clone volume of data blocks supporting the production file system, and the storage containing, for each snapshot file system, 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, said method comprising:
-
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, performing a read access upon the production file system by reading the clone volume, 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, 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 snapshot 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; and
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. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. A method of operating a file server 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, the file server having storage containing a clone volume of data blocks supporting the production file system, and the storage containing, for each snapshot file system, 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, wherein said method comprises:
-
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, performing a read access upon the production file system by reading the clone volume, 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, performing a read access upon a specified data block of a specified one of the snapshot file systems by reading the save volume supporting the specified one of the snapshot file systems if the specified data block is found in the save volume supporting the specified one of the snapshot file systems, and if the specified data block is not found in the save volume supporting the specified one of the snapshot 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; and
wherein said method includes maintaining a bit map having a respective bit for each block of production file system data in the clone volume, the respective bit indicating whether or not said each 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, and converting the bit map to a hash index in response to creation of a new snapshot file system of the production file system. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50)
-
-
51. A method of operating a data storage system for providing access to a production data set and a plurality of snapshot data sets, each of the snapshot data sets being the state of the production data set at a respective point in time when said each of the snapshot data sets was created, the data storage system having storage containing a clone volume of data blocks supporting the production data set, and the storage containing, for said each of the snapshot data sets, a respective save volume of data blocks supporting said each of the snapshot data sets, the respective save volume of said each of the snapshot data sets containing data blocks having resided in the clone volume at the respective point in time when said each of the snapshot data sets was created, wherein said method comprises:
-
creating, for at least one of the save volumes, a respective hash index for indicating whether or not a specified data block having resided in the clone volume resides in said at least one of the save volumes, and if a specified data block having resided in the clone volume resides in said at least one of the save volumes, for indicating the block address in said at least one of the save volumes where said specified data block having resided in the clone volume resides in said at least one of the save volumes; and
using said respective hash index for a read access of the snapshot data set supported by said at least one of the save volumes. - View Dependent Claims (52, 53, 54)
-
Specification