# US 2014/0195749 A1 · Deduplication of Volume Regions

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

- Number: US 2014/0195749 A1
- Document ID: US20140195749A1
- Status: Published application
- Kind: A1
- Application number: 14/046,876
- 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
- Web page: https://patentgrep.com/patent/US20140195749A1

## 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 coarse-grained deduplication of volume regions. A storage controller detects that a first region of a first volume is identical to a second region of a second volume, wherein the first volume points to a first medium and the second volume points to a second medium. In response to detecting the identical regions, the storage controller stores an indication that the first range of the first medium underlies the second range of the second medium. Also in response to detecting the identical regions, the mappings associated with the second range of the second medium are invalidated.

## 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 the storage controller is configured to:
maintain a medium mapping table to track relationships between underlying mediums and active mediums, wherein each underlying medium represents a snapshot; and
responsive to detecting a first range of a first medium is identical to a second range of a second medium, store an indication that the first range of the first medium underlies the second range of the second medium.

### Claim 2 (depends on 1)

The computer system as recited in claim 1, wherein the storage controller is further configured to:
maintain an address translation table to track mappings between mediums and storage locations; and
responsive to storing an indication that the first range of the first medium underlies the second range of the second medium, invalidate a plurality of entries corresponding to the second range of the second medium in the address translation table.

### Claim 3 (depends on 1)

The computer system as recited in claim 1, wherein the first range of the first medium and the second range of the second medium are associated with a first volume.

### Claim 4 (depends on 1)

The computer system as recited in claim 1, wherein the first medium and the second medium are stable mediums.

### Claim 5 (depends on 1)

The computer system as recited in claim 1, wherein the first range of data is located at a first offset within an address space of the first medium, wherein the second range of data is located at a second offset within an address space of the second medium, and wherein the storage controller is configured to store an indication that the second medium is aligned to the first medium using a third offset, wherein the third offset is equal to a difference between the second offset and the first offset.

### Claim 6 (depends on 1)

The computer system as recited in claim 1, wherein the second range is a portion of an address space of the second medium, wherein the storage controller is further configured to:
create a new entry in the medium mapping table for each additional range of the second medium; and
copy a plurality of attributes from a second entry in the medium mapping table to each new entry, wherein the second entry is assigned to the second medium, and wherein the plurality of attributes include an underlying medium and an offset.

### Claim 7 (depends on 1)

The computer system as recited in claim 1, wherein the indication is stored in a first entry in the medium mapping table, and wherein the first entry is assigned to the second medium.

### Claim 8

A method for use in a storage system, the method comprising:
maintaining a medium mapping table to track relationships between underlying mediums and active mediums, wherein each underlying medium represents a snapshot;
detecting a first range of a first medium is identical to a second range of a second medium; and
responsive to determining that the first medium is stable, storing an indication that the first range of the first medium underlies the second range of the second medium.

### Claim 9 (depends on 8)

The method as recited in claim 8, further comprising:
maintaining an address translation table to track mappings between mediums and storage locations; and
responsive to storing an indication that the first range of the first medium underlies the second range of the second medium, invalidating a plurality of entries corresponding to the second range of the second medium in the address translation table.

### Claim 10 (depends on 8)

The method as recited in claim 8, wherein the first range of the first medium and the second range of the second medium are associated with a first volume.

### Claim 11 (depends on 8)

The method as recited in claim 8, wherein the first medium and the second medium are stable mediums.

### Claim 12 (depends on 8)

The method as recited in claim 8, wherein the first range of data is located at a first offset within an address space of the first medium, wherein the second range of data is located at a second offset within an address space of the second medium, and wherein the method further comprising storing an indication that the second medium is aligned to the first medium using a third offset, wherein the third offset is equal to a difference between the second offset and the first offset.

### Claim 13 (depends on 8)

The method as recited in claim 8, wherein the second range is a portion of an address space of the second medium, wherein the method further comprising:
creating a new entry in the medium mapping table for each additional range of the second medium; and
copying a plurality of attributes from a second entry in the medium mapping table to each new entry, wherein the second entry is assigned to the second medium, and wherein the plurality of attributes include an underlying medium and an offset.

### Claim 14 (depends on 8)

The method as recited in claim 8, wherein the indication is stored in a first entry in the medium mapping table, and wherein the first entry is assigned to the second medium.

### Claim 15

A non-transitory computer readable storage medium storing program instructions, wherein the program instructions are executable by a processor to:
maintain a medium mapping table to track relationships between underlying mediums and active mediums, wherein each underlying medium represents a snapshot; and
responsive to detecting a first range of a first medium is identical to a second range of a second medium, store an indication that the first range of the first medium underlies the second range of the second 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:
maintain an address translation table to track mappings between mediums and storage locations; and
responsive to storing an indication that the first range of the first medium underlies the second range of the second medium, invalidate a plurality of entries corresponding to the second range of the second medium in the address translation table.

### Claim 17 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the first range of the first medium and the second range of the second medium are associated with a first volume.

### Claim 18 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the first medium and the second medium are stable mediums.

### Claim 19 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the first range of data is located at a first offset within an address space of the first medium, wherein the second range of data is located at a second offset within an address space of the second medium, and wherein the program instructions are executable by a processor to store an indication that the second medium is aligned to the first medium using a third offset, wherein the third offset is equal to a difference between the second offset and the first offset.

### Claim 20 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein the second range is a portion of an address space of the second medium, and wherein the program instructions are further executable by a processor to:
create a new entry in the medium mapping table for each additional range of the second medium; and
copy a plurality of attributes from a second entry in the medium mapping table to each new entry, wherein the second entry is assigned to the second medium, and wherein the plurality of attributes include an underlying medium and an offset.
