IP Library › Granted Patent US 9,098,201
Granted Patent B2
US 9,098,201 · App. 13/530,604 · Granted Aug 4, 2015

Dynamic data placement for distributed storage

Inventors: Matthew W. Benjamin (Ann Arbor, MI); Adam C. Emerson (Ann Arbor, MI); Peter Honeyman (Ann Arbor, MI)
Assignee: COHORT FS, LLC
G06F3/0607G06F3/067G06F3/0644
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,098,201
App. No.
13/530,604
Granted
Aug 4, 2015
Kind
B2
Abstract

A command is received to alter data storage in a cluster, along with parameters for executing the command. Information is obtained relating to one or more volumes in the cluster and information relating to devices in the cluster. A formal description of a placement function is generated that maps one or more object identifiers to a storage device set. Placement function code is generated by compiling the formal description of the placement function to computer-executable code.

Claims (47)

1. A system, comprising:

a monitor computing device that includes a processor and a memory, the memory including instructions executable by the processor, the instructions including instructions for:

receiving user input including a command to alter data storage in a cluster, along with parameters for executing the command;

obtaining information, from one or more other computing devices, relating to one or more volumes in the cluster and information relating to devices in the cluster;

generating, in the monitor computing device, and without receiving further user input, a formal description of a placement function that maps one or more object identifiers to a storage device set based on the information obtained from one or more other computing devices relating to one or more volumes in the cluster and devices in the cluster;

generating placement function code by compiling the formal description of the placement function to computer-executable code; and

at least one second device that includes a second processor and a second memory, the second memory configured to store the placement function code, and the second processor configured to execute the placement function code.

2. The system of claim 1 , the instructions in the monitor computing device further including instructions for executing the placement function code.

3. The system of claim 1 , the instructions in the monitor computing device further including instructions for storing the placement function in an exception table that associates the placement functions with a volume for which the placement function was not specified with a location in the container for which the placement function was not specified.

4. The system of claim 1 , wherein the parameters include at least one of a performance requirement, a space requirement, and a data location requirement.

5. The system of claim 1 , wherein the information relating to one or more volumes in the cluster includes at least one of parameters already established for pre-existing volumes, capacity of pre-existing volumes, and current realizations of pre-existing volumes.

6. The system of claim 1 , wherein the information relating to devices in the cluster includes at least one of an enumeration of devices in the cluster, capacity of devices in the cluster, connections of devices in the cluster to each other, devices' membership in partitions, devices' performance, and include statistical information about use of the cluster.

7. The system of claim 1 , wherein generating the placement function includes representing a set of storage devices from the cluster in a binary tree.

8. A system, comprising:

a storage device that includes a processor and a memory, the memory including instructions executable by the processor, the instructions including instructions for:

receiving a request for a data operation, the data operation including either reading or writing data in a specified first volume,

determining whether a placement function for the data is found in an exception table that associates a placement function with a container, the placement function specifying at least one second volume for storing data in the storage device;

if a placement function is found in the exception table, using the placement function to perform the requested operation using the second volume;

if a placement function is not found in the exception table, using a placement function found in metadata for the first volume to perform the requested operation.

9. The system of claim 8 , the instructions further comprising instructions for, if the requested operation is a write operation, identifying a second storage device in a parity list for the data, and signaling the second storage device to perform replication based on the operation.

10. A method, comprising:

receiving, in a monitor computing device, user input including a command to alter data storage in a cluster, along with parameters for executing the command;

obtaining information, from one or more other computing devices, relating to one or more volumes in the cluster and information relating to devices in the cluster;

generating, in the monitor computing device, and without receiving further user input, a formal description of a placement function that maps one or more object identifiers to a storage device set based on the information obtained from one or more other computing devices relating to one or more volumes in the cluster and devices in the cluster;

generating placement function code by compiling the formal description of the placement function to computer-executable code;

sending the placement function code to at least one second device; and

executing the placement function code on the second device.

11. The method of claim 10 , further comprising executing the placement function code in the monitor computing device.

12. The method of claim 10 , further comprising storing the placement function in an exception table that associates the placement functions with a volume for which the placement function was not specified with a location in the container for which the placement function was not specified.

13. The method of claim 10 , wherein the parameters include at least one of a performance requirement, a space requirement, and a data location requirement.

14. The method of claim 10 , wherein the information relating to one or more volumes in the cluster includes at least one of parameters already established for pre-existing volumes, capacity of pre-existing volumes, and current realizations of pre-existing volumes.

15. The method of claim 10 , wherein the information relating to devices in the cluster includes at least one of an enumeration of devices in the cluster, capacity of devices in the cluster, connections of devices in the cluster to each other, devices' membership in partitions, devices' performance, and include statistical information about use of the cluster.

16. The method of claim 10 , wherein generating the placement function includes representing a set of storage devices from the cluster in a binary tree.

17. A method, comprising:

receiving a request for a data operation, the data operation including either reading or writing data in a specified first volume,

determining whether a placement function for the data is found in an exception table that associates a placement function with a container, the placement function specifying at least one second volume for storing data in the storage device;

if a placement function is found in the exception table, using the placement function to perform the requested operation using the second volume;

if a placement function is not found in the exception table, using a placement function found in metadata for the first volume to perform the requested operation.

18. The method of claim 17 , further comprising determining if the requested operation is a write operation, and, if the requested operation is a write operation, identifying a second storage device in a parity list for the data, and signaling the second storage device to perform replication based on the operation.

19. A system, comprising:

a first device that includes a processor and a memory, the memory including instructions executable by the processor, the instructions including instructions for:

receiving user input including a command to alter data storage in a cluster, along with parameters for executing the command;

obtaining information, from one or more other computing devices, relating to one or more volumes in the cluster and information relating to devices in the cluster;

generating, in the monitor computing device, and without receiving further user input, a formal description of a placement function that maps one or more object identifiers to a storage device set based on the information obtained from one or more other computing devices relating to one or more volumes in the cluster and devices in the cluster; and

sending the formal description of the placement function to a second device; and

the second device, including a processor and a memory, the memory including instructions executable by the processor, the instructions including instructions for:

generating placement function code by compiling the formal description of the placement function to computer-executable code.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2015
From: COHORTFS LLC
To: RED HAT, INC.
Reel/Frame 036668/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2012
From: BENJAMIN, MATTHEW W.; EMERSON, ADAM C.; HONEYMAN, PETER
To: COHORTFS, LLC
Reel/Frame 028426/0798 →
Continuity (2)
Provisional Application 61571251 · Jun 23, 2011
Related Publication 20120331249A1 · Dec 27, 2012