# US 2014/0195754 A1 · Snapshots 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/0195754 A1
- Document ID: US20140195754A1
- Status: Published application
- Kind: A1
- Application number: 14/046,870
- 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/US20140195754A1

## 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 creating and managing snapshots. Mediums are recorded and maintained, all of which are read-only except for the most recent mediums in use by a volume. Multiple volumes may be maintained, including a first volume which points to a first medium. When a snapshot of the first volume is taken, a second medium is created that points to the first medium. The first volume is also updated to point to the second medium. The first medium becomes the underlying medium of the second medium, and lookups are performed initially on the second medium and then on the first medium if the data is not located in the second medium.

## Claims

### Claim 1

A computer system comprising:
one or more storage devices; and
a storage controller;
wherein in response to receiving a request to take a snapshot of a first volume associated with a first medium, the storage controller is configured to:
create a second medium;
store an indication that the first medium underlies the second medium;
associate the first volume with the second medium; and
store an indication that the first medium is read-only.

### Claim 2 (depends on 1)

The computer system as recited in claim 1, wherein the storage controller is further configured to write first data to the second medium responsive to receiving a write request targeting the first volume, wherein the first data corresponds to the write request, and wherein the write request is received after taking the snapshot of the first volume.

### Claim 3 (depends on 1)

The computer system as recited in claim 1, wherein the storage controller is further configured to determine which medium is associated with the first volume responsive to receiving the request to take the snapshot of the first volume.

### Claim 4 (depends on 1)

The computer system as recited in claim 1, wherein prior to receiving the request to take the snapshot of the first volume, the status of the first medium was read-write.

### Claim 5 (depends on 3)

The computer system as recited in claim 3, further comprising a volume to medium mapping table, wherein the second medium is recorded as an anchor medium of the first volume in a corresponding entry in the volume to medium mapping table.

### Claim 6 (depends on 5)

The computer system as recited in claim 5, wherein responsive to receiving a read request for first data of the first volume, the storage controller is configured to:
determine which medium is the anchor medium of the first volume;
responsive to determining the second medium is the anchor medium of the first volume, perform a lookup in the second medium for the first data;
responsive to determining the first data is not located in the second medium, determine an underlying medium of the second medium; and
responsive to determining a first medium is the underlying medium of the first medium, perform a lookup in the first medium for the first data.

### Claim 7 (depends on 6)

The computer system as recited in claim 6, wherein responsive to receiving a write request of second data to the first volume, the storage controller is further configured to store an indication that the second medium is unmasked responsive to determining no previous write requests have been made to the second medium.

### Claim 8

A method for use in a storage system, the method comprising:
receiving a request to take a snapshot of a first volume associated with a first medium; and
responsive to said request:
creating a second medium;
storing an indication that the first medium underlies the second medium;
associating the first volume with the second medium; and
storing an indication that the first medium is read-only.

### Claim 9 (depends on 8)

The method as recited in claim 8, further comprising writing first data to the second medium responsive to receiving a write request targeting the first volume, wherein the first data corresponds to the write request, and wherein the write request is received after taking the snapshot of the first volume.

### Claim 10 (depends on 8)

The method as recited in claim 8, further comprising determining which medium is associated with the first volume responsive to receiving the request to take the snapshot of the first volume.

### Claim 11 (depends on 8)

The method as recited in claim 8, wherein prior to receiving the request to take the snapshot of the first volume, the status of the first medium was read-write.

### Claim 12 (depends on 10)

The method as recited in claim 10, wherein the second medium is recorded as an anchor medium of the first volume in a corresponding entry in a volume to medium mapping table.

### Claim 13 (depends on 12)

The method as recited in claim 12, wherein responsive to receiving a read request for first data of the first volume, the method comprising:
determining which medium is the anchor medium of the first volume;
responsive to determining the second medium is the anchor medium of the first volume, performing a lookup in the second medium for the first data;
responsive to determining the first data is not located in the second medium, determining an underlying medium of the second medium; and
responsive to determining a first medium is the underlying medium of the first medium, performing a lookup in the first medium for the first data.

### Claim 14 (depends on 13)

The method as recited in claim 13, wherein responsive to receiving a write request of second data to the first volume, the method comprising storing an indication that the second medium is unmasked responsive to determining no previous write requests have been made to the second medium.

### Claim 15

A non-transitory computer readable storage medium storing program instructions,
wherein responsive to receiving a request to take a snapshot of a first volume,
wherein the first volume is associated with a first medium, the program instructions are executable by a processor to:
create a second medium;
store an indication that the first medium underlies the second medium;
associate the first volume with the second medium; and
store an indication that the first medium is read-only.

### 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 write first data to the second medium responsive to receiving a write request targeting the first volume, wherein the first data corresponds to the write request, and wherein the write request is received after taking the snapshot of the first volume.

### 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 determine which medium is associated with the first volume responsive to receiving the request to take the snapshot of the first volume.

### Claim 18 (depends on 15)

The computer readable storage medium as recited in claim 15, wherein prior to receiving the request to take the snapshot of the first volume, the status of the first medium was read-write.

### Claim 19 (depends on 17)

The computer readable storage medium as recited in claim 17, wherein responsive to receiving a read request for first data of the first volume, the program instructions are executable by a processor to:
determine which medium is an anchor medium of the first volume;
responsive to determining the second medium is the anchor medium of the first volume, perform a lookup in the second medium for the first data;
responsive to determining the first data is not located in the second medium, determine an underlying medium of the second medium; and
responsive to determining a first medium is the underlying medium of the first medium, perform a lookup in the first medium for the first data.

### Claim 20 (depends on 19)

The computer readable storage medium as recited in claim 19, wherein responsive to receiving a write request of second data to the first volume, the program instructions are executable by a processor to store an indication that the second medium is unmasked responsive to determining no previous write requests have been made to the second medium.
