IP Library Granted Patent US 9,052,826
Granted Patent B2
US 9,052,826 · App. 12/984,553 · Granted Jun 9, 2015

Selecting storage locations for storing data based on storage location attributes and data usage statistics

Inventors: Gary Quan (La Cresenta, CA); Basil Thomas (Sylmar, CA); Craig Jensen (Clearwater, FL)
Assignee: CONDUSIV TECHNOLOGIES CORPORATION
G06F3/061G06F3/0616G06F3/0643G06F3/0644G06F3/0653G06F3/0673
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,052,826
App. No.
12/984,553
Granted
Jun 9, 2015
Kind
B2
Abstract

Techniques for selecting physical storage locations for storing data are provided. A technique involves determining usage statistics associated with a logical block in a file system, selecting a physical storage location, of a plurality of physical storage locations, to assign to the logical block based on (a) at least one attribute associated with the first physical storage location, and (b) the usage statistics associated with the logical block, and causing the logical block to be assigned to the first physical storage location.

Claims (86)

1. A computer-implemented method comprising:

determining separate usage statistics associated with each logical block of a plurality of logical blocks of a file in a file system, wherein the usage statistics associated with one or more logical blocks includes a time of data access of said one or more logical blocks related to an external event;

selecting a first physical storage location, of a plurality of physical storage locations, to assign to a logical block based on at least one attribute associated with the first physical storage location, and the usage statistics associated with the logical block; and

causing the logical block to be assigned to the first physical storage location.

2. The method as recited in claim 1 , further comprising:

receiving a request to read data logically stored in the logical block, wherein the data is stored at the first physical storage location and at a second physical storage location; and

reading the data from the first physical storage location based at least on a particular attribute associated with the first physical storage location.

3. The method as recited in claim 1 , further comprising:

receiving a request to read data stored at a second physical storage location;

determining that the data is also stored at the first physical storage location; and

reading the data from the first physical storage location based at least on a particular attribute associated with the first physical storage location.

4. The method as recited in claim 3 , wherein the particular attribute is a current utilization of the first physical storage location.

5. The method as recited in claim 1 , wherein determining usage statistics comprises monitoring access to any data logically stored in the logical block to determine access information, and aggregating the access information.

6. The method as recited in claim 5 , wherein determining usage statistics further comprises identifying repeated patterns in the aggregated information.

7. The method as recited in claim 1 , wherein determining usage statistics comprises monitoring data access requests, from an operating system, which refer to the logical block including a type of access and a time of access.

8. The method as recited in claim 1 , wherein the usage statistics comprise one or more of:

a read frequency associated with any data logically stored in the logical block;

a write frequency associated with any data logically stored in the logical block; and

an access timing associated with any data logically stored in the logical block.

9. The method as recited in claim 1 , wherein the data, logically stored in a logical block, is a smallest unit of memory that can be individually requested from a secondary storage device.

10. The method as recited in claim 1 , wherein selecting the first physical storage location comprises selecting consecutive physical memory space for storing data logically stored in the logical memory block.

11. The method as recited in claim 1 , wherein the at least one attribute comprises a read access speed or a write access speed of the first physical storage location.

12. The method as recited in claim 1 , wherein the external event at least one attribute comprises one or more of a system shutdown, a system startup, a system hibernate, a system suspend, and a system resume.

13. The method as recited in claim 1 , wherein the at least one attribute comprises an estimated number of write-accesses-before-failure for the first physical storage location.

14. The method as recited in claim 1 , wherein the at least one attribute comprises an estimated number of read-accesses-before-failure for the first physical storage location.

15. The method as recited in claim 1 , wherein the at least one attribute comprises attributes of data already stored at the first physical storage location before the first physical storage location is selected.

16. The method as recited in claim 1 , wherein causing the logical block to be assigned to the first physical storage location comprises:

mapping the logical block to the first physical storage location in a mapping of a plurality of logical blocks to the plurality of physical storage locations.

17. A non-transitory computer readable storage medium comprising instructions, which when executed by one or more processors, perform steps comprising:

determining separate usage statistics associated with each logical block of a plurality of logical blocks of a file in a file system, wherein the usage statistics associated with one or more logical blocks includes a time of data access of said one or more logical blocks related to an external event;

selecting a first physical storage location, of a plurality of physical storage locations, to assign to a logical block based on at least one attribute associated with the first physical storage location, and the usage statistics associated with the logical block; and

causing the logical block to be assigned to the first physical storage location.

18. The computer readable storage medium as recited in claim 17 , further comprising instructions for performing:

receiving a request to read data logically stored in the logical block, wherein the data is stored at the first physical storage location and at a second physical storage location; and

reading the data from the first physical storage location based at least on a particular attribute associated with the first physical storage location.

19. The computer readable storage medium as recited in claim 17 , further comprising instructions for performing:

receiving a request to read data stored at a second physical storage location;

determining that the data is also stored at the first physical storage location; and

reading the data from the first physical storage location based at least on a particular attribute associated with the first physical storage location.

20. The computer readable storage medium as recited in claim 19 , wherein the particular attribute is a current utilization of the first physical storage location.

21. The computer readable storage medium as recited in claim 17 , wherein determining usage statistics comprises monitoring access to any data logically stored in the logical block to determine access information, and aggregating the access information.

22. The computer readable storage medium as recited in claim 21 , wherein determining usage statistics further comprises identifying repeated patterns in the aggregated information.

