EP3433765B1

Methods and apparatus to assign indices and relocate object fragments in distributed storage systems

Abstract

This record has no abstract on file.

EP3433765B1, drawing sheet 1
Sheet 1 of 11

Term

10.4 yearsleft in the term

Expires 15 February 2037.

  1. Priority and filed
  2. Granted
  3. Today
  4. Expires

13 claims: 5 independent, 8 dependent

  1. 1
    An apparatus to index fragments of objects, comprising:a fragmenter (400) to encode an object with error correction coding to separate the object into fragments;a node index assigner (402) to create a first index indicative of storage nodes where the fragments of the object are to be stored;and a fragment index assigner (404) to encode a second index into identifiers of the fragments of the object, the second index based on the first index, the fragmenter to store the fragments of the object and the corresponding second index encoded identifiers in the storage nodes based on the first index;further including a fragment compiler to: send a message to a first one of the storage nodes requesting a first one of the fragments of the object;and receive a response from the first one of the storage nodes, the response indicating that the first one of the fragments of the object is not stored in the first one of the storage nodes and that a second one of the fragments of the object is stored in the first one of the storage nodes.
  2. 2
    The apparatus as defined claim 1, further including a fragment compiler to retrieve fragments of the object from corresponding ones of the storage nodes based on the first index and the second index.
  3. 3
    The apparatus as defined in one of claims 1-2, wherein the fragment compiler is to:request a first one of the fragments of the object from a first one of the storage nodes;when the first index matches the second index for the first one of the storage nodes, retrieve, from the first one of the storage nodes, the first one of the fragments of the object;and when the first index does not match the second index for the first one of the storage nodes, retrieve, from the first one of the storage nodes, a second one of the fragments of the object associated with the second index.
  4. 4
    The apparatus as defined in one of claims 1-3, wherein the fragment compiler is to reconstruct the object from the fragments based on the second index.
  5. 5
    The apparatus as defined in any of claims 1-4, wherein the storage nodes are first storage nodes, and further including a node manager to, when the fragments of the object are redistributed into second storage nodes:identify a first one of the second storage nodes storing a first one of the fragments of the object;identify a second one of the first storage nodes corresponding to the second index encoded in an identifier of the first one of the fragments of the object stored in the first one of the second storage nodes;and move the first one of the fragments of the object from the first one of the second storage nodes to the second one of the first storage nodes.
  6. 6
    The apparatus as defined in any of claims 1-5, wherein the fragments of the object are to be redistributed into second storage nodes due to at least one of a network outage or data corruption.
  7. 7
    A method to index fragments of objects, comprising:encoding, with a processor, an object with error correction coding to separate the object into fragments;creating, with the processor, a first index indicative of storage nodes where the fragments of the object are to be stored;encoding, with the processor, a second index into identifiers of the fragments of the object, the second index based on the first index;and storing, with the processor, the fragments of the object and the corresponding second index encoded identifiers in the storage nodes based on the first index, further including: sending, with a processor, a message to a first one of the storage nodes requesting a first one of the fragments of the object;and receiving, with the processor, a response from the first one of the storage nodes, the response indicating that the first one of the fragments of the object is not stored in the first one of the storage nodes and that a second one of the fragments of the object is stored in the first one of the storage nodes.
  8. 9
    The method as defined in any of claims 7-9, wherein the retrieving fragments of the object from the storage nodes based on the first index and the second index includes:requesting a first one of the fragments of the object from a first one of the storage nodes;when the first index matches the second index for the first one of the storage nodes, retrieving, from the first one of the storage nodes, the first one of the fragments of the object;and when the first index does not match the second index for the first one of the storage nodes, retrieving, from the first one of the storage nodes, a second one of the fragments of the object associated with the second index.
  9. 10
    The method as defined in any of claims 7-9, further including reconstructing the object from the fragments based on the first index.
  10. 11
    The method as defined in any of claims 7-10, wherein the storage nodes are first storage nodes, and further including, when the fragments of the object are redistributed into second storage nodes:identifying a first one of the second storage nodes storing a first one of the fragments of the object;identifying a second one of the first storage nodes corresponding to the second index encoded in an identifier of the first one of the fragments of the object stored in the first one of the second storage nodes;and moving the first one of the fragments of the object from the first one of the second storage nodes to the second one of the first storage nodes.
  11. 12
    The method as defined in any of claims 7-11, wherein the fragments of the object are redistributed into the second storage nodes by distributing an amount of data within each of the second storage nodes proportionate to a capacity of each of the second storage nodes.
  12. 13
    A tangible machine readable medium having instructions stored thereon that, when executed, cause a machine to perform the method of any of claims 7-12.