IP Library › Granted Patent US 9,600,558
Granted Patent B2
US 9,600,558 · App. 13/927,010 · Granted Mar 21, 2017

Grouping of objects in a distributed storage system based on journals and placement policies

Inventors: Alexander Kesselman (Sunnyvale, CA); Alexandre Drobychev (San Mateo, CA); George Datuashvili (Cupertino, CA)
Assignee: GOOGLE INC.
G06F17/30598G06F3/067G06F17/30575H04L67/1095
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,600,558
App. No.
13/927,010
Granted
Mar 21, 2017
Kind
B2
Abstract

Managing placement of object replicas is performed at a first instance of a distributed storage system. One or more journals are opened for storage of object chunks. Each journal is associated with a single placement policy. A first object is received comprising at least a first object chunk. The first object is associated with a first placement policy. The first object chunk is stored in a first journal whose associated placement policy matches the first placement policy. The first journal stores only object chunks for objects whose placement policies match the first placement policy. For the first journal, the receiving and storing operations are repeated for multiple objects whose associated placement policies match the first placement policy, until a first termination condition occurs. Then, the first journal is closed. Subsequently, the first journal is replicated to a second instance of the distributed storage system according to the first placement policy.

Claims (59)

1. A method for managing placement of object replicas in a distributed storage system, comprising:

at a first instance of the distributed storage system, having one or more processors and memory, wherein the memory stores a plurality of objects and stores one or more programs configured for execution by the one or more processors:

opening one or more journals for storage of object chunks, wherein:

each journal is a file associated with a single respective placement policy;

each journal file includes a journal index that identifies object chunks stored in the journal file; and

each placement policy specifies a target number of object replicas and a target set of locations for object replicas;

receiving a first object comprising at least a first object chunk, wherein the first object has a predetermined association with a first placement policy;

storing the first object chunk in a first journal whose associated placement policy matches the first placement policy, wherein the first journal stores only object chunks for objects whose placement policies match the first placement policy;

for the first journal, repeating the receiving and storing operations for a first plurality of objects whose associated predetermined placement policies match the first placement policy, until a first termination condition occurs;

when the first termination condition occurs, closing the first journal, thereby preventing any additional object chunks from being stored in the first journal; and

replicating the first journal to a second instance of the distributed storage system in accordance with the target number of object replicas and the target set of locations for object replicas of the first placement policy.

2. The method of claim 1 , wherein the first object comprises two or more object chunks, including a second object chunk distinct from the first object chunk, and wherein the second object chunk is stored in a second journal, distinct from the first journal, whose associated placement policy matches the first placement policy and stores only object chunks for objects whose placement policies match the first placement policy.

3. The method of claim 1 , further comprising:

transmitting a message to a third instance of the distributed storage system to open a replica of the first journal at the third instance;

for each object chunk stored in the first journal, transmitting the object chunk to the third instance for storage in the replica of the first journal at the third instance; and

when the first termination condition occurs, transmitting a message to the third instance to close the replica of the first journal at the third instance.

4. The method of claim 1 , wherein the distributed storage system includes object metadata that specifies in which journal each object chunk is stored, and each respective journal replica includes a chunk index that specifies the location of each object chunk stored in the respective journal replica.

5. The method of claim 4 , further comprising at the first instance:

selecting a replica of a first closed journal;

identifying one or more object chunks stored in the replica for which there are no references in the object metadata; and

updating the chunk index in the replica to deallocate the storage space of the identified one or more object chunks.

6. The method of claim 5 , further comprising compacting the replica, thereby consolidating the object chunks stored in the replica into a contiguous block.

7. The method of claim 1 , wherein the first termination condition occurs when the size of the first journal exceeds a predefined threshold.

8. The method of claim 1 , wherein the first termination condition occurs when the first journal has been open for a predefined span of time.

9. The method of claim 1 , wherein the distributed storage system includes journal metadata that specifies the locations where each journal is stored, the method further comprising updating the journal metadata when the first journal is replicated to the second instance.

