IP Library Granted Patent US 9,430,272
Granted Patent B2
US 9,430,272 · App. 14/573,976 · Granted Aug 30, 2016

Efficiently providing virtual machine reference points

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,430,272
App. No.
14/573,976
Granted
Aug 30, 2016
Kind
B2
Abstract

Embodiments are directed to establishing efficient virtual machine reference points and to specifying a virtual machine reference point to query incremental changes. In one scenario, a computer system accesses a stable virtual machine checkpoint that includes portions of underlying data stored in data storage, where the checkpoint is associated with a specific point in time. The computer system then queries the data storage to determine data storage identifiers that reference the point in time associated with the checkpoint and stores the determined data storage identifiers as a virtual machine reference point, where each subsequent change to the data storage results in an update to the data storage identifier, so that virtual machine reference point is usable to identify incremental changes from specific points in time on.

Claims (47)

1. At a computer system including at least one processor, a computer-implemented method for establishing a virtual machine reference point, the method comprising:

maintaining a plurality of data storage identifiers that identify changed data blocks of a plurality of data blocks of a data storage corresponding to a virtual machine, wherein data storage identifiers are advanced at discrete points in time based at least on corresponding data blocks having been written to since a prior discrete point in time;

accessing a stable virtual machine checkpoint comprising a restorable image of a virtual machine at a point in time, and that stores a representation of data of at least one of the plurality of data blocks of the data storage as it existed at the point in time;

converting the virtual machine checkpoint to a virtual machine reference point comprising a representation of the virtual machine at the point in time, including:

querying the data storage to determine at least one data storage identifier corresponding to the at least one data block of the virtual machine checkpoint at the point in time;

storing the determined at least one data storage identifier as a part of the virtual machine reference point; and

releasing the representation of the data of the at least data block from the virtual machine checkpoint; and

subsequent to converting the virtual machine checkpoint to the virtual machine reference point, using the virtual machine reference point to identify one or more changes in the plurality of data blocks of the data storage since the point in time, including identifying that the at least one data storage identifier corresponding to the at least one data block has been advanced since the point in time.

2. The method of claim 1 , further comprising:

establishing, at a current time, a stable, unchanging state within the virtual machine, the stable state being associated with the virtual machine reference point;

accessing one or more previously generated virtual machine reference points to identify one or more differences in virtual machine state between the current stable state and a selected past, stable point in time; and

performing at least one operation using data identified by the stored data storage identifiers and the current data storage identifiers.

3. The method of claim 2 , wherein the at least one operation includes one or more of the following: backing data up, restoring data, replicating data, or providing data to a user or other specified entity.

4. The method of claim 2 , wherein the data identified by the stored data storage identifiers and the current data storage identifiers is combined with a previously generated checkpoint.

5. The method of claim 2 , wherein the stable state is established by performing at least one of the following: buffering subsequent data changes within the virtual machine, implementing temporary copy-on-write for subsequent data changes within the virtual machine, or generating a checkpoint for the virtual machine that includes one or more portions of underlying data.

6. The method of claim 1 , further comprising providing one or more application programming interfaces (APIs) that allow multiple different third parties to store data storage identifiers as virtual machine reference points.

7. The method of claim 6 , wherein the multiple third parties perform data backups simultaneously using the one or more provided APIs.

8. The method of claim 1 , wherein the data storage identifiers comprise sequence numbers or bitmaps.

9. The method of claim 1 , wherein the virtual machine reference point comprises metadata that includes the at least one data storage identifier, such that the virtual machine reference point is lightweight and lacks checkpoint data of the virtual machine checkpoint including data storage, memory, or virtual machine state.

10. The method of claim 9 , wherein a virtual machine checkpoint comprising data storage, memory and virtual machine state is converted to a virtual machine reference point that solely includes metadata.

11. The method of claim 1 , wherein a data-backed checkpoint is reconstructed using one or more identified changes between the virtual machine reference point and a future point in time.

12. A computer system comprising the following:

one or more processors; and

one or more computer-readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to perform at least the following:

maintain a plurality of data storage identifiers that identify changed data blocks of a plurality of data blocks of a data storage corresponding to a virtual machine, wherein data storage identifiers are advanced at discrete points in time based at least on corresponding data blocks having been written to since a prior discrete point in time;

