Alternate storage arrangement in a distributed data storage system with key-based addressing
First Claim
1. A method for writing data to a plurality of storage devices, comprising:
- executing at least one writing entity within a corresponding one of a plurality of hosts,wherein each host of the plurality of hosts has access to a shared storage pool;
wherein the shared storage pool includes a plurality of chunk stores that manage storage of chunks to, and retrieval of chunks from, the plurality of storage devices;
receiving a request from the at least one writing entity to write particular data to the shared storage pool;
in response to the request, writing the particular data as a stripe across a subset of the plurality of storage devices;
assigning a particular container name to the stripe;
wherein the particular container name is independent of physical storage identifiers and logical block addresses;
wherein writing the particular data as a stripe across the plurality of chunk stores comprises;
generating a plurality of chunks for the stripe, wherein the particular data is contained within the plurality of chunks;
based on the particular container name, indexing into a layout table to retrieve an entry;
determining, from the entry, a target subset of the plurality of chunk stores;
sending each chunk, of the plurality of chunks, to a distinct chunk store from the target subset;
wherein the layout table is configured to ensure that no two chunks of the plurality of chunks are sent to the same chunk store of the plurality of chunk stores;
receiving a request for target data that belongs to the stripe, wherein the request includes the particular container name;
based on the particular container name, indexing into the layout table to locate the entry;
based on the entry, determining the target subset of the plurality of chunk stores; and
retrieving the target data from one or more chunk stores of the target subset.
4 Assignments
0 Petitions
Accused Products
Abstract
In a Distributed Virtual Array data storage system, data chunks making up data containers and identified by keys, which are independent of physical storage locations, are written in storage devices according to layouts specified in a layout data structure. When any of the storage devices becomes inaccessible, the chunks nominally designated to be written in the inaccessible storage devices are instead written to alternate devices. Information indicating writing to an alternate device may be included in or along with such chunks so as to make them easily identifiable during later reconstruction or re-writing to the intended storage device when it again becomes available.
-
Citations
28 Claims
-
1. A method for writing data to a plurality of storage devices, comprising:
-
executing at least one writing entity within a corresponding one of a plurality of hosts, wherein each host of the plurality of hosts has access to a shared storage pool; wherein the shared storage pool includes a plurality of chunk stores that manage storage of chunks to, and retrieval of chunks from, the plurality of storage devices; receiving a request from the at least one writing entity to write particular data to the shared storage pool; in response to the request, writing the particular data as a stripe across a subset of the plurality of storage devices; assigning a particular container name to the stripe; wherein the particular container name is independent of physical storage identifiers and logical block addresses;
wherein writing the particular data as a stripe across the plurality of chunk stores comprises;generating a plurality of chunks for the stripe, wherein the particular data is contained within the plurality of chunks; based on the particular container name, indexing into a layout table to retrieve an entry; determining, from the entry, a target subset of the plurality of chunk stores; sending each chunk, of the plurality of chunks, to a distinct chunk store from the target subset; wherein the layout table is configured to ensure that no two chunks of the plurality of chunks are sent to the same chunk store of the plurality of chunk stores; receiving a request for target data that belongs to the stripe, wherein the request includes the particular container name; based on the particular container name, indexing into the layout table to locate the entry; based on the entry, determining the target subset of the plurality of chunk stores; and retrieving the target data from one or more chunk stores of the target subset. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. One or more non-transitory computer-readable media storing instructions for writing data to a plurality of storage devices, wherein the instructions include instructions which, when executed by one or more computing devices, cause:
-
executing at least one writing entity within a corresponding one of a plurality of hosts, wherein each host of the plurality of hosts has access to a shared storage pool; wherein the shared storage pool includes a plurality of chunk stores that manage storage of chunks to, and retrieval of chunks from, the plurality of storage devices; receiving a request from the at least one writing entity to write particular data to the shared storage pool; in response to the request, writing the particular data as a stripe across a subset of the plurality of storage devices; assigning a particular container name to the stripe; wherein the particular container name is independent of physical storage identifiers and logical block addresses; wherein writing the particular data as a stripe across the plurality of chunk stores comprises; generating a plurality of chunks for the stripe, wherein the particular data is contained within the plurality of chunks; based on the particular container name, indexing into a layout table to retrieve an entry; determining, from the entry, a target subset of the plurality of chunk stores; sending each chunk, of the plurality of chunks, to a distinct chunk store from the target subset; wherein the layout table is configured to ensure that no two chunks of the plurality of chunks are sent to the same chunk store of the plurality of chunk stores; receiving a request for target data that belongs to the stripe, wherein the request includes the particular container name; based on the particular container name, indexing into the layout table to locate the entry; based on the entry, determining the target subset of the plurality of chunk stores; and retrieving the target data from one or more chunk stores of the target subset. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification