IP Library Granted Patent US 8,805,788
Granted Patent B2
US 8,805,788 · App. 12/435,302 · Granted Aug 12, 2014

Transactional virtual disk with differential snapshots

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,805,788
App. No.
12/435,302
Granted
Aug 12, 2014
Kind
B2
Abstract

Some embodiments provide a system that provides a virtual disk in a computer system. During operation, the system stores data for the virtual disk in a virtual disk file on the computer system. Next, the system loads a differential location data structure corresponding to a snapshot of the virtual disk into memory on the computer system and processes input/output (I/O) operations to the virtual disk using the differential location data structure and the virtual disk file. Finally, the system periodically generates a new snapshot of the virtual disk by transactionally committing changes made to the differential location data structure by the I/O operations to the virtual disk file.

Claims (65)

1. A computer-implemented method for providing a virtual disk in a computer system, comprising:

storing data for the virtual disk in a virtual disk file on the computer system, wherein the virtual disk file includes a data structure that comprises of at least a superblock, two or more checkpoint blocks, a set of metadata blocks and a set of data blocks, and wherein the superblock references the two or more checkpoint blocks, the two or more checkpoint blocks reference the set of metadata blocks and the set of metadata blocks reference the set of data blocks;

loading a differential location data structure corresponding to a snapshot of the virtual disk into memory on the computer system, wherein the differential location data structure corresponds to an in-memory representation of the snapshot, wherein the differential location data structure maps blocks in the snapshot to the set of data blocks used by the snapshot in the virtual disk file, and wherein the differential location data structure is different from the data structure used in the virtual disk file;

processing input/output (I/O) operations to the virtual disk using the differential location data structure and the virtual disk file, wherein the differential location data structure facilitates the processing of the I/O operations to the virtual disk file; and

periodically generating a new snapshot of the virtual disk, wherein generating the new snapshot involves:

allocating a space on the virtual disk file for storing metadata containing changes made to the differential location data structure;

writing only the metadata containing changes made to the differential location data structure to the allocated space; and

transactionally committing only the metadata containing changes to the differential location data structure by updating a checkpoint region in the virtual disk file to reference the allocated space that stores metadata containing changes to the differential location data structure.

2. The computer-implemented method of claim 1 , further comprising resizing the virtual disk file based on free space on the virtual disk file or filesystem free space associated with a host filesystem on the computer system.

3. The computer-implemented method of claim 1 , wherein each of the I/O operations corresponds to a read operation or a write operation.

4. The computer-implemented method of claim 3 , wherein processing the read operation involves:

locating a set of blocks requested in the read operation using the differential location data structure; and

retrieving the blocks from the virtual disk file.

5. The computer-implemented method of claim 4 , wherein processing the read operation further involves at least one of:

individually decompressing compressed blocks;

individually decrypting encrypted blocks; and

individually checking a hash associated with hashed blocks.

6. The computer-implemented method of claim 3 , wherein processing the write operation involves:

allocating a space on the virtual disk file based on a block size associated with the write operation;

executing the write operation by writing a block to the space; and

updating the differential location data structure using the block.

7. The computer-implemented method of claim 6 , wherein processing the write operation further involves at least one of:

compressing the block;

encrypting the block; and

computing a hash associated with the block.

8. The computer-implemented method of claim 1 , wherein loading the differential location data structure into the memory involves:

populating the differential location data structure in the memory with a most recent full snapshot of the virtual disk from the virtual disk file; and

updating the differential location data structure with one or more differential snapshots of the virtual disk generated after the most recent full snapshot.

9. The computer-implemented method of claim 1 , wherein the virtual disk comprises a virtual computing environment executing on the computer system.

10. A system for providing a virtual disk in a 2 computer system, comprising:

a processor coupled to a memory:

a virtual disk file comprising data for the virtual disk, wherein the virtual disk file includes a data structure that comprises of at least a superblock, two or more checkpoint blocks, a set of metadata blocks and a set of data blocks, and

wherein the superblock references the two or more checkpoint blocks, the two or more checkpoint blocks reference the set of metadata blocks and the set of metadata blocks reference the set of data blocks;

