Method of storing a data set in a storage system, wherein said storage system comprises a plurality of storage entities, wherein said method comprises the steps of: • forming at least one data set block from said data set using a fragmentation entity; • encoding said at least one data set block by means of an encoding entity, ∘ wherein said encoding entity assembles a plurality of encoded blocks based on said at least one data set block at an output of said encoding entity; and ∘ wherein said encoding entity uses a rateless erasure encoding algorithm based on rateless codes for encoding said at least one data set block • distributing said encoded blocks amongst at least two of said storage entities using a distribution entity for storage thereof by said storage entities, CHARACTERISED IN THAT • said at least two storage entities for distributing said encoded blocks comprise a number of g storage entities for receiving said encoded blocks which are selected by a director entity, said director entity communicating said selected storage entities to said distribution entity; • s is the maximum number of storage entities that are allowed to fail operation simultaneously; • n crit is the number of encoding blocks required for recovering said data set with a sufficiently large probability of success; • said encoded blocks are distributed amongst said number of g storage entities, such that each of said g storage entities receives at least n g encoded blocks from said distribution entity, with n g = n crit g − s and n g, n crit, g, s ∈ N ∧ g > 0 and g > s ≥ 2. • forming at least one data set block from said data set using a fragmentation entity; • encoding said at least one data set block by means of an encoding entity, ∘ wherein said encoding entity assembles a plurality of encoded blocks based on said at least one data set block at an output of said encoding entity; and ∘ wherein said encoding entity uses a rateless erasure encoding algorithm based on rateless codes for encoding said at least one data set block ∘ wherein said encoding entity assembles a plurality of encoded blocks based on said at least one data set block at an output of said encoding entity; and ∘ wherein said encoding entity uses a rateless erasure encoding algorithm based on rateless codes for encoding said at least one data set block • distributing said encoded blocks amongst at least two of said storage entities using a distribution entity for storage thereof by said storage entities, • said at least two storage entities for distributing said encoded blocks comprise a number of g storage entities for receiving said encoded blocks which are selected by a director entity, said director entity communicating said selected storage entities to said distribution entity; • s is the maximum number of storage entities that are allowed to fail operation simultaneously; • n crit is the number of encoding blocks required for recovering said data set with a sufficiently large probability of success; • said encoded blocks are distributed amongst said number of g storage entities, such that each of said g storage entities receives at least n g encoded blocks from said distribution entity, with n g = n crit g − s and n g, n crit, g, s ∈ N ∧ g > 0 and g > s ≥ 2.