Nova Patents
EP3200431A2

Massively scalable object storage system

Abstract

Several different embodiments of a massively scalable object storage system are described. The object storage system is particularly useful for storage in a cloud computing installation whereby shared servers provide resources, software, and data to computers and other devices on demand. In several embodiments, the object storage system includes a ring implementation used to associate object storage commands with particular physical servers such that certain guarantees of consistency, availability, and performance can be met. In other embodiments, the object storage system includes a synchronization protocol used to order operations across a distributed system. In a third set of embodiments, the object storage system includes a metadata management system. In a fourth set of embodiments, the object storage system uses a structured information synchronization system. Features from each set of embodiments can be used to improve the performance and scalability of a cloud computing object storage system.

EP3200431A2, drawing sheet 1
Sheet 1 of 12

Term

5.5 yearsto projected expiry

Projected expiry 7 March 2032, counted from filing; an application has no term until it is granted.

  1. Priority
  2. Filed
  3. Published
  4. Today
  5. Projected expiry

15 claims: 6 independent, 9 dependent

  1. 1
    A method for storing data, comprising:providing a plurality of physical storage pools, each storage pool including a plurality of storage nodes coupled to a network, each storage node further providing a non-transitory computer readable medium for data storage;classifying a plurality of availability zones, wherein the storage nodes within an availability zone are subject to a correlated loss of access to stored data;defining a plurality of abstract partitions, wherein each possible input data management request deterministically corresponds to one of the plurality of abstract partitions, and wherein the deterministic correspondence between each possible input data management request and an abstract partition of the plurality of abstract partitions is established using a function;mapping the plurality of abstract partitions to the plurality of physical storage pools such that each mapped physical storage pool includes a replica of the data associated with the associated mapped abstract partition, and each replica for a particular abstract partition is mapped to a physical storage pool in a different availability zone, wherein the mapping the plurality of abstract partitions to the plurality of physical storage pools includes applying a constraint satisfaction algorithm;receiving a data management request over the network, the data management request associated with a data object;determining, using the data object and function, a partition identification;identifying, using the partition identification and the constraint satisfaction algorithm, a first partition corresponding to the received data management request;and manipulating the data object in the physical storage pools mapped to the first partition in accordance with the data management request.
  2. 4
    The method of any one preceding claim, further comprising:determining that a storage pool has been removed from the plurality of storage pools;and remapping the plurality of abstract partitions to the plurality of physical storage pools such that each mapped physical storage pool includes a replica of the data associated with the associated mapped abstract partition, each replica for a particular abstract partition is mapped to a physical storage pool in a different availability zone, and each remapped abstract partition has zero or one changes in physical storage pools used to replicate the partition.
  3. 5
    The method of any one preceding claim, further comprising:determining that at least one overutilized physical storage pool has been mapped to a number of partition replicas that exceeds a threshold amount;and remapping the plurality of abstract partitions to the plurality of physical storage pools such that each mapped physical storage pool includes a replica of the data associated with the mapped abstract partition, each replica for a particular abstract partition is mapped to a physical storage pool in a different availability zone, and the number of partition replicas in the overutlized physical storage pool does not exceed the threshold amount.
  4. 7
    The method of any one preceding claim, further comprising:determining that at least one overutilized physical storage pool exceeds a threshold level of capacity use;and remapping the plurality of abstract partitions to the plurality of physical storage pools such that each mapped physical storage pool includes a replica of the data associated with the mapped abstract partition, each replica for a particular abstract partition is mapped to a physical sotorage pool in a different availability zone, and the capacity of the overutilized physical storage pool does not exceed the threshold amount.
  5. 9
    The method of any one preceding claim, wherein the data management request is one of a request to store a data object and a request to update a data object, and wherein the manipulation of the data object in accordance with the data management request includes storing a replica of the object in at least two of the physical storage pools mapped to the identified first partition.
  6. 11
    A massively scalable online data storage system, comprising:a distributed storage coupled to a network, the distributed storage including a first storage pool and a second storage pool from a plurality of storage pools, the first storage pool in a first availability zone and the second storage pool in a second availability zone, each storage pool including at least one processor, a non-transitory computer readable medium, and a communications interface;a director coupled to the network, the director including a processor, a computer readable medium, and a communications interface;a constrained mapping database to store a mapping of a first abstract partition to the first and second storage pools, the mapping being based on a number of abstract partitions and a number of storage pools in the plurality of storage pools and based on applying a constraint satisfaction algorithm;and a ring structure associated with the director, wherein the ring structure associates, using a hashing function, a storage request with the first abstract partition from a plurality of abstract partitions, and selectively associates a first abstract partition with a first fault-tolerant multi-master replication target, the first replication target including the first storage pool and the second storage pool;wherein a partition identification of the first abstract partition includes a plurality of parts, and the ring structure maps the first abstract partition by applying the constraint satisfaction algorithm to each of the plurality of parts, wherein the director routes inbound storage requests to the replication target and outbound storage responses from the replication target.