IP Library Granted Patent US 7,987,156
Granted Patent B1
US 7,987,156 · App. 12/042,715 · Granted Jul 26, 2011

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 7,987,156
App. No.
12/042,715
Granted
Jul 26, 2011
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 (51)

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

maintaining a linked list for a logical provision in the data storage volume;

representing a unique snapshot lifetime during which the logical provision was written to with a node of the linked list;

storing data identifying the snapshot lifetime in which the provision was written to in a first data field of the node, the first data field being a first increasing sequence number that denotes only reads can be performed in a portion of the provision and a second increasing sequence number that denotes writes and reads can be performed in the portion of the provision;

storing data indicating the portions of the provision that were written during the snapshot lifetime of the node in a second data field of the node; and storing a pointer to a next node in the linked list in a third data field of the node;

deleting a provision by manipulating the linked list;

wherein deleting the snapshot comprises:

identifying a node having a snapshot lifetime identification stored in the first data field that is equivalent to the snapshot lifetime to be deleted;

determining whether a node exists having a newer snapshot lifetime identification that also corresponds to the same provision as the identified node; and

removing the node in response to determining that a node does not exist having a snapshot lifetime identification.

2. The method of claim 1 , further comprising adding a new node to the linked list each time a write request is received for the logical provision during a new snapshot lifetime.

3. The method of claim 1 , further comprising:

receiving a request to read a portion of the logical provision;

iterating through the linked list to locate a node related to the read request; and

performing the requested read on a physical location corresponding to the located node.

4. The method of claim 3 , wherein locating a node comprises the node having the highest number stored in the first data field, and the node having valid data for the portion to be read as indicated by the second field.

5. The method of claim 1 , further comprising rolling back a provision by manipulating the linked list.

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

maintain a linked list for a logical provision in the data storage volume; represent a unique snapshot lifetime during which the logical provision was written to with a node of the linked list;

store data identifying the snapshot lifetime in which the provision was written to in a first data field of the node, the first data field being a first increasing sequence number that denotes only reads can be performed in a portion of the provision and a second increasing sequence number that denotes writes and reads can be performed in the portion of the provision;

store data indicating the portions of the provision that were written during the snapshot lifetime of the node in a second data field of the node; and

store a pointer to a next node in the linked list in a third data field of the node;

delete a provision by manipulating the linked list;

wherein deleting the snapshot comprises:

identifying a node having a snapshot lifetime identification stored in the first data field that is equivalent to the snapshot lifetime to be deleted;

determining whether a node exists having a newer snapshot lifetime identification that also corresponds to the same provision as the identified node; and

removing the node in response to determining that a node does not exist having a snapshot lifetime identification.

7. The computer storage medium of claim 6 , having additional computer-executable instructions stored thereon further causing the computer system to add a new node to the linked list each time a write request is received for the logical provision during a new snapshot lifetime.

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

receive a request to read a portion of the logical provision;

iterate through the linked list to locate a node related to the read request; and

perform the requested read on a physical location corresponding to the located node.

9. The computer storage medium of claim 8 , wherein locating a node comprises the node having the highest number stored in the first data field, and the node having valid data for the portion to be read as indicated by the second field.

10. The computer storage medium of claim 6 , having additional computer-executable instructions stored thereon further causing the computer system to roll back a provision by manipulating the linked list.

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

maintain a linked list for a logical provision in the data storage volume;

represent a unique snapshot lifetime during which the logical provision was written to with a node of the linked list; store data identifying the snapshot lifetime in which the provision was written to in a first data field of the node, the first data field being a first increasing sequence number that denotes only reads can be performed in a portion of the provision and a second increasing sequence number that denotes writes and reads can be performed in the portion of the provision;

store data indicating the portions of the provision that were written during the snapshot lifetime of the node in a second data field of the node; and

store a pointer to a next node in the linked list in a third data field of the node;

deleting a provision by manipulating the linked list;

wherein deleting the snapshot comprises:

identifying a node having a snapshot lifetime identification stored in the first data field that is equivalent to the snapshot lifetime to be deleted;

determining whether a node exists having a newer snapshot lifetime identification that also corresponds to the same provision as the identified node; and

removing the node in response to determining that a node does not exist having a snapshot lifetime identification.

12. The computer storage system of claim 11 , wherein the computerized controller is further operable to add a new node to the linked list each time a write request is received for the logical provision during a new snapshot lifetime.

13. The computer storage system of claim 12 , wherein the computerized controller is further operable to:

receive a request to read a portion of the logical provision;

iterate through the linked list to locate a node related to the read request; and

perform the requested read on a physical location corresponding to the located node.

14. The computer storage system of claim 13 , wherein locating a node comprises the node having the highest number stored in the first data field, and the node having valid data for the portion to be read as indicated by the second field.

15. The computer storage system of claim 11 , wherein the computerized controller is further operable to roll back a provision by manipulating the linked list.

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 →