Virtual Block Devices
First Claim
1. A method performed by data processing apparatus, the method comprising:
- receiving a request to initialize a virtual machine, the virtual machine having an associated virtual block device;
accessing a file map comprising a plurality of file map entries, each file map entry associating a respective block of data with a respective position within a respective data file to which the block of data was written, wherein each of the plurality of blocks of data is stored in the respective data file in association with metadata that identifies the block of data and a respective sequence number for a write request that resulted in the block being written to the position;
determining file map entries corresponding to blocks of data allocated to the virtual block device and one or more files in which the blocks of data allocated to the virtual block device are stored;
determining that a particular one of the blocks allocated to the virtual block device has been written to a new position not associated with the particular block in the file map, comprising;
scanning one or more positions within the one or more files to determine that the particular block was written to the new position, the new position not being associated with the particular block in the file map, anddetermining, from a sequence number stored in association with the particular block at the new position, that the particular block was written to the new position subsequent to being written to the position indicated by the file map; and
updating the position associated with the particular block to the new position.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for virtual block storage. In one aspect, a method includes receiving a request to initialize a virtual machine, the virtual machine having an associated virtual block device; accessing a file map comprising a plurality of file map entries; determining file map entries corresponding to blocks of data allocated to the virtual block device and one or more files in which the blocks of data allocated to the virtual block device are stored; determining that a particular one of the blocks allocated to the virtual block device has been written to a new position not associated with the particular block in the file map; and updating the position associated with the particular block to the new position.
-
Citations
39 Claims
-
1. A method performed by data processing apparatus, the method comprising:
-
receiving a request to initialize a virtual machine, the virtual machine having an associated virtual block device; accessing a file map comprising a plurality of file map entries, each file map entry associating a respective block of data with a respective position within a respective data file to which the block of data was written, wherein each of the plurality of blocks of data is stored in the respective data file in association with metadata that identifies the block of data and a respective sequence number for a write request that resulted in the block being written to the position; determining file map entries corresponding to blocks of data allocated to the virtual block device and one or more files in which the blocks of data allocated to the virtual block device are stored; determining that a particular one of the blocks allocated to the virtual block device has been written to a new position not associated with the particular block in the file map, comprising; scanning one or more positions within the one or more files to determine that the particular block was written to the new position, the new position not being associated with the particular block in the file map, and determining, from a sequence number stored in association with the particular block at the new position, that the particular block was written to the new position subsequent to being written to the position indicated by the file map; and updating the position associated with the particular block to the new position. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A storage medium encoded with instructions which, when executed by data processing apparatus, cause the data processing apparatus to perform operations comprising:
-
receiving a request to initialize a virtual machine, the virtual machine having an associated virtual block device; accessing a file map comprising a plurality of file map entries, each file map entry associating a respective block of data with a respective position within a respective data file to which the block of data was written, wherein each of the plurality of blocks of data is stored in the respective data file in association with metadata that identifies the block of data and a respective sequence number for a write request that resulted in the block being written to the position; determining file map entries corresponding to blocks of data allocated to the virtual block device and one or more files in which the blocks of data allocated to the virtual block device are stored; determining that a particular one of the blocks allocated to the virtual block device has been written to a new position not associated with the particular block in the file map, comprising; scanning one or more positions within the one or more files to determine that the particular block was written to the new position, the new position not being associated with the particular block in the file map, and determining, from a sequence number stored in association with the particular block at the new position, that the particular block was written to the new position subsequent to being written to the position indicated by the file map; and updating the position associated with the particular block to the new position. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. A system comprising:
-
a storage medium encoded with instructions; data processing apparatus operable to execute the instructions to perform operations comprising; receiving a request to initialize a virtual machine, the virtual machine having an associated virtual block device; accessing a file map comprising a plurality of file map entries, each file map entry associating a respective block of data with a respective position within a respective data file to which the block of data was written, wherein each of the plurality of blocks of data is stored in the respective data file in association with metadata that identifies the block of data and a respective sequence number for a write request that resulted in the block being written to the position; determining file map entries corresponding to blocks of data allocated to the virtual block device and one or more files in which the blocks of data allocated to the virtual block device are stored; determining that a particular one of the blocks allocated to the virtual block device has been written to a new position not associated with the particular block in the file map, comprising; scanning one or more positions within the one or more files to determine that the particular block was written to the new position, the new position not being associated with the particular block in the file map, and determining, from a sequence number stored in association with the particular block at the new position, that the particular block was written to the new position subsequent to being written to the position indicated by the file map; and updating the position associated with the particular block to the new position. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
-
Specification