Distributed storage system with efficient handling of file updates
First Claim
1. A method comprising:
- separating a file into a plurality of sets of file blocks;
assigning sets of the file blocks to respective ones of a plurality of servers;
defining a plurality of parity groups each comprising a different subset of the plurality of servers;
for each of the servers, assigning each of its file blocks to at least one of the defined parity groups;
computing one or more parity blocks for each of the parity groups;
storing the file blocks on their associated servers;
storing the parity blocks such that said one or more parity blocks computed for each of the parity groups are stored on respective ones of the plurality of servers other than the servers within that parity group; and
in each of a plurality of epochs, performing a challenge phase, a remediation phase, a file update phase, and a proactivization phase;
wherein the challenge phase comprises issuing challenges to respective ones of the servers and processing responses to the challenges to determine corruption of the file blocks, the remediation phase comprises restoring file blocks determined to be corrupted during the challenge phase, the file update phase comprises making one or more updates to the file, and the proactivization phase comprises recomputing a fraction of parity blocks for the updated file, the fraction being based on a number of servers assumed to be corruptible by an adversary per epoch;
wherein the file blocks and one or more parity blocks associated with each parity group are stored in respective independently and randomly selected positions on respective ones of the plurality of servers; and
wherein the plurality of parity groups are defined such that respective structures of the parity groups are not predictable without access to a secret used in assigning the file blocks to the parity groups.
9 Assignments
0 Petitions
Accused Products
Abstract
A client device or other processing device comprises a file encoding module, with the file encoding module being configured to separate a file into a plurality of sets of file blocks, to assign sets of the file blocks to respective ones of a plurality of servers, to define a plurality of parity groups each comprising a different subset of the plurality of servers, to assign, for each of the servers, each of its file blocks to at least one of the defined parity groups, and to compute one or more parity blocks for each of the parity groups. The file blocks are stored on their associated servers, and the parity blocks computed for each of the parity groups are stored on respective ones of the servers other than those within that parity group. Such an arrangement advantageously ensures that only a limited number of parity block recomputations are required in response to file block updates.
-
Citations
23 Claims
-
1. A method comprising:
-
separating a file into a plurality of sets of file blocks; assigning sets of the file blocks to respective ones of a plurality of servers; defining a plurality of parity groups each comprising a different subset of the plurality of servers; for each of the servers, assigning each of its file blocks to at least one of the defined parity groups; computing one or more parity blocks for each of the parity groups; storing the file blocks on their associated servers; storing the parity blocks such that said one or more parity blocks computed for each of the parity groups are stored on respective ones of the plurality of servers other than the servers within that parity group; and in each of a plurality of epochs, performing a challenge phase, a remediation phase, a file update phase, and a proactivization phase; wherein the challenge phase comprises issuing challenges to respective ones of the servers and processing responses to the challenges to determine corruption of the file blocks, the remediation phase comprises restoring file blocks determined to be corrupted during the challenge phase, the file update phase comprises making one or more updates to the file, and the proactivization phase comprises recomputing a fraction of parity blocks for the updated file, the fraction being based on a number of servers assumed to be corruptible by an adversary per epoch; wherein the file blocks and one or more parity blocks associated with each parity group are stored in respective independently and randomly selected positions on respective ones of the plurality of servers; and wherein the plurality of parity groups are defined such that respective structures of the parity groups are not predictable without access to a secret used in assigning the file blocks to the parity groups. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. An apparatus comprising:
-
a processing device including a processor, a memory coupled to the processor, and a network interface configured to support communication between the processing device and a plurality of servers; wherein the processing device further comprises a file encoding module, the file encoding module being configured to separate a file into a plurality of sets of file blocks, to assign sets of the file blocks to respective ones of a plurality of servers, to define a plurality of parity groups each comprising a different subset of the plurality of servers, to assign, for each of the servers, each of its file blocks to at least one of the defined parity groups, to compute one or more parity blocks for each of the parity groups, to store the file blocks on their associated servers, to store the parity blocks such that said one or more parity blocks computed for each of the parity groups are stored on respective ones of the plurality of servers other than the servers within that parity group, and, in each of a plurality of epochs, to perform a challenge phase, a remediation phase, a file update phase, and a proactivization phase; wherein the challenge phase comprises issuing challenges to respective ones of the servers and processing responses to the challenges to determine corruption of the file blocks, the remediation phase comprises restoring file blocks determined to be corrupted during the challenge phase, the file update phase comprises making one or more updates to the file, and the proactivization phase comprises recomputing a fraction of parity blocks for the updated file, the fraction being based on a number of servers assumed to be corruptible by an adversary per epoch; wherein the file encoding module is configured to store the file blocks and the one or more parity blocks associated with each parity group in respective independently and randomly selected positions on respective ones of the plurality of servers; and wherein the plurality of parity groups are defined such that respective structures of the parity groups are not predictable without access to a secret used in assigning the file blocks to the parity groups. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A distributed storage system comprising:
-
a plurality of servers; and at least one processing device configured to communicate with the plurality of servers; wherein the processing device comprises a file encoding module configured to separate a file into a plurality of sets of file blocks, to assign sets of the file blocks to respective ones of a plurality of servers, to define a plurality of parity groups each comprising a different subset of the plurality of servers, to assign, for each of the servers, each of its file blocks to at least one of the defined parity groups, to compute one or more parity blocks for each of the parity groups, to store the file blocks on their associated servers, to store the parity blocks such that said one or more parity blocks computed for each of the parity groups are stored on respective ones of the plurality of servers other than the servers within that parity group, and, in each of a plurality of epochs, to perform a challenge phase, a remediation phase, a file update phase, and a proactivization phase; wherein the challenge phase comprises issuing challenges to respective ones of the servers and processing responses to the challenges to determine corruption of the file blocks, the remediation phase comprises restoring file blocks determined to be corrupted during the challenge phase, the file update phase comprises making one or more updates to the file, and the proactivization phase comprises recomputing a fraction of parity blocks for the updated file, the fraction being based on a number of servers assumed to be corruptible by an adversary per epoch; wherein the file encoding module is configured to store the file blocks and the one or more parity blocks associated with each parity group in respective independently and randomly selected positions on respective ones of the plurality of servers; and wherein the plurality of parity groups are defined such that respective structures of the parity groups are not predictable without access to a secret used in assigning the file blocks to the parity groups. - View Dependent Claims (21, 22, 23)
-
Specification