Read-modify-write processing of chunks at the storage server level in a distributed object storage system
First Claim
1. A method of creating a new chunk by modifying a payload of an existing chunk of a named object in a distributed object storage system, the method comprising:
- sending a rendezvous transfer from a gateway server to storage servers in a rendezvous group, wherein the rendezvous transfer specifies a change to the payload of the existing chunk, wherein the rendezvous group is a subset of the storage servers in a negotiating group for the existing chunk, and wherein the storage servers in the negotiating group are selected using a name hash identifying token that is generated by applying a predetermined hashing algorithm to the named object;
reading the payload of the existing chunk from a storage device by each of the storage servers in the rendezvous group;
modifying the payload of the existing chunk by applying the specified change to create a new payload by each of the storage servers in the rendezvous group;
applying a cryptographic hash to the new payload to generate a new content hash identifying token by each of the storage servers in the rendezvous group;
writing the new chunk to the storage device by each of the storage servers in the rendezvous group, wherein the new chunk includes the new payload and the new content hash identifying token; and
validating the new chunk by the gateway server,wherein a payload of the named object is stored in existing chunks which are key shards that are defined by key-shard chunk references, wherein the payload for the named object comprises a collection of key-value records, and wherein referenced chunks identified by the key shards each stores a subset of the collection of the key-value records, where the key-value records in the subset have key hashes that have a range of matching bits in common.
4 Assignments
0 Petitions
Accused Products
Abstract
The present disclosure provides systems and methods for sharding objects stored in a distributed storage system. Such sharding may be advantageously utilized for an object that stores a collection of key-value records and for otherwise encoded objects. The object sharding techniques disclosed herein advantageously enable a read-modify-write process at the storage server level. One embodiment disclosed herein provides a method of creating a new chunk by modifying a payload of an existing chunk at the storage server level in a distributed object storage system. The method includes validating the new chunk at the gateway server. Other embodiments, aspects and features are also disclosed.
-
Citations
20 Claims
-
1. A method of creating a new chunk by modifying a payload of an existing chunk of a named object in a distributed object storage system, the method comprising:
-
sending a rendezvous transfer from a gateway server to storage servers in a rendezvous group, wherein the rendezvous transfer specifies a change to the payload of the existing chunk, wherein the rendezvous group is a subset of the storage servers in a negotiating group for the existing chunk, and wherein the storage servers in the negotiating group are selected using a name hash identifying token that is generated by applying a predetermined hashing algorithm to the named object; reading the payload of the existing chunk from a storage device by each of the storage servers in the rendezvous group; modifying the payload of the existing chunk by applying the specified change to create a new payload by each of the storage servers in the rendezvous group; applying a cryptographic hash to the new payload to generate a new content hash identifying token by each of the storage servers in the rendezvous group; writing the new chunk to the storage device by each of the storage servers in the rendezvous group, wherein the new chunk includes the new payload and the new content hash identifying token; and validating the new chunk by the gateway server, wherein a payload of the named object is stored in existing chunks which are key shards that are defined by key-shard chunk references, wherein the payload for the named object comprises a collection of key-value records, and wherein referenced chunks identified by the key shards each stores a subset of the collection of the key-value records, where the key-value records in the subset have key hashes that have a range of matching bits in common. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A distributed storage system that stores a payload of a named object in chunks, the system comprising:
-
a plurality of storage servers; and a plurality of gateway servers communicatively interconnected with, and providing access to, the plurality of storage servers, wherein a procedure for creating a new chunk by modifying a payload of an existing chunk comprises; sending a rendezvous transfer from a gateway server to the storage servers in a rendezvous group, wherein the rendezvous transfer specifies a change to the payload of the existing chunk, wherein the rendezvous group is a subset of the storage servers in a negotiating group for the existing chunk, and wherein the storage servers in the negotiating group are selected using a name hash identifying that is generated by applying a predetermined hashing algorithm to the named object; reading the payload of the existing chunk from a storage device by each of the storage servers in the rendezvous group; modifying the payload of the existing chunk by applying the specified change to create a new payload by each of the storage servers in the rendezvous group; applying a cryptographic hash to the new payload to generate a new content hash identifying token by each of the storage servers in the rendezvous group; writing the new chunk to the storage device by each of the storage servers in the rendezvous group, wherein the new chunk includes the new payload and the new content hash identifying token; and validating the new chunk by the gateway server, and wherein a payload of the named object is stored in existing chunks which are key shards that are defined by key-shard chunk references, wherein the payload for the named object comprises a collection of key-value records, wherein referenced chunks identified by the key shards each stores a subset of the collection of the key-value records, and wherein the key-value records in the subset have key hashes that have a range of matching bits in common. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A non-transitory computer-readable medium comprising instructions stored thereon, that when executed by one or more processors at a plurality of servers within a distributed storage system, perform the steps of:
-
sending a rendezvous transfer from a gateway server to storage servers in a rendezvous group, wherein the rendezvous transfer specifies a change to the payload of the existing chunk, wherein the rendezvous group is a subset of the storage servers in a negotiating group for the existing chunk, and wherein the storage servers in the negotiating group are selected using a name hash identifying token that is generated by applying a predetermined hashing algorithm to the named object; reading the payload of the existing chunk from a storage device by each of the storage servers in the rendezvous group; modifying the payload of the existing chunk by applying the specified change to create a new payload by each of the storage servers in the rendezvous group; applying a cryptographic hash to the new payload to generate a new content hash identifying token by each of the storage servers in the rendezvous group; writing the new chunk to the storage device by each of the storage servers in the rendezvous group, wherein the new chunk includes the new payload and the new content hash identifying token; and validating the new chunk by the gateway server, wherein a payload of the named object is stored in existing chunks which are key shards that are defined by key-shard chunk references, wherein the payload for the named object comprises a collection of key-value records, and wherein referenced chunks identified by the key shards each stores a subset of the collection of the key-value records, where the key-value records in the subset have key hashes that have a range of matching bits in common. - View Dependent Claims (20)
-
Specification