METHOD FOR TRACKING CHANGES IN VIRTUAL DISKS
First Claim
1. A method for tracking changes made to a virtual disk of a virtual machine running on a computer system, the method comprising:
- receiving a request to write data to a first virtual block of the virtual disk, wherein the virtual disk contains a plurality of virtual blocks whose data is stored in blocks of a storage subsystem;
mapping a first write command to the first virtual block to a second write command to a first block of the storage subsystem;
sending, from a virtualization layer, the second write command to the storage subsystem;
receiving, at the virtualization software layer, a write completion response from the storage subsystem; and
based on the write completion response, maintaining tracking information with the virtualization software layer, wherein the tracking information indicates whether each of the plurality of virtual blocks has been written to since an event.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for tracking changes and performing backups to a storage device are provided. For virtual disks of a virtual machine, changes are tracked from outside the virtual machine in the kernel of a virtualization layer. The changes can be tracked in a lightweight fashion with a bitmap, with a finer granularity stored and tracked at intermittent intervals in persistent storage. Multiple backup applications can be allowed to accurately and efficiently backup a storage device. Each backup application can determine which block of the storage device has been updated since the last backup of a respective application. This change log is efficiently stored as a counter value for each block, where the counter is incremented when a backup is performed. The change log can be maintained with little impact on I/O by using a coarse bitmap to update the finer grained change log.
-
Citations
23 Claims
-
1. A method for tracking changes made to a virtual disk of a virtual machine running on a computer system, the method comprising:
-
receiving a request to write data to a first virtual block of the virtual disk, wherein the virtual disk contains a plurality of virtual blocks whose data is stored in blocks of a storage subsystem; mapping a first write command to the first virtual block to a second write command to a first block of the storage subsystem; sending, from a virtualization layer, the second write command to the storage subsystem; receiving, at the virtualization software layer, a write completion response from the storage subsystem; and based on the write completion response, maintaining tracking information with the virtualization software layer, wherein the tracking information indicates whether each of the plurality of virtual blocks has been written to since an event. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer program product comprising a computer readable medium encoded with a plurality of instructions for controlling a processor to perform an operation for tracking changes made to a virtual disk of a virtual machine, the instructions comprising:
-
receiving a request to write data to a first virtual block of the virtual disk, wherein the virtual disk contains a plurality of virtual blocks whose data is stored in blocks of a storage subsystem; mapping a first write command to the first virtual block to a second write command to a first block of the storage subsystem; sending, from a virtualization software layer, the second write command to the storage subsystem; receiving, at the virtualization software layer, a write completion response from the storage subsystem; and based on the write completion response, maintaining tracking information in the virtualization software layer, wherein the tracking information indicates whether each of the plurality of virtual blocks has been written to since an event.
-
-
17. A method of backing up data on a storage device, the method comprising:
-
incrementing a counter each time a backup of a plurality of blocks of a storage device is performed; tracking a first value of the counter when a first backup routine performs a backup of the storage device; tracking a second value of the counter when a second backup routine performs a backup of the storage device; for each block, storing the counter value of when data for a block was last changed; and performing a backup with the first backup routine by retrieving the data for each of the blocks that have a counter value higher than the first value for the last backup performed by the first backup routine. - View Dependent Claims (18, 19, 20, 21, 22, 23)
-
Specification