10. The method of claim 1 , wherein the one or more open journals at the first instance include two or more journals associated with the same placement policy.

11. The method of claim 1 , further comprising stitching together two or more closed journals to form a single replacement journal, and updating object metadata to indicate that object chunks previously stored in the two or more journals are now stored in the replacement journal.

12. The method of claim 1 , wherein the distributed storage system has a plurality of instances.

13. The method of claim 12 , wherein at least a subset of the instances are at distinct geographic locations.

14. A computer system for managing placement of object replicas in a distributed storage system having a plurality of instances, each respective instance comprising:

one or more processors;

memory; and

one or more programs stored in the memory, the one or more programs comprising instructions executable by the one or more processors for:

opening one or more journals for storage of object chunks, wherein:

each journal is a file stored in the memory and is associated with a single respective placement policy;

each journal file includes a journal index that identifies object chunks stored in the journal file; and

each placement policy specifies a target number of object replicas and a target set of locations for object replicas;

receiving a first object comprising at least a first object chunk, wherein the first object has a predetermined association with a first placement policy;

storing the first object chunk in a first journal whose associated placement policy matches the first placement policy, wherein the first journal stores only object chunks for objects whose placement policies match the first placement policy;

for the first journal, repeating the receiving and storing operations for a first plurality of objects whose associated predetermined placement policies match the first placement policy, until a first termination condition occurs;

when the first termination condition occurs, closing the first journal, thereby preventing any additional object chunks from being stored in the first journal; and

replicating the first journal to a second instance of the distributed storage system, distinct from the respective instance, in accordance with the target number of object replicas and the target set of locations for object replicas of the first placement policy.

15. The computer system of claim 14 , wherein the first object comprises two or more object chunks, including a second object chunk distinct from the first object chunk, and wherein the second object chunk is stored in a second journal, distinct from the first journal, whose associated placement policy matches the first placement policy and stores only object chunks for objects whose placement policies match the first placement policy.

16. The computer system of claim 14 , wherein the distributed storage system includes object metadata that specifies in which journal each object chunk is stored, and each respective journal replica includes a chunk index that specifies the location of each object chunk stored in the respective journal replica.

17. The computer system of claim 16 , wherein the one or more programs further comprise instructions for:

selecting a replica of a first closed journal;

identifying one or more object chunks stored in the replica for which there are no references in the object metadata; and

updating the chunk index in the replica to deallocate the storage space of the identified one or more object chunks.

18. The computer system of claim 17 , wherein the one or more programs further comprise instructions for compacting the replica, thereby consolidating the object chunks stored in the replica into a contiguous block.

19. A non-transitory computer readable storage medium storing one or more programs configured for execution by one or more processors of a computer system to manage placement of object replicas in a distributed storage system having a plurality of instances, the one or more programs at each respective instance comprising instructions for:

opening one or more journals for storage of object chunks, wherein:

each journal is a file stored in the memory and is associated with a single respective placement policy;

each journal file includes a journal index that identifies object chunks stored in the journal file; and

each placement policy specifies a target number of object replicas and a target set of locations for object replicas;

receiving a first object comprising at least a first object chunk, wherein the first object has a predetermined association with a first placement policy;

storing the first object chunk in a first journal whose associated placement policy matches the first placement policy, wherein the first journal stores only object chunks for objects whose placement policies match the first placement policy;

for the first journal, repeating the receiving and storing operations for a first plurality of objects whose associated predetermined placement policies match the first placement policy, until a first termination condition occurs;

when the first termination condition occurs, closing the first journal, thereby preventing any additional object chunks from being stored in the first journal; and

replicating the first journal to a second instance of the distributed storage system, distinct from the respective instance, in accordance with the target number of object replicas and the target set of locations for object replicas of the first placement policy.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2013
From: KESSELMAN, ALEXANDER; DROBYCHEV, ALEXANDRE; DATUASHVILI, GEORGE
To: GOOGLE INC.
Reel/Frame 030952/0737 →
Continuity (1)
Related Publication 20140379715A1 · Dec 25, 2014