# US 8,572,338 B1 · Systems and methods for creating space-saving snapshots

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

- Number: US 8,572,338 B1
- Document ID: US8572338B1
- Status: Granted
- Kind: B1
- Application number: 12/709,995
- Filed: 2010-02-22
- Granted: 2013-10-29
- Earliest claimed: 2010-02-22
- Assignees: Symantec Corporation
- Applicants: Shailesh Vaman Marathe; Niranjan Pendharkar
- Inventors: Shailesh Vaman Marathe; Niranjan Pendharkar
- Web page: https://patentgrep.com/patent/US8572338B1

## CPC

- G06F 3/065: {Replication mechanisms}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1466: {to make the backup process non-disruptive}
- G06F 2201/82: Solving problems relating to consistency
- 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 creating space-saving snapshots may include: 1) identifying a parent volume on which to perform a snapshot, 2) allocating at least one thin-provisioned volume for the snapshot, 3) identifying an attempt to write to a region of the parent volume, and then 4) copying the region to the thin-provisioned volume. Various other methods, systems, and computer-readable media are also disclosed.

## Claims

### Claim 1

A computer-implemented method for creating space-saving snapshots, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:
identifying a parent volume on which to perform a snapshot;
allocating at least one thin-provisioned volume for the snapshot, wherein the thin-provisioned volume logically presents more storage space than is physically allocated to the thin-provisioned volume;
identifying an attempt to write to a region of the parent volume;
copying the region to a logical address on the thin-provisioned volume that is equivalent to the region's logical address on the parent volume without maintaining a dynamic map between the parent volume and the thin-provisioned volume that identifies the logical address of the copied region on the thin-provisioned volume;
wherein the logical address space of the parent volume and the logical address space of the thin-provisioned volume are isomorphic.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
identifying an attempt to read the region from the snapshot;
determining that the region has changed since the snapshot;
fulfilling the read attempt from the thin-provisioned volume.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein determining that the region has changed since the snapshot comprises:
marking the region as changed in a tracking structure after copying the region to the thin-provisioned volume;
checking the tracking structure to determine that the region has changed.

### Claim 4 (depends on 2)

The computer-implemented method of claim 2, wherein determining that the region has changed since the snapshot comprises determining that space for the region has been allocated to the thin-provisioned volume.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein determining that space for the region has been allocated to the thin-provisioned volume comprises determining that space for the logical address on the thin-provisioned volume that is equivalent to the region's logical address on the parent volume has been allocated.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising:
identifying an attempt to read the region from the snapshot;
determining that the region has not changed since the snapshot;
fulfilling the read attempt from the parent volume.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising pre-allocating space for the region on the thin-provisioned volume before copying the region to the thin-provisioned volume.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein pre-allocating space for the region on the thin-provisioned volume comprises sending a request through an interface for the thin-provisioned volume to pre-allocate space for the region.

### Claim 9 (depends on 7)

The computer-implemented method of claim 7, wherein pre-allocating space for the region on the thin-provisioned volume comprises issuing a dummy write attempt to the logical address on the thin-provisioned volume that is equivalent to the region's logical address on the parent volume.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein allocating the thin-provisioned volume for the snapshot comprises:
selecting a storage tier;
allocating the thin-provisioned volume from the storage tier.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10, wherein selecting the storage tier comprises selecting a low storage tier.

### Claim 12 (depends on 10)

The computer-implemented method of claim 10, wherein selecting the storage tier comprises selecting a user-specified storage tier.

### Claim 13

A system for creating space-saving snapshots, the system comprising:
an identification module programmed to identify a parent volume on which to perform a snapshot;
an allocation module programmed to allocate at least one thin-provisioned volume for the snapshot, wherein the thin-provisioned volume logically presents more storage space than is physically allocated to the thin-provisioned volume;
an interception module programmed to identify an attempt to write to a region of the parent volume;
a copying module programmed to copy the region to a logical address on the thin-provisioned volume that is equivalent to the region's logical address on the parent volume without maintaining a dynamic map between the parent volume and the thin-provisioned volume that identifies the logical address of the copied region on the thin-provisioned volume;
wherein the logical address space of the parent volume and the logical address space of the thin-provisioned volume are isomorphic;
at least one processor configured to execute the identification module, the allocation module, the interception module, and the copying module.

### Claim 14 (depends on 13)

The system of claim 13, further comprising a reading module programmed to:
identify an attempt to read the region from the snapshot;
determine that the region has changed since the snapshot;
fulfill the read attempt from the thin-provisioned volume.

### Claim 15 (depends on 14)

The system of claim 14, wherein the reading module is programmed to determine that the region has changed since the snapshot by:
marking the region as changed in a tracking structure after copying the region to the thin-provisioned volume;
checking the tracking structure to determine that the region has changed.

### Claim 16 (depends on 14)

The system of claim 14, wherein the reading module is programmed to determine that the region has changed since the snapshot by determining that space for the region has been allocated to the thin-provisioned volume.

### Claim 17 (depends on 16)

The system of claim 16, wherein the reading module is programmed to determine that space for the region has been allocated to the thin-provisioned volume by determining that space for the logical address on the thin-provisioned volume that is equivalent to the region's logical address on the parent volume has been allocated.

### Claim 18

A non-transitory computer-readable-storage medium comprising computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:
identify a parent volume on which to perform a snapshot;
allocate at least one thin-provisioned volume for the snapshot, wherein the thin-provisioned volume logically presents more storage space than is physically allocated to the thin-provisioned volume;
identify an attempt to write to a region of the parent volume;
copy the region to a logical address on the thin-provisioned volume that is equivalent to the region's logical address on the parent volume without maintaining a dynamic map between the parent volume and the thin-provisioned volume that identifies the logical address of the copied region on the thin-provisioned volume;
wherein the logical address space of the parent volume and the logical address space of the thin-provisioned volume are isomorphic.
