Method of hashing address space to storage servers
First Claim
1. A method of hashing an address space to a plurality of storage servers comprising the steps of:
- dividing the address space by a number of the storage servers to form data segments, each data segment comprising a base address;
assigning the data segments to the storage servers;
measuring a load on each of the storage servers, wherein measuring the load on each of the storage servers comprises computing a weighted aggregate of outstanding read and write requests, wherein the load comprises a cumulative load which comprises an aggregate of an instantaneous load taken at time intervals over a time period;
adjusting data shares assigned to the storage servers to approximately balance the loads on the storage servers while maintaining the base address for each data segment on a corresponding originally assigned storage server, wherein adjusting the data share for each of the storage servers comprises calculating an adjusted data share for each of the storage servers based on an existing data share of the corresponding storage server, and on the load of the corresponding storage server; and
moving at least a portion of at least one of the data segments between the storage servers in response to adjusting the data shares.
4 Assignments
0 Petitions
Accused Products
Abstract
An embodiment of a method of hashing an address space to a plurality of storage servers begins with a first step of dividing the address space by a number of the storage servers to form data segments. Each data segment comprises a base address. A second step assigns the data segments to the storage servers according to a sequence. The method continues with a third step of measuring a load on each of the storage servers. According to an embodiment, the method concludes with a fourth step of adjusting data shares assigned to the storage servers according to the sequence to approximately balances the loads on the storage servers while maintaining the base address for each data segment on an originally assigned storage server. According to another embodiment, the method periodically performs the third and fourth steps to maintain an approximately balanced load on the storage servers.
-
Citations
37 Claims
-
1. A method of hashing an address space to a plurality of storage servers comprising the steps of:
-
dividing the address space by a number of the storage servers to form data segments, each data segment comprising a base address; assigning the data segments to the storage servers; measuring a load on each of the storage servers, wherein measuring the load on each of the storage servers comprises computing a weighted aggregate of outstanding read and write requests, wherein the load comprises a cumulative load which comprises an aggregate of an instantaneous load taken at time intervals over a time period; adjusting data shares assigned to the storage servers to approximately balance the loads on the storage servers while maintaining the base address for each data segment on a corresponding originally assigned storage server, wherein adjusting the data share for each of the storage servers comprises calculating an adjusted data share for each of the storage servers based on an existing data share of the corresponding storage server, and on the load of the corresponding storage server; and moving at least a portion of at least one of the data segments between the storage servers in response to adjusting the data shares. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A method of hashing an address space to a plurality of storage servers comprising the steps of:
-
dividing the address space by a number of the storage servers to form data segments, each data segment comprising a base address; assigning the data segments to the storage servers according to an assignment sequence; measuring a load on each of the storage servers, wherein measuring the load on each of the storage servers comprises computing a weighted aggregate of outstanding read and write requests, wherein the load comprises a cumulative load which comprises an aggregate of an instantaneous load taken at time intervals over a time period; for each of the storage servers, determining whether a data share for the corresponding storage server needs to be decreased or increased to approximately balance the loads on the storage servers in order to identify at least one over-utilized storage server and at least one under-utilized storage server; for each of the storage servers for which the data share is to be decreased or increased, calculating the decreased or increased data share based on an existing data share for the corresponding storage server and the load of the corresponding storage server; and proceeding through the storage servers according to the assignment sequence and for each over-utilized storage server reassigning a portion of a particular data segment on the over-utilized storage server to at least one sequentially available under-utilized storage server while maintaining the base address of the particular data segment on a corresponding originally assigned storage server. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. A non-transitory computer readable storage media comprising computer code that upon execution by a computer is for implementing a method of hashing an address space to a plurality of storage servers, the method of hashing the address space to the plurality of storage servers comprising the steps of:
-
dividing the address space by a number of the storage servers to form data segments, each data segment comprising a base address; assigning the data segments to the storage servers; measuring a load on each of the storage servers, wherein measuring the load on each of the storage servers comprises computing a weighted aggregate of outstanding read and write requests, wherein the load comprises a cumulative load which comprises an aggregate of an instantaneous load taken at time intervals over a time period; adjusting data shares assigned to the storage servers to approximately balance the loads on the storage servers while maintaining the base address for each data segment on a corresponding originally assigned storage server, wherein adjusting the data share for each of the storage servers comprises calculating an adjusted data share for each of the storage servers based on an existing data share of the corresponding storage server, and on the load of the corresponding storage server; and moving at least a portion of at least one of the data segments between the storage servers in response to adjusting the data shares.
-
-
37. A non-transitory computer readable storage media comprising computer code that upon execution by a computer is for implementing a method of hashing an address space to a plurality of storage servers, the method of hashing the address space to the plurality of storage servers comprising the steps of:
-
dividing the address space by a number of the storage servers to form data segments, each data segment comprising a base address; assigning the data segments to the storage servers according to an assignment sequence; measuring a load on each of the storage servers, wherein measuring the load on each of the storage servers comprises computing a weighted aggregate of outstanding read and write requests, wherein the load comprises a cumulative load which comprises an aggregate of an instantaneous load taken at time intervals over a time period; for each of the storage servers, determining whether a data share for the corresponding storage server needs to be decreased or increased to approximately balance the loads on the storage servers in order to identify at least one over-utilized storage server and at least one under-utilized storage server; for each of the storage servers for which the data share is to be decreased or increased, calculating the decreased or increased data share based on an existing data share for the corresponding storage server and the load of the corresponding storage server; and proceeding through the storage servers according to the assignment sequence and for each over-utilized storage server reassigning a portion of a particular data segment on the over-utilized storage server to at least one sequentially available under-utilized storage server while maintaining the base address of the particular data segment on a corresponding originally assigned storage server.
-
Specification