# US 11,115,056 B2 · Location selection based on erasure code techniques

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

- Number: US 11,115,056 B2
- Document ID: US11115056B2
- Status: Granted
- Kind: B2
- Application number: 16/006,376
- Filed: 2018-06-12
- Published: 2019-12-12
- Granted: 2021-09-07
- Earliest claimed: 2018-06-12
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Sasikanth Eda; Poornima Gupte; Sukumar Vankadhara; Sandeep Ramesh Patil
- Web page: https://patentgrep.com/patent/US11115056B2

## CPC

- H03M 13/154: {Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial}
- 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 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- H03M 13/35: Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M 13/1515: {Reed-Solomon codes}
- 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)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems for location selection based on erasure code techniques are provided. One system includes a monitor module that monitors data speed characteristics for one or more locations on a storage device. Additionally, the system includes a classification module that determines an erasure code technique for an application, wherein data associated with the application is stored on a storage device. Also, the system includes a selection module that selects a location in one or more locations for storing data based on monitored data speed characteristics and a determined erasure code technique.

## Claims

### Claim 1

A system comprising:
a disk drive comprising a plurality of storage disks implementing a Random Array of Independent Disks (RAID) storage device configuration, wherein:
each storage disk of the plurality of storage disks in the disk drive includes at least an inner storage track and an outer storage track for storing data,
at least one storage disk in the plurality of storage disks includes a fast storage disk, and
at least one storage disk in the plurality of storage disks includes a slow storage disk,
a monitor module that:
monitors data speed characteristics for each storage location of a plurality of storage locations positioned on each storage disk in the plurality of storage disks of the disk drive, and
determines a current data transfer speed for each storage location of the plurality of storage locations positioned on the plurality of storage disks based on the monitored data speed characteristics for each storage location, wherein:
each storage location is positioned on a storage track of a storage disk comprising one of:
the outer storage track positioned on any storage disk of the plurality of storage disks,
the inner storage track positioned on any storage disk of the plurality of storage disks,
any storage track positioned on the fast storage disk,
any storage track positioned on the slow storage disk,
the outer storage track positioned on the slow storage disk,
the inner storage track positioned on the slow storage disk,
the outer storage track positioned on the fast storage disk, and
the inner storage track positioned on the fast storage disk, and
storage locations positioned on the outer storage track of each storage disk include faster data transfer speeds than storage locations positioned on the inner storage track of the same storage disk, and
determines data transfer speed differences between each different storage location in the plurality of storage locations positioned on the plurality of storage disks of the disk drive;
a classification module that determines each erasure code technique of a plurality of erasure code techniques associated with each data chunk of a plurality of data chunks; and
a selection module that selects a storage location in the plurality of storage locations on the plurality of storage disks of the disk drive for storing each data chunk based on a correlation of the current data transfer speed of each storage location and an erasure code technique associated with each respective data chunk, wherein:
the current data transfer speed of each storage location in the plurality of storage locations on the plurality of storage disks of the disk drive corresponds to a data transfer speed of a plurality of data transfer speeds,
each erasure code technique in the plurality of erasure code techniques is associated with one of the data transfer speeds in the plurality of data transfer speeds,
at least two erasure code techniques include different data transfer speeds in the plurality of data transfer speeds, and
the selected storage location is selected based on an intersection of the current data transfer speed determined for the storage location, the erasure code technique associated with a data chunk for storage at the selected storage location, and a data transfer speed difference between the selected storage location and at least one other storage location in the disk drive.

### Claim 2 (depends on 1)

The system of claim 1, wherein the monitor module further monitors a quantity of consumed storage locations in the plurality of storage locations when storing valid data.

### Claim 3 (depends on 1)

The system of claim 1, wherein the classification module classifies each data chunk as including a data segment or as including a parity segment.

### Claim 4 (depends on 3)

The system of claim 3, wherein:
the selected storage location for the data segment is a first selected storage location;
the selected storage location for the parity segment is a second selected storage location;
the first selected storage location includes a faster data transfer speed than the second selected storage location; and
data segments are stored at faster storage locations than parity segments.

### Claim 5 (depends on 1)

The system of claim 1, wherein the classification module assigns the erasure code technique based on information stored in an erasure code techniques database.

### Claim 6 (depends on 1)

The system of claim 1, further comprising a disk statistics module that saves the plurality of data transfer speeds.

### Claim 7 (depends on 6)

The system of claim 6, wherein the disk statistics module updates the plurality of data transfer speeds in response to the data chunk being saved to the selected storage location.

### Claim 8 (depends on 1)

The system of claim 1, wherein the plurality of storage disks of the disk drive implement a declustered RAID storage device configuration.

### Claim 9 (depends on 1)

The system of claim 1, wherein the plurality of storage disks of the disk drive implement a conventional RAID storage device configuration.

### Claim 10

