# US 11,307,781 B2 · Managing replicas of content in storage systems

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

- Number: US 11,307,781 B2
- Document ID: US11307781B2
- Status: Granted
- Kind: B2
- Application number: 16/720,661
- Filed: 2019-12-19
- Published: 2021-06-24
- Granted: 2022-04-19
- Earliest claimed: 2019-12-19
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: David Zafman; Brett Niver; Neha Ojha; Joshua Durgin; Adam Kupczyk
- Web page: https://patentgrep.com/patent/US11307781B2

## CPC

- G06F 3/0632: {by initialisation or re-initialisation of storage systems}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- 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 3/0673: {Single storage device}
- G06N 20/00: Machine learning
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Replicas of content can be managed in storage systems. In one example, a storage system can determine an amount of load on the storage system based on values for performance metrics indicating a performance of the storage system. Next, the storage system can determine that the storage system is to have a target number of replicas of content based on the amount of load on the storage system. The storage system can then adjust itself to have the target number of replicas of the content.

## Claims

### Claim 1

A storage system comprising:
a processor; and
a memory including instructions executable by the processor for causing the processor to:
determine a group of candidate performance metrics;
determine relationships between the group of candidate performance metrics and storage-system load by performing a regression analysis in which the group of candidate performance metrics serve as independent variables and the storage-system load serves as a dependent variable, wherein the relationships indicate that a first performance metric in the group of candidate performance metrics has a greater influence on the storage-system load than a second performance metric in the group of candidate performance metrics;
select, based on the relationships, the first performance metric from among the group of candidate performance metrics for use in determining an amount of load on the storage system;
determine the amount of load on the storage system based on a value for the first performance metric indicating a performance of the storage system;
determine, based on the amount of load on the storage system, a numerical value representing a total number of replicas of content that are to be present in the storage system; and
adjust the storage system to have the total number of replicas of the content.

### Claim 2 (depends on 1)

The storage system of claim 1, wherein the memory further includes instructions executable by the processor for causing the processor to adjust the storage system to have the total number of replicas by adding a particular number of replicas of the content to the storage system, the particular number of replicas being equal to a difference between a current number of replicas of the content in the storage system and the total number of replicas of the content, the total number of replicas being more than the current number of replicas.

### Claim 3 (depends on 1)

The storage system of claim 1, wherein the memory further includes instructions executable by the processor for causing the processor to:
receive a write request for updating the content;
in response to receiving the write request:
determine that a group of replicas of the content in the storage system is to be updated asynchronously based on the amount of load on the storage system; and
update the group of replicas in the storage system asynchronously.

### Claim 4 (depends on 3)

The storage system of claim 3, wherein the group of replicas is a first group of replicas, and wherein the memory further includes instructions executable by the processor for causing the processor to, in response to receiving the write request:
determine that a second group of replicas of the content in the storage system is to be updated synchronously based on the amount of load on the storage system, the second group of replicas being different from the first group of replicas; and
update the second group of replicas in the storage system synchronously.

### Claim 5 (depends on 1)

The storage system of claim 1, wherein the memory further includes instructions executable by the processor for causing the processor to adjust the storage system to have the total number of replicas by removing a particular number of replicas of the content from the storage system, the particular number of replicas being equal to a difference between a current number of replicas of the content in the storage system and the total number of replicas of the content, the total number of replicas being less than the current number of replicas.

### Claim 6 (depends on 1)

The storage system of claim 1, wherein the first performance metric includes a load average associated with the storage system, a queue depth associated with the storage system, a tail latency associated with the storage system, or an amount of background activity associated with the storage system.

### Claim 7 (depends on 1)

The storage system of claim 1, wherein the memory further includes instructions executable by the processor for causing the processor to repeatedly and dynamically adjust how many replicas of the content are stored in the storage system over a timespan based on values for the first performance metric at different points in time during the timespan.

### Claim 8 (depends on 1)

The storage system of claim 1, wherein the memory further includes instructions executable by the processor for causing the processor to determine the total number of replicas by supplying the amount of load as input to a machine-learning model and receiving the total number of replicas as output from the machine-learning model.

### Claim 9 (depends on 8)

The storage system of claim 8, wherein the machine-learning model is trained using a training dataset comprising input-output pairs, each of the input-output pairs including (i) a respective load amount as input and (ii) a corresponding target number of replicas as output.

### Claim 10

