# US 2014/0195755 A1 · Performing copies in a storage system

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

- Number: US 2014/0195755 A1
- Document ID: US20140195755A1
- Status: Published application
- Kind: A1
- Application number: 14/046,872
- Filed: 2013-10-04
- Published: 2014-07-10
- Earliest claimed: 2013-01-10
- Assignees: Pure Storage, Inc.
- Applicants: PURE Storage, Inc.
- Inventors: John Colgrove; Ethan Miller; John Hayes; Cary Sandvig; Christopher Golden; Jianting Cao; Grigori Inozemtsev
- Web page: https://patentgrep.com/patent/US20140195755A1

## CPC

- G06F 3/065: {Replication mechanisms}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0614: {Improving the reliability of storage systems}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0626: {Reducing size or complexity of storage systems}
- G06F 3/0632: {by initialisation or re-initialisation of storage systems}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0667: {at data level, e.g. file, record or object virtualisation}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0671: {In-line storage system}
- G06F 3/0673: {Single storage device}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/23: Updating
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/1016: Performance improvement
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/154: Networked environment
- G06F 2212/163: Server or database system
- G06F 2212/261: Storage comprising a plurality of storage devices
- G06F 2212/263: Network storage, e.g. SAN or NAS
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method for performing copy offload operations. When a copy offload operation from a first volume (pointing to a first medium) to a second volume (pointing to a second medium) is requested, the copy offload operation is performed without accessing the data being copied. A third medium is created, and the first medium is recorded as the underlying medium of the third medium. The first volume is re-pointed to the third medium. Also, a fourth medium is created, the second volume is re-pointed to the fourth medium, and the second medium is recorded as the underlying medium of the targeted range of the fourth medium. All other ranges of the fourth medium have the second medium as their underlying medium.

## Claims

### Claim 1

A computer system comprising:
one or more storage devices; and
a storage controller coupled to the one or more storage devices;
wherein responsive to receiving a request to copy a first range of data from a first volume associated with a first medium to a second range of a second volume associated with a second medium, the storage controller is configured to:
create a third medium, store an indication that the first medium underlies the third medium, and associate the first volume with the third medium;
create a fourth medium, store an indication that the second medium underlies the fourth medium, and associate the second volume with the fourth medium; and
store an indication that the first range of data in the first medium underlies the second range in the fourth medium.

### Claim 2 (depends on 1)

The computer system as recited in claim 1, wherein the request to copy the first range of data is fulfilled by the storage controller without accessing the first range of data.

### Claim 3 (depends on 1)

The computer system as recited in claim 1, wherein the storage controller is further configured to delay the creation of the third medium until receiving a write request targeting the first range of the first volume.

### Claim 4 (depends on 3)

The computer system as recited in claim 3, wherein the storage controller is further configured to delay the creation of the fourth medium until receiving a write request targeting the second range of the second volume.

### Claim 5 (depends on 1)

The computer system as recited in claim 1, wherein the first range is located at a first offset within the first volume, wherein the second range is located at a second offset within the second volume, and wherein the storage controller is configured to store a difference between the second offset and the first offset in an entry in the medium mapping table, wherein the entry corresponds to the second range of the fourth medium.

### Claim 6 (depends on 1)

The computer system as recited in claim 1, wherein the storage controller is further configured to:
store an indication that the first medium is read-only responsive to storing an indication that the first medium underlies the third medium; and
store an indication that the second medium is read-only responsive to storing an indication that the second medium underlies the fourth medium.

### Claim 7 (depends on 1)

The computer system as recited in claim 1, wherein the first range of data is stored within a fifth medium, and wherein the fifth medium underlies the first medium.

### Claim 8

A method for use in a storage system, wherein responsive to receiving a request to copy a first range of data from a first volume to a second range of a second volume, the method comprising:
creating a third medium;
storing an indication that a first medium underlies the third medium, wherein the first range of the first volume is associated with the first medium;
associating the first volume with the third medium;
creating a fourth medium;
storing an indication that the first range of data in the first medium underlies the fourth medium;
storing one or more indications that a second medium underlies all other data of the fourth medium, wherein the second volume is associated with the second medium; and
associating the second volume with the fourth medium.

