# US 10,503,604 B2 · Virtual machine data protection

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,604 B2
- Document ID: US10503604B2
- Status: Granted
- Kind: B2
- Application number: 15/317,250
- Filed: 2015-05-20
- Published: 2017-04-27
- Granted: 2019-12-10
- Earliest claimed: 2014-06-26
- Assignees: Hewlett Packard Enterprise Development LP
- Applicants: Hewlett Packard Enterprise Development LP
- Inventors: Veeresh Anami; Mandar Nanivadekar; Venkatesh Marisamy
- Web page: https://patentgrep.com/patent/US10503604B2

## CPC

- G06F 11/1451: {by selection of backup contents}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0643: {Management of files}
- G06F 3/065: {Replication mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/14: Error detection or correction of the data by redundancy in operations (error detection or correction of the data by redundancy in hardware G06F11/16)
- G06F 16/134: {Distributed indices}
- G06F 16/182: Distributed file systems
- G06F 16/188: Virtual file systems
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1469: {Backup restoration techniques}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F 2201/80: Database-specific techniques
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Virtual machine (VM) data protection includes receiving a data stream comprising data and metadata corresponding to VM data to be backed-up and storing the data at a first location in a storage medium as a thinly distributed file. The thinly distributed file comprises a thin distribution entry between each of a plurality of data blocks to move a pointer from an end of a data block to an offset byte of a next data block. The metadata may be stored at a second location in the storage medium and may be linked to the thinly distributed file.

## Claims

### Claim 1

A method for virtual machine (VM) data protection, the method comprising:
storing a changed block tracking (CBT) map of VM data to be backed-up, wherein the CBT map includes an offset byte and a byte size for each of a plurality of data blocks, the plurality of data blocks including the VM data to be backed-up;
receiving a data stream comprising data and metadata corresponding to the VM data in the plurality of data blocks; and
storing the data at a first location in a storage medium as a thinly distributed file, based on the CBT map, wherein the thinly distributed file comprises a thin distribution entry between each of the plurality of data blocks to move a pointer from an end of a data block to the offset byte of a next data block.

### Claim 2 (depends on 1)

The method of claim 1, wherein the VM data is backed-up in a backup session corresponding to one of a full backup session and an incremental backup session, wherein the full backup session corresponds to a backup of those data blocks in a VM disk that have data, and wherein the incremental backup session corresponds to the backup of those data blocks in the VM disk that changed after a previous backup session.

### Claim 3 (depends on 1)

The method of claim 1 further comprising:
storing the metadata at a second location in the storage medium, wherein the second location is different from the first location; and
linking the thinly distributed file at the first location with the metadata at the second location.

### Claim 4 (depends on 1)

The method of claim 1 further comprising:
receiving a request from a user for browsing a file layout of the VM data from the thinly distributed file;
creating a shared directory, based on the metadata and a context file corresponding to the thinly distributed file, for providing access to the thinly distributed file for browsing the file layout;
receiving a request from the user for granular recovery of data based on the file layout; and
performing the granular recovery of the data to provide the data to the user.

### Claim 5 (depends on 4)

The method of claim 4, wherein, when the thinly distributed file corresponds to an incremental backup session, performing the granular recovery comprises:
determining, based on the metadata and the context file, the byte range of the data to be recovered;
gathering bytes corresponding to the determined byte range from thinly distributed files of the incremental backup session and preceding backup sessions, wherein the preceding backup sessions include previous incremental backup sessions up to a last full backup session and the last full backup session; and
providing the gathered bytes as the data to the user.

### Claim 6 (depends on 5)

The method of claim 5, wherein gathering the bytes comprises, until the bytes in the determined byte range are retrieved,
identifying, from the CBT map of a later backup session, a subset of the determined byte range to be retrieved from the later backup session and a remaining byte range to be retrieved from earlier backup sessions;
retrieving, from the thinly distributed file corresponding to the later backup session, the bytes in the subset of the determined byte range; and
processing the earlier backup sessions to retrieve the remaining byte range.

### Claim 7 (depends on 4)

The method of claim 4, wherein, when the thinly distributed file corresponds to a full backup session, performing the granular recovery comprises:
determining the byte range of the file to be recovered based on the metadata;
retrieving bytes, corresponding to the determined byte range, from the thinly distributed file of the full backup session; and
providing the retrieved bytes as the recovered file.

### Claim 8

A data protection (DP) system for backup and granular recovery of virtual machine (VM) data, the DP system comprising:
a processor; and
a DP backup agent coupled to the processor to:
receive a data stream comprising data and metadata corresponding to the VM data to be backed-up;
store the data at a first location in a storage medium as a thinly distributed file comprising a plurality of data blocks, wherein the thinly distributed file comprises a thin distribution entry between each of the plurality of data blocks to move a pointer from an end of a data block to an offset byte of a next data block;
store the metadata at a second location in the storage medium, wherein the second location is different from the first location; and
link the thinly distributed file at the first location with the metadata at the second location.

### Claim 9 (depends on 8)

The DP system of claim 8, wherein the DP backup agent is coupled to the processor to further receive a changed block tracking (CBT) map corresponding to the VM data, the CBT map including an offset byte and a byte size for each of the plurality of data blocks.

### Claim 10 (depends on 8)

The DP system of claim 8, further comprising a DP recovery agent coupled to the processor to:
receive a request for browsing a file layout in the thinly distributed file of an incremental backup session;
create a shared directory, based on the metadata linked to the thinly distributed file and a context file of the incremental backup session, for providing access to thinly distributed files of the incremental backup session, previous incremental backup sessions up to a last full backup session, and the last full backup session, for browsing the file layout;
receive a request for reading data from the thinly distributed file based on the file layout;
determine the byte range of the data to be read based on the metadata and the context file;
gather the bytes, corresponding to the determined byte range, from the data blocks in the thinly distributed files of the incremental backup session, the previous incremental backup sessions up to the last full backup session, and the last full backup session, based on corresponding CBT maps and context files; and
provide the gathered bytes as the data.

### Claim 11 (depends on 10)

The DP system of claim 10, wherein the DP recovery agent is coupled to the processor to further initiate a filter driver to listen to requests received to read one or more thinly distributed files and filter the requests related to the thinly distributed file of the incremental backup session.

### Claim 12 (depends on 8)

The DP system of claim 8 further comprising a DP recovery agent coupled to the processor to:
receive a request for browsing a file layout in the thinly distributed file of a full backup session;
create a shared directory, based on the metadata, for providing access to the thinly distributed file for browsing the file layout;
receive a request from a user for reading data from the thinly distributed file based on the file layout;
retrieve bytes, corresponding to the determined byte range, from the data blocks in the thinly distributed file of the full backup session, based on a corresponding changed block tracking (CBT map); and
provide the retrieved bytes as the data.

### Claim 13

A non-transitory computer-readable medium comprising instructions for virtual machine (VM) data protection, the instructions being executable by a processing resource to:
store data corresponding to a backup session of VM data at a first location in a storage medium, based on a changed block tracking (CBT) map of the VM data, wherein the data is stored as a thinly distributed file comprising a plurality of data blocks, and wherein the thinly distributed file comprises a thin distribution entry between each of a plurality of data blocks to move a pointer from an end of a data block to an offset byte of a next data block;
store metadata corresponding to the backup session of the VM data at a second location in the storage medium, wherein the second location is different from the first location, and wherein the metadata is linked to the thinly distributed file; and
on receiving a request for mounting the thinly distributed file, create a shared directory, based on the linked metadata, as a mount point for the thinly distributed file.

### Claim 14 (depends on 13)

The non-transitory computer-readable medium of claim 13, wherein, when the VM data corresponds to an incremental backup session, the non-transitory computer-readable medium is further executable by a processing resource to:
determine the byte range of data to be read from the thinly distributed file based on the metadata;
gather the bytes, corresponding to the determined byte range, from the data blocks in thinly distributed files of the incremental backup session, previous incremental backup sessions up to a last full backup session, and the last full backup session, based on corresponding CBT maps and context files; and
provide the gathered bytes as the data.

### Claim 15 (depends on 13)

The non-transitory computer-readable medium of claim 13, wherein, when the VM data corresponds to a full backup session, the non-transitory computer-readable medium is further executable by a processing resource to:
determine the byte range of data to be read from the thinly distributed file based on the metadata;
retrieve bytes, corresponding to the determined byte range, from the data blocks in the thinly distributed file of the full backup session based on a corresponding CBT map; and
provide the retrieved bytes as the data.
