# US 10,481,978 B2 · Optimal slice encoding strategies within a dispersed storage unit

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

- Number: US 10,481,978 B2
- Document ID: US10481978B2
- Status: Granted
- Kind: B2
- Application number: 15/402,551
- Filed: 2017-01-10
- Published: 2017-10-05
- Granted: 2019-11-19
- Earliest claimed: 2016-03-29
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Jason K. Resch
- Web page: https://patentgrep.com/patent/US10481978B2

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/064: {Management of blocks}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1092: {Rebuilding, e.g. when physically replacing a failing disk}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS], H04L67/1097)}
- G06F 11/3051: {Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs (verification or detection of system hardware configuration G06F11/2247)}
- G06F 11/3684: {for test design, e.g. generating new test cases}
- G06F 11/3688: {for test execution, e.g. scheduling of test suites}
- G06F 11/3692: {for test results analysis}
- H03M 13/1515: {Reed-Solomon codes}
- H03M 13/616: {Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 2201/805: Real-time
- G06F 2201/82: Solving problems relating to consistency
- H03M 13/373: {with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon 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)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method for storing data in a plurality of dispersed storage units of a dispersed storage network (DSN) includes receiving an encoded data slice at a first dispersed storage unit of the DSN and determining whether to apply an additional encoding operation to the encoded data slice based on on information relating to the encoded data slice, the storage vault and an underlying memory device. The method continues with the first dispersed storage unit applying the additional encoding operation to create a modified first encoded first encoded data slice and marking the modified first encoded data slice to identify the additional encoding operation used.

## Claims

### Claim 1

A method for storing data in a dispersed storage network, the dispersed storage network including a plurality of dispersed storage units comprising:
receiving a first encoded data slice at a first dispersed storage unit of the plurality of dispersed storage units;
determining, by the first dispersed storage unit, whether to apply a first additional encoding operation to the first encoded data slice, wherein the determining is based on information relating to at least one of the first encoded data slice, a vault, or an underlying memory device, and
applying the first additional encoding operation to create a modified first encoded data slice, wherein the applying the first additional encoding operation includes marking the modified first encoded data slice with information sufficient to identify the first additional encoding operation.

### Claim 2 (depends on 1)

The method of claim 1 wherein the information relating to at least one of the first encoded data slice, a vault or an underlying memory device includes at least one of a vault ID, a requesting entity ID, a data type indicator, a data size indicator, the first encoded data slice name, an analysis of the first encoded data slice, a local memory type indicator, a level of available processing resources.

### Claim 3 (depends on 1)

The method of claim 1 wherein the first additional encoding operation includes at least one of compression encoding, encryption encoding and data slice meta data encoding.

### Claim 4 (depends on 1)

The method of claim 1 further including:
determining by the first dispersed storage unit whether to apply a second additional encoding operation to the modified first encoded data slice;
in response to a determination to apply the second additional encoding operation to the modified first encoded data slice, applying the second additional encoding operation to the modified first encoded data slice to create a twice modified first encoded data slice; and
marking the twice modified first encoded data slice with information sufficient to identify the second additional encoding operation and information sufficient to identify an order in which the first additional encoding operation and second additional encoding operation were applied.

### Claim 5 (depends on 4)

The method of claim 4 wherein the determining whether to apply the second additional encoding operation to the modified first encoded data slice is further based on information regarding the first additional encoding operation applied to the first encoded data slice.

### Claim 6 (depends on 1)

The method of claim 1 wherein determining by the first dispersed storage unit whether to apply the first additional encoding operation to the first encoded data slice includes determining whether to apply compression coding based on storage gains for the first dispersed storage unit and CPU cycle costs to the first dispersed storage unit.

### Claim 7 (depends on 1)

The method of claim 1 wherein determining by the first dispersed storage unit whether to apply the first additional encoding operation to the first encoded data slice includes determining whether to apply encryption encoding based on whether or not the first encoded data slice is already encrypted.

### Claim 8 (depends on 1)

The method of claim 1 wherein determining by the first dispersed storage unit whether to apply the first additional encoding operation to the first encoded data slice includes determining whether to apply meta-data encoding based on whether meta-data is already stored for the data slice in the first dispersed storage unit.

### Claim 9 (depends on 4)

The method of claim 4 further including
storing the twice modified first encoded data slice in the first dispersed storage unit;
receiving a request to read the twice modified first encoded data slice from the first dispersed storage unit; and
in response to the request, decoding the first additional encoding and second additional encoding based on the first additional encoding operation applied to the first encoded data slice and second additional encoding operation applied to the modified first encoded data slice and based on the order in which the first additional encoding operation and second additional encoding operation were applied.

### Claim 10

A first dispersed storage unit for storing data in a dispersed storage network, the dispersed storage network including a plurality of dispersed storage units, the first dispersed storage unit comprising:
an communications interface;
a memory; and
a computer processor;
where the memory includes instructions for causing the processor to:
receive a first encoded data slice at a first dispersed storage unit of the plurality of dispersed storage units;
determine whether to apply a first additional encoding operation to the first encoded data slice, wherein the determining is based on information relating to at least one of the first encoded data slice, a vault, or an underlying memory device, and
apply the first additional encoding operation to create a modified first encoded data slice, wherein the applying the first additional encoding operation includes marking the modified first encoded data slice with information sufficient to identify the first additional encoding operation.

### Claim 11 (depends on 10)

The first dispersed storage unit of claim 10 wherein the information relating to at least one of the first encoded data slice, a vault or an underlying memory device includes at least one of a vault ID, a requesting entity ID, a data type indicator, a data size indicator, the first encoded data slice name, an analysis of the first encoded data slice, a local memory type indicator, a level of available processing resources.

### Claim 12 (depends on 10)

The first dispersed storage unit of claim 10 wherein the first additional encoding operation includes at least one of compression encoding, encryption encoding and data slice meta data encoding.

### Claim 13 (depends on 10)

The first dispersed storage unit of claim 10 further including instructions for causing the processor to:
determine by the first dispersed storage unit whether to apply a second additional encoding operation to the modified first encoded data slice;
in response to a determination to apply the second additional encoding operation to the modified first encoded data slice, apply the second additional encoding operation to the modified first encoded data slice create a twice modified first encoded data slice; and
mark the twice modified first encoded data slice with information sufficient to identify the second additional encoding operation and information sufficient to identify an order in which the first additional encoding operation and second additional encoding operation were applied.

### Claim 14 (depends on 13)

The first dispersed storage unit of claim 13 wherein instructions for causing the processor to determine whether to apply the second additional encoding operation to the modified first encoded data slice includes instructions regarding the first additional encoding operation applied to the first encoded data slice.

### Claim 15 (depends on 12)

The first dispersed storage unit of claim 12 wherein instructions for causing the processor to determine whether to apply the first additional encoding operation to the first encoded data slice includes instructions for causing the processor to determine whether to apply compression coding based on storage gains for the first dispersed storage unit and CPU cycle costs for the first dispersed storage unit.

### Claim 16 (depends on 10)

The first dispersed storage unit of claim 10 wherein instructions for causing the processor to determine whether to apply the first additional encoding operation to the first encoded data slice includes instructions for causing the processor to determine whether to apply encryption encoding based on whether or not the first encoded data slice is already encrypted.

### Claim 17 (depends on 10)

The first dispersed storage unit of claim 10 wherein instructions for causing the processor to determine whether to apply the first additional encoding operation to the first encoded data slice includes instructions for causing the processor to determine whether to apply meta-data encoding based on whether meta-data is already stored for the data slice in the first dispersed storage unit.

### Claim 18 (depends on 13)

The first dispersed storage unit of claim 13 further including instructions for causing the processor to:
store the twice modified first encoded data slice in the memory;
receive a request via the interface to read the twice modified first encoded data slice from the memory; and
in response to the request, decode the twice modified first encoded data slice based on the first additional encoding operation applied to the first encoded data slice and second additional encoding operation applied to the modified first encoded data slice and based on the order in which the first additional encoding operation and second additional encoding operation were applied.
