# US 10,120,587 B2 · Tier-optimized write scheme

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

- Number: US 10,120,587 B2
- Document ID: US10120587B2
- Status: Granted
- Kind: B2
- Application number: 15/628,445
- Filed: 2017-06-20
- Published: 2018-05-10
- Granted: 2018-11-06
- Earliest claimed: 2015-04-13
- Assignees: Cohesity, Inc.
- Applicants: Cohesity, Inc.
- Inventors: Mohit Aron; Ganesha Shanmuganathan
- Web page: https://patentgrep.com/patent/US10120587B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 3/0643: {Management of files}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- G06F 3/0673: {Single storage device}
- G06F 12/08: in hierarchically structured memory systems, e.g. virtual memory systems
- G06F 2212/1016: Performance improvement
- G06F 2212/217: Hybrid disk, e.g. using both magnetic and solid state storage devices
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are disclosed for storing data in a plurality of storage tiers on a computing node. A node receives a request to write data corresponding to at least a first portion of a file. The node determines whether to perform the request either as an in-place write or as an out-of-place write. Upon determining to perform the request as the in-place write, the node writes the data to a first location on a storage tier which currently stores the first portion of the file. Upon determining to perform the request as the out-of-place write, the node writes the data to a second location on one of the storage tiers, other than the first location.

## Claims

### Claim 1

A method for storing data, the method comprising:
receiving a request to write data corresponding to at least a first portion of a file;
determining whether to perform the request either as an in-place write or as an out-of-place write, wherein performing the in-place write comprises performing a write to a low latency storage device and performing the out-of-place write comprises performing a write to a higher latency storage device;
in an event it is determined to perform the request as the in-place write, writing the data to a first location on a storage tier which currently stores the first portion of the file; and
in an event it is determined to perform the request as the out-of-place write, writing the data to a second location on one of a plurality of storage tiers of a computing node, other than the first location.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining to perform the request as the out-of-place write comprises:
determining that the first portion of the file corresponds to a deduplicated portion.

### Claim 3 (depends on 1)

The method of claim 1, wherein determining to perform the request as the out-of-place write comprises:
determining that the first portion of the file corresponds to a compressed group of portions from one or more files.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
recording a pattern of input/output operations to one or more portions of the file.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
determining, based on the recorded pattern of the input/output operations, whether to perform the request as either the in-place write or as the out-of-place write.

### Claim 6 (depends on 5)

The method of claim 5, wherein determining, based on the recorded pattern of the input/output operations, whether to perform the request as the out-of-place write comprises:
determining that the recorded pattern of input/output operations corresponds to a sequential pattern of input/output operations.

### Claim 7 (depends on 5)

The method of claim 5, further comprising:
determining, based on the recorded pattern of the input/output operations, whether to write the data to the first location on the storage tier which currently stores the first portion of the file or to the second location on one of the storage tiers, other than the first location.

### Claim 8 (depends on 1)

The method of claim 1, wherein the computing node is a node of a secondary storage system.

### Claim 9

A computer program product for storing data, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving a request to write data corresponding to at least a first portion of a file;
determining whether to perform the request either as an in-place write or as an out-of-place write, wherein performing the in-place write comprises performing a write to a low latency storage device and performing the out-of-place write comprises performing a write to a higher latency storage device;
in an event it is determined to perform the request as the in-place write, writing the data to a first location on a storage tier which currently stores the first portion of the file; and
in an event it is determined to perform the request as the out-of-place write, writing the data to a second location on one of a plurality of storage tiers of a computing node, other than the first location.

### Claim 10 (depends on 9)

The computer program product of claim 9, wherein determining to perform the request as the out-of-place write comprises:
determining that the first portion of the file corresponds to a deduplicated portion.

### Claim 11 (depends on 9)

The computer program product of claim 9, wherein determining to perform the request as the out-of-place write comprises:
determining that the first portion of the file corresponds to a compressed group of portions from one or more files.

### Claim 12 (depends on 9)

The computer program product of claim 9, further comprising computer instructions for:
recording a pattern of input/output operations to one or more portions of the file.

### Claim 13 (depends on 12)

The computer program product of claim 12, further comprising computer instructions for:
determining, based on the recorded pattern of the input/output operations, whether to perform the request as either the in-place write or as the out-of-place write.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein determining, based on the recorded pattern of the input/output operations, whether to perform the request as the out-of-place write comprises:
determining that the recorded pattern of input/output operations corresponds to a sequential pattern of input/output operations.

### Claim 15

A system, comprising:
a processor; and
a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:
receive a request to write data corresponding to at least a first portion of a file;
determine whether to perform the request either as an in-place write or as an out-of-place write, wherein performing the in-place write comprises performing a write to a low latency storage device and performing the out-of-place write comprises performing a write to a higher latency storage device;
in an event it is determined to perform the request as the in-place write, write the data to a first location on a storage tier which currently stores the first portion of the file; and
in an event it is determined to perform the request as the out-of-place write, write the data to a second location on one of a plurality of storage tiers of a computing node, other than the first location.

### Claim 16 (depends on 15)

The system of claim 15, wherein determining to perform the request as the out-of-place write comprises:
determining that the first portion of the file corresponds to a deduplicated portion.

### Claim 17 (depends on 15)

The system of claim 15, wherein determining to perform the request as the out-of-place write comprises:
determining that the first portion of the file corresponds to a compressed group of portions from one or more files.

### Claim 18 (depends on 15)

The system of claim 15, wherein the memory is further configured to provide the processor with instructions which when executed cause the processor to:
record a pattern of input/output operations to one or more portions of the file; and
determine, based on the recorded pattern of the input/output operations, whether to perform the request as either the in-place write or as the out-of-place write.

### Claim 19 (depends on 18)

The system of claim 18, wherein determining, based on the recorded pattern of the input/output operations, whether to perform the request as the out-of-place write comprises:
determining that the recorded pattern of input/output operations corresponds to a sequential pattern of input/output operations.

### Claim 20 (depends on 15)

The system of claim 15, wherein the computing node is a node of a secondary storage system.
