Transmission time refinement in a storage system
First Claim
1. A system, comprising:
- a storage system comprising a plurality of storage devices, wherein the storage system is configured to store a plurality of data objects according to an erasure encoding technique, wherein each respective data object of the plurality of data objects is stored as a shard group, wherein shards of a respective shard group include respective pluralities of blocks such that blocks of the respective data object can be reconstructed from a particular number of corresponding blocks of the data object from a particular number of storage devices, and wherein each shard of the shard group is stored on a different one of the plurality of storage devices than any other shard of the shard group; and
a storage manager implemented by one or more hardware processors and configured to;
receive a request from a client for one of the plurality of data objects;
maintain connections to a connection group of the storage devices that store respective shards of the data object, wherein the connection group includes a greater number of storage devices than the particular number of storage devices needed to reconstruct blocks of the requested data object;
request corresponding blocks of the data object from a request group of the storage devices of the connection group, wherein the request group is a subset of the connection group having fewer than all the storage devices of the connection group and having at least the particular number of the storage devices;
evaluate, based at least in part on performance criteria, performance of the storage devices of the request group in sending the corresponding blocks of the data object;
modify, based at least in part on evaluating the performance of the request group, membership of the request group to form a new request group using at least one different storage device of the connection group;
request subsequent corresponding blocks of the data object from the new request group;
in response to receiving at least the particular number of corresponding blocks from the storage devices of the request group, decode the particular number of corresponding blocks into a reconstructed block of the data object; and
return the reconstructed block of the data object to the client.
1 Assignment
0 Petitions
Accused Products
Abstract
A storage manager may be used to perform a decoding operation using a transmission time refinement technique on a data object stored in a storage system, such as an object-redundant storage system. The decoding operation may include requesting groups of corresponding blocks from storage devices of the storage system. The storage manager may maintain connections to a connection group of the storage devices and may iteratively request corresponding blocks of the data object from one or more various request groups of the storage devices of the connection group. The storage manager may evaluate performance of the request groups in sending the corresponding blocks of the data object and may modify the membership of the request groups for requests for subsequent blocks of the data object based at least in part on the performance of the request groups.
-
Citations
21 Claims
-
1. A system, comprising:
-
a storage system comprising a plurality of storage devices, wherein the storage system is configured to store a plurality of data objects according to an erasure encoding technique, wherein each respective data object of the plurality of data objects is stored as a shard group, wherein shards of a respective shard group include respective pluralities of blocks such that blocks of the respective data object can be reconstructed from a particular number of corresponding blocks of the data object from a particular number of storage devices, and wherein each shard of the shard group is stored on a different one of the plurality of storage devices than any other shard of the shard group; and a storage manager implemented by one or more hardware processors and configured to; receive a request from a client for one of the plurality of data objects; maintain connections to a connection group of the storage devices that store respective shards of the data object, wherein the connection group includes a greater number of storage devices than the particular number of storage devices needed to reconstruct blocks of the requested data object; request corresponding blocks of the data object from a request group of the storage devices of the connection group, wherein the request group is a subset of the connection group having fewer than all the storage devices of the connection group and having at least the particular number of the storage devices; evaluate, based at least in part on performance criteria, performance of the storage devices of the request group in sending the corresponding blocks of the data object; modify, based at least in part on evaluating the performance of the request group, membership of the request group to form a new request group using at least one different storage device of the connection group; request subsequent corresponding blocks of the data object from the new request group; in response to receiving at least the particular number of corresponding blocks from the storage devices of the request group, decode the particular number of corresponding blocks into a reconstructed block of the data object; and return the reconstructed block of the data object to the client. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method, comprising:
performing, by one or more computers; receiving a request from a client for a data object stored at a storage system according to an erasure encoding technique, wherein blocks of the data object can be reconstructed from a particular number of corresponding blocks from a particular number of storage devices of the storage system; maintaining connections to a connection group of the storage devices, wherein the connection group includes a greater number of storage devices than the particular number of storage devices needed to reconstruct blocks of the data object; requesting corresponding blocks of the data object from a request group of the storage devices of the connection group, wherein the request group is a subset of the connection group having fewer than all the storage devices of the connection group and having at least the particular number of the storage devices; evaluating, based at least in part on performance criteria, performance of the storage devices of the request group in sending the corresponding blocks of the data object; modifying membership of the request group to form a new request group using at least one different storage device of the connection group; and requesting subsequent corresponding blocks of the data object from the new request group. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14)
-
15. A non-transitory, computer-readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to:
implement a storage manager configured to; receive a request from a client for a data object stored at a storage system according to an erasure encoding technique, wherein blocks of the data object can be reconstructed from a particular number of corresponding blocks from a particular number of storage devices of the storage system; maintain connections to a connection group of the storage devices, wherein the connection group includes a greater number of storage devices than the particular number of storage devices needed to reconstruct blocks of the data object; request corresponding blocks of the data object from a request group of the storage devices of the connection group, wherein the request group is a subset of the connection group having fewer than all the storage devices of the connection group and having at least the particular number of the storage devices; evaluate, based at least in part on performance criteria, performance of the storage devices of the request group in sending the corresponding blocks of the data object; and modify membership of the request group to form a new request group using at least one different connection of the connection group; and request subsequent corresponding blocks of the data object from the new request group. - View Dependent Claims (16, 17, 18, 19, 20, 21)
Specification