# US 6,799,258 B1 · Methods and apparatus for point-in-time volumes

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

- Number: US 6,799,258 B1
- Document ID: US6799258B1
- Status: Granted
- Kind: B1
- Application number: 10/044,327
- Filed: 2002-01-10
- Granted: 2004-09-28
- Earliest claimed: 2001-01-10
- Assignees: DataCore Software Corporation
- Inventors: David A. Linde
- Web page: https://patentgrep.com/patent/US6799258B1

## CPC

- G06F 11/1469: {Backup restoration techniques}
- G06F 11/1466: {to make the backup process non-disruptive}
- G06F 12/121: using replacement algorithms
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- Y10S 707/99953: Recoverability
- Y10S 707/99955: Archiving or backup
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

Methods and apparatus for point-in-time volumes are provided. A relationship is enabled between a source volume and point-in-time volume. Copying a data chunk to the point-in-time volume before a write operation modifies the data chunk on the source volume dynamically creates the point-in-time volume. The point-in-time volume can be accessed in read/write mode as a general purpose data storage volume. Other embodiments comprising additional features, such as a forced migration process, are also provided.

## Claims

### Claim 1

A method for creating a point-in-time volume of a source volume, the method comprising:
enabling a relationship between the source volume and the point-in-time volume;
if detecting a data write operation to an original data chunk in the source volume;
reading the original data chunk from the source volume prior to the data write operation; and
writing the original data chunk to the point-in-time volume; and
if detecting a data write operation to a non-original data chunk;
performing the data write operation without writing the non-original data chunk to the point-in-time volume.

### Claim 2 (depends on 1)

The method of claim 1 wherein the data chunk comprises a predetermined number of data blocks.

### Claim 3 (depends on 1)

The method of claim 1 further comprising locking the data chunk on the source volume.

### Claim 4 (depends on 1)

The method of claim 1 further comprising transferring at least one migration data chunk from the source volume.

### Claim 5 (depends on 4)

The method of claim 4 wherein the transferring comprises:
determining a data chunk to migrate;
reading the data chunk from the source volume; and
writing the data chunk to the point-in-time volume.

### Claim 6 (depends on 5)

The method of claim 5 further comprising repeating the determining, reading, and writing.

### Claim 7

A method for modifying a data block while maintaining a point-in-time volume, the method comprising:
detecting a data modification operation to a source volume;
determining a data chunk associated with the data block;
accessing a migration table to determine a migration state for the data chunk, the migration table indicating TRUE for data chunk already migrated from the source volume to the point-in-time volume;
responsive to a FALSE migration state, writing the data chunk to the point-in-time volume prior to the data modification operation; and
responsive to the TRUE migration state, performing the data modification operation to the data chunk in the source volume without writing the data chunk to the point-in-time volume.

### Claim 8 (depends on 7)

The method of claim 7 further comprising:
locking the data chunk on the source volume and the point-in-time volume;
reading the data chunk from the source volume; and
writing the data chunk to the point-in-time volume.

### Claim 9 (depends on 7)

The method of claim 7 wherein the data modification operation comprises one from the group containing: copying a file, deleting a file, moving a file, and writing a file.

### Claim 10

A method for enabling a point-in-time volume for reading a data block, the method comprising:
determining a data chunk associated with the data block;
accessing a migration table to determine a migration state for the data chunk, the migration table indicating TRUE for data chunks migrated from a source volume to the point-in-time volume;
responsive to a TRUE migration state, reading from one of the source volume and the point-in-time volume; and
responsive to a FALSE migration state, reading from the source volume.

### Claim 11 (depends on 10)

The method of claim 10 further comprising locking the data chunk on the one of he source volume and the point-in-time volume.

### Claim 12

A method for using a point-in-time volume of a source volume, the method comprising:
if detecting a data write operation to an original data chunk in the source volume;
reading the original data chunk from the source volume prior to the data write operation; and
writing the original data chunk to the point-in-time volume;
if detecting a data write operation to a non-original data chunk;
performing the data write operation without writing the non-original data chunk to the point-in-time volume; and
transferring at least one migration data chunk from the source volume.

### Claim 13 (depends on 12)

The method of claim 12 further comprising locking the data chunk on the source volume.

### Claim 14 (depends on 12)

The method of claim 12 further comprising:
presenting the point-in-time volume to a client; and
performing, by the client, read and write operations on the point-in-time volume.

### Claim 15 (depends on 12)

The method of claim 12 further comprising disabling the client access to the source volume.

### Claim 16

a point-in-time volume of a source volume, the point-in-time volume comprising:
at least one point-in-time data chunk transferred from the source volume, wherein the data chunk was transferred prior to the data chunk being modified in the source volume;
at least one source data chunk not being transferred to the point-in-time volume, wherein the data chunk is being modified in the source volume without being transferred to the point-in-time volume; and
at least one migration data chunk from the source volume.

### Claim 17 (depends on 16)

The point-in-time volume of claim 16 further comprising an interface for reading and writing data blocks on the point-in-time volume.

### Claim 18 (depends on 17)

The point-in-time volume of claim 17 wherein the interface is a storage domain server for presenting the point-in-time volume as the storage volume.

### Claim 19 (depends on 18)

The point-in-time volume of claim 18 wherein the interface is a device driver for presenting the point-in-time volume as the storage volume.

### Claim 20

A point-in-time volume of a source volume, the point-in-time volume comprising:
at least one point-in-time data chunk transferred from the source volume, wherein the data chunk was transferred prior to the data chunk being modified on the source volume;
at least one migration data chunk from the source volume;
a migration table for indexing the at least one point-in-time data chunk and the at least one migration data chunk; and
a delta table for tracking data writes.

### Claim 21

A computer readable medium comprising:
program instructions for enabling a relationship between the source volume and a point-in-time volume;
program instructions for if detecting a data write operation to an original data chunk to the source volume;
program instructions for reading the original data chunk from the source volume prior to the data write operation; and
program instructions for writing the original data chunk to the point-in-time volume; and
program instructions for if detecting a data write operation to a non-original data chunk;
program instructions for performing the data write operation without writing the non-original data chunk to the point-in-time volume.

### Claim 22 (depends on 21)

The computer readable medium of claim 21 further comprising program instructions for transferring at least one migration data chunk from the source volume.
