Source: https://patents.google.com/patent/US9052826B2/en
Timestamp: 2019-06-16 04:07:20
Document Index: 39332621

Matched Legal Cases: ['§119', 'application No. 200980102072', 'Application No. 09700908', 'Application No. 09700908', 'Application No. 2010', 'Application No. 2010', 'application No. 200980102072']

US9052826B2 - Selecting storage locations for storing data based on storage location attributes and data usage statistics - Google Patents
Selecting storage locations for storing data based on storage location attributes and data usage statistics Download PDF
US9052826B2
US9052826B2 US12/984,553 US98455311A US9052826B2 US 9052826 B2 US9052826 B2 US 9052826B2 US 98455311 A US98455311 A US 98455311A US 9052826 B2 US9052826 B2 US 9052826B2
US12/984,553
US20110167230A1 (en
2008-01-10 Priority to US2036108P priority
2009-01-06 Priority to US12/349,457 priority patent/US20090132621A1/en
2011-01-04 Priority to US12/984,553 priority patent/US9052826B2/en
2011-01-04 Application filed by CONDUSIV TECHNOLOGIES CORPORATION filed Critical CONDUSIV TECHNOLOGIES CORPORATION
2011-03-18 Assigned to DISKEEPER CORPORATION reassignment DISKEEPER CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JENSEN, CRAIG, QUAN, GARY, THOMAS, BASIL
2011-07-07 Publication of US20110167230A1 publication Critical patent/US20110167230A1/en
2015-06-09 Publication of US9052826B2 publication Critical patent/US9052826B2/en
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.
This application claims priority as a Continuation-In-Part of application Ser. No. 12/349,457 filed on Jan. 6, 2009, which claims priority under 35 U.S.C. §119 to U.S. Provisional Application Ser. No. 61/020,361 filed on Jan. 10, 2008 and also claims priority as a Continuation-In-Part of application Ser. No. 11/495,184 filed on Jul. 28, 2006. This application also claims priority as a Continuation-In-Part of application Ser. No. 12/971,835 filed on Dec. 17, 2010, which claims priority as a Continuation-In-Part of application Ser. No. 11/495,184 filed on Jul. 28, 2006.
This application hereby incorporates by reference: U.S. application Ser. No. 12/349,457, U.S. application Ser. No. 11/495,184 filed on Jul. 28, 2006, U.S. Provisional Application Ser. No. 61/020,361 filed on Jan. 10, 2008, and U.S. application Ser. No. 12/971,835 filed on Dec. 17, 2010.
The present invention relates to selecting physical storage locations. More specifically, the invention relates to selecting physical storage locations for data storage based on storage location attributes and data usage statistics.
Data is physically stored at physical storage locations within physical storage media. Examples of the physical storage media include magnetic disks, optical disks, magneto-optical disks, solid state drives, etc. Physical storage media may also include hybrids which are combinations of two or more different types of physical storage media. For example, physical storage media may be implemented as a combination of a solid state drive and a rotating platter drive.
Data physically stored in physical storage media is organized in a disk file maintained by an operating system. A disk file is partitioned into multiple logical blocks, where each logical block is mapped or assigned to physical storage locations within the physical storage media. Data organized within a particular logical block may be accessed by reading or writing to physical storage locations that are assigned to the particular logical block. Data organized within a particular logical block, may be referred to herein, as data logically stored on the particular logical block.
FIG. 2 shows a flow diagram for data positioning in accordance with one or more embodiments;
FIG. 3 shows a block diagram of a computer system that may be used in implementing one or more embodiments.
A method for data positioning is provided. In one or more embodiments, the method involves selecting physical storage locations for storing data logically stored in a logical block of a file system. The selection of the physical storage locations is based on (a) usage statistics for the data and (b) storage location attributes.
In an embodiment, frequently accessed data is stored in physical storage locations with fast access speed, long longevity before failure, and/or storing related data.
Although specific components are recited herein as performing the method steps, in other embodiments agents or mechanisms acting on behalf of the specified components may perform the method steps. Further, although embodiments may be discussed with respect to components on a single system, the embodiments may be implemented with components distributed over multiple systems. In addition, although the embodiments may be discussed with respect to particular physical storage devices or particular physical storage types, embodiments are applicable to any physical storage device or physical storage type (e.g., a rotating disk drive, a solid state drive (SSD), Network Attached Storage (NAS), Storage Area Network (SAN), a hybrid drive etc.).
Embodiments also include any system(s) or device(s) which comprise means for performing the method steps described herein. Embodiments also include a computer readable medium with instructions, which when executed by a processor, cause the method steps described herein to be performed.
Although a specific system architecture is described herein, other embodiments are applicable to any architecture that can be used for data positioning. FIG. 1 shows an exemplary system (100) for data positioning in accordance with one or more embodiments. As shown in FIG. 1, the system (100) includes a data positioning engine (108), a storage driver(s) (112), and one or more data repositories (114). The system (100) may also include other hardware and/or software components, which although not shown, may be used for implementation of one or more embodiments. For example, an operating system maintaining a disk file may be communicatively coupled with the data positioning engine (108) or the storage driver(s) (112). Each of these components may be located on the same device or may be located on separate devices coupled by a network (e.g., Internet, Intranet, Extranet, Local Area Network (LAN), Wide Area Network (WAN), etc.), with wired and/or wireless segments or on separate devices coupled in other means. In an embodiment, the system (100) may be configured differently. For example, data positioning engine (108) may be logically located between the storage driver (112) and the data repository (114). In another example, the data positioning engine (108) may be implemented as a component of the storage driver (112).
In one or more embodiments, the system (100) is implemented using a client-server topology. In addition, the system may be accessible from other machines using one or more interfaces. In one or more embodiments, the system may be accessible over a network connection, such as the Internet, by one or more users. Information and/or services provided by the system may also be stored and accessed over the network connection.
The data repository (114) generally represents physical storage media comprising one or more storage devices with physical storage locations where data (104) may be stored. Portions of the data repository (114) may be connected directly to the system (100), may be connected over a network (116), or other suitable interfaces. The data repository (114) may include any type of storage devices known in the art. For example, the data repository (114) may include caches, Random-Access Memory (RAM), secondary storage devices, traditional rotating platter drives, solid state drives (SSDs), a hybrid combination of the traditional rotating platter drives and SSDs, a separate storage system like a Storage Area Network (SAN) or a Network Attached Storage (NAS) device.
In an embodiment, each storage device within the data repository (114) may include different types of storage locations. For example, an SSD within the data repository (114) may include different cells, such as, single level cells (SLCs), multi-level cells (MLCs), or a combination thereof. Thus, the physical storage locations within the data repository (114) that are available for storage to the system (100) may be on a single storage device or multiple storage device with varying configurations across different storage devices or even within a single storage device.
Physical Storage Location Attributes
In an embodiment, the physical storage locations and/or data storage devices within the data repository (114) may vary in physical storage location attributes (110). Examples of physical storage location attributes include sequential write speed, sequential read speed, random write speed, random read speed, longevity, input/output operations per second (IOPS), etc. The longevity of a physical storage location or data storage device generally represents the estimated lifetime of the physical storage location or the data storage device before failure. For example, the longevity of a physical storage location or data storage device may be dependent on the estimated number of writes that can be performed before failure (hereinafter referred to as “number-of-writes-before-failure”) or the estimated number of reads that can be performed before failure (hereinafter referred to as “number-of-reads-before-failure”). The number-of-writes-before-failure and/or the number-of-reads-before-failure may be estimated, for example, based on statistics based on use of similar devices. The estimated number-of-writes-before-failure and the estimated number-of-reads-before-failure may be received from a manufacturer or other source. The estimated number-of-writes-before-failure and the estimated number-of-reads-before-failure may include exact information. For example, a physical storage location, a region of physical storage locations, or a device may be programmed to fail after a particular number of reads and/or writes. The estimates may be specific numbers or may be virtually limitless. For example, a storage device may allow for a virtually limitless number of reads without failure. The longevity of a physical storage location may be a value computed based on a combination of an estimated number-of-reads-before-failure and an estimated number-of-writes-before-failure.
In an embodiment, an estimated longevity of a physical storage location or a data storage device may be a length of time for use of the physical storage location or data storage device. The longevity of a physical storage location or storage device may vary based on any factor (e.g., manufacturer, age, operating environment, etc.). Further, the physical storage location attributes (110) may include the historical usage of a particular physical storage location or a particular storage device. The actual usage of the physical storage location generally represents the number of times a physical storage location has been accessed (e.g., the number of times the physical storage location has been written to or read from), the amount of time the data storage device has been in use, etc.
In an embodiment, physical storage location attributes for a physical storage location may include the data already stored at the physical storage location. For example, data stored within a particular physical memory block that is loaded into Random-Access Memory (RAM) from a secondary storage device (e.g., a rotating platter drive) may include data logically stored in related logical blocks. In an embodiment, a selection procedure for selecting physical storage locations for data may consider other data already stored at the physical storage locations.
In an embodiment, storing related data at the same physical storage location (e.g., within the same physical memory block or within the same set of physical memory blocks) may improve performance. For example, reading related data within a single physical memory block may involve loading the single physical memory block secondary storage into RAM. Reading related data in multiple physical memory blocks may involve loading multiple physical memory blocks from secondary storage into RAM.
In an embodiment, logical blocks are partitions within a disk file used for organization of data (104). A logical block may include any amount of data. In an embodiment, a logical block is a page that can be individually referred to and loaded from a secondary storage device.
In an embodiment, data organized within a particular logical block, may be referred to herein, as data logically stored on that particular logical block. Accessing a logical block, as referred to herein, includes accessing any data that is logically stored within that logical block. Data logically stored within a logical block is physically stored at a physical storage location that is assigned to that logical block.
In an embodiment, an operating system may access data (104) stored in data repository (114) by referring to the logical block which logically stores the data (104). Based on a mapping from the disk file to physical storage media, the physical storage location assigned to the logical block may be identified. For example, a table may indicate the address of the physical storage location for the logical block. In another example, an offset may be added to the address of a logical block to obtain the address of the physical memory location mapped to that logical block. Once the address of the physical memory location is determined, data may be read or written to the physical memory location.
In an embodiment, usage statistics (102) are associated with logical blocks. The usage statistics (102) associated with a particular logical block include statistics related to any data logically stored within that particular logical block.
In an embodiment, usage statistics for a particular logical block include a frequency of access to the particular logical block. For example, usage statistics may include a frequency of write access associated with the particular logical block. The frequency of write access associated with a particular logical block may be computed by tallying all write accesses to any data logically stored within that particular logical block. The frequency of write access associated with a particular logical block may be computed by averaging a number of write accesses to any data logically stored within that particular logical block per period of time. The frequency of write access associated with a particular logical block may be computed based on a number of write accesses to any data logically stored within that particular logical block relative to a total number of write accesses.
A frequency of read accesses may also be computed using similar example computation techniques. In an embodiment, a frequency of access may be based on a combination of a frequency of write accesses and a frequency of read accesses.
In an embodiment, usage statistics for a particular logical block include the timing of access to any data logically stored within the particular logical block. For example, access to any data logically stored within the particular logical block may be before or after an event (e.g., system startup, system shutdown, system suspend, system hibernate, system resume), daily, weekly, immediately after creation of data, etc.
Data Positioning Engine
In an embodiment, the data positioning engine (108) within the system (100) generally represents software and/or hardware that includes logic to select physical storage locations for storing data.
In an embodiment, selecting physical storage locations, as referred to herein, may include selecting a physical storage location type or a physical storage location attribute. The selected physical storage locations include any physical storage locations of the physical storage location type or with the physical storage location attribute. For example, selecting a physical storage location may include selecting a solid state drive portion of a hybrid drive which includes the solid state drive and a rotating platter drive. Another example involves selecting a particular region of a rotating platter drive from a plurality of regions on the rotating platter drive. Another example involves selecting a minimum write speed and selecting any physical storage locations (e.g., regions or devices) with at least the minimum write speed.
In an embodiment, selecting physical storage locations, as referred to herein, may include selecting physical addresses of physical storage locations to store data logically stored in a particular logical block.
In an embodiment, the data positioning engine (108) may be an application running on one or more servers, and in some embodiments could be a peer-to-peer application, or resident upon a single computing system (e.g., a personal computer, a hand-held device, a kiosk, a computer onboard a vehicle, or any other system with storage devices).
In an embodiment, the data positioning engine (108) may be implemented in the system (100) as a component of the storage driver (112). In an embodiment, the data positioning engine (108) may be implemented in the system (100) between an operating system (not shown) and the storage driver (112). In an embodiment, the data positioning engine (108) may be positioned in the system (100) between the storage driver (112) and the data repository (114).
In an embodiment, the data positioning engine (108) may overwrite selections of physical storage locations made by the storage driver (112). For example, the data positioning engine (108) may receive a selection of physical storage locations from the storage driver to store data logically stored in a particular logical block. The data positioning engine (108) may select alternate physical storage locations in accordance with one or more embodiments and store the data at the alternate physical storage locations.
In an embodiment, the data positioning engine (108) may identify a set of consecutive physical storage locations for storing data logically stored in the particular logical block. The data positioning engine (108) may identify a set of physical storage locations by identifying a starting physical storage location address and/or an ending physical storage location address.
In an embodiment, the data positioning engine (108) may be configured to identify a physical storage device in the data repository (114) for storing the data (104) (e.g., if more than one storage device is available). The data positioning engine (108) may also be configured to select a region or a specific storage location address within the data repository (114) to store the data (104).
In an embodiment, the storage driver(s) (112) retrieves and stores data (104) from the data repository (114) based on a set of instructions received directly or indirectly from the data positioning engine (108).
In an embodiment, the storage driver(s) (112) receives a physical storage location type or a physical storage location attribute identified by the data positioning engine (108). The storage driver (112) then selects an address of a physical storage location that matches the physical storage location type or the physical storage location attribute for storing the data (104).
In an embodiment, the data positioning engine (108) may provide data (104) and specify a physical storage location for storing the data in physical storage media. The physical storage location received by the storage driver (112) may include the storage device, a region of the storage device, a logical storage location address, or a physical storage location address. In an embodiment, the storage driver (112) may determine the physical storage location address based on available physical storage locations within a specified region or within a specified device.
In an embodiment, the data storage driver (112) sends the data and information identifying the physical storage location to the data positioning engine (108) for storage of the data by the data positioning engine (108).
Selecting a Storage Location Based on Usage Statistics Associated with a Logical Block and Storage Location Attributes
FIG. 2 shows a flow chart for data positioning in accordance with one or more embodiments. In one or more embodiments, one or more of the steps described below may be omitted, repeated, and/or performed in a different order. Accordingly, the specific arrangement of steps shown in FIG. 2 should not be construed as limiting the scope of the invention.
In an embodiment, access to data logically stored in the particular logical block is monitored to determine usage statistics for the particular logical block (Step 202). Access to data logically stored in the particular logical block may be monitored at one or more different system levels. For example, access to data may be monitored at the application level, operating system level, storage driver level, or hardware level.
In an embodiment, file requests may be monitored at the operating system level. For example, for each file request received by an operating system, a corresponding logical block of a disk file is identified. Information indicating a type of access, a time of access, and the logical block may be recorded.
In an embodiment, access to data may be monitored at the storage driver level. For example, requests to determine physical storage location addresses (e.g., by pointers, by mapping, by computation, etc.) based on logical blocks may be monitored. The logical blocks within the requests may be recorded.
In an embodiment, access to data may be monitored at the hardware level. For example, physical memory locations may be monitored for read access or write access. Each time data is read from a physical storage address or written to a physical storage address, the corresponding logical block to which the physical storage address is assigned may be determined and recorded.
Access to data logically stored in a logical block may be monitored at other levels (e.g., a level between an operating system and a storage driver or a level between a storage driver and physical memory).
In an embodiment, any logged information may be aggregated as usage statistics (e.g., the frequency of access, the type of access, the time of access, etc.). Usage statistics may include patterns identified in logged information. For example, a pattern may indicate that data logically stored in a particular logical block is read daily at 9 am.
In an embodiment, a time of access of data may be related to an event (e.g., system shutdown, system startup, system hibernate, system suspend, system resume, etc.). For example, a usage statistic may include a pattern of reading data logically stored in a particular logical block during a system startup and of writing data logically stored in the particular logical block during a system shutdown may be identified. Patterns may be related to data access before, after, or during events. For example, an event may include a particular system state. During the time when the system is in the particular system state, data logically stored in certain logical blocks may be continuously read.
In an embodiment, information associated with physical storage location attributes for available physical storage locations is obtained (Step 204). The information associated with physical storage location attributes may be provided by a manufacturer of the storage devices (or by another entity). For example, the physical storage location attributes may be provided on a solid state drive (SSD) sold with the storage device. The physical storage location attributes of the storage device may also be stored onto the storage device itself, so that the physical storage location attributes may be read from the storage device by a system accessing the storage device.
In an embodiment, tests may be performed on the storage devices to determine the attributes of different physical storage locations within the storage devices. For example, a sequence of reads and/or writes may be performed on different regions of a traditional rotating platter drive to determine read and/or write speeds of the different regions within the rotating platter drive. Another example involves testing the read and write speeds of single level cells in a SSD and multi-level cells within the same SSD. The testing may indicate that single level cells are faster. Another example, may involve tracking the number of times a physical storage location or set of physical storage locations are accessed before failure to determine a longevity associated specifically with physical storage locations or with a storage device as a whole.
In an embodiment, a physical storage location is selected for storing data, logically stored in a particular logical block, based on (a) usage statistics for the particular logical block and (b) attributes of the physical storage location (Step 206).
In an embodiment, a physical storage location with a high read and/or write access speed is selected for storing data logically stored in a logical block that is associated with a high access frequency. Further, a physical storage location with a low read and/or write access speed is selected for storing data logically stored in a logical block that is associated with a low access frequency.
In an embodiment, a physical storage location with a long longevity is selected for storing data logically stored in a logical block that is associated with a high access frequency. Further, a physical storage location with a short longevity is selected for storing data logically stored in a logical block that is associated with a low access frequency.
In an embodiment, the data, logically stored in a logical block, may be stored at a high speed storage location in response to determining that the data is expected to be read within a particular time window from the storing of the data. A physical storage location may be selected for storing data, logically stored in a logical block, based on a time or event at which the data is being stored. For example, if usage statistics indicate that data logically stored in a particular logical block is read daily at 9 am and the data is being stored between 7 am and 9 am, then the data may be stored at a physical storage location with a high read speed.
In an embodiment, different types of usage statistics (e.g., frequency of access, type of access, time of access, etc.) and/or different types of storage location attributes (e.g., speed, longevity, etc.) may be evaluated in combination to determine a physical storage location for storing data logically stored in a particular logical block. For example, particular data, logically stored in the particular logical block, may be frequently read but not frequently written. A physical storage location with a high read speed and a high estimated number-of-reads-before-failure may be selected for storing the particular data. The physical storage location may be selected even if the physical storage location has a low write speed or a low estimated number-of-writes-before failure.
In an embodiment, the selection of physical storage locations is based on comparison of all available storage locations. For example, of the available storage locations, the top quartile of fastest or longest lasting storage locations is matched with the top quartile of data that are accessed most frequently.
Another example involves the concurrent use of traditional platter drives and solid state drives. Traditional platter drives generally tend to have a very high longevity or estimated lifetime. Traditional platter drives, however, tend to be slow. In comparison, solid state drives generally have a low longevity, but offer higher read/write speeds than traditional platter drives. In an example, a background process may continually write to a data set (e.g., a log file), logically stored in a particular logical block, and may rarely read the data. In this case, a determination may be made that the write speed for data, logically stored in the particular logical block, is not important on the basis that a low priority background process is requesting the write. The determination may be made on the basis that read access is rarely requested even though write access is frequently requested. A traditional platter drive with a low write speed may be suitable as the traditional platter drive would allow for a very large number of writes without failure and the write speed is not important. A solid state drive may not suitable in this example as the solid state drive is more likely to fail with continual writing and the high write speed of the solid state drive would be unnecessary.
Once a suitable physical storage location for storage of the data is selected, the data is stored at the selected physical storage location (Step 208). Storing the data at the physical storage location may involve instructing a storage driver to store the data any physical storage location that matches a particular storage location attribute (e.g., a minimum longevity).
In an embodiment, storing the data at the physical storage location may involve instructing a storage driver to store the data at any physical storage location within a particular region of memory. For example, a particular storage device or a particular region within a storage device may be selected. The storage driver may then select a specific address of a physical storage location for storing data.
In an embodiment, storing the data at the physical storage location may involve instructing the storage driver to store the data at a particular address of a physical storage location.
Duplicating Data Storage
In an embodiment, duplicate copies of data may be stored at multiple physical storage locations (e.g., multiple different devices and/or multiple regions of a single device). For example, data logically stored in a logical block of a disk file may be concurrently stored on a rotating platter drive and a solid state drive.
In an example, data may be requested from a first data source such as a rotating platter drive. In response to the request, a determination is made that the requested data is also stored on a solid state drive. The data may be read from the solid state drive instead of the rotating platter drive. A new data source may be selected instead of the requested data source because of one or more factors. For example, reading data from a solid state drive may be faster than reading data from a rotating platter drive. In another example involving continuous read requests, a rotating platter drive may be selected as a data source instead of a requested solid state drive due to the longevity of the rotating platter drive.
In an embodiment, the particular physical storage location may be selected based on a current use of the system. For example, multiple storage devices which store the requested data may be evaluated to determine a current utilization or a current input/output request queue. A storage device with a lowest current use or greatest current availability may be selected as a data source for retrieving the data. In an example, one of the storage devices with the data may already be scheduled for an upcoming computer job while another storage device may be available.
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.
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.
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
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:
18. The computer readable storage medium as recited in claim 17, further comprising instructions for performing:
19. The computer readable storage medium as recited in claim 17, further comprising instructions for performing:
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:
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:
34. The system as recited in claim 33, wherein the operations further comprise:
35. The system as recited in claim 33, wherein the operations further comprise:
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:
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:
US12/984,553 2006-07-28 2011-01-04 Selecting storage locations for storing data based on storage location attributes and data usage statistics Active US9052826B2 (en)
US2036108P true 2008-01-10 2008-01-10
US12/349,457 US20090132621A1 (en) 2006-07-28 2009-01-06 Selecting storage location for file storage based on storage longevity and speed
TW101100183A TW201241650A (en) 2011-01-04 2012-01-03 Selecting storage locations for storing data based on storage location attributes and data usage statistics
EP12700750.8A EP2661707A1 (en) 2011-01-04 2012-01-04 Selecting storage locations for storing data based on storage location attributes and data usage statistics
CN2012800046061A CN103430174A (en) 2011-01-04 2012-01-04 Selecting storage locations for storing data based on storage location attributes and data usage statistics
PCT/US2012/020198 WO2012094400A1 (en) 2011-01-04 2012-01-04 Selecting storage locations for storing data based on storage location attributes and data usage statistics
AU2012204481A AU2012204481A1 (en) 2011-01-04 2012-01-04 Selecting storage locations for storing data based on storage location attributes and data usage statistics
JP2013548482A JP2014501997A (en) 2011-01-04 2012-01-04 Selection of storage locations for storing the position attribute and data usage statistics based data storage
US12/349,457 Continuation-In-Part US20090132621A1 (en) 2006-07-28 2009-01-06 Selecting storage location for file storage based on storage longevity and speed
US12/971,835 Continuation-In-Part US8892611B2 (en) 2006-07-28 2010-12-17 Assigning data for storage based on speed with which data may be retrieved
US20110167230A1 US20110167230A1 (en) 2011-07-07
US9052826B2 true US9052826B2 (en) 2015-06-09
ID=45509744
US12/984,553 Active US9052826B2 (en) 2006-07-28 2011-01-04 Selecting storage locations for storing data based on storage location attributes and data usage statistics
US (1) US9052826B2 (en)
EP (1) EP2661707A1 (en)
JP (1) JP2014501997A (en)
CN (1) CN103430174A (en)
AU (1) AU2012204481A1 (en)
TW (1) TW201241650A (en)
WO (1) WO2012094400A1 (en)
CN105242977B (en) * 2015-10-20 2018-03-09 广东欧珀移动通信有限公司 Test Method memory access performance of an intelligent terminal apparatus and
EP0381651A2 (en) 1989-01-26 1990-08-08 International Business Machines Corporation Managing method and apparatus for data storage
US6256644B1 (en) 1997-05-29 2001-07-03 Koichi Shibayama Control system for storing data in accordance with predefined characteristics thereof
US20010013084A1 (en) 1998-07-02 2001-08-09 Rakesh D. Barve System and method for modeling and optimizing i/o throughput of multiple disks on a bus
JP2001243096A (en) 2000-02-28 2001-09-07 Sharp Corp File managing method
US20010029512A1 (en) 2000-01-31 2001-10-11 Oshinsky David Alan Storage management across multiple time zones
US20030086570A1 (en) 2001-10-31 2003-05-08 Erik Riedel System for encrypted file storage optimization via differentiated key lengths
WO2004109517A1 (en) 2003-06-09 2004-12-16 Fujitsu Limited Storage management unit, storage unit, file processing system, file management system, and their methods and programs
US20050066139A1 (en) 2001-07-06 2005-03-24 Hiraku Inoue Recording apparatus and method, and communication device and method
JP2005196725A (en) 2003-12-09 2005-07-21 Hitachi Ltd File migration method based on access history
US20050165796A1 (en) 2004-01-15 2005-07-28 Xerox Corporation. Method and system for managing image files in a hierarchical storage mangement system
CN1760875A (en) 2004-10-13 2006-04-19 惠普开发有限公司 Transparent migration of files among various types of storage volumes based on file access properties
US20060274577A1 (en) 2005-04-11 2006-12-07 Stmicroelectronics S.R.L. Non-volatile memory electronic device with nand structure being monolithically integrated on semiconductor
US20070106864A1 (en) 2005-11-04 2007-05-10 Sun Microsystems, Inc. Multiple replication levels with pooled devices
US20070186070A1 (en) 2006-02-03 2007-08-09 Neoware, Inc. Computer operating system with selective restriction of memory write operations
US20080028142A1 (en) 2006-07-28 2008-01-31 Robert Stevens Kleinschmidt Online storage medium transfer rate characteristics determination
US20080027905A1 (en) 2006-07-28 2008-01-31 Craig Jensen Assigning data for storage based on speed with which data may be retrieved
US20090138880A1 (en) 2005-09-22 2009-05-28 Andrei Igorevich Yafimau Method for organizing a multi-processor computer
US20110167230A1 (en) 2006-07-28 2011-07-07 Diskeeper Corporation Selecting Storage Locations For Storing Data Based on Storage Location Attributes and Data Usage Statistics
US20120215949A1 (en) * 2010-02-05 2012-08-23 International Business Machines Corporation Storage application performance matching
2011-01-04 US US12/984,553 patent/US9052826B2/en active Active
2012-01-03 TW TW101100183A patent/TW201241650A/en unknown
2012-01-04 AU AU2012204481A patent/AU2012204481A1/en not_active Abandoned
2012-01-04 WO PCT/US2012/020198 patent/WO2012094400A1/en active Application Filing
2012-01-04 EP EP12700750.8A patent/EP2661707A1/en not_active Withdrawn
2012-01-04 CN CN2012800046061A patent/CN103430174A/en not_active Application Discontinuation
2012-01-04 JP JP2013548482A patent/JP2014501997A/en active Pending
TW409215B (en) 1997-07-11 2000-10-21 Ibm Parallel file system and method for multiple node file access
US20110258186A1 (en) 2006-07-28 2011-10-20 Diskeeper Corporation Assigning data for storage based on a frequency with which the data is accessed
US7536504B2 (en) 2006-07-28 2009-05-19 Diskeeper Corporation Online storage medium transfer rate characteristics determination
"Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration" received in International Application No. PCT/US12/20198 dated ,May 3, 2012 (14 pages).
Current Claims for International Application No. PCT/US2009/030567, dated Apr. 2009, 8 pages.
Current Claims in application No. 200980102072.4, dated May 2012, 4 pages.
Current Claims of European Application No. 09700908.8 dated Oct. 2011 (6 pages).
European Office Action received in Application No. 09700908.8 dated Oct. 6, 2011 (10 pages).
Final Rejection Office action mailed Jul. 9, 2013 in corresponding Japanese Patent Application No. 2010-542369, 7pp.
Harding, W. et al., "Object Storage Hierarchy Management" IBM Systems Journal 1990 (12 pages).
Harding, W.B. et al., "Object Storage Hierarchy Management" IBM Systems Journal, IBM Corp., Armonk, NY, USA. vol. 29, No. 3, XP000265371, Jan. 1, 1990, 14 pages.
Hsu et al., "The Performance Impact of I/Q Optimizations and Disk Improvements", IBMJ. Res.& Dev., Mar. 2004, vol. 48 No. 2, pp. 255-289.
International Search Report and Written Opinion for International Application No. PCT/US2009/030567, dated Apr. 1, 2009, 17 pages.
Japanese Office action issued on Mar. 19, 2013 in related Japanese Application No. 2010-542369, 4pp.
Kanamaru M., et al., "Head Hovering to Reduce Seek Time", IBM Technical Disclosure Bulletin, Jun. 1995, vol. 38, No. 06, pp. 301-302.
PCT Current Claims in International Application No. PCT/US12/20198 dated May 2012 (2 pages).
Ritchie, B. "Beyond HSM: Data Management in the Native Environment. Integration into the native environment is the key to implementing an effective data management solution" Computer Technology Review, Westworld Production, Beverly Hills, CA USA, vol. 12, No. 11, XP000397478, Sep. 1, 1993, 4 pages.
State Intellectual Property Office of the People's Republic of China, "First Office Action", application No. 200980102072.4, dated May 3, 2012, 12 pages.
Takihara T., et al., "Optimized Look-Ahead Extension on Sequential Access", IBM Technical Disclosure Bulletin, Nov. 1996, vol. 29, No. 11 pp. 61-62.
TW201241650A (en) 2012-10-16
AU2012204481A8 (en) 2013-08-15
EP2661707A1 (en) 2013-11-13
AU2012204481A1 (en) 2013-07-25
US20110167230A1 (en) 2011-07-07
JP2014501997A (en) 2014-01-23
WO2012094400A1 (en) 2012-07-12
CN103430174A (en) 2013-12-04
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:QUAN, GARY;THOMAS, BASIL;JENSEN, CRAIG;SIGNING DATES FROM 20110112 TO 20110118;REEL/FRAME:025984/0503