IP Library Granted Patent US 8,117,410
Granted Patent B2
US 8,117,410 · App. 12/618,280 · Granted Feb 14, 2012

Tracking block-level changes using snapshots

Assignee: VMware, Inc.
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,410
App. No.
12/618,280
Granted
Feb 14, 2012
Kind
B2
Abstract

Writes to blocks of a protected storage volume that occur between the beginning of a prior backup interval and the beginning of a current backup interval are tracked using a first snapshot that is maintained through the current backup interval. At the beginning of the current backup interval, a second snapshot is generated. Blocks that are indicated by a dirty block list of the first snapshot as having been changed are read from the snapshot volume for the second snapshot and copied to a backup storage volume. For the next backup interval, the second snapshot or alternatively, a newly generated third snapshot, is used to track writes to blocks of a protected storage volume that occur between the beginning of the current backup interval and the beginning of a next backup interval.

Claims (47)

1. A method of updating a backup storage volume with incremental changes made to a source storage volume, comprising:

generating a first snapshot of the source storage volume at or before the beginning of a prior backup cycle and maintaining the first snapshot through a current backup cycle;

at the beginning of the current backup cycle, generating a second snapshot of the source storage volume and then examining a dirty block list of the first snapshot to identify a set of blocks of the source storage volume that have changed during a time period the first snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the prior backup cycle and the beginning of the current backup cycle; and

copying the changed blocks into the backup storage volume using the second snapshot.

2. The method according to claim 1 , wherein the first snapshot is generated before the beginning of the prior backup cycle.

3. The method according to claim 1 , further comprising:

discarding the first and second snapshots upon completion of the current backup cycle.

4. The method according to claim 3 , further comprising:

generating a third snapshot of the source storage volume at or before the beginning of the current backup cycle and maintaining the third snapshot through the next backup cycle;

at the beginning of the next backup cycle, generating a fourth snapshot of the source storage volume and then examining a dirty block list of the third snapshot to identify a set of blocks of the source storage volume that have changed during a time period the third snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the current backup cycle and the beginning of the next backup cycle; and

copying the changed blocks into the backup storage volume using the fourth snapshot.

5. The method according to claim 4 , further comprising:

discarding the third and fourth snapshots upon completion of the next backup cycle.

6. The method according to claim 1 , wherein the first snapshot is generated at the beginning of the prior backup cycle.

7. The method according to claim 6 , wherein the first snapshot is discarded upon completion of the current backup cycle but the second snapshot is maintained through a next backup cycle.

8. The method according to claim 7 , further comprising:

at the beginning of the next backup cycle, generating a third snapshot of the source storage volume and then examining a dirty block list of the second snapshot to identify a set of blocks of the source storage volume that have changed during a time period the second snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the current backup cycle and the beginning of the next backup cycle; and

copying the changed blocks into the backup storage volume using the third snapshot.

9. The method according to claim 8 , wherein the second snapshot is discarded upon completion of the next backup cycle but the third snapshot is maintained past the completion of the next backup cycle.

10. A computer-readable storage medium containing instructions for causing a computer system to carry out a method of incrementally updating a backup storage volume with changes made to a source storage volume, the method comprising the steps of:

generating a first snapshot of the source storage volume at or before the beginning of a prior backup cycle and maintaining the first snapshot through a current backup cycle;

at the beginning of the current backup cycle, generating a second snapshot of the source storage volume and then examining a dirty block list of the first snapshot to identify a set of blocks of the source storage volume that have changed during a time period the first snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the prior backup cycle and the beginning of the current backup cycle; and

copying the changed blocks into the backup storage volume using the second snapshot.

11. The computer-readable storage medium according to claim 10 , wherein the first snapshot is generated before the beginning of the prior backup cycle.

12. The computer-readable storage medium according to claim 10 , wherein the method further comprises the step of:

discarding the first and second snapshots upon completion of the current backup cycle.

13. The computer-readable storage medium according to claim 12 , wherein the method further comprises the step of:

generating a third snapshot of the source storage volume at or before the beginning of the current backup cycle and maintaining the third snapshot through the next backup cycle;

at the beginning of the next backup cycle, generating a fourth snapshot of the source storage volume and then examining a dirty block list of the third snapshot to identify a set of blocks of the source storage volume that have changed during a time period the third snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the current backup cycle and the beginning of the next backup cycle; and

copying the changed blocks into the backup storage volume using the fourth snapshot.

14. The computer-readable storage medium according to claim 13 , wherein the method further comprises the step of:

discarding the third and fourth snapshots upon completion of the next backup cycle.

15. The computer-readable storage medium according to claim 10 , wherein the first snapshot is generated at the beginning of the prior backup cycle.

16. The computer-readable storage medium according to claim 15 , wherein the first snapshot is discarded upon completion of the current backup cycle but the second snapshot is maintained through a next backup cycle.

17. The computer-readable storage medium according to claim 16 , further comprising:

at the beginning of the next backup cycle, generating a third snapshot of the source storage volume and then examining a dirty block list of the second snapshot to identify a set of blocks of the source storage volume that have changed during a time period the second snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the current backup cycle and the beginning of the next backup cycle; and

copying the changed blocks into the backup storage volume using the third snapshot.

18. The computer-readable storage medium according to claim 17 , wherein the second snapshot is discarded upon completion of the next backup cycle but the third snapshot is maintained past the completion of the next backup cycle.

19. A computer system for tracking changes made to a source storage volume that is being backed up by a backup storage volume, comprising a processing unit that is programmed to:

generate a first snapshot of the source storage volume at or before the beginning of a prior backup cycle and maintain the first snapshot through a current backup cycle;

at the beginning of the current backup cycle, generate a second snapshot of the source storage volume and then examine a dirty block list of the first snapshot to identify a set of blocks of the source storage volume that have changed during a time period the first snapshot is maintained, the set of blocks including at least those blocks that have changed between the beginning of the prior backup cycle and the beginning of the current backup cycle; and

copy the changed blocks into the backup storage volume using the second snapshot.

20. The computer system according to claim 19 , wherein the processing unit is programmed with a snapshot manager for generating the first snapshot and the second snapshot.

21. The computer system according to claim 20 , wherein the snapshot manager creates a copy-on-write cache when generating each of the first snapshot and the second snapshot.

22. The computer system according to claim 20 , wherein the snapshot manager maintains a dirty block list for each of the first snapshot and the second snapshot.

23. The computer system according to claim 19 , wherein the set of blocks includes blocks that were changed before the beginning of the prior backup cycle and not between the beginning of the prior backup cycle and the beginning of the current backup cycle.

24. The computer system according to claim 19 , wherein the set of blocks includes blocks that were changed after the beginning of the current backup cycle and not between the beginning of the prior backup cycle and the beginning of the current backup cycle.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0242 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2009
From: LU, PING; LANGOUEV, ILIA; PERSHIN, ALEKSEY V.; PIDURI, SUDARSAN R.; WEATHERS, ERIK
To: VMWARE, INC.
Reel/Frame 023621/0417 →
Continuity (2)
Continuation In Part 12197768 · Aug 25, 2008
Related Publication 20100077165A1 · Mar 25, 2010