What is claimed is:
1 . A method, comprising:
generating, by a storage control system, a snapshot data structure of a storage volume, wherein the snapshot data structure comprises plurality of nodes comprising a volume node and one or more snapshot nodes, wherein the volume node is configured to store new and updated data that is written to logical offsets of the storage volume, and wherein the one or more snapshot nodes comprise point-in-time copies of data of the storage volume taken at different times; and adding, by the storage control system, an entry for the volume node in a metadata structure associated with the snapshot data structure, wherein the entry comprises a reference to a physical location of data held by a given one of the snapshot nodes at a given logical offset of the storage volume.
2 . The method of claim 1 , wherein the snapshot data structure comprises a snapshot tree structure in which the one or more snapshot nodes comprise a chain of incremental snapshots taken of the storage volume at different times.
3 . The method of claim 1 , wherein:
the metadata structure associated with the snapshot data structure comprises a mapping table data structure comprising a metadata entry for each logical offset in each logical address space of each node of the snapshot data structure which holds a data block of the storage volume; and each metadata entry comprises a key-value pair, wherein the key comprises a combination of a node identifier and logical offset and the value comprises a physical location of a data block stored at the logical offset of the node.
4 . The method of claim 1 , wherein adding the entry for the volume node in the metadata structure, comprises accessing deduplication reference metadata to determine the reference to the physical location of data held by the given one of the snapshot nodes at the given logical offset of the storage volume.
5 . The method of claim 1 , wherein adding the entry for the volume node in the metadata structure comprises adding a sequence of entries for the volume node in the metadata structure, wherein the sequence of entries for the volume node correspond to a sequence of logical offsets of the storage volume which comprise data blocks held by the one or more snapshot nodes, and wherein the sequence of entries comprise references to physical locations of the data blocks held by the one or more snapshot nodes over the sequence of logical offsets of the storage volume.
6 . The method of claim 5 , further comprising performing, by the storage control system, a sequential read operation to sequentially access the data blocks in the sequence of logical offsets of the storage volume, which are held by the one or more snapshot nodes, by accessing the sequence of entries for the volume node in the metadata structure to determine the physical location of the data blocks.
7 . The method of claim 5 , further comprising:
determining, by the storage control system, a current input/output (I/O) workload associated with the storage volume; adding the sequence of entries for the volume node in the metadata structure, in response to determining the current I/O workload comprises a read I/O workload; and refraining from adding the sequence of entries for the volume node in the metadata structure, in response to determining the current I/O workload comprises a write intensive I/O workload.
8 . The method of claim 5 , further comprising:
determining, by the storage control system, a fragmentation level of the snapshot data structure; and adding the sequence of entries for the volume node in the metadata structure, in response to determining that the fragmentation level of the snapshot data structure exceeds a threshold.
9 . A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to implement a storage control system that is configured to perform a snapshot management process which comprises:
generating a snapshot data structure of a storage volume, wherein the snapshot data structure comprises plurality of nodes comprising a volume node and one or more snapshot nodes, wherein the volume node is configured to store new and updated data that is written to logical offsets of the storage volume, and wherein the one or more snapshot nodes comprise point-in-time copies of data of the storage volume taken at different times; and adding an entry for the volume node in a metadata structure associated with the snapshot data structure, wherein the entry comprises a reference to a physical location of data held by a given one of the snapshot nodes at a given logical offset of the storage volume.
10 . The computer program product of claim 9 , wherein the snapshot data structure comprises a snapshot tree structure in which the one or more snapshot nodes comprise a chain of incremental snapshots taken of the storage volume at different times.
11 . The computer program product of claim 9 , wherein:
the metadata structure associated with the snapshot data structure comprises a mapping table data structure comprising a metadata entry for each logical offset in each logical address space of each node of the snapshot data structure which holds a data block of the storage volume; and each metadata entry comprises a key-value pair, wherein the key comprises a combination of a node identifier and logical offset and the value comprises a physical location of a data block stored at the logical offset of the node.
12 . The computer program product of claim 9 , wherein the program code for adding the entry for the volume node in the metadata structure, comprises program code for accessing deduplication reference metadata to determine the reference to the physical location of data held by the given one of the snapshot nodes at the given logical offset of the storage volume.
13 . The computer program product of claim 9 , wherein the program code for adding the entry for the volume node in the metadata structure comprises program code for adding a sequence of entries for the volume node in the metadata structure, wherein the sequence of entries for the volume node correspond to a sequence of logical offsets of the storage volume which comprise data blocks held by the one or more snapshot nodes, and wherein the sequence of entries comprise references to physical locations of the data blocks held by the one or more snapshot nodes over the sequence of logical offsets of the storage volume.
14 . The computer program product of claim 13 , further comprising program code for performing a sequential read operation to sequentially access the data blocks in the sequence of logical offsets of the storage volume, which are held by the one or more snapshot nodes, by accessing the sequence of entries for the volume node in the metadata structure to determine the physical location of the data blocks.
15 . The computer program product of claim 13 , further comprising program code for:
determining a current input/output (I/O) workload associated with the storage volume; adding the sequence of entries for the volume node in the metadata structure, in response to determining the current I/O workload comprises a read I/O workload; and refraining from adding the sequence of entries for the volume node in the metadata structure, in response to determining the current I/O workload comprises a write intensive I/O workload.
16 . The computer program product