# US 8,572,337 B1 · Systems and methods for performing live backups

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

- Number: US 8,572,337 B1
- Document ID: US8572337B1
- Status: Granted
- Kind: B1
- Application number: 12/637,205
- Filed: 2009-12-14
- Granted: 2013-10-29
- Earliest claimed: 2009-12-14
- Assignees: Symantec Corporation
- Applicants: Aditya Gokhale; Trimbak Bardale
- Inventors: Aditya Gokhale; Trimbak Bardale
- Web page: https://patentgrep.com/patent/US8572337B1

## CPC

- G06F 11/1466: {to make the backup process non-disruptive}
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer-implemented method for performing live backups may include identifying a request to perform a live backup on a volume of data. The computer-implemented method may also include creating a snapshot of the volume. The computer-implemented method may further include identifying each attempt to write to the volume during the live backup. The computer-implemented method may additionally include, for each write attempt, identifying a block of data that the write attempt will overwrite and copying the block of data to a backup queue before allowing the write attempt. Various other methods, systems, and computer-readable media are also disclosed.

## Claims

### Claim 1

A computer-implemented method for performing live backups, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:
identifying a request to perform a live backup on a volume of data to a backup file on a backup volume, wherein the backup file does not support out-of-order writing;
creating a snapshot of the volume;
identifying each attempt to write to the volume during the live backup;
for each write attempt:
identifying a block of data that the write attempt will overwrite;
copying the block of data to a backup queue before allowing the write attempt;
for each block of data in the backup queue, writing the block of data to the backup volume, wherein out-of-order blocks are written to the backup volume and stored in a temporary file on the backup volume until the backup file is ready for each of the out-of-order blocks.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein creating a snapshot of the volume comprises creating a reference map to each block of data in the volume indicating whether the block of data has been changed since the time of the snapshot.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein copying the block of data to the backup queue comprises copying the block of data to a backup queue that resides outside the volume.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein copying the block of data to the backup queue comprises copying the block of data to a backup queue in at least one of:
volatile memory;
random access memory.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein identifying a request to perform a live backup comprises inferring the request based on an identification of at least one backup system operation.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein identifying a request to perform a live backup comprises receiving a communication identifying the volume of data.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein writing the blocks of data in the backup queue to a backup volume comprises skipping blocks of data already written to the backup volume.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, further comprising, for each write attempt, determining that the block of data has not already been backed up.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, wherein the live backup comprises an incremental backup.

### Claim 10 (depends on 9)

The computer-implemented method of claim 9, further comprising, for each write attempt, determining that the block of data has been modified since a prior backup.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, further comprising pre-fetching blocks of data from the volume to the backup queue.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, wherein pre-fetching blocks of data from the volume to the backup queue comprises skipping blocks of data already copied to the backup queue.

### Claim 13

A system for performing live backups, the system comprising:
an identification module programmed to identify a request to perform a live backup on a volume of data to a backup file on a backup volume, wherein the backup file does not support out-of-order writing;
a snapshot module programmed to create a snapshot of the volume;
an interception module programmed to identify each attempt to write to the volume during the live backup;
a copy-on-write module programmed to:
for each write attempt,
identify a block of data that the write attempt will overwrite;
copy the block of data to a backup queue before allowing the write attempt;
for each block of data in the backup queue, write the block of data to the backup volume, wherein out-of-order blocks are written to the backup volume and stored in a temporary file on the backup volume until the backup file is ready for each of the out-of-order blocks;
at least one processor configured to execute the identification module, the snapshot module, the interception module, and the copy-on-write module.

### Claim 14 (depends on 13)

The system of claim 13, wherein the snapshot module is programmed to copy create a snapshot of the volume by creating a reference map to each block of data in the volume indicating whether the block of data has been changed since the time of the snapshot.

### Claim 15 (depends on 13)

The system of claim 13, wherein the copy-on-write module is programmed to copy the block of data to the backup queue by copying the block of data to a backup queue that resides outside the volume.

### Claim 16 (depends on 13)

The system of claim 13, wherein the copy-on-write module is programmed to copy the block of data to the backup queue by copying the block of data to a backup queue in at least one of:
volatile memory;
random access memory.

### Claim 17 (depends on 13)

The system of claim 13, wherein the identification module is programmed to identify the request to perform a live backup by inferring the request based on an identification of at least one backup system operation.

### Claim 18 (depends on 13)

The system of claim 13, wherein the identification module is programmed to identify the request to perform a live backup by receiving a communication identifying the volume of data.

### Claim 19 (depends on 13)

The system of claim 13, wherein the copy-on-write module is programmed to write the blocks of data in the backup queue to a backup volume by skipping blocks of data already written to the backup volume.

### Claim 20

A non-transitory computer-readable-storage medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:
identify a request to perform a live backup on a volume of data to a backup file on a backup volume, wherein the backup file does not support out-of-order writing;
create a snapshot of the volume;
identify each attempt to write to the volume during the live backup;
for each write attempt:
identify a block of data that the write attempt will overwrite;
copy the block of data to a backup queue before allowing the write attempt;
for each block of data in the backup queue, write the block of data to the backup volume, wherein out-of-order blocks are written to the backup volume and stored in a temporary file on the backup volume until the backup file is ready for each of the out-of-order blocks.
