Transactional virtual disk with differential snapshots
AssigneeMoka5, Inc.
InventorsJesse Ernest Gross, IV, John Whaley, Thomas Joseph Purtell, II
Life of this patent
Estimating the term…
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.
Claims18
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.
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.
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.
Dependencies are inferred from the claim text.