Abstract:
A method of automatically generating and decommissioning mirrors of data contained in physical storage volumes in computer system is disclosed. Physical storage volumes and portions of volumes are monitored to collect usage statistics. Those usage statistics are then used to determine whether to mirror the volume or volume portion for greater efficiency. Likewise, the usage statistics are used to determine when mirrors already generated should be decommissioned due to lack of usage.

Description:
BACKGROUND OF THE INVENTION 
   1. Technical Field 
   The present invention relates generally to a method of alleviating the workload of storage devices in a computer system through mirroring. More specifically, the present invention is directed toward a method of automatically establishing and decommissioning mirrors of data storage volumes in response to current storage system workloads. 
   2. Description of Related Art 
   In the past, large computer systems were mainly tools for calculation. With the growth of the Internet, the role of large-scale computer systems has shifted from calculation to data storage. Modern large-scale computer systems are primarily used as servers, machines that provide services (like data storage and retrieval) to a network of smaller-scale client computer systems. As a result, today&#39;s servers must be capable of quickly handling a large volume of accesses to mass data storage devices, such as disk drives, to store or retrieve data. 
   The efficiency of a server in storing and retrieving data for clients is limited in large degree to the physical technology used for the server&#39;s data storage. Disk drives, for instance, use a moving magnetic head to write or read concentric circular tracks on a rotating magnetic disk. The speed at which a disk drive is able to process a read or write operation is limited by the drive&#39;s mechanical seek time and rotational latency. The seek time is the time it takes for the disk drive&#39;s head to move from one track to another, and the rotational latency is the time it takes for the rotating magnetic disk to rotate to the proper position for reading or writing the information. 
   When a computer system has many requests to store or retrieve data from a mass storage device, the requests may be delayed considerably in execution as one operation must be completed mechanically before another may be processed. One way of alleviating this inefficiency is to use a mirror. 
   A mirror is a duplicate on one or more physical storage devices of some or all of the contents of another physical storage device or devices. When a mirror is employed in a computer system, requests to access the mirrored data may be processed by either the original storage device storing the data or by the mirror. By distributing the requests over two or more sets of physical storage devices, the workload of any one physical storage device is diminished. 
   There are a few problems with mirroring that reduce its effectiveness as an efficiency enhancement technique, however. One is that it is not always clear to a system administrator or user of a computer system which volumes or portions of volumes should be mirrored for optimal efficiency. Another is that because certain items of data may be accessed more heavily at some times than others, the optimal mirroring scheme may change from time to time. Keeping up with changing usage requirements is inconvenient at best. What is needed is a mirroring scheme that allows for optimal mirroring of data under changing circumstances. 
   SUMMARY OF THE INVENTION 
   The present invention provides a method of performing optimal mirroring of data under changing workload conditions. To achieve this, the present invention collects and monitors usage statistics about storage volumes and portions of storage volumes. When usage of a particular volume or portion exceeds a certain level, a mirror of the volume or portion is generated. When usage of a mirrored volume or portion drops below a certain level, the mirror is decommissioned to free storage space for the creation of new mirrors. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings, wherein: 
       FIG. 1  is a diagram depicting a basic overview of an embodiment of the present invention; 
       FIG. 2  is a diagram depicting the use of multiple physical volumes as a single mirror in an embodiment of the present invention; 
       FIG. 3  is a diagram depicting the use of volumes shared by two central processing units for generating mirrors in an embodiment of the present invention; 
       FIG. 4  is a diagram depicting the creation of multiple mirrors by generating mirrors of mirrors in an embodiment of the present invention; 
       FIG. 5A  is a diagram depicting the process of writing and reading an item of data to a volume and mirrors in an embodiment of the present invention; 
       FIG. 5B  is a diagram depicting the process of decommissioning a mirror in an embodiment of the present invention; 
       FIG. 6A  is a graph depicting a period of low resource usage in a computer system in accordance with an embodiment of the present invention; 
       FIG. 6B  is a pseudocode representation of a subroutine to handle the mirroring of a single volume in a computer system in accordance with an embodiment of the present invention; 
       FIG. 7  is a flowchart representation of a process of generating and decommissioning mirrors in accordance with an embodiment of the present invention. 
   

   DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     FIG. 1  is a diagram depicting the structure and operation of a preferred embodiment of the present invention. Central Processing Unit (CPU)  100  executes a software driver  110  to operate two storage volumes  120 ,  130 . Storage volumes  120 ,  130  may be made up of disk storage, tape storage, or any other read/write storage medium. Moreover, storage volumes  120 ,  130  need not be physical devices; they may be “logical volumes.” Logical volumes are portions of physical storage volumes that are treated by operating system software as if they were separate physical volumes. 
   Storage volume  120  contains a section of data  140  that is very frequently accessed (in other words, frequently read from or written to), called a “hot spot.” Volume  120 , because of the physical limitations of storage technology, can only process a finite number of requests from CPU  100  to access the data of volume  120  at any one time. When the actual number of requests from CPU  100  to volume  120  exceeds this number, the requests begin to accumulate and their processing is delayed. 
   To alleviate this situation, driver  110  first detects the existence of the hot spot, section  140 . It does this by calculating one or more usage metrics associated with hot spot  140 . Acceptable usage metrics include, but are not limited to number of reads in a given time period, number of write in a given time period, number of reads and writes in a given time period, and number of megabytes of data transferred in a given time period. A combination of usage metrics may be employed, as well, with some metrics carrying more weight than others. For instance, the number of reads in a given time period may be made to outweigh the number of writes in determining whether to mirror. 
   Also, usage metrics may be calculated with respect to entire volumes or to portions of volumes. A simple way of doing this is to construct a table that maps portions of volumes or entire volumes to usage metrics. 
   Driver  110  then automatically copies the information from section  140  to an area of unused storage space  150  on volume  130  to create a “mirror” of section  140 . Such copying, which is directed by driver  110  may be performed by CPU  100  or by a separate controller device (not shown). Using a separate controller reduces the workload of CPU  100 . Area  150  may either be an area specially reserved for use as a mirror, or it may be simply a block of unreserved empty space. 
   Once the data is copied, when CPU  100  requests that data from section  140  be read, driver  110  can retrieve the data from either section  140  or the mirror, section  150 . By distributing requests between section  140  on volume  120  and section  150  on volume  130 , driver  110  can ensure that neither volume is overloaded with requests, and thus all requests will be processed in a timely fashion. 
     FIG. 2  shows how a volume  200  with a hot spot  210  can be automatically mirrored using multiple areas of empty space  220 ,  225 , in an embodiment of the present invention. Mirroring hot spot  210  in this way allows any available storage space on any physical volumes within the computer system to be used for generating mirrors, thus maximizing storage efficiency. Note that while in  FIG. 2 , area  220  and area  225  are on separate physical volumes  230 ,  235 , separate areas may exist on the same volume as well. 
     FIG. 3  demonstrates how volumes used for mirroring may be shared between two CPUs  300 ,  305  in communication  310  with one another, in an embodiment of the present invention. In  FIG. 3 , CPU  300  has access to volumes  320 ,  322 ,  324 , and  326 , while CPU  305  has access to volumes  324 ,  326 ,  328 , and  330 . Volumes  324  and  326  are shared between CPU  300  and CPU  305 . Hot spot  340  is mirrored in area  345  of volume  324  and hot spots  350  and  360  are mirrored in areas  355  and  365  of volume  326 , respectively. 
   This shared volume arrangement is common where the shared volumes are used as “hot spares.” Hot spares are storage volumes that are reserved for use when a failure in another storage volume occurs. When a failure occurs, a hot spare is substituted for the failing device. Using hot spare volumes for automatic mirroring, in accordance with the present invention, can be advantageous, particularly under circumstances that necessitate the mirroring of an entire volume of information. Since hot spare volumes are usually kept empty, it is usually convenient to mirror information to a hot spare. When a hot spare volume being used as a mirror becomes needed to replace a failed volume, the mirror can be easily decommissioned. 
     FIG. 4  depicts multiple mirroring, mirroring of mirrors, in accordance with an embodiment of the present invention. Volume  400  contains a hot spot  410  that is mirrored in area  420  on volume  430 . If usage becomes exceptionally high, however, area  420  will itself become a hot spot. When this occurs, area  420  can be mirrored to an empty area  440  on another volume  450 . This process of generating mirrors of mirrors can continue until usage levels on a per-volume basis reach a manageable level. 
     FIG. 5A  demonstrates a process of writing information to a volume  520  and associated mirrors  522  and  524 . A request to write data  500  from a CPU (not shown) is presented to software driver  510 . Driver  510  writes ( 512 ,  514 ,  516 ) the data to areas  519 ,  521 , and  523  on volumes  520 ,  522 , and  524 , respectively. 
   When a request to read data  530  is received by driver  510 , driver  510  will process the request using one of volumes  520 ,  522 ,  524 . Because each of volumes  520 ,  522 ,  524  may be in a different stage of writing the data from write request  500 , read request  530  will not be processed until driver  510  receives confirmations  532 ,  534 ,  536  from each of volumes  520 ,  522 ,  524  confirming that the data from write request  500  has been written. Once confirmations  532 ,  534 ,  536  have been received by driver  510 , then read request  530  is processed and a result  540  returned to the CPU. 
     FIG. 5B  demonstrates a process of decommissioning a mirrored volume in an embodiment of the present invention. Volume  550  contains a hot spot  552  that is mirrored on volume  554  in mirror area  556 . If the usage of areas  552  and  556  drops, such that having a mirror to reduce usage loads on volumes  554  and  556  is no longer warranted, mirror area  556  can be disabled and its storage space freed. The storage space in mirror area  556  may then be used for generating a new mirror or for any other storage purpose. 
   Although generating a mirror can increase the efficiency of a storage system, the process of generating the mirror is a resource-intensive task. It is desirable, then, to schedule automatic mirroring of a volume during times of less resource usage.  FIG. 6A  provides a graph  600  of computer system resource usage  610  against time  620 . Resource usage, as used here, may include storage volume usage, CPU usage, or any other suitable metric for describing the workload of the computer system. Period  630 , a period of low resource usage, is thus an example of an optimal time for generating a mirror 
     FIG. 6B  provides an example of a listing  640  in a C-like pseudocode of a subroutine to address a single portion of data, written in accordance with a preferred embodiment of the invention. Those skilled in the art will appreciate that a software implementation of the present invention is not limited to the use of the C language but may be implemented in any of a variety of computer languages, including but not limited to C++, Forth, Lisp, Scheme, Python, Perl, and Assembly Languages of all kinds. It is also to be emphasized that this listing is merely an example of one possible implementation of the present invention, included to clarify the basic concepts underlying the invention by providing them in a more concrete form.  FIG. 6B  should not be interpreted as limiting the invention to a particular software implementation. 
   In listing  640 , on line  642 , if the data portion is already mirrored, then the numbers of reads and writes performed on the data portion since the last invocation of the subroutine is retrieved (lines  644 ). On line  646 , if neither the number of reads nor the number of writes exceeds one or more predetermined thresholds, the mirror is decommissioned (line  648 ) to free the space. Then the numbers of reads and writes are reset to zero (line  650 ). 
   If the data portion is not mirrored (line  652 ), the numbers of reads and writes since the last invocation of the subroutine are retrieved (lines  654 ). If either the number of reads or the number of writes exceeds predetermined thresholds (line  656 ), then a mirror of the data portion is generated (line  658 ). Finally, the numbers of reads and writes are reset to zero (lines  660 ). 
     FIG. 7  is a flowchart representation of the operation of a preferred embodiment of the present invention. First, the usage statistics of all volumes are collected (step  700 ). If there is a volume with usage exceeding a threshold (step  710 ), a determination is made as to whether the volume (or portion of a volume) has already been mirrored (step  720 ). 
   If the volume has not been mirrored, a determination is made as to whether there is enough free space to generate a mirror (step  730 ). If not, then a list is generated of already-mirrored volumes (step  740 ). In steps  750  and  760 , the already-mirrored volumes are iterated through to find one with usage below threshold. If there are none below threshold, operation returns to the beginning (step  700 ). 
   If a below-threshold volume is found, the mirror associated with that volume is decommissioned to free storage space (step  770 ). If insufficient space has been freed to generate a new mirror after decommissioning the mirror (step  780 ), another below-threshold mirrored volume is searched for (step  760 ). If there is enough space to generate a new mirror (step  780 ), then a mirror of the threshold-exceeding volume is generated (step  790 ). If there are any more volumes (or portions of volumes) exceeding the threshold (step  792 ), the next volume exceeding the threshold is examined (step  794 ) and the mirroring process continues for that volume (step  720 ). 
   It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system. 
   The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.