Patent ID: 8805788

Claim:
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.