# US 11,442,814 B2 · Variable number and size of put operations for storage backup

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

- Number: US 11,442,814 B2
- Document ID: US11442814B2
- Status: Granted
- Kind: B2
- Application number: 16/502,870
- Filed: 2019-07-03
- Published: 2019-10-24
- Granted: 2022-09-13
- Earliest claimed: 2016-01-13
- Assignees: NetApp, Inc.
- Applicants: NetApp, Inc.
- Inventors: John Keith Fullbright; Mark Duane Beaupre; Nilesh PradeepKumar Maheshwari
- Web page: https://patentgrep.com/patent/US11442814B2

## CPC

- G06F 11/1458: {Management of the backup or restore process}
- G06F 11/1446: Point-in-time backing up or restoration of persistent data
- G06F 16/113: {Details of archiving (lifecycle management in storage systems G06F3/0649; point-in-time backing up or restoration of persistent data G06F11/1446)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A plurality of data objects is generated from a data stream received for constructing a backup image. A stream size of the data stream is determined. For each multi-threaded put operation used to write a data object of the plurality of data objects to a cloud storage, a maximum number of threads is determined into which the data object can be separated into a number of parts for simultaneous transmission to the cloud storage. A part size of each part is determined. A number of multi-threaded put operations is determined for writing the plurality of data objects to the cloud storage based, at least in part, on the stream size, the maximum number of threads into which the data object can be separated, and the part size. The plurality of data objects is stored into the cloud storage using the number of multi-threaded put operations.

## Claims

### Claim 1

A method comprising:
receiving a data stream for constructing a backup image for a data set;
generating a data object from the data stream, wherein generating the data object comprises,
determining, for a put operation used to write the data object to a cloud storage, a number of threads for simultaneous transmission to the cloud storage; and
determining a number of multi-threaded put operations for writing the data object to the cloud storage according to the number of threads and a part size of data parts into which the data object is separated; and
storing the data object using the number of multi-threaded put operations into the cloud storage.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining the number of multi-threaded put operations comprises determining the number of multi-threaded put operations according to a stream size of the data stream.

### Claim 3 (depends on 1)

The method of claim 1, wherein the number of multi-threaded put operations comprises a stream size of the data stream divided by a part size of each data part divided by a maximum number of threads into which the data object can be separated.

### Claim 4 (depends on 1)

The method of claim 1, further comprising determining a part size of each data part in accordance with a maximum data object size that can be stored in the cloud storage.

### Claim 5 (depends on 1)

The method of claim 1, further comprising determining a part size of each data part in accordance with a stream size of the data stream.

### Claim 6 (depends on 1)

The method of claim 1, further comprising determining a part size of each data part in accordance with a maximum number of threads into which the data object can be separated.

### Claim 7 (depends on 1)

The method of claim 1, wherein determining the number of threads is performed in accordance with a size of a bandwidth of a connection to the cloud storage to store the backup image.

### Claim 8 (depends on 1)

The method of claim 1, wherein the data stream is received from a storage controller.

### Claim 9

A non-transitory machine readable medium having stored thereon instructions for performing a method comprising machine executable code which when executed by at least one machine, causes the machine to:
generate a data object from a data stream received for constructing a backup image for a data set;
determine a number of threads into which a multi-threaded put operation for simultaneous transmission to a cloud storage;
determine a number of multi-threaded put operations for writing the data object to the cloud storage in accordance with the number of threads into which the data object is separated and a stream size of the data stream; and
store the data object using the number of multi-threaded put operations into the cloud storage.

### Claim 10 (depends on 9)

The non-transitory machine-readable medium of claim 9, wherein the instructions to determine the number of multi-threaded put operations comprises instructions to determine the number of multi-threaded put operations in accordance with a part size of each part of a number of parts.

### Claim 11 (depends on 9)

The non-transitory machine-readable medium of claim 9, wherein the number of multi-threaded put operations comprises the stream size of the data stream divided by a part size of data part of the data object divided by a maximum number of threads into which the data object can be separated.

### Claim 12 (depends on 9)

The non-transitory machine-readable medium of claim 9, further comprising instructions to determine a data part size into which the data object is divided in accordance with a maximum size of the object that can be stored in the cloud storage.

### Claim 13 (depends on 9)

The non-transitory machine-readable medium of claim 9, further comprising instructions to determine a data part size into which the data object is divided in accordance with a stream size of the data stream.

### Claim 14 (depends on 9)

The non-transitory machine-readable medium of claim 9, further comprising instructions to determine a data part size into which the data object is divided in accordance with a maximum number of threads into which the data object can be separated.

### Claim 15 (depends on 9)

The non-transitory machine-readable medium of claim 9, further comprising instructions to determine a maximum number in accordance with a size of a bandwidth of a connection to the cloud storage to store the backup image.

### Claim 16 (depends on 9)

The non-transitory machine-readable medium of claim 9, further comprising instructions to receive the stream from a storage controller.

### Claim 17

A computing device comprising:
a memory containing non-transitory machine-readable medium comprising machine executable code having stored thereon instructions for performing a method of data backup; and
a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:
generate a data object from a data stream;
determine, for each multi-threaded put operation used to write the data object to a cloud storage, a number of threads into which the data object is separated for simultaneous transmission to the cloud storage, wherein the number of threads is determined in accordance with a bandwidth of a connection to the cloud storage;
determine a number of multi-threaded put operations for writing the data object to the cloud storage in accordance with the number of threads into which the data object is separated; and
store the data object using the number of multi-threaded put operations into the cloud storage.

### Claim 18 (depends on 17)

The computing device of claim 17, wherein the number of multi-threaded put operations comprises a stream size of the data stream divided by a part size of data parts of the data object divided by a maximum number of threads into which the data object can be separated.

### Claim 19 (depends on 17)

The computing device of claim 17, wherein the code executable by the processor to cause the processor to generate the data object comprises code to:
determine the bandwidth of the connection to the cloud storage to store a backup image.

### Claim 20 (depends on 17)

The computing device of claim 17, further comprising code executable by the processor to cause the processor to determine a data part size of data parts into which the data object is divided in accordance with a maximum size of the data object, a stream size, and a maximum number of threads into which the data object can be separated.
