IP Library Granted Patent US 8,117,158
Granted Patent B1
US 8,117,158 · App. 12/042,710 · Granted Feb 14, 2012

Method, system, apparatus, and computer-readable medium for taking and managing snapshots of a storage volume

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,117,158
App. No.
12/042,710
Granted
Feb 14, 2012
Kind
B1
Abstract

A method, system, apparatus, and computer-readable medium are provided for taking snapshots of a storage volume. According to aspects of one method, each snapshot is represented as a unique sequence number. Every fresh write access to a volume in a new snapshot lifetime is allocated a new section in the disk, called a provision, which is labeled with the sequence number. Read-modify-write operations are performed on a sub-provision level at the granularity of a chunk. Because each provision contains chunks with valid data and chunks with invalid data, a bitmap is utilized to identify the valid and invalid chunks with each provision. Provisions corresponding to different snapshots are arranged in a linked list. Branches from the linked list can be created for storing writable snapshots. Provisions may also be deleted and rolled back by manipulating the contents of the linked lists.

Claims (75)

1. A method for managing the snapshots for a data storage volume, the method comprising:

maintaining a data structure for one or more provisions in the data storage volume, the data structure comprising a first data field, a second data field, and a third data field;

storing a sequence number in the first data field that identifies a snapshot lifetime in which the provision was written, wherein the sequence number of each snapshot lifetime is an increasing value that uniquely identifies the snapshot lifetime;

storing a bitmap in the second data field that identifies the portions of the provision that were written during the snapshot lifetime identified by the first data field;

storing a pointer to a next data structure for another snapshot lifetime for the provision in the third data field;

receiving a request to delete a snapshot, the snapshot to be deleted identified by a sequence number; and

deleting the snapshot by manipulating only the data structures for the one or more provisions in accordance with a comparison of the sequence number of the snapshot to be deleted and sequence numbers of the one or more provisions, and resetting a bit in a data structure having a prior sequence number than the sequence number of the snapshot to be deleted if the bit is identified in a data structure having a newer sequence number than the sequence number of the snapshot to be deleted.

2. The method of claim 1 , wherein deleting the snapshot comprises:

identifying a data structure having a sequence number stored in the first data field equivalent to the sequence number to be deleted;

determining whether a data structure exists having a newer sequence number that also corresponds to the same provision as the identified data structure; and

extracting the data structure in response to determining that a data structure does not exist having a newer sequence number.

3. The method of claim 1 , further comprising:

retaining full availability of snapshots not identified for deletion.

4. The method of claim 2 , wherein extracting the data structure comprises:

resetting each bit in the second data field of a data structure for a prior sequence number corresponding to the same provision as the identified data structure that is also set in the second data field as the identified data structure;

deleting the identified data structure if all of the bits in the second data field of the identified data structure have been reset; and

changing the sequence number in the first data field of the identified data structure to a next possible sequence number if all of the bits have not been reset.

5. The method of claim 1 , further comprising:

reserving certain sequence numbers for read only snapshots and reserving other sequence numbers for writable snapshots;

receiving a request to roll back the data storage volume to an identified sequence number; and

determining if the roll back request is to roll back a sequence number corresponding to a read only snapshot or a writable snapshot.

6. The method of claim 5 , further comprising:

changing a current sequence number for the data storage volume to the identified sequence number and deleting data structures having sequence numbers stored in the first data field higher than the identified sequence number, in response to determining that the request is to roll back to a sequence number reserved for a read only snapshot.

7. The method of claim 5 , further comprising:

identifying each data structure having the identified sequence number stored in the first data field and changing the sequence number to the next highest sequence number reserved for a read only snapshot, in response to determining that the request is to roll back to a sequence number for a writable snapshot.

8. A computer storage medium having computer-executable instructions stored thereon which, when executed by a computer system, cause the computer system to:

maintain a data structure for one or more provisions in the data storage volume, the data structure comprising a first data field, a second data field, and a third data field;

store a sequence number in the first data field that identifies a snapshot lifetime in which the provision was written, wherein the sequence number of each snapshot lifetime is an increasing value that uniquely identifies the snapshot lifetime;

store a bitmap in the second data field that identifies the portions of the provision that were written during the snapshot lifetime identified by the first data field;

store a pointer to a next data structure for another snapshot lifetime for the provision in the third data field;

receive a request to delete a snapshot, the snapshot to be deleted identified by a sequence number;

delete the snapshot by manipulating only the data structures for the one or more provisions in accordance with a comparison of the sequence number of the snapshot to be deleted and sequence numbers of the one or more provisions; and

reset a bit in a data structure having a prior sequence number than the sequence number of the snapshot to be deleted if the bit is identified in a data structure having a newer sequence number than the sequence number of the snapshot to be deleted.

9. The computer storage medium of claim 8 , wherein deleting the snapshot comprises:

