# US 2016/0259802 A1 · Adaptive data striping and replication across multiple storage clouds for high availability and performance

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

- Number: US 2016/0259802 A1
- Document ID: US20160259802A1
- Status: Published application
- Kind: A1
- Application number: 15/157,043
- Filed: 2016-05-17
- Published: 2016-09-08
- Earliest claimed: 2012-12-14
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Jeffrey C. Sedayao; Sudip S. Chahal
- Web page: https://patentgrep.com/patent/US20160259802A1

## CPC

- G06F 16/162: {Delete operations (erasing in storage systems G06F3/0652)}
- G06F 3/0611: {in relation to response time}
- G06F 3/0643: {Management of files}
- G06F 3/0661: {Format or protocol conversion arrangements}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 16/134: {Distributed indices}
- G06F 16/184: {implemented as replicated file system}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Technologies for adaptively striping data across multiple storage clouds include receiving user constraints corresponding one or more cloud storage providers, receiving a file to be striped across the cloud storage providers, splitting the received file into file blocks, allocating each of the file blocks to a different one of the cloud storage providers as a function of the user constraints and operating conditions of each of the cloud storage providers, and sending each of the file blocks to the cloud storage provider to which each file block is allocated. In some embodiments, file blocks may be re-allocated from one cloud storage provider to another cloud storage provider as a function of changing user constraints or operating conditions. In addition, each of the file blocks may be retrieved from the cloud storage providers to re-assemble the file.

## Claims

### Claim 1

A computing device for re-assembling a file from a plurality of file blocks striped across a plurality of storage clouds, the computing device comprising:
a block location determination module to (i) determine that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled, and (ii) determine that a second cloud storage provider of a plurality of cloud storage providers is storing a second file block of the particular file to be re-assembled;
a file re-assembly module to (i) request the first file block from the first cloud storage provider, and (ii) request the second file block from the second cloud storage provider; and
a communication module to (i) receive the first file block from the first cloud storage provider, and (ii) receive the second file block from the second cloud storage provider,
wherein the file re-assembly module is further to re-assemble the particular file to be re-assembled from the received first and second file blocks.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the file re-assembly module further to determine whether the second file block of the particular file to be re-assembled exists.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein the block location determination module further to:
determine whether location metadata corresponding to the first file block is stored in a local metadata storage of the computing device; and
determine whether location metadata corresponding to the second file block is stored in the local metadata storage of the computing device.

### Claim 4 (depends on 3)

The computing device of claim 3, wherein the block location determination module further to:
request the location metadata corresponding to the first file block from a cloud resource allocation server in response to determining that the location metadata corresponding to the first file block is not stored in the local metadata storage of the computing device; and
request the location metadata corresponding to the second file block from the cloud resource allocation server in response to determining that the location metadata corresponding to the second file block is not stored in the local metadata storage of the computing device.

### Claim 5 (depends on 4)

The computing device of claim 4, wherein the block location determination module further to:
request the location metadata corresponding to the first file block from a second cloud resource allocation server to which the location metadata has been replicated; and
request the location metadata corresponding to the second file block from the second cloud resource allocation server to which the location metadata has been replicated.

### Claim 6 (depends on 4)

The computing device of claim 4, wherein to determine that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled comprises to determine that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled as a function of the location metadata corresponding to the first file block, and
wherein to determine that a second cloud storage provider of a plurality of cloud storage providers is storing the second file block comprises to determine that a second cloud storage provider of a plurality of cloud storage providers is storing the second file block as a function of the location metadata corresponding to the second file block.

### Claim 7 (depends on 3)

The computing device of claim 3, wherein the block location determination module further to:
determine, in response to determining that the location metadata corresponding to the first file block is stored in the local metadata storage, whether the location metadata corresponding to the first file block stored in the local metadata storage is outdated; and
request, in response to determining that the location metadata corresponding to the first file block stored in the local metadata storage is outdated, the location metadata corresponding to the first file block from a cloud resource allocation server.

### Claim 8 (depends on 1)

The computing device of claim 1, wherein the file reassembly module further to determine whether re-assembly metadata corresponding to the particular file to be re-assembled is stored in the local metadata storage of the computing device.

### Claim 9 (depends on 8)

The computing device of claim 8, wherein the file reassembly module further to request the re-assembly metadata corresponding to the particular file to be re-assembled from a cloud resource allocation server in response to determining that the re-assembly metadata corresponding to the particular file to be re-assembled is not stored in the local metadata storage of the computing device,
wherein to re-assemble the particular file to be re-assembled from the received first and second file blocks comprises to re-assemble the particular file to be re-assembled from the received first and second file blocks as a function of the re-assembly metadata.

### Claim 10

A method for re-assembling a file from a plurality of file blocks striped across a plurality of storage clouds by a computing device, the method comprising:
determining, by the computing device, that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled;
determining, by the computing device, that a second cloud storage provider of a plurality of cloud storage providers is storing a second file block of the particular file to be re-assembled;
requesting, by the computing device, the first file block from the first cloud storage provider;
requesting, by the computing device, the second file block from the second cloud storage provider;
receiving, by the computing device, the first file block from the first cloud storage provider;
receiving, by the computing device, the second file block from the second cloud storage provider; and
re-assembling, by the computing device, the particular file to be re-assembled from the received first and second file blocks.

### Claim 11 (depends on 10)

