Abstract:
A storage system includes a first storage apparatus configured to execute, when first data stored in a first physical address of the first storage apparatus corresponding to a first logical address is identical with second data stored in a second physical address of the first storage apparatus corresponding to a second logical address, a first redundancy removal processing for erasing the second data and correlating both of the first logical address and the second logical address with the first physical address, and a control apparatus being configured to specify a first read frequency for the first logical address, specify a second read frequency for the second logical address, and execute, when a total value of the first read frequency and the second read frequency is greater than a first value, a transmission of the first data from the first storage apparatus to the second storage apparatus.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2016-106306, filed on May 27, 2016, the entire contents of which are incorporated herein by reference. 
       FIELD 
       [0002]    The embodiments discussed herein are related to a storage system, a control apparatus and a method of transmitting data. 
       BACKGROUND 
       [0003]    As an example of a storage system technology, a technology called a “redundancy removal” by which redundant data is not stored in a storing device so as to efficiently use a storage area of the storing device is known. As another example of the storage system technology, a technology called “hierarchization” by which data of which access frequency is high is stored in a storing device which has a high operation speed but is expensive and data of which access frequency is low is stored in a storing device which has a low operation speed but is inexpensive is also known. Japanese Laid-Open Patent Publication No. 2014-041452 and Japanese Laid-Open Patent Publication No. 2011-192259 are examples of the related art. 
       SUMMARY 
       [0004]    According to an aspect of the invention, a storage system includes a first storage apparatus configured to execute, when first data stored in a first physical address of the first storage apparatus corresponding to a first logical address is identical with second data stored in a second physical address of the first storage apparatus corresponding to a second logical address, a first redundancy removal processing for erasing the second data and correlating both of the first logical address and the second logical address with the first physical address, a second storage apparatus having a second response speed higher than a first response speed of the first storage apparatus, and a control apparatus including a memory and a processor coupled to the memory, the processor being configured to specify a first read frequency for the first logical address, specify a second read frequency for the second logical address, and execute, when a total value of the first read frequency and the second read frequency is greater than a first value, a transmission of the first data from the first storage apparatus to the second storage apparatus. 
         [0005]    The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims. 
         [0006]    It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0007]      FIG. 1  is a diagram illustrating a configuration example and a processing example of a storage control apparatus according to a first embodiment; 
           [0008]      FIG. 2  is a diagram illustrating a configuration example of a storage system according to a second embodiment; 
           [0009]      FIG. 3  is a diagram illustrating an example of a hardware configuration of a server apparatus and a CM; 
           [0010]      FIG. 4  is a block diagram illustrating a configuration example of processing functions equipped in the server apparatus and the CM; 
           [0011]      FIG. 5  is a diagram illustrating a configuration example of a user volume table; 
           [0012]      FIG. 6  is a diagram illustrating configuration examples of a solid state drive(SSD) volume table and a hash table for SSD pool management; 
           [0013]      FIG. 7  is a diagram illustrating configuration examples of a hard disk drive (HDD) volume table and a hash table for HDD pool management; 
           [0014]      FIG. 8  is a (first) diagram for explaining a first problem; 
           [0015]      FIG. 9  is a (second) diagram for explaining the first problem; 
           [0016]      FIG. 10  is a diagram for explaining a second problem; 
           [0017]      FIG. 11  is a diagram illustrating an outline of control for solving the first problem; 
           [0018]      FIG. 12  is a flowchart illustrating an example of an update processing procedure of a number-of-write-times table; 
           [0019]      FIG. 13  is a diagram illustrating an outline of control for solving the second problem; 
           [0020]      FIG. 14  is a flowchart illustrating an example of a processing procedure in a case where reading of data from a user volume is requested; 
           [0021]      FIG. 15  is a flowchart illustrating an example of a write processing procedure into the user volume; 
           [0022]      FIG. 16  is a flowchart illustrating an example of a data movement processing procedure from the HDD volume to the SSD volume; 
           [0023]      FIG. 17  is a flowchart illustrating an example of a data movement processing procedure from the SSD volume to the HDD volume; 
           [0024]      FIG. 18  is a (first) flowchart illustrating an example of a write processing procedure into the SSD volume; 
           [0025]      FIG. 19  is a (second) flowchart illustrating the example of the write processing procedure into the SSD volume; 
           [0026]      FIG. 20  is a flowchart illustrating an example of a write processing procedure into the HDD volume; 
           [0027]      FIG. 21  is a flowchart illustrating an example of a data movement processing procedure in the background; and 
           [0028]      FIG. 22  is a diagram illustrating a configuration example of a storage system according to a third embodiment. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0029]    As a method for simultaneously using the redundancy removal technique and the hierarchization technique in a storage system, for example, a method in which hierarchization processing is executed first and then, redundancy removal processing is executed may be considered. In this case, for example, when writing of data into a certain logical address of a logical volume is requested from a host apparatus, access frequency to the logical address is determined. In a case where access frequency is low, it is determined that a write destination of data is a low-speed storing device and then, it is determined whether the data is already stored in the low-speed storing device. Although, the data is stored in the low-speed storing device in a case where the data is not stored in the low-speed storing device, data is not stored in the low-speed storing device and a physical address in which the data is stored is correlated with the logical address in a case where the data is stored in the low-speed storing device. On the other hand, in a case where access frequency is high, it is determined that a write destination of data is a high-speed storing device and the redundancy removal processing similarly as in the above-description is executed by regarding the high-speed storing device as a processing target. 
         [0030]    However, the method has the following problems. According to the method, in a case where the same piece of data is read from a plurality of logical addresses in a short period of time in a logical volume, it is determined that access frequency in each logical address is low and thus, the pieces of data are stored in the low-speed storing device. A single physical address on the low-speed storing device is allocated to the logical addresses by the redundancy removal processing. For that reason, actually, reading of data from the same physical address on the low-speed storing device is performed a plurality of times. As such, there may be a case where even though actually the piece of data is frequently read, the piece of data becomes in a state of being stored in the low-speed storing device and an access speed becomes low, which is problematic. 
         [0031]    In the following, embodiments of the present disclosure will be described with reference to the accompanying drawings. 
       First Embodiment 
       [0032]      FIG. 1  is a diagram illustrating a configuration example and a processing example of a storage control apparatus according to a first embodiment. A storage control apparatus  10  illustrated in  FIG. 1  includes a storing unit  11  and a control unit  12 . The storing unit  11  is mounted as, for example, a storage area of a storing device equipped in the storage control apparatus  10 . A control unit  12  is mounted as, for example, a processor equipped in the storage control apparatus  10 . 
         [0033]    The storage control apparatus  10  is able to access storing devices  21  and  31 . Data for which redundancy removal is performed is stored in the storing device  21 . In an example of  FIG. 1 , the storing device  21  is installed in a storage apparatus  20  and a control unit  22  installed in the storage apparatus  20  performs redundancy removal and stores data in the storing device  21 . The redundancy removal is performed and data is also stored in the storing device  31 . In an example of  FIG. 1 , the storing device  31  is installed in a storage apparatus  30  and a control unit  32  installed in the storage apparatus  30  performs the redundancy removal and stores data in the storing device  31 . 
         [0034]    Access performance of the storing device  21  is higher than access performance of the storing device  31 . In the storage control apparatus  10 , a logical volume  12   a  realized by respective storage areas of the storing devices  21  and  31  is set. The control unit  12  of the storage control apparatus  10  controls access to the logical volume  12   a  according to a request from a host apparatus (not illustrated). 
         [0035]    The storing unit  11  stores read frequency information  11   a . In the read frequency information  11   a , a hash value based on a data block for which reading is requested from the host apparatus and an index indicating read frequency of the data block, among data blocks written into a logical volume  12   a  from the host apparatus, are correlated with each other to be registered. That is, in the read frequency information  11   a , the hash value and read frequency are maintained in a data block unit having the same contents, regarding data blocks written into the logical volume  12   a . In  FIG. 1 , a hash value H 1  is a value calculated based on a data block D 1  and a hash value H 2  is a value calculated based on a data block D 2 . 
         [0036]    The control unit  12  monitors access frequency in each address of the logical volume  12   a . When writing into the logical volume  12   a  is requested from the host apparatus, the control unit  12  determines a write destination of a data block for which writing is requested as follows. In a case where access frequency to a write destination address is high in the logical volume  12   a , the control unit  12  stores the data block in the high-speed storing device  21 . On the other hand, in a case where the access frequency to the write destination address is low, the control unit  12  stores the data block in the low-speed storing device  31 . 
         [0037]    Here, it is assumed that writing of data blocks D 1  having the same contents into a plurality of different addresses on the logical volume  12   a  is requested from the host apparatus. It is assumed that access frequency in each address is determined as being low when a write request into each address is received. In this case, the control unit  12  requests the storage apparatus  30  to write the data block D 1 , for which writing into each address is requested, into the low-speed storing device  31 . The control unit  32  of the storage apparatus  30  performs the redundancy removal and stores the data block D 1  in the storing device  31 . Accordingly, the data block D 1  for which writing into each address on the logical volume  12   a  is requested is actually stored in a single address of the storing device  31 . 
         [0038]    In this state, it is assumed that the data block D 1  for which reading from each address of the logical volume  12   a  is requested from the host apparatus. The control unit  12  receives the requested data block D 1  from the storage apparatus  30 , transmits the data block D 1  to the host apparatus, and updates read frequency correlated with the hash value H 1  based on the data block D 1  in the read frequency information  11   a . Reading of the same data block D 1  is repeatedly requested and thus, read frequency corresponding to the hash value H 1  becomes high. 
         [0039]    Here, the data block D 1  is read from different addresses of the logical volume  12   a  in a distributed manner and thus, access frequency in each address does not become high. For that reason, the data block D 1  continues to be stored in the low-speed storing device  31  like this. However, the data block D 1  is actually stored in only a single address of the storing device  31 . For that reason, when the data block D 1  remains stored in the storing device  31 , the data block D 1  is repeatedly read from a single address of the storing device  31 . In this case, a reading speed is reduced and processing efficiency is low. 
         [0040]    In order to solve such a problem, the control unit  12  executes following processing by referencing the read frequency information  11   a . For example, when read frequency correlated with the hash value H 1  exceeds a predetermined threshold value at some point in time, the control unit  12  determines that read frequency of the data block D 1  corresponding to the hash value H 1  becomes higher. Then, the control unit  12  controls the storage apparatuses  20  and  30  such that the data block D 1  is moved from the low-speed storing device  31  to the high-speed storing device  21 . 
         [0041]    When the data block D 1  is moved to the storing device  21 , due to the redundancy removal by the control unit  22 , the data block D 1  is stored only in a single address within the high-speed storing device  21 . In this state, when reading of the same data block D 1  from a plurality of addresses of the logical volume  12   a  is requested, the data block D 1  is repeatedly read from the address within the storing device  21 . Accordingly, the reading speed is increased compared to a state where the data block D 1  is stored in the low-speed storing device  31 . 
         [0042]    According to the first embodiment described above, the storage control apparatus  10  manages read frequency in a unit of the data block within the logical volume  12   a  using read frequency information  11   a . When it is determined that the read frequency of the data block D 1  becomes higher, the storage control apparatus  10  moves the data block D 1  from the low-speed storing device  31  to the high-speed storing device  21 . By doing this, it is possible to increase a reading speed in a case where the same data block D 1  is read from a plurality of addresses of the logical volume  12   a . As a result, it is possible to improve access performance to the logical volume  12   a.    
       Second Embodiment 
       [0043]      FIG. 2  is a diagram illustrating a configuration example of a storage system according to a second embodiment. A storage system illustrated in  FIG. 2  includes a server apparatus  100 , storage apparatuses  200  and  300 , host apparatuses  400  and  400   a , and a switch  500 . The server apparatus  100  is an example of the storage control apparatus  10  of  FIG. 1  and the storage apparatuses  200  and  300  are examples of the storage apparatuses  20  and  30  of  FIG. 1 , respectively. 
         [0044]    The server apparatus  100  is coupled to the storage apparatuses  200  and  300  through the switch  500 . The host apparatuses  400  and  400   a  are coupled to the server apparatus  100  through the switch  500 . A network which couples the apparatuses is a storage area network (SAN) using, for example, a fibre channel (FC) or internet small computer system interface (iSCSI). Only a single host apparatus or three or more host apparatuses may be included in the storage system. 
         [0045]    The server apparatus  100  prepares a logical volume (corresponding to a user volume which will be described later) and controls access to the logical volume according to a request from the host apparatuses  400  and  400   a . The logical volume is a virtual storage region realized by storage areas provided from the storage apparatuses  200  and  300 . The server apparatus  100  transmits data, for which writing into each block on the logical volume is requested, to one of the storage apparatuses  200  and  300  and requests writing of the data. 
         [0046]    The storage apparatus  200  includes a controller module (CM)  200   a  and a drive enclosure (DE)  200   b . A plurality of storing devices are installed in the DE  200   b . The CM  200   a  and each storing device within the DE  200   b  are coupled by, for example, a serial attached SCSI (SAS). The CM  200   a  controls access to the storing device within DE  200   b  according to a request from the server apparatus  100 . 
         [0047]    Similarly, the storage apparatus  300  also includes a CM  300   a  and a DE  300   b . A plurality of storing devices are installed in the DE  300   b . The CM  300   a  and each storing device within the DE  300   b  are coupled by, for example, the SAS. The CM  300   a  controls access to the storing device within DE  300   b  according to a request from the server apparatus  100 . 
         [0048]    Here, access performance of the storing device installed in the DE  200   b  is higher than that of the storing device installed in the DE  300   b . Accordingly, as a storage area allocatable to a logical volume to be prepared by the server apparatus  100 , the storage apparatus  200  provides a high-speed storage area and the storage apparatus  300  provides a low-speed storage area. As an example of the second embodiment, it is assumed that a plurality of SSDs are installed in the device DE  200   b  and a plurality of HDDs are installed in the device DE  300   b.    
         [0049]    As will be described later, the server apparatus  100  executes “hierarchization processing” of storing data of a block of which access frequency is high in a high-speed storing device and storing data of a block of which access frequency is low in a low-speed storing device in the logical volume. The CM  200   a  executes “redundancy removal processing” of controlling the same data so as not to be redundantly stored in the storage area of the DE  200   b . The CM  300   a  executes the “redundancy removal processing” of controlling the same data so as not to be redundantly stored in the storage area of the DE  300   b.    
         [0050]    The host apparatuses  400  and  400   a  access the logical volume provided from the server apparatus  100  to thereby execute predetermined processing such as job processing. 
         [0051]    The switch  500  relays data transmitted and received between the server apparatus  100  and the storage apparatuses  200  and  300  and between the host apparatuses  400  and  400   a  and the server apparatus  100 . 
         [0052]      FIG. 3  is a diagram illustrating an example of a hardware configuration of a server apparatus and a CM. 
         [0053]    The server apparatus  100  includes a processor  101 , a random access memory (RAM)  102 , an SSD  103 , and a network interface (I/F)  104 . These constitutional elements are coupled to each other through a bus (not illustrated). 
         [0054]    The processor  101  integrally controls the entirety of the server apparatus  100 . The processor  101  is, for example, a central processing unit (CPU), a micro processing unit (MPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), or a programmable logic device (PLD). The processor  101  may be a combination of two or more elements among the CPU, the MPU, the DSP, the ASIC, and the PLD. 
         [0055]    The RAM  102  is used as a main storing device of the server apparatus  100 . In the RAM  102 , at least a portion of an operating system (OS) program or an application program executed by the processor  101  is temporarily stored. In the RAM  102 , various pieces of data to be used for processing by the processor  101  are stored. The SSD  103  is used as an auxiliary storing device of the server apparatus  100 . In the SSD  103 , an OS program, an application program, and various pieces of data are stored. The network interface  104  communicates with the CMs  200   a  and  300   a  and the host apparatuses  400  and  400   a  through the switch  500 . 
         [0056]    The CM  200   a  includes a processor  201 , a RAM  202 , an SSD  203 , a network interface (I/F)  204 , and a drive interface (I/F)  205 . These constitutional elements are coupled to each other through a bus (not illustrated). 
         [0057]    The processor  201  integrally controls the entirety of the CM  200   a . Similar to the processor  101 , the processor  201  is, for example, the CPU, the MPU, the DSP, the ASIC, or the PLD. The processor  201  may be a combination of two or more elements among the CPU, the MPU, the DSP, the ASIC, and the PLD. 
         [0058]    The RAM  202  is used as a main storing device of the CM  200   a . In the RAM  202 , at least a portion of an OS program or an application program executed by the processor  201  is temporarily stored. In the RAM  202 , various pieces of data to be used for processing by the processor  201  are stored. The SSD  203  is used as an auxiliary storing device of the CM  200   a . In the SSD  203 , an OS program, an application program, and various pieces of data are stored. 
         [0059]    The network interface  104  communicates with the server apparatus  100  through the switch  500 . The drive interface  205  communicates with the SSD installed in the DE  200   b . The drive interface  205  is, for example, a SAS interface. 
         [0060]    The CM  300   a  is realized by hardware similar to that of to the CM  200   a . That is, the CM  300   a  includes a processor  301 , a RAM  302 , an SSD  303 , a network interface (I/F)  304 , and a drive interface (I/F)  305 . These constitutional elements are couple to each other through a bus (not illustrated). The processor  301 , the RAM  302 , the SSD  303 , the network interface  304 , and the drive interface  305  correspond respectively to the processor  201 , the RAM  202 , the SSD  203 , the network interface  204 , and the drive interface  205  of the CM  200   a  and thus, descriptions thereof will be omitted. 
         [0061]    Although not illustrated, the host apparatuses  400  and  400   a  may be realized as, for example, a computer having a hardware configuration similar to that of the server apparatus  100 . 
         [0062]      FIG. 4  is a block diagram illustrating a configuration example of processing functions equipped in the server apparatus and the CM. 
         [0063]    The server apparatus  100  includes a hierarchization processing unit  110  and a storing unit  120 . Processing of the hierarchization processing unit  110  is realized by, for example, allowing a predetermined application program to be executed by the processor  101  of the server apparatus  100 . The storing unit  120  is realized by a storage area of the storing device (for example, RAM  102 ) equipped in the server apparatus  100 . 
         [0064]    The CM  200   a  includes a redundancy removal processing unit  210  and a storing unit  220 . Processing of the redundancy removal processing unit  210  is realized by, for example, allowing a predetermined application program to be executed by the processor  201  of the CM  200   a . The storing unit  220  is realized by a storage area of the storing device (for example, RAM  202 ) equipped in the CM  200   a.    
         [0065]    The CM  300   a  includes a redundancy removal processing unit  310  and a storing unit  320 . Processing of the redundancy removal processing unit  310  is realized by, for example, allowing a predetermined application program to be executed by the processor  301  of the CM  300   a . The storing unit  320  is realized by a storage area of the storing device (for example, RAM  302 ) equipped in the CM  300   a.    
         [0066]    In  FIG. 4 , a relationship between a logical storage area which is set in the server apparatus  100  and the CMs  200   a  and  300   a  and processing functions is also illustrated. As the logical storage area, a user volume  130  is set in the server apparatus  100 , an SSD volume  231  and an SSD pool  232  are set in the CM  200   a , and an HDD volume  331  and an HDD pool  332  are set in the CM  300   a . These logical storage areas are managed by being divided into, for example, blocks of 4 Kbytes, and a logical block address (LBA) is assigned to each block. 
         [0067]    The SSD pool  232  is a logical storage area realized by one or more of SSDs within the DE  200   b . On the other hand, the HDD pool  332  is a logical storage area realized by one or more of HDDs within the DE  300   b . For that reason, access performance of the SSD pool  232  is higher than that of the HDD pool  332 . 
         [0068]    The SSD pool  232  may be realized by a simple set of storage areas of one or more of SSDs and may be a logical storage area realized by a plurality of SSDs controlled by the redundant array of inexpensive disks (RAID). Also, the HDD pool  332  may be realized by a simple set of storage areas of one or more of HDDs and may be a logical storage area realized by a plurality of HDDs controlled by the RAID. 
         [0069]    The SSD volume  231  is a virtual logical storage area realized by storage areas of the SSD pool  232 . The HDD volume  331  is a virtual logical storage area realized by storage areas of the HDD pool  332 . For that reason, access performance of the SSD volume  231  is higher than that of the HDD volume  331 . 
         [0070]    The user volume  130  is a virtual logical storage area realized by the SSD volume  231  and the HDD volume  331 . It is assumed that the user volume  130  is recognized by, for example, the host apparatus  400  among the host apparatuses  400  and  400   a . In the following description, although it is assumed that only a single user volume  130  is set, a plurality of user volumes  130  may be set using a set of the SSD volume  231  and the HDD volume  331 . 
         [0071]    The host apparatus  400  requests for accessing the user volume  130  to the server apparatus  100  in a block unit. The hierarchization processing unit  110  receives an access request from the host apparatus  400 . 
         [0072]    When writing of data into a block of the user volume  130  is requested, the hierarchization processing unit  110  requests the redundancy removal processing units  210  and  310  to write the data into the SSD volume  231  and write the data into the HDD volume  331 , respectively. In a case where writing of data is requested to the redundancy removal processing unit  310 , an LBA of the block of the SSD volume  231  regarded as a write destination of data is notified from the redundancy removal processing unit  210 . In a case where writing of data is requested to the redundancy removal processing unit  210 , an LBA of the block of the HDD volume  331  regarded as a write destination of data is notified from the redundancy removal processing unit  310 . The hierarchization processing unit  110  allocates the notified block to a write request destination block of the user volume  130 . 
         [0073]    Basically, in a case where access frequency of the write request destination block in the user volume  130  is high, the hierarchization processing unit  110  allocates a block of the SSD volume  231  to the block. On the other hand, in a case where access frequency of the write request destination block in the user volume  130  is low, the hierarchization processing unit  110  allocates a block of the HDD volume  331  to the block. With this, data of the block of which access frequency is high in the user volume  130  is stored in the high-speed storing device. 
         [0074]    When reading from the block of the user volume  130  is requested, the hierarchization processing unit  110  designates an LBA of a block of the SSD volume  231  or HDD volume  331  allocated to the block and requests any one of the redundancy removal processing units  210  and  310  to read data of the block. The hierarchization processing unit  110  acquires data of the designated block from any one of the redundancy removal processing units  210  and  310  and transmits the data to the host apparatus  400 . 
         [0075]    When writing of data into a block of the SSD volume  231  is requested from the hierarchization processing unit  110 , the redundancy removal processing unit  210  allocates a block of the SSD pool  232  to the block and stores data in an allocation destination block of the SSD pool  232 . In this case, in a case where data for which writing is requested is already stored in the SSD pool  232 , the redundancy removal processing unit  210  basically does not store the data and allocates the block in which the same data is already stored in the SSD pool  232  to the write request destination block of the SSD volume  231 . With this, pieces of data stored in the SSD pool  232  does not become redundant and use efficiency of the SSD pool  232  is improved. 
         [0076]    When reading from the block of the SSD volume  231  is requested from the hierarchization processing unit  110 , the redundancy removal processing unit  210  reads data from a block of the SSD pool  232  allocated to the block and outputs the data to the hierarchization processing unit  110 . 
         [0077]    When writing of data into a block of the HDD volume  331  is requested from the hierarchization processing unit  110 , the redundancy removal processing unit  310  allocates a block of HDD pool  332  to the block and stores data in an allocation destination block of the HDD pool  332 . In this case, in a case where data for which writing is requested is already stored in the HDD pool  332 , the redundancy removal processing unit  310  basically does not store the data and allocates the block in which the same data is already stored in the HDD pool  332  to the write request destination block of the HDD volume  331 . With this, pieces of data stored in the HDD pool  332  does not become redundant and use efficiency of the HDD pool  332  is improved. 
         [0078]    When reading from the block of the HDD volume  331  is requested from the hierarchization processing unit  110 , the redundancy removal processing unit  310  reads data from a block of the HDD pool  332  allocated to the block and outputs the data to the hierarchization processing unit  110 . 
         [0079]    The storing unit  120  stores various pieces of data used in processing of the hierarchization processing unit  110 . For example, the storing unit  120  stores a user volume table for managing the user volume  130 . The storing unit  220  stores various pieces of data used in processing of the redundancy removal processing unit  210 . For example, the storing unit  220  stores an SSD volume table for managing an SSD volume  231  and a hash table for managing a storage destination of redundant data. The storing unit  320  stores various pieces of data used in processing of the redundancy removal processing unit  310 . For example, the storing unit  320  stores a HDD volume table for managing a HDD volume  331  and a hash table for managing a storage destination of redundant data. 
         [0080]    Here, the tables will be described using  FIG. 5  to  FIG. 7 . 
         [0081]      FIG. 5  is a diagram illustrating a configuration example of a user volume table. A user volume table  121  illustrated in  FIG. 5  is a table for managing a block of the SSD volume  231  or the HDD volume  331  allocated to each block of the user volume  130  and access frequency. The user volume table  121  is stored in the storing unit  120  of the server apparatus  100 , updated by the hierarchization processing unit  110  of the server apparatus  100 , and referenced by the hierarchization processing unit  110 . 
         [0082]    In the user volume table  121 , records corresponding to all blocks of the user volume  130  are set. The user volume table  121  includes items for an LBA of the user volume  130 , the number of access times, a device type, and an LBA of an allocation destination volume. 
         [0083]    In the item of the LBA of the user volume  130 , an LBA of a block of the user volume  130  is registered. In the item of the number-of-access-times, the number of times of accessing made to the block of the user volume  130  from the host apparatus  400  in the latest predetermined period of time is registered. The number of access times is measured by the hierarchization processing unit  110 . The hierarchization processing unit  110  determines, based on the number of access times, whether which block of the SSD volume  231  and the HDD volume  331  is allocated to the block corresponding to the user volume  130 . 
         [0084]    In the item of the device type, identification information indicating whether which block of the SSD volume  231  and the HDD volume  331  is allocated to the block of the user volume  130  is registered. In a case of the former, a term “SSD” is registered and in a case of the latter, a term “HDD” is registered. In the item of the LBA of the allocation destination volume, the LBA of the block of the SSD volume  231  or the HDD volume  331  allocated to the block of the user volume  130  is registered. 
         [0085]    In an initial state immediately after the user volume  130  is prepared, records corresponding to all blocks of the user volume  130  are prepared in the user volume table  121 . In this case, items for the number-of-access-times, the device type, and the LBA of the allocation destination volume become empty in each record. 
         [0086]      FIG. 6  is a diagram illustrating configuration examples of an SSD volume table and a hash table for SSD pool management. An SSD volume table  221  and a hash table  222  illustrated in  FIG. 6  are stored in the storing unit  220  of the CM  200   a , are updated by the redundancy removal processing unit  210  of the CM  200   a , and are referenced by the redundancy removal processing unit  210 . 
         [0087]    In the SSD volume table  221 , records corresponding to respective blocks, in which data is written, among the blocks of the SSD volume  231  are set. The SSD volume table  221  includes items for an LBA of the SSD volume  231  and an LBA of the SSD pool  232 . In the item of the LBA of the SSD volume  231 , an LBA of a block of the SSD volume  231  is registered. In the item of the LBA of the SSD pool  232 , an LBA of a block of the SSD pool  232  which is allocated to a block of the SSD volume  231  is registered. The blocks of the SSD pool  232  allocated to respective blocks of the SSD volume  231  are managed by the SSD volume table  221 . 
         [0088]    The hash table  222  is a table used in redundancy removal processing for the SSD pool  232 . The hash table  222  includes items for a hash value and an LBA of the SSD pool  232 . In the item of the hash value calculated based on data written into the SSD pool  232  is registered. In the item of the LBA of the SSD pool  232 , an LBA of a block on the SSD pool  232  in which data corresponding to the hash value is written is registered. 
         [0089]    The redundancy removal processing for the SSD pool  232  is executed as in the following using the hash table  222 . When the redundancy removal processing unit  210  writes data into a certain block of the SSD volume  231  according to a request from the hierarchization processing unit  110 , the redundancy removal processing unit  210  calculates a hash value using a hash function of, for example, secure hash algorithm 1 (SHA-1) based on the data. The redundancy removal processing unit  210  determines whether the calculated hash value is registered in the hash table  222 . In a case where the calculated hash value is not registered, the redundancy removal processing unit  210  selects a single empty block of the SSD pool  232  and writes data into the selected empty block. The redundancy removal processing unit  210  correlates an LBA of the selected empty block with the hash value to be registered in the hash table  222  and correlates the LBA with an LBA of a write destination block of the SSD volume  231  to be registered in the SSD volume table  221 . 
         [0090]    On the other hand, in a case where the calculated hash value is registered in the hash table  222 , the redundancy removal processing unit  210  extracts an LBA of the SSD pool  232  correlated with the calculated hash value in the hash table  222 . The redundancy removal processing unit  210  does not perform storing of data into the SSD pool  232  and correlates the LBA extracted from the hash table  222  with an LBA of a write destination block of the SSD volume  231  to be registered in the SSD volume table  221 . 
         [0091]      FIG. 7  is a diagram illustrating configuration examples of an HDD volume table and a hash table for HDD pool management. An HDD volume table  321  and a hash table  322  illustrated in  FIG. 7  are stored in the storing unit  320  of the CM  300   a , are updated by the redundancy removal processing unit  310  of the CM  300   a , and are referenced by the redundancy removal processing unit  310 . 
         [0092]    In the HDD volume table  321 , records corresponding to respective blocks, in which data is written, among the blocks of the HDD volume  331  are set. The HDD volume table  321  includes items for an LBA of the HDD volume and an LBA of the HDD pool. In the item of the LBA of the HDD volume  331 , an LBA of a block of the HDD volume  331  is registered. In the item of the LBA of the HDD pool  332 , an LBA of a block of the HDD pool  332  which is allocated to a block of the HDD volume  331  is registered. The blocks of the HDD pool  332  allocated to respective blocks of the HDD volume  331  are managed by the HDD volume table  321 . 
         [0093]    The hash table  322  is a table used in redundancy removal processing for the HDD pool  332 . The hash table  322  includes items for a hash value and an LBA of the HDD pool  332 . In the item of the hash value a hash value calculated based on data written into the HDD pool  332  is registered. In the item of the LBA of the HDD pool  332 , an LBA of a block on the HDD pool  332  in which data corresponding to the hash value is written is registered. 
         [0094]    The redundancy removal processing for the HDD pool  332  is executed as in the following using the hash table  322 . When the redundancy removal processing unit  310  writes data into a certain block of the HDD volume  331  according to a request from the hierarchization processing unit  110 , the redundancy removal processing unit  310  calculates a hash value using a hash function of, for example, SHA-1 based on the data. The redundancy removal processing unit  310  determines whether the calculated hash value is registered in the hash table  322 . In a case where the calculated hash value is not registered, the redundancy removal processing unit  310  selects a single empty block of the HDD pool  332  and writes data into the selected empty block. The redundancy removal processing unit  310  correlates an LBA of the selected empty block with the hash value to be registered in the hash table  322  and correlates the LBA with an LBA of a write destination block of the HDD volume  331  to be registered in the HDD volume table  321 . 
         [0095]    On the other hand, in a case where the calculated hash value is registered in the hash table  322 , the redundancy removal processing unit  310  extracts an LBA of the HDD pool  332  correlated with the calculated hash value in the hash table  322 . The redundancy removal processing unit  310  does not perform storing of data into the HDD pool  332  and correlates the LBA extracted from the hash table  322  with an LBA of a write destination block of the HDD volume  331  to be registered in the HDD volume table  321 . 
         [0096]    The user volume table  121 , the SSD volume table  221 , the HDD volume table  321 , and the hash tables  222  and  322  described above and illustrated in  FIG. 5  to  FIG. 7  are basic management information for realizing hierarchization processing and redundancy removal processing. Next, description will be made on a problem in a case where the hierarchization processing and the redundancy removal processing are simply combined using respective tables illustrated in  FIG. 5  to  FIG. 7  with reference to  FIG. 8  to  FIG. 10 . 
         [0097]      FIGS. 8 and 9  are diagrams for explaining a first problem. As illustrated in the upper side of  FIG. 8 , it is assumed that writing of data into a block having an LBA “4” of the user volume  130  is successively requested from the host apparatus  400 . Specifically, it is assumed that with respect to the block having an LBA “4” of the user volume  130 , writing of data c is requested at the time t 0 , writing of data d is requested at the time t 1 , and writing of data e is requested at the time t 2 . 
         [0098]    In this case, the hierarchization processing unit  110  determines that access frequency in the block having an LBA “4” of the user volume  130  is high and requests the CM  200   a  to write data, for which writing into the block is requested, into the SSD volume  231  having high access performance. With this, it is assumed that at the time t 2 , a block having an LBA “1” of the SSD volume  231  is allocated to the block having an LBA “4” of the user volume  130 . In the lower side of  FIG. 8 , a state of the user volume table  121  at the time t 2  is illustrated. 
         [0099]    In the upper side of  FIG. 9 , transitions of states of the SSD volume  231  and the HDD volume  331  at the times t 0 , t 1 , and t 2  are illustrated. In the lower side of  FIG. 9 , transitions of states of the SSD pool  232  and the HDD pool  332  at the time t 2  are illustrated. In an example of  FIG. 9 , data of the block having an LBA “1” of the SSD volume  231  is updated with data c, data d, and data e in this order. As such, each time when data of the block having an LBA “1” of the SSD volume  231  is updated with new data, a new block of the SSD pool  232  is allocated to the block. In an example of  FIG. 9 , blocks having LBAs “1”, “2”, and “3” of the SSD pool  232  are respectively allocated to the block having an LBA “1” of the SSD volume  231  at respective times t 0 , t 1 , and t 2 . With this, pieces of data c, d, and e are respectively stored in the blocks having LBAs “1”, “2”, and “3” of the SSD pool  232 . 
         [0100]    The hash tables  222  and  322  illustrated in  FIG. 9  illustrate states at the time t 2 . Hash values A, B, C, D, and E are values calculated based on pieces of data a, b, c, d, and e, respectively. In the hash table  222 , the LBAs “1”, “2”, and “3” of the SSD pool  232  are respectively correlated with the hash value C based on data c, the hash value D based on data d, and the hash value E based on data e. 
         [0101]    As in the examples of  FIG. 8  and  FIG. 9  described above, in a case where the same block of the user volume  130  is written with data many time, a new block of the SSD pool  232  is used every time writing of data occurs and an use area of the high-speed storing device is increased. In general, the capacity of the high-speed storing device is frequently smaller than that of the low-speed storing device. For that reason, in the case as described above, there is a problem that when processing called “garbage collection” for searching a block capable of being released from the SSD pool  232  of which the capacity is pressed and releasing the block is not executed, the capacity of the SSD pool  232  is pressed and writing of new data is unable to be performed at the early stage. 
         [0102]      FIG. 10  is a diagram for explaining a second problem. In  FIG. 10 , it is assumed that the same data a is written into respective blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130 . As illustrated in the user volume table  121  of  FIG. 10 , it is assumed that the blocks having LBAs “0”, “1”, “2”, and “3” of the HDD volume  331  are respectively allocated to the blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130 . In this state, as illustrated in the lower side of  FIG. 10 , the same data a is written into the blocks having LBAs “0”, “1”, “2”, and “3” in the HDD volume  331 . The data a is actually stored in a single block of the HDD pool  332 , specifically, the block having the LBA “0”, by the redundancy removal function of the redundancy removal processing unit  310 . 
         [0103]    It is assumed that from this state, reading of data a from the blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130  is requested twice, twice, twice, and once, respectively, in a predetermined period of time. The user volume table  121  of  FIG. 10  illustrates the state described above and the number of access times for the blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130  becomes 2, 2, 2, and 1, respectively. 
         [0104]    For example, it is assumed that the hierarchization processing unit  110  allocates the blocks of the high-speed SSD volume  231  to top three blocks, of which the number of access times is high, among the blocks of the user volume  130 . In this case, it is determined that the number of access times for the blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130  is low. As a result, the blocks of the low-speed HDD volume  331  remain allocated to respective blocks. Accordingly, data a remains stored in the block having LBA “0” of the HDD pool  332 . 
         [0105]    That is, when reading of data a from the respective blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130  is requested, data a is actually read from the block having the same LBA “0” of the HDD pool  332 . As in the case described above, in a case where the same piece of data is successively read from different blocks of the user volume  130 , reading from the low-speed storing device is successively performed and a reading speed becomes lower, which is problematic. In the case described above, although it is desirable that data is stored in the high-speed storing device, it is not possible for a simple combination of the hierarchization processing and the redundancy removal processing to allow data to be stored in the high-speed storing device. 
         [0106]    In order to solve such a problem, the server apparatus  100  and the CMs  200   a  and  300   a  of the second embodiment perform control illustrated in  FIG. 11  to  FIG. 13 . 
         [0107]      FIG. 11  is a diagram illustrating an outline of control for solving the first problem. In the storing unit  220  of the CM  200   a , the number-of-write-times table  223  as illustrated in  FIG. 11  is further stored. In the number-of-write-times table  223 , a number-of-write-times index indicating the number of times of writing made to an LBA illustrating a block of the SSD volume  231  in the latest predetermined period of time in the block is registered. However, when the number-of-write-times indexes for all blocks of the SSD volume  231  are registered, an amount of data of the number-of-write-times table  223  becomes excessive and the capacity of the storing unit  220  is pressed. In the number-of-write-times table  223 , records corresponding to a fixed number of blocks having a high-order number-of-write-times index among the blocks of the SSD volume  231  are registered and the number-of-write-times indexes for these blocks are registered. A specific update method of the number-of-write-times table  223  will be described later with reference to  FIG. 12 . 
         [0108]    When data is written into a certain block of the SSD volume  231  according to a request from the hierarchization processing unit  110 , the redundancy removal processing unit  210  determines whether a record corresponding to the block is present in the number-of-write-times table  223 . In a case where the record is present, the redundancy removal processing unit  210  determines that write frequency in the latest period of time in the block is high, does not perform the redundancy removal processing, allocates an unique block of the SSD pool  331  to the block, and executes write processing for permitting overwriting of data. 
         [0109]    For example, as illustrated in  FIG. 11 , it is assumed that data c is written into a block having LBA “1” of the SSD volume  231  at the time t 0  and LBA “1” of the SSD pool  331  is allocated to the block. It is assumed that from this state, similar to the example of  FIG. 9 , data d is written into the block having LBA “1” of the SSD volume at the time t 1  and data e is written into the same block at the time t 2 . It is assumed that at either of the times t 1  and t 2 , LBA “1” of the SSD volume is registered in the number-of-write-times table  223  and the block having LBA “1” of the SSD pool  331  is allocated to the block having LBA “1” of the SSD volume  231 . 
         [0110]    In such a case, the redundancy removal processing unit  210  does not change an allocation destination of the block of the SSD pool  331  to the block having LBA “1” of the SSD volume at the times t 1  and t 2 . That is, the redundancy removal processing unit  210  overwrites the block having LBA “1” of the SSD pool  331  with data d at the time t 1  and further overwrites the block having LBA “1” of the SSD pool  331  with data e at the time t 2 . With this, in a case where updating of data with respect to the same block of the user volume  130  is successively requested, a new block of the SSD pool  331  is not used every time a request occurs. Accordingly, the SSD pool  331  is hardly used up and use efficiency of the SSD pool  331  is improved. 
         [0111]    It is assumed that for example, although the block having LBA “1” of the SSD volume is registered in the number-of-write-times table  223  at the time t 1 , the block having LBA “1” of the SSD pool  331  is allocated to a block other than the block having LBA “1” of the SSD volume  231 . In this case, the redundancy removal processing unit  210  allocates a new block (for example, block having LBA “2”) of the SSD pool  331  to the block having LBA “1” of the SSD volume and stores data in the block having LBA “2” of the SSD pool  331 . Thereafter, in a case where updating of data with respect to a block having the same LBA “1” of the SSD volume  231  is requested and the LBA “1” of the block is registered in the number-of-write-times table  223 , the redundancy removal processing unit  210  overwrites update data onto the block having LBA “2” of the SSD pool  331  allocated to the block. 
         [0112]    With this, similar to matters described above, in a case where updating of data with respect to the same block of the user volume  130  is successively requested, a new block of the SSD pool  331  is not used every time a request occurs. Accordingly, use efficiency of the SSD pool  331  is improved. 
         [0113]      FIG. 12  is a flowchart illustrating an example of an update processing procedure of the number-of-write-times table. Processing of  FIG. 12  is executed when data is written into a certain block (write destination block) of the SSD volume  231 . 
         [0114]    [Step S 11 ] The redundancy removal processing unit  210  determines whether an LBA of a write destination block is registered in the number-of-write-times table  223 . In a case where the LBA of the write destination block is registered, processing of Step S 12  is executed and in a case where the LBA is not registered, processing of Step S 13  is executed. 
         [0115]    [Step S 12 ] The redundancy removal processing unit  210  updates the number-of-write-times index correlated with the write destination block LBA to be registered in the number-of-write-times table  223 . 
         [0116]    [Step S 13 ] The redundancy removal processing unit  210  selects a record of which the registered number-of-write-times index is the smallest from the number-of-write-times table  223 . The redundancy removal processing unit  210  rewrites the LBA of the write destination block with the LBA registered in the selected record. 
         [0117]    [Step S 14 ] The redundancy removal processing unit  210  updates the number-of-write-times index registered in the selected record in Step S 13 . 
         [0118]    By processing of Steps S 13  and S 14  described above, the record corresponding to the write destination block is rewritten with the record, of which the registered number-of-write-times index is the smallest, among the records of the number-of-write-times table  223 . 
         [0119]    Here, there are following two methods as the update method of the number-of-write-times index in Steps S 12  and S 14 . In the first update method, at either of Steps S 12  and S 14 , the redundancy removal processing unit  210 , first, updates the number-of-write-times indexes of all records of the number-of-write-times table  223  by multiplying the indexes by a constant greater than 0 and less than 1 (for example, 0.99). In Step S 12 , subsequently, the redundancy removal processing unit  210  adds 1 to the number-of-write-times index correlated with the write destination block LBA to be registered in the number-of-write-times table  223 . In Step S 14 , subsequently, the redundancy removal processing unit  210  rewrites 1 with the number-of-write-times index registered in the record selected in Step S 13 . According to the first update method, the number-of-write-times index in respective records of the number-of-write-times table  223  becomes a value which includes a decimal and is greater than 0. 
         [0120]    On the other hand, in the second update method, in Step S 12 , the redundancy removal processing unit  210  adds 1 to the number-of-write-times index correlated with the write destination block LBA to be registered in the number-of-write-times table  223 . In Step S 14 , the redundancy removal processing unit  210  adds 1 to the number-of-write-times index registered in the record selected in Step S 13 . According to the second update method, the number-of-write-times index in respective records of the number-of-write-times table  223  becomes an integer greater than or equal to 1. 
         [0121]    Either of the first update method and the second update method, by simple processing, is able to turn a state of the number-of-write-times table  223  to a state substantially equal to a state in which a fixed number of LBAs are registered in descending order of the number-of-write-times in the latest predetermined period of time. 
         [0122]      FIG. 13  is a diagram illustrating an outline of control for solving the second problem. In the storing unit  120  of the server apparatus  100 , the number-of-read-times table  122  illustrated in  FIG. 13  is stored. In the number-of-read-times table  122 , a record is registered for each hash value based on data for which writing into the user volume  130  is requested from the host apparatus  400 . In each record, the number-of-write-times index indicating the number-of-write-times of corresponding data in the latest predetermined period of time and the device type indicating whether the corresponding data is written into which of the SSD volume  231  and the HDD volume  331  are registered. In the item of the device type, in a case where data is registered in the SSD volume  231 , a term “SSD” is registered and in a case where data is registered in the HDD volume  331 , a term “HDD” is registered. 
         [0123]    However, when records of the hash values corresponding to all pieces of data for which reading is requested from the host apparatus  400  are registered, an amount of data of the number-of-read-times table  122  becomes excessive and the capacity of the storing unit  120  is pressed, an amount of data of the number-of-write-times table  223  becomes excessive and the capacity of the storing unit  120  is pressed. Here, in the number-of-read-times table  122 , only the records regarding the hash values based on a fixed number of pieces of data having a high-order number-of-write-times index, among pieces of data for which reading is requested, are registered by the method similar to that of the number-of-write-times table  223  and the number-of-write-times indexes and the device types corresponding to the hash values are registered. A specific update method of the number-of-read-times table  122  will be described with reference to  FIG. 14 . 
         [0124]    The hierarchization processing unit  110  determines that data corresponding to the hash value registered in the number-of-read-times table  122  is data of which read frequency is high. In a case where such data is written into the low-speed HDD volume  331  according to the device type, the hierarchization processing unit  110  moves data from the HDD volume  331  to the SSD volume  231 . With this, in a case where the same data is successively read from different blocks of the user volume  130 , the data is stored in the SSD volume  231  and a reading speed of the data is increased. 
         [0125]    A plurality of timings of data movement may be considered. For example, there is a method of executing the data movement upon a write request into the user volume  130 .  FIG. 13  illustrates an example of such case. The user volume table  121  illustrated in the lower left side of  FIG. 13  is in a state similar to that of  FIG. 10  and the same data a is written into respective blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130 . The blocks of the HDD volume  331  are allocated to the blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130 . In this state, similar to the state of the lower right side of  FIG. 10 , data a is stored in a single block of the HDD pool  332 . 
         [0126]    In this state, it is assumed that reading of data a from respective blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130  is successively requested from the host apparatus  400 . In this case, the number-of-write-times regarding data a in the latest predetermined period of time is increased and it becomes a state in which a record including a hash value A based on data a is registered in the number-of-read-times table  122 . 
         [0127]    In this state, it is assumed that writing of data a into a block having LBA “2” of the user volume  130  is requested from the host apparatus  400 . In this case, the hierarchization processing unit  110  calculates the hash value A based on the data a. The calculated hash value A is registered in the number-of-read-times table  122  and thus, the hierarchization processing unit  110  requests the redundancy removal processing unit  210  to write data a into the high-speed SSD volume  231 . In this case, as illustrated in the lower right side of  FIG. 13 , a block of the SSD volume  231  is allocated to the block having LBA “2” of the user volume  130 . Together with this, the hierarchization processing unit  110  moves data a of the respective blocks having LBAs “0”, “1”, “7”, and “8” of the user volume  130  which are written in the HDD volume  331  to the SSD volume  231 . In the CM  200   a , the redundancy removal processing is executed and data a is stored in a single block of the SSD pool  232 . 
         [0128]    Other than the example described above and illustrated in  FIG. 13 , data movement may be executed upon update of the number-of-read-times table  122  accompanied by a read request from the user volume  130 . Furthermore, the number-of-read-times table  122  is regularly referenced irrespective of a relationship between timings of the write request and the read request and in a case where a piece of data which is written into the HDD volume  331  and of which the number-of-write-times index is high is present, the piece of data may be moved. 
         [0129]    Next, description will be made on a processing procedure of the server apparatus  100  and the CMs  200   a  and  300   a  using a flowchart. 
         [0130]    First,  FIG. 14  is a flowchart illustrating an example of a processing procedure in a case where reading of data from a user volume is requested. 
         [0131]    [Step S 31 ] The hierarchization processing unit  110  of the server apparatus  100  receives a request for reading of data from the user volume  130  made from the host apparatus  400 . In this case, an LBA of a read source block in the user volume  130  is designated from the host apparatus  400 . The hierarchization processing unit  110  extracts an LBA of a block of the SSD volume  231  or the HDD volume  331  correlated with the read source block from the user volume table  121 . The hierarchization processing unit  110  requests the CM  200   a  or the CM  300   a  to read data from the block having the extracted LBA. In a case where the block having the extracted LBA is a block of the SSD volume  231 , a read request is made to the CM  200   a  and in a case where the block having the extracted LBA is a block of the HDD volume  331 , a read request is made to the CM  300   a . When requested data is received from the CM  200   a  or the CM  300   a , the hierarchization processing unit  110  transmits the received data to the host apparatus  400 . 
         [0132]    [Step S 32 ] The hierarchization processing unit  110  increments the number of access times correlated with the LBA of the read source block of the user volume  130  in the user volume table  121 . The number of access times of each record of the user volume table  121  is managed by the hierarchization processing unit  110  such that the number of access times in the latest predetermined period of time is registered. 
         [0133]    [Step S 33 ] The hierarchization processing unit  110  calculates the hash value based on data received from the CM  200   a  or the CM  300   a  in Step S 31 . 
         [0134]    [Step S 34 ] The hierarchization processing unit  110  determines whether the calculated hash value is registered in the number-of-read-times table  122 . In a case where the calculated hash value is registered, processing of Step S 35  is executed and in a case where the calculated hash value is not registered, processing of Step S 36  is executed. 
         [0135]    [Step S 35 ] The hierarchization processing unit  110  updates the number-of-read-times index correlated with the calculated hash value in the number-of-read-times table  122 . 
         [0136]    [Step S 36 ] The hierarchization processing unit  110  selects the record of which the registered number-of-read-times index is the smallest from the number-of-read-times table  122 . 
         [0137]    [Step S 37 ] The hierarchization processing unit  110  determines whether the term “SSD” is registered in the item of the device type in the selected record. In a case where the term “SSD” is registered, processing of Step S 38  is executed and in a case where the term “HDD” is registered, processing of Step S 40  is executed. 
         [0138]    [Step S 38 ] The hierarchization processing unit  110  executes processing for moving all pieces of data corresponding to the hash value registered in the selected record among pieces of data written into the SSD volume  231  to the HDD volume  331 . In Step S 38 , all pieces of data corresponding to the hash value deleted from the number-of-read-times table  122  are moved to the low-speed HDD volume  331 . Details of processing of Step S 38  will be described with reference to  FIG. 17 . 
         [0139]    [Step S 39 ] The hierarchization processing unit  110  rewrites the “HDD” with the item of the device type in the selected record. 
         [0140]    [Step S 40 ] The hierarchization processing unit  110  rewrites the hash value calculated in Step S 33  with the hash value registered in the selected record. 
         [0141]    [Step S 41 ] The hierarchization processing unit  110  updates the number-of-write-times index registered in the selected record. 
         [0142]    By processing of Steps S 36  to S 41  described above, the record corresponding to the hash value based on data for which reading is requested is rewritten with the record, of which the registered number-of-read-times index is the smallest, among the records of the number-of-read-times table  122 . 
         [0143]    Here, there are following two methods as the update method of the number-of-read-times index in Steps S 35  and S 41 . In the first update method, at either of Steps S 35  and S 41 , the hierarchization processing unit  110 , first, updates the number-of-read-times indexes of all records of the number-of-read-times table  122  by multiplying the indexes by a constant greater than 0 and less than 1 (for example, 0.99). In Step S 35 , subsequently, the hierarchization processing unit  110  adds 1 to the number-of-read-times index correlated with the hash value calculated in Step S 33  to be registered in the number-of-read-times table  122 . In Step S 41 , subsequently, the hierarchization processing unit  110  rewrites 1 with the number-of-read-times index registered in the selected record. According to the first update method, the number-of-read-times index in respective records of the number-of-read-times table  122  becomes a value which includes a decimal and is greater than 0. The first update method is characterized in that when the access tendency is changed, it is possible to reflect the latest access tendency and arrange pieces of data without being influenced by information of the past read frequency. 
         [0144]    On the other hand, in the second update method, in Step S 35 , the hierarchization processing unit  110  adds 1 to the number-of-read-times index correlated with the hash value calculated in Step S 33  to be registered in the number-of-read-times table  122 . In Step S 41 , the hierarchization processing unit  110  adds 1 to the number-of-read-times index registered in the record selected in Step S 36 . According to the second update method, the number-of-read-times index in respective records of the number-of-read-times table  122  becomes an integer greater than or equal to 1. 
         [0145]    Either of the first update method and the second update method, by simple processing, is able to turn a state of the number-of-read-times table  122  to a state substantially equal to a state in which a fixed number of hash values are registered in descending order of the number-of-read-times in the latest predetermined period of time. 
         [0146]      FIG. 15  is a flowchart illustrating an example of a write processing procedure into the user volume. 
         [0147]    [Step S 61 ] The hierarchization processing unit  110  of the server apparatus  100  receives a request for writing data into the user volume  130  made from the host apparatus  400 . In this case, an LBA of a write source block in the user volume  130  is designated from the host apparatus  400  and write data is transmitted from the host apparatus  400 . The hierarchization processing unit  110  calculates the hash value based on received write data. 
         [0148]    [Step S 62 ] The hierarchization processing unit  110  determines whether the calculated hash value is registered in the number-of-read-times table  122 . In a case where the calculated hash value is registered, processing of Step S 64  is executed and in a case where the calculated hash value is not registered, processing of Step S 63  is executed. 
         [0149]    [Step S 63 ] The hierarchization processing unit  110  extracts the number of access times correlated with the LBA of the write destination block to be registered in the user volume  130  from the user volume table  121 . The hierarchization processing unit  110  determines whether the extracted number of access times is greater than or equal to a predetermined threshold value. In a case where the extracted number is greater than or equal to the predetermined threshold value, processing of Step S 64  is executed and in a case where the extracted number is less than the predetermined threshold value, processing of Step S 67  is executed. 
         [0150]    [Step S 64 ] The hierarchization processing unit  110  executes processing of writing write data into the SSD volume  231 . 
         [0151]    Here, in a case where overwriting of data onto the block, into which writing is completed, is requested from the host apparatus  400 , the device type and the LBA of the allocation destination volume are already registered in the record, in which the LBA of the write destination block is registered in the user volume  130 , among the records of the user volume table  121 . In a case where the device type is the “SSD”, the hierarchization processing unit  110  designates the LBA of the allocation destination volume registered in the record as a write destination and requests the CM  200   a  to perform writing of write data into the SSD volume  231 . 
         [0152]    On the other hand, in a case where the device type is the “HDD”, the hierarchization processing unit  110  inquires of the CM  200   a  about an LBA of an unwritten block of the SSD volume  231 . When the LBA of the corresponding block is notified from the redundancy removal processing unit  210  of the CM  200   a , the hierarchization processing unit  110  designates the notified LBA as the write destination and requests the CM  200   a  to perform writing of write data into the SSD volume  231 . The hierarchization processing unit  110  extracts the LBA of the allocation destination volume correlated with the LBA of the write destination block of the user volume  130  from the user volume table  121 . The hierarchization processing unit  110  designates the extracted LBA and requests the CM  300   a  to erase data from the HDD volume  331 . The redundancy removal processing unit  310  of the CM  300   a  erases data stored in the block having the LBA designated in the HDD volume  331 . The hierarchization processing unit  110  updates the record, in which the LBA of the write destination block is registered in the user volume  130 , among the records of the user volume table  121  as follows. The hierarchization processing unit  110  registers the “SSD” in the item of the device type and registers the LBA of the SSD volume  231  notified from the redundancy removal processing unit  210  in the item of the LBA of the allocation destination volume. 
         [0153]    In a case where a request for writing of data into the unwritten block is made from the host apparatus  400 , the hierarchization processing unit  110  receives a notification of the LBA of the unwritten block of the SSD volume  231  from the redundancy removal processing unit  210  of the CM  200   a  in an order similar to that described above. The hierarchization processing unit  110  designates the notified LBA as the write destination and requests the CM  200   a  to perform writing of write data into the SSD volume  231 . The hierarchization processing unit  110  updates the record, in which the LBA of the write destination block is registered in the user volume  130 , among the records of the user volume table  121  as follows. The hierarchization processing unit  110  registers the “SSD” in the item of the device type and registers the LBA of the SSD volume  231  notified from the redundancy removal processing unit  210  in the item of the LBA of the allocation destination volume. 
         [0154]    [Step S 65 ] The hierarchization processing unit  110  increments the number of access times correlated with the LBA of the write destination block of the user volume  130  in the user volume table  121 . 
         [0155]    [Step S 66 ] The hierarchization processing unit  110  executes processing of moving all pieces of data corresponding to the hash values calculated in Step S 61  among pieces of data written into the HDD volume  331  to the SSD volume  231 . Details of the processing will be described with reference to  FIG. 16 . 
         [0156]    [Step S 67 ] The hierarchization processing unit  110  executes processing for writing write data into the HDD volume  331 . The processing is similar to processing of changing the write destination from the SSD volume  231  to the HDD volume  331  in Step S 64  and thus, detailed description thereof will be omitted. 
         [0157]    [Step S 68 ] The hierarchization processing unit  110  increments the number of access times correlated with the LBA of the write destination block of the user volume  130  in the user volume table  121 . 
         [0158]    [Step S 69 ] The hierarchization processing unit  110  executes processing of moving all pieces of data corresponding to the hash values calculated in Step S 61  among pieces of data written into the SSD volume  231  to the HDD volume  331 . Details of the processing will be described with reference to  FIG. 17 . 
         [0159]    According to the processing of  FIG. 15  described above, in a case where the hash value based on data for which writing is requested from the host apparatus  400  is registered in the number-of-read-times table  122 , it is determined that read frequency with respect to data of which contents are the same as the data is high. In this case, write data is written into the SSD volume  231  and data is moved from the HDD volume  331  to the SSD volume  231  also regarding other blocks in which the same piece of data is written in the user volume  130 . With this, it is possible to increase the reading speed in a case where the same piece of data is successively read from different blocks on the user volume  130 . 
         [0160]      FIG. 16  is a flowchart illustrating an example of a data movement processing procedure from the HDD volume to the SSD volume. Processing of  FIG. 16  corresponds to, for example, processing of Step S 66  of  FIG. 15 . 
         [0161]    [Step S 81 ] The hierarchization processing unit  110  of the server apparatus  100  designates the hash value with respect to the CM  300   a  and inquires of the CM  300   a  about an LBA of the block on the HDD volume  331 , in which data corresponding to the designated hash value is stored. In a case where processing of  FIG. 16  corresponds to Step S 66  of  FIG. 15 , the designated hash value is value calculated in Step S 61  of  FIG. 15 . 
         [0162]    The redundancy removal processing unit  310  of the CM  300   a  retrieves the hash table  322  using the designated hash value and extracts the LBA of the HDD pool  332  correlated with the hash value. Furthermore, the redundancy removal processing unit  310  extracts the LBA of the HDD volume  331  correlated with the extracted LBA from the HDD volume table  321 . The redundancy removal processing unit  310  transmits the LBA of the HDD volume  331  extracted from the HDD volume table  321  to the hierarchization processing unit  110  of the server apparatus  100 , as a reply of the inquiry described above. The hierarchization processing unit  110  receives the transmitted LBA of the HDD volume  331 . 
         [0163]    [Step S 82 ] The hierarchization processing unit  110  specifies a record, in which the device type is the “HDD” and the LBA of the allocation destination volume coincides with the LBA of the HDD volume  331  received in Step S 81 , from the user volume table  121 . The LBA of the user volume  130  registered in the specified record indicates a block in which data corresponding to the hash value designated in Step S 81  is written. That is, in Step S 82 , the LBA of the block in which data corresponding to the hash value is written is determined from among the LBAs of the user volume  130 . 
         [0164]    [Step S 83 ] The hierarchization processing unit  110  repeatedly executes a data movement loop from Step S 83  to Step S 85  while selecting the LBAs of the user volume  130  determined in Step S 82  one by one. 
         [0165]    [Step S 84 ] The hierarchization processing unit  110  designates the LBA of the allocation destination volume correlated with the selected LBA and notifies the CM  300   a  of the designated LBA, and requests the CM  300   a  to read data from a block of the HDD volume  331  corresponding to the LBA. The requested data is transmitted from the redundancy removal processing unit  310  of the CM  300   a.    
         [0166]    The hierarchization processing unit  110  requests the CM  200   a  to write the data received from the CM  300   a  into the SSD volume  231 . The redundancy removal processing unit  210  of the CM  200   a  executes processing for writing the received data into the empty block of the SSD volume  231  and notifies the hierarchization processing unit  110  of the LBA of the empty block. The hierarchization processing unit  110  updates the LBA of the allocation destination volume, which is correlated with the selected LBA, with the received LBA. The device type correlated with the selected LBA is updated to the “SSD”. 
         [0167]    [Step S 85 ] The hierarchization processing unit  110  designates the LBA of the allocation destination volume correlated with the selected LBA and notifies the CM  300   a  of the designated LBA, and requests the CM  300   a  to erase data written into the block of the HDD volume  331  corresponding to the LBA. The redundancy removal processing unit  310  of the CM  300   a  erases the requested data. With this, the movement of corresponding data is completed. 
         [0168]    [Step S 86 ] In a case where processing for all LBAs of the user volume  130  determined in Step S 82  is finished, the hierarchization processing unit  110  ends the processing. 
         [0169]      FIG. 17  is a flowchart illustrating an example of a data movement processing procedure from the SSD volume to the HDD volume. The processing of  FIG. 17  corresponds to, for example, processing of Step S 38  in  FIG. 14  and Step S 69  in  FIG. 15 . 
         [0170]    [Step S 91 ] The hierarchization processing unit  110  of the server apparatus  100  designates the hash value and notifies the CM  300   a  of the designated hash value, and inquires of the CM  200   a  about the LBA of the block on the SSD volume  231  in which data corresponding to the designated hash value is stored. In a case where the processing of  FIG. 17  corresponds to the processing of Step S 38  in  FIG. 14 , the designated hash value is a value calculated in Step S 33  of  FIG. 14 . In a case where the processing of  FIG. 17  corresponds to the processing of Step S 69  in  FIG. 15 , the designated hash value is a value calculated in Step S 61  of  FIG. 15 . 
         [0171]    The redundancy removal processing unit  210  of the CM  200   a  retrieves the hash table  222  using the designated hash value and extracts the LBA of the SSD pool  232  correlated with the hash value. Furthermore, the redundancy removal processing unit  210  extracts the LBA of the SSD volume  231  correlated with the extracted LBA from the SSD volume table  221 . The redundancy removal processing unit  210  transmits the LBA of the SSD volume  231  extracted from the SSD volume table  221  to the hierarchization processing unit  110  of the server apparatus  100 , as a reply of the inquiry described above. The hierarchization processing unit  110  receives the transmitted LBA of the SSD volume  231 . 
         [0172]    [Step S 92 ] The hierarchization processing unit  110  specifies a record, in which the device type is the “SSD” and the LBA of the allocation destination volume coincides with the LBA of the SSD volume  231  received in Step S 91 , from the user volume table  121 . The LBA of the user volume  130  registered in the specified record indicates a block in which data corresponding to the hash value designated in Step S 91  is written. That is, in Step S 92 , the LBA of the block in which data corresponding to the hash value is written is determined from among the LBAs of the user volume  130 . 
         [0173]    [Step S 93 ] The hierarchization processing unit  110  repeatedly executes a data movement loop from Step S 93  to Step S 95  while selecting the LBAs of the user volume  130  determined in Step S 92  one by one. 
         [0174]    [Step S 94 ] The hierarchization processing unit  110  designates the LBA of the allocation destination volume correlated with the selected LBA and notifies the CM  200   a  of the designated LBA, and requests the CM  200   a  to read data from a block of the SSD volume  231  corresponding to the LBA. The requested data is transmitted from the redundancy removal processing unit  210  of the CM  200   a.    
         [0175]    The hierarchization processing unit  110  requests the CM  300   a  to write the data received from the CM  200   a  into the HDD volume  331 . The redundancy removal processing unit  310  of the CM  300   a  executes processing for writing the received data into the empty block of the HDD volume  331  and notifies the hierarchization processing unit  110  of the LBA of the empty block. The hierarchization processing unit  110  updates the LBA of the allocation destination volume, which is correlated with the selected LBA, with the received LBA. The device type correlated with the selected LBA is updated to the “HDD”. 
         [0176]    [Step S 95 ] The hierarchization processing unit  110  designates the LBA of the allocation destination volume correlated with the selected LBA and notifies the CM  200   a  of the designated LBA, and requests the CM  200   a  to erase data written into the block of the SSD volume  231  corresponding to the LBA. The redundancy removal processing unit  210  of the CM  200   a  erases the requested data. With this, the movement of corresponding data is completed. 
         [0177]    [Step S 96 ] In a case where processing for all LBAs of the user volume  130  determined in Step S 92  is finished, the hierarchization processing unit  110  ends the processing. 
         [0178]      FIG. 18  and  FIG. 19  are flowcharts illustrating an example of a write processing procedure into the SSD volume. 
         [0179]    [Step S 111 ] The redundancy removal processing unit  210  of the CM  200   a  receives a request for writing of data into the SSD volume  231  from the hierarchization processing unit  110  of the server apparatus  100 . The redundancy removal processing unit  210  calculates the hash value based on data for which writing is requested. 
         [0180]    [Step S 112 ] The redundancy removal processing unit  210  determines whether an LBA indicating the block of the write destination in the SSD volume  231  is registered in the number-of-write-times table  223 . In a case where the LBA is not registered, processing of Step S 113  is executed and in a case where the LBA is registered, processing of Step S 121  is executed. 
         [0181]    [Step S 113 ] The redundancy removal processing unit  210  determines whether the hash value calculated in Step S 111  is registered in the hash table  222 . In a case where the hash value is registered, processing of Step S 117  is executed and in a case where the hash value is not registered, processing of Step S 114  is executed. 
         [0182]    [Step S 114 ] The redundancy removal processing unit  210  stores data for which writing is requested in an empty block of the SSD pool  232 . 
         [0183]    [Step S 115 ] The redundancy removal processing unit  210  updates the SSD volume table  221 . Specifically, the redundancy removal processing unit  210  correlates the LBA indicating the block of the write destination with the LBA indicating the block of the SSD pool  232 , which stores data in Step S 114 , in the SSD volume  231  to be registered in the SSD volume table  221 . 
         [0184]    [Step S 116 ] The redundancy removal processing unit  210  prepares a new record in the hash table  222 . The redundancy removal processing unit  210  correlates the hash value calculated in Step S 111  with the LBA indicating the block of the SSD pool  232 , which stores data in Step S 114 , to be registered in the prepared record. 
         [0185]    [Step S 117 ] In a case where the determination result in Step S 113  is Yes, the redundancy removal processing unit  210  does not perform storing of data into the SSD pool  232  and updates the SSD volume table  221 . Specifically, the redundancy removal processing unit  210  extracts the LBA of the SSD pool  232  correlated with the hash value calculated in Step S 111  from the hash table  222 . The redundancy removal processing unit  210  correlates the LBA indicating the block of the write destination in the SSD volume  231  with the LBA of the SSD pool  232  extracted from the hash table  222  to be registered in the SSD volume table  221 . 
         [0186]    [Step S 118 ] The redundancy removal processing unit  210  executes the number-of-write-times recording processing for updating the number-of-write-times table  223 . The number-of-write-times recording processing is the same as matters described in  FIG. 12 . 
         [0187]    [Step S 121 ] The redundancy removal processing unit  210  determines whether the hash value calculated in Step S 111  is registered in the hash table  222 . In a case where the hash value is registered, processing of Step S 122  is executed and in a case where the hash value is not registered, processing of Step S 124  is executed. 
         [0188]    [Step S 122 ] The redundancy removal processing unit  210  extracts the LBA of the SSD pool  232  correlated with the calculated hash value calculated from the hash table  222 . The redundancy removal processing unit  210  retrieves the SSD volume table  221  using the extracted LBA and determines whether the extracted LBA of the SSD pool  232  is allocated to a block other than the block of the write destination in the SSD volume  231 . In a case where the extracted LBA is allocated, processing of Step S 123  is executed and in a case where the extracted LBA is not allocated, processing of Step S 124  is executed. 
         [0189]    [Step S 123 ] The redundancy removal processing unit  210  allocates a new LBA indicating an empty block of the SSD pool  232  to the block of the write destination in the SSD volume  231 . The redundancy removal processing unit  210  stores data for which writing is requested in the block of the SSD pool  232  indicated by the allocated LBA. The redundancy removal processing unit  210  correlates the LBA of the write destination block in the SSD volume  231  with the newly allocated LBA of the block of the SSD pool  232  to be registered in the SSD volume table  221 . Thereafter, processing of Step S 118  is executed. 
         [0190]    [Step S 124 ] The redundancy removal processing unit  210  extracts the LBA of the SSD pool  232  correlated with the calculated hash value from the hash table  222 . The redundancy removal processing unit  210  overwrites data, for which writing is requested, onto the block of the SSD pool  232  indicated by the extracted LBA. Thereafter, processing of Step S 118  is executed. 
         [0191]    By processing of Steps S 121  to S 124  described above, the processing described with reference to  FIG. 11  is executed. That is, in Step S 123 , the redundancy removal is not performed and a new block is allocated from the SSD pool  232  as a data write destination. Thereafter, when data of the same block on the SSD volume  231  is further updated by processing of Step S 124 , a corresponding block is overwritten with data in the SSD pool  232 . As such, an unique block is allocated to a block of which the write frequency is high from the SSD pool  232  in the SSD volume  231  and a further piece of update data with respect to the block is stored to thereby make it possible to avoid the situation that empty blocks of the SSD pool  232  are used up in a short period of time. Accordingly, it is possible to increase use efficiency of the SSD pool  232  and improve access performance of the user volume  130 . 
         [0192]      FIG. 20  is a flowchart illustrating an example of a write processing procedure into the HDD volume. 
         [0193]    [Step S 141 ] The redundancy removal processing unit  310  of the CM  300   a  receives a request for writing of data into the HDD volume  331  made from the hierarchization processing unit  110  of the server apparatus  100 . The redundancy removal processing unit  310  calculates the hash value based on data for which writing is requested. 
         [0194]    [Step S 142 ] The redundancy removal processing unit  310  determines whether the hash value calculated in Step S 141  is registered in the hash table  322 . In a case where the hash value is registered, processing of Step S 146  is executed and in a case where the hash value is not registered, processing of Step S 143  is executed. 
         [0195]    [Step S 143 ] The redundancy removal processing unit  310  stores data for which writing is requested in an empty block of the HDD pool  332 . 
         [0196]    [Step S 144 ] The redundancy removal processing unit  310  updates the HDD volume table  321 . Specifically, the redundancy removal processing unit  310  correlates the LBA indicating the block of the write destination in the HDD volume  331  with the LBA indicating the block of the HDD pool  332 , which stores data in Step S 143 , to be registered in the HDD volume table  321 . 
         [0197]    [Step S 145 ] The redundancy removal processing unit  310  prepares a new record in the hash table  322 . The redundancy removal processing unit  310  correlates the hash value calculated in Step S 141  with the LBA indicating the block of the HDD pool  332 , which stores data in Step S 143 , to be registered in the prepared record. 
         [0198]    [Step S 146 ] In a case where the determination result in Step S 142  is Yes, the redundancy removal processing unit  310  does not perform storing of data into the HDD pool  332  and updates the HDD volume table  321 . Specifically, the redundancy removal processing unit  310  extracts the LBA of the HDD pool  332  correlated with the hash value calculated in Step S 141  from the hash table  322 . The redundancy removal processing unit  310  correlates the LBA indicating the block of the write destination in the HDD volume  331  with the LBA of the HDD pool  332  extracted from the hash table  322  to be registered in the HDD volume table  321 . 
         [0199]    In the second embodiment, the movement of data from the HDD volume  331  to the SSD volume  231  is executed based on the number-of-read-times table  122  upon a request for writing of data into the user volume  130 . However, data may be moved upon, for example, a request for reading of data from the user volume  130 . Otherwise, the movement of data may be executed as background processing irrelevantly to the write request or the read request. 
         [0200]      FIG. 21  is a flowchart illustrating an example of a data movement processing procedure in the background. The hierarchization processing unit  110  of the server apparatus  100  regularly executes, for example, following processing. 
         [0201]    [Step S 161 ] The hierarchization processing unit  110  references the number-of-read-times table  122  and determines whether a hash value corresponding to data stored in the HDD volume  331 , that is, a hash value correlated with the device type “HDD” is present. In a case where the hash value is present, processing of Step S 162  is executed and in a case where the hash value is not present, processing is ended. 
         [0202]    [Step S 162 ] The hierarchization processing unit  110  executes data movement processing, which is illustrated in  FIG. 16 , for moving data from the HDD volume  331  to the SSD volume  231 , using the hash value in Step S 161 . 
       Third Embodiment 
       [0203]      FIG. 22  is a diagram illustrating a configuration example of a storage system according to a third embodiment. In  FIG. 22 , constitutional elements corresponding to those illustrated in  FIG. 4  are denoted by the same reference numerals and descriptions thereof will be omitted. 
         [0204]    The storage system illustrated in  FIG. 22  includes a storage apparatus  600  and a host apparatus  400 . The storage apparatus  600  includes a CM  600   a  and a DE  600   b . One or more SSDs and one or more HDDs are installed in the DE  600   b . The CM  600   a  includes the hierarchization processing unit  110  and the redundancy removal processing units  210  and  310 . The CM  600   a  includes a storing unit  630  to store information stored in the storing units  120 ,  220 , and  320  of  FIG. 4 . 
         [0205]    The CM  600   a  is realized by the hardware configuration similar to that of the CMs  200   a  and  300   a . Processing of the hierarchization processing unit  110  and the redundancy removal processing units  210  and  310  is realized in such a way that a processor equipped in CM  600   a  executes, for example, a predetermined application program. The storing unit  630  is realized by a storage area of a storing device equipped in the CM  600   a . In the third embodiment, the SSD pool  232  is realized by storage areas of one or more SSDs within the DE  600   b  and the HDD pool  332  is realized by storage areas of one or more HDDs within the DE  600   b.    
         [0206]    According to the third embodiment described above, functions of the server apparatus  100  and the CMs  200   a ,  300   a , and  600   a  of the second embodiment is realized by a single CM  600   a.    
         [0207]    Processing functions of apparatuses (for example, storage control apparatus  10 , server apparatus  100 , CMs  200   a  and  300   a ) illustrated in respective embodiments described above is able to be realized by a computer. In this case, a program describing processing contents of functions equipped in respective apparatuses is provided and the program is executed by the computer to thereby make it possible to realize the processing functions described above on the computer. The program describing the processing contents is able to be recorded in a computer readable recording medium. The computer readable recording medium may include a magnetic storing device, an optical disk, a magneto-optical recording medium, a semiconductor memory and the like. The magnetic storing device may include a hard disk drive (HDD), a flexible disk (FD), a magnetic tape and the like. The optical disk may include a digital versatile disc (DVD), a DVD-RAM, a compact disc-read only memory (CD-ROM), a CD-R (Recordable)/RW (ReWritable) and the like. The magneto-optical recording medium may include a magneto-optical (MO) disk and the like. 
         [0208]    In a case where a program is distributed, for example, a portable recording medium such as a DVD or a CD-ROM in which the program is recorded is sold. A program may be stored in a storing device of a server computer and the program may be transferred from the server computer to another computer trough the network. 
         [0209]    A computer which executes a program stores the program recorded in the portable recording medium or the program transferred from the server computer in a storing device of the computer. The computer reads the program from the storing device of the computer and executes processing in accordance with the program. The computer may read the program directly from the portable recording medium and execute processing in accordance with the program. The computer may sequentially execute processing in accordance with the received program each time when a program is transferred from the server computer coupled through the network. 
         [0210]    All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.