IP Library Granted Patent US 9,501,233
Granted Patent B2
US 9,501,233 · App. 14/977,055 · Granted Nov 22, 2016

Providing snapshots of virtual storage devices

Inventors: Matthew S. Harris (Kirkland, WA); Andrew Kadatch (Redmond, WA); Sergey Khorun (Seattle, WA); Carl Hamilton (Woodinville, WA)
Assignee: Google Inc.
G06F3/0619G06F3/065G06F3/0664G06F3/0673G06F11/1451G06F17/30312G06F17/30575G06F11/1469G06F2201/815G06F2201/84
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 9,501,233
App. No.
14/977,055
Granted
Nov 22, 2016
Kind
B2
Abstract

In general, one aspect of the subject matter described in this specification can be embodied in methods that include receiving, at a computer system, a request to create a snapshot of a virtual storage device, wherein the virtual storage device virtually stores data at virtual addresses, the data being physically stored at a plurality of physical storage locations that are managed by an underlying storage system associated with virtual storage device. The methods can further include identifying, by the computer system, one or more regions of the virtual storage device that have been written to since a previous snapshot of the virtual storage device was created. The methods can additionally include generating a unique identifier for the requested snapshot; and creating the requested snapshot using the identified one more regions and the unique identifier.

Claims (49)

1. A computer-implemented method, comprising:

receiving, at a computer system, a request to create a snapshot of a virtual storage device, wherein the virtual storage device virtually stores data at virtual addresses, the data being physically stored at a plurality of physical storage locations that are managed by an underlying storage system associated with virtual storage device;

identifying, by the computer system, one or more regions of the virtual storage device that have been written to since a previous snapshot of the virtual storage device was created, wherein data written to the one or more identified regions is stored in the plurality of physical storage locations;

generating a unique identifier for the requested snapshot; and

creating the requested snapshot using the identified one more regions and the unique identifier, wherein the requested snapshot includes a mapping of the unique identifier to the one or more identified regions of the virtual storage device.

2. The method of claim 1 , wherein the unique identifier includes a running counter of snapshots to identify a next unique identifier for the request snapshot.

3. The method of claim 2 , wherein the unique identifier includes a timestamp.

4. The method of claim 1 , further comprising:

receiving a request to write new data to a first region of the virtual storage device, wherein the first region is indicated in the previous snapshot as storing previous data at a first physical storage location of the underlying storage system;

allocating a second physical storage location of the underlying storage system to store the new data in association with the first region of the virtual storage device; and

writing the new data to the second physical storage location.

5. The method of claim 4 , wherein the request to write the new data to the first region is received before the request to create the snapshot and after the previous snapshot of the virtual storage device was created, and wherein the one or more identified regions includes the first region.

6. The method of claim 1 , further comprising:

after creating the snapshot, receiving a request to access the created snapshot of the virtual storage device;

retrieving the one or more identified regions using the mapping for the created snapshot;

identifying and retrieving most recent versions of other regions of the virtual storage device that are not included in the mapping of the created snapshot, wherein the most recent versions of the other regions are identified using other snapshots of the virtual storage device; and

providing access to the created snapshot using the retrieved one or more identified regions and the most recent versions of the other regions of the virtual storage device.

7. The method of claim 1 , further comprising:

receiving a request to delete the previous snapshot of the virtual storage device;

determining whether the previous snapshot includes at least one other region of the virtual storage device that is not included in the mapping; and

when the previous snapshot is determined to include the at least one other region, marking the previous snapshot for deletion at a later time when a new snapshot includes the at least one region.

8. A system comprising:

one or more computers;

a memory storage system in data communication with the one or more computers and storing instructions executable by the one or more computers that upon such execution cause the one or more computers to perform operations comprising:

receiving a request to create a snapshot of a virtual storage device, wherein the virtual storage device virtually stores data at virtual addresses, the data being physically stored at a plurality of physical storage locations that are managed by an underlying storage system associated with virtual storage device;

identifying one or more regions of the virtual storage device that have been written to since a previous snapshot of the virtual storage device was created, wherein data written to the one or more identified regions is stored in the plurality of physical storage locations;

generating a unique identifier for the requested snapshot; and

creating the requested snapshot using the identified one more regions and the unique identifier, wherein the requested snapshot includes a mapping of the unique identifier to the one or more identified regions of the virtual storage device.

9. The system of claim 8 , wherein the unique identifier includes a running counter of snapshots to identify a next unique identifier for the request snapshot.

10. The system of claim 9 , wherein the unique identifier includes a timestamp.

11. The system of claim 8 , the operations further comprising:

receiving a request to write new data to a first region of the virtual storage device, wherein the first region is indicated in the previous snapshot as storing previous data at a first physical storage location of the underlying storage system;

allocating a second physical storage location of the underlying storage system to store the new data in association with the first region of the virtual storage device; and

writing the new data to the second physical storage location.

12. The system of claim 8 , wherein the request to write the new data to the first region is received before the request to create the snapshot and after the previous snapshot of the virtual storage device was created, and wherein the one or more identified regions includes the first region.

13. The system of claim 8 , the operations further comprising:

after creating the snapshot, receiving a request to access the created snapshot of the virtual storage device;

retrieving the one or more identified regions using the mapping for the created snapshot;

identifying and retrieving most recent versions of other regions of the virtual storage device that are not included in the mapping of the created snapshot, wherein the most recent versions of the other regions are identified using other snapshots of the virtual storage device; and

providing access to the created snapshot using the retrieved one or more identified regions and the most recent versions of the other regions of the virtual storage device.

14. The system of claim 8 , the operations further comprising:

receiving a request to delete the previous snapshot of the virtual storage device;

determining whether the previous snapshot includes at least one other region of the virtual storage device that is not included in the mapping; and

when the previous snapshot is determined to include the at least one other region, marking the previous snapshot for deletion at a later time when a new snapshot includes the at least one region.

15. A computer program product tangibly embodied on a computer readable medium, the computer program product including instructions that, when executed, cause a computing device to perform operations comprising:

receiving a request to create a snapshot of a virtual storage device, wherein the virtual storage device virtually stores data at virtual addresses, the data being physically stored at a plurality of physical storage locations that are managed by an underlying storage system associated with virtual storage device;

identifying one or more regions of the virtual storage device that have been written to since a previous snapshot of the virtual storage device was created, wherein data written to the one or more identified regions is stored in the plurality of physical storage locations;

generating a unique identifier for the requested snapshot; and

creating the requested snapshot using the identified one more regions and the unique identifier, wherein the requested snapshot includes a mapping of the unique identifier to the one or more identified regions of the virtual storage device.

Assignments (3)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2016
From: HARRIS, MATTHEW S.; KADATCH, ANDREW; KHORUN, SERGEY; HAMILTON, CARL
To: GOOGLE INC.
Reel/Frame 037410/0169 →
Continuity (4)
Continuation 14629149 · Feb 23, 2015
Continuation 13602974 · Sep 4, 2012
Provisional Application 61530358 · Sep 1, 2011
Related Publication 20160124669A1 · May 5, 2016