A method, comprising:
monitoring data transfer speeds for each storage location of a plurality of storage locations located on a plurality of storage disks of a disk drive, wherein:
the disk drive comprises a plurality of storage disks implementing a Random Array of Independent Disks (RAID) storage device configuration,
each storage disk of the plurality of storage disks in the RAID storage device configuration includes at least an inner storage track and an outer storage track for storing data,
at least one storage disk in the plurality of storage disks includes a fast storage disk, and
at least one storage disk in the plurality of storage disks includes a slow storage disk;
determining a current data transfer speed for each storage location of the plurality of storage locations positioned on the plurality of storage disks based on the monitored data speed characteristics for each storage location, wherein:
each storage location is positioned on a storage track of a storage disk comprising one of:
the outer storage track located on any storage disk of the plurality of storage disks,
the inner storage track located on any storage disk of the plurality of storage disks,
any storage track located on the fast storage disk,
any storage track located on the slow storage disk,
the outer storage track located on the slow storage disk,
the inner storage track located on the slow storage disk,
the outer storage track located on the fast storage disk, and
the inner storage track located on the fast storage disk, and
storage locations located on the outer storage track of each storage disk include faster data transfer speeds than storage locations located on the inner storage track of the same storage disk;
determining data transfer speed differences between each different storage location in the plurality of storage locations located on the plurality of storage disks of the disk drive;
identifying an erasure code technique of a plurality of erasure code techniques associated with a current data chunk of a plurality of data chunks; and
writing the current data chunk to a selected storage location in the plurality of storage locations on the plurality of storage disks of the disk drive,
wherein:
each erasure code technique in the plurality of erasure code techniques is associated with a data transfer speed of a plurality of data transfer speeds,
at least two erasure code techniques include different data transfer speeds of the plurality of data transfer speeds, and
the selected storage location is selected based on an intersection of the current data transfer speed determined for the selected storage location, the erasure code technique associated with the current data chunk, and a data transfer speed difference between the selected storage location and at least one other storage location in the disk drive.

### Claim 11 (depends on 10)

The method of claim 10, further comprising monitoring a quantity of consumed storage locations in the plurality of storage locations when storing valid data.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
updating the data transfer speeds for the monitored quantity of consumed storage locations in the plurality of storage locations on the plurality of storage disks of the disk drive; and
updating the data transfer speed differences for the monitored quantity of consumed storage locations in the plurality of storage locations on the plurality of storage disks of the disk drive in response to the current data chunk being written to the selected storage location.

### Claim 13 (depends on 10)

The method of claim 10, further comprising classifying the current data chunk as including a data segment or as including a parity segment.

### Claim 14 (depends on 13)

The method of claim 13, wherein:
the selected storage location for the data segment is a first selected storage location;
the selected storage location for the parity segment is a second selected storage location;
the first selected storage location includes a faster data transfer speed than the second selected storage location; and
data segments are stored at faster storage locations than parity segments.

### Claim 15 (depends on 10)

The method of claim 10, wherein identifying the erasure code technique comprises determining the erasure code technique based on information stored in an erasure code techniques database.

### Claim 16

A computer program product comprising a computer-readable storage medium including program instructions embodied therewith, the program instructions executable by a processor to cause the processor to:
monitor data transfer speeds for each storage location of a plurality of storage locations positioned on a plurality of storage disks of a disk drive, wherein:
the disk drive comprises a plurality of storage disks implementing a Random Array of Independent Disks (RAID) storage device configuration,
each storage disk of the plurality of storage disks in the RAID storage device configuration includes at least an inner storage track and an outer storage track for storing data,
at least one storage disk in the plurality of storage disks includes a fast storage disk, and
at least one storage disk in the plurality of storage disks includes a slow storage disk;
determine a current data transfer speed for each storage location of the plurality of storage locations positioned on the plurality of storage disks based on the monitored data speed characteristics for each storage location, wherein:
each storage location is positioned on a storage track of a storage disk comprising one of:
the outer storage track positioned on any storage disk of the plurality of storage disks,
the inner storage track positioned on any storage disk of the plurality of storage disks,
any storage track positioned on the fast storage disk,
any storage track positioned on the slow storage disk,
the outer storage track positioned on the slow storage disk,
the inner storage track positioned on the slow storage disk,
the outer storage track positioned on the fast storage disk, and
the inner storage track positioned on the fast storage disk, and
storage locations positioned on the outer storage track of each storage disk include faster data transfer speeds than storage locations positioned the inner storage track of the same storage disk;
determine data transfer speed differences between each different storage location in the plurality of storage locations positioned on the plurality of storage disks of the disk drive;
identify an erasure code technique associated with a current data chunk of a plurality of data chunks; and
write the current data chunk to a selected storage location in the plurality of storage locations,
wherein:
each erasure code technique in the plurality of erasure code techniques is associated with a data transfer speed of a plurality of data transfer speeds,
at least two erasure code techniques include different data transfer speeds of the plurality of data transfer speeds, and
the selected storage location is selected based on an intersection of the current data transfer speed determined for the selected storage location, the erasure code technique associated with the current data chunk, and a data transfer speed difference between the selected storage location and at least one other storage location in the disk drive.

### Claim 17 (depends on 16)

The computer program product of claim 16, the program instructions further causing the processor to:
monitor a quantity of consumed storage locations in the plurality of storage locations when storing valid data;
update the data transfer speeds for the monitored quantity of consumed storage locations in the plurality of storage locations; and
update the data transfer speed differences for the monitored quantity of consumed storage locations in the plurality of storage locations in response to the current data chunk being written to the selected storage location.

### Claim 18 (depends on 16)

The computer program product of claim 16, the program instructions further causing the processor to classify the data chunk as including a data segment or as including a parity segment.

### Claim 19 (depends on 18)

The computer program product of claim 18, wherein:
the selected storage location for the data segment is a first selected storage location;
the selected storage location for the parity segment is a second selected storage location;
the first selected storage location includes a faster data transfer speed than the second selected storage location; and
data segments are stored at faster storage locations than parity segments.

### Claim 20 (depends on 16)

The computer program product of claim 16, the program instructions further causing the processor to determine the erasure code technique from an erasure code techniques database.
