IP Library Granted Patent US 7,779,224
Granted Patent B2
US 7,779,224 · App. 11/840,378 · Granted Aug 17, 2010

Data 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 7,779,224
App. No.
11/840,378
Granted
Aug 17, 2010
Kind
B2
Abstract

A method for storing data, consisting of distributing a first plurality of groups of logical addresses among one or more storage devices in a storage system, receiving a second plurality of data-sets containing the data to be stored, and assigning each data-set among the plurality of data-sets a random number chosen from a first plurality of different numbers. The method further consists of partitioning each data-set into multiple partitions, so that each partition among the multiple partitions receives a sequential partition number, assigning each partition within each data-set to be stored at a specific group of logical addresses in the storage system in accordance with the sequential partition number of the partition and the random number assigned to the data-set, and storing each partition in the storage system at the assigned specific group of logical addresses.

Claims (54)

1. A method for storing data, comprising:

distributing a first plurality of groups of logical addresses among one or more storage devices;

receiving a second plurality of data-sets containing the data to be stored;

assigning each data-set among the plurality of data-sets a number chosen from a first plurality of different numbers;

partitioning each data-set into multiple partitions, so that each partition among the multiple partitions receives a sequential partition number;

assigning each partition within each data-set to be stored at a specific group of logical addresses in accordance with the sequential partition number of the partition and the number assigned to the data-set; and

storing each partition at the assigned specific group of logical addresses; wherein:

the first plurality of groups comprises s groups, each having a different integral group number between 1 and s,

the number comprises an integer r randomly chosen from and including integers between 0 and s−1,

the sequential partition number comprises a positive integer p, and

the group number of the assigned specific group is (r+p)modulo(s) if (r+p)modulo(s)≠0, and s if (r+p)modulo(s)=0.

2. The method according to claim 1 , wherein the multiple partitions comprise equal size partitions.

3. The method according to claim 1 , wherein the data-sets comprise data from at least one of a file, file meta-data, a storage object, a data packet, a video tape, a music track, an image, a database record, contents of a logical unit, and an email.

4. The method according to claim 1 , wherein the one or more storage devices are operative in at least one of a storage area network, a network attached storage system, and an object storage architecture.

5. The method according to claim 1 , wherein the number is chosen by a randomizing function.

6. The method according to claim 1 , wherein the number is chosen by a consistent hashing function.

7. A data storage system, comprising:

one or more mass-storage devices, coupled to store partitions of data at respective first ranges of logical addresses (LAs);

a plurality of interim devices, configured to operate independently of one another, each interim device being assigned a respective second range of the LAs and coupled to receive the partitions of data from and provide the partitions of data to the one or more mass-storage devices having LAs within the respective second range; and

one or more interfaces, which are adapted to receive input/output (IO) requests from host processors, to identify specified partitions of data in response to the IO requests, to convert the IO requests to converted-IO-requests directed to specified LAs in response to the specified partitions of data, and to direct all the converted-IO-requests to the interim device to which the specified LAs are assigned.

8. The storage system according to claim 7 , wherein at least one of the mass-storage devices has a slow access time, and wherein at least one of the interim devices has a fast access time.

9. The storage system according to claim 7 , wherein the one or more mass-storage devices are coupled to provide a balanced access to the first ranges of LAs.

10. The storage system according to claim 7 , wherein the storage system is operative in at least one of a storage area network, a network attached storage system, and an object storage architecture.

11. The data storage system according to claim 7 , wherein the one or more interfaces are further adapted to receive at least part of a data-set containing the data.

12. The data storage system according to claim 11 , wherein the data-set comprises data from at least one of a file, file meta-data, a storage object, a data packet, a video tape, a music track, an image, a database record, contents of a logical unit, and an email.

13. A data storage system, comprising:

one or more storage devices wherein are distributed a first plurality of groups of logical addresses; and

a processing unit which is adapted to:

receive a second plurality of data-sets containing the data to be stored, assign each data-set among the plurality of data-sets a number chosen from a first plurality of different numbers,

partition each data-set into multiple partitions, so that each partition among the multiple partitions receives a sequential partition number,

assign each partition within each data-set to be stored at a specific group of logical addresses in the one or more storage devices in accordance with the sequential partition number of the partition and the number assigned to the data-set, and

store each partition in the one or more storage devices at the assigned specific group of logical addresses; wherein:

the first plurality of groups comprises s groups each having a different integral group number between 1 and s,

the number comprises an integer r randomly chosen from and including integers between 0 and s−1,

the sequential partition number comprises a positive integer p, and

the group number of the assigned specific group is (r+p)modulo(s) if (r+p)modulo(s)≠0, and s if (r+p)modulo(s)=0.

14. The data storage system according to claim 13 , wherein the multiple partitions comprise equal size partitions.

15. The data storage system according to claim 13 , wherein the data-sets comprise data from at least one of a file, file meta-data, a storage object, a data packet, a video tape, a music track, an image, a database record, contents of a logical unit, and an email.

16. The data storage system according to claim 13 , wherein the one or more storage devices and the processing unit are operative in at least one of a storage area network, a network attached storage system, and an object storage architecture.

17. The data storage system according to claim 13 , wherein the number is chosen by a randomizing function.

18. The data storage system according to claim 13 , wherein the number is chosen by a consistent hashing function.

19. The data storage system according to claim 13 , wherein each data-set comprises data from at least one of a file, file meta-data, a storage object, a data packet, a video tape, a music track, an image, a database record, contents of a logical unit, and an email.

20. A method for storing data, comprising:

coupling one or more mass-storage devices to store partitions of data at respective first ranges of logical addresses (LAs);

configuring a plurality of interim devices to operate independently of one another;

assigning each interim device a respective second range of the LAs;

coupling each interim device to receive the partitions of data from and provide the partitions of data to the one or more mass-storage devices having LAs within the respective second range;

receiving input/output (IO) requests from host processors;

identifying specified partitions of data in response to the IO requests;

converting the IO requests to converted-IO-requests directed to specified LAs in response to the specified partitions of data; and

directing all the converted-IO-requests to the interim device to which the specified LAs are assigned.

21. The method according to claim 20 , wherein at least one of the mass-storage devices has a slow access time, and wherein at least one of the interim devices has a fast access time.

22. The method according to claim 20 , wherein the one or more mass-storage devices are coupled to provide a balanced access to the first ranges of LAs.

23. The method according to claim 20 , wherein the one or more storage devices and the plurality of interim devices are operative in at least one of a storage area network, a network attached storage system, and an object storage architecture.