A method of distributing data in a distributed storage system, the method comprising: receiving a file into non-transitory memory; dividing the received file into chunks using a computer processor in communication with the non-transitory memory, the chunks being data-chunks and non-data chunks; grouping one or more of the data-chunks and one or more of the non-data chunks in a group, one or more chunks of the group capable of being reconstructed from other chunks of the group; and distributing the chunks of the group to storage devices (114, 114a-n) of the distributed storage system based on a hierarchy of the distributed storage system, the hierarchy comprising maintenance domains (402, 402a-e) having active and inactive states, each storage device (114, 114a-n) associated with a maintenance domain (402, 402a-e), the chunks of a group are distributed across multiple maintenance domains (402, 402a-e) to maintain the ability to reconstruct chunks of the group when a maintenance domain (402, 402a-e) is in an inactive state, each maintenance domain comprising storage devices powered by a single power distribution unit or a single power bus duct the method further comprising determining a distribution of the chunks of a group among the storage devices (114, 114a-n) by: determining a first random selection (150, 150a, 150n) of storage devices (114, 114a-n) matching a number of chunks of the group by using a simple sampling, a probability sampling, a stratified sampling or a cluster sampling; and determining if the selection (150, 150a, 150n) of storage devices (114, 114a-n) is capable of maintaining accessibility of the group when one or more maintenance domains (402, 402a-e) are in an inactive state; and wherein when the first random selection (150, 150a, 150n) of storage devices (114, 114a-n) is incapable of maintaining accessibility of the group when one or more maintenance domains (402, 402a-e) are in an inactive state, either determining a second random selection (150, 150b) of storage devices (114, 114a-n) matching the number of chunks of the group or modifying the first random selection (150, 150a, 150n) of storage devices (114, 114a-n) by adding and removing one or more randomly selected storage devices (114, 114a-n). receiving a file into non-transitory memory; dividing the received file into chunks using a computer processor in communication with the non-transitory memory, the chunks being data-chunks and non-data chunks; grouping one or more of the data-chunks and one or more of the non-data chunks in a group, one or more chunks of the group capable of being reconstructed from other chunks of the group; and distributing the chunks of the group to storage devices (114, 114a-n) of the distributed storage system based on a hierarchy of the distributed storage system, the hierarchy comprising maintenance domains (402, 402a-e) having active and inactive states, each storage device (114, 114a-n) associated with a maintenance domain (402, 402a-e), the chunks of a group are distributed across multiple maintenance domains (402, 402a-e) to maintain the ability to reconstruct chunks of the group when a maintenance domain (402, 402a-e) is in an inactive state, each maintenance domain comprising storage devices powered by a single power distribution unit or a single power bus duct the method further comprising determining a distribution of the chunks of a group among the storage devices (114, 114a-n) by: determining a first random selection (150, 150a, 150n) of storage devices (114, 114a-n) matching a number of chunks of the group by using a simple sampling, a probability sampling, a stratified sampling or a cluster sampling; and determining if the selection (150, 150a, 150n) of storage devices (114, 114a-n) is capable of maintaining accessibility of the group when one or more maintenance domains (402, 402a-e) are in an inactive state; and wherein when the first random selection (150, 150a, 150n) of storage devices (114, 114a-n) is incapable of maintaining accessibility of the group when one or more maintenance domains (402, 402a-e) are in an inactive state, either determining a second random selection (150, 150b) of storage devices (114, 114a-n) matching the number of chunks of the group or modifying the first random selection (150, 150a, 150n) of storage devices (114, 114a-n) by adding and removing one or more randomly selected storage devices (114, 114a-n). determining a first random selection (150, 150a, 150n) of storage devices (114, 114a-n) matching a number of chunks of the group by using a simple sampling, a probability sampling, a stratified sampling or a cluster sampling; and determining if the selection (150, 150a, 150n) of storage devices (114, 114a-n) is capable of maintaining accessibility of the group when one or more maintenance domains (402, 402a-e) are in an inactive state; and wherein when the first random selection (150, 150a, 150n) of storage devices (114, 114a-n) is incapable of maintaining accessibility of the group when one or more maintenance domains (402, 402a-e) are in an inactive state, either determining a second random selection (150, 150b) of storage devices (114, 114a-n) matching the number of chunks of the group or modifying the first random selection (150, 150a, 150n) of storage devices (114, 114a-n) by adding and removing one or more randomly selected storage devices (114, 114a-n).