Writing data in a distributed data storage system
First Claim
1. A method for writing data, the data including one or more storage units, the method comprising:
- receiving a write request, the write request including client data and a client address, wherein the client address identifies the client data;
segmenting the client data into the one or more storage units;
computing a storage unit identifier for each of the one or more storage units, wherein the storage unit identifier for each of the one or more storage units uniquely identifies content of a storage unit associated with the storage unit identifier;
determining, by a metadata server, a mapping between each storage unit identifier to a block server;
for each of the one or more storage units, sending the storage unit and the corresponding storage unit identifier to a block server based upon the mapping between the storage unit identifier to the block server, wherein the block server stores the storage unit and maps the storage unit identifier to where the storage unit is stored on the block server, and wherein a storage unit that is associated with multiple client addresses is mapped to a single storage unit and stored on a block server one time;
receiving a storage indication from the block server for each of the one or more storage units; and
storing a mapping between the client address and each of the one or more storage units based upon the storage indication.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and apparatuses, including computer programs encoded on computer-readable media, for receiving a write request that includes data and a client address at which to store the data. The data is segmented into the one or more storage units. A storage unit identifier for each of the one or more storage units is computed that uniquely identifies content of a storage unit. A mapping between each storage unit identifier to a block server is determined. For each of the one or more storage units, the storage unit and the corresponding storage unit identifier is sent to a block server. The block server stores the storage unit and information on where the storage unit is stored on the block server for the storage unit identifier. Multiple client addresses associated with a storage unit with the same storage unit identifier are mapped to a single storage unit.
27 Citations
20 Claims
-
1. A method for writing data, the data including one or more storage units, the method comprising:
-
receiving a write request, the write request including client data and a client address, wherein the client address identifies the client data; segmenting the client data into the one or more storage units; computing a storage unit identifier for each of the one or more storage units, wherein the storage unit identifier for each of the one or more storage units uniquely identifies content of a storage unit associated with the storage unit identifier; determining, by a metadata server, a mapping between each storage unit identifier to a block server; for each of the one or more storage units, sending the storage unit and the corresponding storage unit identifier to a block server based upon the mapping between the storage unit identifier to the block server, wherein the block server stores the storage unit and maps the storage unit identifier to where the storage unit is stored on the block server, and wherein a storage unit that is associated with multiple client addresses is mapped to a single storage unit and stored on a block server one time; receiving a storage indication from the block server for each of the one or more storage units; and storing a mapping between the client address and each of the one or more storage units based upon the storage indication. - View Dependent Claims (2, 3, 4, 5, 6, 7, 19)
-
-
8. A non-transitory computer-readable storage medium containing instructions for writing data, the data including one or more storage units, the instructions for controlling a computer system to perform operations comprising:
-
receiving a write request, the write request including client data and a client address, wherein the client address identifies the client data; segmenting the client data into the one or more storage units; computing a storage unit identifier for each of the one or more storage units, wherein the storage unit identifier for each of the one or more storage units uniquely identifies content of a storage unit associated with the storage unit identifier; determining, by a metadata server, a mapping between each storage unit identifier to a block server; for each of the one or more storage units, sending the storage unit and the corresponding storage unit identifier to a block server based upon the mapping between the storage unit identifier to the block server, wherein the block server stores the storage unit and maps the storage unit identifier to where the storage unit is stored on the block server, and wherein a storage unit that is associated with multiple client addresses is mapped to a single storage unit and stored on a block server one time; receiving a storage indication from the block server for each of the one or more storage units; and storing a mapping between the client address and each of the one or more storage units based upon the storage indication. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A system comprising:
-
a metadata server configured to; receive a write request, the write request including client data and a client address, wherein the client address identifies the client data; segment the client data into the one or more storage units; compute a storage unit identifier for each of the one or more storage units, wherein the storage unit identifier for each of the one or more storage units uniquely identifies content of a storage unit associated with the storage unit identifier; determine a mapping between each storage unit identifier to a block server; for each of the one or more storage units, send the storage unit and the corresponding storage unit identifier to a block server based upon the mapping between the storage unit identifier to the block server, wherein the block server stores the storage unit and maps the storage unit identifier to where the storage unit is stored on the block server, and wherein a storage unit that is associated with multiple client addresses is mapped to a single storage unit and stored on a block server one time; receive a storage indication from the block server for each of the one or more storage units; and store the mapping between each storage unit identifier to the block server based upon the storage indication. - View Dependent Claims (16, 17, 18, 20)
-
Specification