a differential location data structure corresponding to a snapshot of the virtual disk;

an interceptor configured to process input/output (I/O) operations to the virtual disk using the differential location data structure and the virtual disk file, wherein the differential location data structure facilitates the processing of the I/O operations to the virtual disk file; and

a disk emulator configured to:

load the differential location data structure into memory on the computer system, wherein the differential location data structure corresponds to an in-memory representation of the snapshot, wherein the differential location data structure maps blocks in the snapshot to the set of data blocks used by the snapshot in the virtual disk file, and wherein the differential location data structure is different from the data structure used in the virtual disk file; and

periodically generate a new snapshot of the virtual disk, wherein generating the new snapshot involves allocating a space on the virtual disk file for storing metadata containing changes made to the differential location data structure, writing only the metadata containing changes to the allocated space, and transactionally committing only the changes to the differential location data structure by updating a checkpoint region in the virtual disk file to reference the allocated space that stores metadata containing changes to the differential location data structure.

11. The system of claim 10 , wherein each of the I/O operations corresponds to a read operation or a write operation.

12. The system of claim 11 , wherein processing the read operation involves:

locating a set of blocks requested in the read operation using the differential location data structure; and

retrieving the blocks from the virtual disk file.

13. The system of claim 11 , wherein processing the write operation involves:

allocating a space on the virtual disk file based on a block size associated with the write operation;

executing the write operation by writing a block to the space; and

updating the differential location data structure using the block.

14. The system of claim 10 , wherein loading the differential location data structure into the memory involves:

populating the differential location data structure in the memory with a most recent full snapshot of the virtual disk from the virtual disk file; and

updating the differential location data structure with one or more differential snapshots of the virtual disk generated after the most recent full snapshot.

15. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for providing a virtual disk in a computer system, the method comprising:

storing data for the virtual disk in a virtual disk file on the computer system, wherein the virtual disk file includes a data structure that comprises of at least a superblock, two or more checkpoint blocks, a set of metadata blocks and a set of data blocks, and wherein the superblock references the two or more checkpoint blocks, the two or more checkpoint blocks reference the set of metadata blocks and the set of metadata blocks reference the set of data blocks;

loading a differential location data structure corresponding to a snapshot of the virtual disk into memory on the computer system, wherein the differential location data structure corresponds to an in-memory representation of the snapshot, wherein the differential location data structure maps blocks in the snapshot to the set of data blocks used by the snapshot in the virtual disk file, and wherein the differential location data structure is different from the data structure used in the virtual disk file;

processing input/output (I/O) operations to the virtual disk using the differential location data structure and the virtual disk file, wherein the differential location data structure facilitates the processing of the I/O operations to the virtual disk file; and

periodically generating a new snapshot of the virtual disk, wherein generating the new snapshot involves:

allocating a space on the virtual disk file for storing metadata containing changes made to the differential location data structure;

writing only the metadata containing changes to the allocated space; and

transactionally committing only the metadata containing changes to the differential location data structure by updating a checkpoint region in the virtual disk file to reference the allocated space that stores metadata containing changes to the differential location data structure.

16. The non-transitory computer-readable storage medium of claim 15 , wherein each of the I/O operations corresponds to a read operation or a write operation.

17. The non-transitory computer-readable storage medium of claim 16 , wherein processing the read operation involves:

locating a set of blocks requested in the read operation using the differential location data structure; and

retrieving the blocks from the virtual disk file.

18. The non-transitory computer-readable storage medium of claim 16 , wherein processing the write operation involves:

allocating a space on the virtual disk file based on a block size associated with the write operation;

executing the write operation by writing a block to the space; and

updating the differential location data structure using the block.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF THE PATENT ASSIGNMENT AGREEMENT DATED NOVEMBER 30, 2021 PREVIOUSLY RECORDED AT REEL: 058426 FRAME: 0791. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2022
From: OPEN INVENTION NETWORK LLC
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 058736/0436 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2021
From: OPEN INVENTION NETWORK LLC
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 058426/0791 →