The method of claim 10, further comprising:
determining, by the computing device, whether location metadata corresponding to the first file block is stored in a local metadata storage of the computing device; and
determining, by the computing device, whether location metadata corresponding to the second file block is stored in the local metadata storage of the computing device.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
requesting, by the computing device, the location metadata corresponding to the first file block from a cloud resource allocation server in response to determining that the location metadata corresponding to the first file block is not stored in the local metadata storage of the computing device; and
requesting, by the computing device, the location metadata corresponding to the second file block from the cloud resource allocation server in response to determining that the location metadata corresponding to the second file block is not stored in the local metadata storage of the computing device.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
requesting, by the computing device, the location metadata corresponding to the first file block from a second cloud resource allocation server to which the location metadata has been replicated; and
requesting, by the computing device, the location metadata corresponding to the second file block from the second cloud resource allocation server to which the location metadata has been replicated.

### Claim 14 (depends on 12)

The method of claim 12, wherein determining that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled comprises determining that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled as a function of the location metadata corresponding to the first file block, and
wherein determining that a second cloud storage provider of a plurality of cloud storage providers is storing the second file block comprises determining that a second cloud storage provider of a plurality of cloud storage providers is storing the second file block as a function of the location metadata corresponding to the second file block.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
determining, by the computing device and in response to determining that the location metadata corresponding to the first file block is stored in the local metadata storage, whether the location metadata corresponding to the first file block stored in the local metadata storage is outdated; and
requesting, by the computing device and in response to determining that the location metadata corresponding to the first file block stored in the local metadata storage is outdated, the location metadata corresponding to the first file block from a cloud resource allocation server.

### Claim 16 (depends on 10)

The method of claim 10, further comprising determining, by the computing device, whether re-assembly metadata corresponding to the particular file to be re-assembled is stored in the local metadata storage of the computing device.

### Claim 17 (depends on 16)

The method of claim 16, further comprising requesting, by the computing device, the re-assembly metadata corresponding to the particular file to be re-assembled from a cloud resource allocation server in response to determining that the re-assembly metadata corresponding to the particular file to be re-assembled is not stored in the local metadata storage of the computing device,
wherein re-assembling the particular file to be re-assembled from the received first and second file blocks comprises re-assembling the particular file to be re-assembled from the received first and second file blocks as a function of the re-assembly metadata.

### Claim 18

One or more machine readable media comprising a plurality of instructions stored thereon that in response to being executed result in a computing device:
determining, by the computing device, that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled;
determining, by the computing device, that a second cloud storage provider of a plurality of cloud storage providers is storing a second file block of the particular file to be re-assembled;
requesting, the first file block from the first cloud storage provider;
requesting the second file block from the second cloud storage provider;
receiving the first file block from the first cloud storage provider;
receiving the second file block from the second cloud storage provider; and
re-assembling the particular file to be re-assembled from the received first and second file blocks.

### Claim 19 (depends on 18)

The one or more computer readable media of claim 18, wherein the plurality of instructions further result in the computing device:
determining whether location metadata corresponding to the first file block is stored in a local metadata storage of the computing device; and
determining whether location metadata corresponding to the second file block is stored in the local metadata storage of the computing device.

### Claim 20 (depends on 19)

The one or more computer readable media of claim 19, wherein the plurality of instructions further result in the computing device:
requesting the location metadata corresponding to the first file block from a cloud resource allocation server in response to determining that the location metadata corresponding to the first file block is not stored in the local metadata storage of the computing device; and
requesting the location metadata corresponding to the second file block from the cloud resource allocation server in response to determining that the location metadata corresponding to the second file block is not stored in the local metadata storage of the computing device.

### Claim 21 (depends on 20)

The one or more computer readable media of claim 20, wherein the plurality of instructions further result in the computing device:
requesting the location metadata corresponding to the first file block from a second cloud resource allocation server to which the location metadata has been replicated; and
requesting the location metadata corresponding to the second file block from the second cloud resource allocation server to which the location metadata has been replicated.

### Claim 22 (depends on 20)

The one or more computer readable media of claim 20, wherein determining that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled comprises determining that a first cloud storage provider of a plurality of cloud storage providers is storing a first file block of a particular file to be re-assembled as a function of the location metadata corresponding to the first file block, and
wherein determining that a second cloud storage provider of a plurality of cloud storage providers is storing the second file block comprises determining that a second cloud storage provider of a plurality of cloud storage providers is storing the second file block as a function of the location metadata corresponding to the second file block.

### Claim 23 (depends on 19)

The one or more computer readable media of claim 19, wherein the plurality of instructions further result in the computing device:
determining, in response to determining that the location metadata corresponding to the first file block is stored in the local metadata storage, whether the location metadata corresponding to the first file block stored in the local metadata storage is outdated; and
requesting, in response to determining that the location metadata corresponding to the first file block stored in the local metadata storage is outdated, the location metadata corresponding to the first file block from a cloud resource allocation server.

### Claim 24 (depends on 18)

The one or more computer readable media of claim 18, wherein the plurality of instructions further result in the computing device determining whether re-assembly metadata corresponding to the particular file to be re-assembled is stored in the local metadata storage of the computing device.

### Claim 25 (depends on 24)

The one or more computer readable media of claim 24, wherein the plurality of instructions further result in the computing device requesting the re-assembly metadata corresponding to the particular file to be re-assembled from a cloud resource allocation server in response to determining that the re-assembly metadata corresponding to the particular file to be re-assembled is not stored in the local metadata storage of the computing device,
wherein re-assembling the particular file to be re-assembled from the received first and second file blocks comprises re-assembling the particular file to be re-assembled from the received first and second file blocks as a function of the re-assembly metadata.