23. The computer readable storage medium as recited in claim 17 , wherein determining usage statistics comprises monitoring data access requests, from an operating system, which refer to the logical block.

24. The computer readable storage medium as recited in claim 17 , wherein the usage statistics comprise one or more of:

a read frequency associated with any data logically stored in the logical block;

a write frequency associated with any data logically stored in the logical block; and

an access timing associated with any data logically stored in the logical block.

25. The computer readable storage medium as recited in claim 17 , wherein the data, logically stored in a logical block, is a smallest unit of memory that can be individually requested from a secondary storage device.

26. The computer readable storage medium as recited in claim 17 , wherein selecting the first physical storage location comprises selecting consecutive physical memory space for storing data logically stored in the logical block.

27. The computer readable storage medium as recited in claim 17 , wherein the at least one attribute comprises a read access speed of the first physical storage location.

28. The computer readable storage medium as recited in claim 17 , wherein the at least one attribute comprises a write access speed of the first physical storage location.

29. The computer readable storage medium as recited in claim 17 , wherein the at least one attribute comprises an estimated number of write-accesses-before-failure for the first physical storage location.

30. The computer readable storage medium as recited in claim 17 , wherein the at least one attribute comprises an estimated number of read-accesses-before-failure for the first physical storage location.

31. The computer readable storage medium as recited in claim 17 , wherein the at least one attribute comprises attributes of data already stored at the first physical storage location before the first physical storage location is selected.

32. The computer readable storage medium as recited in claim 17 , wherein causing the logical block to be assigned to the first physical storage location comprises:

mapping the logical block to the first physical storage location in a mapping of a plurality of logical blocks to the plurality of physical storage locations.

33. A system comprising:

at least one hardware processor;

the system being configured to perform operations comprising:

determining separate usage statistics associated with each logical block of a plurality of logical blocks of a file in a file system, wherein the usage statistics associated with one or more logical blocks includes a time of data access of said one or more logical blocks related to an external event;

selecting a first physical storage location, of a plurality of physical storage locations, to assign to a logical block based on at least one attribute associated with the first physical storage location, and the usage statistics associated with the logical block; and

causing the logical block to be assigned to the first physical storage location.

34. The system as recited in claim 33 , wherein the operations further comprise:

receiving a request to read data logically stored in the logical block, wherein the data is stored at the first physical storage location and at a second physical storage location; and

reading the data from the first physical storage location based at least on a particular attribute associated with the first physical storage location.

35. The system as recited in claim 33 , wherein the operations further comprise:

receiving a request to read data stored at a second physical storage location;

determining that the data is also stored at the first physical storage location; and

reading the data from the first physical storage location based at least on a particular attribute associated with the first physical storage location.

36. The system as recited in claim 35 , wherein the particular attribute is a current utilization of the first physical storage location.

37. The system as recited in claim 33 , wherein determining usage statistics comprises monitoring access to any data logically stored in the logical block to determine access information, and aggregating the access information.

38. The system as recited in claim 37 , wherein determining usage statistics further comprises identifying repeated patterns in the aggregated information.

39. The system as recited in claim 33 , wherein determining usage statistics comprises monitoring data access requests, from an operating system, which refer to the logical block.

40. The system as recited in claim 33 , wherein the usage statistics comprise one or more of:

a read frequency associated with any data logically stored in the logical block;

a write frequency associated with any data logically stored in the logical block; and

an access timing associated with any data logically stored in the logical block.

41. The system as recited in claim 33 , wherein the data, logically stored in a logical block, is a smallest unit of memory that can be individually requested from a secondary storage device.

42. The system as recited in claim 33 , wherein selecting the first physical storage location comprises selecting consecutive physical memory space for storing data logically stored in the logical block.

43. The system as recited in claim 33 , wherein the at least one attribute comprises a read access speed of the first physical storage location.

44. The system as recited in claim 33 , wherein the at least one attribute comprises a write access speed of the first physical storage location.

45. The system as recited in claim 33 , wherein the at least one attribute comprises an estimated number of write-accesses-before-failure for the first physical storage location.

46. The system as recited in claim 33 , wherein the at least one attribute comprises an estimated number of read-accesses-before-failure for the first physical storage location.

47. The system as recited in claim 33 , wherein the at least one attribute comprises attributes of data already stored at the first physical storage location before the first physical storage location is selected.

48. The system as recited in claim 33 , wherein causing the logical block to be assigned to the first physical storage location comprises:

mapping the logical block to the first physical storage location in a mapping of a plurality of logical blocks to the plurality of physical storage locations.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2021
From: CONDUSIV TECHNOLOGIES
To: GQRC TECHNOLOGIES, LLC
Reel/Frame 054876/0222 →
CHANGE OF NAME Recorded Mar 20, 2012
From: DISKEEPER CORPORATION
To: CONDUSIV TECHNOLOGIES CORPORATION
Reel/Frame 027897/0101 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2011
From: QUAN, GARY; THOMAS, BASIL; JENSEN, CRAIG
To: DISKEEPER CORPORATION
Reel/Frame 025984/0503 →
Continuity (7)
Continuation In Part 12349457 · Jan 6, 2009
Continuation In Part 11495184 · Jul 28, 2006
Continuation In Part 12984553 · Jan 4, 2011
Continuation In Part 12971835 · Dec 17, 2010
Continuation In Part 11495184 · Jul 28, 2006
Provisional Application 61020361 · Jan 10, 2008
Related Publication 20110167230A1 · Jul 7, 2011