The present invention relates to storage apparatus and hierarchical data management thereof.
The cost of storage devices generally corresponds to their speed; faster the device more expensive it is.
Generally, different data have different access frequencies, some being accessed significantly more frequently than other data. Accordingly, the data having a high access frequency are stored in a high speed storage medium, and those having a low access frequency are stored in a low speed storage medium, so that the storage system can be more efficiently utilized.
A hierarchical storage apparatus refers to a storage system having a plurality of storage devices having different access speed, so that the storage apparatus may store frequently accessed information in a high speed storage device and less frequently accessed information in a lower speed storage device. As used herein, the term “storage apparatus” refers to any device having storage capability. Examples of the storage apparatus includes a disk array device including a plurality of disk drives, a storage subsystem including a storage controller and a storage device configured to store data, a storage system including an information processing unit coupled to a storage device via communication link, a disk drive, and a CD-ROM. The terms, “storage subsystem” and “storage system” are used interchangeably herein unless specifically excluded from the context. For example, in certain instances, the storage system refers to a system including a storage subsystem, e.g., the storage subsystem is a disk array device and the storage system is a network system including the disk array device.
Various methods have been proposed for transferring data between respective storage media within a hierarchical storage apparatus. One method involves moving data stored in a high speed device to a lower speed device if a predetermined time has elapsed without the data being accessed. In another method, higher priority data are allocated to a higher speed storage medium and lower priority data are allocated to a lower speed storage medium.
The conventional methods above do not address those data that are accessed and used cyclically, e.g., those that are accessed daily, weekly, monthly, bi-monthly, annually, and the like. Since these types of data have few accesses other than a given period of time, they are moved to the low speed storage medium. Accordingly, the storage apparatus cannot provide high speed data access when those data are eventually accessed since they are stored in the low speed storage medium. In addition, a large amount of such data may be needed within a short period of time, e.g., information needed to give monthly salaries to employees. These spikes in accesses may cause a bottleneck in the storage apparatus. Once these cyclical data have been moved to the high-speed storage device, they remain there for a predetermined time after the cyclic access period has elapsed. During that interval or write time, a portion of the high speed storage device storing the cyclical data is not utilized efficiently since that portion cannot load other data blocks that are being accessed at higher frequencies.
In one embodiment, a hierarchical storage apparatus is configured to perform a transition prediction of access frequency of data or data block, so that cyclically-used data are transferred to a high speed storage device in advance of its actual access. The apparatus may also be configured to remove the cyclically-used data once the cyclical period has elapsed without waiting for a predetermined time of inactivity, thereby enabling the high speed storage device to be more efficiently utilized. This anticipated data loading or migration method to appropriate device types is not limited to cyclically-used data.
In one embodiment, a method for managing data stored in a hierarchical storage unit of a storage apparatus is disclosed. The storage unit includes a first storage medium having a first access speed and a second storage medium having a second access speed. The first access speed is different from the second access speed. The method comprises providing information of first type in the first storage medium prior to a first period, the first storage medium being associated with a first access frequency range; and transferring at least a portion of the information of first type from the first storage medium to the second storage medium prior to a second period based on an expected access frequency during the second period, the second storage medium being associated with a second access frequency range, the expected access frequency being within the second access frequency range.
In one embodiment, a method for managing data stored in a hierarchical storage unit of a storage apparatus is disclosed. The storage unit includes a first storage medium having a first access speed and a second storage medium having a second access speed. The first access speed is different from the second access speed. The method comprises determining a first access frequency for information of first type, the first access frequency being associated with a first period of past time. A second access frequency of the information of first type is determined. The second access frequency is associated with a second period of past time and is different than the first access frequency. At least a portion of the information of first type is transferred from the first storage medium to the second storage medium prior to a second period based on the second access frequency determined in the determining-a-second-access-frequency step, the second period corresponding to the second period of past time.
In another embodiment, a storage apparatus includes a hierarchical storage unit including a first storage device having a first access speed and a second storage device having a second access speed. The first access speed is different than the second access speed. A storage controller is coupled to the storage unit, the controller including a processor to handle a data transfer request to the storage unit. A first computer readable medium includes code for providing information of first type in the first storage medium prior to a first period, the first storage medium being associated with a first access frequency range; and code for transferring at least a portion of the information of first type from the first storage medium to the second storage medium prior to a second period based on an expected access frequency during the second period, the second storage medium being associated with a second access frequency range, the expected access frequency being within the second access frequency range.
The SAN 54 supports direct, high-speed data transfers between servers 56 and storage apparatuses 70 in various ways. Data may be transferred between the servers and storage apparatuses. A particular storage apparatus may be accessed serially or concurrently by a plurality of servers. Data may be transferred between servers. Alternatively, data may be transferred between the storage apparatuses 70, which enables data to be transferred without server intervention, thereby freeing server for other activities. For example, a storage apparatus may back up its data to another storage system at predetermined intervals without server intervention.
Accordingly, the hierarchical storage apparatuses or subsystems 70 is not dedicated to a particular server bus but is attached directly to the SAN 44. The storage subsystems 70 are externalized and functionally distributed across the entire organization.
In one embodiment, the SAN 54 is constructed from storage interfaces and is coupled to the network 52 via the servers 56. Accordingly, the SAN may be referred to as the network behind the server or sub-network. Although the storage subsystem 70 has been described using the SAN environment, it may be provided in other network environment, e.g., a network area storage (NAS) environment.
The network system 50 also includes a service processor or management agent 74 coupled to the SAN according to one embodiment of the present invention. The service processor 74 is a data processing system, e.g., a computer, that is used to monitor the operating status of the storage subsystem and HDDs provided therein and to perform other management related functions, such as replacing or upgrading HDDs. The service processor 74 includes a display area that provides a graphic user interface (“GUI”) that a network administrator can use to manage the storage subsystem according to one embodiment of the present invention.
The controller 71 controls or regulates information being exchanged between an external device and the storage area 86. The controller 71 comprises a processor 75, a switch 76, a shared memory 77, a channel adapter (“CHA”) 78, a storage adapter 79, and a SVP connection adapter 80, and a memory 89. The processor 75 is connected to the switch 76, memory 77, CHA 78, and SVP connection adapter 80. The processor controls the controller 71 and the information being processed therein. The switch 76 is connected to the processor 75 and a plurality of storage adapter 79 to enable information to be communicated among these devices. The memory 77 contains a storage correspondence table 82 including address information of the storage devices in the storage area 86.
The CHA 78 is coupled to the SAN 54 and serves as a communication interface between the SAN and the storage controller 71. The storage adopter 79 is coupled to the storage area 86 and serves as a communication interface between the controller 71 and the storage. In the present embodiment, the storage adopter 79 includes a plurality of adapters 79a-79d, where the adapter 79a is coupled to the semiconductor memory 88, the adapter 79b is coupled to the RAID 90, the adapter 79c is coupled to the optical disk library, and the adapter 79d is coupled to the magnetic tape library 94. In one embodiment, a single storage adapter is coupled to more than one type of storage devices. In another embodiment, a plurality of storage adapters is coupled to one type of storage device.
The SVP connection adapter 80 is coupled to the SAN 54 and transmits information to or receives information from the SVP 74 via the SAN 54. In one embodiment, the SVP 74 is coupled to the disk controller 71 via a local area network (“LAN”), as shown in
The storage area 300 is referred as “hierarchical storage area” or “hierarchical storage media,” where data are stored in different store device types according to their access frequency. Generally, the most frequently accessed data are stored in the semiconductor memory 301 having the fastest access speed, and the second most frequently accessed data are stored in the RAID 302 having the next fastest access speed. Less frequently accessed data are stored in the optical disk library 303 and magnetic tape library 304 that are relatively slower storage devices. As used herein, the term “hierarchical storage area” or “hierarchical storage media” refers to a storage unit, storage area or database having storage devices with different data access speeds.
The controller 201 includes a communication interface 206, a processor 207, a data interface 208, and a memory 202. The storage controller 201 handles read and write requests to the various storage devices 301, 302, 303 and 304 provided in the hierarchical storage area 300. The controller 201 receives write request and read request from a one or more hosts (e.g., the server 56 or client 51) via the interface 206 (corresponding to CHA 78), and temporarily stores a corresponding data block in a cache memory 203 provided in the memory 202. The memory 202 is a semiconductor device in one embodiment. The memory 202 may include a program 205 to provide instructions in handling the data request operation above. The processor 207 processes the data requests according to the instructions provided by the program 205. The data are written to or read from the storage area 300 via the data interface 208 (corresponding to the storage adapter 79). In one embodiment, the semiconductor memory 301 and the memory 202 is the same device or module.
The controller 201 also includes an access table 204 maintaining records of number of accesses made to data blocks in the storage area 300 over a given period of time. The access table 204 is provided in the memory 202 in the present embodiment. The table 204 is depicted in
The table 204 includes a data block ID column 220 and a number of access section 221. The data block ID column 220 contains unique identification numbers for data blocks in the storage area according to one embodiment of the present invention. The number of access section 221 includes a plurality of columns 222 representing units of time in certain time periods. The unit of time may be in a fraction of a second, seconds, hours, days, weeks, months, years, and the like. The unit of time may be adopted according to the configuration of a hierarchical storage apparatus. For example, an extremely epsilon time unit may be used if the hierarchy of a storage medium comprises a semiconductor memory A of first speed (fastest), a semiconductor memory B of second speed (faster), and a semiconductor memory C of third speed (fast).
Each column in the section 221 represents a different time period. For example, the column (or unit time 1) 222a represents the month of January, and the column (or unit time 2) 222b represents the month of February, and so on. Alternatively, the column 222a may represent the first day of January, and the column 222b may represent the second day of January, and so on. A record 224 indicates that the data block 0002001 has been accessed 201 times during the unit time 1 and 25 times during the unit time 2. In one embodiment, the units of time can be grouped to represent any cyclic period of time, e.g., one-second cycle, five-minute cycle, one-month cycle, seven-month cycle, and the like, as desired by a storage administrator.
In one embodiment, the access table 204 is generated as write or read requests are received and handled by the controller 201 according to the program 205. That is, each time a new data block is accessed, a new access record is created in the table 204. The data block that has been accessed is temporarily stored in the cache memory 203 or in a RAID 302 if the cache is not available.
If an access record for the accessed block already exists in the table 204, an access count in the appropriate column 222 is incremented by one. For example, if the data block has been accessed in February, the access count in a column 222 corresponding to that month is incremented by one. In addition, the storage controller 201 attempts to retrieve the data block in question in accordance with the request. The search for the data block may be performed after updating the table 204 or in parallel or prior to the update operation. Generally, a storage medium having faster access speed is examined before a storage medium having slower access speed. In one embodiment, the cache 203 is first searched for the data block, then the semiconductor memory 301, and then the RAID 302. If the data block is located in one of these fast storage devices, then the data block is retrieved to handle the request from the host.
However, if the data block is not located in any of these fast storage devices, the search proceeds to the slower storage devices, the optical disk library 303 and magnetic tape library 304. Once the data block has been located in the slower storage device, it is transferred to one of the faster storage device, e.g., to the RAID 302. The data block may also be loaded temporarily to the cache 203. If there is insufficient storage space in the cache, the data block may be loaded in the semiconductor memory 301.
The graph 400 can be used to determine to where in the hierarchical storage devices the data block in question is to be loaded in anticipation of the data requests to be received by the hosts, as explained in more detail below.
Using
However, in some cases, there may be a sudden sharp rise in access frequency during a short span of time, as illustrated by the bars 502 and 503. The bar 502 is provided in the hierarchy D, and the bar 503 is provided in the hierarchy B. In this case, the total time required to read out the data block is compared with the time required for transferring the data block from the hierarchy D device to the hierarchy B device.
The total time required for reading out the data block, i.e., overhead (“OH”), is obtained from Equation 1 below:
OH=S*{A*(Acc—T+Acc—O+Acc—H)+(Tran—T+Tran—O+Tran—H)}
where,
The system constant is a value specific to the hierarchical storage apparatus, e.g., based on capacity of a high speed storage, such as the RAID, semiconductor device or cache. The greater the availability, the lower the system constant. If the OH is greater than the unit of time, the data block is left in the hierarch D device and not transferred to the hierarchy B device since the time to access the data block from the point 502 to the point 503 would be reached in less time than the OH. However, the data block may be transferred from the hierarchy D device to the hierarchy C device in such a case. Accordingly, it is possible to prevent issuing of unnecessary commands and use of resources by using the data block transfer method above.
In another situation, the storage subsystem 200 may experience a wild fluctuation in access frequencies within a relatively short period of time, as indicated by the bars 501, 502, and 503. The accessed frequency for the data block is quite high for the bar 501. Then at the next unit of time, for the bar 502, the access frequency drops dramatically. Thereafter, the access frequency increases dramatically for the bar 503.
In such a situation, the storage subsystem needs to determine whether or not it is efficient to transfer the data block from the hierarchical B device to the hierarchical D device and then back to the hierarchical B device.
Equation 2 below is used for such a determination according to one embodiment.
Threshold Value[t]=1st—OH+Tb+2nd—OH
where,
In one embodiment, the data block is migrated to different hierarchies automatically using the curve 601 by triggering a write command each time curve transition from one hierarchy to another.
In addition, in case that control for moving data block between storages in each hierarchy in accordance with this graph is not carried out at an opportunity when the data block is accessed but is accessed immediately when timing for changing hierarchy of storage comes on the graph, at the time when access frequency of its data block is heightened in fact, the data block exists in a storage medium which is hierarchically positioned as the high speed storage medium. Further, by biasing this graph by a predetermined period, it becomes possible to optimize an allocation of a data block before the number of access to a data block varies in fact.
In operation, the data block is transferred to a fast storage medium, e.g., the semiconductor memory 301, prior to a point 704 of the high access periods, so that the storage apparatus would be ready to handle the numerous data requests that are expected during the time period 712. After the first high frequency period 712, the data block is promptly transferred to a slower storage without waiting for a predetermined period of low access frequency, as in convention methods, thereby freeing the fast storage device for other data blocks that may more efficiently utilize the fast storage device. Thereafter, the data block is again transferred to a fast storage device prior to a point 705 in anticipation of the high access frequency period 716.
In one embodiment, the graph 750 is modified or updated after a predetermined period to better reflect the actual access number history.
A feedback quantity in unit time is represented by the following formula.
FB=(Org—V−New—V)*SA
The weighting constant SA is a value used to compensate factors affecting the access time or frequency, or both. This includes the changes relating to access characteristics and data processing system (e.g., software change).
By the foregoing, summation of access state of each data block obtained is calculated so that it is possible to predict use capacity to a storage medium of each hierarchy. This calculation of use quantity prediction is carried out by a variation prediction mechanism, which comprises a CPU in the controller and a micro-program executed by the CPU.
The embodiments above may be used in connection with a data group including a plurality of data blocks.
In one embodiment, the data migration based on predicted access frequency may be used for non-cyclical data. That is, the present invention may be used for data that are linked to random events, e.g., stock prices, earthquake, and the like, as long as there is a correlation between the data access frequency and a given event exists.
The above detailed descriptions are provided to illustrate specific embodiments of the present invention and are not intended to be limiting. Numerous modifications and variations within the scope of the present invention are possible. Accordingly, the present invention is defined by the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
2002-010957 | Jan 2002 | JP | national |
The present application is a continuation application and claims priority to U.S. application Ser. No. 10/347,118, filed on Jan. 17, 2003, and claims priority from Japanese Patent Application No. 2002-010957, filed on Jan. 21, 2002, both of which are incorporated by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 10347118 | Jan 2003 | US |
Child | 11189200 | Jul 2005 | US |