IP Library Granted Patent US 9,021,137
Granted Patent B2
US 9,021,137 · App. 14/047,332 · Granted Apr 28, 2015

Massively scalable object storage system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,021,137
App. No.
14/047,332
Granted
Apr 28, 2015
Kind
B2
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.

Claims (25)

1. A method for coordinating events in a distributed system, comprising:

synchronizing a master clock to coordinated universal time within a master skew threshold;

synchronizing a first local clock at a first gateway with the master clock within a system skew threshold, and synchronizing a second local clock at a second gateway with the master clock within the system skew threshold;

receiving, at the first gateway, a first request to manipulate a non-volatile data storage, and marking the first request with the time of reception according to the first local clock, with a granularity at least equal to the system skew threshold;

receiving, at the second gateway, a second request to manipulate the non-volatile data storage, and marking the second request with the time of reception according to the second local clock, with a granularity at least equal to the system skew threshold;

evaluate the first request and the second request to determine if they are unambiguously ordered by determining if the first request and the second request are temporally ordered with a granularity greater than the system skew threshold;

if the first request and the second request are unambiguously ordered, modifying the non-volatile data storage as directed in the later request; and

if the first request and the second request are not unambiguously ordered, modifying the non-volatile data storage as directed by a deterministic tiebreaker.

2. The method of claim 1 , wherein the master skew threshold is less than or equal to a tenth of a second.

3. The method of claim 1 , wherein the system skew threshold is less than or equal to a millisecond.

4. The method of claim 1 , wherein the system skew threshold is less than or equal to a microsecond.

5. The method of claim 1 , wherein the tiebreaker prevents modification of the non-volatile data storage.

6. The method of claim 1 , wherein the tiebreaker measures the latency between the first gateway and a first address where the first request originated, and further measures the latency between the second gateway and a second address where the second request originated, and modifies the non-volatile storage according to the request exhibiting lower latency.

7. The method of claim 1 , wherein the tiebreaker measures the geographic distance between the first gateway and a first address where the first request originated, and further measures the geographic distance between the second gateway and a second address where the second request originated, and modifies the non-volatile storage according to the request originating from a geographically closer address.

8. The method of claim 1 , wherein the tiebreaker evaluates whether a merged request can be created including both the changes associated with the first request and the changes associated with the second request, and if so, modifies the non-volatile storage according to merged request.

9. A non-transient computer readable medium containing executable instructions, which when executed on a processor:

synchronizes a first local clock with a second local clock within a system skew threshold;

receives a first request to manipulate a system resource and marks the first request with the time of reception according to the first local clock, with a granularity at least equal to the system skew threshold;

receives a second request to manipulate the system resource and marks the second request with the time of reception according to the second local clock, with a granularity at least equal to the system skew threshold;

evaluates the first request and the second request to determine if they are unambiguously ordered by determining if the first request and the second request are temporally ordered with a granularity greater than the system skew threshold;

if the first request and the second request are unambiguously ordered, manipulates the system resource as directed in the later request; and

if the first request and the second request are not unambiguously ordered, executes tiebreaker instructions controlling the system resource; and

returns a success or error depending on the outcome of the tiebreaker instructions.

10. The non-transient computer readable medium of claim 9 , wherein the tiebreaker instructions attempt to create a merged request, and returns success if the system resource can be manipulated according to the merged request, and error otherwise.

11. The non-transient computer readable medium of claim 9 , wherein system skew threshold is less than or equal to one millisecond.

Assignments (4)
RELEASE OF PATENT SECURITIES Recorded Mar 13, 2024
From: CITIBANK, N.A.
To: RACKSPACE US, INC.
Reel/Frame 066795/0177 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE PROPERTY NUMBER PREVIOUSLY RECORDED AT REEL: 40564 FRAME: 914. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048658/0637 →
SECURITY AGREEMENT Recorded Nov 4, 2016
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 040564/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2013
From: BARTON, MICHAEL; REESE, WILL; DICKINSON, JOHN A.; PAYNE, JAY B.; THIER, CHARLES B.; HOLT, GREGORY
To: RACKSPACE US, INC.
Reel/Frame 031356/0168 →