# US 11,112,995 B2 · Systems and methods for random to sequential storage mapping

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

- Number: US 11,112,995 B2
- Document ID: US11112995B2
- Status: Granted
- Kind: B2
- Application number: 15/796,234
- Filed: 2017-10-27
- Published: 2018-05-03
- Granted: 2021-09-07
- Earliest claimed: 2016-10-28
- Assignees: Atavium, Inc.
- Applicants: Atavium, Inc.
- Inventors: Mark A. Bakke; Edward Fiore; Michael J. Klemm; Marc David Olin
- Web page: https://patentgrep.com/patent/US11112995B2

## CPC

- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for mapping random data writes to sequential or semi-sequential storage. Data writes may be initially directed to an SSD or other relatively low latency and high IOPS data storage layer. The data may remain in the SSD storage layer until a group of data may be written, together, to a sequential or semi-sequential storage layer. A data organizer may group the data into data buckets based on tags and/or policies associated with the data. In this way, data subject to similar lifetime, priority, data protection, and/or other policies may be stored on a same segment or other portion of the sequential storage layer. Similarly, data having similar access patterns, authors, files, objects, or project affiliations, may be stored together on a same segment of the sequential storage layer.

## Claims

### Claim 1

A data storage system comprising:
a first storage layer comprising a first type of storage device;
a second storage layer comprising a second type of storage device different from the first type;
an I/O manager to direct incoming write requests to the first storage layer; and
a data organizer to:
determine whether data corresponding to an incoming write request corresponds to a first existing data bucket on the first storage layer based on a comparison of data tags or meta data describing the data corresponding to the incoming write request;
store the data in the first existing data bucket and a second existing data bucket on the first storage layer when data does correspond to the first existing data bucket;
create a new data bucket when data does not correspond to the existing data buckets, the new data bucket to store data having data tags or meta data similar to the data corresponding to the incoming write request, and store the data in the new data bucket in the first storage layer; and
when a data bucket reaches its corresponding data limit, move the data in the data bucket from the first storage layer to the second storage layer.

### Claim 2 (depends on 1)

The data storage system of claim 1, wherein the first storage layer comprises one or more solid state drives.

### Claim 3 (depends on 2)

The data storage system of claim 2, wherein the first storage layer comprises one or more flash storage devices.

### Claim 4 (depends on 3)

The data storage system of claim 3, wherein the second storage layer comprises one or more sequential or semi-sequential storage devices.

### Claim 5 (depends on 4)

The data storage system of claim 4, wherein the second storage layer comprises one or more shingled magnetic recording devices.

### Claim 6 (depends on 1)

The data storage system of claim 1, wherein the data organizer is to review one or more tags associated with the data in a data bucket to determine the at least one similar attribute.

### Claim 7 (depends on 6)

The data storage system of claim 6, wherein the at least one attribute relates to a data lifetime policy.

### Claim 8 (depends on 6)

The data storage system of claim 6, wherein the at least one attribute relates to a data priority policy.

### Claim 9 (depends on 6)

The data storage system of claim 6, wherein the at least one attribute relates to a data protection policy.

### Claim 10 (depends on 6)

The data storage system of claim 6, wherein the at least one attribute relates to temporal locality.

### Claim 11 (depends on 1)

The data storage system of claim 1, wherein the I/O manager additionally directs incoming read requests to either of the first storage layer and the second storage layer, depending on where the relevant data is stored.

### Claim 12 (depends on 1)

The data storage system of claim 1, wherein the data organizer additionally moves data from the second storage layer to the first storage layer based on one or more policies.

### Claim 13 (depends on 1)

The data storage system of claim 1, further comprising a segment manager to search the second storage layer for available storage space.

### Claim 14 (depends on 8)

The data storage system of claim 8, wherein the segment manager to maintain a record of available space on the second storage layer.

### Claim 15

A method for storing data, the method comprising:
receiving a write request for data;
determining whether data corresponding to the mite request corresponds to a first existing data bucket on the first storage layer based on a comparison of data tags or meta data describing the data corresponding to the incoming write request;
storing the data in the first existing data bucket and a second existing data bucket on the first storage layer when data does correspond to the first existing data bucket;
creating a new data bucket when data does not correspond to the existing data buckets, the new data bucket to store data having data tags or meta data similar to the data corresponding to the incoming write request, and writing the data to the new data bucket in the first storage layer comprising a first type of storage device;
grouping the data with other data having at least one similar attribute into a set of grouped data; and
when the grouped data reaches a predetermined data limit, moving the grouped data to a second storage layer comprising a second type of storage device.

### Claim 16 (depends on 15)

The method of claim 15, further comprising performing a data policy operation with respect to the grouped data.

### Claim 17 (depends on 15)

The method of claim 15, wherein grouping the data with other data having at least one similar attribute into a set of grouped data comprises placing the data in a data bucket based on one or more tags associated with the data.

### Claim 18 (depends on 17)

The method of claim 17, wherein the one or more tags relate to at least one of a data lifetime policy, a data priority policy, a data protection policy, and temporal locality.

### Claim 19

A data handling system comprising:
an I/O manager to direct incoming write requests to a first storage layer, the first storage layer comprising a first type of data storage device; and
a data organizer to:
determine whether data corresponding to an incoming write request corresponds to a first existing data bucket on the first storage layer based on a comparison of data tags or meta data describing the data corresponding to the incoming write request;
store the data in the first existing data bucket and a second existing data bucket on the first storage layer when data does correspond to the first existing data bucket;
create a new data bucket when data does not correspond to the existing data buckets, the new data bucket to store data having data tags or meta data similar to the data corresponding to the incoming write request, and store the data in the new data bucket in the first storage layer; and
when a data bucket reaches a data limit, moving the data in the bucket from the first storage layer to a second storage layer, the second storage layer comprising a second type of data storage device different from the first type;
wherein the second type of data storage device includes segments with a segment having a size that substantially corresponds to the data limit, and wherein moving the data in the bucket comprises selecting the segment from the second storage layer with the size that substantially corresponds to the data limit, and moving the data from the data bucket to the segment.

### Claim 20 (depends on 19)

The data handling system of claim 19, wherein to determine whether data corresponds to the existing data bucks comprises reviewing one or more tags associated with the data.

### Claim 21 (depends on 1)

The data storage system of claim 1, wherein the data organizer is to:
delete the data from the second existing data bucket when the data in the first existing data bucket is moved from the first storage layer to the second storage layer.
