Managing Data in a Storage System
First Claim
Patent Images
1. A method of managing data in a storage system, comprising:
- maintaining a volume-version data structure including LU volume entries for a LU volume and for snapshot volumes associated with the LU volume, wherein for each volume a respective volume ID is kept, and for each snapshot a timestamp for the snapshot operation and an indication of a connection between a respective target volume and a source volume are kept;
maintaining a chunk-version data structure that is uniquely associated with a volume ID and a logical chunk address combination;
including in the chunk-version data structure one or more chunk-version data elements, each chunk version data element including a timestamp at a corresponding write to the respective logical chunk address in the respective volume and a pointer to storage resources associated with the chunk-version data element.
3 Assignments
0 Petitions
Accused Products
Abstract
According to an aspect of the presently disclosed subject matter, there is provided a system for managing data in a storage system, the system including a storage layer which provides storage resource, and a snapshot layer that includes: a volume-version data structure, a chunk-version data structure and a IO handler.
-
Citations
55 Claims
-
1. A method of managing data in a storage system, comprising:
-
maintaining a volume-version data structure including LU volume entries for a LU volume and for snapshot volumes associated with the LU volume, wherein for each volume a respective volume ID is kept, and for each snapshot a timestamp for the snapshot operation and an indication of a connection between a respective target volume and a source volume are kept; maintaining a chunk-version data structure that is uniquely associated with a volume ID and a logical chunk address combination; including in the chunk-version data structure one or more chunk-version data elements, each chunk version data element including a timestamp at a corresponding write to the respective logical chunk address in the respective volume and a pointer to storage resources associated with the chunk-version data element. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 54, 55)
-
-
11. A storage system, comprising:
-
a storage layer providing storage resources; a snapshot layer comprising; a volume-version data structure including LU volume entries for an LU volume and for snapshot volumes associated with the LU volume, wherein for each volume a respective volume ID is kept, and for each snapshot a timestamp for the snapshot operation and an indication of a connection between a respective target volume and a source volume are kept; a chunk-version data structure that is uniquely associated with a volume ID and a logical chunk address combination; a IO handler that is configured to include in the chunk-version data structure one or more chunk-version data elements, each chunk version data element including a timestamp at a corresponding write to the respective logical chunk address in the respective volume and a pointer to storage resources associated with the chunk-version data element. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform a method of managing data in a storage system, comprising:
-
maintaining a volume-version data structure including LU volume entries for an LU volume and for snapshot volumes associated with the LU volume, wherein for each volume a respective volume ID is kept, and for each snapshot a timestamp for the snapshot operation and an indication of a connection between a respective target volume and a source volume are kept; maintaining a chunk-version data structure that is uniquely associated with a volume ID and a logical chunk address combination; and including in the chunk-version data structure one or more chunk-version data elements, each chunk version data element including a timestamp at a corresponding write to the respective logical chunk address in the respective volume and a pointer to storage resources associated with the chunk-version data element.
-
-
20. A computer program product comprising a computer useable medium having computer readable program code embodied therein for managing data in a storage system, the computer program product comprising:
-
computer readable program code for causing the computer to maintain a volume-version data structure including LU volume entries for an LU volume and for snapshot volumes associated with the LU volume, wherein for each volume a respective volume ID is kept, and for each snapshot a timestamp for the snapshot operation and an indication of a connection between a respective target volume and a source volume are kept; computer readable program code for causing the computer to maintain a chunk-version data structure that is uniquely associated with a volume ID and a logical chunk address combination; and computer readable program code for causing the computer to include in the chunk-version data structure one or more chunk-version data elements, each chunk version data element including a timestamp at a corresponding write to the respective logical chunk address in the respective volume and a pointer to storage resources associated with the chunk-version data element.
-
-
21. A method of handling writes in a storage system, comprising:
-
in response to receiving a write command determining with which snapshot layer chunk the write command is associated, and whether there is an existing chunk version data structure which is associated with the snapshot layer chunk with which the write command is associated; in case the write command is associated with an existing chunk-version data structure, reading a timestamp from a last chunk-version data element in the existing chunk-version data structure, and if there is a snapshot operation whose source is a volume referenced in the write command and this snapshot operation is associated with a timestamp that is later than a timestamp of the last chunk-version data element, maintaining the last chunk-version data element and adding to the existing chunk-version data structure a new chunk version data element for the write command. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28)
-
-
29. A storage system, comprising:
-
a storage layer providing storage resources; a snapshot layer comprising; a volume-version data structure; a chunk-version data structure; a IO handler responsive to receiving a write command in the snapshot layer for determining with which snapshot layer chunk the write command is associated, and whether there is an existing chunk version data structure which is associated with the snapshot layer chunk with which the write command is associated, and in case the write command is associated with an existing chunk-version data structure, the IO handler is configured to read a timestamp from a last chunk-version data element in the existing chunk-version data structure, and if there is a snapshot operation whose source is a volume referenced in the write command and this snapshot operation is associated with a timestamp that is later than a timestamp of the last chunk-version data element, the IO handler is configured to maintain the last chunk-version data element and to add to the existing chunk-version data structure a new chunk version data element for the write command. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36)
-
-
37. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform a method of handling writes in a storage system, comprising:
-
in response to receiving a write command determining with which snapshot layer chunk the write command is associated, and whether there is an existing chunk version data structure which is associated with the snapshot layer chunk with which the write command is associated; in case the write command is associated with an existing chunk-version data structure, reading a timestamp from a last chunk-version data element in the existing chunk-version data structure, and if there is a snapshot operation whose source is a volume referenced in the write command and this snapshot operation is associated with a timestamp that is later than a timestamp of the last chunk-version data element, maintaining the last chunk-version data element and adding to the existing chunk-version data structure a new chunk version data element for the write command.
-
-
38. A computer program product comprising a computer useable medium having computer readable program code embodied therein for handling writes in a storage system, the computer program product comprising:
-
computer readable program code that is responsive to receiving a write command in the storage system for causing the computer to determine with which snapshot layer chunk the write command is associated, and to determine whether there is an existing chunk version data structure which is associated with the snapshot layer chunk with which the write command is associated; computer readable program code for causing the computer to determine whether the write command is associated with an existing chunk-version data structure, and in case the write command is associated with an existing chunk-version data structure, the computer readable program code is configured to cause a timestamp from a last chunk-version data element in the existing chunk-version data structure to be read, and if there is a snapshot operation whose source is a volume referenced in the write command and this snapshot operation is associated with a timestamp that is later than a timestamp of the last chunk-version data element, the computer readable program code is configured to cause the last chunk-version data element to maintained and a new chunk version data element for the write command to be added to the existing chunk-version data structure. - View Dependent Claims (44, 45)
-
-
39. A method of handling reads in a storage system comprising:
-
(a) in response to receiving a read command at the storage system determining with which volume and with which snapshot layer chunk the read command is associated, initializing a read pointer with respective volume ID and logical chunk address, and initializing a time-marker according to a timestamp at receipt of the read command; (b) determining whether there is a chunk-version data structure that is associated with a current read pointer; (c1) if the condition in operation (b) is not met, determining whether there is a snapshot operation where the volume that is referenced in the write pointer is a target volume and whether the snapshot operation is associated with a timestamp that is not greater than the current time-marker; and (d1) if the conditions in operation (c) are met updating the read pointer with a volume ID of a source volume of the snapshot operation, updating the time-marker with the timestamp for the snapshot operation—
1, and returning to operation (b). - View Dependent Claims (40, 41, 42, 43, 50)
-
-
46. A storage system, comprising:
-
a storage layer providing storage resources; a snapshot layer comprising; a volume-version data structure; a chunk-version data structure; a IO handler responsive to receiving a read comment for; (a) determining with which volume and with which snapshot layer chunk the read command is associated, initializing a read pointer with respective volume ID and logical chunk address, and initializing a time-marker according to a timestamp of the read command; (b) determining whether there is a chunk-version data structure that is associated with a current read pointer; (c1) if the condition in operation (b) is not met, determining whether there is a snapshot operation where the volume that is referenced in the write pointer is a target volume and whether the snapshot operation is associated with a timestamp that is not greater than the current time-marker; and (d1) if the conditions in operation (c) are met the IO under is configured for;
updating the read pointer with a volume ID of a source volume of the snapshot operation, updating the time-marker with the timestamp for the snapshot operation—
1, and returning to operation (b). - View Dependent Claims (47, 48, 49, 51, 52)
-
-
53. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform a method of handling reads in a storage system comprising:
-
(a) in response to receiving a read command at the storage system determining with which volume and with which snapshot layer chunk the read command is associated, initializing a read pointer with respective volume ID and logical chunk address, and initializing a time-marker according to a timestamp of the read command; (b) determining whether there is a chunk-version data structure that is associated with a current read pointer; (c1) if the condition in operation (b) is not met, determining whether there is a snapshot operation where the volume that is referenced in the write pointer is a target volume and whether the snapshot operation is associated with a timestamp that is not greater than the current time-marker; and (d1) if the conditions in operation (c) are met updating the read pointer with a volume ID of a source volume of the snapshot operation, updating the time-marker with the timestamp for the snapshot operation—
1, and returning to operation (b).
-
Specification