access a stable virtual machine checkpoint comprising a restorable image of a virtual machine at a point in time, and that stores a representation of data of at least one of the plurality of data blocks of the data storage as it existed at the point in time;

convert the virtual machine checkpoint to a virtual machine reference point comprising a representation of the virtual machine at the point in time, including:

querying the data storage to determine at least one data storage identifier corresponding to the at least one data block of the virtual machine checkpoint at the point in time;

storing the determined at least one data storage identifier as a part of the virtual machine reference point; and

subsequent to converting the virtual machine checkpoint to the virtual machine reference point, use the virtual machine reference point to identify one or more changes in the plurality of data blocks of the data storage since the point in time, including identifying that the at least one data storage identifier corresponding to the at least one data block has been advanced since the point in time.

13. The computer system of claim 12 , wherein virtual machine reference point information is transferable along with the virtual machine, such that if the virtual machine is moved to a different computing system, any data identified by the virtual machine reference point is recoverable.

14. The computer system of claim 12 , wherein the computer-readable storage media also have stored thereon computer-executable instructions that are executable to also cause the computer system to perform at least the following:

establish, at a current time, a stable, unchanging state within the virtual machine, the stable state being associated with the virtual machine reference point;

access one or more previously generated virtual machine reference points to identify one or more differences in virtual machine state between the current stable state and a selected past, stable point in time; and

perform at least one operation using data identified by the stored data storage identifiers and the current data storage identifiers.

15. The computer system of claim 14 , wherein the at least one operation includes one or more of the following: backing data up, restoring data, replicating data, or providing data to a user or other specified entity.

16. The computer system of claim 14 , wherein the data identified by the stored data storage identifiers and the current data storage identifiers is combined with a previously generated checkpoint.

17. The computer system of claim 14 , wherein the stable state is established by performing at least one of the following: buffering subsequent data changes within the virtual machine, implementing temporary copy-on-write for subsequent data changes within the virtual machine, or generating a checkpoint for the virtual machine that includes one or more portions of underlying data.

18. The computer system of claim 12 , wherein the data storage identifiers comprise sequence numbers or bitmaps.

19. The computer system of claim 12 , wherein the virtual machine reference point comprises metadata that includes the at least one data storage identifier, such that the virtual machine reference point is lightweight and lacks checkpoint data of the virtual machine checkpoint including data storage, memory, or virtual machine state.

20. A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instructions that are executable by one or more processors to cause a computer system to perform at least the following:

maintain a plurality of data storage identifiers that identify changed data blocks of a plurality of data blocks of a data storage corresponding to a virtual machine, wherein data storage identifiers are advanced at discrete points in time based at least on corresponding data blocks having been written to since a prior discrete point in time;

access a stable virtual machine checkpoint comprising a restorable image of a virtual machine at a point in time, and that stores a representation of data of at least one of the plurality of data blocks of the data storage as it existed at the point in time;

convert the virtual machine checkpoint to a virtual machine reference point comprising a representation of the virtual machine at the point in time, including:

querying the data storage to determine at least one data storage identifier corresponding to the at least one data block of the virtual machine checkpoint at the point in time;

storing the determined at least one data storage identifier as a part of the virtual machine reference point; and

subsequent to converting the virtual machine checkpoint to the virtual machine reference point, use the virtual machine reference point to identify one or more changes in the plurality of data blocks of the data storage since the point in time, including identifying that the at least one data storage identifier corresponding to the at least one data block has been advanced since the point in time.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034819/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PTO ERROR OF INVENTOR'S NAME TAYLOR O?NEIL BROWN TO TAYLOR O'NEIL BROWN PREVIOUSLY RECORDED ON REEL 034532 FRAME 0941. ASSIGNOR(S) HEREBY CONFIRMS THE ENTIRE RIGHT, TITLE AND INTEREST. Recorded Dec 19, 2014
From: BEZBARUAH, ANGSHUMAN; REUTHER, LARS; BROWN, TAYLOR O'NEIL; STARKS, JOHN ANDREW
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034687/0513 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2014
From: BEZBARUAH, ANGSHUMAN; REUTHER, LARS; BROWN, TAYLOR O?NEIL; STARKS, JOHN ANDREW
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034532/0941 →