A method comprising:
determining, by a processor, a group of candidate performance metrics;
determining, by the processor, relationships between the group of candidate performance metrics and storage-system load by performing a regression analysis in which the group of candidate performance metrics serve as independent variables and the storage-system load serves as a dependent variable, wherein the relationships indicate that a first performance metric in the group of candidate performance metrics has a greater influence on the storage-system load than a second performance metric in the group of candidate performance metrics;
selecting, by the processor and based on the relationships, the first performance metric from among the group of candidate performance metrics for use in determining an amount of load on a storage system;
determining, by the processor, the amount of load on the storage system based on a value for the first performance metric indicating a performance of the storage system;
determining, by the processor and based on the amount of load on the storage system, a numerical value representing a total number of replicas of content that are to be present in the storage system; and
adjusting, by the processor, the storage system to have the total number of replicas of the content.

### Claim 11 (depends on 10)

The method of claim 10, further comprising adjusting the storage system to have the total number of replicas by adding a particular number of replicas of the content to the storage system, the particular number of replicas being equal to a difference between a current number of replicas of the content in the storage system and the total number of replicas of the content, the total number of replicas being more than the current number of replicas.

### Claim 12 (depends on 10)

The method of claim 10, further comprising:
receiving a write request for updating the content; and
in response to receiving the write request:
determining that a first group of replicas of the content in the storage system is to be updated asynchronously;
determining that a second group of replicas of the content in the storage system is to be updated synchronously, the second group of replicas being different from the first group of replicas; and
updating the first group of replicas in the storage system asynchronously and the second group of replicas in the storage system synchronously.

### Claim 13 (depends on 10)

The method of claim 10, further comprising adjusting the storage system to have the total number of replicas by removing a particular number of replicas of the content from the storage system, the particular number of replicas being equal to a difference between a current number of replicas of the content in the storage system and the total number of replicas of the content, the total number of replicas being less than the current number of replicas.

### Claim 14 (depends on 10)

The method of claim 10, wherein the first performance metric includes a load average associated with the storage system, a queue depth associated with the storage system, a tail latency associated with the storage system, or an amount of background activity associated with the storage system.

### Claim 15 (depends on 10)

The method of claim 10, further comprising determining the total number of replicas by supplying the amount of load as input to a machine-learning model and receiving the total number of replicas as output from the machine-learning model.

### Claim 16 (depends on 15)

The method of claim 15, wherein the machine-learning model is trained using a training dataset comprising input-output pairs, each of the input-output pairs including (i) a respective load amount as input and (ii) a corresponding target number of replicas as output.

### Claim 17

A non-transitory computer-readable medium comprising program code that is executable by a processor for causing the processor to:
determine a group of candidate performance metrics;
determine relationships between the group of candidate performance metrics and storage-system load by performing a regression analysis in which the group of candidate performance metrics serve as independent variables and the storage-system load serves as a dependent variable, wherein the relationships indicate that a first performance metric in the group of candidate performance metrics has a greater influence on the storage-system load than a second performance metric in the group of candidate performance metrics;
select, based on the relationships, the first performance metric from among the group of candidate performance metrics for use in determining an amount of load on the storage system;
determine the amount of load on the storage system based on a value for the first performance metric indicating a performance of the storage system;
determine, based on the amount of load on the storage system, a numerical value representing a total number of replicas of content that are to be present in the storage system; and
adjust the storage system to have the total number of replicas of the content.

### Claim 18 (depends on 17)

The non-transitory computer-readable medium of claim 17, further comprising program code that is executable by the processor for causing the processor to:
receive a write request for updating the content;
in response to receiving the write request:
determine that a group of replicas of the content in the storage system is to be updated asynchronously based on the amount of load on the storage system; and
update the group of replicas in the storage system asynchronously.

### Claim 19 (depends on 18)

The non-transitory computer-readable medium of claim 18, wherein the group of replicas is a first group of replicas, and further comprising program code that is executable by the processor for causing the processor to, in response to receiving the write request:
determine that a second group of replicas of the content in the storage system is to be updated synchronously based on the amount of load on the storage system, the second group of replicas being different from the first group of replicas; and
update the second group of replicas in the storage system synchronously.

### Claim 20 (depends on 17)

The non-transitory computer-readable medium of claim 17, further comprising program code that is executable by the processor for causing the processor to determine the total number of replicas by supplying the amount of load as input to a machine-learning model and receiving the total number of replicas as output from the machine-learning model.
