# US 10,503,654 B2 · Selective caching of erasure coded fragments in a distributed storage system

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

- Number: US 10,503,654 B2
- Document ID: US10503654B2
- Status: Granted
- Kind: B2
- Application number: 15/254,824
- Filed: 2016-09-01
- Published: 2018-03-01
- Granted: 2019-12-10
- Earliest claimed: 2016-09-01
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Arun Raghunath; Michael P. Mesnier; Yi Zou
- Web page: https://patentgrep.com/patent/US10503654B2

## CPC

- G06F 12/0888: using selective caching, e.g. bypass
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/121: using replacement algorithms
- H03M 13/3761: {using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes}
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/403: Error protection encoding, e.g. using parity or ECC codes
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)

## Abstract

Methods and apparatus related to framework and/or methodology for selective caching of Erasure Coded fragments in a distributed storage system are described. In one embodiment, a plurality of fragments of a data object are generated. Each of the plurality of fragments is Erasure Coded (EC) prior to storage at a storage node of a plurality of storage nodes. Each of the plurality of fragments is transmitted with a caching hint to indicate whether that fragment is to be cached at the storage node. Other embodiments are also disclosed and claimed.

## Claims

### Claim 1

An apparatus comprising:
logic to generate a plurality of fragments of a data object to be Erasure Coded (EC) prior to storage at a storage node of a plurality of storage nodes,
wherein each of the plurality of fragments is to be transmitted with a caching hint to indicate whether that fragment is to be cached at the storage node, wherein a determination of whether to cache all of the plurality of fragments is to be based at least in part on: a source of the data object, a destination of the data object, and a size-range based policy.

### Claim 2 (depends on 1)

The apparatus of claim 1, comprising logic to determine where to store an EC fragment in a storage hierarchy of the storage node based at least in part on the caching hint.

### Claim 3 (depends on 1)

The apparatus of claim 1, comprising logic to pass an eviction hint from the storage node to one or more neighboring storage nodes.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the logic is to pass an eviction hint to all storage that store the plurality of fragments.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the storage node is to comprise the logic.

### Claim 6 (depends on 1)

The apparatus of claim 1, comprising logic to extract the caching hint and to add the caching hint to a write operation to a memory coupled to the storage node.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the plurality of storage nodes is to comprise a near storage node and/or a far storage node.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the plurality of storage nodes is to communicate via a network.

### Claim 9 (depends on 8)

The apparatus of claim 8, wherein the network is to comprise a wired and/or a wireless network.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein each of the plurality of storage nodes is to comprise one or more of: a hard disk drive, a solid state drive, and a hybrid drive.

### Claim 11 (depends on 1)

The apparatus of claim 1, wherein each of the plurality of storage nodes is to comprise volatile memory and/or non-volatile memory.

### Claim 12 (depends on 11)

The apparatus of claim 11, wherein the non-volatile memory is to comprise one or more of: nanowire memory, Ferro-electric Transistor Random Access Memory (FeTRAM), Magnetoresistive Random Access Memory (MRAM), flash memory, Spin Torque Transfer Random Access Memory (STTRAM), Resistive Random Access Memory, byte addressable 3-Dimensional Cross Point Memory, PCM (Phase Change Memory), write-in-place non-volatile memory, and volatile memory backed by a power reserve to retain data during power failure or power disruption.

### Claim 13 (depends on 1)

The apparatus of claim 1, further comprising one or more of: at least one processor, having one or more processor cores, communicatively coupled to the storage node, a battery communicatively coupled to the apparatus, or a network interface communicatively coupled to the apparatus.

### Claim 14 (depends on 1)

The apparatus of claim 1, wherein the size-range based policy is to indicate that all fragments of objects whose size falls in a size range are to be cached at the storage node.

### Claim 15 (depends on 1)

The apparatus of claim 1, wherein the caching hint is to be generated by a storage middleware logic.

### Claim 16

A method comprising:
generating a plurality of fragments of a data object to be Erasure Coded (EC) prior to storage at a storage node of a plurality of storage nodes,
wherein each of the plurality of fragments is transmitted with a caching hint to indicate whether that fragment is to be cached at the storage node, wherein a determination of whether to cache all of the plurality of fragments is based at least in part on: a source of the data object, a destination of the data object, and a size-range based policy.

### Claim 17 (depends on 16)

The method of claim 16, further comprising determining where to store an EC fragment in a storage hierarchy of the storage node based at least in part on the caching hint.

### Claim 18 (depends on 16)

The method of claim 16, further comprising passing an eviction hint from the storage node to one or more neighboring storage nodes.

### Claim 19 (depends on 16)

The method of claim 16, further comprising extracting the caching hint and to add the caching hint to a write operation to a memory coupled to the storage node.

### Claim 20 (depends on 16)

The method of claim 16, further comprising the plurality of storage nodes communicating via a network.

### Claim 21 (depends on 16)

The method of claim 16, further comprising generating the caching hint at a storage middleware logic.

### Claim 22

One or more non-transitory computer-readable medium comprising one or more instructions that when executed on at least one processor configure the at least one processor to perform one or more operations to:
generate a plurality of fragments of a data object to be Erasure Coded (EC) prior to storage at a storage node of a plurality of storage nodes,
wherein each of the plurality of fragments is to be transmitted with a caching hint to indicate whether that fragment is to be cached at the storage node, wherein a determination of whether to cache all of the plurality of fragments is to be based at least in part on: a source of the data object, a destination of the data object, and a size-range based policy.

### Claim 23 (depends on 22)

The one or more non-transitory computer-readable medium of claim 22, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to determine where to store an EC fragment in a storage hierarchy of the storage node based at least in part on the caching hint.

### Claim 24 (depends on 22)

The one or more non-transitory computer-readable medium of claim 22, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to pass an eviction hint from the storage node to one or more neighboring storage nodes.

### Claim 25 (depends on 22)

The one or more non-transitory computer-readable medium of claim 22, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to generate the caching hint at a storage middleware logic.