identifying a data structure having a sequence number stored in the first data field equivalent to the sequence number to be deleted;

determining whether a data structure exists having a newer sequence number that also corresponds to the same provision as the identified data structure; and

extracting the data structure in response to determining that a data structure does not exist having a newer sequence number.

10. The computer storage medium of claim 8 having additional computer-executable instructions stored thereon further causing the computer system to:

retain full availability of snapshots not identified for deletion.

11. The computer storage medium of claim 9 , wherein extracting the data structure comprises:

resetting each bit in the second data field of a data structure for a prior sequence number corresponding to the same provision as the identified data structure that is also set in the second data field as the identified data structure;

deleting the identified data structure if all of the bits in the second data field of the identified data structure have been reset; and

changing the sequence number in the first data field of the identified data structure to a next possible sequence number if all of the bits have not been reset.

12. The computer storage medium of claim 8 having additional computer-executable instructions stored thereon further causing the computer system to:

reserve certain sequence numbers for read only snapshots and reserving other sequence numbers for writable snapshots;

receive a request to roll back the data storage volume to an identified sequence number; and

determine if the roll back request is to roll back a sequence number corresponding to a read only snapshot or a writable snapshot.

13. The computer storage medium of claim 12 having additional computer-executable instructions stored thereon further causing the computer system to:

change a current sequence number for the data storage volume to the identified sequence number and delete data structures having sequence numbers stored in the first data field higher than the identified sequence number, in response to determining that the request is to roll back to a sequence number reserved for a read only snapshot.

14. The computer storage medium of claim 12 having additional computer-executable instructions stored thereon further causing the computer system to:

identify each data structure having the identified sequence number stored in the first data field and change the sequence number to the next highest sequence number reserved for a read only snapshot, in response to determining that the request is to roll back to a sequence number for a writable snapshot.

15. A computer storage system comprising a physical storage device, a memory, and a computerized controller operable to:

maintain a data structure for one or more provisions in the data storage volume, the data structure comprising a first data field, a second data field, and a third data field;

store a sequence number in the first data field that identifies a snapshot lifetime in which the provision was written, wherein the sequence number of each snapshot lifetime is an increasing value that uniquely identifies the snapshot lifetime;

store a bitmap in the second data field that identifies the portions of the provision that were written during the snapshot lifetime identified by the first data field;

store a pointer to a next data structure for another snapshot lifetime for the provision in the third data field;

receive a request to delete a snapshot, the snapshot to be deleted identified by a sequence number;

delete the snapshot by manipulating only the data structures for the one or more provisions in accordance with a comparison of the sequence number of the snapshot to be deleted and sequence numbers of the one or more provisions; and

reset a bit in a data structure having a prior sequence number than the sequence number of the snapshot to be deleted if the bit is identified in a data structure having a newer sequence number than the sequence number of the snapshot to be deleted.

16. The computer storage system of claim 15 , wherein deleting the snapshot comprises:

identifying a data structure having a sequence number stored in the first data field equivalent to the sequence number to be deleted;

determining whether a data structure exists having a newer sequence number that also corresponds to the same provision as the identified data structure; and

extracting the data structure in response to determining that a data structure does not exist having a newer sequence number.

17. The computer storage system of claim 16 , wherein extracting the data structure comprises:

resetting each bit in the second data field of a data structure for a prior sequence number corresponding to the same provision as the identified data structure that is also set in the second data field as the identified data structure;

deleting the identified data structure if all of the bits in the second data field of the identified data structure have been reset; and

changing the sequence number in the first data field of the identified data structure to a next possible sequence number if all of the bits have not been reset.

18. The computer storage system of claim 15 further operable to:

reserve certain sequence numbers for read only snapshots and reserving other sequence numbers for writable snapshots;

receive a request to roll back the data storage volume to an identified sequence number; and

determine if the roll back request is to roll back a sequence number corresponding to a read only snapshot or a writable snapshot.

19. The computer storage system of claim 18 further operable to:

change a current sequence number for the data storage volume to the identified sequence number and delete data structures having sequence numbers stored in the first data field higher than the identified sequence number, in response to determining that the request is to roll back to a sequence number reserved for a read only snapshot.

20. The computer storage system of claim 18 further operable to:

identify each data structure having the identified sequence number stored in the first data field and change the sequence number to the next highest sequence number reserved for a read only snapshot, in response to determining that the request is to roll back to a sequence number for a writable snapshot.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC,
To: AMZETTA TECHNOLOGIES, LLC,
Reel/Frame 053007/0151 →
CHANGE OF NAME Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 053007/0233 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2008
From: CHATTERJEE, PARESH; MUTHIRISAVENUGOPAL, VIJAYARANKAN; SUBRAMANIAN, SRIKUMAR; NARAYANAN, AJIT
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 020604/0175 →