### Claim 9 (depends on 8)

The method as recited in claim 8, further comprising fulfilling the request to copy the first range of data without accessing the first range of data.

### Claim 10 (depends on 8)

The method as recited in claim 8, further comprising delaying the creation of the third medium until receiving a write request targeting the first range of the first volume.

### Claim 11 (depends on 10)

The method as recited in claim 10, further comprising delaying the creation of the fourth medium until receiving a write request targeting the second range of the second volume.

### Claim 12 (depends on 8)

The method as recited in claim 8, wherein the first range is located at a first offset within the first volume, wherein the second range is located at a second offset within the second volume, and wherein the method further comprising storing a difference between the second offset and the first offset in an entry in the medium mapping table, wherein the entry corresponds to the second range of the fourth medium.

### Claim 13 (depends on 8)

The method as recited in claim 8, further comprising:
storing an indication that the first medium is read-only responsive to storing an indication that the first medium underlies the third medium; and
storing an indication that the second medium is read-only responsive to storing an indication that the second medium underlies the fourth medium.

### Claim 14 (depends on 13)

The method as recited in claim 13, wherein the first range of data is stored within a fifth medium, and wherein the fifth medium underlies the first medium.

### Claim 15

A non-transitory computer readable storage medium storing program instructions, wherein responsive to receiving a request to copy a first range of data from a first volume to a second range of a second volume, the program instructions are executable by a processor to:
create a third medium;
store an indication that the first medium underlies the third medium, wherein the first volume is associated with the first medium;
associate the first volume with the third medium;
create a fourth medium;
store an indication that the first range of data in the first medium underlies the fourth medium;
store one or more indications that the second medium underlies all other data of the fourth medium, wherein the second volume is associated with the second medium; and
associate the second volume with the fourth medium.

### Claim 16 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the program instructions are further executable by a processor to fulfill the request to copy the first range of data without accessing the first range of data.

### Claim 17 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the program instructions are further executable by a processor to delay the creation of the third medium until receiving a write request targeting the first range of the first volume.

### Claim 18 (depends on 17)

The computer readable storage medium as recited in claim 17, wherein the program instructions are further executable by a processor to delay the creation of the fourth medium until receiving a data request targeting the second range of the second volume.

### Claim 19 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the first range is located at a first offset within the first volume, wherein the second range is located at a second offset within the second volume, and wherein the program instructions are further executable by a processor to store a difference between the second offset and the first offset in an entry in the medium mapping table, wherein the entry corresponds to the second range of the fourth medium.

### Claim 20 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the program instructions are further executable by a processor to:
store an indication that the first medium is read-only responsive to storing an indication that the first medium underlies the third medium; and
store an indication that the second medium is read-only responsive to storing an indication that the second medium underlies the fourth medium.

### Claim 21

A computer system comprising:
one or more storage devices; and
a storage controller coupled to the one or more storage devices;
wherein in response to receiving a request to copy first data from a first location associated with a first existing medium in a first volume to a second location, the storage controller is configured to:
create a first new medium;
store a first indication that the first existing medium underlies the first new medium; and
associate the first volume with the first new medium;
if the second location is in the first volume, store a second indication that the first location in the first medium underlies the second location in the first new medium;
if the second location is in a second volume associated with a second existing medium:
create a second new medium;
store a third indication the second existing medium underlies the second new medium;
store a fourth indication that the first data underlies the second new medium; and
associate the second volume with the second new medium.

### Claim 22

A computer system comprising:
one or more storage devices; and
a storage controller coupled to the one or more storage devices;
wherein in response to receiving a request to copy first data from a first location associated with a first existing medium in a first volume to a second location, the storage controller is configured to:
create a first new medium;
store a first indication that the first existing medium underlies the first new medium; and
associate the first volume with the first new medium; and
store a second indication that the first location in the first medium underlies the second location in the first new medium.
